@zohodesk/react-cli 0.0.1-test.148.2 → 1.0.0

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 (174) hide show
  1. package/.eslintignore +7 -7
  2. package/.eslintrc.js +180 -183
  3. package/.prettierrc +6 -0
  4. package/{CHANGELOG.md → CHANGELOG-fz.md} +0 -0
  5. package/Changelog.md +1019 -0
  6. package/README.md +1152 -678
  7. package/bin/cli.js +483 -392
  8. package/docs/CustomChunks.md +26 -0
  9. package/docs/DevServerPort.md +39 -0
  10. package/docs/DevStart.md +18 -0
  11. package/docs/HoverActive.md +12 -0
  12. package/docs/InstallNode.md +28 -0
  13. package/docs/SelectorWeight.md +6 -0
  14. package/docs/TODOS.md +10 -0
  15. package/docs/ValueReplacer.md +60 -0
  16. package/docs/VariableConversion.md +724 -0
  17. package/docs/warnings_while_install.txt +35 -0
  18. package/files/eslintrc.js +62 -62
  19. package/files/prettierrc.js +3 -3
  20. package/lib/common/index.js +6 -6
  21. package/lib/common/splitChunks.js +60 -12
  22. package/lib/common/sslcertUpdater.js +59 -0
  23. package/lib/common/testPattern.js +69 -0
  24. package/lib/common/valueReplacer.js +55 -0
  25. package/lib/configs/jest.config.js +18 -8
  26. package/lib/configs/libAlias.js +38 -0
  27. package/lib/configs/resolvers.js +40 -0
  28. package/lib/configs/webpack.css.umd.config.js +4 -4
  29. package/lib/configs/webpack.dev.config.js +59 -54
  30. package/lib/configs/webpack.docs.config.js +56 -53
  31. package/lib/configs/webpack.impact.config.js +54 -50
  32. package/lib/configs/webpack.prod.config.js +72 -47
  33. package/lib/constants.js +31 -0
  34. package/lib/jest/preProcessors/cssPreprocessor.js +16 -7
  35. package/lib/loaderUtils/configsAssetsLoaders.js +117 -0
  36. package/lib/loaderUtils/getCSSLoaders.js +89 -21
  37. package/lib/loaderUtils/index.js +4 -4
  38. package/lib/loaderUtils/windowsModification.js +11 -0
  39. package/lib/loaders/fileBountryLoader.js +17 -0
  40. package/lib/loaders/scriptInstrumentLoader.js +2 -2
  41. package/lib/loaders/selectorMappingLoader.js +75 -0
  42. package/lib/loaders/workerLoader.js +9 -9
  43. package/lib/pluginUtils/configHtmlWebpackPlugins.js +59 -0
  44. package/lib/pluginUtils/getDevPlugins.js +69 -45
  45. package/lib/pluginUtils/getDocsPlugins.js +6 -8
  46. package/lib/pluginUtils/getLibraryImactPlugins.js +23 -0
  47. package/lib/pluginUtils/getProdPlugins.js +73 -58
  48. package/lib/pluginUtils/index.js +12 -12
  49. package/lib/plugins/CdnChangePlugin.js +16 -2
  50. package/lib/plugins/EFCPlugin.js +52 -20
  51. package/lib/plugins/EFCPlugin.md +6 -0
  52. package/lib/plugins/EFCTemplatePlugin.js +151 -0
  53. package/lib/plugins/I18NInjectIntoIndexPlugin.js +4 -4
  54. package/lib/plugins/I18nSplitPlugin/I18nDownlodLogic.js +38 -38
  55. package/lib/plugins/I18nSplitPlugin/I18nFilesEmitter.js +30 -30
  56. package/lib/plugins/I18nSplitPlugin/I18nKeysIdentifer.js +8 -8
  57. package/lib/plugins/I18nSplitPlugin/I18nSplit.md +95 -86
  58. package/lib/plugins/I18nSplitPlugin/README.md +25 -25
  59. package/lib/plugins/I18nSplitPlugin/index.js +57 -57
  60. package/lib/plugins/I18nSplitPlugin/utils/hashUtils.js +2 -2
  61. package/lib/plugins/I18nSplitPlugin/utils/propertiesUtils.js +1 -1
  62. package/lib/plugins/ManifestPlugin.js +8 -0
  63. package/lib/plugins/RequireVariablePublicPlugin.js +30 -0
  64. package/lib/plugins/ResourceHintsPlugin.js +17 -17
  65. package/lib/plugins/RtlSplitPlugin/RtlCssPlugin.js +11 -7
  66. package/lib/plugins/RtlSplitPlugin/RtrSplit.md +30 -0
  67. package/lib/plugins/SelectorPlugin.js +97 -0
  68. package/lib/plugins/ServiceWorkerPlugin.js +13 -9
  69. package/lib/plugins/SourceMapHookPlugin.js +9 -3
  70. package/lib/plugins/TPHashMappingPlugin.js +4 -4
  71. package/lib/plugins/VariableConversionCollector.js +352 -0
  72. package/lib/plugins/composeCommonPlugin.js +30 -0
  73. package/lib/plugins/index.js +36 -36
  74. package/lib/plugins/libraryImpactPlugin.js +14 -2
  75. package/lib/postcss-plugins/{ExcludeRTLPlugin.js → ExcludePlugin.js} +1 -1
  76. package/lib/postcss-plugins/RTLSplitPlugin.js +36 -32
  77. package/lib/postcss-plugins/ValueReplacer.js +46 -0
  78. package/lib/postcss-plugins/__test__/hoverActivePlugin.spec.js +22 -0
  79. package/lib/postcss-plugins/__test__/test1Input.css +39 -0
  80. package/lib/postcss-plugins/__test__/test1Output.css +39 -0
  81. package/lib/postcss-plugins/hoverActivePlugin.js +389 -0
  82. package/lib/postcss-plugins/variableModificationPlugin/ErrorHandler.js +60 -0
  83. package/lib/postcss-plugins/variableModificationPlugin/index.js +307 -0
  84. package/lib/postcss-plugins/variableModifier.js +244 -0
  85. package/lib/schemas/index.js +166 -11
  86. package/lib/servers/devBuild.js +102 -0
  87. package/lib/servers/docsServerCore.js +16 -18
  88. package/lib/servers/getCliPath.js +28 -0
  89. package/lib/servers/httpsOptions.js +49 -0
  90. package/lib/servers/nowatchserver.js +206 -0
  91. package/lib/servers/server.js +114 -82
  92. package/lib/sh/pre-commit.sh +34 -34
  93. package/lib/sh/reportPublish.sh +45 -45
  94. package/lib/templates/linterConstant.js +1 -1
  95. package/lib/utils/buildstats.html +148 -148
  96. package/lib/utils/cssClassNameGenerate.js +9 -2
  97. package/lib/utils/cssURLReplacer.js +30 -43
  98. package/lib/utils/getCurrentBranch.js +1 -1
  99. package/lib/utils/getDependenciesImpactList.js +14 -12
  100. package/lib/utils/getFileType.js +49 -0
  101. package/lib/utils/getOptions.js +118 -10
  102. package/lib/utils/index.js +44 -20
  103. package/lib/utils/jsonHelper.js +12 -3
  104. package/lib/utils/reinstallDependencies.js +1 -1
  105. package/lib/utils/repoClone.js +16 -4
  106. package/lib/utils/resultSchema.json +73 -73
  107. package/lib/utils/rtl.js +19 -2
  108. package/lib/utils/useExitCleanup.js +55 -0
  109. package/npm8.md +9 -0
  110. package/package.json +121 -142
  111. package/postpublish.js +8 -0
  112. package/result.json +1 -0
  113. package/templates/app/.eslintrc.js +140 -140
  114. package/templates/app/README.md +12 -12
  115. package/templates/app/app/index.html +24 -24
  116. package/templates/app/app/properties/ApplicationResources_en_US.properties +1 -1
  117. package/templates/app/app/properties/i18nkeys.json +3 -3
  118. package/templates/app/docs/all.html +69 -69
  119. package/templates/app/mockapi/index.js +18 -18
  120. package/templates/app/package.json +37 -37
  121. package/templates/app/src/actions/SampleActions/index.js +37 -37
  122. package/templates/app/src/actions/index.js +65 -65
  123. package/templates/app/src/appUrls.js +19 -19
  124. package/templates/app/src/components/Alert/Alert.js +134 -134
  125. package/templates/app/src/components/Alert/Alert.module.css +79 -79
  126. package/templates/app/src/components/FreezeLayer/FreezeLayer.css +37 -37
  127. package/templates/app/src/components/FreezeLayer/FreezeLayer.js +84 -84
  128. package/templates/app/src/components/Sample/Sample.module.css +11 -11
  129. package/templates/app/src/components/Sample/SampleList.js +61 -61
  130. package/templates/app/src/components/Slider/Slider.css +41 -41
  131. package/templates/app/src/components/Slider/Slider.js +55 -55
  132. package/templates/app/src/containers/AlertContainer/index.js +15 -15
  133. package/templates/app/src/containers/AppContainer/index.js +96 -96
  134. package/templates/app/src/containers/AppContainer/index.module.css +27 -27
  135. package/templates/app/src/containers/CustomMatch/index.js +65 -65
  136. package/templates/app/src/containers/DevTools/index.js +10 -10
  137. package/templates/app/src/containers/Header/index.js +67 -67
  138. package/templates/app/src/containers/Header/index.module.css +43 -43
  139. package/templates/app/src/containers/Redirect/index.js +63 -63
  140. package/templates/app/src/containers/Redirector/index.js +47 -47
  141. package/templates/app/src/containers/SampleListContainer/ListContainer.js +42 -42
  142. package/templates/app/src/containers/SampleListContainer/ListContainer.module.css +3 -3
  143. package/templates/app/src/historyChange.js +5 -5
  144. package/templates/app/src/index.html +10 -10
  145. package/templates/app/src/index.js +24 -24
  146. package/templates/app/src/middleware/PromiseMiddleware.js +59 -59
  147. package/templates/app/src/reducers/alertData.js +11 -11
  148. package/templates/app/src/reducers/index.js +6 -6
  149. package/templates/app/src/reducers/samples.js +19 -19
  150. package/templates/app/src/store/configureStore.dev.js +51 -51
  151. package/templates/app/src/store/configureStore.js +5 -5
  152. package/templates/app/src/store/configureStore.prod.js +26 -26
  153. package/templates/app/src/util/Common.js +5 -5
  154. package/templates/app/src/util/RequestAPI.js +132 -132
  155. package/templates/docs/all.html +249 -249
  156. package/templates/docs/component.html +178 -178
  157. package/templates/docs/components.html +221 -221
  158. package/templates/docs/css/b.min.css +6 -6
  159. package/templates/docs/css/component.css +42 -42
  160. package/templates/docs/css/componentTest.css +6 -6
  161. package/templates/docs/css/hopscotch.css +585 -585
  162. package/templates/docs/css/style.css +1022 -1022
  163. package/templates/docs/impactReportTemplate.html +154 -154
  164. package/templates/docs/index.html +1501 -1493
  165. package/templates/docs/js/active-line.js +72 -72
  166. package/templates/docs/js/b.min.js +7 -7
  167. package/templates/docs/js/codemirror.js +9680 -9680
  168. package/templates/docs/js/designTokens.js +334 -334
  169. package/templates/docs/js/j.min.js +4 -4
  170. package/templates/docs/js/javascript.js +874 -874
  171. package/templates/docs/js/matchbrackets.js +145 -145
  172. package/unittest/index.html +37 -0
  173. package/cert/cert.pem +0 -105
  174. package/cert/key.pem +0 -30
@@ -1,65 +1,65 @@
1
- import React, { Component } from "react";
2
- import { connect } from "react-redux";
3
- import PropTypes from "prop-types";
4
- import { replace } from "../../actions";
5
- class CustomMatch extends Component {
6
- render() {
7
- let { children, isMatch } = this.props;
8
- return (isMatch && React.Children.only(children)) || null;
9
- }
10
- }
11
-
12
- export default connect(
13
- (state, props) => {
14
- let isMatch;
15
- if (Array.isArray(props.names)) {
16
- isMatch = props.names.some(urlObj => {
17
- let { name, module, isExactly } = urlObj || {};
18
- const { paramMap = {}, urls } = state.routing;
19
- let url = urls[name] || {};
20
-
21
- let { moduleName } = paramMap;
22
- if ((isExactly && url.match === 2) || (!isExactly && url.match)) {
23
- isMatch = true;
24
- return module ? moduleName === module : isMatch;
25
- }
26
- return false;
27
- });
28
- } else {
29
- let url = state.routing.urls[props.name];
30
- if (url) {
31
- isMatch =
32
- (props.isExactly && url.match === 2) ||
33
- (!props.isExactly && url.match);
34
- if (isMatch && Array.isArray(props.module)) {
35
- let modules = props.module;
36
- isMatch = modules.some(module => {
37
- return state.routing.paramMap.moduleName === module;
38
- });
39
- } else if (isMatch && props.module) {
40
- isMatch = state.routing.paramMap.moduleName === props.module;
41
- }
42
- }
43
- }
44
- isMatch =
45
- !isMatch && props.orMapStateMatch
46
- ? props.orMapStateMatch(state)
47
- : isMatch;
48
- return {
49
- isMatch: isMatch ? true : false,
50
- isAuthenticate: props.checkAuthenticate
51
- ? props.checkAuthenticate(state)
52
- : true
53
- };
54
- },
55
- { replace }
56
- )(CustomMatch);
57
-
58
- CustomMatch.defaultProps = {
59
- isExactly: false
60
- };
61
- CustomMatch.propTypes = {
62
- children: PropTypes.element,
63
- isExactly: PropTypes.bool,
64
- isMatch: PropTypes.bool
65
- };
1
+ import React, { Component } from "react";
2
+ import { connect } from "react-redux";
3
+ import PropTypes from "prop-types";
4
+ import { replace } from "../../actions";
5
+ class CustomMatch extends Component {
6
+ render() {
7
+ let { children, isMatch } = this.props;
8
+ return (isMatch && React.Children.only(children)) || null;
9
+ }
10
+ }
11
+
12
+ export default connect(
13
+ (state, props) => {
14
+ let isMatch;
15
+ if (Array.isArray(props.names)) {
16
+ isMatch = props.names.some(urlObj => {
17
+ let { name, module, isExactly } = urlObj || {};
18
+ const { paramMap = {}, urls } = state.routing;
19
+ let url = urls[name] || {};
20
+
21
+ let { moduleName } = paramMap;
22
+ if ((isExactly && url.match === 2) || (!isExactly && url.match)) {
23
+ isMatch = true;
24
+ return module ? moduleName === module : isMatch;
25
+ }
26
+ return false;
27
+ });
28
+ } else {
29
+ let url = state.routing.urls[props.name];
30
+ if (url) {
31
+ isMatch =
32
+ (props.isExactly && url.match === 2) ||
33
+ (!props.isExactly && url.match);
34
+ if (isMatch && Array.isArray(props.module)) {
35
+ let modules = props.module;
36
+ isMatch = modules.some(module => {
37
+ return state.routing.paramMap.moduleName === module;
38
+ });
39
+ } else if (isMatch && props.module) {
40
+ isMatch = state.routing.paramMap.moduleName === props.module;
41
+ }
42
+ }
43
+ }
44
+ isMatch =
45
+ !isMatch && props.orMapStateMatch
46
+ ? props.orMapStateMatch(state)
47
+ : isMatch;
48
+ return {
49
+ isMatch: isMatch ? true : false,
50
+ isAuthenticate: props.checkAuthenticate
51
+ ? props.checkAuthenticate(state)
52
+ : true
53
+ };
54
+ },
55
+ { replace }
56
+ )(CustomMatch);
57
+
58
+ CustomMatch.defaultProps = {
59
+ isExactly: false
60
+ };
61
+ CustomMatch.propTypes = {
62
+ children: PropTypes.element,
63
+ isExactly: PropTypes.bool,
64
+ isMatch: PropTypes.bool
65
+ };
@@ -1,10 +1,10 @@
1
- import React from "react";
2
- import { createDevTools } from "redux-devtools";
3
- import LogMonitor from "redux-devtools-log-monitor";
4
- import DockMonitor from "redux-devtools-dock-monitor";
5
-
6
- export default createDevTools(
7
- <DockMonitor toggleVisibilityKey="ctrl-h" changePositionKey="ctrl-w">
8
- <LogMonitor />
9
- </DockMonitor>
10
- );
1
+ import React from "react";
2
+ import { createDevTools } from "redux-devtools";
3
+ import LogMonitor from "redux-devtools-log-monitor";
4
+ import DockMonitor from "redux-devtools-dock-monitor";
5
+
6
+ export default createDevTools(
7
+ <DockMonitor toggleVisibilityKey="ctrl-h" changePositionKey="ctrl-w">
8
+ <LogMonitor />
9
+ </DockMonitor>
10
+ );
@@ -1,67 +1,67 @@
1
- import React, { Component } from "react";
2
- import PropTypes from "prop-types";
3
- import { connect } from "react-redux";
4
- import style from "./index.module.css";
5
- import { push, alertAction } from "../../actions";
6
-
7
- import { URL_PREFIX } from "../../util/Common";
8
-
9
- class Header extends Component {
10
- constructor(props) {
11
- super(props);
12
- this.state = {
13
- tabs: [
14
- {
15
- url: `${URL_PREFIX}/sample`,
16
- name: "Sample",
17
- apiName: "sample",
18
- id: "1"
19
- }
20
- ],
21
- selectedTab: "sample"
22
- };
23
- this.changeTab = this.changeTab.bind(this);
24
- }
25
- changeTab(e) {
26
- e.preventDefault();
27
- let { push } = this.props;
28
-
29
- push({ pathname: e.target.getAttribute("href") });
30
- }
31
- render() {
32
- let { tabs, selectedTab } = this.state;
33
- const { topbar, menuUl, menuli, menuliActive, menuLink } = style;
34
-
35
- tabs = tabs.map((tab, index) => {
36
- const { apiName, url, name } = tab;
37
-
38
- const tabClass =
39
- selectedTab === apiName ? menuli + " " + menuliActive : menuli;
40
- return (
41
- <li className={tabClass} key={index}>
42
- <a href={url} className={menuLink} onClick={this.changeTab}>
43
- {name}
44
- </a>
45
- </li>
46
- );
47
- });
48
- return (
49
- <div className={topbar}>
50
- <ul className={menuUl}>{tabs}</ul>
51
- </div>
52
- );
53
- }
54
- }
55
-
56
- Header.propTypes = {
57
- push: PropTypes.func
58
- };
59
-
60
- const mapStateToProps = (state, ownProps) => {
61
- return {};
62
- };
63
-
64
- export default connect(
65
- mapStateToProps,
66
- { push, showConfirmBox: alertAction.showConfirmBox }
67
- )(Header);
1
+ import React, { Component } from "react";
2
+ import PropTypes from "prop-types";
3
+ import { connect } from "react-redux";
4
+ import style from "./index.module.css";
5
+ import { push, alertAction } from "../../actions";
6
+
7
+ import { URL_PREFIX } from "../../util/Common";
8
+
9
+ class Header extends Component {
10
+ constructor(props) {
11
+ super(props);
12
+ this.state = {
13
+ tabs: [
14
+ {
15
+ url: `${URL_PREFIX}/sample`,
16
+ name: "Sample",
17
+ apiName: "sample",
18
+ id: "1"
19
+ }
20
+ ],
21
+ selectedTab: "sample"
22
+ };
23
+ this.changeTab = this.changeTab.bind(this);
24
+ }
25
+ changeTab(e) {
26
+ e.preventDefault();
27
+ let { push } = this.props;
28
+
29
+ push({ pathname: e.target.getAttribute("href") });
30
+ }
31
+ render() {
32
+ let { tabs, selectedTab } = this.state;
33
+ const { topbar, menuUl, menuli, menuliActive, menuLink } = style;
34
+
35
+ tabs = tabs.map((tab, index) => {
36
+ const { apiName, url, name } = tab;
37
+
38
+ const tabClass =
39
+ selectedTab === apiName ? menuli + " " + menuliActive : menuli;
40
+ return (
41
+ <li className={tabClass} key={index}>
42
+ <a href={url} className={menuLink} onClick={this.changeTab}>
43
+ {name}
44
+ </a>
45
+ </li>
46
+ );
47
+ });
48
+ return (
49
+ <div className={topbar}>
50
+ <ul className={menuUl}>{tabs}</ul>
51
+ </div>
52
+ );
53
+ }
54
+ }
55
+
56
+ Header.propTypes = {
57
+ push: PropTypes.func
58
+ };
59
+
60
+ const mapStateToProps = (state, ownProps) => {
61
+ return {};
62
+ };
63
+
64
+ export default connect(
65
+ mapStateToProps,
66
+ { push, showConfirmBox: alertAction.showConfirmBox }
67
+ )(Header);
@@ -1,43 +1,43 @@
1
- .topbar {
2
- min-height: 45px;
3
- background: #1e2633;
4
-
5
- box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.25);
6
- width: 100%;
7
- z-index: 5;
8
- color: #fff;
9
- }
10
-
11
- :global ul,
12
- :global li {
13
- padding: 0;
14
- margin: 0;
15
- }
16
-
17
- .menuUl {
18
- list-style: none;
19
- }
20
-
21
- .menuli {
22
- float: left;
23
- box-sizing: border-box;
24
- cursor: pointer;
25
- position: relative;
26
- font-size: 12px;
27
- letter-spacing: 0.6px;
28
- text-transform: uppercase;
29
- }
30
-
31
- .menuliActive {
32
- background: #4b515c;
33
- }
34
-
35
- .menuLink {
36
- padding: 17px 14px 15px;
37
- float: left;
38
- line-height: 13px;
39
- color: #fff;
40
- max-width: 110px;
41
- -webkit-font-smoothing: antialiased;
42
- -moz-osx-font-smoothing: grayscale;
43
- }
1
+ .topbar {
2
+ min-height: 45px;
3
+ background: #1e2633;
4
+
5
+ box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.25);
6
+ width: 100%;
7
+ z-index: 5;
8
+ color: #fff;
9
+ }
10
+
11
+ :global ul,
12
+ :global li {
13
+ padding: 0;
14
+ margin: 0;
15
+ }
16
+
17
+ .menuUl {
18
+ list-style: none;
19
+ }
20
+
21
+ .menuli {
22
+ float: left;
23
+ box-sizing: border-box;
24
+ cursor: pointer;
25
+ position: relative;
26
+ font-size: 12px;
27
+ letter-spacing: 0.6px;
28
+ text-transform: uppercase;
29
+ }
30
+
31
+ .menuliActive {
32
+ background: #4b515c;
33
+ }
34
+
35
+ .menuLink {
36
+ padding: 17px 14px 15px;
37
+ float: left;
38
+ line-height: 13px;
39
+ color: #fff;
40
+ max-width: 110px;
41
+ -webkit-font-smoothing: antialiased;
42
+ -moz-osx-font-smoothing: grayscale;
43
+ }
@@ -1,63 +1,63 @@
1
- import React, { Component } from "react";
2
- import PropTypes from "prop-types";
3
- import { connect } from "react-redux";
4
- import { replace } from "../../actions";
5
- class Redirect extends Component {
6
- constructor(props) {
7
- super(props);
8
- }
9
-
10
- render() {
11
- return null;
12
- }
13
-
14
- componentDidMount() {
15
- if (this.props.isMatch) {
16
- this.props.replace(this.props.to(this.props.location));
17
- }
18
- }
19
-
20
- componentDidUpdate() {
21
- if (this.props.isMatch) {
22
- this.props.replace(this.props.to(this.props.location));
23
- }
24
- }
25
- }
26
-
27
- Redirect.propTypes = {
28
- from: PropTypes.shape({
29
- name: PropTypes.string,
30
- module: PropTypes.string
31
- }),
32
- to: PropTypes.func
33
- };
34
- function mapStateToProps(state, props) {
35
- let url = state.routing.urls[props.from.name];
36
-
37
- if (url && url.match == 2) {
38
- let { module } = props.from;
39
- if (props.from.module) {
40
- if (state.routing.paramMap.moduleName == props.from.module) {
41
- return {
42
- isMatch: true,
43
- location: state.routing.location
44
- };
45
- }
46
- return {
47
- isMatch: false
48
- };
49
- }
50
- return {
51
- isMatch: true
52
- };
53
- }
54
- return {
55
- isMatch: false,
56
- location: state.routing.location
57
- };
58
- }
59
-
60
- export default connect(
61
- mapStateToProps,
62
- { replace }
63
- )(Redirect);
1
+ import React, { Component } from "react";
2
+ import PropTypes from "prop-types";
3
+ import { connect } from "react-redux";
4
+ import { replace } from "../../actions";
5
+ class Redirect extends Component {
6
+ constructor(props) {
7
+ super(props);
8
+ }
9
+
10
+ render() {
11
+ return null;
12
+ }
13
+
14
+ componentDidMount() {
15
+ if (this.props.isMatch) {
16
+ this.props.replace(this.props.to(this.props.location));
17
+ }
18
+ }
19
+
20
+ componentDidUpdate() {
21
+ if (this.props.isMatch) {
22
+ this.props.replace(this.props.to(this.props.location));
23
+ }
24
+ }
25
+ }
26
+
27
+ Redirect.propTypes = {
28
+ from: PropTypes.shape({
29
+ name: PropTypes.string,
30
+ module: PropTypes.string
31
+ }),
32
+ to: PropTypes.func
33
+ };
34
+ function mapStateToProps(state, props) {
35
+ let url = state.routing.urls[props.from.name];
36
+
37
+ if (url && url.match == 2) {
38
+ let { module } = props.from;
39
+ if (props.from.module) {
40
+ if (state.routing.paramMap.moduleName == props.from.module) {
41
+ return {
42
+ isMatch: true,
43
+ location: state.routing.location
44
+ };
45
+ }
46
+ return {
47
+ isMatch: false
48
+ };
49
+ }
50
+ return {
51
+ isMatch: true
52
+ };
53
+ }
54
+ return {
55
+ isMatch: false,
56
+ location: state.routing.location
57
+ };
58
+ }
59
+
60
+ export default connect(
61
+ mapStateToProps,
62
+ { replace }
63
+ )(Redirect);
@@ -1,47 +1,47 @@
1
- import React, { Component } from "react";
2
- import PropTypes from "prop-types";
3
- import { connect } from "react-redux";
4
-
5
- import Redirect from "../Redirect";
6
-
7
- class Redirector extends Component {
8
- constructor(props) {
9
- super(props);
10
- }
11
-
12
- render() {
13
- let { urls } = this.props;
14
- return (
15
- <div style={{ display: "none" }}>
16
- {urls.map((url, i) => (
17
- <Redirect
18
- key={`redirect${i}`}
19
- from={{ name: url.name, module: url.module }}
20
- to={location =>
21
- Object.assign({}, location, {
22
- pathname: `${url.pathname}`
23
- })
24
- }
25
- />
26
- ))}
27
- </div>
28
- );
29
- }
30
- }
31
-
32
- Redirector.propTypes = {
33
- urls: PropTypes.array.isRequired
34
- };
35
-
36
- function mapStateToProps(state, props) {
37
- const urls = [
38
- {
39
- name: "sampleList",
40
- module: "sample",
41
- pathname: `${state.routing.location.pathname}/sample`
42
- }
43
- ];
44
-
45
- return { urls };
46
- }
47
- export default connect(mapStateToProps)(Redirector);
1
+ import React, { Component } from "react";
2
+ import PropTypes from "prop-types";
3
+ import { connect } from "react-redux";
4
+
5
+ import Redirect from "../Redirect";
6
+
7
+ class Redirector extends Component {
8
+ constructor(props) {
9
+ super(props);
10
+ }
11
+
12
+ render() {
13
+ let { urls } = this.props;
14
+ return (
15
+ <div style={{ display: "none" }}>
16
+ {urls.map((url, i) => (
17
+ <Redirect
18
+ key={`redirect${i}`}
19
+ from={{ name: url.name, module: url.module }}
20
+ to={location =>
21
+ Object.assign({}, location, {
22
+ pathname: `${url.pathname}`
23
+ })
24
+ }
25
+ />
26
+ ))}
27
+ </div>
28
+ );
29
+ }
30
+ }
31
+
32
+ Redirector.propTypes = {
33
+ urls: PropTypes.array.isRequired
34
+ };
35
+
36
+ function mapStateToProps(state, props) {
37
+ const urls = [
38
+ {
39
+ name: "sampleList",
40
+ module: "sample",
41
+ pathname: `${state.routing.location.pathname}/sample`
42
+ }
43
+ ];
44
+
45
+ return { urls };
46
+ }
47
+ export default connect(mapStateToProps)(Redirector);
@@ -1,42 +1,42 @@
1
- import React, { Component } from "react";
2
- import PropTypes from "prop-types";
3
- import { connect } from "react-redux";
4
- import { push, alertAction } from "../../actions";
5
- import { getSampleList } from "../../actions/SampleActions";
6
- import style from "./ListContainer.module.css";
7
- import SampleList from "../../components/Sample/SampleList";
8
-
9
- class ListContainer extends Component {
10
- constructor(props) {
11
- super(props);
12
- }
13
-
14
- componentDidMount() {
15
- const { getSampleList } = this.props;
16
- getSampleList().then(res => {});
17
- }
18
- render() {
19
- const { samples = [] } = this.props;
20
- return (
21
- <div className={style.container}>
22
- <SampleList samples={samples} />
23
- </div>
24
- );
25
- }
26
- }
27
-
28
- ListContainer.propTypes = {
29
- push: PropTypes.func,
30
- getSampleList: PropTypes.func,
31
- samples: PropTypes.array.isRequired
32
- };
33
-
34
- const mapStateToProps = (state, ownProps) => {
35
- const { samples = [] } = state;
36
- return { samples };
37
- };
38
-
39
- export default connect(
40
- mapStateToProps,
41
- { push, getSampleList }
42
- )(ListContainer);
1
+ import React, { Component } from "react";
2
+ import PropTypes from "prop-types";
3
+ import { connect } from "react-redux";
4
+ import { push, alertAction } from "../../actions";
5
+ import { getSampleList } from "../../actions/SampleActions";
6
+ import style from "./ListContainer.module.css";
7
+ import SampleList from "../../components/Sample/SampleList";
8
+
9
+ class ListContainer extends Component {
10
+ constructor(props) {
11
+ super(props);
12
+ }
13
+
14
+ componentDidMount() {
15
+ const { getSampleList } = this.props;
16
+ getSampleList().then(res => {});
17
+ }
18
+ render() {
19
+ const { samples = [] } = this.props;
20
+ return (
21
+ <div className={style.container}>
22
+ <SampleList samples={samples} />
23
+ </div>
24
+ );
25
+ }
26
+ }
27
+
28
+ ListContainer.propTypes = {
29
+ push: PropTypes.func,
30
+ getSampleList: PropTypes.func,
31
+ samples: PropTypes.array.isRequired
32
+ };
33
+
34
+ const mapStateToProps = (state, ownProps) => {
35
+ const { samples = [] } = state;
36
+ return { samples };
37
+ };
38
+
39
+ export default connect(
40
+ mapStateToProps,
41
+ { push, getSampleList }
42
+ )(ListContainer);