@zohodesk/react-cli 1.1.8-exp.2 → 1.1.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (134) 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 +1293 -1293
  6. package/bin/cli.js +501 -497
  7. package/docs/ComposeMinification.md +13 -13
  8. package/docs/CustomChunks.md +29 -29
  9. package/docs/DevServerPort.md +39 -39
  10. package/docs/DevStart.md +18 -18
  11. package/docs/HoverActive.md +12 -12
  12. package/docs/InstallNode.md +28 -28
  13. package/docs/MarkdownParser.md +17 -17
  14. package/docs/ReactLive.md +13 -13
  15. package/docs/SelectorWeight.md +8 -8
  16. package/docs/TODOS.md +10 -10
  17. package/docs/ValueReplacer.md +60 -60
  18. package/docs/VariableConversion.md +729 -729
  19. package/docs/patternFiltering.md +56 -56
  20. package/docs/warnings_while_install.txt +35 -35
  21. package/files/eslintrc.js +62 -62
  22. package/files/prettierrc.js +3 -3
  23. package/lib/configs/webpack.css.umd.config.js +4 -4
  24. package/lib/configs/webpack.dev.config.js +0 -18
  25. package/lib/configs/webpack.docs.config.js +0 -17
  26. package/lib/deprecationLogger.js +3 -3
  27. package/lib/loaderUtils/configsAssetsLoaders.js +33 -33
  28. package/lib/loaderUtils/getCSSLoaders.js +58 -62
  29. package/lib/loaders/workerLoader.js +9 -9
  30. package/lib/pluginUtils/getDevPlugins.js +5 -5
  31. package/lib/pluginUtils/getProdPlugins.js +5 -5
  32. package/lib/plugins/CustomAttributePlugin.md +35 -35
  33. package/lib/plugins/EFCPlugin.md +6 -6
  34. package/lib/plugins/I18NInjectIntoIndexPlugin.js +4 -4
  35. package/lib/plugins/I18nSplitPlugin/I18nDownlodLogic.js +38 -38
  36. package/lib/plugins/I18nSplitPlugin/I18nFilesEmitter.js +30 -30
  37. package/lib/plugins/I18nSplitPlugin/I18nKeysIdentifer.js +8 -8
  38. package/lib/plugins/I18nSplitPlugin/I18nSplit.md +95 -95
  39. package/lib/plugins/I18nSplitPlugin/README.md +25 -25
  40. package/lib/plugins/I18nSplitPlugin/index.js +57 -57
  41. package/lib/plugins/ReportGeneratePlugin.js +8 -6
  42. package/lib/plugins/ResourceHintsPlugin.js +17 -17
  43. package/lib/plugins/RtlSplitPlugin/RtlCssPlugin.js +6 -6
  44. package/lib/plugins/RtlSplitPlugin/RtrSplit.md +30 -30
  45. package/lib/plugins/SelectorPlugin.js +29 -29
  46. package/lib/plugins/ServiceWorkerPlugin.js +9 -9
  47. package/lib/plugins/TPHashMappingPlugin.js +4 -4
  48. package/lib/plugins/UnusedFilesFindPlugin.js +7 -5
  49. package/lib/plugins/VariableConversionCollector.js +59 -59
  50. package/lib/plugins/utils/fileHandling.js +8 -4
  51. package/lib/plugins/variableConvertorUtils.js +9 -9
  52. package/lib/postcss-plugins/RTLSplitPlugin.js +10 -10
  53. package/lib/postcss-plugins/__test__/test1Input.css +38 -38
  54. package/lib/postcss-plugins/__test__/test1Output.css +38 -38
  55. package/lib/postcss-plugins/hoverActivePlugin.js +3 -3
  56. package/lib/sh/pre-commit.sh +34 -34
  57. package/lib/sh/reportPublish.sh +45 -45
  58. package/lib/utils/buildstats.html +148 -148
  59. package/lib/utils/cssClassNameGenerate.js +13 -13
  60. package/lib/utils/deprecationSupport.js +83 -78
  61. package/lib/utils/getOptions.js +2 -2
  62. package/lib/utils/index.js +14 -12
  63. package/lib/utils/initPreCommitHook.js +5 -5
  64. package/lib/utils/log.js +11 -0
  65. package/lib/utils/pullOrigin.js +3 -3
  66. package/lib/utils/reinstallDependencies.js +3 -3
  67. package/lib/utils/resultSchema.json +73 -73
  68. package/lib/utils/switchBranch.js +4 -2
  69. package/npm-shrinkwrap.json +33393 -14454
  70. package/npm8.md +9 -9
  71. package/package.json +123 -123
  72. package/postpublish.js +8 -8
  73. package/templates/app/.eslintrc.js +140 -140
  74. package/templates/app/README.md +12 -12
  75. package/templates/app/app/index.html +24 -24
  76. package/templates/app/app/properties/ApplicationResources_en_US.properties +1 -1
  77. package/templates/app/app/properties/i18nkeys.json +3 -3
  78. package/templates/app/docs/all.html +69 -69
  79. package/templates/app/mockapi/index.js +18 -18
  80. package/templates/app/package.json +37 -37
  81. package/templates/app/src/actions/SampleActions/index.js +37 -37
  82. package/templates/app/src/actions/index.js +65 -65
  83. package/templates/app/src/appUrls.js +19 -19
  84. package/templates/app/src/components/Alert/Alert.js +134 -134
  85. package/templates/app/src/components/Alert/Alert.module.css +79 -79
  86. package/templates/app/src/components/FreezeLayer/FreezeLayer.css +37 -37
  87. package/templates/app/src/components/FreezeLayer/FreezeLayer.js +84 -84
  88. package/templates/app/src/components/Sample/Sample.module.css +11 -11
  89. package/templates/app/src/components/Sample/SampleList.js +61 -61
  90. package/templates/app/src/components/Slider/Slider.css +41 -41
  91. package/templates/app/src/components/Slider/Slider.js +55 -55
  92. package/templates/app/src/containers/AlertContainer/index.js +15 -15
  93. package/templates/app/src/containers/AppContainer/index.js +96 -96
  94. package/templates/app/src/containers/AppContainer/index.module.css +27 -27
  95. package/templates/app/src/containers/CustomMatch/index.js +65 -65
  96. package/templates/app/src/containers/DevTools/index.js +10 -10
  97. package/templates/app/src/containers/Header/index.js +67 -67
  98. package/templates/app/src/containers/Header/index.module.css +43 -43
  99. package/templates/app/src/containers/Redirect/index.js +63 -63
  100. package/templates/app/src/containers/Redirector/index.js +47 -47
  101. package/templates/app/src/containers/SampleListContainer/ListContainer.js +42 -42
  102. package/templates/app/src/containers/SampleListContainer/ListContainer.module.css +3 -3
  103. package/templates/app/src/historyChange.js +5 -5
  104. package/templates/app/src/index.html +10 -10
  105. package/templates/app/src/index.js +24 -24
  106. package/templates/app/src/middleware/PromiseMiddleware.js +59 -59
  107. package/templates/app/src/reducers/alertData.js +11 -11
  108. package/templates/app/src/reducers/index.js +6 -6
  109. package/templates/app/src/reducers/samples.js +19 -19
  110. package/templates/app/src/store/configureStore.dev.js +51 -51
  111. package/templates/app/src/store/configureStore.js +5 -5
  112. package/templates/app/src/store/configureStore.prod.js +26 -26
  113. package/templates/app/src/util/Common.js +5 -5
  114. package/templates/app/src/util/RequestAPI.js +132 -132
  115. package/templates/docs/all.html +250 -250
  116. package/templates/docs/component.html +179 -179
  117. package/templates/docs/components.html +222 -222
  118. package/templates/docs/css/b.min.css +6 -6
  119. package/templates/docs/css/component.css +42 -42
  120. package/templates/docs/css/componentTest.css +6 -6
  121. package/templates/docs/css/hopscotch.css +585 -585
  122. package/templates/docs/css/markdown.css +202 -202
  123. package/templates/docs/css/style.css +1022 -1022
  124. package/templates/docs/impactReportTemplate.html +154 -154
  125. package/templates/docs/index.html +1502 -1502
  126. package/templates/docs/js/active-line.js +72 -72
  127. package/templates/docs/js/b.min.js +7 -7
  128. package/templates/docs/js/codemirror.js +9680 -9680
  129. package/templates/docs/js/designTokens.js +334 -334
  130. package/templates/docs/js/j.min.js +4 -4
  131. package/templates/docs/js/javascript.js +874 -874
  132. package/templates/docs/js/matchbrackets.js +145 -145
  133. package/result.json +0 -1
  134. 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);