Application Android et IOS pour l'amicale des élèves
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

CustomHeader.js 1.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. // @flow
  2. import * as React from "react";
  3. import {Body, Header, Icon, Left, Right, Title} from "native-base";
  4. import {StyleSheet} from "react-native";
  5. import {getStatusBarHeight} from "react-native-status-bar-height";
  6. import Touchable from 'react-native-platform-touchable';
  7. type Props = {
  8. backButton: boolean,
  9. rightMenu: React.Node,
  10. title: string,
  11. navigation: Object,
  12. };
  13. export default class CustomHeader extends React.Component<Props> {
  14. static defaultProps = {
  15. backButton: false,
  16. rightMenu: <Right/>,
  17. fontSize: 26,
  18. width: 30,
  19. };
  20. render() {
  21. let button;
  22. if (this.props.backButton)
  23. button =
  24. <Touchable
  25. style={{padding: 6}}
  26. onPress={() => this.props.navigation.goBack()}>
  27. <Icon
  28. style={{color: "#fff"}}
  29. name="arrow-left"
  30. type={'MaterialCommunityIcons'}/>
  31. </Touchable>;
  32. else
  33. button =
  34. <Touchable
  35. style={{padding: 6}}
  36. onPress={() => this.props.navigation.toggleDrawer()}>
  37. <Icon
  38. style={{color: "#fff"}}
  39. name="menu"
  40. type={'MaterialCommunityIcons'}/>
  41. </Touchable>;
  42. return (
  43. <Header style={styles.header}>
  44. <Left>
  45. {button}
  46. </Left>
  47. <Body>
  48. <Title>{this.props.title}</Title>
  49. </Body>
  50. {this.props.rightMenu}
  51. </Header>);
  52. }
  53. };
  54. // Fix header in status bar on Android
  55. const styles = StyleSheet.create({
  56. header: {
  57. paddingTop: getStatusBarHeight(),
  58. height: 54 + getStatusBarHeight(),
  59. },
  60. });