zmp-cli 3.15.6 → 3.15.8

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 (225) hide show
  1. package/README.md +37 -0
  2. package/build/index.js +1 -184
  3. package/config/index.js +1 -44
  4. package/create/index.js +1 -230
  5. package/create/utils/generate-app-config.js +1 -34
  6. package/create/utils/generate-npm-scripts.js +1 -26
  7. package/create/utils/get-options.js +1 -204
  8. package/create/utils/npm-scripts.js +1 -62
  9. package/deploy/index.js +1 -149
  10. package/deploy/utils/get-options.js +1 -69
  11. package/deploy/utils/request-upload.js +1 -34
  12. package/deploy/utils/upload-app.js +1 -82
  13. package/index.js +1 -319
  14. package/login/index.js +1 -169
  15. package/login/utils/get-options.js +1 -58
  16. package/login/utils/zalo-login.js +1 -32
  17. package/migrate/icons/update-icon-v3.js +1 -19
  18. package/migrate/index.js +1 -60
  19. package/migrate/utils/get-options.js +1 -46
  20. package/migrate/utils/migrate-react.js +1 -33
  21. package/package.json +13 -40
  22. package/start/frame/index.html +264 -254
  23. package/start/index.js +1 -382
  24. package/sync/index-to-app-config.js +1 -146
  25. package/sync/index.js +1 -55
  26. package/utils/axios.js +1 -15
  27. package/utils/check-update.js +1 -53
  28. package/utils/constants.js +1 -20
  29. package/utils/env.js +1 -39
  30. package/utils/error.js +1 -16
  31. package/utils/find-files-by-ext.js +1 -27
  32. package/utils/find-free-port.js +1 -11
  33. package/utils/fs-extra.js +1 -90
  34. package/utils/generate-pages-map.js +1 -17
  35. package/utils/get-app-info.js +1 -22
  36. package/utils/get-current-project.js +1 -25
  37. package/utils/get-ip.js +1 -19
  38. package/utils/log.js +1 -19
  39. package/utils/node-blob.js +1 -106
  40. package/utils/resumable.d.js +1 -0
  41. package/utils/resumable.js +1 -1204
  42. package/utils/spinner.js +1 -25
  43. package/utils/tunnel.js +1 -36
  44. package/.editorconfig +0 -15
  45. package/.eslintignore +0 -8
  46. package/.eslintrc.js +0 -10
  47. package/.vscode/launch.json +0 -23
  48. package/LICENSE +0 -21
  49. package/README.git.md +0 -37
  50. package/assets/index.js +0 -147
  51. package/build/dist/index.dev.js +0 -217
  52. package/config/dist/index.dev.js +0 -48
  53. package/create/init-zmp-ui.js +0 -216
  54. package/create/templates/app-parameters.js +0 -33
  55. package/create/templates/common/css/icons.css +0 -60
  56. package/create/templates/common/icons/512x512.png +0 -0
  57. package/create/templates/common/icons/apple-touch-icon.png +0 -0
  58. package/create/templates/common/icons/favicon.png +0 -0
  59. package/create/templates/common/postcss.config.js +0 -5
  60. package/create/templates/common/splash-2732x2732.png +0 -0
  61. package/create/templates/common/tailwind/postcss.config.js +0 -5
  62. package/create/templates/common/tailwind/tailwind.config.js +0 -9
  63. package/create/templates/common/tailwind/tailwind.css +0 -3
  64. package/create/templates/common/webpack/build.js +0 -41
  65. package/create/templates/copy-assets.js +0 -158
  66. package/create/templates/core/babel.config.js +0 -11
  67. package/create/templates/core/copy-assets.js +0 -83
  68. package/create/templates/core/generate-home-page.js +0 -143
  69. package/create/templates/core/generate-root.js +0 -283
  70. package/create/templates/core/generate-routes.js +0 -155
  71. package/create/templates/core/generate-scripts.js +0 -94
  72. package/create/templates/core/pages/404.html +0 -20
  73. package/create/templates/core/pages/about.html +0 -26
  74. package/create/templates/core/pages/catalog.html +0 -40
  75. package/create/templates/core/pages/dynamic-route.html +0 -115
  76. package/create/templates/core/pages/form.html +0 -258
  77. package/create/templates/core/pages/left-page-1.html +0 -24
  78. package/create/templates/core/pages/left-page-2.html +0 -23
  79. package/create/templates/core/pages/product.html +0 -36
  80. package/create/templates/core/pages/request-and-load.html +0 -35
  81. package/create/templates/core/pages/settings.html +0 -252
  82. package/create/templates/create-folders.js +0 -30
  83. package/create/templates/dist/generate-styles.dev.js +0 -46
  84. package/create/templates/generate-config-xml.js +0 -18
  85. package/create/templates/generate-index.js +0 -49
  86. package/create/templates/generate-manifest.js +0 -49
  87. package/create/templates/generate-recoil.js +0 -56
  88. package/create/templates/generate-routes.js +0 -16
  89. package/create/templates/generate-scripts.js +0 -16
  90. package/create/templates/generate-service-worker.js +0 -126
  91. package/create/templates/generate-store.js +0 -88
  92. package/create/templates/generate-styles.js +0 -110
  93. package/create/templates/generate-webpack-config.js +0 -335
  94. package/create/templates/generate-zmp-custom.js +0 -81
  95. package/create/templates/react/babel.config.js +0 -12
  96. package/create/templates/react/components/app-items.jsx +0 -44
  97. package/create/templates/react/components/navbar-back.jsx +0 -25
  98. package/create/templates/react/components/user-card.jsx +0 -18
  99. package/create/templates/react/copy-assets.js +0 -85
  100. package/create/templates/react/dist/generate-scripts.dev.js +0 -23
  101. package/create/templates/react/generate-home-page.js +0 -111
  102. package/create/templates/react/generate-root.js +0 -84
  103. package/create/templates/react/generate-routes.js +0 -16
  104. package/create/templates/react/generate-scripts.js +0 -68
  105. package/create/templates/react/pages/404.js +0 -27
  106. package/create/templates/react/pages/about.js +0 -52
  107. package/create/templates/react/pages/catalog.js +0 -112
  108. package/create/templates/react/pages/dynamic-route.js +0 -80
  109. package/create/templates/react/pages/form.js +0 -152
  110. package/create/templates/react/pages/index copy.js +0 -17
  111. package/create/templates/react/pages/index.js +0 -17
  112. package/create/templates/react/pages/settings.js +0 -76
  113. package/create/templates/react/pages/user.js +0 -56
  114. package/create/templates/react/vite.config.js +0 -11
  115. package/create/templates/react-typescript/_tsconfig.json +0 -33
  116. package/create/templates/react-typescript/components/app-items.js +0 -53
  117. package/create/templates/react-typescript/components/index.js +0 -9
  118. package/create/templates/react-typescript/components/navbar-back.js +0 -40
  119. package/create/templates/react-typescript/components/user-card.js +0 -32
  120. package/create/templates/react-typescript/copy-assets.js +0 -94
  121. package/create/templates/react-typescript/dist/generate-scripts.dev.js +0 -23
  122. package/create/templates/react-typescript/generate-home-page.js +0 -113
  123. package/create/templates/react-typescript/generate-root.js +0 -81
  124. package/create/templates/react-typescript/generate-routes.js +0 -12
  125. package/create/templates/react-typescript/generate-scripts.js +0 -67
  126. package/create/templates/react-typescript/pages/404.js +0 -27
  127. package/create/templates/react-typescript/pages/about.js +0 -52
  128. package/create/templates/react-typescript/pages/catalog.js +0 -112
  129. package/create/templates/react-typescript/pages/dynamic-route.js +0 -80
  130. package/create/templates/react-typescript/pages/form.js +0 -152
  131. package/create/templates/react-typescript/pages/index.js +0 -17
  132. package/create/templates/react-typescript/pages/settings.js +0 -76
  133. package/create/templates/react-typescript/pages/user.js +0 -56
  134. package/create/templates/react-typescript/vite.config.js +0 -21
  135. package/create/templates/svelte/babel.config.js +0 -10
  136. package/create/templates/svelte/copy-assets.js +0 -47
  137. package/create/templates/svelte/generate-home-page.js +0 -158
  138. package/create/templates/svelte/generate-root.js +0 -235
  139. package/create/templates/svelte/generate-routes.js +0 -91
  140. package/create/templates/svelte/generate-scripts.js +0 -47
  141. package/create/templates/svelte/pages/404.svelte +0 -10
  142. package/create/templates/svelte/pages/about.svelte +0 -16
  143. package/create/templates/svelte/pages/catalog.svelte +0 -31
  144. package/create/templates/svelte/pages/dynamic-route.svelte +0 -34
  145. package/create/templates/svelte/pages/form.svelte +0 -175
  146. package/create/templates/svelte/pages/left-page-1.svelte +0 -13
  147. package/create/templates/svelte/pages/left-page-2.svelte +0 -12
  148. package/create/templates/svelte/pages/product.svelte +0 -21
  149. package/create/templates/svelte/pages/request-and-load.svelte +0 -21
  150. package/create/templates/svelte/pages/settings.svelte +0 -175
  151. package/create/templates/vue/babel.config.js +0 -10
  152. package/create/templates/vue/components/header.vue +0 -28
  153. package/create/templates/vue/components/sun-and-moon.vue +0 -34
  154. package/create/templates/vue/copy-assets.js +0 -67
  155. package/create/templates/vue/generate-home-page.js +0 -56
  156. package/create/templates/vue/generate-root.js +0 -50
  157. package/create/templates/vue/generate-routes.js +0 -7
  158. package/create/templates/vue/generate-scripts.js +0 -63
  159. package/create/templates/vue/global-components.d.ts +0 -121
  160. package/create/templates/vue/icons/moon.svg +0 -3
  161. package/create/templates/vue/icons/sun.svg +0 -3
  162. package/create/templates/vue/pages/404.vue +0 -12
  163. package/create/templates/vue/pages/about.vue +0 -15
  164. package/create/templates/vue/pages/catalog.vue +0 -39
  165. package/create/templates/vue/pages/dynamic-route.vue +0 -34
  166. package/create/templates/vue/pages/form.vue +0 -162
  167. package/create/templates/vue/pages/left-page-1.vue +0 -14
  168. package/create/templates/vue/pages/left-page-2.vue +0 -11
  169. package/create/templates/vue/pages/product.vue +0 -31
  170. package/create/templates/vue/pages/request-and-load.vue +0 -25
  171. package/create/templates/vue/pages/settings.vue +0 -18
  172. package/create/templates/vue/vite.config.js +0 -11
  173. package/create/templates/zaui/_tsconfig.json +0 -33
  174. package/create/templates/zaui/babel.config.js +0 -12
  175. package/create/templates/zaui/components/user-card.jsx +0 -16
  176. package/create/templates/zaui/copy-assets.js +0 -90
  177. package/create/templates/zaui/generate-home-page.js +0 -117
  178. package/create/templates/zaui/generate-root.js +0 -53
  179. package/create/templates/zaui/generate-routes.js +0 -10
  180. package/create/templates/zaui/generate-scripts.js +0 -39
  181. package/create/templates/zaui/generate-user-card.js +0 -55
  182. package/create/templates/zaui/pages/about.js +0 -129
  183. package/create/templates/zaui/pages/form.js +0 -123
  184. package/create/templates/zaui/pages/index.js +0 -9
  185. package/create/templates/zaui/pages/user.js +0 -109
  186. package/create/templates/zaui/vite.config.js +0 -11
  187. package/create/utils/colors.js +0 -94
  188. package/create/utils/dist/get-options.dev.js +0 -277
  189. package/create/utils/generate-gitignore.js +0 -43
  190. package/create/utils/generate-package-json.js +0 -132
  191. package/create/utils/generate-readme.js +0 -28
  192. package/create/utils/indent.js +0 -31
  193. package/create/utils/string.js +0 -13
  194. package/create/utils/styles-extension.js +0 -9
  195. package/create/utils/template-if.js +0 -9
  196. package/deploy/dist/index.dev.js +0 -227
  197. package/deploy/utils/dist/request-upload.dev.js +0 -62
  198. package/deploy/utils/dist/upload-app.dev.js +0 -113
  199. package/dist/bundle.js +0 -1
  200. package/dist/index.dev.js +0 -352
  201. package/jsconfig.json +0 -8
  202. package/login/dist/index.dev.js +0 -223
  203. package/login/utils/dist/zalo-login.dev.js +0 -41
  204. package/screenshots/wellcome.jpg +0 -0
  205. package/show-qr-app/assets/css/style.css +0 -87
  206. package/show-qr-app/assets/js/qrcode.min.js +0 -1
  207. package/show-qr-app/index.html +0 -57
  208. package/show-qr-app/package.json +0 -14
  209. package/start/dist/index.dev.js +0 -312
  210. package/start/generate-hr-config.js +0 -59
  211. package/ui/server.js +0 -194
  212. package/ui/www/css/app.css +0 -1
  213. package/ui/www/css/app.css.map +0 -1
  214. package/ui/www/fonts/ZMPIcons-Regular.eot +0 -0
  215. package/ui/www/fonts/ZMPIcons-Regular.ttf +0 -0
  216. package/ui/www/fonts/ZMPIcons-Regular.woff +0 -0
  217. package/ui/www/fonts/ZMPIcons-Regular.woff2 +0 -0
  218. package/ui/www/images/logo.png +0 -0
  219. package/ui/www/index.html +0 -1
  220. package/ui/www/js/app.js +0 -3
  221. package/ui/www/js/app.js.LICENSE.txt +0 -20
  222. package/ui/www/js/app.js.map +0 -1
  223. package/ui/www/static/icons/apple-touch-icon.png +0 -0
  224. package/ui/www/static/icons/favicon.png +0 -0
  225. package/utils/dist/get-app-info.dev.js +0 -54
@@ -1,113 +0,0 @@
1
- const indent = require('../../utils/indent');
2
- module.exports = (options) => {
3
- const { name, template, theming, stateManagement } = options;
4
- const { fillBars } = theming;
5
-
6
- let description = '';
7
- if (template === 'single-view' || template === 'blank') {
8
- description = `
9
- <p>Here is your blank ZMP app. Let's see what we have here.</p>
10
- `;
11
- }
12
- if (template === 'split-view') {
13
- description = `
14
- <p>This is an example of split view application layout, commonly used on tablets. The main approach of such kind of layout is that you can see different views at the same time.</p>
15
-
16
- <p>Each view may have different layout, different navbar type (dynamic, fixed or static) or without navbar.</p>
17
-
18
- <p>The fun thing is that you can easily control one view from another without any line of JavaScript just using "data-view" attribute on links.</p>
19
- `;
20
- }
21
- if (template === 'tabs') {
22
- description = `
23
- <p>Here is your blank ZMP app with tabs-layout. Let's see what we have here.</p>
24
- `;
25
- }
26
-
27
- return indent(
28
- 0,
29
- `
30
- import React from 'react';
31
- ${
32
- template === 'blank'
33
- ? `
34
- import {
35
- Page,
36
- Navbar,
37
- NavTitleLarge,
38
- Card
39
- } from 'zmp-framework/react';
40
- `.trim()
41
- : `
42
- import {
43
- Page,
44
- Navbar,
45
- NavTitleLarge,
46
- List,
47
- ListItem,
48
- Card,
49
- ${stateManagement === 'store' ? 'useStore,' : ''}
50
- } from 'zmp-framework/react';${stateManagement === 'recoil' ? `
51
- import { useRecoilValue } from 'recoil';
52
- import { userState } from '../state';` : ''}
53
- import AppItems from '../components/app-items';
54
- import UserCard from '../components/user-card';
55
- `.trim()
56
- }
57
-
58
- const HomePage = () => {
59
- ${template !== 'blank' ? (stateManagement === 'recoil' ? "const user = useRecoilValue(userState);" : "const user = useStore('user');") : ''}
60
- return (
61
- <Page name="home" ${template === 'tabs' ? '' : 'navbarLarge'}>${template !== 'tabs' ? `
62
- {/* Top Navbar */}
63
- <Navbar ${fillBars ? 'fill' : ''}>
64
- <NavTitleLarge>${name}</NavTitleLarge>
65
- </Navbar>`
66
- : ''
67
- }
68
- {/* Page content */}
69
- <Card inset>
70
- ${description.trim()}
71
- </Card>
72
- ${
73
- template !== 'blank' && template !== 'tabs'
74
- ? `
75
- {/* User info */}
76
- <List>
77
- <ListItem link="/user/">
78
- <UserCard user={user} />
79
- </ListItem>
80
- </List>
81
-
82
- {/* Grid apps */}
83
- <AppItems />
84
-
85
- {/* Route */}
86
- <List>
87
- <ListItem title="Dynamic (Component) Route" link="/dynamic-route/?blog=45&post=125&foo=bar" />
88
- <ListItem title="Default Route (404)" link="/something-that-doesnt-exist" />
89
- <ListItem title="About" link="/about/" />
90
- </List>
91
- `.trim()
92
- : ''
93
- }${template === 'tabs' ? `
94
- {/* Grid apps */}
95
- <AppItems />
96
-
97
- {/* Route */}
98
- <List>
99
- <ListItem title="Dynamic (Component) Route" link="/dynamic-route/?blog=45&post=125&foo=bar" />
100
- <ListItem title="Default Route (404)" link="/something-that-doesnt-exist" />
101
- <ListItem title="About" link="/about/" />
102
- </List>
103
- `.trim()
104
- : ''
105
- }
106
- </Page>
107
- );
108
- }
109
-
110
- export default HomePage;
111
- `
112
- ).trim();
113
- };
@@ -1,81 +0,0 @@
1
- const templateIf = require('../../utils/template-if');
2
- const indent = require('../../utils/indent');
3
- const appParameters = require('../app-parameters');
4
-
5
- module.exports = (options) => {
6
- const { theming, template, stateManagement } = options;
7
- // Views
8
- let views = '';
9
- if (
10
- template === 'single-view' ||
11
- template === 'split-view' ||
12
- template === 'blank'
13
- ) {
14
- views = indent(
15
- 0,
16
- `
17
- {/* Your main view, should have "view-main" class */}
18
- <View main className="safe-areas" url="/" />
19
- `
20
- ).trim();
21
- }
22
- if (template === 'tabs') {
23
- views = indent(
24
- 0,
25
- `
26
- {/* TabView container */}
27
- <TabView className="safe-areas">
28
- {/* Tabbar for switching Tab*/}
29
- <Tabbar bottom id="app-tab-bar">
30
- <Link tabLink="#view-home" iconZMP="zi-home" tabLinkActive>
31
- Home
32
- </Link>
33
- <Link tabLink="#view-catalog" iconZMP="zi-list-1">
34
- Catalog
35
- </Link>
36
- <Link tabLink="#view-settings" iconZMP="zi-setting">
37
- Settings
38
- </Link>
39
- </Tabbar>
40
-
41
- <View id="view-home" main tab tabActive url="/" />
42
- <View id="view-catalog" name="catalog" tab url="/catalog/" />
43
- <View id="view-settings" name="settings" tab url="/settings/" />
44
- </TabView>
45
- `
46
- );
47
- }
48
-
49
- return indent(
50
- 0,
51
- `
52
- import React from 'react';
53
- ${['blank', 'single-view'].indexOf(template) >= 0
54
- ? `
55
- import { App, View } from 'zmp-framework/react';
56
- `.trim()
57
- : `
58
- import { App, TabView, View, Tabbar, Link } from 'zmp-framework/react';
59
- `.trim()}
60
- ${templateIf(stateManagement === 'recoil', () => `import { RecoilRoot } from 'recoil';`, () => `import store from '../store';`)}
61
-
62
- const MyApp = () => {
63
- // ZMP Parameters
64
- const zmpparams = {
65
- ${indent(8, appParameters(options))}
66
- };
67
-
68
- ${`
69
- return (${stateManagement === 'recoil' ? `
70
- <RecoilRoot>` : ''}
71
- ${indent(stateManagement === 'recoil' ? 2 : 0, `<App {...zmpparams} ${theming.darkTheme ? 'themeDark' : ''}>`)}
72
- ${indent(stateManagement === 'recoil' ? 12 : 10, views)}
73
- ${indent(stateManagement === 'recoil' ? 2 : 0, `</App>`)}${stateManagement === 'recoil' ? `
74
- </RecoilRoot>` : ''}
75
- );
76
- `.trim()}
77
- }
78
- export default MyApp;
79
- `
80
- ).trim();
81
- };
@@ -1,12 +0,0 @@
1
- module.exports = (options) => {
2
- const { template } = options;
3
-
4
- if (template === 'blank') {
5
- return [];
6
- }
7
- const routes = ['/user', '/form', '/dynamic-route', '/about', '/404'];
8
- if (template === 'tabs') {
9
- routes.push(...['/catalog', '/settings']);
10
- }
11
- return routes;
12
- };
@@ -1,67 +0,0 @@
1
- const templateIf = require('../../utils/template-if');
2
- const indent = require('../../utils/indent');
3
- const stylesExtension = require('../../utils/styles-extension');
4
-
5
- module.exports = (options) => {
6
- const { cssPreProcessor, theming, customBuild, includeTailwind } = options;
7
- let scripts = '';
8
-
9
- scripts += indent(
10
- 0,
11
- `
12
- // Import React and ReactDOM
13
- import React from 'react';
14
- import { createRoot } from 'react-dom/client';
15
-
16
- // Import ZMP
17
- import ZMP from '${
18
- customBuild ? './zmp-custom.js' : 'zmp-framework/core/lite-bundle'
19
- }';
20
-
21
- // Import ZMP-React Plugin
22
- import ZMPReact from 'zmp-framework/react';${includeTailwind ? `
23
-
24
- // Import tailwind styles
25
- import './css/tailwind.css';` : ''}
26
-
27
- // Import ZMP Styles
28
- ${templateIf(
29
- customBuild,
30
- () => `
31
- import './css/zmp-custom.less';
32
- `,
33
- () => `
34
- import 'zmp-framework/${
35
- theming.useUiKits ? 'zmp-bundle.min.css' : 'zmp.min.css'
36
- }';
37
- `
38
- )}
39
-
40
- // Import Icons and App Custom Styles
41
- ${templateIf(
42
- theming.iconFonts,
43
- () => `
44
- import './css/icons.css';
45
- `
46
- )}
47
- import './css/app.${stylesExtension(cssPreProcessor)}';
48
-
49
- // Import App Component
50
- import App from './components/app';
51
- import appConfig from '../app-config.json';
52
-
53
- if (!(window as any).APP_CONFIG) {
54
- (window as any).APP_CONFIG = appConfig
55
- }
56
-
57
- // Init ZMP React Plugin
58
- ZMP.use(ZMPReact)
59
-
60
- // Mount React App
61
- const root = createRoot(document.getElementById('app')!);
62
- root.render(React.createElement(App));
63
- `
64
- );
65
-
66
- return scripts.trim();
67
- };
@@ -1,27 +0,0 @@
1
- const indent = require('../../../utils/indent');
2
-
3
- // eslint-disable-next-line no-unused-vars
4
- module.exports = (options) => {
5
- return indent(
6
- 0,
7
- `
8
- import React from 'react';
9
- import { Page, Card, Title, Box } from 'zmp-framework/react';
10
- import NavbarBack from '../components/navbar-back';
11
-
12
- const NotFoundPage = () => (
13
- <Page>
14
- <NavbarBack title="Not found" />
15
- <Box mt="2">
16
- <Card inset>
17
- <Title>Sorry</Title>
18
- <p>Requested content not found.</p>
19
- </Card>
20
- </Box>
21
- </Page>
22
- );
23
-
24
- export default NotFoundPage;
25
- `
26
- ).trim();
27
- };
@@ -1,52 +0,0 @@
1
- const indent = require('../../../utils/indent');
2
-
3
- // eslint-disable-next-line no-unused-vars
4
- module.exports = (options) => {
5
- return indent(
6
- 0,
7
- `
8
- import React from 'react'
9
- import { Actions, ActionsButton, ActionsGroup, ActionsLabel, Button, Card, Page, Box } from 'zmp-framework/react';
10
- import NavbarBack from '../components/navbar-back';
11
-
12
- const AboutPage = (props) => {
13
- const [actionSheetOpened, setActionSheetOpened] = React.useState(false);
14
-
15
- return (
16
- <Page name="about">
17
- <NavbarBack title="About" />
18
- <Box mt="2">
19
- <Card inset title="About My App">
20
- <p>This is a demo ZMP App!</p>
21
- </Card>
22
- </Box>
23
- <Box mb="4">
24
- <Button
25
- typeName="secondary"
26
- responsive
27
- onClick={() => setActionSheetOpened(true)}
28
- >
29
- Back
30
- </Button>
31
- </Box>
32
- <Actions
33
- opened={actionSheetOpened}
34
- onActionsClosed={() => setActionSheetOpened(false)}
35
- id="actions-two-groups"
36
- >
37
- <ActionsGroup>
38
- <ActionsLabel>Are you sure?</ActionsLabel>
39
- <ActionsButton onClick={() => props.zmprouter.back()}>Navigate back</ActionsButton>
40
- </ActionsGroup>
41
- <ActionsGroup>
42
- <ActionsButton>Cancel</ActionsButton>
43
- </ActionsGroup>
44
- </Actions>
45
- </Page>
46
- )
47
- }
48
-
49
- export default AboutPage;
50
- `
51
- ).trim();
52
- };
@@ -1,112 +0,0 @@
1
- const indent = require('../../../utils/indent');
2
-
3
- // eslint-disable-next-line no-unused-vars
4
- module.exports = (options) => {
5
- if (options.stateManagement === 'recoil') {
6
- return indent(
7
- 0,
8
- `
9
- import React from "react";
10
- import { useRecoilState } from 'recoil';
11
- import { Page, Title, List, ListItem, Box, Button } from 'zmp-framework/react';
12
- import { productsState } from '../state';
13
-
14
- const CatalogPage = () => {
15
- const [products, setProducts] = useRecoilState(productsState)
16
-
17
- const addProduct = () => {
18
- setProducts(p => [
19
- ...p,
20
- {
21
- id: '4',
22
- title: 'Apple iPhone 12',
23
- description: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nisi tempora similique reiciendis, error nesciunt vero, blanditiis pariatur dolor, minima sed sapiente rerum, dolorem corrupti hic modi praesentium unde saepe perspiciatis.'
24
- }
25
- ])
26
- }
27
-
28
- return (
29
- <Page name="catalog">
30
- <Box m="0" p="4">
31
- <Title>Catalog</Title>
32
- <List>
33
- {products.map((product) => (
34
- <ListItem
35
- key={product.id}
36
- title={product.title}
37
- link={\`/product/\${product.id}/\`}
38
- />
39
- ))}
40
- </List>
41
- {products.length === 3 && (
42
- <Box>
43
- <Button responsive typeName="secondary" onClick={addProduct}>
44
- Add Product
45
- </Button>
46
- </Box>
47
- )}
48
- </Box>
49
- </Page>
50
- );
51
- };
52
-
53
- export default CatalogPage;
54
- `
55
- ).trim();
56
- }
57
- return indent(
58
- 0,
59
- `
60
- import React from "react";
61
- import {
62
- Page,
63
- Title,
64
- List,
65
- ListItem,
66
- Box,
67
- Button,
68
- useStore
69
- } from "zmp-framework/react";
70
- import store from "../store";
71
-
72
- const CatalogPage = () => {
73
- const products = useStore("products");
74
-
75
- const addProduct = () => {
76
- store.dispatch("addProduct", {
77
- id: "4",
78
- title: "Apple iPhone 12",
79
- description:
80
- "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nisi tempora similique reiciendis, error nesciunt vero, blanditiis pariatur dolor, minima sed sapiente rerum, dolorem corrupti hic modi praesentium unde saepe perspiciatis."
81
- });
82
- };
83
-
84
- return (
85
- <Page name="catalog">
86
- <Box m="0" p="4">
87
- <Title>Catalog</Title>
88
- <List>
89
- {products.map((product) => (
90
- <ListItem
91
- key={product.id}
92
- title={product.title}
93
- link={\`/product/\${product.id}/\`}
94
- />
95
- ))}
96
- </List>
97
- {products.length === 3 && (
98
- <Box>
99
- <Button responsive typeName="secondary" onClick={addProduct}>
100
- Add Product
101
- </Button>
102
- </Box>
103
- )}
104
- </Box>
105
- </Page>
106
- );
107
- };
108
-
109
- export default CatalogPage;
110
- `
111
- ).trim();
112
- };
@@ -1,80 +0,0 @@
1
- const indent = require('../../../utils/indent');
2
-
3
- // eslint-disable-next-line no-unused-vars
4
- module.exports = (options) => {
5
- return indent(
6
- 0,
7
- `
8
- import React from 'react'
9
- import { Button, Box, List, ListItem, Page } from 'zmp-framework/react'
10
- import NavbarBack from '../components/navbar-back';
11
-
12
- const DymanicRoutePage = (props) => {
13
- const { zmproute, zmprouter } = props;
14
-
15
- return (
16
- <Page name="dynamic-route">
17
- <NavbarBack title="Dynamic (Component) Route" />
18
- <List>
19
- <ListItem>
20
- <div>
21
- <div><strong>Route</strong></div>
22
- <div>{zmproute.route.path}</div>
23
- </div>
24
- </ListItem>
25
- <ListItem>
26
- <div>
27
- <div><strong>Url</strong></div>
28
- <div>{zmproute.url}</div>
29
- </div>
30
- </ListItem>
31
- <ListItem>
32
- <div>
33
- <div><strong>Path</strong></div>
34
- <div>{zmproute.path}</div>
35
- </div>
36
- </ListItem>
37
- <ListItem>
38
- <div>
39
- <div><strong>Hash</strong></div>
40
- <div>{zmproute.hash}</div>
41
- </div>
42
- </ListItem>
43
- <ListItem>
44
- <div>
45
- <div><strong>Params</strong></div>
46
- <div>
47
- <ul>
48
- {Object.keys(zmproute.params).map(key => (<li key={key}>{key}: {zmproute.params[key]}</li>))}
49
- </ul>
50
- </div>
51
- </div>
52
- </ListItem>
53
- <ListItem>
54
- <div>
55
- <div><strong>Query</strong></div>
56
- <div>
57
- <ul>
58
- {Object.keys(zmproute.query).map(key => (<li key={key}>{key}: {zmproute.query[key]}</li>))}
59
- </ul>
60
- </div>
61
- </div>
62
- </ListItem>
63
- </List>
64
- <Box px={4} mb={4}>
65
- <Button
66
- typeName="primary"
67
- responsive
68
- onClick={() => zmprouter.back()}
69
- >
70
- Go back via Router API
71
- </Button>
72
- </Box>
73
- </Page>
74
- )
75
- }
76
-
77
- export default DymanicRoutePage;
78
- `
79
- ).trim();
80
- };