zmp-cli 3.15.7 → 3.15.9

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 (184) hide show
  1. package/README.md +97 -1
  2. package/build/index.js +1 -1
  3. package/config/index.js +1 -1
  4. package/create/index.js +1 -1
  5. package/create/utils/generate-app-config.js +1 -1
  6. package/create/utils/generate-npm-scripts.js +1 -1
  7. package/create/utils/get-options.js +1 -1
  8. package/create/utils/npm-scripts.js +1 -1
  9. package/deploy/index.js +1 -1
  10. package/deploy/utils/get-options.js +1 -1
  11. package/deploy/utils/request-upload.js +1 -1
  12. package/deploy/utils/upload-app.js +1 -1
  13. package/index.js +1 -1
  14. package/login/index.js +1 -1
  15. package/login/utils/get-options.js +1 -1
  16. package/login/utils/zalo-login.js +1 -1
  17. package/migrate/icons/update-icon-v3.js +1 -1
  18. package/migrate/index.js +1 -1
  19. package/migrate/utils/get-options.js +1 -1
  20. package/migrate/utils/migrate-react.js +1 -1
  21. package/package.json +3 -2
  22. package/start/frame/index.html +264 -254
  23. package/start/index.js +1 -1
  24. package/sync/index-to-app-config.js +1 -1
  25. package/sync/index.js +1 -1
  26. package/utils/axios.js +1 -1
  27. package/utils/check-update.js +1 -1
  28. package/utils/constants.js +1 -1
  29. package/utils/env.js +1 -1
  30. package/utils/error.js +1 -1
  31. package/utils/find-files-by-ext.js +1 -1
  32. package/utils/find-free-port.js +1 -1
  33. package/utils/fs-extra.js +1 -1
  34. package/utils/generate-pages-map.js +1 -1
  35. package/utils/get-app-info.js +1 -1
  36. package/utils/get-current-project.js +1 -1
  37. package/utils/get-ip.js +1 -1
  38. package/utils/log.js +1 -1
  39. package/utils/node-blob.js +1 -1
  40. package/utils/resumable.d.js +1 -1
  41. package/utils/resumable.js +1 -1
  42. package/utils/spinner.js +1 -1
  43. package/utils/tunnel.js +1 -1
  44. package/create/init-zmp-ui.js +0 -1
  45. package/create/templates/app-parameters.js +0 -17
  46. package/create/templates/common/css/icons.css +0 -60
  47. package/create/templates/common/icons/512x512.png +0 -0
  48. package/create/templates/common/icons/apple-touch-icon.png +0 -0
  49. package/create/templates/common/icons/favicon.png +0 -0
  50. package/create/templates/common/postcss.config.js +0 -5
  51. package/create/templates/common/splash-2732x2732.png +0 -0
  52. package/create/templates/common/tailwind/postcss.config.js +0 -5
  53. package/create/templates/common/tailwind/tailwind.config.js +0 -9
  54. package/create/templates/common/tailwind/tailwind.css +0 -3
  55. package/create/templates/common/webpack/build.js +0 -3
  56. package/create/templates/copy-assets.js +0 -1
  57. package/create/templates/core/babel.config.js +0 -11
  58. package/create/templates/core/copy-assets.js +0 -15
  59. package/create/templates/core/generate-home-page.js +0 -121
  60. package/create/templates/core/generate-root.js +0 -248
  61. package/create/templates/core/generate-routes.js +0 -129
  62. package/create/templates/core/generate-scripts.js +0 -45
  63. package/create/templates/core/pages/404.html +0 -20
  64. package/create/templates/core/pages/about.html +0 -26
  65. package/create/templates/core/pages/catalog.html +0 -40
  66. package/create/templates/core/pages/dynamic-route.html +0 -115
  67. package/create/templates/core/pages/form.html +0 -258
  68. package/create/templates/core/pages/left-page-1.html +0 -24
  69. package/create/templates/core/pages/left-page-2.html +0 -23
  70. package/create/templates/core/pages/product.html +0 -36
  71. package/create/templates/core/pages/request-and-load.html +0 -35
  72. package/create/templates/core/pages/settings.html +0 -252
  73. package/create/templates/create-folders.js +0 -1
  74. package/create/templates/generate-config-xml.js +0 -11
  75. package/create/templates/generate-index.js +0 -24
  76. package/create/templates/generate-manifest.js +0 -1
  77. package/create/templates/generate-recoil.js +0 -44
  78. package/create/templates/generate-routes.js +0 -1
  79. package/create/templates/generate-scripts.js +0 -1
  80. package/create/templates/generate-service-worker.js +0 -120
  81. package/create/templates/generate-store.js +0 -77
  82. package/create/templates/generate-styles.js +0 -56
  83. package/create/templates/generate-webpack-config.js +0 -253
  84. package/create/templates/generate-zmp-custom.js +0 -23
  85. package/create/templates/react/babel.config.js +0 -12
  86. package/create/templates/react/components/app-items.jsx +0 -44
  87. package/create/templates/react/components/navbar-back.jsx +0 -25
  88. package/create/templates/react/components/user-card.jsx +0 -18
  89. package/create/templates/react/copy-assets.js +0 -1
  90. package/create/templates/react/generate-home-page.js +0 -81
  91. package/create/templates/react/generate-root.js +0 -55
  92. package/create/templates/react/generate-routes.js +0 -1
  93. package/create/templates/react/generate-scripts.js +0 -42
  94. package/create/templates/react/pages/404.js +0 -19
  95. package/create/templates/react/pages/about.js +0 -44
  96. package/create/templates/react/pages/catalog.js +0 -98
  97. package/create/templates/react/pages/dynamic-route.js +0 -72
  98. package/create/templates/react/pages/form.js +0 -132
  99. package/create/templates/react/pages/index copy.js +0 -1
  100. package/create/templates/react/pages/index.js +0 -1
  101. package/create/templates/react/pages/settings.js +0 -62
  102. package/create/templates/react/pages/user.js +0 -37
  103. package/create/templates/react/vite.config.js +0 -11
  104. package/create/templates/react-typescript/_tsconfig.json +0 -33
  105. package/create/templates/react-typescript/components/app-items.js +0 -46
  106. package/create/templates/react-typescript/components/index.js +0 -1
  107. package/create/templates/react-typescript/components/navbar-back.js +0 -33
  108. package/create/templates/react-typescript/components/user-card.js +0 -25
  109. package/create/templates/react-typescript/copy-assets.js +0 -1
  110. package/create/templates/react-typescript/generate-home-page.js +0 -81
  111. package/create/templates/react-typescript/generate-root.js +0 -50
  112. package/create/templates/react-typescript/generate-routes.js +0 -1
  113. package/create/templates/react-typescript/generate-scripts.js +0 -42
  114. package/create/templates/react-typescript/pages/404.js +0 -19
  115. package/create/templates/react-typescript/pages/about.js +0 -44
  116. package/create/templates/react-typescript/pages/catalog.js +0 -98
  117. package/create/templates/react-typescript/pages/dynamic-route.js +0 -72
  118. package/create/templates/react-typescript/pages/form.js +0 -132
  119. package/create/templates/react-typescript/pages/index.js +0 -1
  120. package/create/templates/react-typescript/pages/settings.js +0 -62
  121. package/create/templates/react-typescript/pages/user.js +0 -37
  122. package/create/templates/react-typescript/vite.config.js +0 -21
  123. package/create/templates/svelte/babel.config.js +0 -10
  124. package/create/templates/svelte/copy-assets.js +0 -1
  125. package/create/templates/svelte/generate-home-page.js +0 -122
  126. package/create/templates/svelte/generate-root.js +0 -177
  127. package/create/templates/svelte/generate-routes.js +0 -76
  128. package/create/templates/svelte/generate-scripts.js +0 -31
  129. package/create/templates/svelte/pages/404.svelte +0 -10
  130. package/create/templates/svelte/pages/about.svelte +0 -16
  131. package/create/templates/svelte/pages/catalog.svelte +0 -31
  132. package/create/templates/svelte/pages/dynamic-route.svelte +0 -34
  133. package/create/templates/svelte/pages/form.svelte +0 -175
  134. package/create/templates/svelte/pages/left-page-1.svelte +0 -13
  135. package/create/templates/svelte/pages/left-page-2.svelte +0 -12
  136. package/create/templates/svelte/pages/product.svelte +0 -21
  137. package/create/templates/svelte/pages/request-and-load.svelte +0 -21
  138. package/create/templates/svelte/pages/settings.svelte +0 -175
  139. package/create/templates/vue/babel.config.js +0 -10
  140. package/create/templates/vue/components/header.vue +0 -28
  141. package/create/templates/vue/components/sun-and-moon.vue +0 -34
  142. package/create/templates/vue/copy-assets.js +0 -1
  143. package/create/templates/vue/generate-home-page.js +0 -50
  144. package/create/templates/vue/generate-root.js +0 -40
  145. package/create/templates/vue/generate-routes.js +0 -1
  146. package/create/templates/vue/generate-scripts.js +0 -46
  147. package/create/templates/vue/global-components.d.js +0 -1
  148. package/create/templates/vue/global-components.d.ts +0 -121
  149. package/create/templates/vue/icons/moon.svg +0 -3
  150. package/create/templates/vue/icons/sun.svg +0 -3
  151. package/create/templates/vue/pages/404.vue +0 -12
  152. package/create/templates/vue/pages/about.vue +0 -15
  153. package/create/templates/vue/pages/catalog.vue +0 -39
  154. package/create/templates/vue/pages/dynamic-route.vue +0 -34
  155. package/create/templates/vue/pages/form.vue +0 -162
  156. package/create/templates/vue/pages/left-page-1.vue +0 -14
  157. package/create/templates/vue/pages/left-page-2.vue +0 -11
  158. package/create/templates/vue/pages/product.vue +0 -31
  159. package/create/templates/vue/pages/request-and-load.vue +0 -25
  160. package/create/templates/vue/pages/settings.vue +0 -18
  161. package/create/templates/vue/vite.config.js +0 -11
  162. package/create/templates/zaui/_tsconfig.json +0 -33
  163. package/create/templates/zaui/babel.config.js +0 -12
  164. package/create/templates/zaui/components/user-card.jsx +0 -16
  165. package/create/templates/zaui/copy-assets.js +0 -1
  166. package/create/templates/zaui/generate-home-page.js +0 -91
  167. package/create/templates/zaui/generate-root.js +0 -33
  168. package/create/templates/zaui/generate-routes.js +0 -1
  169. package/create/templates/zaui/generate-scripts.js +0 -25
  170. package/create/templates/zaui/generate-user-card.js +0 -40
  171. package/create/templates/zaui/pages/about.js +0 -112
  172. package/create/templates/zaui/pages/form.js +0 -106
  173. package/create/templates/zaui/pages/index.js +0 -1
  174. package/create/templates/zaui/pages/user.js +0 -92
  175. package/create/templates/zaui/vite.config.js +0 -11
  176. package/create/utils/colors.js +0 -1
  177. package/create/utils/generate-gitignore.js +0 -1
  178. package/create/utils/generate-package-json.js +0 -1
  179. package/create/utils/generate-readme.js +0 -1
  180. package/create/utils/indent.js +0 -1
  181. package/create/utils/string.js +0 -1
  182. package/create/utils/styles-extension.js +0 -1
  183. package/create/utils/template-if.js +0 -1
  184. package/start/generate-hr-config.js +0 -1
@@ -1,56 +0,0 @@
1
- "use strict";const e=require("../utils/indent"),{colorThemeCSSProperties:i}=require("../utils/colors");module.exports=t=>{let{template:n,theming:o}=t,{customColor:a,color:r,fillBars:p}=o,l="";if("zmp-ui"===t.package)return`
2
- .page {
3
- padding: 16px 16px 96px 16px;
4
- }
5
-
6
- .section-container {
7
- padding: 16px;
8
- background: #ffffff;
9
- border-radius: 8px;
10
- margin-bottom: 24px;
11
- }
12
- `;if(a&&r){let t=i(`${r}`);t["--zmp-theme-color-rgb"].split(",").map(e=>e.trim()),l+=e(0,`
13
- /* Custom color theme properties */
14
- :root {
15
- ${Object.keys(t).filter(e=>"--zmp-tabbar-fill-link-active-color"!==e&&"--zmp-tabbar-fill-link-active-border-color"!==e).map(e=>`${e}: ${t[e]};`).join("\n ")}
16
- }
17
- :root.theme-dark,:root .theme-dark {
18
- ${Object.keys(t).map(e=>`${e}: ${t[e]};`).join("\n ")}
19
- }
20
- `)}return p&&(l+=e(0,`
21
- /* Invert navigation bars to fill style */
22
- `)),"split-view"===n?l+=e(0,`
23
- /* Left Panel right border when it is visible by breakpoint */
24
- .panel-left.panel-in-breakpoint:before {
25
- position: absolute;
26
- right: 0;
27
- top: 0;
28
- height: 100%;
29
- width: 1px;
30
- background: rgba(0,0,0,0.1);
31
- content: '';
32
- z-index: 6000;
33
- }
34
-
35
- /* Hide navbar link which opens left panel when it is visible by breakpoint */
36
- .panel-left.panel-in-breakpoint ~ .view .navbar .panel-open[data-panel="left"] {
37
- display: none;
38
- }
39
-
40
- /*
41
- Extra borders for main view and left panel for iOS theme when it behaves as panel (before breakpoint size)
42
- */
43
- .ios .panel-left:not(.panel-in-breakpoint).panel-in ~ .view-main:before,
44
- .ios .panel-left:not(.panel-in-breakpoint).panel-closing ~ .view-main:before {
45
- position: absolute;
46
- left: 0;
47
- top: 0;
48
- height: 100%;
49
- width: 1px;
50
- background: rgba(0,0,0,0.1);
51
- content: '';
52
- z-index: 6000;
53
- }
54
- `):l+=e(0,`
55
- /* Your app custom styles here */
56
- `),l.trim()};
@@ -1,253 +0,0 @@
1
- "use strict";const e=require("../utils/indent"),t=require("../utils/template-if");module.exports=s=>{let{framework:r,type:o,webpack:n}=s,a="['.js', '.json']";"vue"===r&&(a="['.js', '.vue', '.json']"),"react"===r&&(a="['.js', '.jsx', '.json']"),"svelte"===r&&(a="['.mjs', '.js', '.svelte', '.json']");let i=!!n.productionSourceMap&&"'source-map'",l=!!n.developmentSourceMap&&"'eval'",u=n.hashAssets?".[hash:6]":"",p=n.inlineAssets?"url-loader":"file-loader",c=n.preserveAssetsPaths;return e(0,`
2
- const webpack = require('webpack');
3
- const CopyWebpackPlugin = require('copy-webpack-plugin');
4
- const HtmlWebpackPlugin = require('html-webpack-plugin');
5
- ${t("vue"===r,()=>`
6
- const { VueLoaderPlugin } = require('vue-loader');
7
- `)}
8
- ${t("react"===r,()=>`
9
- const ReactRefreshWebpackPlugin = require('@pmmmwh/react-refresh-webpack-plugin');
10
- `)}
11
- const MiniCssExtractPlugin = require('mini-css-extract-plugin');
12
- const CssMinimizerPlugin = require('css-minimizer-webpack-plugin');
13
- const TerserPlugin = require('terser-webpack-plugin');
14
- ${t(o.indexOf("pwa")>=0,()=>`
15
- const WorkboxPlugin = require('workbox-webpack-plugin');
16
- `)}
17
- const path = require('path');
18
-
19
- function resolvePath(dir) {
20
- return path.join(__dirname, '..', dir);
21
- }
22
-
23
- const env = process.env.NODE_ENV || 'development';
24
- const target = process.env.TARGET || 'web';
25
-
26
- module.exports = {
27
- mode: env,
28
- target: env === "development" ? "web" : "browserslist",
29
- entry: {
30
- app: './src/js/app.js',
31
- },
32
- output: {
33
- path: resolvePath('www'),
34
- filename: 'js/[name]${u}.js',
35
- chunkFilename: 'js/[name]${u}.js',
36
- publicPath: '',
37
- hotUpdateChunkFilename: 'hot/hot-update.js',
38
- hotUpdateMainFilename: 'hot/hot-update.json',
39
- },
40
- resolve: {
41
- extensions: ${a},
42
- alias: {
43
- '@': resolvePath('src'),
44
- },
45
- ${t("svelte"===r,()=>`
46
- mainFields: ['svelte', 'browser', 'module', 'main']
47
- `)}
48
- },
49
- devtool: env === 'production' ? ${i} : ${l},
50
- devServer: {
51
- hot: true,
52
- open: true,
53
- compress: true,
54
- contentBase: '/www/',
55
- disableHostCheck: true,
56
- historyApiFallback: true,
57
- },
58
- optimization: {
59
- concatenateModules: true,
60
- minimizer: [new TerserPlugin()],
61
- },
62
- module: {
63
- rules: [
64
- {
65
- test: /\\.(mjs|js|jsx)$/,
66
- include: [
67
- resolvePath('src'),
68
- ${t("svelte"===r,()=>`
69
- resolvePath('node_modules/svelte'),
70
- `)}
71
- ],
72
- use: [
73
- {
74
- loader: require.resolve('babel-loader'),
75
- ${t("react"===r,()=>`
76
- options: env === 'development' ? {
77
- plugins: [
78
- require.resolve('react-refresh/babel'),
79
- ]
80
- } : {}
81
- `)}
82
- },
83
- ]
84
- },
85
- ${t("core"===r,()=>`
86
- {
87
- test: /\\.zmp.(html|js)$/,
88
- use: [
89
- 'babel-loader',
90
- 'zmp-loader',
91
- ],
92
- },
93
- `)}
94
- ${t("svelte"===r,()=>`
95
- {
96
- test: /\\.svelte$/,
97
- use: {
98
- loader: 'svelte-loader',
99
- options: {
100
- emitCss: true,
101
- },
102
- },
103
- },
104
- `)}
105
- ${t("vue"===r,()=>`
106
- {
107
- test: /\\.vue$/,
108
- use: 'vue-loader',
109
- },
110
- `)}
111
- {
112
- test: /\\.css$/,
113
- use: [
114
- (env === 'development' ? 'style-loader' : {
115
- loader: MiniCssExtractPlugin.loader,
116
- options: {
117
- publicPath: '../'
118
- }
119
- }),
120
- 'css-loader',
121
- 'postcss-loader',
122
- ],
123
- },
124
- {
125
- test: /\\.styl(us)?$/,
126
- use: [
127
- (env === 'development' ? 'style-loader' : {
128
- loader: MiniCssExtractPlugin.loader,
129
- options: {
130
- publicPath: '../'
131
- }
132
- }),
133
- 'css-loader',
134
- 'postcss-loader',
135
- 'stylus-loader',
136
- ],
137
- },
138
- {
139
- test: /\\.less$/,
140
- use: [
141
- (env === 'development' ? 'style-loader' : {
142
- loader: MiniCssExtractPlugin.loader,
143
- options: {
144
- publicPath: '../'
145
- }
146
- }),
147
- 'css-loader',
148
- 'postcss-loader',
149
- 'less-loader',
150
- ],
151
- },
152
- {
153
- test: /\\.(sa|sc)ss$/,
154
- use: [
155
- (env === 'development' ? 'style-loader' : {
156
- loader: MiniCssExtractPlugin.loader,
157
- options: {
158
- publicPath: '../'
159
- }
160
- }),
161
- 'css-loader',
162
- 'postcss-loader',
163
- 'sass-loader',
164
- ],
165
- },
166
- {
167
- test: /\\.(png|jpe?g|gif|svg)(\\?.*)?$/,
168
- loader: '${p}',
169
- options: {
170
- limit: 10000,
171
- name: '${c?"[path]":"images/"}[name]${u}.[ext]',
172
- ${t(c,()=>`
173
- context: path.resolve(__dirname, '../src'),
174
- `)}
175
- },
176
- type: 'javascript/auto'
177
- },
178
- {
179
- test: /\\.(mp4|webm|ogg|mp3|wav|flac|aac|m4a)(\\?.*)?$/,
180
- loader: '${p}',
181
- options: {
182
- limit: 10000,
183
- name: '${c?"[path]":"media/"}[name]${u}.[ext]',
184
- ${t(c,()=>`
185
- context: path.resolve(__dirname, '../src'),
186
- `)}
187
- },
188
- type: 'javascript/auto'
189
- },
190
- {
191
- test: /\\.(woff2?|eot|ttf|otf)(\\?.*)?$/,
192
- loader: '${p}',
193
- options: {
194
- limit: 10000,
195
- name: '${c?"[path]":"fonts/"}[name]${u}.[ext]',
196
- ${t(c,()=>`
197
- context: path.resolve(__dirname, '../src'),
198
- `)}
199
- },
200
- type: 'javascript/auto'
201
- },
202
- ],
203
- },
204
- plugins: [
205
- new webpack.DefinePlugin({
206
- 'process.env.NODE_ENV': JSON.stringify(env),
207
- 'process.env.TARGET': JSON.stringify(target),
208
- }),
209
- ${t("vue"===r,()=>`
210
- new VueLoaderPlugin(),
211
- `)}
212
- ...(env === 'production' ? [
213
- new CssMinimizerPlugin(),
214
- ] : [
215
- // Development only plugins
216
- new webpack.HotModuleReplacementPlugin(),
217
- ${t("react"===r,()=>"new ReactRefreshWebpackPlugin(),")}
218
- ]),
219
- new HtmlWebpackPlugin({
220
- filename: './index.html',
221
- template: './src/index.html',
222
- inject: true,
223
- minify: env === 'production' ? {
224
- collapseWhitespace: true,
225
- removeComments: true,
226
- removeRedundantAttributes: ${"core"===r?"false":"true"},
227
- removeScriptTypeAttributes: true,
228
- removeStyleLinkTypeAttributes: true,
229
- useShortDoctype: true
230
- } : false,
231
- }),
232
- new MiniCssExtractPlugin({
233
- filename: 'css/[name]${u}.css',
234
- }),
235
- new CopyWebpackPlugin({
236
- patterns: [
237
- {
238
- noErrorOnMissing: true,
239
- from: resolvePath('src/static'),
240
- to: resolvePath('www/static'),
241
- },
242
- ${t(o.indexOf("pwa")>=0,()=>`
243
- {
244
- noErrorOnMissing: true,
245
- from: resolvePath('src/manifest.json'),
246
- to: resolvePath('www/manifest.json'),
247
- },
248
- `)}
249
- ],
250
- }),
251
- ],
252
- };
253
- `).trim()};
@@ -1,23 +0,0 @@
1
- "use strict";const e=require("../utils/indent");module.exports=r=>{let{themes:t=[],rtl:o=!1,lightTheme:i=!0,darkTheme:m=!0,components:s=[]}=r.customBuildConfig||{},n=e=>e.filter(e=>"gauge"!==e&&"area-chart"!==e&&"pie-chart"!==e),{framework:u}=r,p=n(s).map(e=>{let r=e.split("-").map(e=>e[0].toUpperCase()+e.substring(1)).join("");return`import ${r} from 'zmp-framework/core/components/${e}';`}),l=n(s).map(e=>e.split("-").map(e=>e[0].toUpperCase()+e.substring(1)).join("")),a=e(0,`
2
- import ZMP, { request, utils, getDevice, createStore } from '${"core"===u?"zmp-framework/core":"zmp-framework/core/lite"}';
3
- ${p.join("\n ")}
4
-
5
- ZMP.use([
6
- ${l.join(",\n ")}
7
- ]);
8
-
9
- export default ZMP;
10
- export { request, utils, getDevice, createStore };
11
- `),c=s.map(e=>`@import url('../../node_modules/zmp/components/${e}/${e}.less');`);return{styles:e(0,`
12
- & {
13
- @import url('../../node_modules/zmp/zmp.less');
14
- ${c.join("\n ")}
15
-
16
- @includeIosTheme: ${t.indexOf("ios")>=0};
17
- @includeMdTheme: ${t.indexOf("md")>=0};
18
- @includeAuroraTheme: ${t.indexOf("aurora")>=0};
19
- @includeDarkTheme: ${m||!1};
20
- @includeLightTheme: ${i||!1};
21
- @rtl: ${o}
22
- }
23
- `),scripts:a}};
@@ -1,12 +0,0 @@
1
- module.exports = {
2
- presets: [
3
- '@babel/preset-react',
4
- [
5
- '@babel/preset-env',
6
- {
7
- modules: false,
8
- },
9
- ],
10
- ],
11
- plugins: ['@babel/plugin-transform-runtime'],
12
- };
@@ -1,44 +0,0 @@
1
- import React from 'react';
2
- import { Icon, Grid, GridItem, ToastPreloader } from 'zmp-framework/react';
3
-
4
- const AppItems = () => {
5
- const [toastLoading, setToastLoading] = React.useState(false);
6
- const items = [
7
- { icon: 'zi-chat-solid', label: 'Chat' },
8
- { icon: 'zi-photo-solid', label: 'Photo' },
9
- { icon: 'zi-star-solid', label: 'Star' },
10
- { icon: 'zi-more-diamond-solid', label: 'Apps' },
11
- { icon: 'zi-video-solid', label: 'Video' },
12
- { icon: 'zi-shield-solid', label: 'Shield' },
13
- { icon: 'zi-heart-solid', label: 'Heart' },
14
- { icon: 'zi-calendar-solid', label: 'Calendar' },
15
- ]
16
-
17
- const openToastLoading = () => {
18
- setToastLoading(true);
19
- setTimeout(() => {
20
- setToastLoading(false);
21
- }, 2000);
22
- };
23
-
24
- return (
25
- <div>
26
- <ToastPreloader visible={toastLoading} text="Loading..." />
27
- <Grid columns={4}>
28
- {items.map(item => (
29
- <GridItem
30
- label={item.label}
31
- style={{ backgroundColor: 'var(--zmp-color-w300)' }}
32
- key={item.icon}
33
- icon={<Icon zmp={item.icon} />}
34
- onClick={openToastLoading}
35
- />
36
- ))}
37
- </Grid>
38
- </div>
39
- )
40
- }
41
-
42
- AppItems.displayName = 'zmp-app-items'
43
-
44
- export default AppItems
@@ -1,25 +0,0 @@
1
- import React from 'react';
2
- import { Link, Navbar, NavLeft, Icon, NavTitle, NavRight } from 'zmp-framework/react';
3
-
4
- const NavbarBack = ({ title, linkRight, labelRight }) => {
5
- return (
6
- <Navbar>
7
- <NavLeft displayName="zmp-navleft">
8
- <Link className="no-ripple" noLinkClass back>
9
- <Icon zmp="zi-arrow-left" />
10
- </Link>
11
- </NavLeft>
12
- <NavTitle>{title}</NavTitle>
13
- {linkRight && labelRight && (
14
- <NavRight>
15
- <Link href={linkRight} className="no-ripple" noLinkClass>{labelRight}</Link>
16
- </NavRight>
17
- )}
18
- </Navbar>
19
- )
20
- }
21
-
22
- NavbarBack.displayName = 'zmp-navbar';
23
-
24
-
25
- export default NavbarBack;
@@ -1,18 +0,0 @@
1
- import React from 'react';
2
- import { Avatar, Title } from 'zmp-framework/react';
3
-
4
- const UserCard = ({ user }) => {
5
- return (
6
- <div style={{ display: 'flex', width: '100%' }}>
7
- <Avatar story online src={user.avatar.startsWith('http') ? user.avatar : null}>{user.avatar}</Avatar>
8
- <div style={{ marginLeft: 16 }}>
9
- <Title style={{ marginBottom: 0 }}>{user.name}</Title>
10
- <div>{user.id}</div>
11
- </div>
12
- </div>
13
- )
14
- };
15
-
16
- UserCard.displayName = 'zmp-user-card'
17
-
18
- export default UserCard;
@@ -1 +0,0 @@
1
- "use strict";const e=require("path"),o=require("./generate-home-page"),t=require("./generate-root"),s=require("../generate-store"),r=require("../generate-recoil"),n=require("./pages");module.exports=c=>{let a=c.cwd||process.cwd(),{template:p,stateManagement:i}=c,l=[],u=[];return"blank"!==p&&u.push({fileName:"404",content:"copy404"},{fileName:"about",content:"copyAbout"},{fileName:"dynamic-route",content:"copyDynamicRoute"},{fileName:"user",content:"copyUser"},{fileName:"form",content:"copyForm"}),"tabs"===p&&u.push({fileName:"catalog",content:"copyCatalog"},{fileName:"settings",content:"copySettings"}),u.forEach(({fileName:o,content:t})=>{let s=e.resolve(a,"src","pages",`${o}.jsx`);l.push({content:n[t](c),to:s})}),l.push({content:o(c),to:e.resolve(a,"src","pages","index.jsx")}),[..."blank"!==p?["app-items","navbar-back","user-card"]:[]].forEach(o=>{let t=e.resolve(__dirname,"components",`${o}.jsx`),s=e.resolve(a,"src","components",`${o}.jsx`);l.push({from:t,to:s})}),l.push({content:t(c),to:e.resolve(a,"src","components","app.jsx")}),"recoil"===i?l.push({content:r(c),to:e.resolve(a,"src","state.js")}):l.push({content:s(c),to:e.resolve(a,"src","store.js")}),l.push({from:e.resolve(__dirname,"vite.config.js"),to:e.resolve(a,"vite.config.js")}),l};
@@ -1,81 +0,0 @@
1
- "use strict";const t=require("../../utils/indent");module.exports=e=>{let{name:a,template:i,theming:r,stateManagement:o}=e,{fillBars:s}=r,n="";return("single-view"===i||"blank"===i)&&(n=`
2
- <p>Here is your blank ZMP app. Let's see what we have here.</p>
3
- `),"split-view"===i&&(n=`
4
- <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>
5
-
6
- <p>Each view may have different layout, different navbar type (dynamic, fixed or static) or without navbar.</p>
7
-
8
- <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>
9
- `),"tabs"===i&&(n=`
10
- <p>Here is your blank ZMP app with tabs-layout. Let's see what we have here.</p>
11
- `),t(0,`
12
- import React from 'react';
13
- ${"blank"===i?`
14
- import {
15
- Page,
16
- Navbar,
17
- NavTitleLarge,
18
- Card
19
- } from 'zmp-framework/react';
20
- `.trim():`
21
- import {
22
- Page,
23
- Navbar,
24
- NavTitleLarge,
25
- List,
26
- ListItem,
27
- Card,
28
- ${"store"===o?"useStore,":""}
29
- } from 'zmp-framework/react';${"recoil"===o?`
30
- import { useRecoilValue } from 'recoil';
31
- import { userState } from '../state';`:""}
32
- import AppItems from '../components/app-items';
33
- import UserCard from '../components/user-card';
34
- `.trim()}
35
-
36
- const HomePage = () => {
37
- ${"blank"!==i?"recoil"===o?"const user = useRecoilValue(userState);":"const user = useStore('user');":""}
38
- return (
39
- <Page name="home" ${"tabs"===i?"":"navbarLarge"}>${"tabs"!==i?`
40
- {/* Top Navbar */}
41
- <Navbar ${s?"fill":""}>
42
- <NavTitleLarge>${a}</NavTitleLarge>
43
- </Navbar>`:""}
44
- {/* Page content */}
45
- <Card inset>
46
- ${n.trim()}
47
- </Card>
48
- ${"blank"!==i&&"tabs"!==i?`
49
- {/* User info */}
50
- <List>
51
- <ListItem link="/user/">
52
- <UserCard user={user} />
53
- </ListItem>
54
- </List>
55
-
56
- {/* Grid apps */}
57
- <AppItems />
58
-
59
- {/* Route */}
60
- <List>
61
- <ListItem title="Dynamic (Component) Route" link="/dynamic-route/?blog=45&post=125&foo=bar" />
62
- <ListItem title="Default Route (404)" link="/something-that-doesnt-exist" />
63
- <ListItem title="About" link="/about/" />
64
- </List>
65
- `.trim():""}${"tabs"===i?`
66
- {/* Grid apps */}
67
- <AppItems />
68
-
69
- {/* Route */}
70
- <List>
71
- <ListItem title="Dynamic (Component) Route" link="/dynamic-route/?blog=45&post=125&foo=bar" />
72
- <ListItem title="Default Route (404)" link="/something-that-doesnt-exist" />
73
- <ListItem title="About" link="/about/" />
74
- </List>
75
- `.trim():""}
76
- </Page>
77
- );
78
- }
79
-
80
- export default HomePage;
81
- `).trim()};
@@ -1,55 +0,0 @@
1
- "use strict";const e=require("../../utils/template-if"),i=require("../../utils/indent"),a=require("../app-parameters");module.exports=t=>{let{template:r,theming:o,stateManagement:m}=t,s="";return("single-view"===r||"blank"===r)&&(s=i(0,`
2
- {/* Your main view, should have "view-main" class */}
3
- <View main className="safe-areas" url="/" />
4
- `)),"tabs"===r&&(s=i(0,`
5
- {/* TabView container */}
6
- <TabView className="safe-areas">
7
- {/* Tabbar for switching Tab*/}
8
- <Tabbar bottom id="app-tab-bar">
9
- <Link tabLink="#view-home" iconZMP="zi-home" tabLinkActive>
10
- Home
11
- </Link>
12
- <Link tabLink="#view-catalog" iconZMP="zi-list-1">
13
- Catalog
14
- </Link>
15
- <Link tabLink="#view-settings" iconZMP="zi-setting">
16
- Settings
17
- </Link>
18
- </Tabbar>
19
-
20
- <View id="view-home" main tab tabActive url="/" />
21
- <View id="view-catalog" name="catalog" tab url="/catalog/" />
22
- <View id="view-settings" name="settings" tab url="/settings/" />
23
- </TabView>
24
- `)),i(0,`
25
- import React, { useEffect } from 'react';
26
- ${["blank","single-view"].indexOf(r)>=0?`
27
- import { zmpready, App, View } from 'zmp-framework/react';
28
- `.trim():`
29
- import { zmpready, App, TabView, View, Tabbar, Link } from 'zmp-framework/react';
30
- `.trim()}
31
- ${e("recoil"===m,()=>"import { RecoilRoot } from 'recoil';",()=>"import store from '../store';")}
32
-
33
- const MyApp = () => {
34
- // ZMP Parameters
35
- const zmpparams = {
36
- ${i(8,a(t))}
37
- };
38
- useEffect(() => {
39
- zmpready(() => {
40
- // Call ZMP APIs here
41
- });
42
- }, [])
43
-
44
- ${`
45
- return (${"recoil"===m?`
46
- <RecoilRoot>`:""}
47
- ${i("recoil"===m?2:0,`<App {...zmpparams} ${o.darkTheme?"themeDark":""}>`)}
48
- ${i("recoil"===m?12:10,s.trim())}
49
- ${i("recoil"===m?2:0,"</App>")}${"recoil"===m?`
50
- </RecoilRoot>`:""}
51
- );
52
- `.trim()}
53
- }
54
- export default MyApp;
55
- `).trim()};
@@ -1 +0,0 @@
1
- "use strict";module.exports=t=>{let{template:e}=t;if("blank"===e)return[];let s=["/user","/form","/dynamic-route","/about","/404"];return"tabs"===e?s.push("/catalog","/settings"):"split-view"===e&&s.push("/left-page-1","/left-page-2"),s};
@@ -1,42 +0,0 @@
1
- "use strict";const t=require("../../utils/template-if"),o=require("../../utils/indent"),e=require("../../utils/styles-extension");module.exports=r=>{let{cssPreProcessor:p,theming:m,customBuild:s,includeTailwind:i}=r,n="";return(n+=o(0,`
2
- // Import React and ReactDOM
3
- import React from 'react';
4
- import { createRoot } from 'react-dom/client';
5
-
6
- // Import ZMP
7
- import ZMP from '${s?"./zmp-custom.js":"zmp-framework/core/lite-bundle"}';
8
-
9
- // Import ZMP-React Plugin
10
- import ZMPReact from 'zmp-framework/react';${i?`
11
-
12
- // Import tailwind styles
13
- import './css/tailwind.css';`:""}
14
-
15
- // Import ZMP Styles
16
- ${t(s,()=>`
17
- import './css/zmp-custom.less';
18
- `,()=>`
19
- import 'zmp-framework/${m.useUiKits?"zmp-bundle.min.css":"zmp.min.css"}';
20
- `)}
21
-
22
- // Import Icons and App Custom Styles
23
- ${t(m.iconFonts,()=>`
24
- import './css/icons.css';
25
- `)}
26
- import './css/app.${e(p)}';
27
-
28
- // Import App Component
29
- import App from './components/app.jsx';
30
- import appConfig from '../app-config.json';
31
-
32
- if (!window.APP_CONFIG) {
33
- window.APP_CONFIG = appConfig;
34
- }
35
-
36
- // Init ZMP React Plugin
37
- ZMP.use(ZMPReact)
38
-
39
- // Mount React App
40
- const root = createRoot(document.getElementById('app'));
41
- root.render(React.createElement(App));
42
- `)).trim()};
@@ -1,19 +0,0 @@
1
- "use strict";const t=require("../../../utils/indent");module.exports=e=>t(0,`
2
- import React from 'react';
3
- import { Page, Card, Title, Box } from 'zmp-framework/react';
4
- import NavbarBack from '../components/navbar-back';
5
-
6
- const NotFoundPage = () => (
7
- <Page>
8
- <NavbarBack title="Not found" />
9
- <Box mt="2">
10
- <Card inset>
11
- <Title>Sorry</Title>
12
- <p>Requested content not found.</p>
13
- </Card>
14
- </Box>
15
- </Page>
16
- );
17
-
18
- export default NotFoundPage;
19
- `).trim();