mirror of
https://gitlab.com/wheres-the-tp/ui-mobile.git
synced 2026-01-25 07:24:56 -06:00
66 lines
1.9 KiB
JavaScript
66 lines
1.9 KiB
JavaScript
//@flow
|
|
import React, { Component } from 'react';
|
|
import { View } from 'react-native';
|
|
import { ThemeProvider, Toolbar } from 'react-native-material-ui';
|
|
import theme from './ui-theme';
|
|
import SideMenu from 'react-native-side-menu';
|
|
import DrawerMenu from './pages/DrawerMenu';
|
|
import { routingContextTypes } from './routes';
|
|
|
|
type Props = {
|
|
route: Object,
|
|
navigator: Object,
|
|
};
|
|
|
|
type State = {
|
|
drawerOpen: boolean,
|
|
};
|
|
|
|
export default class App extends Component {
|
|
state = { drawerOpen: false };
|
|
|
|
props: Props;
|
|
|
|
state: State;
|
|
|
|
getChildContext() {
|
|
const { navigator, route } = this.props;
|
|
return { navigator, route };
|
|
}
|
|
|
|
toggleSideMenu = () => {
|
|
this.setState(({ drawerOpen }) => ({ drawerOpen: !drawerOpen }));
|
|
};
|
|
|
|
setSideMenuOpen = (drawerOpen: boolean) => {
|
|
this.setState({ drawerOpen });
|
|
};
|
|
|
|
render() {
|
|
const { navigator, route } = this.props;
|
|
const { drawerOpen } = this.state;
|
|
return (
|
|
<ThemeProvider uiTheme={theme}>
|
|
<SideMenu
|
|
menu={<DrawerMenu navigator={navigator} route={route} />}
|
|
isOpen={drawerOpen}
|
|
onChange={this.setSideMenuOpen}
|
|
>
|
|
<View style={theme.page.container}>
|
|
<Toolbar
|
|
leftElement="menu"
|
|
onLeftElementPress={this.toggleSideMenu}
|
|
centerElement="Are There Cookies?"
|
|
searchable={{
|
|
autoFocus: true,
|
|
placeholder: 'Search (todo)',
|
|
}}
|
|
/>
|
|
<route.component />
|
|
</View>
|
|
</SideMenu>
|
|
</ThemeProvider>
|
|
);
|
|
}
|
|
}
|
|
App.childContextTypes = routingContextTypes;
|