@fto-consult/expo-ui 6.2.0 → 6.2.1

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.2.0",
3
+ "version": "6.2.1",
4
4
  "description": "Bibliothèque de composants UI Expo,react-native",
5
5
  "main": "index.js",
6
6
  "scripts": {
package/src/App.js CHANGED
@@ -18,6 +18,7 @@ import { Dimensions,Keyboard } from 'react-native';
18
18
  import {isTouchDevice} from "$platform";
19
19
  import * as Utils from "$cutils";
20
20
  import useContext from "$econtext";
21
+ import appConfig from "$capp/config";
21
22
 
22
23
  Object.map(Utils,(v,i)=>{
23
24
  if(typeof v =='function' && typeof window !='undefined' && window && !window[i]){
@@ -26,7 +27,7 @@ Object.map(Utils,(v,i)=>{
26
27
  });
27
28
 
28
29
  export default function getIndex({onMount,onUnmount,onRender}){
29
- const {swrConfig,appConfig} = useContext();
30
+ const {swrConfig} = useContext();
30
31
  const isScreenFocusedRef = React.useRef(true);
31
32
  ///garde pour chaque écran sa date de dernière activité
32
33
  const screensRef = React.useRef({});//la liste des écrans actifs
@@ -11,7 +11,7 @@ import {getFetchOptions,prepareFilters} from "$cutils/filters";
11
11
  import fetch from "$capi"
12
12
  import {willConvertFiltersToSQL} from "$ecomponents/Datagrid/utils";
13
13
  import React from "$react";
14
- import appConfig from "$appConfig";
14
+ import useApp from "$econtext";
15
15
 
16
16
  /*** la tabledataSelectField permet de faire des requêtes distantes pour rechercher les données
17
17
  * Elle doit prendre en paramètre et de manière requis : les props suivante :
@@ -19,8 +19,9 @@ import appConfig from "$appConfig";
19
19
  * foreignKeyTable : la tableData dans laquelle effectuer les donées de la requêtes
20
20
  * foreignKeyLabel : Le libélé dans la table étrangère
21
21
  */
22
- const TableDataSelectField = React.forwardRef(({foreignKeyColumn,prepareFilters:cPrepareFilters,bindUpsert2RemoveEvents,onAdd,showAdd:customShowAdd,canShowAdd,foreignKeyTable,fetchItemsPath,foreignKeyLabel,foreignKeyLabelIndex,dropdownActions,fields,fetchItems:customFetchItem,convertFiltersToSQL,mutateFetchedItems,getForeignKeyTable,onFetchItems,isFilter,isUpdate,isDocEditing,items,onAddProps,fetchOptions,...props},ref)=>{
22
+ const TableDataSelectField = React.forwardRef(({foreignKeyColumn,prepareFilters:cPrepareFilters,bindUpsert2RemoveEvents,onAdd,showAdd:customShowAdd,canShowAdd,foreignKeyTable,fetchItemsPath,foreignKeyLabel,foreignKeyLabelIndex,dropdownActions,fields,fetchItems:customFetchItem,convertFiltersToSQL,mutateFetchedItems,onFetchItems,isFilter,isUpdate,isDocEditing,items,onAddProps,fetchOptions,...props},ref)=>{
23
23
  props.data = defaultObj(props.data);
24
+ const {getTableData:getForeignKeyTable} = useApp();
24
25
  if(!foreignKeyColumn && isNonNullString(props.field)){
25
26
  foreignKeyColumn = props.field;
26
27
  }
@@ -32,11 +33,13 @@ const TableDataSelectField = React.forwardRef(({foreignKeyColumn,prepareFilters:
32
33
  foreignKeyLabel = foreignKeyLabel.ltrim("[").rtrim("]").split(",");
33
34
  }
34
35
  convertFiltersToSQL = defaultVal(convertFiltersToSQL,willConvertFiltersToSQL());
35
- getForeignKeyTable = getForeignKeyTable || appConfig.getTableData;
36
- const foreignKeyTableStr = defaultStr(foreignKeyTable,props.table,props.tableName);
37
- let fKeyTable = typeof getForeignKeyTable =='function' ? getForeignKeyTable(foreignKeyTableStr,props) : undefined;
36
+ const foreignKeyTableStr = defaultStr(foreignKeyTable,props.tableName,props.table);
37
+ if(typeof getForeignKeyTable !=='function'){
38
+ 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)
39
+ return null;
40
+ }
41
+ let fKeyTable = getForeignKeyTable(foreignKeyTableStr,props);
38
42
  fetchItemsPath = defaultStr(fetchItemsPath).trim();
39
-
40
43
  if(!fetchItemsPath && (!isObj(fKeyTable) || !(defaultStr(fKeyTable.tableName,fKeyTable.table)))){
41
44
  console.error("type de données invalide pour la foreignKeyTable ",foreignKeyTable," label : ",foreignKeyLabel,fKeyTable," composant SelectTableData",foreignKeyColumn,foreignKeyTable,props);
42
45
  return null;
@@ -306,7 +309,6 @@ TableDataSelectField.propTypes = {
306
309
  canShowAdd : PropTypes.func, //({foreignKeyTable,foreignKeyColumn})=><boolean> la fonction permettant de spécifier si l'on peut afficher le bouton showAdd
307
310
  mutateFetchedItems : PropTypes.func, //la fonction permettant d'effectuer une mutation sur l'ensemble des donnéees récupérées à distance
308
311
  fetchItems : PropTypes.func,//la fonction de rappel à utiliser pour faire une requête fetch permettant de selectionner les données à distance
309
- getForeignKeyTable : PropTypes.func, //la fonction permettant de récupérer la fKeyTable data dont fait référence le champ
310
312
  foreignKeyTable : PropTypes.string, //le nom de la fKeyTable data à laquelle se reporte le champ
311
313
  fetchItemsPath : PropTypes.string, //le chemin d'api pour récupérer les items des données étrangères en utilisant la fonction fetch
312
314
  beforeFetchItems : PropTypes.func, //appelée immédiatement avant l'exécution de la requête fetch
@@ -3,6 +3,7 @@ import appConfig from "$capp/config";
3
3
  import {MD3LightTheme,MD3DarkTheme} from "react-native-paper";
4
4
  import { useMaterial3Theme } from '@pchmn/expo-material3-theme';
5
5
  import {colorsAlias,Colors} from "$theme";
6
+ import {isObj} from "$cutils";
6
7
 
7
8
  const ExpoUIContext = React.createContext(null);
8
9
 
@@ -15,11 +16,25 @@ export const useExpoUI = ()=> React.useContext(ExpoUIContext);
15
16
  FontsIconsFilter : (font{object},fontName{string},fontNameLower{string})=><boolean> //porte le nom de la props de appConfig dans lequel définir les filtres à utiliser pour charger l'iconSet désirée pour l'appication
16
17
  ///fonction de rappel appelée avant d'exit l'application, doit retourner une promesse que lorsque résolue, exit l'application
17
18
  beforeExit : ()=><Promise>
18
-
19
+ getTableData : ()=>{object|array}
20
+ getStructData : ()=>{object|array}
21
+ tablesData : {object}, la liste des tables de données
22
+ strucsData : {object}, la liste des données de structures
19
23
  */
20
- export const Provider = ({children,...props})=>{
21
- const {extendAppTheme} = appConfig;
24
+ export const Provider = ({children,getTableData,getStructData,tablesData,structsData,...props})=>{
25
+ const {extendAppTheme,structsData,getTableData} = appConfig;
22
26
  const { theme : pTheme } = useMaterial3Theme();
27
+ structsData = isObj(structsData)? structsData : null;
28
+ tablesData = isObj(tablesData) ? tablesData : null;
29
+ if(!isObj(appConfig.tablesData)){
30
+ appConfig.tablesData = tablesData;
31
+ }
32
+ if(!isObj(appConfig.structsData)){
33
+ appConfig.structsData = structsData;
34
+ }
35
+
36
+ appConfig.getTableData = getTableData = typeof getTableData =='function'? getTableData : undefined;
37
+ appConfig.getStructData = getStructData = typeof getStructData =='function' ? getStructData : undefined;
23
38
  //const colorScheme = useColorScheme();
24
39
  appConfig.extendAppTheme = (theme)=>{
25
40
  if(!isObj(theme)) return;
@@ -49,9 +64,11 @@ export const Provider = ({children,...props})=>{
49
64
  theme.fonts = newTheme.fonts;
50
65
  return typeof extendAppTheme == 'function'? extendAppTheme(theme) : theme;
51
66
  }
52
- return <ExpoUIContext.Provider value={{...props,appConfig}} children={children}/>;
67
+ return <ExpoUIContext.Provider value={{...props,getTableData,getStructData,tablesData,structsData,appConfig}} children={children}/>;
53
68
  }
54
69
 
55
70
  export default useExpoUI;
56
71
 
57
- export const useContext = useExpoUI;
72
+ export const useContext = useExpoUI;
73
+
74
+ export const useApp = useContext;