@fto-consult/expo-ui 6.71.2 → 6.71.4
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 +7 -70
- package/src/components/Form/Fields/SelectTableData/Component.js +8 -6
- package/src/context/Provider.js +7 -1
- package/src/context/TableData.js +4 -0
- package/src/layouts/Fab/index.js +14 -4
- 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/ScreenWrapper.js +1 -1
- package/src/screens/index.js +6 -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.4",
|
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,20 +149,13 @@ const FabGroupComponent = React.forwardRef((props,innerRef)=>{
|
|
205
149
|
isMountedRef.current = false;
|
206
150
|
React.setRef(innerRef,null);
|
207
151
|
}
|
208
|
-
},[])
|
209
|
-
React.useEffect(()=>{
|
210
|
-
if(display){
|
211
|
-
MANAGER.active = context;
|
212
|
-
} else {
|
213
|
-
MANAGER.active = null;
|
214
|
-
}
|
215
|
-
},[display]);
|
152
|
+
},[]);
|
216
153
|
return <Portal>
|
217
154
|
<Group
|
218
155
|
{...rest}
|
219
156
|
color = {color}
|
220
157
|
style = {[rest.style,styles.container]}
|
221
|
-
fabStyle = {[styles.fab,fabStyle,{backgroundColor},!display && styles.hidden]}
|
158
|
+
fabStyle = {[styles.fab,fabStyle,{backgroundColor},!display || !isFocused && styles.hidden]}
|
222
159
|
open={open ?true : false}
|
223
160
|
icon={open ? openedIcon : closedIcon}
|
224
161
|
actions={actions}
|
@@ -23,7 +23,7 @@ const TableDataSelectField = React.forwardRef(({foreignKeyColumn,foreignKeyLabel
|
|
23
23
|
props.data = defaultObj(props.data);
|
24
24
|
const type = defaultStr(props.type)?.toLowerCase();
|
25
25
|
isStructData = isStructData || type?.replaceAll("-","").replaceAll("_","").trim().contains("structdata");
|
26
|
-
const {getTableData:appGetForeignKeyTable,getStructData
|
26
|
+
const {getTableData:appGetForeignKeyTable,getStructData} = useApp();
|
27
27
|
if(!foreignKeyColumn && isNonNullString(props.field)){
|
28
28
|
foreignKeyColumn = props.field;
|
29
29
|
}
|
@@ -37,7 +37,7 @@ const TableDataSelectField = React.forwardRef(({foreignKeyColumn,foreignKeyLabel
|
|
37
37
|
}
|
38
38
|
}
|
39
39
|
const getForeignKeyTable = typeof cGetForeignKeyTable =='function'? cGetForeignKeyTable : isStructData ? getStructData: appGetForeignKeyTable;
|
40
|
-
convertFiltersToSQL = defaultVal(convertFiltersToSQL
|
40
|
+
convertFiltersToSQL = defaultVal(convertFiltersToSQL);
|
41
41
|
const foreignKeyTableStr = defaultStr(foreignKeyTable,props.tableName,props.table);
|
42
42
|
if(typeof getForeignKeyTable !=='function'){
|
43
43
|
console.error("la fonction getTableData non définie des les paramètres d'initialisation de l'application!!! Rassurez vous d'avoir définier cette fonction!!, options : foreignKeyTable:",foreignKeyTable,"foreignKeyColumn:",foreignKeyColumn,props)
|
@@ -145,7 +145,7 @@ const TableDataSelectField = React.forwardRef(({foreignKeyColumn,foreignKeyLabel
|
|
145
145
|
const context = {
|
146
146
|
refresh : (force,cb)=>{
|
147
147
|
if(!isMounted()) return;
|
148
|
-
if(typeof beforeFetchItems ==='function' && beforeFetchItems(fetchOptions) === false) return;
|
148
|
+
if(typeof beforeFetchItems ==='function' && beforeFetchItems({fetchOptions}) === false) return;
|
149
149
|
let opts = Object.clone(fetchOptions);
|
150
150
|
if(cPrepareFilters !== false){
|
151
151
|
opts.selector = prepareFilters(fetchOptions.selector,{convertToSQL:convertFiltersToSQL});
|
@@ -233,9 +233,11 @@ const TableDataSelectField = React.forwardRef(({foreignKeyColumn,foreignKeyLabel
|
|
233
233
|
itv = t =='money'? itv.formatMoney() : itv.formatNumber();
|
234
234
|
}
|
235
235
|
} else {
|
236
|
-
|
237
|
-
itv
|
238
|
-
|
236
|
+
/***
|
237
|
+
if(typeof itv =='string' && itv && DateLib.isIsoDateStr(itv)){
|
238
|
+
itv = DateLib.format(itv,DateLib.defaultDateFormat);
|
239
|
+
}
|
240
|
+
*/
|
239
241
|
}
|
240
242
|
}
|
241
243
|
itl+= (itl?" ":"")+ (itv || defaultStr(itv))
|
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,6 +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 ModalList = defaultBool(TableDataScreenComponentRef.List?.Modal,TableDataScreenComponentRef.List?.modal)
|
58
|
+
const withFab = typeof TableDataScreenComponentRef.List?.withFab =="boolean"? TableDataScreenComponentRef.List?.withFab: undefined;
|
57
59
|
loopForScreen(screensProps,screens,foundTables);
|
58
60
|
Object.map(tables,(table,i)=>{
|
59
61
|
if(!isObj(table) || !isNonNullString(i)) return;
|
@@ -73,6 +75,8 @@ export function prepareScreens ({tables,screens:screensProps,TableDataScreen,Tab
|
|
73
75
|
screens.push({
|
74
76
|
Component : TableDataListScreen,
|
75
77
|
screenName : listScreenName,
|
78
|
+
Modal : ModalList,
|
79
|
+
withFab,
|
76
80
|
});
|
77
81
|
foundTables[listScreenName] = TableDataListScreen;
|
78
82
|
}
|
package/src/layouts/Fab/index.js
CHANGED
@@ -12,13 +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
|
-
const isMounted = React.useIsMounted();
|
18
17
|
const tables = isObjOrArray(fabActions)? fabActions : tablesData;
|
19
18
|
const actions = React.useMemo(()=>{
|
20
19
|
if(Array.isArray(fabActions)) return fabActions;
|
21
|
-
if(!isLoggedIn) return null;
|
20
|
+
if(!isLoggedIn || useTables === false) return null;
|
22
21
|
const a = [];
|
23
22
|
Object.map(tables,(table,i,index)=>{
|
24
23
|
if(!isObj(table) || table.showInFab === false || typeof table.showInFab =="function" && table.showInFab() === false) return;
|
@@ -27,12 +26,22 @@ const FabLayoutComponent = React.forwardRef((p,ref)=>{
|
|
27
26
|
const addText = defaultStr(table.newElementLabel,"Nouveau");
|
28
27
|
const tableName = defaultStr(table.table,table.tableName);
|
29
28
|
if(!table || !icon || !text || !Auth.isTableDataAllowed({table:tableName,action:'create'})) return;
|
30
|
-
let fabProps = typeof table.
|
29
|
+
let fabProps = typeof table.fabProps ==='function'? table.fabProps({tableName}) : defaultObj(table.fabProps);;
|
31
30
|
if(fabProps === false) return;
|
32
31
|
fabProps = defaultObj(fabProps);
|
33
32
|
const cSuffix = theme.Colors.getSuffix(index);
|
34
33
|
const color = theme.Colors.isValid(fabProps.color)? fabProps.color : theme.Colors.getContrast(cSuffix);
|
35
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
|
+
}
|
36
45
|
const label = defaultStr(fabProps.label,fabProps.text,"{0} | {1}".sprintf(addText,text));
|
37
46
|
a.push({
|
38
47
|
icon,
|
@@ -71,6 +80,7 @@ const styles = StyleSheet.create({
|
|
71
80
|
|
72
81
|
FabLayoutComponent.propTypes = {
|
73
82
|
...Fab.propTypes,
|
83
|
+
useTables : PropTypes.bool,//si les tables data seront exploités pour la génération du fab
|
74
84
|
actions : PropTypes.array, //les actions du fab layout
|
75
85
|
screenName : PropTypes.string,
|
76
86
|
}
|
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"}};
|
@@ -63,7 +63,7 @@ export default function ScreenWrapperNavComponent(_props){
|
|
63
63
|
},[]);
|
64
64
|
setScreenOptions(options);
|
65
65
|
const allowDrawer = typeof options.allowDrawer ==='boolean'? options.allowDrawer : typeof options.withDrawer =='boolean'? options.withDrawer : typeof Screen.allowDrawer =='boolean'? Screen.allowDrawer : typeof Screen.withDrawer =='boolean' ? Screen.withDrawer : Screen.isModalScreen == true ? false : true;
|
66
|
-
const withFab = typeof options.withFab ==='boolean' ? options.withFab : typeof Screen.withFab =='boolean'? Screen.withFab :
|
66
|
+
const withFab = typeof options.withFab ==='boolean' ? options.withFab : typeof Screen.withFab =='boolean'? Screen.withFab : false;
|
67
67
|
return <Screen
|
68
68
|
withFab = {withFab}
|
69
69
|
groupName = {groupName}
|
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;
|