@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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fto-consult/expo-ui",
3
- "version": "6.71.2",
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.16",
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,components:{datagrid}} = useApp();
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,datagrid.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
- if(typeof itv =='string' && itv && DateLib.isIsoDateStr(itv)){
237
- itv = DateLib.format(itv,DateLib.defaultDateFormat);
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))
@@ -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:{drawerSortOrder:{number,l'ordre d'apparition dans le drawer},showInDrawer:{boolean|{funct<{boolean}>},si l'on affichera la table de données dans le drawers}},
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
@@ -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
  }
@@ -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.getFabProps ==='function'? table.getFabProps({tableName}) : defaultObj(table.fabProps);;
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
  }
@@ -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
  }
@@ -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.70.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.16","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"}};
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 : allowDrawer;
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}
@@ -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;