@fto-consult/expo-ui 7.24.3 → 8.0.0

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 +13 -4
  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,getDependencyVersion,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}){
@@ -109,12 +109,14 @@ const createAPPJSONFile = (projectRoot,{name,version})=>{
109
109
  writeFile(gP,gitignore);
110
110
  } catch{};
111
111
  }
112
+ appSheme = name? sanitizeFileName(name).replace(/ /g, '') : null;
112
113
  const appJSONPath = path.join(projectRoot,"app.json");
113
114
  if(!fs.existsSync(appJSONPath)){
114
115
  writeFile(appJSONPath,`
115
116
  {
116
117
  "expo": {
117
118
  "name": "${name}",
119
+ ${appSheme ? `"scheme": "${appSheme}"`:""}
118
120
  "slug": "${name.toLowerCase().replace(/\s\s+/g, '-')}",
119
121
  "version":"${version}",
120
122
  "orientation": "portrait",
@@ -148,9 +150,16 @@ const createAPPJSONFile = (projectRoot,{name,version})=>{
148
150
  }
149
151
  `)
150
152
  } else {
151
- const appJSON = require(`${appJSONPath}`);
152
- appJSON.version = version;
153
- writeFile(appJSONPath,JSON.stringify(appJSON,null, 2));
153
+ const appJSONManager = JSONFileManager(appJSONPath);
154
+ if(appSheme && !appJSONManager.hasKey("expo.scheme")){
155
+ appJSONManager.set({
156
+ "expo": {
157
+ "scheme":appSheme
158
+ },
159
+ });
160
+ }
161
+ appJSONManager.set({version})
162
+ appJSONManager.save();
154
163
  }
155
164
  return fs.existsSync(appJSONPath);
156
165
  }
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.0",
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
  }