mirror of
https://gitlab.com/wheres-the-tp/ui-mobile.git
synced 2026-01-25 07:54:57 -06:00
drawer menu
This commit is contained in:
parent
0f1b0c2823
commit
b15ecc5294
4 changed files with 80 additions and 16 deletions
|
|
@ -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
39
js/DrawerMenu.js
Normal 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>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -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": {
|
||||||
|
|
|
||||||
|
|
@ -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"
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue