Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 8 additions & 40 deletions App.js
Original file line number Diff line number Diff line change
@@ -1,66 +1,34 @@
/**
* Sample React Native App
* https://github.com/facebook/react-native
*
* @format
* @flow strict-local
*/

import React from 'react';
import {
StyleSheet,
ScrollView,
View,
Text,
} from 'react-native';

import {
Header,
LearnMoreLinks,
Colors,
} from 'react-native/Libraries/NewAppScreen';


class App extends React.Component {

render() {
return (
<ScrollView style={styles.scrollView}>
<Header/>
<View style={styles.body}>
<View>
<Text style={styles.sectionTitle}>Learn More</Text>
<Text style={styles.sectionDescription}>
Read the docs to discover what to do next:
</Text>
</View>
<LearnMoreLinks />
<>
<UserAccountPanel />
<View style={styles.mainLayout}>
<NotesMainPanel/>
</View>
</ScrollView>
</>
);
}
};

const styles = StyleSheet.create({
scrollView: {
backgroundColor: Colors.lighter,
},
body: {
backgroundColor: Colors.lighter,
mainLayout: {
flex: 1,
flexDirection: "row",
},
sectionTitle: {
fontSize: 24,
paddingHorizontal: 24,
fontWeight: '600',
color: Colors.black,
},
sectionDescription: {
marginTop: 8,
fontSize: 18,
paddingHorizontal: 24,
fontWeight: '400',
color: Colors.dark,
}
});

export default App;
4 changes: 4 additions & 0 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,8 @@ import {AppRegistry} from 'react-native';
import App from './App';
import {name as appName} from './app.json';

import NotesMainPanel from './src/NotesMainPanel';
import UserAccountPanel from './src/UserAccountPanel';
import ApplicationSettingsPanel from './src/ApplicationSettingsPanel';

AppRegistry.registerComponent(appName, () => App);
68 changes: 68 additions & 0 deletions src/ApplicationSettingsPanel.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
/**
* @format
* @flow strict-local
*/
import React from 'react';
import {
AppRegistry,
StyleSheet,
Text,
TouchableHighlight,
View,
} from 'react-native';


class ApplicationSettingsPanel extends React.Component {
constructor(props) {
super(props);
this.state = {
shouldExpand: true
};
}

OnResizeButtonPressed = () => {
this.setState( (state) => ({ shouldExpand: state.shouldExpand ? false : true}));
};

render() {
return(
<View style={this.state.shouldExpand ? styles.panel : styles.panelShrinked}>
<TouchableHighlight onPress={this.OnResizeButtonPressed}>
<View style={styles.panelModeButton}>
<Text>Resize</Text>
</View>
</TouchableHighlight>
<View style={styles.panelContent}>
<Text>LeftOptionsPanel</Text>
</View>
</View>
);
}
};


const styles = StyleSheet.create({
panelModeButton: {
margin: 10,
backgroundColor: "grey",
},
panelContent: {
flex: 1,
flexDirection: "column",
},
panel: {
width: "20%",
borderWidth: 1,
borderColor: "black",
},
panelShrinked: {
width: 50,
borderWidth: 1,
borderColor: "black",
}
});


AppRegistry.registerComponent("ApplicationSettingsPanel", () => ApplicationSettingsPanel);

export default ApplicationSettingsPanel;
33 changes: 33 additions & 0 deletions src/NotesMainPanel.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
/**
* @format
* @flow strict-local
*/

import React from 'react';
import {
AppRegistry,
StyleSheet,
Text,
View,
} from 'react-native';


class NotesMainPanel extends React.Component {

render() {
return(
<View>
<Text>NotesMainPanel</Text>
</View>
);
}
};


const styles = StyleSheet.create({
});


AppRegistry.registerComponent("NotesMainPanel", () => NotesMainPanel);

export default NotesMainPanel;
46 changes: 46 additions & 0 deletions src/UserAccountPanel.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
/**
* @format
* @flow strict-local
*/

import React from 'react';
import {
AppRegistry,
StyleSheet,
Text,
View,
} from 'react-native';


class UserAccountPanel extends React.Component {

render() {
return(
<View style={styles.panel}>
<View style={styles.panelContent}>
<Text>UserAccountPanel</Text>
<Text>This panel will have all the features of User's account.</Text>
<Text><br/>Further implementation will yet be done!</Text>
</View>
</View>
);
}
};


const styles = StyleSheet.create({
panel: {
height: 75,
borderColor: "black",
borderWidth: 1,
},
panelContent: {
flex: 1,
flexDirection: "column",
}
});


AppRegistry.registerComponent("UserAccountPanel", () => UserAccountPanel);

export default UserAccountPanel;
16 changes: 16 additions & 0 deletions windows/ReactNativeNotes/ApplicationSettingsPage.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#include "pch.h"
#include "ApplicationSettingsPage.h"
#include "ApplicationSettingsPage.g.cpp"

#include "App.h"


namespace winrt::ReactNativeNotes::implementation
{
ApplicationSettingsPage::ApplicationSettingsPage()
{
InitializeComponent();
auto app = Windows::UI::Xaml::Application::Current().as<App>();
ReactRootView().ReactNativeHost( app->Host() );
}
}
19 changes: 19 additions & 0 deletions windows/ReactNativeNotes/ApplicationSettingsPage.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#pragma once

#include "ApplicationSettingsPage.g.h"

namespace winrt::ReactNativeNotes::implementation
{
class ApplicationSettingsPage : public ApplicationSettingsPageT<ApplicationSettingsPage>
{
public:
ApplicationSettingsPage();
};
}

namespace winrt::ReactNativeNotes::factory_implementation
{
class ApplicationSettingsPage : public ApplicationSettingsPageT<ApplicationSettingsPage, implementation::ApplicationSettingsPage>
{
};
}
8 changes: 8 additions & 0 deletions windows/ReactNativeNotes/ApplicationSettingsPage.idl
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
namespace ReactNativeNotes
{
[default_interface]
runtimeclass ApplicationSettingsPage : Windows.UI.Xaml.Controls.Page
{
ApplicationSettingsPage();
}
}
15 changes: 15 additions & 0 deletions windows/ReactNativeNotes/ApplicationSettingsPage.xaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<Page
x:Class="ReactNativeNotes.ApplicationSettingsPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:ReactNativeNotes"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:react="using:Microsoft.ReactNative"
Background="Transparent"
mc:Ignorable="d">
<react:ReactRootView
x:Name="ReactRootView"
ComponentName="ApplicationSettingsPanel"
MinHeight="400"/>
</Page>
35 changes: 33 additions & 2 deletions windows/ReactNativeNotes/MainPage.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,37 @@ namespace winrt::ReactNativeNotes::implementation
{
InitializeComponent();
auto app = Application::Current().as<App>();
ReactRootView().ReactNativeHost(app->Host());
}
}

void MainPage::TopNavigationPanel_ItemInvoked( Windows::UI::Xaml::Controls::NavigationView const& sender, Windows::UI::Xaml::Controls::NavigationViewItemInvokedEventArgs const& args )
{
if( args.IsSettingsInvoked() == true )
{
Navigate( L"ApplicationSettingsPage" );
}
else if( args.InvokedItemContainer() != nullptr )
{
auto selectedPageTag = unbox_value_or<hstring>( args.InvokedItemContainer().Tag(), L"" );
Navigate( selectedPageTag );
}
}

void MainPage::TopNavigationPanel_BackRequested( Windows::UI::Xaml::Controls::NavigationView const& sender, Windows::UI::Xaml::Controls::NavigationViewBackRequestedEventArgs const& args )
{
}

void MainPage::Navigate( winrt::hstring pageName ) noexcept
{
auto pageToNavigateTo = Windows::UI::Xaml::Interop::TypeName
{
to_hstring( L"ReactNativeNotes." + pageName ),
Windows::UI::Xaml::Interop::TypeKind::Custom
};
auto navigationAnimation = Windows::UI::Xaml::Media::Animation::SlideNavigationTransitionInfo();
navigationAnimation.Effect( Windows::UI::Xaml::Media::Animation::SlideNavigationTransitionEffect::FromLeft );
ApplicationContentFrame().Navigate( pageToNavigateTo, nullptr, navigationAnimation );
}
}



12 changes: 10 additions & 2 deletions windows/ReactNativeNotes/MainPage.h
Original file line number Diff line number Diff line change
@@ -1,18 +1,26 @@
#pragma once
#include "MainPage.g.h"
#include <winrt/Microsoft.ReactNative.h>
#include <string>


namespace winrt::ReactNativeNotes::implementation
{
struct MainPage : MainPageT<MainPage>
class MainPage : public MainPageT<MainPage>
{
public:
MainPage();
void TopNavigationPanel_ItemInvoked( Windows::UI::Xaml::Controls::NavigationView const& sender, Windows::UI::Xaml::Controls::NavigationViewItemInvokedEventArgs const& args );
void TopNavigationPanel_BackRequested( Windows::UI::Xaml::Controls::NavigationView const& sender, Windows::UI::Xaml::Controls::NavigationViewBackRequestedEventArgs const& args );

private:
void Navigate( winrt::hstring pageName ) noexcept;
};
}

namespace winrt::ReactNativeNotes::factory_implementation
{
struct MainPage : MainPageT<MainPage, implementation::MainPage>
class MainPage : public MainPageT<MainPage, implementation::MainPage>
{
};
}
Expand Down
15 changes: 9 additions & 6 deletions windows/ReactNativeNotes/MainPage.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,13 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<react:ReactRootView
x:Name="ReactRootView"
ComponentName="ReactNativeNotes"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
MinHeight="400"/>
Background="Transparent">
<NavigationView x:Name="TopNavigationPanel" PaneDisplayMode="Top" ItemInvoked="TopNavigationPanel_ItemInvoked" BackRequested="TopNavigationPanel_BackRequested">
<NavigationView.MenuItems>
<NavigationViewItem Content="Account" Tag="UserAccountPage" />
<NavigationViewItem Content="Settings" Tag="ApplicationSettingsPage" />
<NavigationViewItem Content="Notes" Tag="NotesPage" />
</NavigationView.MenuItems>
<Frame x:Name="ApplicationContentFrame"/>
</NavigationView>
</Page>
Loading