import React from 'react'; import { Feature } from '@common-stack/client-react'; import { createDrawerNavigator } from '@react-navigation/drawer'; import { createBottomTabNavigator } from '@react-navigation/bottom-tabs'; import { Drawer, BottomTabBar, Header } from './components'; import { AntDesign } from '@expo/vector-icons'; import { navigationRef } from '@common-stack/client-react'; const layoutSettingConfig = process.APP_ENV && process.APP_ENV.LAYOUT_SETTINGS ? JSON.parse(process.APP_ENV.LAYOUT_SETTINGS) : null; const headerSettings: any = layoutSettingConfig ? { showToggle: layoutSettingConfig.hasOwnProperty('topLeftToggle') ? layoutSettingConfig.topLeftToggle ? true : false : true, rightSettingToggle: layoutSettingConfig.hasOwnProperty('topRightSettingToggle') ? layoutSettingConfig.topRightSettingToggle ? true : false : true, } : { showToggle: true, rightSettingToggle: true }; const drawerConfig = (props: any) => { let drawerProps = props?.drawerConfig??null; return { ['//main_drawer']: { exact: false, container: createDrawerNavigator(), name: 'Layout', props: { initialRouteName: 'MainStack.Layout.Home', drawerContent: (props: any) => { let currentRoute = navigationRef.isReady() ? navigationRef?.getCurrentRoute() : null; let currentOptions = currentRoute?.params?.options ? JSON.parse(currentRoute?.params?.options) : null; let drawerOptions = { ...currentOptions?.drawerOption, ...drawerProps?.drawerOption }; return React.createElement( drawerProps?.drawerContent ?? Drawer, Object.assign({}, props, { title: 'ClockBook', titleColor: 'black', logout: true, redirect: 'MainStack.Login', ...drawerOptions, }), ); }, screenOptions: (options: any) => { let currentRoute = navigationRef.isReady() ? navigationRef?.getCurrentRoute() : null; let currentOptions = currentRoute?.params?.options ? JSON.parse(currentRoute?.params?.options) : null; return { headerShown: true, header: (props: any) => (
), drawerIcon: 'grid', drawerStyle: currentOptions?.drawerStyle ?? drawerProps?.drawerStyle ?? {}, gestureEnabled: currentOptions?.gestureEnabled ?? true, swipeEnabled: currentOptions?.swipeEnabled ?? true, }; }, }, }, }; }; const bottomTabConfig = (props: any) => { let tabBarConfig = props?.tabBarConfig??null; return { ['//bottom_tab']: { exact: false, container: createBottomTabNavigator(), name: 'Layout', props: { initialRouteName: 'MainStack.Layout.Home', //tabBar: (props: any) => , tabBar: (props: any) => { return React.createElement( tabBarConfig?.bottomTabBar ?? BottomTabBar, Object.assign({}, {...props,...{customTabBarProps:tabBarConfig?.tarBarProps??{}}}), ); }, screenOptions: ({ route }: any) => { return { headerShown: false, title: 'Home', headerTitle: 'Home', tabBarActiveTintColor: '#4c87f9', tabBarInactiveTintColor: 'black', tabBarIcon: ({ color }: { color: any }) => , }; }, }, }, }}; const hostBottomTabConfig = (props: any) => { let tabBarConfig = props?.tabBarConfig??null; return { ['//host_tab']: { container: createBottomTabNavigator(), exact: false, name: 'Layout', props: { initialRouteName: 'MainStack.Layout.Home', //tabBar: (props: any) => , tabBar: (props: any) => { return React.createElement( tabBarConfig?.bottomTabBar ?? BottomTabBar, Object.assign({}, {...props,...{customTabBarProps:tabBarConfig?.tarBarProps??{}}}), ); }, screenOptions: (props: any) => { return { headerShown: false, title: 'Home', headerTitle: 'Home', tabBarActiveTintColor: '#4c87f9', tabBarInactiveTintColor: 'black', tabBarIcon: ({ color }: { color: any }) => , }; }, }, }, }}; const drawerBottomTabConfig = (props: any) => { let drawerProps = props?.drawerConfig??null; let tabBarConfig = props?.tabBarConfig??null; return { ['//main_drawer']: { exact: false, container: createDrawerNavigator(), name: 'Layout', props: { initialRouteName: 'MainStack.Layout.MainBottomTab', drawerContent: (props: any) => { let currentRoute = navigationRef.isReady() ? navigationRef?.getCurrentRoute() : null; let currentOptions = currentRoute?.params?.options ? JSON.parse(currentRoute?.params?.options) : null; let drawerOptions = { ...currentOptions?.drawerOption, ...drawerProps?.drawerOption }; return React.createElement( drawerProps?.drawerContent ?? Drawer, Object.assign({}, props, { title: 'ClockBook', titleColor: 'black', logout: true, redirect: 'MainStack.Login', ...drawerOptions, }), ); }, screenOptions: (options: any) => { let currentRoute = navigationRef.isReady() ? navigationRef?.getCurrentRoute() : null; let currentOptions = currentRoute?.params?.options ? JSON.parse(currentRoute?.params?.options) : null; return { headerShown: false, drawerIcon: 'grid', drawerStyle: currentOptions?.drawerStyle ?? drawerProps?.drawerStyle ?? {}, gestureEnabled: currentOptions?.gestureEnabled ?? true, swipeEnabled: currentOptions?.swipeEnabled ?? true, }; }, }, }, ['//main_drawer/bottom_tab']: { container: createBottomTabNavigator(), exact: false, name: 'MainBottomTab', props: { initialRouteName: 'MainStack.MainDrawer.MainBottomTab.Home', //tabBar: (props: any) => , tabBar: (props: any) => { return React.createElement( tabBarConfig?.bottomTabBar ?? BottomTabBar, Object.assign({}, {...props,...{customTabBarProps:tabBarConfig?.tarBarProps??{}}}), ); }, screenOptions: ({ route }: any) => { return { headerShown: true, header: (props: any) => (
), title: 'Home', headerTitle: 'Home', tabBarActiveTintColor: '#ff5a60', tabBarInactiveTintColor: 'black', }; }, }, }, }; }; const bottomTabDrawerConfig = (props: any) => { let drawerProps = props?.drawerConfig??null; let tabBarConfig = props?.tabBarConfig??null; return { ['//bottom_tab']: { container: createBottomTabNavigator(), exact: false, name: 'Layout', props: { initialRouteName: 'MainStack.Layout.Home', // tabBar: (props: any) => , tabBar: (props: any) => { return React.createElement( tabBarConfig?.bottomTabBar ?? BottomTabBar, Object.assign({}, {...props,...{customTabBarProps:tabBarConfig?.tarBarProps??{}}}), ); }, screenOptions: ({ route }: any) => { return { headerShown: true, header: (props: any) => (
), title: 'Home', headerTitle: 'Home', tabBarActiveTintColor: '#ff5a60', tabBarInactiveTintColor: 'black', }; }, // screenOptions: ({ route }: any) => { // return { // headerShown: false, // //header: (props: any) =>
, // title: 'Home', // headerTitle: 'Home', // tabBarActiveTintColor: '#ff5a60', // tabBarInactiveTintColor: 'black', // }; // }, }, }, // ['//bottom_tab/main_drawer']: { // exact: false, // container: createDrawerNavigator(), // name: 'MainDrawer', // props: { // initialRouteName: 'MainStack.MainBottomTab.MainDrawer.Home', // drawerContent: (props: any) => ( // // ), // screenOptions:(options:any) =>{ // return{ // headerShown: true, // header: (props: any) =>
, // drawerIcon: 'grid', // } // } // }, // }, }; } // const bottomTabDrawerConfig = { // ['//bottom_tab']: { // container: createBottomTabNavigator(), // exact: false, // name: 'Layout', // props: { // initialRouteName: 'MainStack.Layout.Home', // tabBar: (props: any) => , // screenOptions: ({ route }: any) => { // return { // headerShown: false, // //header: (props: any) =>
, // title: 'Home', // headerTitle: 'Home', // tabBarActiveTintColor: '#ff5a60', // tabBarInactiveTintColor: 'black', // }; // }, // }, // }, // // ['//bottom_tab/main_drawer']: { // // exact: false, // // container: createDrawerNavigator(), // // name: 'MainDrawer', // // props: { // // initialRouteName: 'MainStack.MainBottomTab.MainDrawer.Home', // // drawerContent: (props: any) => ( // // // // ), // // screenOptions:(options:any) =>{ // // return{ // // headerShown: true, // // header: (props: any) =>
, // // drawerIcon: 'grid', // // } // // } // // }, // // }, // }; // export const appDrawerFeature = new Feature({ // routeConfig: drawerConfig as any, // }); // export const appDrawerBottomTabFeature = new Feature({ // routeConfig: drawerBottomTabConfig as any, // }); export const appDrawerFeature = (props: any) => new Feature({ routeConfig: drawerConfig(props) as any, }); export const appDrawerBottomTabFeature = (props: any) => new Feature({ routeConfig: drawerBottomTabConfig(props) as any, }); export const appBottomTabFeature = (props: any) => new Feature({ routeConfig: bottomTabConfig(props) as any, }); export const appHostBottomTabFeature = (props: any) => new Feature({ routeConfig: hostBottomTabConfig(props) as any, }); export const appBottomTabDrawerFeature = new Feature({ routeConfig: bottomTabDrawerConfig as any, });