@fto-consult/expo-ui 6.71.3 → 6.71.5
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/package.json +2 -2
- package/src/components/Drawer/DrawerItems/DrawerItem.js +2 -15
- package/src/components/Fab/Group.js +24 -85
- package/src/components/ScrollView/index.js +2 -6
- package/src/context/Provider.js +7 -1
- package/src/context/TableData.js +3 -3
- package/src/layouts/Fab/index.js +14 -3
- package/src/layouts/Screen/TableData.js +1 -1
- package/src/navigation/hooks.js +33 -1
- package/src/navigation/index.js +1 -2
- package/src/screens/Help/openLibraries.js +1 -1
- package/src/screens/index.js +6 -0
- /package/src/components/{AutoSizer → AutoSizer1}/AutoResizer.js +0 -0
- /package/src/components/{AutoSizer → AutoSizer1}/Vertical.js +0 -0
- /package/src/components/{AutoSizer → AutoSizer1}/index.js +0 -0
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@fto-consult/expo-ui",
|
3
|
-
"version": "6.71.
|
3
|
+
"version": "6.71.5",
|
4
4
|
"description": "Bibliothèque de composants UI Expo,react-native",
|
5
5
|
"main": "main",
|
6
6
|
"scripts": {
|
@@ -78,7 +78,7 @@
|
|
78
78
|
"@react-native-community/netinfo": "9.3.10",
|
79
79
|
"@react-native/assets-registry": "^0.72.0",
|
80
80
|
"@react-navigation/native": "^6.1.9",
|
81
|
-
"@react-navigation/native-stack": "^6.9.
|
81
|
+
"@react-navigation/native-stack": "^6.9.17",
|
82
82
|
"@react-navigation/stack": "^6.3.20",
|
83
83
|
"@shopify/flash-list": "1.4.3",
|
84
84
|
"apexcharts": "^3.44.0",
|
@@ -4,6 +4,7 @@ import _DrawerItem from "./_DrawerItem";
|
|
4
4
|
import {navigate,setActiveRoute} from "$cnavigation";
|
5
5
|
import { useDrawer } from "../Provider";
|
6
6
|
import { setActiveItem,getOnPressAction,closeDrawer as nCloseDrawer,previousActiveItemRef,activeItemRef} from "./utils";
|
7
|
+
import {useIsScreenFocused} from "$enavigation/hooks";
|
7
8
|
import React from "$react";
|
8
9
|
|
9
10
|
|
@@ -12,7 +13,7 @@ import React from "$react";
|
|
12
13
|
export default function DrawerItem(props){
|
13
14
|
let {navigation,closeOnPress,routeName,routeParams,...rest} = props;
|
14
15
|
const {drawerRef,isItemActive} = useDrawer();
|
15
|
-
const isActive = isItemActive(props);
|
16
|
+
const isActive = useIsScreenFocused(routeName) || isItemActive(props);
|
16
17
|
const [active,setActive] = React.useState(isActive);
|
17
18
|
const isMounted = React.useIsMounted();
|
18
19
|
const itemId = React.useState(uniqid("drawer-item-id"));
|
@@ -35,20 +36,6 @@ export default function DrawerItem(props){
|
|
35
36
|
setActive(isActive);
|
36
37
|
}
|
37
38
|
},[isActive])
|
38
|
-
React.useEffect(()=>{
|
39
|
-
const onScreenFocus = ({sanitizedName,screenName})=>{
|
40
|
-
if(screenName == routeName || sanitizedName === routeName){
|
41
|
-
setActiveRoute({name:routeName,params:routeParams})
|
42
|
-
if(isMounted()){
|
43
|
-
setActiveItem(context,true);
|
44
|
-
}
|
45
|
-
}
|
46
|
-
};
|
47
|
-
APP.on(APP.EVENTS.SCREEN_FOCUS,onScreenFocus);
|
48
|
-
return ()=>{
|
49
|
-
APP.off(APP.EVENTS.SCREEN_FOCUS,onScreenFocus);
|
50
|
-
}
|
51
|
-
},[])
|
52
39
|
return <_DrawerItem
|
53
40
|
{...rest}
|
54
41
|
drawerRef = {drawerRef}
|
@@ -8,8 +8,7 @@ import theme,{Colors} from "$theme";
|
|
8
8
|
import Group from "./GroupComponent";
|
9
9
|
import {Portal} from "react-native-paper";
|
10
10
|
import {isAllowedFromStr} from "$cauth/perms";
|
11
|
-
|
12
|
-
const activeRef = {current:null};
|
11
|
+
import { useIsScreenFocused } from '$enavigation/hooks';
|
13
12
|
|
14
13
|
export const isValid = (context)=>{
|
15
14
|
if(!isObj(context) || !isNonNullString(context.fabId) || typeof context.show !=="function" || context.hide !="function") return false;
|
@@ -49,65 +48,6 @@ export const isActive = (fabId)=>{
|
|
49
48
|
return isNonNullString(fabId) && fabIdRefs.current[fabIdRefs.current.length-1] == fabId && isValid(getFab(fabId));
|
50
49
|
}
|
51
50
|
|
52
|
-
export const MANAGER = {
|
53
|
-
get active (){
|
54
|
-
return activeRef.current;
|
55
|
-
},
|
56
|
-
///la liste des fabs
|
57
|
-
get all (){
|
58
|
-
return allFabs;
|
59
|
-
},
|
60
|
-
///la liste des fabs Id
|
61
|
-
get fabIds (){
|
62
|
-
return fabIdRefs.current;
|
63
|
-
},
|
64
|
-
set active(active){
|
65
|
-
active = isValid(active)? active : null;
|
66
|
-
if(active){
|
67
|
-
///on désactive l'ancien fab qui était actif
|
68
|
-
if(isValid(activeRef.current)){
|
69
|
-
activeRef.current.hide();
|
70
|
-
}
|
71
|
-
activateFabId(active.fabId);
|
72
|
-
activeRef.current = active;
|
73
|
-
} else {
|
74
|
-
//l'ancien fab devient active
|
75
|
-
let length = fabIdRefs.current.length-1;
|
76
|
-
let prevActive = null,prevFabId = null;
|
77
|
-
///ça veut dire que l'ancien fab active a été démonté
|
78
|
-
if(isValid(activeRef.current)){
|
79
|
-
prevFabId = activeRef.current.fabId
|
80
|
-
}
|
81
|
-
while(length >=0 && !isValid(prevActive)){
|
82
|
-
const fId = fabIdRefs.current[length];
|
83
|
-
if(isNonNullString(fId) && fId !== prevFabId){
|
84
|
-
prevActive = allFabs[fId];
|
85
|
-
if(isValid(prevActive)){
|
86
|
-
break;
|
87
|
-
}
|
88
|
-
}
|
89
|
-
length --;
|
90
|
-
}
|
91
|
-
if(!prevActive){
|
92
|
-
fabIdRefs.current = [];
|
93
|
-
Object.map(allFabs,(f,i)=>{
|
94
|
-
delete allFabs[i];
|
95
|
-
})
|
96
|
-
}
|
97
|
-
if(isValid(prevActive)){
|
98
|
-
prevActive.show();
|
99
|
-
activateFabId(prevActive.fabId);
|
100
|
-
}
|
101
|
-
activeRef.current = prevActive;
|
102
|
-
}
|
103
|
-
},
|
104
|
-
get hasActive(){
|
105
|
-
return isValid(activeRef.current);
|
106
|
-
},
|
107
|
-
get get (){
|
108
|
-
return getFab;
|
109
|
-
}
|
110
|
-
};
|
111
51
|
|
112
52
|
export const activate = (args)=>{
|
113
53
|
const {context,fabId} = args;
|
@@ -125,6 +65,10 @@ const FabGroupComponent = React.forwardRef((props,innerRef)=>{
|
|
125
65
|
const fabIdRef = React.useRef(defaultStr(fabId,uniqid("fab-id-ref")));
|
126
66
|
fabId = fabIdRef.current;
|
127
67
|
const isMountedRef = React.useRef(false);
|
68
|
+
let isFocused = useIsScreenFocused(screenName);
|
69
|
+
if(!isNonNullString(screenName)){
|
70
|
+
isFocused = true;
|
71
|
+
}
|
128
72
|
const [state, setState] = React.useState({
|
129
73
|
open: typeof customOpen =='boolean'? customOpen : false,
|
130
74
|
display : typeof customDisplay ==='boolean'? customDisplay : true,
|
@@ -205,30 +149,25 @@ const FabGroupComponent = React.forwardRef((props,innerRef)=>{
|
|
205
149
|
isMountedRef.current = false;
|
206
150
|
React.setRef(innerRef,null);
|
207
151
|
}
|
208
|
-
},[])
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
if (open && onOpen) {
|
228
|
-
onOpen(e);
|
229
|
-
}
|
230
|
-
}}
|
231
|
-
/>
|
152
|
+
},[]);
|
153
|
+
return <Portal>
|
154
|
+
<Group
|
155
|
+
{...rest}
|
156
|
+
color = {color}
|
157
|
+
style = {[rest.style,styles.container]}
|
158
|
+
fabStyle = {[styles.fab,fabStyle,{backgroundColor},!display || !isFocused && styles.hidden]}
|
159
|
+
open={open ?true : false}
|
160
|
+
icon={open ? openedIcon : closedIcon}
|
161
|
+
actions={actions}
|
162
|
+
onStateChange={onStateChange}
|
163
|
+
onPress={(e) => {
|
164
|
+
context.opened = open;
|
165
|
+
if (open && onOpen) {
|
166
|
+
onOpen(e);
|
167
|
+
}
|
168
|
+
}}
|
169
|
+
/>
|
170
|
+
</Portal>
|
232
171
|
});
|
233
172
|
const actionType = PropTypes.shape({
|
234
173
|
icon : PropTypes.string,
|
@@ -1,9 +1,8 @@
|
|
1
1
|
import React from '$react';
|
2
2
|
import { ScrollView} from 'react-native';
|
3
|
-
import PropTypes from "prop-types";
|
4
3
|
|
5
|
-
const ScrollViewComponent = React.forwardRef(({
|
6
|
-
return <ScrollView testID={testID} {...rest} ref={ref}/>
|
4
|
+
const ScrollViewComponent = React.forwardRef(({testID,...rest},ref) => {
|
5
|
+
return <ScrollView testID={testID || "RN_ScrollViewComponent"} {...rest} ref={ref}/>
|
7
6
|
});
|
8
7
|
|
9
8
|
ScrollViewComponent.displayName = "ScrollViewComponent";
|
@@ -11,7 +10,4 @@ export default ScrollViewComponent;
|
|
11
10
|
|
12
11
|
ScrollViewComponent.propTypes = {
|
13
12
|
...defaultObj(ScrollView.propTypes),
|
14
|
-
withAutoSizer : PropTypes.bool,//si le contenu du scrollView sera wrap par le composant AutoSizer
|
15
|
-
maxHeight : PropTypes.number,
|
16
|
-
minHeight : PropTypes.number,
|
17
13
|
}
|
package/src/context/Provider.js
CHANGED
@@ -40,7 +40,13 @@ Object.map(Utils,(v,i)=>{
|
|
40
40
|
getTableData : ()=>{object|array}
|
41
41
|
getStructData : ()=>{object|array}
|
42
42
|
tablesData : {object:{
|
43
|
-
table1:{
|
43
|
+
table1:{
|
44
|
+
drawerSortOrder:{number,l'ordre d'apparition dans le drawer},showInDrawer:{boolean|{funct<{boolean}>,
|
45
|
+
showInFab{boolean},
|
46
|
+
showInDrawer{boolean},
|
47
|
+
fabProps {object|function({tableName})}, retourne les props à appliquer au composant fab lié à la tabl,
|
48
|
+
si elle définit une propriété nomée actions de types tableau, alors, ces actions seront utilisées commes actions personnalisées du fab
|
49
|
+
},si l'on affichera la table de données dans le drawers}},
|
44
50
|
table2:{},
|
45
51
|
table3:{},...[tableN]:{}}
|
46
52
|
}, la liste des tables de données
|
package/src/context/TableData.js
CHANGED
@@ -54,7 +54,8 @@ export function prepareScreens ({tables,screens:screensProps,TableDataScreen,Tab
|
|
54
54
|
TableDataScreenComponentRef.current = React.isComponent(TableDataScreen)? TableDataScreen : TableDataScreenComponentRef.current;
|
55
55
|
TableDataScreenComponentRef.List = React.isComponent(TableDataScreenList)? TableDataScreenList : TableDataScreenComponentRef.List;
|
56
56
|
const Modal = defaultBool(TableDataScreenComponentRef.current?.Modal,TableDataScreenComponentRef.current?.modal,true)
|
57
|
-
const
|
57
|
+
const ModalList = defaultBool(TableDataScreenComponentRef.List?.Modal,TableDataScreenComponentRef.List?.modal)
|
58
|
+
const withFab = typeof TableDataScreenComponentRef.List?.withFab =="boolean"? TableDataScreenComponentRef.List?.withFab: undefined;
|
58
59
|
loopForScreen(screensProps,screens,foundTables);
|
59
60
|
Object.map(tables,(table,i)=>{
|
60
61
|
if(!isObj(table) || !isNonNullString(i)) return;
|
@@ -64,18 +65,17 @@ export function prepareScreens ({tables,screens:screensProps,TableDataScreen,Tab
|
|
64
65
|
screens.push({
|
65
66
|
Component : TableDataScreenItem,
|
66
67
|
screenName,
|
67
|
-
withFab,
|
68
68
|
Modal
|
69
69
|
})
|
70
70
|
foundTables[screenName] = TableDataScreenItem;
|
71
71
|
} else if(React.isComponent(foundTables[screenName])){
|
72
72
|
foundTables[screenName].Modal = defaultBool(foundTables[screenName]?.Modal,foundTables[screenName].modal,Modal)
|
73
|
-
foundTables[screenName].withFab = typeof foundTables[screenName]?.withFab ==="boolean" ? foundTables[screenName]?.withFab : withFab;
|
74
73
|
}
|
75
74
|
if(!foundTables[listScreenName] && table.datagrid !== false){
|
76
75
|
screens.push({
|
77
76
|
Component : TableDataListScreen,
|
78
77
|
screenName : listScreenName,
|
78
|
+
Modal : ModalList,
|
79
79
|
withFab,
|
80
80
|
});
|
81
81
|
foundTables[listScreenName] = TableDataListScreen;
|
package/src/layouts/Fab/index.js
CHANGED
@@ -12,12 +12,12 @@ export * from "./utils";
|
|
12
12
|
|
13
13
|
const FabLayoutComponent = React.forwardRef((p,ref)=>{
|
14
14
|
const {components:{fabPropsMutator},tablesData} = useExpoUI();
|
15
|
-
const {style,actions:fabActions,...props} = typeof fabPropsMutator == 'function'? extendObj({},p,fabPropsMutator({...p,isLoggedIn})) : p;
|
15
|
+
const {style,actions:fabActions,useTables,...props} = typeof fabPropsMutator == 'function'? extendObj({},p,fabPropsMutator({...p,isLoggedIn})) : p;
|
16
16
|
const isLoggedIn = useIsSignedIn();
|
17
17
|
const tables = isObjOrArray(fabActions)? fabActions : tablesData;
|
18
18
|
const actions = React.useMemo(()=>{
|
19
19
|
if(Array.isArray(fabActions)) return fabActions;
|
20
|
-
if(!isLoggedIn) return null;
|
20
|
+
if(!isLoggedIn || useTables === false) return null;
|
21
21
|
const a = [];
|
22
22
|
Object.map(tables,(table,i,index)=>{
|
23
23
|
if(!isObj(table) || table.showInFab === false || typeof table.showInFab =="function" && table.showInFab() === false) return;
|
@@ -26,12 +26,22 @@ const FabLayoutComponent = React.forwardRef((p,ref)=>{
|
|
26
26
|
const addText = defaultStr(table.newElementLabel,"Nouveau");
|
27
27
|
const tableName = defaultStr(table.table,table.tableName);
|
28
28
|
if(!table || !icon || !text || !Auth.isTableDataAllowed({table:tableName,action:'create'})) return;
|
29
|
-
let fabProps = typeof table.
|
29
|
+
let fabProps = typeof table.fabProps ==='function'? table.fabProps({tableName}) : defaultObj(table.fabProps);;
|
30
30
|
if(fabProps === false) return;
|
31
31
|
fabProps = defaultObj(fabProps);
|
32
32
|
const cSuffix = theme.Colors.getSuffix(index);
|
33
33
|
const color = theme.Colors.isValid(fabProps.color)? fabProps.color : theme.Colors.getContrast(cSuffix);
|
34
34
|
const backgroundColor = theme.Colors.isValid(fabProps.backgroundColor)?fabProps.backgroundColor : cSuffix;
|
35
|
+
if(Array.isArray(fabProps.actions)){
|
36
|
+
return fabProps.actions.map((p)=>{
|
37
|
+
if(!isObj(p) || (!p.label && !p.text)) return null;
|
38
|
+
a.push({
|
39
|
+
color,
|
40
|
+
backgroundColor,
|
41
|
+
...p,
|
42
|
+
});
|
43
|
+
})
|
44
|
+
}
|
35
45
|
const label = defaultStr(fabProps.label,fabProps.text,"{0} | {1}".sprintf(addText,text));
|
36
46
|
a.push({
|
37
47
|
icon,
|
@@ -70,6 +80,7 @@ const styles = StyleSheet.create({
|
|
70
80
|
|
71
81
|
FabLayoutComponent.propTypes = {
|
72
82
|
...Fab.propTypes,
|
83
|
+
useTables : PropTypes.bool,//si les tables data seront exploités pour la génération du fab
|
73
84
|
actions : PropTypes.array, //les actions du fab layout
|
74
85
|
screenName : PropTypes.string,
|
75
86
|
}
|
@@ -442,7 +442,7 @@ export default class TableDataScreenComponent extends FormDataScreen{
|
|
442
442
|
mainContent = ct;
|
443
443
|
} else {
|
444
444
|
mainContent = <View {...contentProps} testID={testID+"_ContentContainer"} style={[styles.container,styles.noPadding,contentProps.style]}>
|
445
|
-
<ScrollView
|
445
|
+
<ScrollView testID={testID+"_MainContentScrollView"} contentProps={{style:theme.styles.p1}}>
|
446
446
|
<View testID={testID+"_ContentHeader"} style={[styles.screenContent,theme.styles.p1,header?styles.screenContentWithHeader:null]}>
|
447
447
|
{header}
|
448
448
|
{content}
|
package/src/navigation/hooks.js
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
-
import {createContext,useContext} from "react";
|
1
|
+
import {createContext,useContext,useState,useEffect,useMemo} from "react";
|
2
|
+
import APP from "$capp/instance";
|
3
|
+
import {sanitizeName} from '$cnavigation';
|
2
4
|
|
3
5
|
const MainNavigationContext = createContext(null);
|
4
6
|
|
@@ -8,4 +10,34 @@ export const useMainNavigation = ()=>{
|
|
8
10
|
|
9
11
|
export const MainNavigationProvider = ({children,...props})=>{
|
10
12
|
return <MainNavigationContext.Provider value = {props} children={children}/>
|
13
|
+
}
|
14
|
+
|
15
|
+
/*****
|
16
|
+
appélé lorsqu'un écran est focus
|
17
|
+
@param {string} screenName, le nom de l'écran en question
|
18
|
+
@return {boolean}, pour indiqué si l'écran est focused
|
19
|
+
*/
|
20
|
+
export const useIsScreenFocused = (screenName)=>{
|
21
|
+
const sanitizedName = sanitizeName(screenName);
|
22
|
+
if(!sanitizeName) return false;
|
23
|
+
const [isFocused,setIsFocused] = useState(false);
|
24
|
+
useEffect(()=>{
|
25
|
+
const toggle = (setFocus)=>{
|
26
|
+
setIsFocused(setFocus);
|
27
|
+
}, check = (sName,rName)=>{
|
28
|
+
return sName === sanitizedName || rName === screenName;
|
29
|
+
}
|
30
|
+
const onScreenFocus = ({sanitizedName:sName,screenName:rName})=>{
|
31
|
+
toggle(check(sName,rName));
|
32
|
+
},onScreenBlur = ({sanitizedName:sName,screenName:rName})=>{
|
33
|
+
toggle(!check(sName,rName));
|
34
|
+
};
|
35
|
+
APP.on(APP.EVENTS.SCREEN_FOCUS,onScreenFocus);
|
36
|
+
APP.on(APP.EVENTS.SCREEN_BLUR,onScreenBlur);
|
37
|
+
return ()=>{
|
38
|
+
APP.off(APP.EVENTS.SCREEN_FOCUS,onScreenFocus);
|
39
|
+
APP.off(APP.EVENTS.SCREEN_BLUR,onScreenBlur);
|
40
|
+
}
|
41
|
+
},[])
|
42
|
+
return useMemo(()=>isFocused,[isFocused]);
|
11
43
|
}
|
package/src/navigation/index.js
CHANGED
@@ -7,8 +7,7 @@ import useContext from "$econtext/hooks";
|
|
7
7
|
import { MainNavigationProvider } from "./hooks";
|
8
8
|
import {isWeb,isAndroid} from "$cplatform";
|
9
9
|
import Stack from "./Stack";
|
10
|
-
import theme from "$theme"
|
11
|
-
import {defaultObj} from "$cutils";
|
10
|
+
import theme from "$theme";;
|
12
11
|
|
13
12
|
export * from "./hooks";
|
14
13
|
|
@@ -1 +1 @@
|
|
1
|
-
module.exports = {"@fto-consult/expo-ui":{"name":"@fto-consult/expo-ui","version":"6.
|
1
|
+
module.exports = {"@fto-consult/expo-ui":{"name":"@fto-consult/expo-ui","version":"6.71.3","repository":{"type":"git","url":"git+https://github.com/borispipo/expo-ui.git"},"homepage":"https://github.com/borispipo/expo-ui#readme"},"@babel/plugin-proposal-export-namespace-from":{"version":"7.18.9","url":"https://babel.dev/docs/en/next/babel-plugin-proposal-export-namespace-from","license":"MIT"},"@emotion/native":{"version":"11.11.0","url":"https://emotion.sh","license":"MIT"},"@emotion/react":{"version":"11.11.1","url":"https://github.com/emotion-js/emotion/tree/main/packages/react","license":"MIT"},"@expo/html-elements":{"version":"0.5.1","url":"https://github.com/expo/expo/tree/main/packages/html-elements","license":"MIT"},"@expo/metro-config":{"version":"0.10.7","url":"https://github.com/expo/expo.git","license":"MIT"},"@expo/vector-icons":{"version":"13.0.0","url":"https://expo.github.io/vector-icons","license":"MIT"},"@expo/webpack-config":{"version":"19.0.0","url":"https://github.com/expo/expo-cli.git","license":"MIT"},"@faker-js/faker":{"version":"8.0.2","url":"https://github.com/faker-js/faker.git","license":"MIT"},"@fto-consult/common":{"version":"3.59.3","url":"https://github.com/borispipo/common#readme","license":"ISC"},"@pchmn/expo-material3-theme":{"version":"1.3.1","url":"https://github.com/pchmn/expo-material3-theme#readme","license":"MIT"},"@react-native-async-storage/async-storage":{"version":"1.18.2","url":"https://github.com/react-native-async-storage/async-storage#readme","license":"MIT"},"@react-native-community/datetimepicker":{"version":"7.2.0","url":"https://github.com/react-native-community/datetimepicker#readme","license":"MIT"},"@react-native-community/netinfo":{"version":"9.3.10","url":"https://github.com/react-native-netinfo/react-native-netinfo#readme","license":"MIT"},"@react-native/assets-registry":{"version":"0.72.0","url":"git@github.com:facebook/react-native.git","license":"MIT"},"@react-navigation/native":{"version":"6.1.9","url":"https://reactnavigation.org","license":"MIT"},"@react-navigation/native-stack":{"version":"6.9.17","url":"https://github.com/software-mansion/react-native-screens#readme","license":"MIT"},"@react-navigation/stack":{"version":"6.3.20","url":"https://reactnavigation.org/docs/stack-navigator/","license":"MIT"},"@shopify/flash-list":{"version":"1.4.3","url":"https://shopify.github.io/flash-list/","license":"MIT"},"apexcharts":{"version":"3.44.0","url":"https://apexcharts.com","license":"MIT"},"babel-plugin-inline-dotenv":{"version":"1.7.0","url":"https://github.com/brysgo/babel-plugin-inline-dotenv#readme","license":"ISC"},"babel-plugin-module-resolver":{"version":"5.0.0","url":"https://github.com/tleunen/babel-plugin-module-resolver.git","license":"MIT"},"expo":{"version":"49.0.16","url":"https://github.com/expo/expo/tree/main/packages/expo","license":"MIT"},"expo-camera":{"version":"13.4.4","url":"https://docs.expo.dev/versions/latest/sdk/camera/","license":"MIT"},"expo-clipboard":{"version":"4.3.1","url":"https://docs.expo.dev/versions/latest/sdk/clipboard","license":"MIT"},"expo-font":{"version":"11.4.0","url":"https://docs.expo.dev/versions/latest/sdk/font/","license":"MIT"},"expo-image-picker":{"version":"14.3.2","url":"https://docs.expo.dev/versions/latest/sdk/imagepicker/","license":"MIT"},"expo-linking":{"version":"5.0.2","url":"https://docs.expo.dev/versions/latest/sdk/linking","license":"MIT"},"expo-sharing":{"version":"11.5.0","url":"https://docs.expo.dev/versions/latest/sdk/sharing/","license":"MIT"},"expo-sqlite":{"version":"11.3.3","url":"https://docs.expo.dev/versions/latest/sdk/sqlite/","license":"MIT"},"expo-status-bar":{"version":"1.6.0","url":"https://docs.expo.dev/versions/latest/sdk/status-bar/","license":"MIT"},"expo-system-ui":{"version":"2.4.0","url":"https://docs.expo.dev/versions/latest/sdk/system-ui","license":"MIT"},"expo-web-browser":{"version":"12.3.2","url":"https://docs.expo.dev/versions/latest/sdk/webbrowser/","license":"MIT"},"file-saver":{"version":"2.0.5","url":"https://github.com/eligrey/FileSaver.js#readme","license":"MIT"},"fs-extra":{"version":"11.1.1","url":"https://github.com/jprichardson/node-fs-extra","license":"MIT"},"google-libphonenumber":{"version":"3.2.33","url":"https://ruimarinho.github.io/google-libphonenumber/","license":"(MIT AND Apache-2.0)"},"htmlparser2-without-node-native":{"version":"3.9.2","url":"git://github.com/fb55/htmlparser2.git","license":"MIT"},"is-plain-obj":{"version":"4.1.0","license":"MIT"},"js-base64":{"version":"3.7.5","license":"BSD-3-Clause"},"pdfmake":{"version":"0.2.7","url":"http://pdfmake.org","license":"MIT"},"process":{"version":"0.11.10","url":"git://github.com/shtylman/node-process.git","license":"MIT"},"prop-types":{"version":"15.8.1","url":"https://facebook.github.io/react/","license":"MIT"},"react":{"version":"18.2.0","url":"https://reactjs.org/","license":"MIT"},"react-content-loader":{"version":"6.2.1","url":"https://github.com/danilowoz/react-content-loader","license":"MIT"},"react-dom":{"version":"18.2.0","url":"https://reactjs.org/","license":"MIT"},"react-native":{"version":"0.72.6","license":"MIT"},"react-native-big-list":{"version":"1.6.1","url":"https://marcocesarato.github.io/react-native-big-list-docs/","license":"GPL-3.0-or-later"},"react-native-blob-util":{"version":"0.18.6","url":"https://github.com/RonRadtke/react-native-blob-util","license":"MIT"},"react-native-gesture-handler":{"version":"2.12.1","url":"https://github.com/software-mansion/react-native-gesture-handler#readme","license":"MIT"},"react-native-get-random-values":{"version":"1.9.0","license":"MIT"},"react-native-iphone-x-helper":{"version":"1.3.1","url":"https://github.com/ptelad/react-native-iphone-x-helper#readme","license":"MIT"},"react-native-mime-types":{"version":"2.4.0","license":"MIT"},"react-native-paper":{"version":"5.11.1","url":"https://callstack.github.io/react-native-paper","license":"MIT"},"react-native-paper-dates":{"version":"0.20.3","url":"https://github.com/web-ridge/react-native-paper-dates#readme","license":"MIT"},"react-native-reanimated":{"version":"3.3.0","url":"https://github.com/software-mansion/react-native-reanimated#readme","license":"MIT"},"react-native-safe-area-context":{"version":"4.6.3","url":"https://github.com/th3rdwave/react-native-safe-area-context#readme","license":"MIT"},"react-native-screens":{"version":"3.22.1","url":"https://github.com/software-mansion/react-native-screens#readme","license":"MIT"},"react-native-svg":{"version":"13.9.0","url":"https://github.com/react-native-community/react-native-svg","license":"MIT"},"react-native-web":{"version":"0.19.9","url":"git://github.com/necolas/react-native-web.git","license":"MIT"},"react-native-webview":{"version":"13.2.2","url":"https://github.com/react-native-webview/react-native-webview#readme","license":"MIT"},"react-virtuoso":{"version":"4.6.2","url":"https://virtuoso.dev/","license":"MIT"},"sharp-cli":{"version":"2.1.0","url":"https://github.com/vseventer/sharp-cli","license":"MIT"},"tippy.js":{"version":"6.3.7","url":"https://atomiks.github.io/tippyjs/","license":"MIT"},"websql":{"version":"2.0.3","url":"git://github.com/nolanlawson/node-websql.git","license":"Apache-2.0"},"xlsx":{"version":"0.18.5","url":"https://sheetjs.com/","license":"Apache-2.0"}};
|
package/src/screens/index.js
CHANGED
@@ -23,7 +23,11 @@ export const handleScreen = ({Screen,Factory,ModalFactory,result,filter,index})=
|
|
23
23
|
screenName = Screen.screenName;
|
24
24
|
screenOptions = Screen.options;
|
25
25
|
const Modal = typeof Screen.Modal =='boolean'? Screen.Modal : typeof Screen.modal =='boolean'? Screen.modal : undefined;
|
26
|
+
const withFab = typeof Screen.withFab =='boolean'? Screen.withFab : undefined;
|
26
27
|
Screen = Screen.Component;
|
28
|
+
if(typeof withFab =='boolean'){
|
29
|
+
Screen.withFab = withFab;
|
30
|
+
}
|
27
31
|
if(Modal !== undefined){
|
28
32
|
Screen.Modal = Modal;
|
29
33
|
}
|
@@ -68,6 +72,8 @@ export const handleScreen = ({Screen,Factory,ModalFactory,result,filter,index})=
|
|
68
72
|
const options = typeof Screen.options === 'function'? Screen.options(args) : typeof screenOptions ==='function'? screenOptions(args) : defaultObj(Screen.options,screenOptions);
|
69
73
|
options.screenName = screenName;
|
70
74
|
options.Screen = Screen;
|
75
|
+
options.Modal = typeof Screen.Modal =='boolean'? Screen.Modal : options.Modal;
|
76
|
+
options.withFab = typeof Screen.withFab =='boolean'? Screen.withFab : options.withFab;
|
71
77
|
options.groupName = groupName;
|
72
78
|
options.authRequired = authRequired;
|
73
79
|
SCREEN_OPTIONS[sanitizedName] = options;
|
File without changes
|
File without changes
|
File without changes
|