@fto-consult/expo-ui 8.50.10 → 8.51.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.
@@ -6,6 +6,6 @@ export default function accordion({rowData}){
6
6
  content : `${rowData.email}`,
7
7
  title : rowData?.username,
8
8
  avatar : rowData.avatar,
9
- right : DateLib.format(rowData.birthdate),
9
+ right : DateLib.format(rowData.birthdate,DateLib.defaultDateFormat),
10
10
  }
11
11
  }
@@ -6,9 +6,14 @@ import addIcon from "./addIcon";
6
6
  import newElementLabel from "./newElementLabel";
7
7
  import { generateData } from "./utils";
8
8
 
9
+ const dataRef = {current : []};
10
+
9
11
  export default {
10
12
  fetcher : (url,options)=>{ //la fonction fetcher à passer au composant SWRDatagrid
11
- return Promise.resolve(generateData(1000)); //génère 100 utilisateurs à l'aide de la librarire faker
13
+ if(!dataRef.current.length){
14
+ dataRef.current = generateData(1000);
15
+ }
16
+ return Promise.resolve(dataRef.current); //génère 100 utilisateurs à l'aide de la librarire faker
12
17
  },
13
18
  accordionProps : {
14
19
  accordion,
@@ -1,7 +1,22 @@
1
1
 
2
2
  export default {
3
+ avatar : {
4
+ type : "image",
5
+ label: 'Avatar',
6
+ withLabel : false,
7
+ size : 150,//la taille de l'avatar
8
+ datagrid : {
9
+ size : 50,
10
+ },
11
+ responsiveProps : {
12
+ style : [{width:"100%",padding:10,alignItems:"center"}]
13
+ },
14
+ sortable : false, //on ne peut trier les avatars
15
+ filterable : false, //on ne peut également filtrer
16
+ },
3
17
  userId : {
4
18
  primaryKey : true,
19
+ upper : false,
5
20
  text :"Id",
6
21
  type : "id", //il s'agit d'un champ de type id
7
22
  visibleOnlyOnEditing : true, //l'id de sera généré depuis la base de données, donc pas question d'afficher au moment de création de la table data
@@ -14,14 +29,12 @@ export default {
14
29
  amount : {
15
30
  type : "number",
16
31
  label : "Amount",
32
+ format : "number",
17
33
  },
18
34
  email : {
19
35
  type : "email",
20
36
  label : 'Email',
21
- },
22
- avatar : {
23
- type : "image",
24
- label: 'Avatar',
37
+ width : 180,
25
38
  },
26
39
  birthdate : {
27
40
  type : "date",
@@ -1,7 +1,8 @@
1
1
  export default {
2
2
  table : require("./table").default,
3
3
  icon : 'material-people',
4
- title : "Exemple table : Utilisateurs",
4
+ fields : require("./fields").default,
5
+ label : "Exemple table : Utilisateurs",
5
6
  datagrid : require("./datagrid").default,
6
7
  perms : require("./perms").default,
7
8
  newElementLabel : require("./newElementLabel").default,
@@ -5,7 +5,7 @@ export function createRandomUser (){
5
5
  username: faker.internet.userName(),
6
6
  amount : faker.number.int(),
7
7
  email: faker.internet.email(),
8
- avatar: faker.image.dataUri({height:50,width:50}),
8
+ avatar: faker.image.avatar(),
9
9
  password: faker.internet.password(),
10
10
  birthdate: faker.date.birthdate(),
11
11
  registeredAt: faker.date.past(),
@@ -16,7 +16,6 @@ const TableDataListLayoutComponent = forwardRef(
16
16
  filterable={true} //si la table de données est filterable, spécifiez la valeur false, pour que les données ne soit pas filtrable
17
17
  canFetchOnlyVisibleColumns={false} //si uniquement les colonnes visisible seront récupérérs depuis la base de données, via le champ fields des options envoyés à la fonction fetcher
18
18
  parseMangoQueries = {true} //Spécifiez la valeur false, si vous utilisez une base de données qui accepte les requêtes mangoes (Voir https://www.mongodb.com/docs/manual/tutorial/query-documents) et true pour un backend lié à une BD relationnelle
19
- {...rProps}
20
19
  {...defaultObj(tableObj.datagrid)} //les props du datagrid lié à la table data
21
20
  exportToExcelIsAllowed={"{0}:exporttoexcel".sprintf(tableName)} //la permission pour l'export des données de la table data au format Excel, vous pouvez définir également une fonction de la forme : ()=><boolean>
22
21
  exportToPDFIsAllowed={"{0}:exporttopdf".sprintf(tableName)} //la permission pour l'export des données au format pdf, vous pouvez également définir une fonction de la forme : ()=><boolean>
@@ -26,6 +25,9 @@ const TableDataListLayoutComponent = forwardRef(
26
25
  if(typeof fetcher ==="function"){
27
26
  return fetcher(url,opts);
28
27
  }
28
+ if(typeof tableObj?.datagrid?.fetcher ==="function"){
29
+ return tableObj?.datagrid.fetcher(url,opts);
30
+ }
29
31
  delete opts.fields;
30
32
  delete opts?.fetchOptions?.fields;
31
33
  console.log(opts.fetchOptions," les options à utiliser pour effectuer le fetch distant des données");
@@ -31,6 +31,7 @@ export default class TableDataScreenItem extends TableData{
31
31
  */
32
32
  upsertToDB({data,tableName,...rest}){
33
33
  notify.error("Consultez le fichier : $src/screens/TableData/TableDataScreen.js afin d'implémenter la logique d'enregistrement en base de données de la données : "+JSON.stringify(data));
34
+ return false;
34
35
  return Promise.resolve({data});
35
36
  }
36
37
  prepareComponentProps (...rest){
package/bin/update.js CHANGED
@@ -1,17 +1,22 @@
1
1
  const fs = require("fs");
2
2
  const path = require("path");
3
3
  const projectRoot = process.cwd();
4
- const {exec,writeFile} = require("@fto-consult/node-utils");
4
+ const {exec,writeFile,isPlainObj} = require("@fto-consult/node-utils");
5
5
  const dependencies = require("./create-app/dependencies");
6
6
  const dependenciesArr = Object.keys(dependencies);
7
7
  const dependenciesPath = path.resolve(__dirname,"create-app","dependencies.js")
8
8
  const mainJSONPath = path.resolve(projectRoot,"package.json");
9
+ const euiPackageJSON = require("../package.json");
10
+ const euDevDependencies = isPlainObj(euiPackageJSON?.devDependencies) ? euiPackageJSON?.devDependencies : {};
9
11
  if(fs.existsSync(mainJSONPath)){
10
12
  const packageObj = JSON.parse(fs.readFileSync(mainJSONPath));
11
13
  const packageDev = typeof packageObj?.dependencies =="object" && packageObj?.dependencies || {};
14
+ const devDependencies = [];
12
15
  const filterdDObj = {};
13
16
  dependenciesArr.filter((v,index)=>{
14
- if((!!packageDev[v] && v !=="expo") || ["expo-intent-launcher"].includes(v)){
17
+ if(euDevDependencies[packageDev[v]]){
18
+ devDependencies.push(packageDev[v]);
19
+ } else if((!!packageDev[v] && v !=="expo") || ["expo-intent-launcher"].includes(v)){
15
20
  filterdDObj[v] = true;
16
21
  return true;
17
22
  }
@@ -19,17 +24,13 @@ if(fs.existsSync(mainJSONPath)){
19
24
  });
20
25
  const filteredDeps = Object.keys(filterdDObj);
21
26
  if(filteredDeps.length){
22
- exec(`npm install expo@latest`,{projectRoot}).finally(()=>{
23
- let i = -1;
24
- const next = ()=>{
25
- return exec(`npx expo install ${filteredDeps.join(" ")}`,{projectRoot});
26
- i++;
27
- if(i>= filteredDeps.length) return Promise.resolve();
28
- const script = filteredDeps[i];
29
- return exec(`npx expo install ${script}`,{projectRoot}).finally(next);
30
- }
31
- next().finally((i)=>{
32
- //exec(`npm install`,{projectRoot}).finally(()=>{
27
+ exec(`npm install @fto-consult/expo-ui@latest expo@latest`,{projectRoot}).finally(()=>{
28
+ exec(`npx expo install ${filteredDeps.join(" ")}`,{projectRoot}).finally((i)=>{
29
+ (new Promise((resolve)=>{
30
+ devDependencies.length ? exec(`npm uninstall ${devDependencies.join(" ")}`,{projectRoot}).finally(()=>{
31
+ exec(`npm install -D ${devDependencies.join(" ")}`,{projectRoot}).finally(resolve);
32
+ }) : resolve({});
33
+ })).finally(()=>{
33
34
  const newPackageJS = JSON.parse(fs.readFileSync(mainJSONPath));
34
35
  let hasChanged = false;
35
36
  if(newPackageJS?.dependencies && typeof newPackageJS?.dependencies =="object"){
@@ -51,6 +52,7 @@ if(fs.existsSync(mainJSONPath)){
51
52
  }
52
53
  }
53
54
  //})
55
+ })
54
56
  });
55
57
  })
56
58
  } else {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fto-consult/expo-ui",
3
- "version": "8.50.10",
3
+ "version": "8.51.1",
4
4
  "description": "Bibliothèque de composants UI Expo,react-native",
5
5
  "react-native-paper-doc": "https://github.com/callstack/react-native-paper/tree/main/docs/docs/guides",
6
6
  "scripts": {
@@ -47,7 +47,7 @@
47
47
  "delete-node-modules": "rimraf ./**/node_modules",
48
48
  "dev": "npx expo start --no-dev --minify -c",
49
49
  "modifier-url-remote-git": "git remote set-url origin 'https://borispipo@github.com/borispipo/smart-eneo.git'",
50
- "update": "npm i @fto-consult/common@latest @fto-consult/node-utils@latest react-native-web react-native-big-list@latest apexcharts@latest file-saver@latest google-libphonenumber@latest react-native-iphone-x-helper@latest react-native-mime-types@latest react-native-paper@latest react-native-paper-dates@latest react-virtuoso@latest tippy.js@latest xlsx@latest && npm run update-apexchart && npm run find-licenses"
50
+ "update": "npm i @fto-consult/common@latest react-native-web react-native-big-list@latest apexcharts@latest file-saver@latest google-libphonenumber@latest react-native-iphone-x-helper@latest react-native-mime-types@latest react-native-paper@latest react-native-paper-dates@latest react-virtuoso@latest tippy.js@latest xlsx@latest && npm run update-apexchart && npm run find-licenses && npm i -D @fto-consult/node-utils@latest"
51
51
  },
52
52
  "bin": {
53
53
  "expo-ui": "bin/index.js"
@@ -70,9 +70,7 @@
70
70
  "@emotion/react": "^11.11.1",
71
71
  "@faker-js/faker": "^8.0.2",
72
72
  "@fto-consult/common": "^4.36.0",
73
- "@fto-consult/node-utils": "^1.7.1",
74
73
  "apexcharts": "^3.47.0",
75
- "crypto-browserify": "^3.12.0",
76
74
  "file-saver": "^2.0.5",
77
75
  "google-libphonenumber": "^3.2.34",
78
76
  "html2canvas": "^1.4.1",
@@ -91,17 +89,19 @@
91
89
  "react-virtuoso": "^4.7.2",
92
90
  "readable-stream": "^4.5.2",
93
91
  "sanitize-filename": "^1.6.3",
94
- "sharp-cli": "^2.1.0",
95
- "stream-browserify": "^3.0.0",
96
92
  "tippy.js": "^6.3.7",
97
- "vm": "^0.1.0",
98
93
  "xlsx": "^0.18.5"
99
94
  },
100
95
  "devDependencies": {
101
96
  "@babel/plugin-proposal-export-namespace-from": "^7.18.9",
102
97
  "@expo/metro-config": "~0.17.1",
103
98
  "@expo/webpack-config": "^19.0.1",
99
+ "@fto-consult/node-utils": "^1.7.1",
104
100
  "babel-plugin-inline-dotenv": "^1.7.0",
105
- "babel-plugin-module-resolver": "^5.0.0"
101
+ "babel-plugin-module-resolver": "^5.0.0",
102
+ "crypto-browserify": "^3.12.0",
103
+ "sharp-cli": "^2.1.1",
104
+ "stream-browserify": "^3.0.0",
105
+ "vm": "^0.1.0"
106
106
  }
107
107
  }