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.

MainTabNavigator.js 6.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. import * as React from 'react';
  2. import {createStackNavigator, TransitionPresets} from '@react-navigation/stack';
  3. import {createMaterialBottomTabNavigator} from "@react-navigation/material-bottom-tabs";
  4. import HomeScreen from '../screens/HomeScreen';
  5. import PlanningScreen from '../screens/PlanningScreen';
  6. import PlanningDisplayScreen from '../screens/PlanningDisplayScreen';
  7. import ProxiwashScreen from '../screens/Proxiwash/ProxiwashScreen';
  8. import ProxiwashAboutScreen from '../screens/Proxiwash/ProxiwashAboutScreen';
  9. import ProximoMainScreen from '../screens/Proximo/ProximoMainScreen';
  10. import ProximoListScreen from "../screens/Proximo/ProximoListScreen";
  11. import ProximoAboutScreen from "../screens/Proximo/ProximoAboutScreen";
  12. import PlanexScreen from '../screens/Websites/PlanexScreen';
  13. import {MaterialCommunityIcons} from "@expo/vector-icons";
  14. import ThemeManager from "../utils/ThemeManager";
  15. import AsyncStorageManager from "../utils/AsyncStorageManager";
  16. import {StyleSheet, View} from "react-native";
  17. import Touchable from "react-native-platform-touchable";
  18. const TAB_ICONS = {
  19. Home: 'triangle',
  20. Planning: 'calendar-range',
  21. Proxiwash: 'washing-machine',
  22. Proximo: 'shopping',
  23. Planex: 'timetable',
  24. };
  25. const ProximoStack = createStackNavigator();
  26. const styles = StyleSheet.create({
  27. header: {
  28. backgroundColor: ThemeManager.getCurrentThemeVariables().brandPrimary,
  29. },
  30. headerTitle: {
  31. color: "#ffffff",
  32. },
  33. });
  34. function ProximoStackComponent() {
  35. return (
  36. <ProximoStack.Navigator
  37. initialRouteName="ProximoMainScreen"
  38. headerMode="float"
  39. screenOptions={{
  40. headerTintColor: 'white',
  41. headerStyle: styles.header,
  42. gestureEnabled: true,
  43. cardOverlayEnabled: true,
  44. ...TransitionPresets.SlideFromRightIOS,
  45. }}
  46. >
  47. <ProximoStack.Screen
  48. name="ProximoMainScreen"
  49. options={{
  50. title: 'Proximo',
  51. }}
  52. component={ProximoMainScreen}
  53. />
  54. <ProximoStack.Screen
  55. name="ProximoListScreen"
  56. options={{
  57. title: 'Articles'
  58. }}
  59. component={ProximoListScreen}
  60. />
  61. <ProximoStack.Screen
  62. name="ProximoAboutScreen"
  63. component={ProximoAboutScreen}
  64. options={{
  65. title: 'Proximo',
  66. ...TransitionPresets.ModalSlideFromBottomIOS,
  67. }}
  68. />
  69. </ProximoStack.Navigator>
  70. );
  71. }
  72. const ProxiwashStack = createStackNavigator();
  73. function ProxiwashStackComponent() {
  74. return (
  75. <ProxiwashStack.Navigator
  76. initialRouteName="ProxiwashScreen"
  77. mode='card'
  78. headerMode="none"
  79. screenOptions={{
  80. gestureEnabled: true,
  81. cardOverlayEnabled: true,
  82. ...TransitionPresets.ModalSlideFromBottomIOS,
  83. }}
  84. >
  85. <ProxiwashStack.Screen
  86. name="ProxiwashScreen"
  87. component={ProxiwashScreen}
  88. />
  89. <ProxiwashStack.Screen
  90. name="ProxiwashAboutScreen"
  91. component={ProxiwashAboutScreen}
  92. />
  93. </ProxiwashStack.Navigator>
  94. );
  95. }
  96. const PlanningStack = createStackNavigator();
  97. function PlanningStackComponent() {
  98. return (
  99. <PlanningStack.Navigator
  100. initialRouteName="PlanningScreen"
  101. mode='card'
  102. headerMode="none"
  103. screenOptions={{
  104. gestureEnabled: true,
  105. cardOverlayEnabled: true,
  106. ...TransitionPresets.ModalSlideFromBottomIOS,
  107. }}
  108. >
  109. <PlanningStack.Screen
  110. name="PlanningScreen"
  111. component={PlanningScreen}
  112. />
  113. <PlanningStack.Screen
  114. name="PlanningDisplayScreen"
  115. component={PlanningDisplayScreen}
  116. />
  117. </PlanningStack.Navigator>
  118. );
  119. }
  120. const HomeStack = createStackNavigator();
  121. function HomeStackComponent() {
  122. return (
  123. <HomeStack.Navigator
  124. initialRouteName="HomeScreen"
  125. mode='card'
  126. headerMode="float"
  127. screenOptions={{
  128. gestureEnabled: true,
  129. cardOverlayEnabled: true,
  130. ...TransitionPresets.ModalSlideFromBottomIOS,
  131. }}
  132. >
  133. <HomeStack.Screen
  134. name="HomeScreen"
  135. component={HomeScreen}
  136. />
  137. <HomeStack.Screen
  138. name="PlanningDisplayScreen"
  139. component={PlanningDisplayScreen}
  140. />
  141. </HomeStack.Navigator>
  142. );
  143. }
  144. const Tab = createMaterialBottomTabNavigator();
  145. export default function TabNavigator() {
  146. return (
  147. <Tab.Navigator
  148. initialRouteName={AsyncStorageManager.getInstance().preferences.defaultStartScreen.current}
  149. barStyle={{backgroundColor: ThemeManager.getCurrentThemeVariables().brandPrimary}}
  150. screenOptions={({route}) => ({
  151. tabBarIcon: ({focused, color, size}) => {
  152. let icon = TAB_ICONS[route.name];
  153. // tintColor is ignoring activeColor and inactiveColor for some reason
  154. color = focused ? "#f0edf6" : "#4e1108";
  155. return <MaterialCommunityIcons name={icon} color={color} size={26}/>;
  156. },
  157. })}
  158. >
  159. <Tab.Screen
  160. name="Proximo"
  161. component={ProximoStackComponent}
  162. />
  163. <Tab.Screen
  164. name="Planning"
  165. component={PlanningStackComponent}
  166. />
  167. <Tab.Screen
  168. name="Home"
  169. component={HomeStackComponent}
  170. />
  171. <Tab.Screen
  172. name="Proxiwash"
  173. component={ProxiwashStackComponent}
  174. />
  175. <Tab.Screen
  176. name="Planex"
  177. component={PlanexScreen}
  178. />
  179. </Tab.Navigator>
  180. );
  181. }