zmp-cli 3.8.3 → 3.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/create/templates/app-parameters.js +4 -2
  2. package/create/templates/copy-assets.js +0 -4
  3. package/create/templates/generate-recoil.js +56 -0
  4. package/create/templates/generate-store.js +2 -4
  5. package/create/templates/generate-styles.js +1 -10
  6. package/create/templates/react/components/user-card.jsx +3 -3
  7. package/create/templates/react/copy-assets.js +38 -22
  8. package/create/templates/react/generate-home-page.js +10 -15
  9. package/create/templates/react/generate-root.js +22 -32
  10. package/create/templates/react/generate-scripts.js +6 -14
  11. package/create/templates/react/pages/404.js +27 -0
  12. package/create/templates/react/pages/about.js +52 -0
  13. package/create/templates/react/pages/catalog.js +112 -0
  14. package/create/templates/react/pages/dynamic-route.js +80 -0
  15. package/create/templates/react/pages/form.js +152 -0
  16. package/create/templates/react/pages/index copy.js +17 -0
  17. package/create/templates/react/pages/index.js +17 -0
  18. package/create/templates/react/pages/settings.js +76 -0
  19. package/create/templates/react/pages/user.js +56 -0
  20. package/create/templates/react-typescript/_tsconfig.json +0 -1
  21. package/create/templates/react-typescript/components/app-items.js +1 -1
  22. package/create/templates/react-typescript/components/user-card.js +6 -12
  23. package/create/templates/react-typescript/copy-assets.js +17 -9
  24. package/create/templates/react-typescript/generate-home-page.js +9 -12
  25. package/create/templates/react-typescript/generate-root.js +41 -53
  26. package/create/templates/react-typescript/generate-scripts.js +6 -14
  27. package/create/templates/react-typescript/pages/about.js +2 -9
  28. package/create/templates/react-typescript/pages/catalog.js +52 -0
  29. package/create/templates/react-typescript/pages/form.js +81 -13
  30. package/create/templates/react-typescript/pages/settings.js +37 -0
  31. package/create/templates/react-typescript/pages/user.js +16 -11
  32. package/create/templates/vue/generate-scripts.js +5 -1
  33. package/create/utils/generate-package-json.js +11 -2
  34. package/create/utils/get-options.js +21 -1
  35. package/package.json +1 -1
  36. package/build/dist/index.dev.js +0 -185
  37. package/config/dist/index.dev.js +0 -52
  38. package/create/dist/index.dev.js +0 -300
  39. package/create/templates/common/tailwind/styles.css +0 -0
  40. package/create/templates/core/dist/copy-assets.dev.js +0 -85
  41. package/create/templates/core/dist/generate-home-page.dev.js +0 -24
  42. package/create/templates/core/dist/generate-routes.dev.js +0 -43
  43. package/create/templates/core/dist/generate-scripts.dev.js +0 -40
  44. package/create/templates/dist/app-parameters.dev.js +0 -21
  45. package/create/templates/dist/copy-assets.dev.js +0 -113
  46. package/create/templates/dist/create-folders.dev.js +0 -25
  47. package/create/templates/dist/generate-routes.dev.js +0 -15
  48. package/create/templates/dist/generate-zmp-custom.dev.js +0 -46
  49. package/create/templates/react/dist/copy-assets.dev.js +0 -64
  50. package/create/templates/react/dist/generate-home-page.dev.js +0 -23
  51. package/create/templates/react/dist/generate-root.dev.js +0 -33
  52. package/create/templates/react/dist/generate-routes.dev.js +0 -20
  53. package/create/templates/react/dist/generate-scripts.dev.js +0 -22
  54. package/create/templates/react/pages/404.jsx +0 -17
  55. package/create/templates/react/pages/about.jsx +0 -42
  56. package/create/templates/react/pages/catalog.jsx +0 -39
  57. package/create/templates/react/pages/dynamic-route.jsx +0 -70
  58. package/create/templates/react/pages/form-tabs.jsx +0 -64
  59. package/create/templates/react/pages/form.jsx +0 -61
  60. package/create/templates/react/pages/left-page-1.jsx +0 -17
  61. package/create/templates/react/pages/left-page-2.jsx +0 -16
  62. package/create/templates/react/pages/product.jsx +0 -25
  63. package/create/templates/react/pages/settings.jsx +0 -28
  64. package/create/templates/react/pages/user-tabs.jsx +0 -31
  65. package/create/templates/react/pages/user.jsx +0 -28
  66. package/create/templates/svelte/dist/copy-assets.dev.js +0 -55
  67. package/create/templates/svelte/dist/generate-home-page.dev.js +0 -23
  68. package/create/templates/svelte/dist/generate-root.dev.js +0 -35
  69. package/create/templates/svelte/dist/generate-routes.dev.js +0 -25
  70. package/create/templates/svelte/dist/generate-scripts.dev.js +0 -22
  71. package/create/templates/vue/dist/copy-assets.dev.js +0 -55
  72. package/create/templates/vue/dist/generate-home-page.dev.js +0 -23
  73. package/create/templates/vue/dist/generate-root.dev.js +0 -35
  74. package/create/templates/vue/dist/generate-routes.dev.js +0 -27
  75. package/create/templates/vue/dist/generate-scripts.dev.js +0 -22
  76. package/create/utils/dist/generate-app-config.dev.js +0 -29
  77. package/create/utils/dist/generate-gitignore.dev.js +0 -7
  78. package/create/utils/dist/generate-package-json.dev.js +0 -72
  79. package/deploy/dist/index.dev.js +0 -196
  80. package/deploy/utils/dist/upload-app.dev.js +0 -113
  81. package/dist/index.dev.js +0 -355
  82. package/login/dist/index.dev.js +0 -236
  83. package/login/utils/dist/get-options.dev.js +0 -66
  84. package/scripts/dist/release.dev.js +0 -105
  85. package/start/dist/index.dev.js +0 -247
  86. package/ui/dist/server.dev.js +0 -208
  87. package/utils/dist/constants.dev.js +0 -10
  88. package/utils/dist/error.dev.js +0 -18
@@ -1,43 +0,0 @@
1
- "use strict";
2
-
3
- var templateIf = require('../../utils/template-if');
4
-
5
- var indent = require('../../utils/indent');
6
-
7
- module.exports = function (options) {
8
- var bundler = options.bundler,
9
- template = options.template;
10
- var routes;
11
-
12
- if (template === 'blank') {
13
- if (bundler === 'webpack') {
14
- routes = indent(0, "\n import HomePage from './pages/home.zmp.html';\n\n var routes = [\n {\n path: '/',\n component: HomePage,\n },\n ];\n ");
15
- } else {
16
- routes = indent(0, "\n var routes = [\n {\n path: '/',\n url: './index.html',\n },\n ];\n ");
17
- }
18
- } else if (bundler === 'webpack') {
19
- routes = indent(0, "\n import HomePage from './pages/home.zmp.html';\n import AboutPage from './pages/about.zmp.html';\n import FormPage from './pages/form.zmp.html';\n ".concat(templateIf(template === 'tabs', function () {
20
- return "\n import CatalogPage from './pages/catalog.zmp.html';\n import ProductPage from './pages/product.zmp.html';\n import SettingsPage from './pages/settings.zmp.html';\n ";
21
- }), "\n ").concat(templateIf(template === 'split-view', function () {
22
- return "\n import LeftPage1 from './pages/left-page-1.zmp.html';\n import LeftPage2 from './pages/left-page-2.zmp.html';\n ";
23
- }), "\n ").concat(templateIf(template !== 'blank', function () {
24
- return "\n import DynamicRoutePage from './pages/dynamic-route.zmp.html';\n import NotFoundPage from './pages/404.zmp.html';\n ";
25
- }), "\n\n var routes = [\n {\n path: '/',\n component: HomePage,\n },\n {\n path: '/about/',\n component: AboutPage,\n },\n {\n path: '/form/',\n component: FormPage,\n },\n ").concat(templateIf(template === 'tabs', function () {
26
- return "\n {\n path: '/catalog/',\n component: CatalogPage,\n },\n {\n path: '/product/:id/',\n component: ProductPage,\n },\n {\n path: '/settings/',\n component: SettingsPage,\n },\n ";
27
- }), "\n ").concat(templateIf(template === 'split-view', function () {
28
- return "\n {\n path: '/left-page-1/',\n component: LeftPage1,\n },\n {\n path: '/left-page-2/',\n component: LeftPage2,\n },\n ";
29
- }), "\n {\n path: '/dynamic-route/blog/:blogId/post/:postId/',\n component: DynamicRoutePage,\n },\n {\n path: '(.*)',\n component: NotFoundPage,\n },\n ];\n "));
30
- } else {
31
- routes = indent(0, "\n var routes = [\n {\n path: '/',\n url: './index.html',\n },\n {\n path: '/about/',\n url: './pages/about.html',\n },\n {\n path: '/form/',\n url: './pages/form.html',\n },\n ".concat(templateIf(template === 'tabs', function () {
32
- return "\n {\n path: '/catalog/',\n componentUrl: './pages/catalog.html',\n },\n {\n path: '/product/:id/',\n componentUrl: './pages/product.html',\n },\n {\n path: '/settings/',\n url: './pages/settings.html',\n },\n ";
33
- }), "\n ").concat(templateIf(template === 'split-view', function () {
34
- return "\n {\n path: '/left-page-1/',\n url: './pages/left-page-1.html',\n },\n {\n path: '/left-page-2/',\n url: './pages/left-page-2.html',\n },\n ";
35
- }), "\n {\n path: '/dynamic-route/blog/:blogId/post/:postId/',\n componentUrl: './pages/dynamic-route.html',\n },\n // Default route (404 page). MUST BE THE LAST\n {\n path: '(.*)',\n url: './pages/404.html',\n },\n ];\n "));
36
- }
37
-
38
- if (bundler) {
39
- routes += '\nexport default routes;';
40
- }
41
-
42
- return routes;
43
- };
@@ -1,40 +0,0 @@
1
- "use strict";
2
-
3
- var templateIf = require('../../utils/template-if');
4
-
5
- var indent = require('../../utils/indent');
6
-
7
- var appParameters = require('../app-parameters');
8
-
9
- var stylesExtension = require('../../utils/styles-extension');
10
-
11
- module.exports = function (options) {
12
- var bundler = options.bundler,
13
- type = options.type,
14
- cssPreProcessor = options.cssPreProcessor,
15
- theming = options.theming,
16
- customBuild = options.customBuild,
17
- template = options.template;
18
- var scripts = '';
19
-
20
- if (bundler) {
21
- scripts += indent(0, "\n import $ from 'zmp-dom';\n ".concat(templateIf(customBuild, function () {
22
- return "\n import ZMP from './zmp-custom.js';\n ";
23
- }, function () {
24
- return "\n import ZMP from 'zmp-framework/core/bundle';\n ";
25
- }), "\n\n // Import ZMP Styles\n ").concat(templateIf(customBuild, function () {
26
- return "\n import '../css/zmp-custom.less';\n ";
27
- }, function () {
28
- return "\n import 'zmp-framework/zmp-bundle.min.css';\n ";
29
- }), "\n\n // Import Icons and App Custom Styles\n ").concat(templateIf(theming.iconFonts, function () {
30
- return "\n import '../css/icons.css';\n ";
31
- }), "\n import '../css/app.").concat(stylesExtension(cssPreProcessor), "';\n // Import Store\n import store from '../store.js';\n\n // Import main app component\n import App from '../app.zmp.html';\n "));
32
- } else {
33
- scripts += indent(0, "\n var $ = Dom7;\n ");
34
- }
35
-
36
- scripts += indent(0, "\n var app = new ZMP({\n ".concat(indent(6, appParameters(options)).trim(), "\n });\n ").concat(templateIf(!bundler && template !== 'blank', function () {
37
- return "\n // Login Screen Demo\n $('#my-login-screen .login-button').on('click', function () {\n var username = $('#my-login-screen [name=\"username\"]').val();\n var password = $('#my-login-screen [name=\"password\"]').val();\n\n // Close login screen\n app.loginScreen.close('#my-login-screen');\n\n // Alert username and password\n app.dialog.alert('Username: ' + username + '<br/>Password: ' + password);\n });\n ";
38
- }), "\n "));
39
- return scripts.trim();
40
- };
@@ -1,21 +0,0 @@
1
- "use strict";
2
-
3
- var indent = require('../utils/indent');
4
-
5
- var templateIf = require('../utils/template-if');
6
-
7
- module.exports = function (options) {
8
- var framework = options.framework,
9
- pkg = options.pkg,
10
- name = options.name,
11
- bundler = options.bundler;
12
- return indent(0, "\n name: '".concat(name, "', // App name\n theme: 'auto', // Automatic theme detection\n ").concat(templateIf(framework === 'core', function () {
13
- return "\n el: '#app', // App root element\n ";
14
- }), "\n ").concat(templateIf(framework === 'core' && bundler, function () {
15
- return "\n component: App, // App main component\n ";
16
- }), "\n ").concat(templateIf(pkg, function () {
17
- return "\n id: '".concat(pkg, "', // App bundle ID\n ");
18
- }), "\n // App store\n store: store,\n ").concat(templateIf(framework === 'core', function () {
19
- return "\n on: {\n init: function () {\n var zmp = this;\n },\n },\n ";
20
- }), "\n ")).trim();
21
- };
@@ -1,113 +0,0 @@
1
- "use strict";
2
-
3
- function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }
4
-
5
- function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }
6
-
7
- function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }
8
-
9
- function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }
10
-
11
- var path = require('path');
12
-
13
- var fse = require('../../utils/fs-extra');
14
-
15
- var stylesExtension = require('../utils/styles-extension');
16
-
17
- var copyCoreAssets = require('./core/copy-assets');
18
-
19
- var copyVueAssets = require('./vue/copy-assets');
20
-
21
- var copyReactAssets = require('./react/copy-assets');
22
-
23
- var copySvelteAssets = require('./svelte/copy-assets');
24
-
25
- var generateIndex = require('./generate-index');
26
-
27
- var generateStyles = require('./generate-styles');
28
-
29
- var generateScripts = require('./generate-scripts');
30
-
31
- var generateRoutes = require('./generate-routes');
32
-
33
- var generateManifest = require('./generate-manifest');
34
-
35
- var generateServiceWorker = require('./generate-service-worker');
36
-
37
- var generateZMPCustom = require('./generate-zmp-custom');
38
-
39
- module.exports = function (options, iconFile) {
40
- var cwd = options.cwd || process.cwd();
41
- var framework = options.framework,
42
- theming = options.theming,
43
- cssPreProcessor = options.cssPreProcessor,
44
- customBuild = options.customBuild;
45
- var srcFolder = 'src';
46
- var toCopy = [];
47
- if (framework === 'core') toCopy.push.apply(toCopy, _toConsumableArray(copyCoreAssets(options)));
48
- if (framework === 'vue') toCopy.push.apply(toCopy, _toConsumableArray(copyVueAssets(options)));
49
- if (framework === 'react') toCopy.push.apply(toCopy, _toConsumableArray(copyReactAssets(options)));
50
- if (framework === 'svelte') toCopy.push.apply(toCopy, _toConsumableArray(copySvelteAssets(options)));
51
-
52
- if (theming.iconFonts) {
53
- // Copy Icons CSS
54
- toCopy.push({
55
- from: path.resolve(__dirname, 'common', 'css', 'icons.css'),
56
- to: path.resolve(cwd, srcFolder, 'css', 'icons.css')
57
- });
58
- } // Copy Main Assets
59
-
60
-
61
- toCopy.push.apply(toCopy, [{
62
- content: generateIndex(options),
63
- to: path.resolve(cwd, 'index.html')
64
- }, {
65
- content: generateStyles(options),
66
- to: path.resolve(cwd, srcFolder, 'css', "app.".concat(stylesExtension(cssPreProcessor)))
67
- }, {
68
- content: generateScripts(options),
69
- to: path.resolve(cwd, srcFolder, 'app.js')
70
- }]); // Copy Custom Build
71
-
72
- if (customBuild) {
73
- var customBuildAssets = generateZMPCustom(options);
74
- toCopy.push.apply(toCopy, [{
75
- content: customBuildAssets.styles,
76
- to: path.resolve(cwd, srcFolder, 'css', 'zmp-custom.less')
77
- }, {
78
- content: customBuildAssets.scripts,
79
- to: path.resolve(cwd, srcFolder, 'js', 'zmp-custom.js')
80
- }]);
81
- } // Copy PostCSS config
82
-
83
-
84
- toCopy.push({
85
- from: path.resolve(__dirname, 'common', 'postcss.config.js'),
86
- to: path.resolve(cwd, 'postcss.config.js')
87
- }); // Copy Web Images & Icons
88
-
89
- var assetsFolder = 'static';
90
- fse.readdirSync(path.resolve(__dirname, 'common', 'icons')).forEach(function (f) {
91
- if (f.indexOf('.') === 0) return;
92
- toCopy.push({
93
- from: path.resolve(__dirname, 'common', 'icons', f),
94
- to: path.resolve(cwd, srcFolder, assetsFolder, 'icons', f)
95
- });
96
- });
97
-
98
- if (iconFile) {
99
- fse.writeFileSync(path.resolve(cwd, 'assets-src', 'web-icon.png'), iconFile);
100
- fse.writeFileSync(path.resolve(cwd, 'assets-src', 'apple-touch-icon.png'), iconFile);
101
- } else {
102
- toCopy.push({
103
- from: path.resolve(__dirname, 'common', 'icons', '512x512.png'),
104
- to: path.resolve(cwd, 'assets-src', 'web-icon.png')
105
- });
106
- toCopy.push({
107
- from: path.resolve(__dirname, 'common', 'icons', 'apple-touch-icon.png'),
108
- to: path.resolve(cwd, 'assets-src', 'apple-touch-icon.png')
109
- });
110
- }
111
-
112
- return toCopy;
113
- };
@@ -1,25 +0,0 @@
1
- "use strict";
2
-
3
- var path = require('path');
4
-
5
- var fse = require('../../utils/fs-extra');
6
-
7
- module.exports = function (options) {
8
- var cwd = options.cwd || process.cwd();
9
- var framework = options.framework;
10
- var srcFolder = 'src';
11
- var folders = ["./".concat(srcFolder), "./".concat(srcFolder, "/static"), "./".concat(srcFolder, "/css"), "./".concat(srcFolder, "/pages"), "./public", './assets-src'];
12
-
13
- if (folders.indexOf('./www') < 0) {
14
- folders.push('./www');
15
- }
16
-
17
- if (framework !== 'core') {
18
- folders.push.apply(folders, ["./".concat(srcFolder, "/components")]);
19
- }
20
-
21
- folders.push("./".concat(srcFolder, "/static/icons"));
22
- folders.forEach(function (f) {
23
- fse.mkdirSync(path.resolve(cwd, f));
24
- });
25
- };
@@ -1,15 +0,0 @@
1
- "use strict";
2
-
3
- // const generateCoreRoutes = require('./core/generate-routes');
4
- // const generateVueRoutes = require('./vue/generate-routes');
5
- var generateReactRoutes = require('./react/generate-routes'); // const generateSvelteRoutes = require('./svelte/generate-routes');
6
-
7
-
8
- module.exports = function (options) {
9
- var framework = options.framework; // if (framework === 'core') return generateCoreRoutes(options);
10
- // if (framework === 'vue') return generateVueRoutes(options);
11
-
12
- if (framework === 'react') return generateReactRoutes(options); // if (framework === 'svelte') return generateSvelteRoutes(options);
13
-
14
- return [];
15
- };
@@ -1,46 +0,0 @@
1
- "use strict";
2
-
3
- var indent = require('../utils/indent');
4
-
5
- module.exports = function (options) {
6
- var _ref = options.customBuildConfig || {},
7
- _ref$themes = _ref.themes,
8
- themes = _ref$themes === void 0 ? [] : _ref$themes,
9
- _ref$rtl = _ref.rtl,
10
- rtl = _ref$rtl === void 0 ? false : _ref$rtl,
11
- _ref$lightTheme = _ref.lightTheme,
12
- lightTheme = _ref$lightTheme === void 0 ? true : _ref$lightTheme,
13
- _ref$darkTheme = _ref.darkTheme,
14
- darkTheme = _ref$darkTheme === void 0 ? true : _ref$darkTheme,
15
- _ref$components = _ref.components,
16
- components = _ref$components === void 0 ? [] : _ref$components;
17
-
18
- var filterCharts = function filterCharts(comps) {
19
- return comps.filter(function (c) {
20
- if (c === 'gauge' || c === 'area-chart' || c === 'pie-chart') return false;
21
- return true;
22
- });
23
- };
24
-
25
- var framework = options.framework;
26
- var componentsImportsJS = filterCharts(components).map(function (c) {
27
- var name = c.split('-').map(function (word) {
28
- return word[0].toUpperCase() + word.substring(1);
29
- }).join('');
30
- return "import ".concat(name, " from 'zmp-framework/core/components/").concat(c, "';");
31
- });
32
- var componentsNamesJS = filterCharts(components).map(function (c) {
33
- return c.split('-').map(function (word) {
34
- return word[0].toUpperCase() + word.substring(1);
35
- }).join('');
36
- });
37
- var scripts = indent(0, "\n import ZMP, { request, utils, getDevice, createStore } from '".concat(framework === 'core' ? 'zmp-framework/core' : 'zmp-framework/core/lite', "';\n ").concat(componentsImportsJS.join('\n '), "\n\n ZMP.use([\n ").concat(componentsNamesJS.join(',\n '), "\n ]);\n\n export default ZMP;\n export { request, utils, getDevice, createStore };\n "));
38
- var componentsImportsLESS = components.map(function (c) {
39
- return "@import url('../../node_modules/zmp/components/".concat(c, "/").concat(c, ".less');");
40
- });
41
- var styles = indent(0, "\n & {\n @import url('../../node_modules/zmp/zmp.less');\n ".concat(componentsImportsLESS.join('\n '), "\n\n @includeIosTheme: ").concat(themes.indexOf('ios') >= 0, ";\n @includeMdTheme: ").concat(themes.indexOf('md') >= 0, ";\n @includeAuroraTheme: ").concat(themes.indexOf('aurora') >= 0, ";\n @includeDarkTheme: ").concat(darkTheme || false, ";\n @includeLightTheme: ").concat(lightTheme || false, ";\n @rtl: ").concat(rtl, "\n }\n "));
42
- return {
43
- styles: styles,
44
- scripts: scripts
45
- };
46
- };
@@ -1,64 +0,0 @@
1
- "use strict";
2
-
3
- function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }
4
-
5
- function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }
6
-
7
- function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }
8
-
9
- function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }
10
-
11
- var path = require('path');
12
-
13
- var generateHomePage = require('./generate-home-page');
14
-
15
- var generateRoot = require('./generate-root');
16
-
17
- var generateStore = require('../generate-store');
18
-
19
- module.exports = function (options) {
20
- var cwd = options.cwd || process.cwd();
21
- var template = options.template;
22
- var toCopy = []; // Copy Pages
23
-
24
- var pages = [];
25
- if (template !== 'blank') pages.push.apply(pages, ['404', 'about', 'dynamic-route', 'user', 'form']);
26
- if (template === 'tabs') pages.push.apply(pages, ['catalog', 'product', 'settings']);
27
- if (template === 'split-view') pages.push.apply(pages, ['left-page-1', 'left-page-2']);
28
- pages.forEach(function (p) {
29
- var src = path.resolve(__dirname, 'pages', "".concat(p, ".jsx"));
30
- var dest = path.resolve(cwd, 'src', 'pages', "".concat(p, ".jsx"));
31
- toCopy.push({
32
- from: src,
33
- to: dest
34
- });
35
- });
36
- toCopy.push({
37
- content: generateHomePage(options),
38
- to: path.resolve(cwd, 'src', 'pages', 'index.jsx')
39
- }); // Copy compoents
40
-
41
- var components = _toConsumableArray(template !== 'blank' ? ['app-items', 'navbar-back', 'user-card'] : []);
42
-
43
- components.forEach(function (name) {
44
- var src = path.resolve(__dirname, 'components', "".concat(name, ".jsx"));
45
- var dest = path.resolve(cwd, 'src', 'components', "".concat(name, ".jsx"));
46
- toCopy.push({
47
- from: src,
48
- to: dest
49
- });
50
- });
51
- toCopy.push({
52
- content: generateRoot(options),
53
- to: path.resolve(cwd, 'src', 'components', 'app.jsx')
54
- });
55
- toCopy.push({
56
- content: generateStore(options),
57
- to: path.resolve(cwd, 'src', 'store.js')
58
- });
59
- toCopy.push({
60
- from: path.resolve(__dirname, 'vite.config.js'),
61
- to: path.resolve(cwd, 'vite.config.js')
62
- });
63
- return toCopy;
64
- };
@@ -1,23 +0,0 @@
1
- "use strict";
2
-
3
- var indent = require('../../utils/indent');
4
-
5
- module.exports = function (options) {
6
- var name = options.name,
7
- template = options.template;
8
- var description = '';
9
-
10
- if (template === 'single-view' || template === 'blank') {
11
- description = "\n <p>Here is your blank ZMP app. Let's see what we have here.</p>\n ";
12
- }
13
-
14
- if (template === 'split-view') {
15
- description = "\n <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>\n\n <p>Each view may have different layout, different navbar type (dynamic, fixed or static) or without navbar.</p>\n\n <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>\n ";
16
- }
17
-
18
- if (template === 'tabs') {
19
- description = "\n <p>This is an example of tabs-layout application. The main point of such tabbed layout is that each tab contains independent view with its own routing and navigation.</p>\n\n <p>Each tab/view may have different layout, different navbar type (dynamic, fixed or static) or without navbar like this tab.</p>\n ";
20
- }
21
-
22
- return indent(0, "\n import React from 'react';\n ".concat(template === 'blank' ? "\n import {\n Page,\n Navbar,\n NavTitleLarge,\n Card\n } from 'zmp-framework/react';\n ".trim() : "\n import {\n Page,\n Navbar,\n NavTitleLarge,\n List,\n ListItem,\n useStore,\n Card,\n } from 'zmp-framework/react';\n import AppItems from '../components/app-items';\n import UserCard from '../components/user-card';\n ".trim(), "\n\n const HomePage = () => {\n ").concat(template !== 'blank' ? "const user = useStore('user');" : '', "\n return (\n <Page name=\"home\" navbarLarge>\n {/* Top Navbar */}\n <Navbar transparent>\n <NavTitleLarge>").concat(name, "</NavTitleLarge>\n </Navbar>\n {/* Page content */}\n <Card inset>\n ").concat(description.trim(), "\n </Card>\n ").concat(template !== 'blank' ? "\n {/* User info */}\n <List>\n <ListItem link=\"/user/\">\n <UserCard user={user} />\n </ListItem>\n </List>\n\n {/* Grid apps */}\n <AppItems />\n\n {/* Route */}\n <List>\n <ListItem title=\"Dynamic (Component) Route\" link=\"/dynamic-route/?blog=45&post=125&foo=bar\" />\n <ListItem title=\"Default Route (404)\" link=\"/something-that-doesnt-exist\" />\n <ListItem title=\"About\" link=\"/about/\" />\n </List>\n ".trim() : '', "\n </Page>\n );\n }\n export default HomePage;\n ")).trim();
23
- };
@@ -1,33 +0,0 @@
1
- "use strict";
2
-
3
- var indent = require('../../utils/indent');
4
-
5
- var templateIf = require('../../utils/template-if');
6
-
7
- var appParameters = require('../app-parameters');
8
-
9
- module.exports = function (options) {
10
- var template = options.template,
11
- theming = options.theming; // Panels
12
-
13
- var leftPanelPlain = indent(12, "\n {/* Left panel with cover effect*/}\n <Panel left cover themeDark>\n <View>\n <Page>\n <Navbar title=\"Left Panel\"/>\n <Block>Left panel content goes here</Block>\n </Page>\n </View>\n </Panel>\n ");
14
- var leftPanelWithView = indent(12, "\n {/* Left panel with cover effect when hidden */}\n <Panel left cover themeDark visibleBreakpoint={960}>\n <View>\n <Page>\n <Navbar title=\"Left Panel\"/>\n <BlockTitle>Left View Navigation</BlockTitle>\n <List>\n <ListItem link=\"/left-page-1/\" title=\"Left Page 1\"/>\n <ListItem link=\"/left-page-2/\" title=\"Left Page 2\"/>\n </List>\n <BlockTitle>Control Main View</BlockTitle>\n <List>\n <ListItem link=\"/about/\" view=\".view-main\" panelClose title=\"About\"/>\n <ListItem link=\"/form/\" view=\".view-main\" panelClose title=\"Form\"/>\n <ListItem link=\"#\" view=\".view-main\" back panelClose title=\"Back in history\"/>\n </List>\n </Page>\n </View>\n </Panel>\n ");
15
- var leftPanel = template === 'split-view' ? leftPanelWithView : leftPanelPlain;
16
- var rightPanel = indent(12, "\n {/* Right panel with reveal effect*/}\n <Panel right reveal themeDark>\n <View>\n <Page>\n <Navbar title=\"Right Panel\"/>\n <Block>Right panel content goes here</Block>\n </Page>\n </View>\n </Panel>\n "); // Views
17
-
18
- var views = '';
19
-
20
- if (template === 'single-view' || template === 'split-view' || template === 'blank') {
21
- views = indent(12, "\n {/* Your main view, should have \"view-main\" class */}\n <View main className=\"safe-areas\" url=\"/\" />\n ");
22
- }
23
-
24
- if (template === 'tabs') {
25
- views = indent(12, "\n {/* Views/Tabs container */}\n <Views tabs className=\"safe-areas\">\n {/* Tabbar for switching views-tabs */}\n <Toolbar tabbar labels bottom>\n <Link tabLink=\"#view-home\" tabLinkActive iconIos=\"zmp:house_fill\" iconAurora=\"zmp:house_fill\" iconMd=\"material:home\" text=\"Home\" />\n <Link tabLink=\"#view-catalog\" iconIos=\"zmp:square_list_fill\" iconAurora=\"zmp:square_list_fill\" iconMd=\"material:view_list\" text=\"Catalog\" />\n <Link tabLink=\"#view-settings\" iconIos=\"zmp:gear\" iconAurora=\"zmp:gear\" iconMd=\"material:settings\" text=\"Settings\" />\n </Toolbar>\n\n {/* Your main view/tab, should have \"view-main\" class. It also has \"tabActive\" prop */}\n <View id=\"view-home\" main tab tabActive url=\"/\" />\n\n {/* Catalog View */}\n <View id=\"view-catalog\" name=\"catalog\" tab url=\"/catalog/\" />\n\n {/* Settings View */}\n <View id=\"view-settings\" name=\"settings\" tab url=\"/settings/\" />\n\n </Views>\n ");
26
- }
27
-
28
- return indent(0, "\n import React, { useState, useEffect } from 'react';\n ".concat(['blank', 'single-view'].indexOf(template) >= 0 ? "\n import {\n zmp,\n zmpready,\n App,\n View,\n } from 'zmp-framework/react';\n ".trim() : "\n import {\n zmp,\n zmpready,\n App,\n Panel,\n Views,\n View,\n Popup,\n Page,\n Navbar,\n Toolbar,\n NavRight,\n Link,\n Block,\n BlockTitle,\n LoginScreen,\n LoginScreenTitle,\n List,\n ListItem,\n ListInput,\n ListButton,\n BlockFooter\n } from 'zmp-framework/react';\n ".trim(), "\n import store from '../store';\n\n const MyApp = () => {\n ").concat(templateIf(['blank', 'single-view'].indexOf(template) === -1, function () {
29
- return "\n // Login screen demo data\n const [username, setUsername] = useState('');\n const [password, setPassword] = useState('');\n ";
30
- }), "\n // ZMP Parameters\n const zmpparams = {\n ").concat(indent(10, appParameters(options)).trim(), "\n };\n ").concat(templateIf(['blank', 'single-view'].indexOf(template) === -1, function () {
31
- return "\n const alertLoginData = () => {\n zmp.dialog.alert('Username: ' + username + '<br>Password: ' + password, () => {\n zmp.loginScreen.close();\n });\n }\n ";
32
- }), "\n zmpready(() => {\n // Call ZMP APIs here\n });\n\n ").concat(['blank', 'single-view'].indexOf(template) !== -1 ? "\n return (\n <App { ...zmpparams } ".concat(theming.darkTheme ? 'themeDark' : '', ">\n ").concat(views, "\n </App>\n );\n ").trim() : "\n return (\n <App { ...zmpparams } ".concat(theming.darkTheme ? 'themeDark' : '', ">\n ").concat(leftPanel, "\n ").concat(rightPanel, "\n ").concat(views, "\n {/* Popup */}\n <Popup id=\"my-popup\">\n <View>\n <Page>\n <Navbar title=\"Popup\">\n <NavRight>\n <Link popupClose>Close</Link>\n </NavRight>\n </Navbar>\n <Block>\n <p>Popup content goes here.</p>\n </Block>\n </Page>\n </View>\n </Popup>\n\n <LoginScreen id=\"my-login-screen\">\n <View>\n <Page loginScreen>\n <LoginScreenTitle>Login</LoginScreenTitle>\n <List form>\n <ListInput\n type=\"text\"\n name=\"username\"\n placeholder=\"Your username\"\n value={username}\n onInput={(e) => setUsername(e.target.value)}\n ></ListInput>\n <ListInput\n type=\"password\"\n name=\"password\"\n placeholder=\"Your password\"\n value={password}\n onInput={(e) => setPassword(e.target.value)}\n ></ListInput>\n </List>\n <List>\n <ListButton title=\"Sign In\" onClick={() => alertLoginData()} />\n <BlockFooter>\n Some text about login information.<br />Click \"Sign In\" to close Login Screen\n </BlockFooter>\n </List>\n </Page>\n </View>\n </LoginScreen>\n </App>\n )\n ").trim(), "\n }\n export default MyApp;\n ")).trim();
33
- };
@@ -1,20 +0,0 @@
1
- "use strict";
2
-
3
- module.exports = function (options) {
4
- var template = options.template;
5
-
6
- if (template === 'blank') {
7
- return [];
8
- } // Webpack Routes
9
-
10
-
11
- var routes = ['/user', '/form', '/dynamic-route', '/about', '/404'];
12
-
13
- if (template === 'tabs') {
14
- routes.push.apply(routes, ['/catalog', '/product', '/settings']);
15
- } else if (template === 'split-view') {
16
- routes.push.apply(routes, ['/left-page-1', '/left-page-2']);
17
- }
18
-
19
- return routes;
20
- };
@@ -1,22 +0,0 @@
1
- "use strict";
2
-
3
- var templateIf = require('../../utils/template-if');
4
-
5
- var indent = require('../../utils/indent');
6
-
7
- var stylesExtension = require('../../utils/styles-extension');
8
-
9
- module.exports = function (options) {
10
- var cssPreProcessor = options.cssPreProcessor,
11
- theming = options.theming,
12
- customBuild = options.customBuild;
13
- var scripts = '';
14
- scripts += indent(0, "\n // Import React and ReactDOM\n import React from 'react';\n import ReactDOM from 'react-dom';\n\n // Import ZMP\n import ZMP from '".concat(customBuild ? './zmp-custom.js' : 'zmp-framework/core/lite-bundle', "';\n\n // Import ZMP-React Plugin\n import ZMPReact from 'zmp-framework/react';\n\n // Import ZMP Styles\n ").concat(templateIf(customBuild, function () {
15
- return "\n import './css/zmp-custom.less';\n ";
16
- }, function () {
17
- return "\n import 'zmp-framework/zmp-bundle.min.css';\n ";
18
- }), "\n\n // Import Icons and App Custom Styles\n ").concat(templateIf(theming.iconFonts, function () {
19
- return "\n import './css/icons.css';\n ";
20
- }), "\n import './css/app.").concat(stylesExtension(cssPreProcessor), "';\n\n // Import App Component\n import App from './components/app.jsx';\n import appConfig from '../app-config.json';\n\n if (!window.APP_CONFIG) {\n window.APP_CONFIG = appConfig;\n }\n\n // Init ZMP React Plugin\n ZMP.use(ZMPReact)\n\n // Mount React App\n ReactDOM.render(\n React.createElement(App),\n document.getElementById('app'),\n );\n "));
21
- return scripts.trim();
22
- };
@@ -1,17 +0,0 @@
1
- import React from 'react';
2
- import { Page, Card, Title, Box } from 'zmp-framework/react';
3
- import NavbarBack from '../components/navbar-back';
4
-
5
- const NotFoundPage = () => (
6
- <Page>
7
- <NavbarBack title="Not found" />
8
- <Box mt={2}>
9
- <Card inset>
10
- <Title>Sorry</Title>
11
- <p>Requested content not found.</p>
12
- </Card>
13
- </Box>
14
- </Page>
15
- );
16
-
17
- export default NotFoundPage;
@@ -1,42 +0,0 @@
1
- import React from 'react'
2
- import { Actions, ActionsButton, ActionsGroup, ActionsLabel, Button, Card, Page, Box } from 'zmp-framework/react';
3
- import NavbarBack from '../components/navbar-back';
4
-
5
- const AboutPage = (props) => {
6
- const [actionSheetOpened, setActionSheetOpened] = React.useState(false);
7
-
8
- return (
9
- <Page name="about">
10
- <NavbarBack title="About" />
11
- <Box mt={2}>
12
- <Card inset title="About My App">
13
- <p>This is a demo ZMP App!</p>
14
- </Card>
15
- </Box>
16
- <Box mb={4}>
17
- <Button
18
- typeName="primary"
19
- responsive
20
- onClick={() => setActionSheetOpened(true)}
21
- >
22
- Back
23
- </Button>
24
- </Box>
25
- <Actions
26
- opened={actionSheetOpened}
27
- onActionsClosed={() => setActionSheetOpened(false)}
28
- id="actions-two-groups"
29
- >
30
- <ActionsGroup>
31
- <ActionsLabel>Are you sure?</ActionsLabel>
32
- <ActionsButton color="blue" onClick={() => props.zmprouter.back()}>Navigate back</ActionsButton>
33
- </ActionsGroup>
34
- <ActionsGroup>
35
- <ActionsButton>Cancel</ActionsButton>
36
- </ActionsGroup>
37
- </Actions>
38
- </Page>
39
- )
40
- }
41
-
42
- export default AboutPage;
@@ -1,39 +0,0 @@
1
- import React from 'react';
2
- import { Page, Title, List, ListItem, Box, Button, useStore } from 'zmp-framework/react';
3
- import store from '../store'
4
-
5
- const CatalogPage = () => {
6
- const products = useStore('products');
7
-
8
- const addProduct = () => {
9
- store.dispatch('addProduct', {
10
- id: '4',
11
- title: 'Apple iPhone 12',
12
- 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.'
13
- });
14
- }
15
-
16
- return (
17
- <Page name="catalog">
18
- <Box m={0} p={4}>
19
- <Title>Catalog</Title>
20
- <List>
21
- {products.map((product) => (
22
- <ListItem
23
- key={product.id}
24
- title={product.title}
25
- link={`/product/${product.id}/`}
26
- />
27
- ))}
28
- </List>
29
- {products.length === 3 && (
30
- <Box>
31
- <Button responsive typeName='secondary' onClick={addProduct}>Add Product</Button>
32
- </Box>
33
- )}
34
- </Box>
35
- </Page>
36
- );
37
- }
38
-
39
- export default CatalogPage;