@admin-layout/gluestack-ui-mobile 12.2.4-alpha.0 → 12.2.4-alpha.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +32 -8
- package/lib/components/ErrorBounday.js.map +1 -1
- package/lib/components/Fallback.js +11 -11
- package/lib/components/Fallback.js.map +1 -1
- package/lib/components/Layout/components/BasicLayout.js +1 -5
- package/lib/components/Layout/components/BasicLayout.js.map +1 -1
- package/lib/components/Layout/components/BottomTabBar.js +2 -2
- package/lib/components/Layout/components/BottomTabBar.js.map +1 -1
- package/lib/components/Layout/components/Sample.js.map +1 -1
- package/lib/components/Layout/components/SideBar.js +5 -6
- package/lib/components/Layout/components/SideBar.js.map +1 -1
- package/lib/components/NavigationComponent.js +1 -1
- package/lib/components/NavigationComponent.js.map +1 -1
- package/lib/components/ToastAlert.d.ts +1 -1
- package/lib/components/ToastAlert.js +2 -2
- package/lib/components/ToastAlert.js.map +1 -1
- package/lib/components/UnAuthenticatedComponent.js +1 -1
- package/lib/components/UnAuthenticatedComponent.js.map +1 -1
- package/lib/components/WithPermission.d.ts +1 -1
- package/lib/containers/layout/BasicLayout.js +3 -3
- package/lib/containers/layout/BasicLayout.js.map +1 -1
- package/lib/containers/layout/DrawerBottomNavigationConfig.d.ts +21 -21
- package/lib/containers/layout/DrawerConfig.d.ts +14 -14
- package/lib/containers/layout/ProLayout.js.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/tailwind-base-config.d.ts +2 -1
- package/lib/utils/generateMobileNavigations.js +36 -30
- package/lib/utils/generateMobileNavigations.js.map +1 -1
- package/package.json +4 -4
- package/src/components/ErrorBounday.tsx +19 -19
- package/src/components/Fallback.tsx +54 -58
- package/src/components/Layout/components/BasicLayout.tsx +2 -6
- package/src/components/Layout/components/BottomTabBar.tsx +98 -99
- package/src/components/Layout/components/Sample.tsx +1 -1
- package/src/components/Layout/components/SideBar.tsx +10 -14
- package/src/components/NavigationComponent.tsx +3 -1
- package/src/components/ToastAlert.tsx +11 -11
- package/src/components/UnAuthenticatedComponent.tsx +16 -26
- package/src/containers/layout/BasicLayout.tsx +3 -3
- package/src/containers/layout/ProLayout.tsx +1 -1
- package/src/index.ts +1 -2
- package/src/utils/generateMobileNavigations.ts +43 -34
|
@@ -1,31 +1,31 @@
|
|
|
1
1
|
import React, { ReactElement } from 'react';
|
|
2
2
|
import { FallbackComponent } from './Fallback';
|
|
3
3
|
import { logger } from '@cdm-logger/client';
|
|
4
|
-
import { useDispatch } from 'react-redux'
|
|
4
|
+
import { useDispatch } from 'react-redux';
|
|
5
5
|
|
|
6
|
-
type IErrorBoundryState = { hasError: boolean
|
|
6
|
+
type IErrorBoundryState = { hasError: boolean; error: Error | null };
|
|
7
7
|
type IErrorBoundryProps = {
|
|
8
|
-
|
|
8
|
+
children: ReactElement;
|
|
9
9
|
};
|
|
10
10
|
|
|
11
11
|
export class ErrorBoundary extends React.Component<IErrorBoundryProps, IErrorBoundryState> {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
constructor(props: IErrorBoundryProps) {
|
|
13
|
+
super(props);
|
|
14
|
+
this.state = { hasError: false, error: null };
|
|
15
|
+
}
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
static getDerivedStateFromError(error: Error) {
|
|
18
|
+
return { hasError: true, error };
|
|
19
|
+
}
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
componentDidCatch(error: Error) {
|
|
22
|
+
logger.debug(error);
|
|
23
|
+
}
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
render() {
|
|
26
|
+
if (this.state.hasError) {
|
|
27
|
+
return <FallbackComponent error={this.state.error as Error} />;
|
|
28
|
+
}
|
|
29
|
+
return this.props.children;
|
|
28
30
|
}
|
|
29
|
-
|
|
30
|
-
}
|
|
31
|
-
}
|
|
31
|
+
}
|
|
@@ -1,65 +1,61 @@
|
|
|
1
1
|
import { navigationRef } from '@common-stack/client-react';
|
|
2
|
-
import { Button,ButtonText } from '@gluestack-ui/themed'
|
|
3
|
-
import * as React from 'react'
|
|
4
|
-
import { StyleSheet } from 'react-native'
|
|
2
|
+
import { Button, ButtonText } from '@gluestack-ui/themed';
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { StyleSheet } from 'react-native';
|
|
5
5
|
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
Text,
|
|
9
|
-
View,
|
|
10
|
-
} from 'react-native'
|
|
11
|
-
import { useDispatch } from 'react-redux'
|
|
6
|
+
import { SafeAreaView, Text, View } from 'react-native';
|
|
7
|
+
import { useDispatch } from 'react-redux';
|
|
12
8
|
|
|
13
|
-
type Props = { error: Error }
|
|
9
|
+
type Props = { error: Error };
|
|
14
10
|
|
|
15
11
|
export const FallbackComponent = (props: Props) => {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
}
|
|
12
|
+
const dispatch = useDispatch();
|
|
13
|
+
return (
|
|
14
|
+
<SafeAreaView style={styles.container}>
|
|
15
|
+
<View style={styles.content}>
|
|
16
|
+
<Text style={styles.title}>Oops!</Text>
|
|
17
|
+
<Text style={styles.subtitle}>{"There's an error"}</Text>
|
|
18
|
+
<Text style={styles.error}>{props?.error?.message}</Text>
|
|
19
|
+
<Button style={styles.button} onPress={() => navigationRef.navigate('MainStack.Layout.Home')}>
|
|
20
|
+
<ButtonText style={styles.buttonText}>Go to homepage</ButtonText>
|
|
21
|
+
</Button>
|
|
22
|
+
</View>
|
|
23
|
+
</SafeAreaView>
|
|
24
|
+
);
|
|
25
|
+
};
|
|
30
26
|
|
|
31
27
|
const styles: any = StyleSheet.create({
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
})
|
|
28
|
+
container: {
|
|
29
|
+
backgroundColor: '#fafafa',
|
|
30
|
+
flex: 1,
|
|
31
|
+
justifyContent: 'center',
|
|
32
|
+
},
|
|
33
|
+
content: {
|
|
34
|
+
marginHorizontal: 16,
|
|
35
|
+
},
|
|
36
|
+
title: {
|
|
37
|
+
fontSize: 48,
|
|
38
|
+
fontWeight: '300',
|
|
39
|
+
paddingBottom: 16,
|
|
40
|
+
color: '#000',
|
|
41
|
+
},
|
|
42
|
+
subtitle: {
|
|
43
|
+
fontSize: 32,
|
|
44
|
+
fontWeight: '800',
|
|
45
|
+
color: '#000',
|
|
46
|
+
},
|
|
47
|
+
error: {
|
|
48
|
+
paddingVertical: 16,
|
|
49
|
+
},
|
|
50
|
+
button: {
|
|
51
|
+
backgroundColor: '#2196f3',
|
|
52
|
+
borderRadius: 50,
|
|
53
|
+
padding: 25,
|
|
54
|
+
height: 40,
|
|
55
|
+
},
|
|
56
|
+
buttonText: {
|
|
57
|
+
color: '#fff',
|
|
58
|
+
fontWeight: '600',
|
|
59
|
+
textAlign: 'center',
|
|
60
|
+
},
|
|
61
|
+
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React, { useRef, useState } from 'react';
|
|
2
2
|
import { Route } from 'react-router-native';
|
|
3
|
-
import {
|
|
3
|
+
import { Box, StatusBar, Divider, SafeAreaView } from '@gluestack-ui/themed';
|
|
4
4
|
import { Header } from './Header';
|
|
5
5
|
import { Drawer } from './Drawer';
|
|
6
6
|
import { RouterTypes } from '../typings';
|
|
@@ -16,7 +16,7 @@ type MergerSettingsType<T> = Partial<T> & {
|
|
|
16
16
|
|
|
17
17
|
const BasicLayout: React.FC<any & { routeParams: any }> = (props) => {
|
|
18
18
|
const { route, rightContentRender, onSettingChange, settings, routeParams, showSettings, currentRoute } = props;
|
|
19
|
-
const drawerRef = useRef();
|
|
19
|
+
const drawerRef = useRef<any | null>(null);
|
|
20
20
|
const [settingToggle, setSettingToggle] = useState(false);
|
|
21
21
|
|
|
22
22
|
return (
|
|
@@ -63,8 +63,4 @@ const BasicLayout: React.FC<any & { routeParams: any }> = (props) => {
|
|
|
63
63
|
);
|
|
64
64
|
};
|
|
65
65
|
|
|
66
|
-
BasicLayout.defaultProps = {
|
|
67
|
-
...defaultSettings,
|
|
68
|
-
};
|
|
69
|
-
|
|
70
66
|
export default BasicLayout;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {Box,Pressable,Center,Text, SafeAreaView} from '@gluestack-ui/themed';
|
|
2
|
+
import { Box, Pressable, Center, Text, SafeAreaView } from '@gluestack-ui/themed';
|
|
3
3
|
import { useSelector } from 'react-redux';
|
|
4
4
|
import { useRoute } from '@react-navigation/native';
|
|
5
5
|
import { navigationRef } from '@common-stack/client-react';
|
|
6
6
|
|
|
7
|
-
export const BottomTabBar = ({ state, descriptors, navigation
|
|
8
|
-
const tabBarProps = props?.customTabBarProps??{};
|
|
7
|
+
export const BottomTabBar = ({ state, descriptors, navigation, ...props }: any) => {
|
|
8
|
+
const tabBarProps = props?.customTabBarProps ?? {};
|
|
9
9
|
const settings = useSelector<any>((state) => state.settings) as any;
|
|
10
10
|
//const currentRoute: any = useRoute();
|
|
11
11
|
const currentRoute: any = navigationRef.isReady() ? navigationRef?.getCurrentRoute() : null;
|
|
@@ -23,118 +23,117 @@ export const BottomTabBar = ({ state, descriptors, navigation,...props }: any) =
|
|
|
23
23
|
(b.options.priority ? b.options.priority : b.options.title),
|
|
24
24
|
);
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
if (!isFocused && !event.defaultPrevented) {
|
|
35
|
-
// The `merge: true` option makes sure that the params inside the tab screen are preserved
|
|
36
|
-
navigation.navigate({
|
|
37
|
-
name: route.route.name,
|
|
38
|
-
merge: true,
|
|
39
|
-
orgName: currentRoute?.params?.orgName || platformState?.orgName,
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}, []);
|
|
26
|
+
const onPress = React.useCallback((route, navigation, isFocused) => {
|
|
27
|
+
if (route?.route) {
|
|
28
|
+
const event = navigation.emit({
|
|
29
|
+
type: 'tabPress',
|
|
30
|
+
target: route.route.key,
|
|
31
|
+
canPreventDefault: true,
|
|
32
|
+
});
|
|
44
33
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
navigation.
|
|
48
|
-
|
|
49
|
-
|
|
34
|
+
if (!isFocused && !event.defaultPrevented) {
|
|
35
|
+
// The `merge: true` option makes sure that the params inside the tab screen are preserved
|
|
36
|
+
navigation.navigate({
|
|
37
|
+
name: route.route.name,
|
|
38
|
+
merge: true,
|
|
39
|
+
orgName: currentRoute?.params?.orgName || platformState?.orgName,
|
|
50
40
|
});
|
|
51
41
|
}
|
|
52
|
-
}
|
|
42
|
+
}
|
|
43
|
+
}, []);
|
|
53
44
|
|
|
45
|
+
const onLongPress = React.useCallback((route, navigation, isFocused) => {
|
|
46
|
+
if (route?.route) {
|
|
47
|
+
navigation.emit({
|
|
48
|
+
type: 'tabLongPress',
|
|
49
|
+
target: route.route.key,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
}, []);
|
|
54
53
|
|
|
55
54
|
return (
|
|
56
55
|
<SafeAreaView>
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
56
|
+
<Box
|
|
57
|
+
flexDirection="row"
|
|
58
|
+
width="100%"
|
|
59
|
+
alignSelf="center"
|
|
60
|
+
bg={'$white'}
|
|
61
|
+
borderTopWidth={'$1'}
|
|
62
|
+
borderTopColor={'#d3d3d3'}
|
|
63
|
+
py={'$4'}
|
|
64
|
+
{...tabBarProps}
|
|
65
|
+
>
|
|
66
|
+
{appRoutes.map((route: any, index: any) => {
|
|
67
|
+
const options = route.options;
|
|
68
|
+
const label =
|
|
69
|
+
options.tabBarLabel !== undefined
|
|
70
|
+
? options.tabBarLabel
|
|
71
|
+
: options.title !== undefined
|
|
73
72
|
? options.title
|
|
74
73
|
: route.route.name;
|
|
75
74
|
|
|
76
|
-
|
|
75
|
+
const isFocused = state.index === route.index;
|
|
77
76
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
77
|
+
// const onPress = () => {
|
|
78
|
+
// const event = navigation.emit({
|
|
79
|
+
// type: 'tabPress',
|
|
80
|
+
// target: route.route.key,
|
|
81
|
+
// canPreventDefault: true,
|
|
82
|
+
// });
|
|
84
83
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
84
|
+
// if (!isFocused && !event.defaultPrevented) {
|
|
85
|
+
// // The `merge: true` option makes sure that the params inside the tab screen are preserved
|
|
86
|
+
// navigation.navigate({
|
|
87
|
+
// name: route.route.name,
|
|
88
|
+
// merge: true,
|
|
89
|
+
// orgName: currentRoute?.params?.orgName || platformState?.orgName,
|
|
90
|
+
// });
|
|
91
|
+
// }
|
|
92
|
+
// };
|
|
94
93
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
94
|
+
// const onLongPress = () => {
|
|
95
|
+
// navigation.emit({
|
|
96
|
+
// type: 'tabLongPress',
|
|
97
|
+
// target: route.route.key,
|
|
98
|
+
// });
|
|
99
|
+
// };
|
|
101
100
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
101
|
+
return (
|
|
102
|
+
<Pressable
|
|
103
|
+
key={index}
|
|
104
|
+
opacity={isFocused ? '$100' : '$50'}
|
|
105
|
+
// pb="$8"
|
|
106
|
+
// pt={"$3"}
|
|
107
|
+
flex={1}
|
|
108
|
+
onPress={() => onPress(route, navigation, isFocused)}
|
|
109
|
+
onLongPress={() => onLongPress(route, navigation, isFocused)}
|
|
110
|
+
testID={options.tabBarTestID}
|
|
111
|
+
accessibilityState={isFocused ? { selected: true } : {}}
|
|
112
|
+
accessibilityLabel={options.tabBarAccessibilityLabel}
|
|
113
|
+
>
|
|
114
|
+
<Center>
|
|
115
|
+
{options?.tabBarIcon
|
|
116
|
+
? options.tabBarIcon({
|
|
117
|
+
color: isFocused
|
|
118
|
+
? options.tabBarActiveTintColor
|
|
119
|
+
: options.tabBarInactiveTintColor,
|
|
120
|
+
size: 24,
|
|
121
|
+
})
|
|
122
|
+
: null}
|
|
124
123
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
124
|
+
<Text
|
|
125
|
+
color={isFocused ? options.tabBarActiveTintColor : options.tabBarInactiveTintColor}
|
|
126
|
+
style={{ fontSize: 12 }}
|
|
127
|
+
>
|
|
128
|
+
{label}
|
|
129
|
+
</Text>
|
|
130
|
+
</Center>
|
|
131
|
+
</Pressable>
|
|
132
|
+
);
|
|
133
|
+
})}
|
|
134
|
+
</Box>
|
|
136
135
|
</SafeAreaView>
|
|
137
136
|
);
|
|
138
137
|
};
|
|
139
138
|
|
|
140
|
-
export default BottomTabBar;
|
|
139
|
+
export default BottomTabBar;
|
|
@@ -2,8 +2,7 @@ import React, { useState } from 'react';
|
|
|
2
2
|
import { HStack, Icon, Text, Box, StatusBar, Divider, Button, FlatList, SafeAreaView } from '@gluestack-ui/themed';
|
|
3
3
|
import { StyleSheet, TouchableOpacity } from 'react-native';
|
|
4
4
|
import { Ionicons } from '@expo/vector-icons';
|
|
5
|
-
import { Link } from 'react-router-native';
|
|
6
|
-
import { useHistory } from 'react-router-native';
|
|
5
|
+
import { Link, useNavigate } from 'react-router-native';
|
|
7
6
|
import { config } from '../../../config';
|
|
8
7
|
import { MenuDataItem } from '../typings';
|
|
9
8
|
import { COLOR } from '../../../utils/ThemeColor';
|
|
@@ -18,7 +17,7 @@ export interface SideBarProps {
|
|
|
18
17
|
const SideBar: React.FC<SideBarProps> = ({ menuData, matchUrl, navTheme, drawerRef }) => {
|
|
19
18
|
const [icon, setIcon] = useState('chevron-down-outline');
|
|
20
19
|
const [isToggle, setToggle] = useState(false);
|
|
21
|
-
const
|
|
20
|
+
const navigate = useNavigate();
|
|
22
21
|
|
|
23
22
|
const toggle = () => {
|
|
24
23
|
if (isToggle) {
|
|
@@ -32,8 +31,8 @@ const SideBar: React.FC<SideBarProps> = ({ menuData, matchUrl, navTheme, drawerR
|
|
|
32
31
|
|
|
33
32
|
const isMenuExist = menuData.length > 0;
|
|
34
33
|
|
|
35
|
-
const openMenuItem = (menu) => {
|
|
36
|
-
|
|
34
|
+
const openMenuItem = (menu: any) => {
|
|
35
|
+
navigate(menu.path, { state: menu.name });
|
|
37
36
|
drawerRef.current.closeDrawer();
|
|
38
37
|
};
|
|
39
38
|
|
|
@@ -42,19 +41,16 @@ const SideBar: React.FC<SideBarProps> = ({ menuData, matchUrl, navTheme, drawerR
|
|
|
42
41
|
{!!isMenuExist && (
|
|
43
42
|
<FlatList
|
|
44
43
|
data={menuData}
|
|
45
|
-
renderItem={({ item }:any) => {
|
|
44
|
+
renderItem={({ item }: any) => {
|
|
46
45
|
const keys = item?.key.split('.');
|
|
47
|
-
const arrowIcon:any = icon || 'chevron-down-outline';
|
|
46
|
+
const arrowIcon: any = icon || 'chevron-down-outline';
|
|
48
47
|
return item?.routes ? (
|
|
49
|
-
<Box p={
|
|
48
|
+
<Box p={'$3'}>
|
|
50
49
|
<TouchableOpacity onPress={() => toggle()}>
|
|
51
50
|
<HStack>
|
|
52
|
-
<Ionicons
|
|
53
|
-
color={isToggle ? '#fff' : '#a1a1a1'}
|
|
54
|
-
name="document-outline"
|
|
55
|
-
/>
|
|
51
|
+
<Ionicons color={isToggle ? '#fff' : '#a1a1a1'} name="document-outline" />
|
|
56
52
|
<Text style={{ color: isToggle ? '#fff' : '#a1a1a1' }}>{item.name}</Text>
|
|
57
|
-
<Ionicons
|
|
53
|
+
<Ionicons name={arrowIcon} />
|
|
58
54
|
</HStack>
|
|
59
55
|
</TouchableOpacity>
|
|
60
56
|
{isToggle
|
|
@@ -69,7 +65,7 @@ const SideBar: React.FC<SideBarProps> = ({ menuData, matchUrl, navTheme, drawerR
|
|
|
69
65
|
</Box>
|
|
70
66
|
) : (
|
|
71
67
|
keys[0] != 'Main' && keys[0] == 'sidebar' && (
|
|
72
|
-
<Box key={item.key} p={
|
|
68
|
+
<Box key={item.key} p={'$3'}>
|
|
73
69
|
<TouchableOpacity style={{ marginBottom: 10 }} onPress={() => openMenuItem(item)}>
|
|
74
70
|
<HStack>
|
|
75
71
|
<Ionicons
|
|
@@ -102,7 +102,9 @@ export const NavigationContainerComponent = ({
|
|
|
102
102
|
independent,
|
|
103
103
|
linking,
|
|
104
104
|
}: INavigationContainerComponentProps): ReactElement => {
|
|
105
|
-
const routeNameRef = useRef() as MutableRefObject<
|
|
105
|
+
const routeNameRef = useRef<INavigationContainerRef | undefined>(undefined) as MutableRefObject<
|
|
106
|
+
INavigationContainerRef | undefined
|
|
107
|
+
>;
|
|
106
108
|
const dispatch = useDispatch();
|
|
107
109
|
const platformState = useSelector((state) => (state as any).platform);
|
|
108
110
|
const { setLocationChange } = useLocationChange();
|
|
@@ -1,14 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
Toast,
|
|
5
|
-
VStack,
|
|
6
|
-
ToastTitle,
|
|
7
|
-
ToastDescription,
|
|
8
|
-
Pressable,
|
|
9
|
-
Icon,
|
|
10
|
-
CloseIcon,
|
|
11
|
-
} from '@gluestack-ui/themed';
|
|
3
|
+
import { Toast, VStack, ToastTitle, ToastDescription, Pressable, Icon, CloseIcon } from '@gluestack-ui/themed';
|
|
12
4
|
|
|
13
5
|
interface IToast {
|
|
14
6
|
id: string;
|
|
@@ -17,7 +9,7 @@ interface IToast {
|
|
|
17
9
|
description?: string;
|
|
18
10
|
isClosable?: boolean;
|
|
19
11
|
toast?: any;
|
|
20
|
-
variant?:any
|
|
12
|
+
variant?: any;
|
|
21
13
|
}
|
|
22
14
|
|
|
23
15
|
// variants:
|
|
@@ -25,7 +17,15 @@ interface IToast {
|
|
|
25
17
|
// solid,
|
|
26
18
|
// outline
|
|
27
19
|
|
|
28
|
-
export const ToastAlert = ({
|
|
20
|
+
export const ToastAlert = ({
|
|
21
|
+
id,
|
|
22
|
+
status = 'info',
|
|
23
|
+
title = '',
|
|
24
|
+
description = '',
|
|
25
|
+
variant = 'solid',
|
|
26
|
+
isClosable,
|
|
27
|
+
toast = null,
|
|
28
|
+
}: IToast) => {
|
|
29
29
|
const toastId = 'toast-' + id;
|
|
30
30
|
const actionType = status || 'info';
|
|
31
31
|
return (
|
|
@@ -1,38 +1,28 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
3
|
-
Box,
|
|
4
|
-
Button,
|
|
5
|
-
Heading,
|
|
6
|
-
Text,
|
|
7
|
-
HStack,
|
|
8
|
-
Pressable,
|
|
9
|
-
Divider,
|
|
10
|
-
ButtonText,
|
|
11
|
-
SafeAreaView,
|
|
12
|
-
} from '@gluestack-ui/themed';
|
|
2
|
+
import { Box, Button, Heading, Text, HStack, Pressable, Divider, ButtonText, SafeAreaView } from '@gluestack-ui/themed';
|
|
13
3
|
import { useNavigation } from '@react-navigation/native';
|
|
14
4
|
import { Ionicons } from '@expo/vector-icons';
|
|
15
5
|
import { Linking } from 'react-native';
|
|
16
6
|
|
|
17
|
-
|
|
7
|
+
const UnAuthenticatedComponent = () => {
|
|
18
8
|
const navigation = useNavigation<any>();
|
|
19
9
|
return (
|
|
20
10
|
<SafeAreaView flex={1}>
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
11
|
+
<Box flex={1} borderTopWidth={'$1'} borderTopColor={'$trueGray200'}>
|
|
12
|
+
{/* <Box h={'$1'} bg={Colors.primaryBgColor} /> */}
|
|
13
|
+
<Box flex={1} p={'$6'} bg="$white" justifyContent={'center'}>
|
|
14
|
+
<Heading mt={'$2'}>Login</Heading>
|
|
15
|
+
<Text fontSize="$md" mt={'$2'}>
|
|
16
|
+
Log in to continue.
|
|
17
|
+
</Text>
|
|
18
|
+
<Button bg={'$blue500'} size="lg" my={'$3'} onPress={() => navigation.navigate('MainStack.Login')}>
|
|
19
|
+
<ButtonText color="$white">Login</ButtonText>
|
|
20
|
+
</Button>
|
|
21
|
+
<Divider my={'$3'} />
|
|
22
|
+
</Box>
|
|
32
23
|
</Box>
|
|
33
|
-
</
|
|
34
|
-
</SafeAreaView>
|
|
24
|
+
</SafeAreaView>
|
|
35
25
|
);
|
|
36
26
|
};
|
|
37
27
|
|
|
38
|
-
export default UnAuthenticatedComponent;
|
|
28
|
+
export default UnAuthenticatedComponent;
|
|
@@ -2,7 +2,7 @@ import * as React from 'react';
|
|
|
2
2
|
import { connect } from 'react-redux';
|
|
3
3
|
import { Ionicons } from '@expo/vector-icons';
|
|
4
4
|
import { BasicLayout, Settings } from '../../components';
|
|
5
|
-
import {
|
|
5
|
+
import { useNavigate } from 'react-router-native';
|
|
6
6
|
import { useSelector } from 'react-redux';
|
|
7
7
|
import { CHANGE_SETTINGS_ACTION } from '@admin-layout/client';
|
|
8
8
|
|
|
@@ -13,10 +13,10 @@ export interface ReduxState {
|
|
|
13
13
|
const Layout: React.FC<any & ReduxState & { routeParams: any }> = (props) => {
|
|
14
14
|
const user = useSelector((state: any) => state?.user);
|
|
15
15
|
const { settings } = props;
|
|
16
|
-
const
|
|
16
|
+
const navigate = useNavigate();
|
|
17
17
|
|
|
18
18
|
const logout = () => {
|
|
19
|
-
|
|
19
|
+
navigate('/logout');
|
|
20
20
|
};
|
|
21
21
|
return (
|
|
22
22
|
<BasicLayout
|
|
@@ -11,7 +11,7 @@ const ProLayout: React.FC<any> = (props) => {
|
|
|
11
11
|
const [appRoutes, setAppRoutes] = React.useState<any>([]);
|
|
12
12
|
const { pathKey, appLayout } = useLayoutSetting(props);
|
|
13
13
|
AppLayout = appLayout;
|
|
14
|
-
const {appFeatures} = routeConfigKeyReplace(pathKey, props?.features,appLayout);
|
|
14
|
+
const { appFeatures } = routeConfigKeyReplace(pathKey, props?.features, appLayout);
|
|
15
15
|
AppFeatures = appFeatures;
|
|
16
16
|
|
|
17
17
|
React.useEffect(() => {
|