@fto-consult/expo-ui 6.26.8 → 6.26.10

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/app.config.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@FTO-CONSULT/EXPO-UI",
3
- "version": "6.25.2",
3
+ "version": "6.26.8",
4
4
  "description": "Bibliothèque de composants UI Expo,react-native",
5
5
  "bin": {
6
6
  "expo-ui": "./bin/index.js"
@@ -14,6 +14,7 @@ registerApp({
14
14
  components : {
15
15
  logo : Logo,//logo component's properties
16
16
  loginPropsMutator : {},//login props mutator
17
+ authEnabled : true,//si le module d'authentification sera requis
17
18
  },
18
19
  /*** //for application initialization
19
20
  @param {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fto-consult/expo-ui",
3
- "version": "6.26.8",
3
+ "version": "6.26.10",
4
4
  "description": "Bibliothèque de composants UI Expo,react-native",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -43,7 +43,7 @@
43
43
  "expo-fix": "npx expo install --fix",
44
44
  "delete-node-modules": "rimraf ./**/node_modules",
45
45
  "modifier-url-remote-git": "git remote set-url origin 'https://borispipo@github.com/borispipo/smart-eneo.git'",
46
- "update": "npm i expo @emotion/native@latest @react-native-community/netinfo@latest react-native-big-list@latest apexcharts@latest file-saver@latest fs-extra@latest google-libphonenumber@latest @pchmn/expo-material3-theme@latest @gorhom/portal@latest @emotion/native@latest @fto-consult/common@latest react-native-blob-util react-native-gesture-handler@latest react-native-iphone-x-helper@latest react-native-mime-types@latest react-native-paper@latest react-native-safe-area-context@latest react-native-paper-dates@latest @react-navigation/native@latest @react-navigation/native-stack@latest react-native-screens@latest react-virtuoso@latest tippy.js@latest websql@latest xlsx@latest && npx expo install --fix"
46
+ "update": "npm i expo @emotion/native@latest @react-native-community/netinfo@latest react-native-big-list@latest apexcharts@latest file-saver@latest fs-extra@latest google-libphonenumber@latest @pchmn/expo-material3-theme@latest @emotion/native@latest @fto-consult/common@latest react-native-blob-util react-native-gesture-handler@latest react-native-iphone-x-helper@latest react-native-mime-types@latest react-native-paper@latest react-native-safe-area-context@latest react-native-paper-dates@latest @react-navigation/native@latest @react-navigation/native-stack@latest react-native-screens@latest react-virtuoso@latest tippy.js@latest websql@latest xlsx@latest && npx expo install --fix"
47
47
  },
48
48
  "bin": {
49
49
  "expo-ui": "./bin/index.js"
@@ -68,8 +68,7 @@
68
68
  "@expo/html-elements": "^0.5.1",
69
69
  "@expo/vector-icons": "^13.0.0",
70
70
  "@faker-js/faker": "^8.0.2",
71
- "@fto-consult/common": "^3.29.1",
72
- "@gorhom/portal": "^1.0.14",
71
+ "@fto-consult/common": "^3.29.2",
73
72
  "@pchmn/expo-material3-theme": "^1.3.1",
74
73
  "@react-native-async-storage/async-storage": "1.18.2",
75
74
  "@react-native-community/datetimepicker": "7.2.0",
@@ -79,7 +78,7 @@
79
78
  "@react-navigation/native-stack": "^6.9.13",
80
79
  "@shopify/flash-list": "1.4.3",
81
80
  "apexcharts": "^3.41.1",
82
- "expo": "^49.0.7",
81
+ "expo": "^49.0.8",
83
82
  "expo-camera": "~13.4.2",
84
83
  "expo-clipboard": "~4.3.1",
85
84
  "expo-font": "~11.4.0",
@@ -99,13 +98,13 @@
99
98
  "react": "^18.2.0",
100
99
  "react-content-loader": "^6.2.1",
101
100
  "react-dom": "^18.2.0",
102
- "react-native": "0.72.3",
101
+ "react-native": "0.72.4",
103
102
  "react-native-big-list": "^1.6.1",
104
103
  "react-native-blob-util": "^0.18.6",
105
104
  "react-native-gesture-handler": "^2.12.1",
106
105
  "react-native-iphone-x-helper": "^1.3.1",
107
106
  "react-native-mime-types": "^2.4.0",
108
- "react-native-paper": "^5.10.1",
107
+ "react-native-paper": "^5.10.3",
109
108
  "react-native-paper-dates": "^0.18.14",
110
109
  "react-native-reanimated": "~3.3.0",
111
110
  "react-native-safe-area-context": "4.6.3",
@@ -3,7 +3,7 @@
3
3
  // license that can be found in the LICENSE file.
4
4
 
5
5
  import * as Linking from 'expo-linking';
6
- import { Pressable } from 'react-native';
6
+ import { Pressable,StyleSheet } from 'react-native';
7
7
  import {isValidUrl,isValidEmail,defaultStr,isSms} from "$cutils";
8
8
  import PropTypes from "prop-types";
9
9
  import Browser from "$ecomponents/Browser";
@@ -12,12 +12,14 @@ export default function AutolinkComponent({onPress,withBrowser,mailto,email,tel,
12
12
  url = defaultStr(url,href);
13
13
  phone = defaultStr(phone,tel).trim();
14
14
  const isPhone = phone ? true : false;
15
- const isUrl = isValidUrl(url);
15
+ const isUrl = url && isValidUrl(url);
16
16
  email = defaultStr(email,mailto);
17
- const isEmail = isValidEmail(email);
17
+ const isEmail = email && isValidEmail(email);
18
+ const hasContent = isUrl || isEmail || isPhone;
18
19
  return <Pressable
19
20
  testID={"RN_AutoLinkComponent"}
20
21
  {...props}
22
+ style = {[hasContent && styles.textDecorationUnderline,props.style]}
21
23
  onPress = {(e)=>{
22
24
  if(onPress && onPress(e) === false) return;
23
25
  if(isUrl){
@@ -36,6 +38,12 @@ export default function AutolinkComponent({onPress,withBrowser,mailto,email,tel,
36
38
  />
37
39
  }
38
40
 
41
+
42
+ const styles = StyleSheet.create({
43
+ textDecorationUnderline : {
44
+ textDecorationLine:'underline',
45
+ },
46
+ })
39
47
  AutolinkComponent.propTypes = {
40
48
  onPress : PropTypes.func,
41
49
  phone : PropTypes.string,//le numéro à utiliser
@@ -3,7 +3,7 @@ import SimpleSelect from "$ecomponents/SimpleSelect";
3
3
  import { countries,styles} from "./utils";
4
4
  import View from "$ecomponents/View";
5
5
  import {StyleSheet,Image} from "react-native";
6
- import {defaultObj} from "$cutils";
6
+ import {defaultObj,defaultVal} from "$cutils";
7
7
  import PropTypes from "prop-types";
8
8
  import {isNonNullString,isNumber,defaultStr} from "$cutils";
9
9
  import Label from "$ecomponents/Label";
@@ -12,7 +12,8 @@ import appConfig from "$capp/config";
12
12
  /**** retourne les props du champ de type countrie */
13
13
  export const getCountryFieldProps = (props)=>{
14
14
  props = defaultObj(props);
15
- let {imageProps,defaultValue,...rest} = props;
15
+ let {imageProps,defaultValue,label,text,...rest} = props;
16
+ label = defaultVal(label,text,'Pays');
16
17
  const countryStr = defaultStr(appConfig.countryCode).toUpperCase();
17
18
  imageProps = defaultObj(imageProps);
18
19
  if(rest.multiple){
@@ -26,7 +27,8 @@ export const getCountryFieldProps = (props)=>{
26
27
  defaultValue = defaultStr(defaultValue,countryStr);
27
28
  }
28
29
  return {
29
- label : defaultStr(props.label,props.text,'Pays'),
30
+ label,
31
+ text : label,
30
32
  type : 'select',
31
33
  items : countries,
32
34
  upper : true,
@@ -5,7 +5,7 @@ import {defaultStr,defaultObj} from "$cutils";
5
5
  import {Vertical as AutoSizeVertical} from "$ecomponents/AutoSizer";
6
6
 
7
7
  const ScrollViewComponent = React.forwardRef(({withAutoSizer,autoSizerProps,testID,...rest},ref) => {
8
- return <ScrollView testID={testID} {...rest} ref={ref}/>
8
+ //return <ScrollView testID={testID} {...rest} ref={ref}/>
9
9
  testID = defaultStr(testID,'RN_ScrollViewComponent');
10
10
  const autoSize = React.useRef(withAutoSizer).current;
11
11
  if(!autoSize || rest.horizontal === true || rest.vertical === false){
@@ -15,9 +15,9 @@ import styles from "../styles";
15
15
  import CellWrapper from "./CellWrapper";
16
16
 
17
17
  export default function RowHeaderComponent({isFilter,isFooter,isHeader,className,children:cChildren,...rest}){
18
- const {showHeaders,visibleColsNames,visibleColsNamesStr,headerContainerProps,footerContainerProps,filtersContainerProps,showFilters,filters,showFooters} = useTable();
18
+ const {showHeaders,visibleColsNames,filterable,visibleColsNamesStr,headerContainerProps,footerContainerProps,filtersContainerProps,showFilters,filters,showFooters} = useTable();
19
19
  const canV = showHeaders === false ? false : Array.isArray(children)? !!children.length : true;
20
- const visible = canV && (isHeader ? true : isFilter ? !!showFilters : isFooter ? !!showFooters: true);
20
+ const visible = canV && (isHeader ? true : isFilter ? !!showFilters && filterable !== false : isFooter ? !!showFooters: true);
21
21
  const containerProps = defaultObj( isHeader ? headerContainerProps : isFooter ? footerContainerProps : filtersContainerProps);
22
22
  const style = filters ? styles.filters : isFooter ? styles.footer : null;
23
23
  const children = React.useMemo(()=>{
@@ -230,7 +230,7 @@ const TableComponent = React.forwardRef(({containerProps,listContainerStyle,onRe
230
230
  prepareItems = {false}
231
231
  items = {items}
232
232
  contentContainerStyle = {[styles.contentContainer,{width:listWidth,minWidth:totalWidths}]}
233
- style = {[styles.datagrid,{width:listWidth,minWidth:totalWidths}]}
233
+ style = {[styles.datagrid,{width:listWidth,minWidth:totalWidths},props.style]}
234
234
  keyExtractor = {keyExtractor}
235
235
  onScroll = {getOnScrollCb([absoluteScrollViewRef],(args)=>{
236
236
  if(!absoluteScrollViewRef.current) return;
package/src/index.js CHANGED
@@ -27,7 +27,6 @@ import DialogProvider from "$ecomponents/Dialog/Provider";
27
27
  import SimpleSelect from '$ecomponents/SimpleSelect';
28
28
  import {Provider as AlertProvider} from '$ecomponents/Dialog/confirm/Alert';
29
29
  import { DialogProvider as FormDataDialogProvider } from '$eform/FormData';
30
- import {Portal } from 'react-native-paper';
31
30
  import {PortalProvider,CustomPortal} from '$ecomponents/Portal';
32
31
  import ErrorBoundaryProvider from "$ecomponents/ErrorBoundary/Provider";
33
32
  import notify, {notificationRef} from "$notify";
@@ -37,9 +36,11 @@ import { PreferencesContext } from './Preferences';
37
36
  import ErrorBoundary from "$ecomponents/ErrorBoundary";
38
37
  import {updateTheme,defaultTheme} from "$theme";
39
38
  import StatusBar from "$ecomponents/StatusBar";
40
- import {Provider as PaperProvider } from 'react-native-paper';
39
+ import {Provider as PaperProvider,Portal } from 'react-native-paper';
41
40
  import FontIcon from "$ecomponents/Icon/Font";
42
41
  import useContext from "$econtext/hooks";
42
+ import { GestureHandlerRootView } from 'react-native-gesture-handler';
43
+ import { StyleSheet } from "react-native";
43
44
  export * from "./context";
44
45
 
45
46
  let MAX_BACK_COUNT = 1;
@@ -273,35 +274,44 @@ function App({init:initApp,initialRouteName:appInitialRouteName,render,onMount})
273
274
  </NavigationContainer> : null;
274
275
  const content = isLoaded ? typeof render == 'function'? render({children:child,appConfig,config:appConfig}) : child : null;
275
276
  return <AuthProvider>
276
- <PaperProvider
277
- theme={theme}
278
- settings={{
279
- icon: (props) => {
280
- return <FontIcon {...props}/>
281
- },
282
- }}
283
- >
284
- <PortalProvider>
285
- <ErrorBoundaryProvider/>
286
- <PreloaderProvider/>
287
- <DialogProvider responsive testID={"RN_MainAppDialogProvider"}/>
288
- <AlertProvider SimpleSelect={SimpleSelect}/>
289
- <FormDataDialogProvider/>
290
- <BottomSheetProvider/>
291
- <DropdownAlert ref={notificationRef}/>
292
- <Portal.Host testID="RN_NativePaperPortalHost">
293
- <ErrorBoundary>
294
- <StatusBar/>
295
- <SplashScreen isLoaded={isLoaded}>
296
- <PreferencesContext.Provider value={preferences}>
297
- {React.isValidElement(content) && content || child}
298
- </PreferencesContext.Provider>
299
- </SplashScreen>
300
- </ErrorBoundary>
301
- </Portal.Host>
302
- </PortalProvider>
303
- </PaperProvider>
277
+ <GestureHandlerRootView testID={"RN_MainAppGestureHanleRootView"} style={styles.gesture}>
278
+ <PaperProvider
279
+ theme={theme}
280
+ settings={{
281
+ icon: (props) => {
282
+ return <FontIcon {...props}/>
283
+ },
284
+ }}
285
+ >
286
+ <PortalProvider>
287
+ <ErrorBoundaryProvider/>
288
+ <PreloaderProvider/>
289
+ <DialogProvider responsive testID={"RN_MainAppDialogProvider"}/>
290
+ <AlertProvider SimpleSelect={SimpleSelect}/>
291
+ <FormDataDialogProvider/>
292
+ <BottomSheetProvider/>
293
+ <DropdownAlert ref={notificationRef}/>
294
+ <Portal.Host testID="RN_NativePaperPortalHost">
295
+ <ErrorBoundary>
296
+ <StatusBar/>
297
+ <SplashScreen isLoaded={isLoaded}>
298
+ <PreferencesContext.Provider value={preferences}>
299
+ {React.isValidElement(content) && content || child}
300
+ </PreferencesContext.Provider>
301
+ </SplashScreen>
302
+ </ErrorBoundary>
303
+ </Portal.Host>
304
+ </PortalProvider>
305
+ </PaperProvider>
306
+ </GestureHandlerRootView>
304
307
  </AuthProvider>;
305
308
  }
306
309
 
307
- export default App;
310
+ export default App;
311
+
312
+ const styles = StyleSheet.create({
313
+ gesture : {
314
+ flex : 1,
315
+ flexGrow : 1,
316
+ }
317
+ })
@@ -108,7 +108,7 @@ export default function MainScreenScreenWithoutAuthContainer(props) {
108
108
  const WrapperProps = modal? {screenName} : {};
109
109
  const portalId = uniqid("screeen-container-"+screenName);
110
110
  return <Wrapper {...WrapperProps}>
111
- <View testID={testID+"_ScreenContentContainer"} id={portalId} style={[containerStyle,{backgroundColor},modal && styles.modal,containerProps.style]} {...containerProps}>
111
+ <View testID={testID+"_ScreenContentContainer"} id={portalId} {...containerProps} style={[containerStyle,{backgroundColor},modal && styles.modal,containerProps.style]} >
112
112
  <KeyboardAvoidingView testID={testID} {...keyboardAvoidingViewProps} style={[styles.keyboardAvoidingView,keyboardAvoidingViewProps.style]}>
113
113
  {withStatusBar !== false ? <StatusBar/> : null}
114
114
  {appBar === false ? null : React.isValidElement(appBar)? state.AppBar : <AppBar
@@ -5,7 +5,6 @@ import Divider from "$ecomponents/Divider";
5
5
  import PrivacyPolicyLink from "./PrivacyPolicy/Link";
6
6
  import TermsOfUsesLink from "./TermsOfUses/Link";
7
7
  import {isNativeDesktop,isAndroid,isIos} from "$platform";
8
- import Expandable from "$ecomponents/Expandable";
9
8
  import React from "$react";
10
9
  import Screen from "$screen";
11
10
  import getDevicesInfos from "./getDevicesInfos";
@@ -15,15 +14,10 @@ import {defaultStr} from "$cutils";
15
14
  import theme from "$theme";
16
15
  import APP from "$app";
17
16
  import AutoLink from "$ecomponents/AutoLink";
18
- import Grid from "$ecomponents/Grid";
19
17
  import getReleaseText from "./getReleaseText";
20
18
  import appConfig from "$capp/config";
21
- let openLibraries = null;
22
- try {
23
- openLibraries = require("./openLibraries");
24
- } catch{
25
- openLibraries = null;
26
- }
19
+ import OpenLibraries from "./OpenLibraryScreen";
20
+
27
21
  export default function HelpScreen(props){
28
22
  const deviceInfo = getDevicesInfos();
29
23
  let icon = undefined, iconText = undefined;
@@ -58,9 +52,6 @@ export default function HelpScreen(props){
58
52
  iconText += " Mac os";
59
53
  }
60
54
  }
61
- const gridPadding = 5;
62
- const gridStyles = [{width:40,padding:gridPadding},{width:'60%',padding:gridPadding},{width:60,padding:gridPadding},{width:60,padding:gridPadding}];
63
- const borderStyle = {borderColor:theme.colors.divider,borderWidth:1,justifyContent:'space-between'};
64
55
  const testID = defaultStr(props.testID,"RN_HelpAboutScreenComponent")
65
56
  return <Screen withScrollView title={title} {...props} testID={testID+"_Screen"} contentContainerStyle={[{flex:1},theme.styles.alignItemsCenter,theme.styles.justifyContentCenter]}>
66
57
  <View testID={testID+"_Container"} style={[theme.styles.alignItemsCenter,theme.styles.justifyContentCenter,theme.styles.w100,theme.styles.p1]}>
@@ -87,44 +78,8 @@ export default function HelpScreen(props){
87
78
  <Label primary textBold style={theme.styles.mv05} >{appConfig.name+", Notes de mise à jour."}</Label>
88
79
  </Link>
89
80
  </View>
90
- <View style={theme.styles.w100}>
91
- {Object.size(openLibraries,true) ? <View style={[theme.styles.w100]}>
92
- <Expandable
93
- testID={testID+"_OpenLibraries"}
94
- title = {"A propos des librairies tiers"}
95
- titleProps = {{style:theme.styles.ph1}}
96
- style = {{backgroundColor:'transparent'}}
97
- >
98
- <View testID={testID+"_OpenLibraries_Header"} style={[theme.styles.row,theme.styles.flexWrap]}>
99
- <Label testID={testID+"_OpenLibraries_HeaderLabel"} primary textBold>{appConfig.name+" "}</Label>
100
- <Label>est bâti sur un ensemble d'outils et librairies open Source</Label>
101
- </View>
102
- <View testID={testID+"_OpenLibrariesContent"} style={[theme.styles.w100,theme.styles.pv1]}>
103
- <Grid.Row style={borderStyle}>
104
- <Label style={gridStyles[0]} textBold>#</Label>
105
- <Label style={gridStyles[1]} textBold>Librairie/Outil</Label>
106
- <Label style={gridStyles[2]} textBold>Version</Label>
107
- <Label style={gridStyles[3]} textBold>Licence</Label>
108
- </Grid.Row>
109
- {Object.mapToArray(openLibraries,(lib,i,_i)=>{
110
- return <Grid.Row key={i} style={borderStyle}>
111
- <Label style={gridStyles[0]}>
112
- {_i.formatNumber()}
113
- </Label>
114
- <AutoLink style={gridStyles[1]} url={lib.url}>
115
- <Label splitText>{i}</Label>
116
- </AutoLink>
117
- <AutoLink style={gridStyles[2]}>
118
- <Label splitText numberOfLines={2}>{defaultStr(lib.version)}</Label>
119
- </AutoLink>
120
- <AutoLink url={lib.licenseUrl} style={gridStyles[3]}>
121
- <Label splitText>{lib.license}</Label>
122
- </AutoLink>
123
- </Grid.Row>
124
- })}
125
- </View>
126
- </Expandable>
127
- </View>: null}
81
+ <View testID={testID+"_OpenLibrariesLinkContainer"} style={[theme.styles.w100,theme.styles.justifyContentCenter,theme.styles.alignItemsCenter]}>
82
+ <OpenLibraries.Link testID={testID+"_OpenLibrariesLink"}/>
128
83
  </View>
129
84
  </View>
130
85
  </Screen>
@@ -134,6 +89,6 @@ export const title = HelpScreen.title = "A propos";
134
89
 
135
90
  export const screenName = HelpScreen.screenName = "Help/About";
136
91
 
137
- HelpScreen.AuthRequired = false;
92
+ HelpScreen.authRequired = false;
138
93
 
139
94
  HelpScreen.Modal = true;
@@ -0,0 +1,128 @@
1
+ import View from "$ecomponents/View";
2
+ import Screen from "$escreen";
3
+ import {defaultStr,defaultObj,isValidUrl} from "$cutils";
4
+ import Label from "$ecomponents/Label";
5
+ import theme from "$theme";
6
+ import Link from "$ecomponents/Link";
7
+ import {StyleSheet} from "react-native";
8
+ import appConfig from "$capp/config";
9
+ import Grid from "$ecomponents/Grid";
10
+ import Table from "$ecomponents/Table";
11
+ import React from "$react";
12
+ import AutoLink from "$ecomponents/AutoLink";
13
+
14
+ const openLibraries = require("./openLibraries");
15
+
16
+ const columns = {
17
+ index : {
18
+ text : "#",
19
+ width : 40,
20
+ },
21
+ library : {
22
+ text : "Librairie/Outil",
23
+ width : 180,
24
+ },
25
+ version : {
26
+ text : "Version",
27
+ width : 60,
28
+ },
29
+ license : {
30
+ text : "Licence",
31
+ width : 80,
32
+ }
33
+ }
34
+ export default function OpenLibrariesScreen({testID,...props}){
35
+ testID = defaultStr(testID,"RN_HealScreenOpenLibraries");
36
+ const gridStyles = [styles.grid0,styles.grid1,styles.grid2,styles.grid3];
37
+ const borderStyle = {borderColor:theme.colors.divider,borderWidth:1,justifyContent:'space-between'};
38
+ const data = React.useMemo(()=>{
39
+ const data = [];
40
+ Object.map(openLibraries,(lib,i,_i)=>{
41
+ const da = {
42
+ ...lib,
43
+ index : _i,
44
+ library : i,
45
+ };
46
+ da.url = isValidUrl(da.url)? da.url : da.homepage;
47
+ data.push(da)
48
+ })
49
+ return data;
50
+ },[])
51
+ return <Screen {...props} title={title} containerProps={{style:[theme.styles.justifyContentCenter]}}>
52
+ <View testID={testID+"_OpenLibraries_Header"} style={[theme.styles.row,theme.styles.flexWrap,theme.styles.p1]}>
53
+ <Label testID={testID+"_OpenLibraries_HeaderLabel"} primary textBold>{appConfig.name+" "}</Label>
54
+ <Label>est bâti sur un ensemble d'outils et librairies open Source</Label>
55
+ </View>
56
+ <View testID={testID+"_OpenLibrariesContent"} style={[theme.styles.w100,theme.styles.pv1]}>
57
+ <Table
58
+ sortable = {false}
59
+ columns = {columns}
60
+ data = {data}
61
+ containerProps = {{style:styles.table}}
62
+ renderCell = {({rowData,columnDef,columnField,...rest})=>{
63
+ const value = rowData[columnField];
64
+ switch(columnField){
65
+ case "index":
66
+ return <Label>
67
+ {value.formatNumber()}
68
+ </Label>
69
+ case "library" :
70
+ return <AutoLink url={rowData.url}>
71
+ <Label splitText style={styles.textDecorationUnderline} >{value}</Label>
72
+ </AutoLink>
73
+ case "version" :
74
+ return <Label splitText numberOfLines={2}>{defaultStr(value)}</Label>
75
+ case "licence" :
76
+ return <AutoLink url={rowData.licenseUrl}>
77
+ <Label style={styles.textDecorationUnderline} splitText>{rowData.license}</Label>
78
+ </AutoLink>
79
+ }
80
+ return null;
81
+ }}
82
+ />
83
+ </View>
84
+ </Screen>
85
+ }
86
+
87
+ export const title = "A propos des librairies tiers";
88
+
89
+ OpenLibrariesScreen.title = title;
90
+ OpenLibrariesScreen.screenName = "Help/OpenLibraries";
91
+ OpenLibrariesScreen.Modal = true;
92
+ OpenLibrariesScreen.authRequired = false;
93
+
94
+ export function OpenLibrariesLink(props){
95
+ const {style,...rest} = props;
96
+ return <Link routeName={OpenLibrariesScreen.screenName}>
97
+ <Label {...defaultObj(rest)} style={[{color:theme.colors.primary},styles.content,style]}>
98
+ {props.children || title}
99
+ </Label>
100
+ </Link>
101
+ }
102
+
103
+ const gridPadding = 5;
104
+
105
+ const styles = StyleSheet.create({
106
+ container : {
107
+ paddingHorizontal : 10,
108
+ paddingVertical : 10,
109
+ },
110
+ textDecorationUnderline : {
111
+ textDecorationLine:'underline',
112
+ },
113
+ content : {
114
+ textDecorationLine:'underline',
115
+ fontWeight : 'bold',
116
+ },
117
+ grid0: {width:40,padding:gridPadding},
118
+ grid1 : {width:'60%',padding:gridPadding},
119
+ grid2 : {width:60,padding:gridPadding},
120
+ grid3 : {width:60,padding:gridPadding},
121
+ table : {
122
+ width : "100%"
123
+ },
124
+ })
125
+
126
+ OpenLibrariesScreen.Link = OpenLibrariesLink;
127
+
128
+ export {OpenLibrariesLink as Link};
@@ -1,10 +1,12 @@
1
1
  import TermsOfUses from "./TermsOfUses"
2
2
  import PrivacyPolicy from "./PrivacyPolicy";
3
3
  import About from "./About";
4
+ import OpenLibrariesScreen from "./OpenLibraryScreen";
4
5
  export default [
5
6
  TermsOfUses,
6
7
  PrivacyPolicy,
7
8
  About,
9
+ OpenLibrariesScreen,
8
10
  ]
9
11
 
10
12
  export {PrivacyPolicy};
@@ -1 +1 @@
1
- module.exports = {"@fto-consult/expo-ui":{"name":"@fto-consult/expo-ui","version":"6.26.3","repository":{"type":"git","url":"git+https://github.com/borispipo/expo-ui.git"},"homepage":"https://github.com/borispipo/expo-ui#readme"},"@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":"18.1.2","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.29.0","url":"https://github.com/borispipo/common#readme","license":"ISC"},"@gorhom/portal":{"version":"1.0.14","url":"https://github.com/gorhom/react-native-portal#readme","license":"MIT"},"@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.7","url":"https://reactnavigation.org","license":"MIT"},"@react-navigation/native-stack":{"version":"6.9.13","url":"https://github.com/software-mansion/react-native-screens#readme","license":"MIT"},"@shopify/flash-list":{"version":"1.4.3","url":"https://shopify.github.io/flash-list/","license":"MIT"},"apexcharts":{"version":"3.41.1","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.7","url":"https://github.com/expo/expo/tree/main/packages/expo","license":"MIT"},"expo-camera":{"version":"13.4.2","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-sqlite":{"version":"11.3.2","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"},"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.3","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-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.10.1","url":"https://callstack.github.io/react-native-paper","license":"MIT"},"react-native-paper-dates":{"version":"0.18.14","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.7","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.5.0","url":"https://virtuoso.dev/","license":"MIT"},"sharp-cli":{"version":"4.1.1","url":"https://github.com/vseventer/sharp-cli","license":"MIT"},"tippy.js":{"version":"6.3.7","url":"https://atomiks.github.io/tippyjs/","license":"MIT"},"uninstall":{"version":"0.0.0","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.26.9","repository":{"type":"git","url":"git+https://github.com/borispipo/expo-ui.git"},"homepage":"https://github.com/borispipo/expo-ui#readme"},"@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":"18.1.2","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.29.1","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.7","url":"https://reactnavigation.org","license":"MIT"},"@react-navigation/native-stack":{"version":"6.9.13","url":"https://github.com/software-mansion/react-native-screens#readme","license":"MIT"},"@shopify/flash-list":{"version":"1.4.3","url":"https://shopify.github.io/flash-list/","license":"MIT"},"apexcharts":{"version":"3.41.1","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.8","url":"https://github.com/expo/expo/tree/main/packages/expo","license":"MIT"},"expo-camera":{"version":"13.4.2","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-sqlite":{"version":"11.3.2","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"},"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.4","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-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.10.3","url":"https://callstack.github.io/react-native-paper","license":"MIT"},"react-native-paper-dates":{"version":"0.18.14","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.7","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.5.0","url":"https://virtuoso.dev/","license":"MIT"},"sharp-cli":{"version":"4.1.1","url":"https://github.com/vseventer/sharp-cli","license":"MIT"},"tippy.js":{"version":"6.3.7","url":"https://atomiks.github.io/tippyjs/","license":"MIT"},"uninstall":{"version":"0.0.0","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"}};
@@ -12,7 +12,7 @@ export default function ScreenWrapperNavComponent(_props){
12
12
  const {navigation,route,...props} = getScreenProps(_props);
13
13
  const sanitizedName = route.name;
14
14
  const options = defaultObj(SCREEN_OPTIONS[sanitizedName]);
15
- const {screenName,Screen,authRequired,isModal,...rest} = options;
15
+ const {screenName,groupName,Screen,authRequired,isModal,...rest} = options;
16
16
  const {drawerRef} = useDrawer()
17
17
  setActiveNavigation(navigation);
18
18
  setRoute(route);
@@ -66,6 +66,7 @@ export default function ScreenWrapperNavComponent(_props){
66
66
  const withFab = typeof options.withFab ==='boolean' ? options.withFab : typeof Screen.withFab =='boolean'? Screen.withFab : allowDrawer;
67
67
  return <Screen
68
68
  withFab = {withFab}
69
+ groupName = {groupName}
69
70
  {...rest}
70
71
  key = {sanitizedName}
71
72
  authRequired={authRequired === false ? false : authRequired || allowDrawer}
@@ -63,6 +63,7 @@ export const handleScreen = ({Screen,Factory,ModalFactory,result,filter,index})=
63
63
  const options = typeof Screen.options === 'function'? Screen.options(args) : typeof screenOptions ==='function'? screenOptions(args) : defaultObj(Screen.options,screenOptions);
64
64
  options.screenName = screenName;
65
65
  options.Screen = Screen;
66
+ options.groupName = groupName;
66
67
  options.authRequired = authRequired;
67
68
  SCREEN_OPTIONS[sanitizedName] = options;
68
69
  options.withAppBar = Screen.isModalScreen ? true : false;
@@ -1,4 +0,0 @@
1
- import { Portal } from "@gorhom/portal";
2
- export * from "@gorhom/portal";
3
-
4
- export default Portal;