Application Android et IOS pour l'amicale des élèves https://play.google.com/store/apps/details?id=fr.amicaleinsat.application
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.

DrawerNavigator.js 6.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. // @flow
  2. import * as React from 'react';
  3. import {createDrawerNavigator} from '@react-navigation/drawer';
  4. import TabNavigator from './MainTabNavigator';
  5. import SettingsScreen from '../screens/SettingsScreen';
  6. import AboutScreen from '../screens/About/AboutScreen';
  7. import AboutDependenciesScreen from '../screens/About/AboutDependenciesScreen';
  8. import SelfMenuScreen from '../screens/SelfMenuScreen';
  9. import AvailableRoomScreen from "../screens/Websites/AvailableRoomScreen";
  10. import BibScreen from "../screens/Websites/BibScreen";
  11. import DebugScreen from '../screens/DebugScreen';
  12. import Sidebar from "../components/Sidebar";
  13. import {createStackNavigator, TransitionPresets} from "@react-navigation/stack";
  14. import HeaderButton from "../components/HeaderButton";
  15. const defaultScreenOptions = {
  16. gestureEnabled: true,
  17. cardOverlayEnabled: true,
  18. ...TransitionPresets.SlideFromRightIOS,
  19. };
  20. function getDrawerButton(navigation: Object) {
  21. return (
  22. <HeaderButton icon={'menu'} onPress={navigation.openDrawer}/>
  23. );
  24. }
  25. const AboutStack = createStackNavigator();
  26. function AboutStackComponent() {
  27. return (
  28. <AboutStack.Navigator
  29. initialRouteName="AboutScreen"
  30. headerMode="float"
  31. screenOptions={defaultScreenOptions}
  32. >
  33. <AboutStack.Screen
  34. name="AboutScreen"
  35. component={AboutScreen}
  36. options={({navigation}) => {
  37. const openDrawer = getDrawerButton.bind(this, navigation);
  38. return {
  39. title: 'About',
  40. headerLeft: openDrawer
  41. };
  42. }}
  43. />
  44. <AboutStack.Screen
  45. name="AboutDependenciesScreen"
  46. component={AboutDependenciesScreen}
  47. options={{
  48. title: 'Dependencies'
  49. }}
  50. />
  51. <AboutStack.Screen
  52. name="DebugScreen"
  53. component={DebugScreen}
  54. options={{
  55. title: 'Debug'
  56. }}
  57. />
  58. </AboutStack.Navigator>
  59. );
  60. }
  61. const SettingsStack = createStackNavigator();
  62. function SettingsStackComponent() {
  63. return (
  64. <SettingsStack.Navigator
  65. initialRouteName="SettingsScreen"
  66. headerMode="float"
  67. screenOptions={defaultScreenOptions}
  68. >
  69. <SettingsStack.Screen
  70. name="SettingsScreen"
  71. component={SettingsScreen}
  72. options={({navigation}) => {
  73. const openDrawer = getDrawerButton.bind(this, navigation);
  74. return {
  75. title: 'Settings',
  76. headerLeft: openDrawer
  77. };
  78. }}
  79. />
  80. </SettingsStack.Navigator>
  81. );
  82. }
  83. const SelfMenuStack = createStackNavigator();
  84. function SelfMenuStackComponent() {
  85. return (
  86. <SelfMenuStack.Navigator
  87. initialRouteName="SelfMenuScreen"
  88. headerMode="float"
  89. screenOptions={defaultScreenOptions}
  90. >
  91. <SelfMenuStack.Screen
  92. name="SelfMenuScreen"
  93. component={SelfMenuScreen}
  94. options={({navigation}) => {
  95. const openDrawer = getDrawerButton.bind(this, navigation);
  96. return {
  97. title: 'Menu RU',
  98. headerLeft: openDrawer
  99. };
  100. }}
  101. />
  102. </SelfMenuStack.Navigator>
  103. );
  104. }
  105. const AvailableRoomStack = createStackNavigator();
  106. function AvailableRoomStackComponent() {
  107. return (
  108. <AvailableRoomStack.Navigator
  109. initialRouteName="AvailableRoomScreen"
  110. headerMode="float"
  111. screenOptions={defaultScreenOptions}
  112. >
  113. <AvailableRoomStack.Screen
  114. name="AvailableRoomScreen"
  115. component={AvailableRoomScreen}
  116. options={({navigation}) => {
  117. const openDrawer = getDrawerButton.bind(this, navigation);
  118. return {
  119. title: 'Available Rooms',
  120. headerLeft: openDrawer
  121. };
  122. }}
  123. />
  124. </AvailableRoomStack.Navigator>
  125. );
  126. }
  127. const BibStack = createStackNavigator();
  128. function BibStackComponent() {
  129. return (
  130. <BibStack.Navigator
  131. initialRouteName="BibScreen"
  132. headerMode="float"
  133. screenOptions={defaultScreenOptions}
  134. >
  135. <BibStack.Screen
  136. name="BibScreen"
  137. component={BibScreen}
  138. options={({navigation}) => {
  139. const openDrawer = getDrawerButton.bind(this, navigation);
  140. return {
  141. title: 'Bib',
  142. headerLeft: openDrawer
  143. };
  144. }}
  145. />
  146. </BibStack.Navigator>
  147. );
  148. }
  149. const Drawer = createDrawerNavigator();
  150. function getDrawerContent(props) {
  151. return <Sidebar {...props}/>
  152. }
  153. export default function DrawerNavigator() {
  154. return (
  155. <Drawer.Navigator
  156. initialRouteName={'Main'}
  157. headerMode={'float'}
  158. backBehavior={'initialRoute'}
  159. drawerType={'front'}
  160. drawerContent={(props) => getDrawerContent(props)}
  161. screenOptions={defaultScreenOptions}
  162. >
  163. <Drawer.Screen
  164. name="Main"
  165. component={TabNavigator}
  166. >
  167. </Drawer.Screen>
  168. <Drawer.Screen
  169. name="SettingsScreen"
  170. component={SettingsStackComponent}
  171. />
  172. <Drawer.Screen
  173. name="AboutScreen"
  174. component={AboutStackComponent}
  175. />
  176. <Drawer.Screen
  177. name="SelfMenuScreen"
  178. component={SelfMenuStackComponent}
  179. />
  180. <Drawer.Screen
  181. name="AvailableRoomScreen"
  182. component={AvailableRoomStackComponent}
  183. />
  184. <Drawer.Screen
  185. name="BibScreen"
  186. component={BibStackComponent}
  187. />
  188. </Drawer.Navigator>
  189. );
  190. }