zmp-cli 3.15.7 → 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 (184) hide show
  1. package/README.md +37 -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,44 +0,0 @@
1
- "use strict";const t=require("../../../utils/indent");module.exports=o=>t(0,`
2
- import React from 'react'
3
- import { Actions, ActionsButton, ActionsGroup, ActionsLabel, Button, Card, Page, Box } from 'zmp-framework/react';
4
- import NavbarBack from '../components/navbar-back';
5
-
6
- const AboutPage = (props) => {
7
- const [actionSheetOpened, setActionSheetOpened] = React.useState(false);
8
-
9
- return (
10
- <Page name="about">
11
- <NavbarBack title="About" />
12
- <Box mt="2">
13
- <Card inset title="About My App">
14
- <p>This is a demo ZMP App!</p>
15
- </Card>
16
- </Box>
17
- <Box mb="4">
18
- <Button
19
- typeName="secondary"
20
- responsive
21
- onClick={() => setActionSheetOpened(true)}
22
- >
23
- Back
24
- </Button>
25
- </Box>
26
- <Actions
27
- opened={actionSheetOpened}
28
- onActionsClosed={() => setActionSheetOpened(false)}
29
- id="actions-two-groups"
30
- >
31
- <ActionsGroup>
32
- <ActionsLabel>Are you sure?</ActionsLabel>
33
- <ActionsButton onClick={() => props.zmprouter.back()}>Navigate back</ActionsButton>
34
- </ActionsGroup>
35
- <ActionsGroup>
36
- <ActionsButton>Cancel</ActionsButton>
37
- </ActionsGroup>
38
- </Actions>
39
- </Page>
40
- )
41
- }
42
-
43
- export default AboutPage;
44
- `).trim();
@@ -1,98 +0,0 @@
1
- "use strict";const t=require("../../../utils/indent");module.exports=e=>"recoil"===e.stateManagement?t(0,`
2
- import React from "react";
3
- import { useRecoilState } from 'recoil';
4
- import { Page, Title, List, ListItem, Box, Button } from 'zmp-framework/react';
5
- import { productsState } from '../state';
6
-
7
- const CatalogPage = () => {
8
- const [products, setProducts] = useRecoilState(productsState)
9
-
10
- const addProduct = () => {
11
- setProducts(p => [
12
- ...p,
13
- {
14
- id: '4',
15
- title: 'Apple iPhone 12',
16
- 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.'
17
- }
18
- ])
19
- }
20
-
21
- return (
22
- <Page name="catalog">
23
- <Box m="0" p="4">
24
- <Title>Catalog</Title>
25
- <List>
26
- {products.map((product) => (
27
- <ListItem
28
- key={product.id}
29
- title={product.title}
30
- link={\`/product/\${product.id}/\`}
31
- />
32
- ))}
33
- </List>
34
- {products.length === 3 && (
35
- <Box>
36
- <Button responsive typeName="secondary" onClick={addProduct}>
37
- Add Product
38
- </Button>
39
- </Box>
40
- )}
41
- </Box>
42
- </Page>
43
- );
44
- };
45
-
46
- export default CatalogPage;
47
- `).trim():t(0,`
48
- import React from "react";
49
- import {
50
- Page,
51
- Title,
52
- List,
53
- ListItem,
54
- Box,
55
- Button,
56
- useStore
57
- } from "zmp-framework/react";
58
- import store from "../store";
59
-
60
- const CatalogPage = () => {
61
- const products = useStore("products");
62
-
63
- const addProduct = () => {
64
- store.dispatch("addProduct", {
65
- id: "4",
66
- title: "Apple iPhone 12",
67
- description:
68
- "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."
69
- });
70
- };
71
-
72
- return (
73
- <Page name="catalog">
74
- <Box m="0" p="4">
75
- <Title>Catalog</Title>
76
- <List>
77
- {products.map((product) => (
78
- <ListItem
79
- key={product.id}
80
- title={product.title}
81
- link={\`/product/\${product.id}/\`}
82
- />
83
- ))}
84
- </List>
85
- {products.length === 3 && (
86
- <Box>
87
- <Button responsive typeName="secondary" onClick={addProduct}>
88
- Add Product
89
- </Button>
90
- </Box>
91
- )}
92
- </Box>
93
- </Page>
94
- );
95
- };
96
-
97
- export default CatalogPage;
98
- `).trim();
@@ -1,72 +0,0 @@
1
- "use strict";const t=require("../../../utils/indent");module.exports=e=>t(0,`
2
- import React from 'react'
3
- import { Button, Box, List, ListItem, Page } from 'zmp-framework/react'
4
- import NavbarBack from '../components/navbar-back';
5
-
6
- const DymanicRoutePage = (props) => {
7
- const { zmproute, zmprouter } = props;
8
-
9
- return (
10
- <Page name="dynamic-route">
11
- <NavbarBack title="Dynamic (Component) Route" />
12
- <List>
13
- <ListItem>
14
- <div>
15
- <div><strong>Route</strong></div>
16
- <div>{zmproute.route.path}</div>
17
- </div>
18
- </ListItem>
19
- <ListItem>
20
- <div>
21
- <div><strong>Url</strong></div>
22
- <div>{zmproute.url}</div>
23
- </div>
24
- </ListItem>
25
- <ListItem>
26
- <div>
27
- <div><strong>Path</strong></div>
28
- <div>{zmproute.path}</div>
29
- </div>
30
- </ListItem>
31
- <ListItem>
32
- <div>
33
- <div><strong>Hash</strong></div>
34
- <div>{zmproute.hash}</div>
35
- </div>
36
- </ListItem>
37
- <ListItem>
38
- <div>
39
- <div><strong>Params</strong></div>
40
- <div>
41
- <ul>
42
- {Object.keys(zmproute.params).map(key => (<li key={key}>{key}: {zmproute.params[key]}</li>))}
43
- </ul>
44
- </div>
45
- </div>
46
- </ListItem>
47
- <ListItem>
48
- <div>
49
- <div><strong>Query</strong></div>
50
- <div>
51
- <ul>
52
- {Object.keys(zmproute.query).map(key => (<li key={key}>{key}: {zmproute.query[key]}</li>))}
53
- </ul>
54
- </div>
55
- </div>
56
- </ListItem>
57
- </List>
58
- <Box px={4} mb={4}>
59
- <Button
60
- typeName="primary"
61
- responsive
62
- onClick={() => zmprouter.back()}
63
- >
64
- Go back via Router API
65
- </Button>
66
- </Box>
67
- </Page>
68
- )
69
- }
70
-
71
- export default DymanicRoutePage;
72
- `).trim();
@@ -1,132 +0,0 @@
1
- "use strict";const e=require("../../../utils/indent");module.exports=t=>{let{template:a}=t,o="tabs"===a?`onPageBeforeIn={()=>{
2
- //hide navbar
3
- zmp.toolbar.hide('#app-tab-bar')
4
- }}`:"";return"recoil"===t.stateManagement?e(0,`
5
- import React from 'react';
6
- import { Button, Card, Input, Page, Box, zmp } from 'zmp-framework/react';
7
- import { useRecoilState } from 'recoil';
8
- import { userState } from '../state';
9
- import NavbarBack from '../components/navbar-back';
10
-
11
- const FormPage = () => {
12
- const [user, setUser] = useRecoilState(userState)
13
-
14
- const [form, setForm] = React.useState({ ...user });
15
- const toast = React.useRef(null)
16
-
17
- const handleChangeInput = (field, value) => {
18
- setForm({ ...form, [field]: value })
19
- }
20
-
21
- const handleSubmit = () => {
22
- if (!toast.current) {
23
- toast.current = zmp.toast.create({
24
- text: 'Saved',
25
- position: 'bottom',
26
- closeTimeout: 2000,
27
- })
28
- }
29
- setUser(form);
30
- toast.current.open()
31
- }
32
-
33
- return (
34
- <Page
35
- name="user-form"
36
- ${o}
37
- >
38
- <NavbarBack title="Update user info" />
39
- <Box>
40
- <Card inset>
41
- <Input
42
- id="name"
43
- label="Name"
44
- type="text"
45
- placeholder="Zalo"
46
- value={form?.name}
47
- onChange={(e) => handleChangeInput('name', e.target.value)}
48
- />
49
- <Input
50
- label="Avatar"
51
- type="text"
52
- placeholder="zalo@zalo.me"
53
- value={form?.avatar}
54
- onChange={(e) => handleChangeInput('avatar', e.target.value)}
55
- />
56
- <Box mx="0" mt="4">
57
- <Button responsive typeName="primary" onClick={handleSubmit}>
58
- Submit
59
- </Button>
60
- </Box>
61
- </Card>
62
- </Box>
63
- </Page>
64
- )
65
- }
66
-
67
- export default FormPage;
68
- `).trim():e(0,`
69
- import React from 'react';
70
- import { Button, Card, Input, Page, useStore, zmp, Box } from 'zmp-framework/react';
71
- import NavbarBack from '../components/navbar-back';
72
-
73
- import store from '../store'
74
-
75
- const FormPage = () => {
76
- const user = useStore('user')
77
-
78
- const [form, setForm] = React.useState({ ...user });
79
- const toast = React.useRef(null)
80
-
81
- const handleChangeInput = (field, value) => {
82
- setForm({ ...form, [field]: value })
83
- }
84
-
85
- const handleSubmit = () => {
86
- if (!toast.current) {
87
- toast.current = zmp.toast.create({
88
- text: 'Saved',
89
- position: 'bottom',
90
- closeTimeout: 2000,
91
- })
92
- }
93
- store.dispatch('setUser', form)
94
- toast.current.open()
95
- }
96
-
97
- return (
98
- <Page
99
- name="user-form"
100
- ${o}
101
- >
102
- <NavbarBack title="Update user info" />
103
- <Box>
104
- <Card inset>
105
- <Input
106
- id="name"
107
- label="Name"
108
- type="text"
109
- placeholder="Zalo"
110
- value={form?.name}
111
- onChange={(e) => handleChangeInput('name', e.target.value)}
112
- />
113
- <Input
114
- label="Avatar"
115
- type="text"
116
- placeholder="zalo@zalo.me"
117
- value={form?.avatar}
118
- onChange={(e) => handleChangeInput('avatar', e.target.value)}
119
- />
120
- <Box mx="0" mt="4">
121
- <Button responsive typeName="primary" onClick={handleSubmit}>
122
- Submit
123
- </Button>
124
- </Box>
125
- </Card>
126
- </Box>
127
- </Page>
128
- )
129
- }
130
-
131
- export default FormPage;
132
- `).trim()};
@@ -1 +0,0 @@
1
- "use strict";const e=require("./user"),r=require("./form"),u=require("./dynamic-route"),i=require("./about"),t=require("./404"),o=require("./settings"),q=require("./catalog");module.exports={copyUser:e,copyForm:r,copyDynamicRoute:u,copyAbout:i,copy404:t,copySettings:o,copyCatalog:q};
@@ -1 +0,0 @@
1
- "use strict";const e=require("./user"),r=require("./form"),u=require("./dynamic-route"),i=require("./about"),t=require("./404"),o=require("./settings"),q=require("./catalog");module.exports={copyUser:e,copyForm:r,copyDynamicRoute:u,copyAbout:i,copy404:t,copySettings:o,copyCatalog:q};
@@ -1,62 +0,0 @@
1
- "use strict";const e=require("../../../utils/indent");module.exports=t=>"recoil"===t.stateManagement?e(0,`
2
- import React from "react";
3
- import { useRecoilValue } from 'recoil';
4
- import {
5
- Page,
6
- List,
7
- ListItem,
8
- Title,
9
- Box
10
- } from "zmp-framework/react";
11
- import UserCard from "../components/user-card";
12
- import { userState } from '../state'
13
-
14
- const SettingsPage = () => {
15
- const user = useRecoilValue(userState);
16
-
17
- return (
18
- <Page name="settings">
19
- <Box m="0" p="4">
20
- <Title>Settings</Title>
21
- <List className="m-0">
22
- <ListItem link="/user/">
23
- <UserCard user={user} />
24
- </ListItem>
25
- </List>
26
- </Box>
27
- </Page>
28
- );
29
- };
30
-
31
- export default SettingsPage;
32
- `).trim():e(0,`
33
- import React from "react";
34
- import {
35
- Page,
36
- List,
37
- ListItem,
38
- useStore,
39
- Title,
40
- Box
41
- } from "zmp-framework/react";
42
- import UserCard from "../components/user-card";
43
-
44
- const SettingsPage = () => {
45
- const user = useStore("user");
46
-
47
- return (
48
- <Page name="settings">
49
- <Box m="0" p="4">
50
- <Title>Settings</Title>
51
- <List className="m-0">
52
- <ListItem link="/user/">
53
- <UserCard user={user} />
54
- </ListItem>
55
- </List>
56
- </Box>
57
- </Page>
58
- );
59
- };
60
-
61
- export default SettingsPage;
62
- `).trim();
@@ -1,37 +0,0 @@
1
- "use strict";const e=require("../../../utils/indent");module.exports=t=>{let{template:r,stateManagement:a}=t,s="tabs"===r?`
2
- onPageBeforeIn={()=>{
3
- //hide navbar
4
- zmp.toolbar.hide('#app-tab-bar')
5
- }}`:"",i=["Avatar","List","ListItem","Page","Title"];return"store"===a&&i.push("useStore"),"tabs"===r&&i.push("zmp"),e(0,`
6
- import React from 'react'
7
- import { ${i.join(", ")} } from 'zmp-framework/react'
8
- import NavbarBack from '../components/navbar-back'${"recoil"===a?`
9
- import { useRecoilValue } from 'recoil';
10
- import { userState } from '../state';`:""}
11
-
12
- const UserPage = () => {
13
- ${"recoil"===a?"const user = useRecoilValue(userState);":"const user = useStore('user')"}
14
-
15
- return (
16
- <Page
17
- name="user"${s}
18
- >
19
- <NavbarBack
20
- title="User info"
21
- linkRight="/form"
22
- labelRight="Edit"
23
- />
24
- <div style={{ textAlign: 'center', marginTop: 32 }}>
25
- <Avatar story online src={user.avatar.startsWith('http') ? user.avatar : null}>{user.avatar}</Avatar>
26
- <Title style={{ marginTop: 8 }}>{user.name}</Title>
27
- </div>
28
- <List>
29
- <ListItem title="Display name" after={user.name} />
30
- <ListItem title="ID" after={user.id} />
31
- </List>
32
- </Page>
33
- )
34
- }
35
-
36
- export default UserPage;
37
- `).trim()};
@@ -1,11 +0,0 @@
1
- import { defineConfig } from 'vite'
2
- import reactRefresh from '@vitejs/plugin-react-refresh'
3
-
4
- // https://vitejs.dev/config/
5
- export default () => {
6
- return defineConfig({
7
- root: './src',
8
- base: '',
9
- plugins: [reactRefresh()],
10
- })
11
- }
@@ -1,33 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "noEmit": true,
4
- "target": "es6",
5
- "module": "esnext",
6
- "noImplicitAny": false,
7
- "preserveConstEnums": true,
8
- "jsx": "react",
9
- "lib": ["dom", "es5", "es6", "es7", "es2017"],
10
- "allowSyntheticDefaultImports": true,
11
- "esModuleInterop": true,
12
- "allowJs": true,
13
- "skipLibCheck": true,
14
- "declaration": false,
15
- "emitDecoratorMetadata": true,
16
- "experimentalDecorators": true,
17
- "forceConsistentCasingInFileNames": true,
18
- "moduleResolution": "node",
19
- "noEmitOnError": true,
20
- "noFallthroughCasesInSwitch": true,
21
- "noImplicitReturns": true,
22
- "noImplicitThis": true,
23
- "noUnusedLocals": false,
24
- "strict": true,
25
- "strictFunctionTypes": false,
26
- "pretty": true,
27
- "removeComments": true,
28
- "sourceMap": true,
29
- "resolveJsonModule": true
30
- },
31
- "exclude": ["node_modules"],
32
- "include": ["src"]
33
- }
@@ -1,46 +0,0 @@
1
- "use strict";const o=require("../../../utils/indent");module.exports=e=>o(0,`
2
- import React from 'react';
3
- import { Icon, Grid, GridItem, ToastPreloader } from 'zmp-framework/react';
4
-
5
- const AppItems = () => {
6
- const [toastLoading, setToastLoading] = React.useState(false);
7
- const items = [
8
- { icon: 'zi-chat-solid', label: 'Chat' },
9
- { icon: 'zi-photo-solid', label: 'Photo' },
10
- { icon: 'zi-star-solid', label: 'Star' },
11
- { icon: 'zi-more-diamond-solid', label: 'Apps' },
12
- { icon: 'zi-video-solid', label: 'Video' },
13
- { icon: 'zi-shield-solid', label: 'Shield' },
14
- { icon: 'zi-heart-solid', label: 'Heart' },
15
- { icon: 'zi-calendar-solid', label: 'Calendar' },
16
- ]
17
-
18
- const openToastLoading = () => {
19
- setToastLoading(true);
20
- setTimeout(() => {
21
- setToastLoading(false);
22
- }, 2000);
23
- };
24
-
25
- return (
26
- <div>
27
- <ToastPreloader visible={toastLoading} text="Loading..." />
28
- <Grid columns={4}>
29
- {items.map(item => (
30
- <GridItem
31
- label={item.label}
32
- style={{ backgroundColor: 'var(--zmp-color-w300)' }}
33
- key={item.icon}
34
- icon={<Icon zmp={item.icon as any} />}
35
- onClick={openToastLoading}
36
- />
37
- ))}
38
- </Grid>
39
- </div>
40
- )
41
- }
42
-
43
- AppItems.displayName = 'zmp-app-items'
44
-
45
- export default AppItems
46
- `).trim();
@@ -1 +0,0 @@
1
- "use strict";const e=require("./app-items"),r=require("./navbar-back"),s=require("./user-card");module.exports={copyAppItems:e,copyNavbarBack:r,copyUserCard:s};
@@ -1,33 +0,0 @@
1
- "use strict";const a=require("../../../utils/indent");module.exports=t=>a(0,`
2
- import React from 'react';
3
- import { Link, Navbar, NavLeft, Icon, NavTitle, NavRight } from 'zmp-framework/react';
4
-
5
- interface NavBarProps {
6
- title?: string,
7
- linkRight?: string,
8
- labelRight?: string
9
- }
10
-
11
- const NavbarBack: React.FunctionComponent<NavBarProps> = ({ title, linkRight, labelRight }) => {
12
- return (
13
- <Navbar>
14
- <NavLeft >
15
- <Link className="no-ripple" noLinkClass back>
16
- <Icon zmp="zi-arrow-left" />
17
- </Link>
18
- </NavLeft>
19
- <NavTitle>{title}</NavTitle>
20
- {linkRight && labelRight && (
21
- <NavRight>
22
- <Link href={linkRight} className="no-ripple" noLinkClass>{labelRight}</Link>
23
- </NavRight>
24
- )}
25
- </Navbar>
26
- )
27
- }
28
-
29
- NavbarBack.displayName = 'zmp-navbar';
30
-
31
-
32
- export default NavbarBack;
33
- `).trim();
@@ -1,25 +0,0 @@
1
- "use strict";const r=require("../../../utils/indent");module.exports=e=>r(0,`
2
- import React from 'react';
3
- import { Avatar, Title } from 'zmp-framework/react';
4
- import { userInfo } from 'zmp-sdk';
5
-
6
- interface UserProps {
7
- user: userInfo
8
- }
9
-
10
- const UserCard: React.FunctionComponent<UserProps> = ({ user }) => {
11
- return (
12
- <div style={{ display: 'flex', width: '100%' }}>
13
- <Avatar story online src={user.avatar.startsWith('http') ? user.avatar : null}>{user.avatar}</Avatar>
14
- <div style={{ marginLeft: 16 }}>
15
- <Title style={{ marginBottom: 0 }}>{user.name}</Title>
16
- <div>{user.id}</div>
17
- </div>
18
- </div>
19
- )
20
- };
21
-
22
- UserCard.displayName = 'zmp-user-card'
23
-
24
- export default UserCard;
25
- `).trim();
@@ -1 +0,0 @@
1
- "use strict";const e=require("path"),t=require("./generate-home-page"),o=require("./generate-root"),n=require("../generate-store"),s=require("../generate-recoil"),r=require("./components"),c=require("./pages"),a=require("./vite.config");module.exports=p=>{let i=p.cwd||process.cwd(),{template:l,stateManagement:u}=p,m=[],f=[];return"blank"!==l&&f.push({fileName:"404",content:"copy404"},{fileName:"about",content:"copyAbout"},{fileName:"dynamic-route",content:"copyDynamicRoute"},{fileName:"user",content:"copyUser"},{fileName:"form",content:"copyForm"}),"tabs"===l&&f.push({fileName:"catalog",content:"copyCatalog"},{fileName:"settings",content:"copySettings"}),f.forEach(({fileName:t,content:o})=>{let n=e.resolve(i,"src","pages",`${t}.tsx`);m.push({content:c[o](p),to:n})}),m.push({content:t(p),to:e.resolve(i,"src","pages","index.tsx")}),[..."blank"!==l?[{fileName:"app-items",content:"copyAppItems"},{fileName:"navbar-back",content:"copyNavbarBack"},{fileName:"user-card",content:"copyUserCard"}]:[]].forEach(({fileName:t,content:o})=>{let n=e.resolve(i,"src","components",`${t}.tsx`);m.push({content:r[o](p),to:n})}),m.push({content:o(p),to:e.resolve(i,"src","components","app.tsx")}),"recoil"===u?m.push({content:s(p),to:e.resolve(i,"src","state.ts")}):m.push({content:n(p),to:e.resolve(i,"src","store.ts")}),m.push({content:a(p),to:e.resolve(i,"vite.config.ts")}),m.push({from:e.resolve(__dirname,"_tsconfig.json"),to:e.resolve(i,"tsconfig.json")}),m};