@zohodesk/react-cli 1.0.1 → 1.0.2-exp.2

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 (137) hide show
  1. package/.eslintignore +7 -7
  2. package/.eslintrc.js +180 -180
  3. package/.prettierrc +6 -6
  4. package/Changelog.md +1019 -1019
  5. package/README.md +1165 -1160
  6. package/bin/cli.js +483 -483
  7. package/docs/CustomChunks.md +26 -26
  8. package/docs/DevServerPort.md +39 -39
  9. package/docs/DevStart.md +18 -18
  10. package/docs/HoverActive.md +12 -12
  11. package/docs/InstallNode.md +28 -28
  12. package/docs/SelectorWeight.md +8 -8
  13. package/docs/TODOS.md +10 -10
  14. package/docs/ValueReplacer.md +60 -60
  15. package/docs/VariableConversion.md +729 -729
  16. package/docs/warnings_while_install.txt +35 -35
  17. package/files/eslintrc.js +62 -62
  18. package/files/prettierrc.js +3 -3
  19. package/lib/configs/webpack.css.umd.config.js +4 -4
  20. package/lib/configs/webpack.dev.config.js +6 -0
  21. package/lib/configs/webpack.docs.config.js +4 -0
  22. package/lib/configs/webpack.impact.config.js +4 -0
  23. package/lib/configs/webpack.prod.config.js +6 -0
  24. package/lib/loaderUtils/configsAssetsLoaders.js +33 -33
  25. package/lib/loaderUtils/getCSSLoaders.js +79 -50
  26. package/lib/loaderUtils/tests/windowsModification.test.js +10 -0
  27. package/lib/loaderUtils/windowsModification.js +6 -1
  28. package/lib/loaders/composeLoader.js +175 -0
  29. package/lib/loaders/workerLoader.js +9 -9
  30. package/lib/pluginUtils/getDevPlugins.js +18 -7
  31. package/lib/pluginUtils/getProdPlugins.js +6 -6
  32. package/lib/pluginUtils/getUMDCSSPlugins.js +1 -1
  33. package/lib/pluginUtils/getUMDComponentPlugins.js +1 -1
  34. package/lib/plugins/EFCPlugin.md +6 -6
  35. package/lib/plugins/I18NInjectIntoIndexPlugin.js +4 -4
  36. package/lib/plugins/I18nSplitPlugin/I18nDownlodLogic.js +38 -38
  37. package/lib/plugins/I18nSplitPlugin/I18nFilesEmitter.js +30 -30
  38. package/lib/plugins/I18nSplitPlugin/I18nKeysIdentifer.js +8 -8
  39. package/lib/plugins/I18nSplitPlugin/I18nSplit.md +95 -95
  40. package/lib/plugins/I18nSplitPlugin/README.md +25 -25
  41. package/lib/plugins/I18nSplitPlugin/index.js +57 -57
  42. package/lib/plugins/{UglifyCSSPlugin.js → MinifyPlugin.js} +3 -3
  43. package/lib/plugins/ResourceHintsPlugin.js +17 -17
  44. package/lib/plugins/RtlSplitPlugin/RtlCssPlugin.js +6 -6
  45. package/lib/plugins/RtlSplitPlugin/RtrSplit.md +30 -30
  46. package/lib/plugins/SelectorPlugin.js +56 -45
  47. package/lib/plugins/ServiceWorkerPlugin.js +9 -9
  48. package/lib/plugins/TPHashMappingPlugin.js +4 -4
  49. package/lib/plugins/VariableConversionCollector.js +93 -84
  50. package/lib/plugins/index.js +7 -7
  51. package/lib/plugins/utils/classHandling.js +20 -0
  52. package/lib/plugins/utils/fileHandling.js +92 -0
  53. package/lib/plugins/utils/tests/fileHandling.test.js +30 -0
  54. package/lib/postcss-plugins/EmptyPlugin.js +8 -0
  55. package/lib/postcss-plugins/ExcludePlugin.js +1 -1
  56. package/lib/postcss-plugins/RTLSplitPlugin.js +10 -10
  57. package/lib/postcss-plugins/SelectorReplace.js +80 -0
  58. package/lib/postcss-plugins/ValueReplacer.js +2 -13
  59. package/lib/postcss-plugins/__test__/selectorReplace.test.js +28 -0
  60. package/lib/postcss-plugins/__test__/test1Input.css +38 -38
  61. package/lib/postcss-plugins/__test__/test1Output.css +38 -38
  62. package/lib/postcss-plugins/hoverActivePlugin.js +3 -3
  63. package/lib/postcss-plugins/variableModificationPlugin/index.js +1 -19
  64. package/lib/postcss-plugins/variableModifier.js +1 -1
  65. package/lib/schemas/index.js +34 -3
  66. package/lib/servers/server.js +2 -2
  67. package/lib/sh/pre-commit.sh +34 -34
  68. package/lib/sh/reportPublish.sh +45 -45
  69. package/lib/utils/buildstats.html +148 -148
  70. package/lib/utils/cssClassNameGenerate.js +35 -7
  71. package/lib/utils/resultSchema.json +73 -73
  72. package/npm8.md +9 -9
  73. package/package.json +122 -121
  74. package/postpublish.js +8 -8
  75. package/templates/app/.eslintrc.js +140 -140
  76. package/templates/app/README.md +12 -12
  77. package/templates/app/app/index.html +24 -24
  78. package/templates/app/app/properties/ApplicationResources_en_US.properties +1 -1
  79. package/templates/app/app/properties/i18nkeys.json +3 -3
  80. package/templates/app/docs/all.html +69 -69
  81. package/templates/app/mockapi/index.js +18 -18
  82. package/templates/app/package.json +37 -37
  83. package/templates/app/src/actions/SampleActions/index.js +37 -37
  84. package/templates/app/src/actions/index.js +65 -65
  85. package/templates/app/src/appUrls.js +19 -19
  86. package/templates/app/src/components/Alert/Alert.js +134 -134
  87. package/templates/app/src/components/Alert/Alert.module.css +79 -79
  88. package/templates/app/src/components/FreezeLayer/FreezeLayer.css +37 -37
  89. package/templates/app/src/components/FreezeLayer/FreezeLayer.js +84 -84
  90. package/templates/app/src/components/Sample/Sample.module.css +11 -11
  91. package/templates/app/src/components/Sample/SampleList.js +61 -61
  92. package/templates/app/src/components/Slider/Slider.css +41 -41
  93. package/templates/app/src/components/Slider/Slider.js +55 -55
  94. package/templates/app/src/containers/AlertContainer/index.js +15 -15
  95. package/templates/app/src/containers/AppContainer/index.js +96 -96
  96. package/templates/app/src/containers/AppContainer/index.module.css +27 -27
  97. package/templates/app/src/containers/CustomMatch/index.js +65 -65
  98. package/templates/app/src/containers/DevTools/index.js +10 -10
  99. package/templates/app/src/containers/Header/index.js +67 -67
  100. package/templates/app/src/containers/Header/index.module.css +43 -43
  101. package/templates/app/src/containers/Redirect/index.js +63 -63
  102. package/templates/app/src/containers/Redirector/index.js +47 -47
  103. package/templates/app/src/containers/SampleListContainer/ListContainer.js +42 -42
  104. package/templates/app/src/containers/SampleListContainer/ListContainer.module.css +3 -3
  105. package/templates/app/src/historyChange.js +5 -5
  106. package/templates/app/src/index.html +10 -10
  107. package/templates/app/src/index.js +24 -24
  108. package/templates/app/src/middleware/PromiseMiddleware.js +59 -59
  109. package/templates/app/src/reducers/alertData.js +11 -11
  110. package/templates/app/src/reducers/index.js +6 -6
  111. package/templates/app/src/reducers/samples.js +19 -19
  112. package/templates/app/src/store/configureStore.dev.js +51 -51
  113. package/templates/app/src/store/configureStore.js +5 -5
  114. package/templates/app/src/store/configureStore.prod.js +26 -26
  115. package/templates/app/src/util/Common.js +5 -5
  116. package/templates/app/src/util/RequestAPI.js +132 -132
  117. package/templates/docs/all.html +249 -249
  118. package/templates/docs/component.html +178 -178
  119. package/templates/docs/components.html +221 -221
  120. package/templates/docs/css/b.min.css +6 -6
  121. package/templates/docs/css/component.css +42 -42
  122. package/templates/docs/css/componentTest.css +6 -6
  123. package/templates/docs/css/hopscotch.css +585 -585
  124. package/templates/docs/css/style.css +1022 -1022
  125. package/templates/docs/impactReportTemplate.html +154 -154
  126. package/templates/docs/index.html +1501 -1501
  127. package/templates/docs/js/active-line.js +72 -72
  128. package/templates/docs/js/b.min.js +7 -7
  129. package/templates/docs/js/codemirror.js +9680 -9680
  130. package/templates/docs/js/designTokens.js +334 -334
  131. package/templates/docs/js/j.min.js +4 -4
  132. package/templates/docs/js/javascript.js +874 -874
  133. package/templates/docs/js/matchbrackets.js +145 -145
  134. package/.vscode/settings.json +0 -11
  135. package/lib/plugins/composeCommonPlugin.js +0 -30
  136. package/result.json +0 -1
  137. package/unittest/index.html +0 -37
@@ -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);