@zohodesk/react-cli 0.0.1-beta.16 → 0.0.1-beta.162

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 (228) hide show
  1. package/.eslintignore +1 -0
  2. package/.eslintrc.js +46 -3
  3. package/CHANGELOG.md +5 -0
  4. package/README.md +708 -0
  5. package/bin/cli.js +134 -27
  6. package/cert/cert.pem +37 -129
  7. package/cert/key.pem +27 -27
  8. package/cert/passphrase.pem +1 -0
  9. package/files/eslintrc.js +62 -0
  10. package/files/prettierrc.js +3 -0
  11. package/lib/babel/cmjs-plugins-presets.js +16 -9
  12. package/lib/babel/es-plugins-presets.js +26 -14
  13. package/lib/common/getEntries.js +33 -24
  14. package/lib/common/getPublicPathConfig.js +40 -0
  15. package/lib/common/index.js +27 -13
  16. package/lib/common/splitChunks.js +64 -26
  17. package/lib/common/sslcertUpdater.js +59 -0
  18. package/lib/common/templateParameters.js +25 -0
  19. package/lib/configs/jest.config.js +26 -27
  20. package/lib/configs/libAlias.js +31 -0
  21. package/lib/configs/webpack.component.umd.config.js +31 -37
  22. package/lib/configs/webpack.css.umd.config.js +44 -44
  23. package/lib/configs/webpack.dev.config.js +96 -56
  24. package/lib/configs/webpack.docs.config.js +104 -98
  25. package/lib/configs/webpack.impact.config.js +116 -0
  26. package/lib/configs/webpack.prod.config.js +137 -85
  27. package/lib/hooks/docsProptypeHook.js +32 -38
  28. package/lib/jest/commitedFilesResult.js +144 -71
  29. package/lib/jest/coverageCollector.js +62 -29
  30. package/lib/jest/jsonMaker.js +54 -0
  31. package/lib/jest/preProcessors/cssPreprocessor.js +16 -18
  32. package/lib/jest/preProcessors/jsPreprocessor.js +5 -6
  33. package/lib/jest/preProcessors/otherFilesPreprocessor.js +5 -6
  34. package/lib/jest/result.js +91 -41
  35. package/lib/jest/run.js +74 -27
  36. package/lib/jest/setup.js +103 -102
  37. package/lib/loaderUtils/getCSSLoaders.js +77 -0
  38. package/lib/loaderUtils/getDevJsLoaders.js +30 -23
  39. package/lib/loaderUtils/index.js +14 -7
  40. package/lib/loaders/docsLoader.js +15 -15
  41. package/lib/loaders/docsPropsLoader.js +14 -17
  42. package/lib/loaders/fileBountryLoader.js +17 -0
  43. package/lib/loaders/fileLoader.js +47 -38
  44. package/lib/loaders/scriptInstrumentLoader.js +21 -20
  45. package/lib/loaders/selectorMappingLoader.js +75 -0
  46. package/lib/loaders/workerLoader.js +136 -0
  47. package/lib/middlewares/HMRMiddleware.js +59 -41
  48. package/lib/middlewares/SSTMiddleware.js +21 -0
  49. package/lib/pluginUtils/getDevPlugins.js +175 -26
  50. package/lib/pluginUtils/getDocsPlugins.js +32 -17
  51. package/lib/pluginUtils/getLibraryImactPlugins.js +23 -0
  52. package/lib/pluginUtils/getLibraryPlugins.js +8 -10
  53. package/lib/pluginUtils/getProdPlugins.js +240 -37
  54. package/lib/pluginUtils/getServerPlugins.js +8 -11
  55. package/lib/pluginUtils/getUMDCSSPlugins.js +11 -15
  56. package/lib/pluginUtils/getUMDComponentPlugins.js +11 -15
  57. package/lib/pluginUtils/index.js +36 -43
  58. package/lib/plugins/CdnChangePlugin.js +77 -0
  59. package/lib/plugins/CleanupStatsPlugin.js +28 -0
  60. package/lib/plugins/EFCPlugin.js +241 -0
  61. package/lib/plugins/EFCPlugin.md +6 -0
  62. package/lib/plugins/EFCTemplatePlugin.js +151 -0
  63. package/lib/plugins/I18NInjectIntoIndexPlugin.js +141 -0
  64. package/lib/plugins/I18nSplitPlugin/I18nDebugPlugin.js +60 -0
  65. package/lib/plugins/I18nSplitPlugin/I18nDependency.js +44 -0
  66. package/lib/plugins/I18nSplitPlugin/I18nDownlodLogic.js +266 -0
  67. package/lib/plugins/I18nSplitPlugin/I18nFilesEmitter.js +183 -0
  68. package/lib/plugins/I18nSplitPlugin/I18nKeysIdentifer.js +100 -0
  69. package/lib/plugins/I18nSplitPlugin/I18nSplit.md +86 -0
  70. package/lib/plugins/I18nSplitPlugin/README.md +25 -0
  71. package/lib/plugins/I18nSplitPlugin/index.js +185 -0
  72. package/lib/plugins/I18nSplitPlugin/utils/collectI18nKeys.js +64 -0
  73. package/lib/plugins/I18nSplitPlugin/utils/getI18nFileUrlPathTemplate.js +13 -0
  74. package/lib/plugins/I18nSplitPlugin/utils/getI18nKeysFormModules.js +26 -0
  75. package/lib/plugins/I18nSplitPlugin/utils/hashUtils.js +40 -0
  76. package/lib/plugins/I18nSplitPlugin/utils/index.js +31 -0
  77. package/lib/plugins/I18nSplitPlugin/utils/propertiesUtils.js +112 -0
  78. package/lib/plugins/ManifestPlugin.js +59 -62
  79. package/lib/plugins/ModuleStatsPlugin.js +98 -97
  80. package/lib/plugins/OptimizeJSPlugin.js +24 -41
  81. package/lib/plugins/PublicPathCallbackPlugin.js +63 -0
  82. package/lib/plugins/PublicPathChangePlugin.js +187 -174
  83. package/lib/plugins/ReportGeneratePlugin.js +181 -0
  84. package/lib/plugins/RequireVariablePublicPlugin.js +30 -0
  85. package/lib/plugins/ResourceHintsPlugin.js +53 -35
  86. package/lib/plugins/RtlSplitPlugin/OverwriteCssPathForRTL.js +80 -0
  87. package/lib/plugins/RtlSplitPlugin/RtlCssPlugin.js +82 -0
  88. package/lib/plugins/RtlSplitPlugin/RtrSplit.md +30 -0
  89. package/lib/plugins/RtlSplitPlugin/replaceCssDirTemplate.js +26 -0
  90. package/lib/plugins/ScriptInstrumentPlugin.js +22 -37
  91. package/lib/plugins/ServiceWorkerPlugin.js +107 -0
  92. package/lib/plugins/ShadowDOMSupportPlugin.js +270 -0
  93. package/lib/plugins/SourceMapHookPlugin.js +25 -31
  94. package/lib/plugins/TPHashMappingPlugin.js +67 -0
  95. package/lib/plugins/UglifyCSSPlugin.js +23 -30
  96. package/lib/plugins/UnusedFilesFindPlugin.js +150 -97
  97. package/lib/plugins/index.js +118 -55
  98. package/lib/plugins/libraryImpactPlugin.js +190 -0
  99. package/lib/plugins/webpackwatchrunplugin.js +26 -0
  100. package/lib/postcss-plugins/ExcludeRTLPlugin.js +23 -0
  101. package/lib/postcss-plugins/RTLSplitPlugin.js +138 -0
  102. package/lib/schemas/index.js +466 -52
  103. package/lib/servers/clusterHubServer.js +22 -26
  104. package/lib/servers/docsServer.js +3 -5
  105. package/lib/servers/docsServerCore.js +93 -85
  106. package/lib/servers/helpServer.js +19 -21
  107. package/lib/servers/httpsOptions.js +19 -0
  108. package/lib/servers/impactServer.js +99 -92
  109. package/lib/servers/mockserver.js +44 -0
  110. package/lib/servers/nowatchserver.js +275 -0
  111. package/lib/servers/scrServer.js +147 -0
  112. package/lib/servers/server.js +118 -124
  113. package/lib/servers/ssServer.js +107 -65
  114. package/lib/sh/reportPublish.sh +16 -10
  115. package/lib/templates/CoverageScriptTemplate.js +45 -18
  116. package/lib/templates/WMSTemplate.js +17 -18
  117. package/lib/templates/linterConstant.js +10 -0
  118. package/lib/utils/babelPresets.js +12 -5
  119. package/lib/utils/buildstats.html +148 -0
  120. package/lib/utils/clean.js +12 -11
  121. package/lib/utils/copy.js +13 -127
  122. package/lib/utils/copyTimezones.js +21 -0
  123. package/lib/utils/createEventStream.js +24 -19
  124. package/lib/utils/cssClassNameGenerate.js +77 -0
  125. package/lib/utils/cssURLReplacer.js +67 -54
  126. package/lib/utils/dependencyPostPublish.js +42 -0
  127. package/lib/utils/fileUtils.js +125 -0
  128. package/lib/utils/folderIterator.js +47 -0
  129. package/lib/utils/getComponents.js +126 -0
  130. package/lib/utils/getCurrentBranch.js +11 -17
  131. package/lib/utils/getDependenciesImpactList.js +151 -0
  132. package/lib/utils/getHash.js +26 -0
  133. package/lib/utils/getIp.js +20 -0
  134. package/lib/utils/getOptions.js +55 -30
  135. package/lib/utils/getServerURL.js +25 -8
  136. package/lib/utils/index.js +259 -82
  137. package/lib/utils/init.js +2 -2
  138. package/lib/utils/initPreCommitHook.js +40 -31
  139. package/lib/utils/jsonHelper.js +97 -0
  140. package/lib/utils/libraryImpactConfig.js +63 -0
  141. package/lib/utils/lint/addScripts.js +27 -0
  142. package/lib/utils/lint/checkExistingConfig.js +67 -0
  143. package/lib/utils/lint/copyConfigs.js +24 -0
  144. package/lib/utils/lint/index.js +54 -0
  145. package/lib/utils/lint/lintScripts.js +11 -0
  146. package/lib/utils/lint/lintSetup.js +31 -0
  147. package/lib/utils/lint/lintStagedPreCommitHook.js +7 -0
  148. package/lib/utils/lint/question.js +30 -0
  149. package/lib/utils/lintReporter.js +142 -0
  150. package/lib/utils/mailSender.js +16 -25
  151. package/lib/utils/pullOrigin.js +28 -0
  152. package/lib/utils/reinstallDependencies.js +133 -0
  153. package/lib/utils/removeAttributes.js +25 -23
  154. package/lib/utils/repoClone.js +56 -63
  155. package/lib/utils/request.js +64 -77
  156. package/lib/utils/resultSchema.json +73 -0
  157. package/lib/utils/rtl.js +42 -0
  158. package/lib/utils/setEnvVariables.js +5 -6
  159. package/lib/utils/ssTestHack.js +48 -0
  160. package/lib/utils/switchBranch.js +28 -0
  161. package/lib/utils/urlConcat.js +22 -0
  162. package/package.json +92 -64
  163. package/templates/app/.eslintrc.js +140 -0
  164. package/templates/app/README.md +12 -12
  165. package/templates/app/app/index.html +24 -8
  166. package/templates/app/app/properties/ApplicationResources_en_US.properties +1 -1
  167. package/templates/app/app/properties/i18nkeys.json +3 -3
  168. package/templates/app/docs/all.html +69 -69
  169. package/templates/app/mockapi/index.js +18 -13
  170. package/templates/app/package.json +37 -17
  171. package/templates/app/src/actions/SampleActions/index.js +37 -0
  172. package/templates/app/src/actions/index.js +65 -0
  173. package/templates/app/src/appUrls.js +19 -0
  174. package/templates/app/src/components/Alert/Alert.js +134 -0
  175. package/templates/app/src/components/Alert/Alert.module.css +79 -0
  176. package/templates/app/src/components/FreezeLayer/FreezeLayer.css +37 -0
  177. package/templates/app/src/components/FreezeLayer/FreezeLayer.js +84 -0
  178. package/templates/app/src/components/Sample/Sample.module.css +11 -0
  179. package/templates/app/src/components/Sample/SampleList.js +61 -0
  180. package/templates/app/src/components/Slider/Slider.css +41 -0
  181. package/templates/app/src/components/Slider/Slider.js +55 -0
  182. package/templates/app/src/containers/AlertContainer/index.js +15 -0
  183. package/templates/app/src/containers/AppContainer/index.js +96 -0
  184. package/templates/app/src/containers/AppContainer/index.module.css +27 -0
  185. package/templates/app/src/containers/CustomMatch/index.js +65 -0
  186. package/templates/app/src/containers/DevTools/index.js +10 -0
  187. package/templates/app/src/containers/Header/index.js +67 -0
  188. package/templates/app/src/containers/Header/index.module.css +43 -0
  189. package/templates/app/src/containers/Redirect/index.js +63 -0
  190. package/templates/app/src/containers/Redirector/index.js +47 -0
  191. package/templates/app/src/containers/SampleListContainer/ListContainer.js +42 -0
  192. package/templates/app/src/containers/SampleListContainer/ListContainer.module.css +3 -0
  193. package/templates/app/src/historyChange.js +5 -0
  194. package/templates/app/src/index.html +10 -0
  195. package/templates/app/src/index.js +24 -0
  196. package/templates/app/src/middleware/PromiseMiddleware.js +59 -0
  197. package/templates/app/src/reducers/alertData.js +11 -0
  198. package/templates/app/src/reducers/index.js +6 -0
  199. package/templates/app/src/reducers/samples.js +19 -0
  200. package/templates/app/src/store/configureStore.dev.js +51 -0
  201. package/templates/app/src/store/configureStore.js +5 -0
  202. package/templates/app/src/store/configureStore.prod.js +26 -0
  203. package/templates/app/src/util/Common.js +5 -0
  204. package/templates/app/src/util/RequestAPI.js +132 -0
  205. package/templates/appold/README.md +12 -0
  206. package/templates/appold/app/index.html +8 -0
  207. package/templates/appold/app/properties/ApplicationResources_en_US.properties +1 -0
  208. package/templates/appold/app/properties/i18nkeys.json +3 -0
  209. package/templates/appold/docs/all.html +69 -0
  210. package/templates/appold/mockapi/index.js +13 -0
  211. package/templates/{app → appold}/mockapi/tickets.json +0 -0
  212. package/templates/appold/package.json +17 -0
  213. package/templates/appold/src/components/Text/Text.css +0 -0
  214. package/templates/appold/src/components/Text/Text.js +23 -0
  215. package/templates/appold/src/components/Text/__tests__/Text.spec.js +30 -0
  216. package/templates/appold/src/components/Text/docs/Text__default.docs.js +16 -0
  217. package/templates/appold/src/components/docs.js +1 -0
  218. package/templates/appold/src/components/index.js +5 -0
  219. package/templates/appold/src/index.js +13 -0
  220. package/templates/docs/all.html +1 -1
  221. package/templates/docs/component.html +110 -69
  222. package/templates/docs/components.html +221 -0
  223. package/templates/docs/css/component.css +12 -14
  224. package/templates/docs/css/componentTest.css +7 -0
  225. package/templates/docs/css/style.css +150 -206
  226. package/templates/docs/impactReportTemplate.html +154 -0
  227. package/templates/docs/index.html +1482 -1336
  228. package/templates/library/src/index.js +0 -0
@@ -1,13 +1,18 @@
1
- var path = require('path');
2
- var fs = require('fs');
3
-
4
- function mockServer(app) {
5
- var responseMapper = (url, file, type = 'application/json') => {
6
- app.use(url, function(req, res) {
7
- res.setHeader('Content-Type', type);
8
- res.sendFile(path.join(__dirname, file));
9
- });
10
- };
11
- responseMapper('/api/v1/tickets', 'tickets.json');
12
- }
13
- module.exports = mockServer;
1
+ const cors = require("cors");
2
+ const fileUpload = require("express-fileupload");
3
+
4
+ function mockServer(app) {
5
+ app.use(
6
+ fileUpload({
7
+ limits: { fileSize: 50 * 1024 * 1024 }
8
+ })
9
+ );
10
+ app.use(cors());
11
+
12
+ app.get("/app/sample/*", (req, res) => {
13
+ res.type("html");
14
+ res.sendFile(path.join(__dirname + "/../app/index.html"));
15
+ });
16
+ }
17
+
18
+ module.exports = mockServer;
@@ -1,17 +1,37 @@
1
- {
2
- "name": "testapp",
3
- "version": "1.0.0",
4
- "description": "",
5
- "main": "index.js",
6
- "scripts": {
7
- "clean": "react-cli clean build unittest coverage",
8
- "docs":"react-cli docs",
9
- "component":"react-cli build:component",
10
- "component:umd":"react-cli build:component:umd",
11
- "start": "react-cli start",
12
- "build": "react-cli build",
13
- "test": "npm run clean && react-cli test"
14
- },
15
- "author": "",
16
- "license": "ISC"
17
- }
1
+ {
2
+ "name": "sampleapp",
3
+ "version": "1.0.0",
4
+ "description": "",
5
+ "main": "index.js",
6
+ "scripts": {
7
+ "clean": "react-cli clean build unittest coverage",
8
+ "docs": "react-cli docs",
9
+ "component": "react-cli build:component",
10
+ "component:umd": "react-cli build:component:umd",
11
+ "start": "react-cli start",
12
+ "build": "react-cli build",
13
+ "test": "npm run clean && react-cli test",
14
+ "lint": "react-cli lint"
15
+ },
16
+ "author": "",
17
+ "license": "ISC",
18
+ "dependencies": {
19
+ "@zohodesk/components": "^1.0.0-alpha-21",
20
+ "cors": "^2.8.5",
21
+ "redux-devtools": "^3.5.0",
22
+ "redux-devtools-dock-monitor": "^1.1.3",
23
+ "redux-devtools-log-monitor": "^1.4.0",
24
+ "redux-logger": "^3.0.6"
25
+ },
26
+ "react-cli": {
27
+ "app": {
28
+ "server": {
29
+ "hasMock": true
30
+ }
31
+ }
32
+ },
33
+ "devDependencies": {
34
+ "body-parser": "^1.19.0",
35
+ "express-fileupload": "^1.1.5"
36
+ }
37
+ }
@@ -0,0 +1,37 @@
1
+ import { generateAPITypes } from "../../util/Common";
2
+ import requestAPI from "../../util/RequestAPI";
3
+
4
+ export function getSampleList(isForce = true) {
5
+ return {
6
+ types: generateAPITypes("SAMPLE_LIST"),
7
+ shouldCallAPI: state => {
8
+ if (!isForce) {
9
+ const { sampleDataList = [] } = state;
10
+ return sampleDataList.length === 0;
11
+ }
12
+ return true;
13
+ },
14
+ callAPI: state =>
15
+ requestAPI(`${mockServerURL}/api/v1/sampleapi`, {})
16
+ .get()
17
+ .then(res => {
18
+ return res;
19
+ })
20
+ };
21
+ }
22
+
23
+ export function addSample(payload) {
24
+ return {
25
+ types: generateAPITypes("ADD_SAMPLE"),
26
+ callAPI: state => {
27
+ return new Promise((resolve, reject) => {
28
+ let url = `${mockServerURL}/api/v1/addSample`;
29
+ requestAPI(url, {})
30
+ .post("", payload)
31
+ .then(res => {
32
+ resolve(res);
33
+ });
34
+ });
35
+ }
36
+ };
37
+ }
@@ -0,0 +1,65 @@
1
+ import {
2
+ push as routerPush,
3
+ replace as routerReplace
4
+ } from "redux-router-middleware";
5
+
6
+ export function push(obj, isHref) {
7
+ //obj.pathname = isHref ? obj.pathname : URL_PREFIX + obj.pathname;
8
+ return (dispatch, getState) => {
9
+ let state = getState();
10
+ dispatch(routerPush(obj));
11
+ };
12
+ }
13
+
14
+ export function replace(obj) {
15
+ return (dispatch, getState) => {
16
+ let state = getState();
17
+ if (
18
+ !state.routing.location ||
19
+ obj.href !== state.routing.location.pathname
20
+ ) {
21
+ let locationState =
22
+ state.routing.location && state.routing.location.state;
23
+ if (!obj.state && locationState) {
24
+ obj.state = {};
25
+ Object.assign(obj.state, locationState);
26
+ }
27
+ dispatch(routerReplace(obj));
28
+ }
29
+ };
30
+ }
31
+
32
+ export function showAlert(data) {
33
+ return {
34
+ type: "ALERT_SHOW",
35
+ data
36
+ };
37
+ }
38
+
39
+ export function hideAlert() {
40
+ return {
41
+ type: "ALERT_HIDE"
42
+ };
43
+ }
44
+
45
+ export const alertAction = (() => {
46
+ let ob = { resolve: null, reject: null };
47
+ function showConfirmBox(data) {
48
+ return dispatch =>
49
+ new Promise((res, rej) => {
50
+ ob.resolve = () => {
51
+ dispatch(hideAlert());
52
+ res();
53
+ };
54
+ ob.reject = () => {
55
+ dispatch(hideAlert());
56
+ rej();
57
+ };
58
+ dispatch(showAlert(data));
59
+ });
60
+ }
61
+ return {
62
+ ob,
63
+ showConfirmBox
64
+ };
65
+ })();
@@ -0,0 +1,19 @@
1
+ import { URL_PREFIX } from "./util/Common";
2
+
3
+ export default function getUrls(isDomainMapped) {
4
+ let urls = [
5
+ {
6
+ name: "root",
7
+ pattern: "/"
8
+ },
9
+ {
10
+ name: "sampleList",
11
+ pattern: "/sample"
12
+ }
13
+ ];
14
+
15
+ return urls.map(url => {
16
+ url.pattern = `${URL_PREFIX}${url.pattern}`;
17
+ return url;
18
+ });
19
+ }
@@ -0,0 +1,134 @@
1
+ import React, { Component } from "react";
2
+ import PropTypes from "prop-types";
3
+ import style from "./Alert.module.css";
4
+ import {
5
+ TopbandFontIcon,
6
+ TicketsFontIcon,
7
+ CommonFontIcon,
8
+ Button
9
+ } from "@zohodesk/components";
10
+
11
+ import FreezeLayer from "../FreezeLayer/FreezeLayer";
12
+
13
+ export default class Alert extends Component {
14
+ constructor(props) {
15
+ super(props);
16
+ this.documentKeyupHandler = this.documentKeyupHandler.bind(this);
17
+ }
18
+
19
+ componentDidMount() {
20
+ document.addEventListener("keyup", this.documentKeyupHandler);
21
+ }
22
+
23
+ componentWillUnmount() {
24
+ document.removeEventListener("keyup", this.documentKeyupHandler);
25
+ }
26
+
27
+ documentKeyupHandler(e = {}) {
28
+ e && e.preventDefault();
29
+ let { onSubmitClick, onCancelClick, isActive } = this.props;
30
+ if (e.keyCode === 27 && isActive) {
31
+ onCancelClick();
32
+ } else if (e.keyCode === 13 && isActive) {
33
+ onSubmitClick();
34
+ }
35
+ }
36
+
37
+ render() {
38
+ let {
39
+ onSubmitClick,
40
+ onCancelClick,
41
+ alertData,
42
+ isActive,
43
+ palette,
44
+ type
45
+ } = this.props;
46
+ let {
47
+ iconName,
48
+ iconSize,
49
+ title,
50
+ message,
51
+ confirmationMessage,
52
+ submitText,
53
+ cancelText,
54
+ isBoldIcon
55
+ } = alertData;
56
+ return (
57
+ <FreezeLayer
58
+ zIndex="7"
59
+ isActive={isActive}
60
+ animationName="fadeIn"
61
+ childAnimationName="scaleIn"
62
+ align="both"
63
+ >
64
+ <div className={`${style[palette]}`}>
65
+ <div className={style.container}>
66
+ <div className={style.header}>
67
+ <span className={style.icon}>
68
+ {iconName === "splitNew" ? (
69
+ <TicketsFontIcon
70
+ name={iconName}
71
+ size="14"
72
+ isBold={isBoldIcon}
73
+ />
74
+ ) : iconName === "taskDemo" ? (
75
+ <TopbandFontIcon
76
+ name={iconName}
77
+ size={iconSize ? iconSize : "15"}
78
+ isBold={isBoldIcon}
79
+ />
80
+ ) : (
81
+ <CommonFontIcon
82
+ name={iconName || ""}
83
+ size={iconSize ? iconSize : "15"}
84
+ isBold={isBoldIcon}
85
+ />
86
+ )}
87
+ </span>
88
+ <span className={style.title}>{title}</span>
89
+ </div>
90
+ <div className={style.middle}>
91
+ <div dangerouslySetInnerHTML={{ __html: message }} />
92
+ {confirmationMessage && (
93
+ <div className={style.text}>{confirmationMessage}</div>
94
+ )}
95
+ <div className={style.footer}>
96
+ <span className={`${style.button}`}>
97
+ <Button
98
+ text={submitText}
99
+ palette={
100
+ palette === "success" ? "primaryFilled" : "dangerFilled"
101
+ }
102
+ onClick={onSubmitClick}
103
+ />
104
+ </span>
105
+ {type === "confirmation" && (
106
+ <span className={`${style.button}`}>
107
+ <Button
108
+ text={cancelText}
109
+ palette="secondary"
110
+ onClick={onCancelClick}
111
+ />
112
+ </span>
113
+ )}
114
+ </div>
115
+ </div>
116
+ </div>
117
+ </div>
118
+ </FreezeLayer>
119
+ );
120
+ }
121
+ }
122
+
123
+ Alert.propTypes = {
124
+ alertData: PropTypes.object,
125
+ isActive: PropTypes.bool,
126
+ onCancelClick: PropTypes.func,
127
+ onSubmitClick: PropTypes.func,
128
+ palette: PropTypes.oneOf(["success", "danger"]),
129
+ type: PropTypes.oneOf(["alert", "confirmation"])
130
+ };
131
+ Alert.defaultProps = {
132
+ isActive: false,
133
+ palette: "danger"
134
+ };
@@ -0,0 +1,79 @@
1
+ .container {
2
+ background-color: var(--zd_bg_pure);
3
+ border-radius: var(--zd_size2);
4
+ width: var(--zd_size430);
5
+ }
6
+ .header {
7
+ text-transform: capitalize;
8
+ padding: var(--zd_size12) var(--zd_size20);
9
+ box-shadow: 0 0 var(--zd_size3) 0 var(--zd_shadow_smoke36);
10
+ display: -webkit-box;
11
+ display: -ms-flexbox;
12
+ display: flex;
13
+ -webkit-box-orient: horizontal;
14
+ -webkit-box-direction: normal;
15
+ -webkit-flex-direction: row;
16
+ -ms-flex-direction: row;
17
+ flex-direction: row;
18
+ -webkit-box-align: center;
19
+ -ms-flex-align: center;
20
+ align-items: center;
21
+ }
22
+ .danger .header {
23
+ background-color: var(--zd_bg_danger5);
24
+ color: var(--zd_text_danger4);
25
+ }
26
+ .success .header {
27
+ background-color: var(--zd_bg_primarytrans2);
28
+ color: var(--zd_text_prime);
29
+ }
30
+ .icon {
31
+ margin-right: var(--zd_size10);
32
+ font-size: 0;
33
+ }
34
+ .danger .icon {
35
+ color: var(--zd_text_danger4);
36
+ }
37
+ .success .icon {
38
+ color: var(--zd_text_prime);
39
+ }
40
+ .title {
41
+ -webkit-box-flex: 1;
42
+ -ms-flex-positive: 1;
43
+ flex-grow: 1;
44
+ min-height: 0;
45
+ min-width: 0;
46
+ white-space: nowrap;
47
+ word-wrap: normal;
48
+ overflow: hidden;
49
+ text-overflow: ellipsis;
50
+ font-size: var(--zd_size15);
51
+ }
52
+
53
+ .middle {
54
+ padding: var(--zd_size30) var(--zd_size20) var(--zd_size20);
55
+ line-height: var(--zd_size25);
56
+ color: var(--zd_text_dark4);
57
+ font-size: var(--zd_size15);
58
+ word-break: break-word;
59
+ }
60
+ .text {
61
+ margin-top: var(--zd_size20);
62
+ }
63
+ .footer {
64
+ margin-top: var(--zd_size20);
65
+ }
66
+
67
+ .button {
68
+ margin-right: var(--zd_size20);
69
+ display: inline-block;
70
+ }
71
+
72
+ html[dir="rtl"] .button {
73
+ margin-right: 0;
74
+ margin-left: var(--zd_size20);
75
+ }
76
+ html[dir="rtl"] .icon {
77
+ margin-left: var(--zd_size10);
78
+ margin-right: 0;
79
+ }
@@ -0,0 +1,37 @@
1
+ .container {
2
+ top: 0;
3
+ left: 0;
4
+ bottom: 0;
5
+ right: 0;
6
+ position: absolute;
7
+ }
8
+ .default {
9
+ background-color: rgba(0, 0, 0, 0.7);
10
+ }
11
+ .dark {
12
+ background-color: rgba(0, 0, 0, 0.9);
13
+ }
14
+ .darkLight {
15
+ background-color: var(--zd_bg_dark16);
16
+ }
17
+ .plain {
18
+ background-color: transparent;
19
+ }
20
+ .snow {
21
+ background-color: rgba(30, 38, 51, 0.4);
22
+ }
23
+ .index3 {
24
+ z-index: 3;
25
+ }
26
+ .index5 {
27
+ z-index: 5;
28
+ }
29
+ .index7 {
30
+ z-index: 7;
31
+ }
32
+ .index10 {
33
+ z-index: 10;
34
+ }
35
+ .delay {
36
+ transition-delay: 0.2s;
37
+ }
@@ -0,0 +1,84 @@
1
+ import React, { Component } from "react";
2
+ import PropTypes from "prop-types";
3
+
4
+ import style from "./FreezeLayer.css";
5
+ import { Container, Animation } from "@zohodesk/components";
6
+ export default class FreezeLayer extends Component {
7
+ constructor(props) {
8
+ super(props);
9
+ this.state = { isActive: props.isActive, isChildActive: false };
10
+ this.toggleChild = this.toggleChild.bind(this);
11
+ }
12
+
13
+ toggleChild() {
14
+ this.setState({ isChildActive: !this.state.isChildActive });
15
+ }
16
+
17
+ render() {
18
+ let {
19
+ children,
20
+ align,
21
+ childAnimationName,
22
+ palette,
23
+ onClick,
24
+ animationName,
25
+ zIndex,
26
+ isActive
27
+ } = this.props;
28
+ let { isChildActive } = this.state;
29
+ return (
30
+ <Animation
31
+ name={animationName}
32
+ isActive={isActive}
33
+ onExit={this.toggleChild}
34
+ onEntered={this.toggleChild}
35
+ delayClassName={childAnimationName ? style.delay : ""}
36
+ exitDuration={childAnimationName && 500}
37
+ >
38
+ <div
39
+ className={`
40
+ ${style.container} ${style[`index${zIndex}`]} ${style[palette]}
41
+ `}
42
+ onClick={onClick ? onClick : null}
43
+ >
44
+ {children && (
45
+ <Container alignBox="row" align={align}>
46
+ {childAnimationName ? (
47
+ <Animation name={childAnimationName} isActive={isChildActive}>
48
+ {children}
49
+ </Animation>
50
+ ) : (
51
+ children
52
+ )}
53
+ </Container>
54
+ )}
55
+ </div>
56
+ </Animation>
57
+ );
58
+ }
59
+ }
60
+ FreezeLayer.propTypes = {
61
+ align: PropTypes.oneOf(["horizontal", "vertical", "both"]),
62
+ animationName: PropTypes.oneOf([
63
+ "zoomIn",
64
+ "scaleIn",
65
+ "fadeIn",
66
+ "slideLeft",
67
+ "slideDown",
68
+ "skewIn",
69
+ "default",
70
+ "none"
71
+ ]),
72
+ childAnimationName: PropTypes.string,
73
+ children: PropTypes.node,
74
+ isActive: PropTypes.bool,
75
+ onClick: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),
76
+ palette: PropTypes.oneOf(["dark", "default", "darkLight", "plain", "snow"]),
77
+ zIndex: PropTypes.oneOf(["3", "5", "7", "10"])
78
+ };
79
+ FreezeLayer.defaultProps = {
80
+ animationName: "default",
81
+ isActive: false,
82
+ palette: "default",
83
+ zIndex: "5"
84
+ };
@@ -0,0 +1,11 @@
1
+ .addButtonContainer {
2
+ text-align: right;
3
+ padding: 10px;
4
+ }
5
+ .listContainer {
6
+ margin-top: 20px;
7
+ padding: 5px 0 10px 10px;
8
+ }
9
+ .listItem {
10
+ padding: 10px 0;
11
+ }
@@ -0,0 +1,61 @@
1
+ import React, { Component } from "react";
2
+ import PropTypes from "prop-types";
3
+ import { URL_PREFIX } from "../../util/Common";
4
+ import { Button, Container, Box, Switch } from "@zohodesk/components";
5
+ import Card, {
6
+ CardHeader,
7
+ CardContent
8
+ } from "@zohodesk/components/lib/Card/Card";
9
+ import style from "./Sample.module.css";
10
+
11
+ /**
12
+ * BlockList
13
+ */
14
+ class SampleList extends Component {
15
+ constructor(props) {
16
+ super(props);
17
+ }
18
+ render() {
19
+ let { samples = {} } = this.props;
20
+
21
+ samples = samples.map((sample, index) => {
22
+ const { id, name, status } = sample;
23
+ const url = `${URL_PREFIX}/block/${id}`;
24
+ const editUrl = `${URL_PREFIX}/block/${id}/edit`;
25
+
26
+ return (
27
+ <div key={id} className={style.listItem}>
28
+ {id}-{name}
29
+ </div>
30
+ );
31
+ });
32
+
33
+ if (samples.length === 0) {
34
+ samples = <div>There is no samples</div>;
35
+ }
36
+ return (
37
+ <Card isScrollAttribute={true}>
38
+ <CardHeader>
39
+ <div className={style.addButtonContainer}>
40
+ <Button
41
+ palette="primaryFilled"
42
+ size="medium"
43
+ text="Add Sample"
44
+ onClick={this.goAddForm}
45
+ />
46
+ </div>
47
+ </CardHeader>
48
+ <CardContent isScrollAttribute={true} scroll="vertical">
49
+ <div className={style.listContainer}>{samples}</div>
50
+ </CardContent>
51
+ </Card>
52
+ );
53
+ }
54
+ }
55
+
56
+ SampleList.propTypes = {
57
+ push: PropTypes.func,
58
+ samples: PropTypes.object
59
+ };
60
+
61
+ export default SampleList;
@@ -0,0 +1,41 @@
1
+ .container {
2
+ box-shadow: 0 6px 12px rgba(0, 0, 0, 0.176);
3
+ background-color: var(--zd_bg_pure);
4
+ right: 0;
5
+ top: 0;
6
+ bottom: 0;
7
+ position: absolute;
8
+ z-index: 5;
9
+ overflow: auto;
10
+ }
11
+ .xsmall {
12
+ width: 360px;
13
+ }
14
+ .small {
15
+ width: 410px;
16
+ }
17
+ .medium {
18
+ width: 660px;
19
+ }
20
+ .large {
21
+ width: 936px;
22
+ }
23
+
24
+ .close a,
25
+ .close input,
26
+ .close textarea,
27
+ .close button,
28
+ .close iframe {
29
+ display: none;
30
+ }
31
+
32
+ @media only screen and (max-width: 22.5em) {
33
+ .container {
34
+ width: 100%;
35
+ }
36
+ }
37
+
38
+ html[dir="rtl"] .container {
39
+ left: 0;
40
+ right: initial;
41
+ }