@dxc-technology/halstack-react 0.0.0-01c2930 → 0.0.0-05400ed

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 (133) hide show
  1. package/babel.config.js +6 -2
  2. package/dist/BackgroundColorContext.js +46 -0
  3. package/dist/ThemeContext.js +235 -2
  4. package/dist/V3Textarea/V3Textarea.js +264 -0
  5. package/dist/accordion/Accordion.js +174 -63
  6. package/dist/accordion-group/AccordionGroup.js +186 -0
  7. package/dist/alert/Alert.js +183 -84
  8. package/dist/alert/index.d.ts +51 -0
  9. package/dist/badge/Badge.js +63 -0
  10. package/dist/box/Box.js +31 -23
  11. package/dist/button/Button.js +82 -27
  12. package/dist/card/Card.js +72 -35
  13. package/dist/checkbox/Checkbox.js +108 -32
  14. package/dist/chip/Chip.js +129 -35
  15. package/dist/common/RequiredComponent.js +2 -8
  16. package/dist/common/utils.js +2 -22
  17. package/dist/common/variables.js +1446 -270
  18. package/dist/date/Date.js +86 -64
  19. package/dist/date-input/DateInput.js +400 -0
  20. package/dist/date-input/index.d.ts +95 -0
  21. package/dist/dialog/Dialog.js +58 -37
  22. package/dist/dropdown/Dropdown.js +229 -68
  23. package/dist/file-input/FileInput.js +644 -0
  24. package/dist/file-input/FileItem.js +280 -0
  25. package/dist/file-input/index.d.ts +81 -0
  26. package/dist/footer/Footer.js +87 -38
  27. package/dist/footer/dxc_logo.svg +15 -0
  28. package/dist/footer/readme.md +1 -1
  29. package/dist/header/Header.js +110 -79
  30. package/dist/header/dxc_logo_black.svg +8 -0
  31. package/dist/header/readme.md +1 -1
  32. package/dist/heading/Heading.js +81 -16
  33. package/dist/input-text/InputText.js +291 -103
  34. package/dist/layout/ApplicationLayout.js +331 -0
  35. package/dist/layout/facebook.svg +45 -0
  36. package/dist/layout/linkedin.svg +50 -0
  37. package/dist/layout/twitter.svg +53 -0
  38. package/dist/link/Link.js +136 -35
  39. package/dist/main.d.ts +8 -0
  40. package/dist/main.js +111 -7
  41. package/dist/new-select/NewSelect.js +836 -0
  42. package/dist/new-select/index.d.ts +53 -0
  43. package/dist/number-input/NumberInput.js +136 -0
  44. package/dist/number-input/NumberInputContext.js +16 -0
  45. package/dist/number-input/index.d.ts +113 -0
  46. package/dist/paginator/Paginator.js +153 -60
  47. package/dist/password-input/PasswordInput.js +198 -0
  48. package/dist/password-input/index.d.ts +94 -0
  49. package/dist/progress-bar/ProgressBar.js +95 -38
  50. package/dist/radio/Radio.js +39 -17
  51. package/dist/resultsetTable/ResultsetTable.js +93 -69
  52. package/dist/select/Select.js +250 -143
  53. package/dist/sidenav/Sidenav.js +85 -143
  54. package/dist/slider/Slider.js +207 -69
  55. package/dist/spinner/Spinner.js +247 -59
  56. package/dist/switch/Switch.js +50 -27
  57. package/dist/table/Table.js +58 -13
  58. package/dist/tabs/Tabs.js +208 -35
  59. package/dist/tabs-for-sections/TabsForSections.js +1 -16
  60. package/dist/tag/Tag.js +100 -35
  61. package/dist/text-input/TextInput.js +971 -0
  62. package/dist/text-input/index.d.ts +135 -0
  63. package/dist/textarea/Textarea.js +248 -106
  64. package/dist/textarea/index.d.ts +117 -0
  65. package/dist/toggle/Toggle.js +16 -19
  66. package/dist/toggle-group/ToggleGroup.js +327 -0
  67. package/dist/upload/Upload.js +16 -11
  68. package/dist/upload/buttons-upload/ButtonsUpload.js +31 -14
  69. package/dist/upload/dragAndDropArea/DragAndDropArea.js +78 -28
  70. package/dist/upload/file-upload/FileToUpload.js +50 -24
  71. package/dist/upload/files-upload/FilesToUpload.js +16 -16
  72. package/dist/upload/readme.md +2 -2
  73. package/dist/upload/transaction/Transaction.js +44 -24
  74. package/dist/upload/transactions/Transactions.js +38 -20
  75. package/dist/useTheme.js +22 -0
  76. package/dist/wizard/Wizard.js +142 -51
  77. package/dist/wizard/invalid_icon.svg +4 -5
  78. package/dist/wizard/valid_icon.svg +4 -5
  79. package/package.json +14 -6
  80. package/test/AccordionGroup.test.js +125 -0
  81. package/test/Date.test.js +49 -45
  82. package/test/DateInput.test.js +242 -0
  83. package/test/Dropdown.test.js +19 -4
  84. package/test/FileInput.test.js +201 -0
  85. package/test/InputText.test.js +53 -41
  86. package/test/Link.test.js +25 -7
  87. package/test/NumberInput.test.js +259 -0
  88. package/test/Paginator.test.js +72 -60
  89. package/test/PasswordInput.test.js +83 -0
  90. package/test/ResultsetTable.test.js +66 -19
  91. package/test/Select.test.js +55 -34
  92. package/test/Sidenav.test.js +22 -64
  93. package/test/Slider.test.js +17 -0
  94. package/test/Spinner.test.js +5 -0
  95. package/test/Tabs.test.js +21 -0
  96. package/test/TextInput.test.js +732 -0
  97. package/test/Textarea.test.js +193 -0
  98. package/test/ToggleGroup.test.js +85 -0
  99. package/test/Upload.test.js +5 -5
  100. package/test/{TextArea.test.js → V3TextArea.test.js} +6 -7
  101. package/dist/accordion/Accordion.stories.js +0 -207
  102. package/dist/accordion/readme.md +0 -96
  103. package/dist/alert/Alert.stories.js +0 -158
  104. package/dist/alert/close.svg +0 -4
  105. package/dist/alert/error.svg +0 -4
  106. package/dist/alert/info.svg +0 -4
  107. package/dist/alert/readme.md +0 -43
  108. package/dist/alert/success.svg +0 -4
  109. package/dist/alert/warning.svg +0 -4
  110. package/dist/button/Button.stories.js +0 -224
  111. package/dist/button/readme.md +0 -93
  112. package/dist/common/services/example-service.js +0 -10
  113. package/dist/common/services/example-service.test.js +0 -12
  114. package/dist/date/calendar.svg +0 -1
  115. package/dist/date/calendar_dark.svg +0 -1
  116. package/dist/dialog/Dialog.stories.js +0 -217
  117. package/dist/dialog/readme.md +0 -32
  118. package/dist/dropdown/Dropdown.stories.js +0 -249
  119. package/dist/dropdown/baseline-arrow_drop_down.svg +0 -1
  120. package/dist/dropdown/baseline-arrow_drop_down_wh.svg +0 -4
  121. package/dist/dropdown/baseline-arrow_drop_up.svg +0 -1
  122. package/dist/dropdown/baseline-arrow_drop_up_wh.svg +0 -4
  123. package/dist/dropdown/readme.md +0 -69
  124. package/dist/footer/Footer.stories.js +0 -94
  125. package/dist/footer/dxc_logo_wht.png +0 -0
  126. package/dist/header/dxc_logo_black.png +0 -0
  127. package/dist/header/dxc_logo_white.png +0 -0
  128. package/dist/input-text/InputText.stories.js +0 -209
  129. package/dist/select/Select.stories.js +0 -235
  130. package/dist/select/readme.md +0 -72
  131. package/dist/sidenav/arrow_icon.svg +0 -3
  132. package/dist/slider/Slider.stories.js +0 -241
  133. package/test/Toggle.test.js +0 -43
@@ -11,10 +11,10 @@ exports["default"] = void 0;
11
11
 
12
12
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
13
 
14
- var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
15
-
16
14
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
17
15
 
16
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
17
+
18
18
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
19
19
 
20
20
  var _react = _interopRequireWildcard(require("react"));
@@ -25,17 +25,35 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
25
25
 
26
26
  var _variables = require("../common/variables.js");
27
27
 
28
- var _utils = require("../common/utils.js");
29
-
30
- var _ThemeContext = _interopRequireDefault(require("../ThemeContext.js"));
28
+ var _useTheme = _interopRequireDefault(require("../useTheme.js"));
31
29
 
32
30
  var _valid_icon = _interopRequireDefault(require("./valid_icon.svg"));
33
31
 
34
32
  var _invalid_icon = _interopRequireDefault(require("./invalid_icon.svg"));
35
33
 
36
- function _templateObject12() {
34
+ function _templateObject14() {
37
35
  var data = (0, _taggedTemplateLiteral2["default"])(["\n width: ", ";\n height: ", ";\n ", "\n border: ", ";\n opacity: 1;\n flex-grow: 1;\n"]);
38
36
 
37
+ _templateObject14 = function _templateObject14() {
38
+ return data;
39
+ };
40
+
41
+ return data;
42
+ }
43
+
44
+ function _templateObject13() {
45
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n text-align: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n letter-spacing: ", ";\n text-transform: ", ";\n ", ";\n margin: 0;\n"]);
46
+
47
+ _templateObject13 = function _templateObject13() {
48
+ return data;
49
+ };
50
+
51
+ return data;
52
+ }
53
+
54
+ function _templateObject12() {
55
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n text-align: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n letter-spacing: ", ";\n ", ";\n text-transform: ", ";\n margin: 0;\n"]);
56
+
39
57
  _templateObject12 = function _templateObject12() {
40
58
  return data;
41
59
  };
@@ -44,7 +62,7 @@ function _templateObject12() {
44
62
  }
45
63
 
46
64
  function _templateObject11() {
47
- var data = (0, _taggedTemplateLiteral2["default"])(["\n text-align: left;\n font: Lighter 12px/17px Open Sans;\n letter-spacing: 0.58px;\n color: inherit;\n margin: 0;\n"]);
65
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n margin-left: 12px;\n"]);
48
66
 
49
67
  _templateObject11 = function _templateObject11() {
50
68
  return data;
@@ -54,7 +72,7 @@ function _templateObject11() {
54
72
  }
55
73
 
56
74
  function _templateObject10() {
57
- var data = (0, _taggedTemplateLiteral2["default"])(["\n text-align: left;\n font: Normal 16px/22px Open Sans;\n letter-spacing: 0.77px;\n color: inherit;\n margin: 0;\n"]);
75
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n width: 18px;\n height: 18px;\n position: absolute;\n top: 22.5px;\n left: 22.5px;\n"]);
58
76
 
59
77
  _templateObject10 = function _templateObject10() {
60
78
  return data;
@@ -64,7 +82,7 @@ function _templateObject10() {
64
82
  }
65
83
 
66
84
  function _templateObject9() {
67
- var data = (0, _taggedTemplateLiteral2["default"])(["\n margin-left: 10px;\n color: ", ";\n"]);
85
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n font-size: ", ";\n font-family: ", ";\n font-style: ", ";\n font-weight: ", ";\n letter-spacing: ", ";\n opacity: 1;\n margin: 0px 0px 0px 1px;\n"]);
68
86
 
69
87
  _templateObject9 = function _templateObject9() {
70
88
  return data;
@@ -74,7 +92,7 @@ function _templateObject9() {
74
92
  }
75
93
 
76
94
  function _templateObject8() {
77
- var data = (0, _taggedTemplateLiteral2["default"])(["\n width: 18px;\n height: 18px;\n position: absolute;\n bottom: 0px;\n right: 0px;\n"]);
95
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n background-color: ", ";\n mask: url(", ") no-repeat center;\n mask-size: ", ";\n height: ", ";\n width: ", ";\n"]);
78
96
 
79
97
  _templateObject8 = function _templateObject8() {
80
98
  return data;
@@ -84,7 +102,7 @@ function _templateObject8() {
84
102
  }
85
103
 
86
104
  function _templateObject7() {
87
- var data = (0, _taggedTemplateLiteral2["default"])(["\n font: Normal 16px/22px Open Sans;\n letter-spacing: 0.77px;\n color: ", ";\n opacity: 1;\n margin: 0;\n"]);
105
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n width: ", ";\n height: ", ";\n overflow: hidden;\n img,\n svg {\n height: 100%;\n width: 100%;\n }\n"]);
88
106
 
89
107
  _templateObject7 = function _templateObject7() {
90
108
  return data;
@@ -94,7 +112,7 @@ function _templateObject7() {
94
112
  }
95
113
 
96
114
  function _templateObject6() {
97
- var data = (0, _taggedTemplateLiteral2["default"])(["\n width: 19px;\n height: 19px;\n"]);
115
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n width: ", ";\n height: ", ";\n"]);
98
116
 
99
117
  _templateObject6 = function _templateObject6() {
100
118
  return data;
@@ -104,7 +122,7 @@ function _templateObject6() {
104
122
  }
105
123
 
106
124
  function _templateObject5() {
107
- var data = (0, _taggedTemplateLiteral2["default"])(["\n width: ", ";\n height: ", ";\n\n ", "\n\n ", "\n\n ", "\n\n ", "\n\n border-radius: 45px;\n\n display: flex;\n justify-content: center;\n align-items: center;\n"]);
125
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n width: ", ";\n height: ", ";\n\n ", "\n ", ";\n\n border-radius: ", ";\n display: flex;\n justify-content: center;\n align-items: center;\n"]);
108
126
 
109
127
  _templateObject5 = function _templateObject5() {
110
128
  return data;
@@ -114,7 +132,7 @@ function _templateObject5() {
114
132
  }
115
133
 
116
134
  function _templateObject4() {
117
- var data = (0, _taggedTemplateLiteral2["default"])(["\n position: relative;\n display: inline-flex;\n padding-bottom: 3px;\n"]);
135
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n position: relative;\n display: inline-flex;\n padding-bottom: 4px;\n"]);
118
136
 
119
137
  _templateObject4 = function _templateObject4() {
120
138
  return data;
@@ -124,7 +142,7 @@ function _templateObject4() {
124
142
  }
125
143
 
126
144
  function _templateObject3() {
127
- var data = (0, _taggedTemplateLiteral2["default"])(["\n border: none;\n background: inherit;\n display: flex;\n justify-content: flex-start;\n align-items: center;\n margin: ", ";\n\n padding: 0px;\n ", ";\n\n &:focus {\n outline: none;\n }\n\n &:hover {\n ", ";\n }\n"]);
145
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n border: none;\n background: inherit;\n display: flex;\n justify-content: flex-start;\n align-items: center;\n margin: ", ";\n\n padding: 0px;\n ", ";\n\n &:hover {\n ", ";\n }\n &:focus {\n outline: ", " auto 1px;\n }\n"]);
128
146
 
129
147
  _templateObject3 = function _templateObject3() {
130
148
  return data;
@@ -134,7 +152,7 @@ function _templateObject3() {
134
152
  }
135
153
 
136
154
  function _templateObject2() {
137
- var data = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n ", "\n flex-grow: ", ";\n flex-direction: ", ";\n ", "\n \n"]);
155
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n ", "\n flex-grow: ", ";\n flex-direction: ", ";\n ", "\n"]);
138
156
 
139
157
  _templateObject2 = function _templateObject2() {
140
158
  return data;
@@ -144,7 +162,7 @@ function _templateObject2() {
144
162
  }
145
163
 
146
164
  function _templateObject() {
147
- var data = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n flex-direction: ", ";\n justify-content: \"center\";\n ", ";\n\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n"]);
165
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n flex-direction: ", ";\n justify-content: \"center\";\n ", ";\n font-family: ", ";\n\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n"]);
148
166
 
149
167
  _templateObject = function _templateObject() {
150
168
  return data;
@@ -159,18 +177,17 @@ var DxcWizard = function DxcWizard(_ref) {
159
177
  currentStep = _ref.currentStep,
160
178
  onStepClick = _ref.onStepClick,
161
179
  steps = _ref.steps,
162
- margin = _ref.margin;
180
+ margin = _ref.margin,
181
+ _ref$tabIndex = _ref.tabIndex,
182
+ tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
163
183
 
164
- var _React$useState = _react["default"].useState(currentStep || 0),
165
- _React$useState2 = (0, _slicedToArray2["default"])(_React$useState, 2),
166
- innerCurrent = _React$useState2[0],
167
- setInnerCurrentStep = _React$useState2[1];
184
+ var _useState = (0, _react.useState)(currentStep || 0),
185
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
186
+ innerCurrent = _useState2[0],
187
+ setInnerCurrentStep = _useState2[1];
168
188
 
169
189
  var renderedCurrent = currentStep == null ? innerCurrent : currentStep;
170
- var customTheme = (0, _react.useContext)(_ThemeContext["default"]);
171
- var colorsTheme = (0, _react.useMemo)(function () {
172
- return (0, _utils.getCustomTheme)(_variables.theme, (0, _utils.getCustomTheme)(_variables.defaultTheme, customTheme));
173
- }, [customTheme]);
190
+ var colorsTheme = (0, _useTheme["default"])();
174
191
 
175
192
  var handleStepClick = function handleStepClick(newValue) {
176
193
  if (currentStep == null) {
@@ -183,7 +200,7 @@ var DxcWizard = function DxcWizard(_ref) {
183
200
  };
184
201
 
185
202
  return _react["default"].createElement(_styledComponents.ThemeProvider, {
186
- theme: colorsTheme
203
+ theme: colorsTheme.wizard
187
204
  }, _react["default"].createElement(StepsContainer, {
188
205
  mode: mode,
189
206
  margin: margin
@@ -193,11 +210,11 @@ var DxcWizard = function DxcWizard(_ref) {
193
210
  mode: mode,
194
211
  lastStep: i === steps.length - 1
195
212
  }, _react["default"].createElement(Step, {
213
+ tabIndex: tabIndex,
196
214
  onClick: function onClick() {
197
215
  return handleStepClick(i);
198
216
  },
199
217
  mode: mode,
200
- disable: step.disabled,
201
218
  disabled: step.disabled,
202
219
  first: i === 0,
203
220
  last: i === steps.length - 1
@@ -205,7 +222,12 @@ var DxcWizard = function DxcWizard(_ref) {
205
222
  current: i === renderedCurrent,
206
223
  visited: i < renderedCurrent,
207
224
  disabled: step.disabled
208
- }, step.iconSrc ? _react["default"].createElement(Icon, {
225
+ }, step.icon ? _react["default"].createElement(StepIconContainer, {
226
+ disabled: step.disabled
227
+ }, (0, _typeof2["default"])(step.icon) === "object" ? step.icon.type === "img" ? _react["default"].createElement(ImgContainer, {
228
+ current: i === renderedCurrent,
229
+ img: step.icon.props.src
230
+ }) : step.icon : _react["default"].createElement(step.icon)) : step.iconSrc ? _react["default"].createElement(Icon, {
209
231
  src: step.iconSrc
210
232
  }) : _react["default"].createElement(Number, {
211
233
  disabled: step.disabled,
@@ -214,9 +236,13 @@ var DxcWizard = function DxcWizard(_ref) {
214
236
  src: _valid_icon["default"]
215
237
  }) : _react["default"].createElement(ValidityIcon, {
216
238
  src: _invalid_icon["default"]
217
- }) : ""), step.label || step.description ? _react["default"].createElement(InfoContainer, {
218
- active: i <= innerCurrent
219
- }, step.label ? _react["default"].createElement(Label, null, step.label) : "", step.description ? _react["default"].createElement(Description, null, step.description) : "") : ""), i === steps.length - 1 ? "" : _react["default"].createElement(StepSeparator, {
239
+ }) : ""), step.label || step.description ? _react["default"].createElement(InfoContainer, null, step.label ? _react["default"].createElement(Label, {
240
+ disabled: step.disabled,
241
+ visited: i <= innerCurrent
242
+ }, step.label) : "", step.description ? _react["default"].createElement(Description, {
243
+ disabled: step.disabled,
244
+ visited: i <= innerCurrent
245
+ }, step.description) : "") : ""), i === steps.length - 1 ? "" : _react["default"].createElement(StepSeparator, {
220
246
  mode: mode
221
247
  }));
222
248
  })));
@@ -226,6 +252,8 @@ var StepsContainer = _styledComponents["default"].div(_templateObject(), functio
226
252
  return props.mode === "vertical" ? "column" : "row";
227
253
  }, function (props) {
228
254
  return props.mode === "vertical" ? "height: 500px" : "width: 100%";
255
+ }, function (props) {
256
+ return props.theme.fontFamily;
229
257
  }, function (props) {
230
258
  return props.margin && (0, _typeof2["default"])(props.margin) !== "object" ? _variables.spaces[props.margin] : "0px";
231
259
  }, function (props) {
@@ -249,53 +277,114 @@ var StepContainer = _styledComponents["default"].div(_templateObject2(), functio
249
277
  });
250
278
 
251
279
  var Step = _styledComponents["default"].button(_templateObject3(), function (props) {
252
- return props.first ? props.mode === "vertical" ? "0 0 25px 0" : "0 25px 0 0" : props.last ? props.mode === "vertical" ? "25px 0 0 0" : "0 0 0 25px" : props.mode === "vertical" ? "25px 0" : "0 25px";
280
+ return props.first ? props.mode === "vertical" ? "0 0 24px 0" : "0 24px 0 0" : props.last ? props.mode === "vertical" ? "24px 0 0 0" : "0 0 0 24px" : props.mode === "vertical" ? "24px 0" : "0 24px";
253
281
  }, function (props) {
254
282
  return props.disabled ? "cursor: not-allowed" : "";
255
283
  }, function (props) {
256
284
  return props.disabled ? "" : "cursor: pointer";
285
+ }, function (props) {
286
+ return props.theme.focusColor;
257
287
  });
258
288
 
259
289
  var StepHeader = _styledComponents["default"].div(_templateObject4());
260
290
 
261
291
  var IconContainer = _styledComponents["default"].div(_templateObject5(), function (props) {
262
- return !props.current && !props.disabled ? "32px" : "36px";
263
- }, function (props) {
264
- return !props.current && !props.disabled ? "32px" : "36px";
292
+ return props.disabled ? props.theme.disabledCircleWidth : props.current ? props.theme.selectedCircleWidth : props.theme.circleWidth;
265
293
  }, function (props) {
266
- return !props.current && !props.disabled ? "border: 2px solid ".concat(props.theme.wizard.borderColor, ";") : "";
294
+ return props.disabled ? props.theme.disabledCircleHeight : props.current ? props.theme.selectedCircleHeight : props.theme.circleHeight;
267
295
  }, function (props) {
268
- return props.disabled ? "background: ".concat(props.theme.wizard.disabledBackground, ";\n p {\n color: ").concat(props.theme.wizard.disabledFont, " !important;\n }") : "";
296
+ return "\n ".concat(!props.current && !props.disabled ? "border: ".concat(props.theme.circleBorderThickness, " ").concat(props.theme.circleBorderStyle, " ").concat(props.theme.circleBorderColor, ";") : props.current ? "border: ".concat(props.theme.selectedCircleBorderThickness, " ").concat(props.theme.selectedCircleBorderStyle, " ").concat(props.theme.selectedCircleBorderColor, ";") : props.disabled ? "border: ".concat(props.theme.disabledCircleBorderThickness, " ").concat(props.theme.disabledCircleBorderStyle, " ").concat(props.theme.disabledCircleBorderColor, ";") : "", "\n background: ").concat(props.disabled ? "".concat(props.theme.disabledBackgroundColor) : props.current ? "".concat(props.theme.stepContainerSelectedBackgroundColor) : "".concat(props.theme.stepContainerBackgroundColor), ";\n ");
269
297
  }, function (props) {
270
- return props.current ? "background: ".concat(props.theme.wizard.selectedBackgroundColor, ";") : "";
298
+ return props.disabled ? "color: ".concat(props.theme.disabledFontColor, ";") : "color: ".concat(props.current ? props.theme.stepContainerSelectedFontColor : props.theme.stepContainerFontColor, ";");
271
299
  }, function (props) {
272
- return props.current ? "p {\n color: ".concat(props.theme.wizard.selectedBackgroundFont, " !important;\n }") : "";
300
+ return !props.current && !props.disabled ? props.theme.circleBorderRadius : props.current ? props.theme.selectedCircleBorderRadius : props.disabled ? props.theme.disabledCircleBorderRadius : "";
273
301
  });
274
302
 
275
- var Icon = _styledComponents["default"].img(_templateObject6());
303
+ var Icon = _styledComponents["default"].img(_templateObject6(), function (props) {
304
+ return props.theme.stepContainerIconSize;
305
+ }, function (props) {
306
+ return props.theme.stepContainerIconSize;
307
+ });
276
308
 
277
- var Number = _styledComponents["default"].p(_templateObject7(), function (props) {
278
- return props.theme.wizard.fontColor;
309
+ var StepIconContainer = _styledComponents["default"].div(_templateObject7(), function (props) {
310
+ return props.theme.stepContainerIconSize;
311
+ }, function (props) {
312
+ return props.theme.stepContainerIconSize;
279
313
  });
280
314
 
281
- var ValidityIcon = _styledComponents["default"].img(_templateObject8());
315
+ var ImgContainer = _styledComponents["default"].div(_templateObject8(), function (props) {
316
+ return props.current ? props.theme.stepContainerSelectedFontColor : props.theme.stepContainerFontColor;
317
+ }, function (_ref2) {
318
+ var img = _ref2.img;
319
+ return img;
320
+ }, function (props) {
321
+ return "".concat(props.theme.stepContainerIconSize, " ").concat(props.theme.stepContainerIconSize);
322
+ }, function (props) {
323
+ return props.theme.stepContainerIconSize;
324
+ }, function (props) {
325
+ return props.theme.stepContainerIconSize;
326
+ });
282
327
 
283
- var InfoContainer = _styledComponents["default"].div(_templateObject9(), function (props) {
284
- return props.active ? props.theme.wizard.fontColor : props.theme.wizard.disabledFont;
328
+ var Number = _styledComponents["default"].p(_templateObject9(), function (props) {
329
+ return props.theme.stepContainerFontSize;
330
+ }, function (props) {
331
+ return props.theme.stepContainerFontFamily;
332
+ }, function (props) {
333
+ return props.theme.stepContainerFontStyle;
334
+ }, function (props) {
335
+ return props.theme.stepContainerFontWeight;
336
+ }, function (props) {
337
+ return props.theme.stepContainerLetterSpacing;
285
338
  });
286
339
 
287
- var Label = _styledComponents["default"].p(_templateObject10());
340
+ var ValidityIcon = _styledComponents["default"].img(_templateObject10());
341
+
342
+ var InfoContainer = _styledComponents["default"].div(_templateObject11());
343
+
344
+ var Label = _styledComponents["default"].p(_templateObject12(), function (props) {
345
+ return props.theme.labelTextAlign;
346
+ }, function (props) {
347
+ return props.theme.labelFontFamily;
348
+ }, function (props) {
349
+ return props.theme.labelFontSize;
350
+ }, function (props) {
351
+ return props.theme.labelFontStyle;
352
+ }, function (props) {
353
+ return props.theme.labelFontWeight;
354
+ }, function (props) {
355
+ return props.theme.labelLetterSpacing;
356
+ }, function (props) {
357
+ return props.disabled ? "color: ".concat(props.theme.disabledFontColor, ";") : "color: ".concat(props.visited ? props.theme.visitedLabelFontColor : props.theme.labelFontColor, ";");
358
+ }, function (props) {
359
+ return props.theme.labelFontTextTransform;
360
+ });
288
361
 
289
- var Description = _styledComponents["default"].p(_templateObject11());
362
+ var Description = _styledComponents["default"].p(_templateObject13(), function (props) {
363
+ return props.theme.descriptionTextAlign;
364
+ }, function (props) {
365
+ return props.theme.descriptionFontFamily;
366
+ }, function (props) {
367
+ return props.theme.descriptionFontSize;
368
+ }, function (props) {
369
+ return props.theme.descriptionFontStyle;
370
+ }, function (props) {
371
+ return props.theme.descriptionFontWeight;
372
+ }, function (props) {
373
+ return props.theme.descriptionLetterSpacing;
374
+ }, function (props) {
375
+ return props.theme.descriptionFontTextTransform;
376
+ }, function (props) {
377
+ return props.disabled ? "color: ".concat(props.theme.disabledFontColor, ";") : "color: ".concat(props.visited ? props.theme.visitedDescriptionFontColor : props.theme.descriptionFontColor, ";");
378
+ });
290
379
 
291
- var StepSeparator = _styledComponents["default"].div(_templateObject12(), function (props) {
380
+ var StepSeparator = _styledComponents["default"].div(_templateObject14(), function (props) {
292
381
  return props.mode === "horizontal" ? "" : "0";
293
382
  }, function (props) {
294
383
  return props.mode === "horizontal" ? "0" : "";
295
384
  }, function (props) {
296
385
  return props.mode === "vertical" ? "margin: 0 18px;" : "";
297
386
  }, function (props) {
298
- return "solid 1px ".concat(props.theme.wizard.lineColor);
387
+ return "".concat(props.theme.separatorBorderStyle, " ").concat(props.theme.separatorBorderThickness, " ").concat(props.theme.separatorColor);
299
388
  });
300
389
 
301
390
  DxcWizard.propTypes = {
@@ -305,6 +394,7 @@ DxcWizard.propTypes = {
305
394
  steps: _propTypes["default"].arrayOf(_propTypes["default"].shape({
306
395
  label: _propTypes["default"].string,
307
396
  description: _propTypes["default"].string,
397
+ icon: _propTypes["default"].oneOfType([_propTypes["default"].element, _propTypes["default"].func]),
308
398
  iconSrc: _propTypes["default"].string,
309
399
  disabled: _propTypes["default"].bool,
310
400
  valid: _propTypes["default"].bool
@@ -314,7 +404,8 @@ DxcWizard.propTypes = {
314
404
  bottom: _propTypes["default"].oneOf(Object.keys(_variables.spaces)),
315
405
  left: _propTypes["default"].oneOf(Object.keys(_variables.spaces)),
316
406
  right: _propTypes["default"].oneOf(Object.keys(_variables.spaces))
317
- }), _propTypes["default"].oneOf((0, _toConsumableArray2["default"])(Object.keys(_variables.spaces)))])
407
+ }), _propTypes["default"].oneOf((0, _toConsumableArray2["default"])(Object.keys(_variables.spaces)))]),
408
+ tabIndex: _propTypes["default"].number
318
409
  };
319
410
  var _default = DxcWizard;
320
411
  exports["default"] = _default;
@@ -1,6 +1,5 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="496" height="496" viewBox="0 0 496 496">
2
- <g id="Group_2913" data-name="Group 2913" transform="translate(5286 3925)">
3
- <path id="Path_2821" data-name="Path 2821" d="M240,0C372.548,0,480,107.452,480,240S372.548,480,240,480,0,372.548,0,240,107.452,0,240,0Z" transform="translate(-5278 -3917)" fill="#f9cfcf"/>
4
- <path id="times-circle-regular" d="M256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8Zm0,448A200,200,0,1,1,456,256,199.945,199.945,0,0,1,256,456ZM357.8,193.8,295.6,256l62.2,62.2a12.011,12.011,0,0,1,0,17l-22.6,22.6a12.011,12.011,0,0,1-17,0L256,295.6l-62.2,62.2a12.011,12.011,0,0,1-17,0l-22.6-22.6a12.011,12.011,0,0,1,0-17L216.4,256l-62.2-62.2a12.011,12.011,0,0,1,0-17l22.6-22.6a12.011,12.011,0,0,1,17,0L256,216.4l62.2-62.2a12.011,12.011,0,0,1,17,0l22.6,22.6a12.011,12.011,0,0,1,0,17Z" transform="translate(-5294 -3933)" fill="#e22"/>
5
- </g>
1
+ <svg id="highlight_off_black_18dp" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18">
2
+ <path id="Path_2943" data-name="Path 2943" d="M0,0H18V18H0Z" fill="none"/>
3
+ <path id="Path_2944" data-name="Path 2944" d="M10,4a6,6,0,1,0,6,6A6.01,6.01,0,0,0,10,4Zm3,7.945L11.945,13,10,11.06,8.059,13,7,11.945,8.944,10,7,8.059,8.059,7,10,8.944,11.945,7,13,8.059,11.06,10Z" transform="translate(-1.002 -1.002)" fill="#ffe6e9"/>
4
+ <path id="Path_2945" data-name="Path 2945" d="M11.444,6.5,9.5,8.443,7.558,6.5,6.5,7.558,8.443,9.5,6.5,11.444,7.558,12.5,9.5,10.558,11.444,12.5,12.5,11.444,10.558,9.5,12.5,7.558ZM9.5,2A7.5,7.5,0,1,0,17,9.5,7.494,7.494,0,0,0,9.5,2Zm0,13.5a6,6,0,1,1,6-6A6.009,6.009,0,0,1,9.5,15.5Z" transform="translate(-0.501 -0.501)" fill="#d0011b"/>
6
5
  </svg>
@@ -1,6 +1,5 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="496" height="496" viewBox="0 0 496 496">
2
- <g id="Group_2914" data-name="Group 2914" transform="translate(4677 3925)">
3
- <path id="Path_2822" data-name="Path 2822" d="M240,0C372.548,0,480,107.452,480,240S372.548,480,240,480,0,372.548,0,240,107.452,0,240,0Z" transform="translate(-4669 -3917)" fill="#dbf1c4"/>
4
- <path id="check-circle-regular" d="M256,8C119.033,8,8,119.033,8,256S119.033,504,256,504,504,392.967,504,256,392.967,8,256,8Zm0,48A200,200,0,1,1,56,256,199.893,199.893,0,0,1,256,56M396.2,186.267l-22.536-22.718a12,12,0,0,0-16.97-.068L215.346,303.7,155.554,243.42a12,12,0,0,0-16.97-.069l-22.719,22.536a12,12,0,0,0-.068,16.971l90.781,91.516a12,12,0,0,0,16.97.068l172.589-171.2a12,12,0,0,0,.067-16.971Z" transform="translate(-4685 -3933)" fill="#7ed321"/>
5
- </g>
1
+ <svg id="check_circle_black_18dp" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18">
2
+ <path id="Path_2946" data-name="Path 2946" d="M0,0H18V18H0Z" fill="none"/>
3
+ <path id="Path_2947" data-name="Path 2947" d="M9.986,4a5.986,5.986,0,1,0,5.986,5.986A5.994,5.994,0,0,0,9.986,4Zm-1.5,9.727L5.5,10.734,6.551,9.679l1.938,1.93L13.42,6.679l1.055,1.063Z" transform="translate(-0.986 -0.986)" fill="#eafaef" opacity="0.999"/>
4
+ <path id="Path_2948" data-name="Path 2948" d="M9.493,2a7.493,7.493,0,1,0,7.493,7.493A7.5,7.5,0,0,0,9.493,2Zm0,13.487a5.994,5.994,0,1,1,5.994-5.994A6,6,0,0,1,9.493,15.487Zm3.439-9.306L7.994,11.119,6.054,9.186,5,10.242l3,3,5.994-5.994Z" transform="translate(-0.493 -0.493)" fill="#24a148"/>
6
5
  </svg>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxc-technology/halstack-react",
3
- "version": "0.0.0-01c2930",
3
+ "version": "0.0.0-05400ed",
4
4
  "description": "DXC Halstack React components library",
5
5
  "repository": "dxc-technology/halstack-react",
6
6
  "homepage": "http://developer.dxc.com/tools/react",
@@ -11,6 +11,7 @@
11
11
  "url": "https://dxc.com"
12
12
  },
13
13
  "main": "./dist/main.js",
14
+ "types": "./dist/main.d.ts",
14
15
  "peerDependencies": {
15
16
  "react": "^16.8.6",
16
17
  "react-dom": "^16.8.6",
@@ -18,15 +19,19 @@
18
19
  },
19
20
  "dependencies": {
20
21
  "@date-io/date-fns": "^1.3.9",
21
- "@material-ui/core": "4.1.1",
22
+ "@material-ui/core": "4.11.1",
22
23
  "@material-ui/icons": "4.4.3",
23
- "@material-ui/lab": "4.0.0-alpha.16",
24
+ "@material-ui/lab": "4.0.0-alpha.17",
24
25
  "@material-ui/pickers": "3.2.2",
25
26
  "@material-ui/styles": "4.0.2",
27
+ "@testing-library/user-event": "^12.6.3",
28
+ "color": "^3.1.3",
26
29
  "date-fns": "^2.0.0-beta.4",
27
30
  "moment": "2.24.0",
28
31
  "prop-types": "^15.7.2",
29
- "react-use-scrollspy": "^2.0.0"
32
+ "react-use-scrollspy": "^2.0.0",
33
+ "rgb-hex": "^3.0.0",
34
+ "uuid": "^8.3.2"
30
35
  },
31
36
  "scripts": {
32
37
  "test": "jest",
@@ -38,10 +43,12 @@
38
43
  "@babel/cli": "^7.6.2",
39
44
  "@babel/core": "^7.6.2",
40
45
  "@babel/plugin-proposal-class-properties": "^7.5.5",
46
+ "@babel/plugin-proposal-nullish-coalescing-operator": "7.13.8",
47
+ "@babel/plugin-proposal-optional-chaining": "7.13.8",
41
48
  "@babel/plugin-transform-runtime": "^7.10.1",
42
49
  "@babel/preset-env": "^7.6.2",
43
50
  "@babel/preset-react": "^7.0.0",
44
- "@testing-library/react": "^10.0.2",
51
+ "@testing-library/react": "^11.2.5",
45
52
  "babel-jest": "^24.8.0",
46
53
  "babel-loader": "^8.0.6",
47
54
  "eslint": "^5.16.0",
@@ -51,11 +58,12 @@
51
58
  "eslint-plugin-jest": "^22.7.1",
52
59
  "eslint-plugin-jsx-a11y": "^6.2.1",
53
60
  "eslint-plugin-react": "^7.13.0",
61
+ "eslint-plugin-react-hooks": "^4.2.0",
54
62
  "identity-obj-proxy": "^3.0.0",
55
63
  "jest": "^25.5.4",
56
- "react-test-renderer": "^16.8.6",
57
64
  "react": "file:../node_modules/react",
58
65
  "react-dom": "file:../node_modules/react-dom",
66
+ "react-test-renderer": "^16.8.6",
59
67
  "styled-components": "file:../node_modules/styled-components"
60
68
  },
61
69
  "jest": {
@@ -0,0 +1,125 @@
1
+ import React from "react";
2
+ import { render, fireEvent } from "@testing-library/react";
3
+ import DxcAccordionGroup from "../src/accordion-group/AccordionGroup";
4
+
5
+ describe("Accordion component tests", () => {
6
+ test("Uncontrolled accordion group renders with children", () => {
7
+ const { getByText, getAllByRole } = render(
8
+ <DxcAccordionGroup>
9
+ <DxcAccordionGroup.Accordion label="Accordion1" padding="medium">
10
+ <div>
11
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse malesuada lacus ex, sit amet blandit
12
+ leo lobortis eget.
13
+ </div>
14
+ </DxcAccordionGroup.Accordion>
15
+ <DxcAccordionGroup.Accordion label="Accordion2" padding="medium">
16
+ <div>
17
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse malesuada lacus ex, sit amet blandit
18
+ leo lobortis eget.
19
+ </div>
20
+ </DxcAccordionGroup.Accordion>
21
+ </DxcAccordionGroup>
22
+ );
23
+
24
+ expect(getByText("Accordion1")).toBeTruthy();
25
+ expect(getByText("Accordion2")).toBeTruthy();
26
+ expect(getAllByRole("button")[0].getAttribute("aria-expanded")).toBe("false");
27
+ expect(getAllByRole("button")[1].getAttribute("aria-expanded")).toBe("false");
28
+ });
29
+
30
+ test("Uncontrolled accordion group renders with only one children", () => {
31
+ const { getByText, getAllByRole } = render(
32
+ <DxcAccordionGroup>
33
+ <DxcAccordionGroup.Accordion label="Accordion1" padding="medium">
34
+ <div>
35
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse malesuada lacus ex, sit amet blandit
36
+ leo lobortis eget.
37
+ </div>
38
+ </DxcAccordionGroup.Accordion>
39
+ </DxcAccordionGroup>
40
+ );
41
+
42
+ expect(getByText("Accordion1")).toBeTruthy();
43
+ expect(getAllByRole("button")[0].getAttribute("aria-expanded")).toBe("false");
44
+ });
45
+
46
+ test("Uncontrolled accordion group calls correct function on click", () => {
47
+ const onActiveChange = jest.fn();
48
+ const { getByText, getAllByRole } = render(
49
+ <DxcAccordionGroup margin="large" onActiveChange={onActiveChange}>
50
+ <DxcAccordionGroup.Accordion label="Accordion1" padding="medium" margin="large">
51
+ <div>
52
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse malesuada lacus ex, sit amet blandit
53
+ leo lobortis eget.
54
+ </div>
55
+ </DxcAccordionGroup.Accordion>
56
+ <DxcAccordionGroup.Accordion label="Accordion2" padding="medium">
57
+ <div>
58
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse malesuada lacus ex, sit amet blandit
59
+ leo lobortis eget.
60
+ </div>
61
+ </DxcAccordionGroup.Accordion>
62
+ </DxcAccordionGroup>
63
+ );
64
+
65
+ expect(getAllByRole("button")[0].getAttribute("aria-expanded")).toBe("false");
66
+ expect(getAllByRole("button")[1].getAttribute("aria-expanded")).toBe("false");
67
+ fireEvent.click(getByText("Accordion1"));
68
+ expect(onActiveChange).toHaveBeenCalled();
69
+ expect(getAllByRole("button")[0].getAttribute("aria-expanded")).toBe("true");
70
+ expect(getAllByRole("button")[1].getAttribute("aria-expanded")).toBe("false");
71
+ });
72
+
73
+ test("Controlled accordion with indexActive change", () => {
74
+ const onActiveChange = jest.fn();
75
+ const { getByText, getAllByRole, rerender } = render(
76
+ <DxcAccordionGroup margin="large" indexActive={1} onActiveChange={onActiveChange}>
77
+ <DxcAccordionGroup.Accordion label="Accordion1" padding="medium" margin="large">
78
+ <div>Text1</div>
79
+ </DxcAccordionGroup.Accordion>
80
+ <DxcAccordionGroup.Accordion label="Accordion2" padding="medium">
81
+ <div>Text2</div>
82
+ </DxcAccordionGroup.Accordion>
83
+ </DxcAccordionGroup>
84
+ );
85
+ expect(getByText("Text1")).toBeTruthy();
86
+ expect(getByText("Text2")).toBeTruthy();
87
+ fireEvent.click(getByText("Accordion1"));
88
+ fireEvent.click(getByText("Accordion2"));
89
+ expect(onActiveChange.mock.calls[0][0]).toBe(0);
90
+ expect(onActiveChange.mock.calls[1][0]).toBe(1);
91
+ expect(getAllByRole("button")[0].getAttribute("aria-expanded")).toBe("false");
92
+ expect(getAllByRole("button")[1].getAttribute("aria-expanded")).toBe("true");
93
+
94
+ rerender(
95
+ <DxcAccordionGroup margin="large" indexActive={0} onActiveChange={onActiveChange}>
96
+ <DxcAccordionGroup.Accordion label="Accordion1" padding="medium" margin="large">
97
+ <div>Text1</div>
98
+ </DxcAccordionGroup.Accordion>
99
+ <DxcAccordionGroup.Accordion label="Accordion2" padding="medium">
100
+ <div>Text2</div>
101
+ </DxcAccordionGroup.Accordion>
102
+ </DxcAccordionGroup>
103
+ );
104
+
105
+ expect(getAllByRole("button")[0].getAttribute("aria-expanded")).toBe("true");
106
+ expect(getAllByRole("button")[1].getAttribute("aria-expanded")).toBe("false");
107
+ });
108
+
109
+ test("Disabled uncontrolled accordion group", () => {
110
+ const onActiveChange = jest.fn();
111
+ const { getByText } = render(
112
+ <DxcAccordionGroup margin="large" onActiveChange={onActiveChange} disabled={true}>
113
+ <DxcAccordionGroup.Accordion label="Accordion1" padding="medium" margin="large">
114
+ <div>Text1</div>
115
+ </DxcAccordionGroup.Accordion>
116
+ <DxcAccordionGroup.Accordion label="Accordion2" padding="medium">
117
+ <div>Text2</div>
118
+ </DxcAccordionGroup.Accordion>
119
+ </DxcAccordionGroup>
120
+ );
121
+ fireEvent.click(getByText("Accordion1"));
122
+ fireEvent.click(getByText("Accordion2"));
123
+ expect(onActiveChange).toHaveBeenCalledTimes(0);
124
+ });
125
+ });