1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- // @flow
-
- import * as React from 'react';
- import {Container} from "native-base";
- import CustomHeader from "./CustomHeader";
- import {MaterialCommunityIcons} from "@expo/vector-icons";
- import {Platform, View} from "react-native";
- import ThemeManager from "../utils/ThemeManager";
- import Touchable from "react-native-platform-touchable";
-
-
- type Props = {
- navigation: Object,
- headerTitle: string,
- headerSubtitle: string,
- headerRightButton: React.Node,
- children: React.Node,
- hasTabs: boolean,
- hasBackButton: boolean,
- hasSideMenu: boolean,
- enableRotation: boolean,
- hideHeaderOnLandscape: boolean,
- }
-
- type State = {
- isHeaderVisible: boolean
- }
-
-
- export default class BaseContainer extends React.Component<Props, State> {
- static defaultProps = {
- headerRightButton: <View/>,
- hasTabs: false,
- hasBackButton: false,
- hasSideMenu: true,
- enableRotation: false,
- hideHeaderOnLandscape: false,
- headerSubtitle: '',
- };
-
- state = {
- isHeaderVisible: true,
- };
-
- onDrawerPress: Function;
-
- constructor() {
- super();
- this.onDrawerPress = this.onDrawerPress.bind(this);
- }
-
- onDrawerPress() {
- this.props.navigation.toggleDrawer();
- }
-
- render() {
- // console.log("rendering BaseContainer");
- return (
- <Container>
- {this.state.isHeaderVisible ?
- <CustomHeader
- navigation={this.props.navigation}
- title={this.props.headerTitle}
- subtitle={this.props.headerSubtitle}
- leftButton={
- <Touchable
- style={{padding: 6}}
- onPress={this.onDrawerPress}>
- <MaterialCommunityIcons
- color={Platform.OS === 'ios' ? ThemeManager.getCurrentThemeVariables().brandPrimary : "#fff"}
- size={26}
- name="menu"/>
- </Touchable>
- }
- rightButton={this.props.headerRightButton}
- hasTabs={this.props.hasTabs}
- hasBackButton={this.props.hasBackButton}/>
- : <View/>}
- {this.props.children}
- </Container>
- );
- }
- }
|