drawer menu

This commit is contained in:
Bart Akeley 2017-02-24 18:18:12 -06:00
parent 0f1b0c2823
commit b15ecc5294
4 changed files with 80 additions and 16 deletions

View file

@ -8,6 +8,8 @@ import React, { Component } from "react";
import { AppRegistry, Navigator, Text, View, UIManager } from "react-native"; import { AppRegistry, Navigator, Text, View, UIManager } from "react-native";
import { ThemeProvider, Toolbar } from "react-native-material-ui"; import { ThemeProvider, Toolbar } from "react-native-material-ui";
import uiTheme from "./js/ui-theme"; import uiTheme from "./js/ui-theme";
import SideMenu from "react-native-side-menu";
import DrawerMenu from "./js/DrawerMenu";
UIManager.setLayoutAnimationEnabledExperimental && UIManager.setLayoutAnimationEnabledExperimental &&
UIManager.setLayoutAnimationEnabledExperimental(true); UIManager.setLayoutAnimationEnabledExperimental(true);
@ -15,27 +17,45 @@ UIManager.setLayoutAnimationEnabledExperimental &&
export default class AreThereCookies extends Component { export default class AreThereCookies extends Component {
state = { drawerOpen: false }; state = { drawerOpen: false };
toggleSideMenu = () => {
this.setState(({ drawerOpen }) => ({ drawerOpen: !drawerOpen }));
};
setSideMenuOpen = (drawerOpen: boolean) => {
this.setState({ drawerOpen });
};
render() { render() {
const { drawerOpen } = this.state;
return ( return (
<ThemeProvider uiTheme={uiTheme}> <ThemeProvider uiTheme={uiTheme}>
<Navigator <Navigator
initialRoute={{ title: "AreThereCookies?", index: 0 }} initialRoute={{ title: "AreThereCookies?", index: 0 }}
renderScene={(route, navigator) => ( renderScene={(route, navigator) => {
<View> const menu = <DrawerMenu navigator={navigator} route={route} />;
<Toolbar return (
leftElement="menu" <SideMenu
onLeftElementPress={() => menu={menu}
this.setState(({ drawerOpen }) => ({ isOpen={drawerOpen}
drawerOpen: !drawerOpen onChange={this.setSideMenuOpen}
}))} >
centerElement="Are There Cookies?" <View style={{ flex: 1 }}>
searchable={{ autoFocus: true, placeholder: "Search (todo)" }} <Toolbar
/> leftElement="menu"
<View> onLeftElementPress={this.toggleSideMenu}
<Text>Scene content will go here...</Text> centerElement="Are There Cookies?"
</View> searchable={{
</View> autoFocus: true,
)} placeholder: "Search (todo)"
}}
/>
<View style={{ flex: 1, backgroundColor: "lightblue" }}>
<Text>Scene content will go here...</Text>
</View>
</View>
</SideMenu>
);
}}
/> />
</ThemeProvider> </ThemeProvider>
); );

39
js/DrawerMenu.js Normal file
View file

@ -0,0 +1,39 @@
// @flow
import React, { Component } from "react";
import { Drawer, Avatar } from "react-native-material-ui";
type Props = {
navigator: Object,
route: { index: number, title: string, page: string }
};
export default class DrawerMenu extends Component {
static displayName = "DrawerMenu";
props: Props;
render() {
return (
<Drawer>
<Drawer.Header>
<Drawer.Header.Account
avatar={<Avatar icon="person" />}
footer={{
dense: true,
centerElement: { primaryText: "User Name" }
}}
/>
</Drawer.Header>
<Drawer.Section
divider
items={[
{ icon: "today", value: "Products" },
{ icon: "domain", value: "Places" },
{ icon: "stars", value: "Faves" },
{ icon: "exit-to-app", value: "Logout" }
]}
/>
</Drawer>
);
}
}

View file

@ -11,6 +11,7 @@
"react": "^15.4.2", "react": "^15.4.2",
"react-native": "^0.40.0", "react-native": "^0.40.0",
"react-native-material-ui": "^1.7.0", "react-native-material-ui": "^1.7.0",
"react-native-side-menu": "^0.20.1",
"react-native-vector-icons": "^4.0.0" "react-native-vector-icons": "^4.0.0"
}, },
"devDependencies": { "devDependencies": {

View file

@ -3469,6 +3469,10 @@ react-native-material-ui@^1.7.0:
react-native-material-design-styles "^0.2.6" react-native-material-design-styles "^0.2.6"
react-native-vector-icons "3.0.0" react-native-vector-icons "3.0.0"
react-native-side-menu@^0.20.1:
version "0.20.1"
resolved "https://registry.yarnpkg.com/react-native-side-menu/-/react-native-side-menu-0.20.1.tgz#df21b4bb9d8a1aa3bae53d74ddf8a739eb59bfc5"
react-native-vector-icons@3.0.0: react-native-vector-icons@3.0.0:
version "3.0.0" version "3.0.0"
resolved "https://registry.yarnpkg.com/react-native-vector-icons/-/react-native-vector-icons-3.0.0.tgz#a2f63757dee4fb89f67eef660e25e86926ae6827" resolved "https://registry.yarnpkg.com/react-native-vector-icons/-/react-native-vector-icons-3.0.0.tgz#a2f63757dee4fb89f67eef660e25e86926ae6827"