@fto-consult/expo-ui 7.24.3 → 8.0.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.
Files changed (47) hide show
  1. package/App.js +6 -3
  2. package/app.json +1 -0
  3. package/bin/create-app.js +14 -11
  4. package/copy-env-file.js +1 -1
  5. package/docs/navigation/drawerItems/index.js +16 -0
  6. package/docs/navigation/drawerSections.js +14 -0
  7. package/docs/screens/Datagrid/{Datagrid.js → index.js} +1 -1
  8. package/docs/screens/index.js +1 -0
  9. package/package.json +141 -139
  10. package/src/App.js +1 -1
  11. package/src/AppEntry/index.js +1 -0
  12. package/src/components/AppBar/BackAction.js +46 -0
  13. package/src/components/AppBar/Content.js +3 -3
  14. package/src/components/AppBar/index.js +8 -3
  15. package/src/components/Datagrid/Accordion/index.js +1 -0
  16. package/src/components/Datagrid/Common/Common.js +1 -1
  17. package/src/components/Datagrid/Test/index.js +1 -1
  18. package/src/components/Drawer/DrawerItems/index.js +1 -1
  19. package/src/components/Dropdown/index.js +30 -8
  20. package/src/components/ErrorBoundary/ErrorMessage.js +5 -5
  21. package/src/components/Form/Fields/SelectTableData/Component.js +2 -2
  22. package/src/components/Image/index.js +13 -15
  23. package/src/components/Link/index.js +2 -2
  24. package/src/components/SplashScreen/index.js +9 -1
  25. package/src/components/TableLink/index.js +2 -1
  26. package/src/components/TouchableRipple/index.js +38 -0
  27. package/src/components/TouchableRipple/index.web.js +22 -0
  28. package/src/context/Provider.js +0 -1
  29. package/src/layouts/AppBar/index.js +1 -1
  30. package/src/layouts/DatabaseStatistics/DatabaseStatistic.js +6 -11
  31. package/src/layouts/DatabaseStatistics/index.js +10 -4
  32. package/src/layouts/Screen/TableData.js +15 -5
  33. package/src/media/camera.js +13 -1
  34. package/src/media/camera.native.js +135 -2
  35. package/src/media/file-system/utils/FileSaver.native.js +62 -25
  36. package/src/media/file-system/utils/native/index.js +11 -1
  37. package/src/media/file-system/utils/web/index.js +21 -1
  38. package/src/media/index.js +27 -35
  39. package/src/media/utils.js +27 -0
  40. package/src/navigation/Drawer/items/index.js +1 -1
  41. package/src/navigation/animationTypes.js +48 -0
  42. package/src/navigation/index.js +11 -7
  43. package/src/screens/Auth/Profile.js +12 -0
  44. package/src/screens/Help/openLibraries.js +9 -9
  45. package/webpack.config.js +5 -0
  46. package/docs/drawerItems/index.js +0 -17
  47. package/docs/drawerItems/introduction.js +0 -8
package/App.js CHANGED
@@ -1,11 +1,12 @@
1
1
  import AppEntry from "./src";
2
2
  import {disableAuth} from "$cauth";
3
-
3
+ import { registerRootComponent } from 'expo';
4
4
  export default function MainExpoApp(props){
5
5
  return <AppEntry
6
6
  navigation={{
7
7
  screens : require("./docs/screens").default,
8
- drawerItems:require("./docs/drawerItems").default,
8
+ drawerItems:require("./docs/navigation/drawerItems").default,
9
+ drawerSections : require("./docs/navigation/drawerSections")?.default,
9
10
  }}
10
11
  init ={({appConfig})=>{
11
12
  disableAuth();
@@ -13,4 +14,6 @@ export default function MainExpoApp(props){
13
14
  }}
14
15
  {...props}
15
16
  />
16
- }
17
+ }
18
+
19
+ registerRootComponent(MainExpoApp);
package/app.json CHANGED
@@ -2,6 +2,7 @@
2
2
  "expo": {
3
3
  "name": "expo-ui",
4
4
  "slug": "fto-consult-expo-ui",
5
+ "scheme": "fto-consult-expo-ui",
5
6
  "version": "1.0.0",
6
7
  "orientation": "portrait",
7
8
  "web": {
package/bin/create-app.js CHANGED
@@ -1,4 +1,4 @@
1
- const {exec,thowError,copy,writeFile,createDirSync,getDependencyVersion} = require("./utils");
1
+ const {exec,thowError,copy,writeFile,createDirSync,FILE:{sanitizeFileName},JSONFileManager} = require("./utils");
2
2
  const fs = require("fs"), path = require("path");
3
3
  const getAppDir = x=>path.resolve(__dirname,"create-app");
4
4
  module.exports = function(appName,{projectRoot:root}){
@@ -21,8 +21,6 @@ module.exports = function(appName,{projectRoot:root}){
21
21
  ...defaultDevDependencies,
22
22
  ...(devDependencies && typeof devDependencies ==='object'? devDependencies : {}),
23
23
  };
24
- const reactNativeVersion = getDependencyVersion(packageObj,"react-native");
25
- const expoVersion = getDependencyVersion(packageObj,"expo");
26
24
  const euModule = "@fto-consult/expo-ui";
27
25
  let hasUpdateDeps = false;
28
26
  console.log("creating application name "+name);
@@ -42,17 +40,13 @@ module.exports = function(appName,{projectRoot:root}){
42
40
  "build-ios" : "eas build --platform ios",
43
41
  },
44
42
  "dependencies" : {
45
- [euModule] : "latest",
46
- //"expo" : expoVersion,
47
- //"react-native" : reactNativeVersion,
43
+ [euModule] : "latest"
48
44
  },
49
45
  devDependencies : devDeps
50
46
  }
51
47
  } else {
52
48
  mainPackage.devDependencies = typeof mainPackage.devDependencies =='object' && mainPackage.devDependencies || {};
53
49
  mainPackage.dependencies = typeof mainPackage.dependencies ==="object" && mainPackage.dependencies || {};
54
- mainPackage.dependencies["react-native"] = reactNativeVersion;
55
- mainPackage.dependencies["expo"] = expoVersion;
56
50
  mainPackage.main = mainPackage.main || "node_modules/expo/AppEntry.js";
57
51
  for(let i in devDeps){
58
52
  if(!(i in mainPackage.devDependencies)){
@@ -109,12 +103,14 @@ const createAPPJSONFile = (projectRoot,{name,version})=>{
109
103
  writeFile(gP,gitignore);
110
104
  } catch{};
111
105
  }
106
+ appSheme = name? sanitizeFileName(name).replace(/ /g, '') : null;
112
107
  const appJSONPath = path.join(projectRoot,"app.json");
113
108
  if(!fs.existsSync(appJSONPath)){
114
109
  writeFile(appJSONPath,`
115
110
  {
116
111
  "expo": {
117
112
  "name": "${name}",
113
+ ${appSheme ? `"scheme": "${appSheme}"`:""}
118
114
  "slug": "${name.toLowerCase().replace(/\s\s+/g, '-')}",
119
115
  "version":"${version}",
120
116
  "orientation": "portrait",
@@ -148,9 +144,16 @@ const createAPPJSONFile = (projectRoot,{name,version})=>{
148
144
  }
149
145
  `)
150
146
  } else {
151
- const appJSON = require(`${appJSONPath}`);
152
- appJSON.version = version;
153
- writeFile(appJSONPath,JSON.stringify(appJSON,null, 2));
147
+ const appJSONManager = JSONFileManager(appJSONPath);
148
+ if(appSheme && !appJSONManager.hasKey("expo.scheme")){
149
+ appJSONManager.set({
150
+ "expo": {
151
+ "scheme":appSheme
152
+ },
153
+ });
154
+ }
155
+ appJSONManager.set({version})
156
+ appJSONManager.save();
154
157
  }
155
158
  return fs.existsSync(appJSONPath);
156
159
  }
package/copy-env-file.js CHANGED
@@ -10,7 +10,7 @@ module.exports = (projectRoot,forceCreate)=>{
10
10
  const pWithEnv = path.resolve(projectRoot,`.env.${env}`);
11
11
  const environmentPath = fs.existsSync(pWithEnv) ? pWithEnv : path.resolve(projectRoot,".env");
12
12
  const localEnv = path.resolve(__dirname,".env");
13
- if(environmentPath && fs.existsSync(environmentPath)){
13
+ if(environmentPath && fs.existsSync(environmentPath) && environmentPath !== localEnv){
14
14
  // File ".env" will be created or overwritten by default.
15
15
  try {
16
16
  copy(environmentPath, localEnv,{overwrite:true});
@@ -0,0 +1,16 @@
1
+ import Introdoction from "../../screens/Introduction";
2
+ import Datagrid from "../../screens/Datagrid";
3
+ export default [
4
+ {
5
+ text : "Introduction",
6
+ icon : "alpha-i-box",
7
+ drawerSection : "introduction",
8
+ routeName : Introdoction.screenName,
9
+ },
10
+ {
11
+ text : "Datagrid",
12
+ icon : "table",
13
+ drawerSection : "components",
14
+ routeName : Datagrid.screenName,
15
+ }
16
+ ]
@@ -0,0 +1,14 @@
1
+ export default {
2
+ main : {
3
+ code : "main",
4
+ label : "Vue générale"
5
+ },
6
+ introduction : {
7
+ label :"Introduction",
8
+ code : "introduction",
9
+ },
10
+ components : {
11
+ label : "Composants",
12
+ code : "components",
13
+ }
14
+ }
@@ -8,5 +8,5 @@ export default function DatagridScreen(props){
8
8
  </Screen>
9
9
  };
10
10
 
11
- DatagridScreen.screenName = "Datagrid";
11
+ DatagridScreen.screenName = "datagrid/test";
12
12
  DatagridScreen.authRequired = false;
@@ -4,4 +4,5 @@ import Introduction from "./Introduction"
4
4
  export default [
5
5
  Home,
6
6
  Introduction,
7
+ require("./Datagrid").default,
7
8
  ]
package/package.json CHANGED
@@ -1,139 +1,141 @@
1
- {
2
- "name": "@fto-consult/expo-ui",
3
- "version": "7.24.3",
4
- "description": "Bibliothèque de composants UI Expo,react-native",
5
- "scripts": {
6
- "clear-npx-cache": "npx clear-npx-cache",
7
- "publish1": "npm publish --access=public",
8
- "unpublish": "npm -f unpublish @fto-consult/expo-ui",
9
- "build-web": "",
10
- "start": "npx expo start --dev --no-minify",
11
- "start-d": "npx expo start -c --no-dev --no-minify",
12
- "start-p": "npm run start-d",
13
- "expo-start-client": "npx expo start --dev --no-minify --dev-client",
14
- "start-m": "npx expo start - c--dev--no -minify",
15
- "android": "npx expo start --android -c",
16
- "ios": "npx expo start --ios",
17
- "web": "npx expo start --web",
18
- "web-c": "npx expo start --web -c",
19
- "eject": "expo eject",
20
- "emulator": "npm run android-emulator",
21
- "web-server": "npx serve web-build",
22
- "build-android": "eas build --clear-cache -p android --profile preview",
23
- "build-android-local": "eas build --platform android --local",
24
- "build-android-dist": "eas build --clear-cache -p android",
25
- "build-ios": "eas build --clear-cache -p ios --profile preview",
26
- "build-ios-dist": "eas build --clear-cache -p ios",
27
- "install-apk": "adb -s emulator-5554 install myapp.apk",
28
- "android-emulator": "emulator -avd EMULATOR",
29
- "flipper": "npx cross-env METRO_SERVER_PORT=19000 E:\\Studies\\react-native\\debugger\\Flipper-win\\Flipper.exe",
30
- "test:build": "electron-webpack && electron-builder --dir -c.compression=store -c.mac.identity=null",
31
- "compile-electron": "webpack --env platform=electron",
32
- "compile-electron-p": "webpack --config ./electron/webpack.config.js --mode=production",
33
- "electron": "electron ./electron",
34
- "logcat": "adb -d logcat com.ftc.apps.salite1:E > errors.txt",
35
- "logcat-export": "adb -d logcat com.ftc.apps.salite1 *:S > logcat.txt",
36
- "electron-c": "npm run compile-electron && npm run electron",
37
- "electron-p": "npm run compile-electron-p && npm run electron",
38
- "update-app-version": "node ./update-app-version.js",
39
- "find-licenses": "node ./find-licenses.js",
40
- "fix-dependencies": "expo-cli doctor --fix-dependencies",
41
- "expo-fix": "npx expo install --fix",
42
- "update-apexchart": "node ./bin/update-appex-chart.js",
43
- "update-pdfmake": "node ./bin/update-pdfmake.js",
44
- "test-bin": "node ./bin/index.js",
45
- "update-appexchart": "npm run update-apexchart",
46
- "delete-node-modules": "rimraf ./**/node_modules",
47
- "dev": "npx expo start --no-dev --minify -c",
48
- "modifier-url-remote-git": "git remote set-url origin 'https://borispipo@github.com/borispipo/smart-eneo.git'",
49
- "update": "npm i @fto-consult/node-utils@latest pdfmake@latest expo @emotion/native@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-navigation/stack react-native-blob-util react-native-iphone-x-helper@latest react-native-mime-types@latest react-native-paper@5 react-native-paper-dates@latest @react-navigation/native@latest @react-navigation/native-stack@latest react-virtuoso@latest tippy.js@latest websql@latest xlsx@latest react-native-web@latest react-dom@latest && npx expo install --fix && npm run update-apexchart && npm run update-pdfmake && npm run find-licenses"
50
- },
51
- "bin": {
52
- "expo-ui": "./bin/index.js"
53
- },
54
- "repository": {
55
- "type": "git",
56
- "url": "git+https://github.com/borispipo/expo-ui.git"
57
- },
58
- "keywords": [
59
- "Expo",
60
- "React-Native"
61
- ],
62
- "author": "Boris Fouomene",
63
- "license": "ISC",
64
- "bugs": {
65
- "url": "https://github.com/borispipo/expo-ui/issues"
66
- },
67
- "homepage": "https://github.com/borispipo/expo-ui#readme",
68
- "dependencies": {
69
- "@emotion/native": "^11.11.0",
70
- "@emotion/react": "^11.11.1",
71
- "@expo/html-elements": "^0.5.1",
72
- "@expo/vector-icons": "^13.0.0",
73
- "@faker-js/faker": "^8.0.2",
74
- "@fto-consult/common": "^4.7.25",
75
- "@fto-consult/node-utils": "^1.4.7",
76
- "@pchmn/expo-material3-theme": "^1.3.2",
77
- "@react-native-async-storage/async-storage": "1.18.2",
78
- "@react-native-community/datetimepicker": "7.2.0",
79
- "@react-native-community/netinfo": "9.3.10",
80
- "@react-native/assets-registry": "^0.72.0",
81
- "@react-navigation/native": "^6.1.9",
82
- "@react-navigation/native-stack": "^6.9.17",
83
- "@react-navigation/stack": "^6.3.20",
84
- "@shopify/flash-list": "1.4.3",
85
- "apexcharts": "^3.45.1",
86
- "commander": "^11.1.0",
87
- "expo": "^49.0.21",
88
- "expo-camera": "~13.4.4",
89
- "expo-clipboard": "~4.3.1",
90
- "expo-font": "~11.4.0",
91
- "expo-image-picker": "~14.3.2",
92
- "expo-linking": "~5.0.2",
93
- "expo-sharing": "~11.5.0",
94
- "expo-sqlite": "~11.3.3",
95
- "expo-status-bar": "~1.6.0",
96
- "expo-system-ui": "~2.4.0",
97
- "expo-web-browser": "~12.3.2",
98
- "file-saver": "^2.0.5",
99
- "fs-extra": "^11.2.0",
100
- "google-libphonenumber": "^3.2.34",
101
- "htmlparser2-without-node-native": "^3.9.2",
102
- "is-plain-obj": "^4.1.0",
103
- "js-base64": "^3.7.5",
104
- "pdfmake": "^0.2.9",
105
- "process": "^0.11.10",
106
- "prop-types": "^15.8.1",
107
- "react": "^18.2.0",
108
- "react-content-loader": "^6.2.1",
109
- "react-dom": "^18.2.0",
110
- "react-native": "0.72.6",
111
- "react-native-big-list": "^1.6.1",
112
- "react-native-blob-util": "^0.18.6",
113
- "react-native-get-random-values": "~1.9.0",
114
- "react-native-iphone-x-helper": "^1.3.1",
115
- "react-native-mime-types": "^2.4.0",
116
- "react-native-paper": "^5.12.1",
117
- "react-native-paper-dates": "^0.21.7",
118
- "react-native-reanimated": "~3.3.0",
119
- "react-native-safe-area-context": "4.6.3",
120
- "react-native-screens": "~3.22.0",
121
- "react-native-svg": "13.9.0",
122
- "react-native-web": "^0.19.10",
123
- "react-native-webview": "13.2.2",
124
- "react-virtuoso": "^4.6.2",
125
- "sanitize-filename": "^1.6.3",
126
- "sharp-cli": "^2.1.0",
127
- "tippy.js": "^6.3.7",
128
- "uninstall": "^0.0.0",
129
- "websql": "^2.0.3",
130
- "xlsx": "^0.18.5"
131
- },
132
- "devDependencies": {
133
- "@babel/plugin-proposal-export-namespace-from": "^7.18.9",
134
- "@expo/metro-config": "^0.10.7",
135
- "@expo/webpack-config": "^19.0.0",
136
- "babel-plugin-inline-dotenv": "^1.7.0",
137
- "babel-plugin-module-resolver": "^5.0.0"
138
- }
139
- }
1
+ {
2
+ "name": "@fto-consult/expo-ui",
3
+ "version": "8.0.1",
4
+ "description": "Bibliothèque de composants UI Expo,react-native",
5
+ "scripts": {
6
+ "clear-npx-cache": "npx clear-npx-cache",
7
+ "publish1": "npm publish --access=public",
8
+ "unpublish": "npm -f unpublish @fto-consult/expo-ui",
9
+ "build-web": "",
10
+ "start": "npx expo start --dev --no-minify",
11
+ "start-d": "npx expo start -c --no-dev --no-minify",
12
+ "start-p": "npm run start-d",
13
+ "expo-start-client": "npx expo start --dev --no-minify --dev-client",
14
+ "start-m": "npx expo start - c--dev--no -minify",
15
+ "android": "npx expo start --android -c",
16
+ "ios": "npx expo start --ios",
17
+ "web": "npx expo start --web",
18
+ "web-c": "npx expo start --web -c",
19
+ "eject": "expo eject",
20
+ "emulator": "npm run android-emulator",
21
+ "web-server": "npx serve web-build",
22
+ "build-android": "eas build --clear-cache -p android --profile preview",
23
+ "build-android-local": "eas build --platform android --local",
24
+ "build-android-dist": "eas build --clear-cache -p android",
25
+ "build-ios": "eas build --clear-cache -p ios --profile preview",
26
+ "build-ios-dist": "eas build --clear-cache -p ios",
27
+ "install-apk": "adb -s emulator-5554 install myapp.apk",
28
+ "android-emulator": "emulator -avd EMULATOR",
29
+ "flipper": "npx cross-env METRO_SERVER_PORT=19000 E:\\Studies\\react-native\\debugger\\Flipper-win\\Flipper.exe",
30
+ "test:build": "electron-webpack && electron-builder --dir -c.compression=store -c.mac.identity=null",
31
+ "compile-electron": "webpack --env platform=electron",
32
+ "compile-electron-p": "webpack --config ./electron/webpack.config.js --mode=production",
33
+ "electron": "electron ./electron",
34
+ "logcat": "adb -d logcat com.ftc.apps.salite1:E > errors.txt",
35
+ "logcat-export": "adb -d logcat com.ftc.apps.salite1 *:S > logcat.txt",
36
+ "electron-c": "npm run compile-electron && npm run electron",
37
+ "electron-p": "npm run compile-electron-p && npm run electron",
38
+ "update-app-version": "node ./update-app-version.js",
39
+ "find-licenses": "node ./find-licenses.js",
40
+ "fix-dependencies": "expo-cli doctor --fix-dependencies",
41
+ "expo-fix": "npx expo install --fix",
42
+ "update-apexchart": "node ./bin/update-appex-chart.js",
43
+ "test-bin": "node ./bin/index.js",
44
+ "update-appexchart": "npm run update-apexchart",
45
+ "delete-node-modules": "rimraf ./**/node_modules",
46
+ "dev": "npx expo start --no-dev --minify -c",
47
+ "modifier-url-remote-git": "git remote set-url origin 'https://borispipo@github.com/borispipo/smart-eneo.git'",
48
+ "update": "npm i @fto-consult/node-utils@latest expo @emotion/native@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-navigation/stack react-native-blob-util react-native-iphone-x-helper@latest react-native-mime-types@latest react-native-paper@5 react-native-paper-dates@latest @react-navigation/native@latest @react-navigation/native-stack@latest react-virtuoso@latest tippy.js@latest websql@latest xlsx@latest react-native-web@latest react-dom@latest && npx expo install --fix && npm run update-apexchart && npm run find-licenses"
49
+ },
50
+ "bin": {
51
+ "expo-ui": "./bin/index.js"
52
+ },
53
+ "repository": {
54
+ "type": "git",
55
+ "url": "git+https://github.com/borispipo/expo-ui.git"
56
+ },
57
+ "keywords": [
58
+ "Expo",
59
+ "React-Native"
60
+ ],
61
+ "author": "Boris Fouomene",
62
+ "license": "ISC",
63
+ "bugs": {
64
+ "url": "https://github.com/borispipo/expo-ui/issues"
65
+ },
66
+ "homepage": "https://github.com/borispipo/expo-ui#readme",
67
+ "dependencies": {
68
+ "@emotion/native": "^11.11.0",
69
+ "@emotion/react": "^11.11.1",
70
+ "@expo/html-elements": "^0.5.1",
71
+ "@expo/vector-icons": "^14.0.0",
72
+ "@faker-js/faker": "^8.0.2",
73
+ "@fto-consult/common": "^4.8.33",
74
+ "@fto-consult/node-utils": "^1.4.7",
75
+ "@pchmn/expo-material3-theme": "^1.3.2",
76
+ "@react-native-async-storage/async-storage": "1.21.0",
77
+ "@react-native-community/datetimepicker": "7.6.1",
78
+ "@react-native-community/netinfo": "11.1.0",
79
+ "@react-native/assets-registry": "^0.72.0",
80
+ "@react-navigation/native": "^6.1.9",
81
+ "@react-navigation/native-stack": "^6.9.17",
82
+ "@react-navigation/stack": "^6.3.20",
83
+ "@shopify/flash-list": "1.6.3",
84
+ "apexcharts": "^3.45.1",
85
+ "commander": "^11.1.0",
86
+ "crypto-browserify": "^3.12.0",
87
+ "expo": "^50.0.2",
88
+ "expo-camera": "~14.0.1",
89
+ "expo-clipboard": "~5.0.1",
90
+ "expo-font": "~11.10.2",
91
+ "expo-image-picker": "~14.7.1",
92
+ "expo-linking": "~6.2.2",
93
+ "expo-sharing": "~11.10.0",
94
+ "expo-sqlite": "~13.2.1",
95
+ "expo-status-bar": "~1.11.1",
96
+ "expo-system-ui": "~2.9.3",
97
+ "expo-web-browser": "~12.8.1",
98
+ "file-saver": "^2.0.5",
99
+ "fs-extra": "^11.2.0",
100
+ "google-libphonenumber": "^3.2.34",
101
+ "htmlparser2-without-node-native": "^3.9.2",
102
+ "is-plain-obj": "^4.1.0",
103
+ "js-base64": "^3.7.5",
104
+ "process": "^0.11.10",
105
+ "prop-types": "^15.8.1",
106
+ "react": "^18.2.0",
107
+ "react-content-loader": "^6.2.1",
108
+ "react-dom": "^18.2.0",
109
+ "react-native": "0.73.2",
110
+ "react-native-big-list": "^1.6.1",
111
+ "react-native-blob-util": "^0.18.6",
112
+ "react-native-gesture-handler": "~2.14.0",
113
+ "react-native-get-random-values": "~1.8.0",
114
+ "react-native-iphone-x-helper": "^1.3.1",
115
+ "react-native-mime-types": "^2.4.0",
116
+ "react-native-paper": "^5.12.1",
117
+ "react-native-paper-dates": "^0.21.7",
118
+ "react-native-reanimated": "~3.6.0",
119
+ "react-native-safe-area-context": "4.8.2",
120
+ "react-native-screens": "~3.29.0",
121
+ "react-native-svg": "14.1.0",
122
+ "react-native-web": "^0.19.10",
123
+ "react-native-webview": "13.6.4",
124
+ "react-virtuoso": "^4.6.2",
125
+ "readable-stream": "^4.5.2",
126
+ "sanitize-filename": "^1.6.3",
127
+ "sharp-cli": "^2.1.0",
128
+ "stream-browserify": "^3.0.0",
129
+ "tippy.js": "^6.3.7",
130
+ "uninstall": "^0.0.0",
131
+ "websql": "^2.0.3",
132
+ "xlsx": "^0.18.5"
133
+ },
134
+ "devDependencies": {
135
+ "@babel/plugin-proposal-export-namespace-from": "^7.18.9",
136
+ "@expo/metro-config": "~0.17.1",
137
+ "@expo/webpack-config": "^19.0.1",
138
+ "babel-plugin-inline-dotenv": "^1.7.0",
139
+ "babel-plugin-module-resolver": "^5.0.0"
140
+ }
141
+ }
package/src/App.js CHANGED
@@ -14,7 +14,7 @@ import App from "./AppEntry";
14
14
  */
15
15
 
16
16
  export default function ExpoUIAppEntryProvider({children,init,...rest}){
17
- return <Provider {...rest}>
17
+ return <Provider {...rest}>
18
18
  <App init={init} children={children}/>
19
19
  </Provider>
20
20
  }
@@ -41,6 +41,7 @@ import Logo from "$ecomponents/Logo";
41
41
  import AppEntryRootView from "./RootView";
42
42
  import { SafeAreaProvider } from 'react-native-safe-area-context';
43
43
  import {isNeutralino} from "$cplatform";
44
+ import "react-native-gesture-handler";
44
45
 
45
46
  let MAX_BACK_COUNT = 1;
46
47
  let countBack = 0;
@@ -0,0 +1,46 @@
1
+ import Icon from "$ecomponents/Icon";
2
+ import { forwardRef } from 'react';
3
+ import PropTypes from "prop-types";
4
+ import {isIos} from "$cplatform";
5
+
6
+ const AppbarBackAction = forwardRef(
7
+ ({ accessibilityLabel = 'Back', ...rest }, ref) => {
8
+ console.log("will render ",rest);
9
+ return (
10
+ <Icon
11
+ accessibilityLabel={accessibilityLabel}
12
+ icon={isIos()?"chevron-left":"arrow-left"}
13
+ {...rest}
14
+ isLeading
15
+ ref={ref}
16
+ />
17
+ );
18
+ }
19
+ );
20
+
21
+ AppbarBackAction.displayName = 'AppBar.BackAction';
22
+
23
+ export default AppbarBackAction;
24
+
25
+ AppbarBackAction.propTypes = {
26
+ /**
27
+ * Custom color for back icon.
28
+ */
29
+ color: PropTypes.string,
30
+ /**
31
+ * Optional icon size.
32
+ */
33
+ size : PropTypes.number,
34
+ /**
35
+ * Whether the button is disabled. A disabled button is greyed out and `onPress` is not called on touch.
36
+ */
37
+ disabled : PropTypes.bool,
38
+ /**
39
+ * Accessibility label for the button. This is read by the screen reader when the user taps the button.
40
+ */
41
+ accessibilityLabel : PropTypes.string,
42
+ /**
43
+ * Function to execute on press.
44
+ */
45
+ onPress : PropTypes.func,
46
+ }
@@ -2,7 +2,7 @@ import * as React from 'react';
2
2
  import {
3
3
  Platform,
4
4
  StyleSheet,
5
- TouchableWithoutFeedback,
5
+ Pressable,
6
6
  View,
7
7
  } from 'react-native';
8
8
  import Label from "$ecomponents/Label";
@@ -83,7 +83,7 @@ const AppbarContent = ({
83
83
 
84
84
  if (onPress) {
85
85
  return (
86
- <TouchableWithoutFeedback
86
+ <Pressable
87
87
  testID={testID+"_Container"}
88
88
  {...containerProps}
89
89
  role={touchableRole}
@@ -93,7 +93,7 @@ const AppbarContent = ({
93
93
  disabled={disabled}
94
94
  >
95
95
  {content}
96
- </TouchableWithoutFeedback>
96
+ </Pressable>
97
97
  );
98
98
  }
99
99
  return content;
@@ -3,7 +3,8 @@ import { Appbar} from 'react-native-paper';
3
3
  import {defaultObj,defaultVal,defaultStr} from "$cutils";
4
4
  import APP from "$capp/instance"
5
5
  import {isSplitedActions,renderSplitedActions,splitActions,TITLE_FONT_SIZE,getThemeColors} from "./utils";
6
- import theme,{Colors,flattenStyle} from "$theme";
6
+ import {Colors} from "$theme";
7
+ import BackAction from "./BackAction";
7
8
  import {StyleSheet} from "react-native";
8
9
  import {goBack as navGoBack,useNavigation,useRoute,useScreenOptions } from "$cnavigation";
9
10
  import PropTypes from "prop-types";
@@ -71,7 +72,7 @@ const AppBarComponent = React.forwardRef((props,ref)=> {
71
72
  backActionProps = Object.assign({},backActionProps);
72
73
  backActionProps.testID = defaultStr(backActionProps.testID)+"_AppBarBackAction";
73
74
 
74
- let BackActionComponent = backAction === false ? null : React.isComponent(backAction)? backAction : back ? Appbar.BackAction : Icon ;
75
+ let BackActionComponent = backAction === false ? null : React.isComponent(backAction)? backAction : back ? BackAction : Icon ;
75
76
  backActionProps.color = backActionProps.color && Colors.isValid(backActionProps.color)? backActionProps.color : anchorStyle.color;
76
77
 
77
78
  let {onPress} = backActionProps;
@@ -188,4 +189,8 @@ AppBarComponent.propTypes = {
188
189
  backActionProps : PropTypes.oneOfType([
189
190
  PropTypes.object,
190
191
  ]),
191
- }
192
+ }
193
+
194
+ export {BackAction};
195
+
196
+ AppBarComponent.BackAction = BackAction;
@@ -151,6 +151,7 @@ const DatagridFactory = (Factory)=>{
151
151
  color = {color}
152
152
  image = {src?true :false}
153
153
  suffix = {avatarSuffix}
154
+ {...avatarProps}
154
155
  >{avatarContent}</Avatar>
155
156
  }
156
157
  }
@@ -207,7 +207,7 @@ export default class CommonDatagridComponent extends AppComponent {
207
207
  let hasFoundDisplayTypes = false;
208
208
  const pArgs = {context:this,data,props:this.props}
209
209
  const perm = checkPerm(renderChartIsAllowed,pArgs)
210
- const ePDFIsAllowed = checkPerm(exportToPDFIsAllowed,pArgs);
210
+ const ePDFIsAllowed = !isMobileNative() && checkPerm(exportToPDFIsAllowed,pArgs);
211
211
  const eExcelISAllowed = checkPerm(exportToExcelIsAllowed,pArgs);
212
212
  const renderSectionListIsAllowedP = checkPerm(renderSectionListIsAllowed,pArgs);
213
213
  if(typeof customCheckPerms =='function'){
@@ -8,7 +8,7 @@ import { faker } from '@faker-js/faker';
8
8
  import DateLib from "$clib/date";
9
9
  export default function TestDatagridComponent({count,...props}){
10
10
  const data = React.useMemo(()=>{
11
- count = typeof count =='number' && count > 5 ? count : 100;
11
+ count = typeof count =='number' && count > 5 ? count : 10000;
12
12
  return faker.helpers.multiple(createRandomUser, {
13
13
  count,
14
14
  });
@@ -123,7 +123,7 @@ DrawerItemsComponent.propTypes = {
123
123
  const getDefaultProps = function(item){
124
124
  if(!isObj(item)) return null;
125
125
  item.label = defaultVal(item.label,item.text,item["aria-label"]);
126
- item["aria-label"] = defaultVal(item["aria-label"],item.tooltip,item.label);
126
+ item["aria-label"] = defaultStr(item["aria-label"],item.tooltip,item.label);
127
127
  item.title = defaultVal(item.title,item.label);
128
128
  return item;
129
129
  }