@dxc-technology/halstack-react 0.0.0-e792e0c → 0.0.0-e832ef8

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 (170) 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 +170 -81
  6. package/dist/accordion-group/AccordionGroup.js +186 -0
  7. package/dist/alert/Alert.js +184 -83
  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 +1459 -197
  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 +226 -94
  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 +122 -47
  27. package/dist/footer/Icons.js +77 -0
  28. package/dist/header/Header.js +171 -91
  29. package/dist/header/Icons.js +59 -0
  30. package/dist/heading/Heading.js +81 -22
  31. package/dist/input-text/Icons.js +22 -0
  32. package/dist/input-text/InputText.js +293 -107
  33. package/dist/layout/ApplicationLayout.js +327 -0
  34. package/dist/layout/Icons.js +55 -0
  35. package/dist/link/Link.js +136 -35
  36. package/dist/main.d.ts +8 -0
  37. package/dist/main.js +111 -7
  38. package/dist/new-select/NewSelect.js +836 -0
  39. package/dist/new-select/index.d.ts +53 -0
  40. package/dist/number-input/NumberInput.js +136 -0
  41. package/dist/number-input/NumberInputContext.js +16 -0
  42. package/dist/number-input/index.d.ts +113 -0
  43. package/dist/paginator/Icons.js +66 -0
  44. package/dist/paginator/Paginator.js +162 -57
  45. package/dist/password-input/PasswordInput.js +198 -0
  46. package/dist/password-input/index.d.ts +94 -0
  47. package/dist/progress-bar/ProgressBar.js +97 -44
  48. package/dist/radio/Radio.js +39 -21
  49. package/dist/resultsetTable/ResultsetTable.js +93 -69
  50. package/dist/select/Select.js +250 -143
  51. package/dist/sidenav/Sidenav.js +85 -143
  52. package/dist/slider/Slider.js +219 -73
  53. package/dist/spinner/Spinner.js +249 -64
  54. package/dist/switch/Switch.js +51 -26
  55. package/dist/table/Table.js +63 -15
  56. package/dist/tabs/Tabs.js +208 -35
  57. package/dist/tabs-for-sections/TabsForSections.js +1 -16
  58. package/dist/tag/Tag.js +100 -35
  59. package/dist/text-input/TextInput.js +971 -0
  60. package/dist/text-input/index.d.ts +135 -0
  61. package/dist/textarea/Textarea.js +250 -107
  62. package/dist/textarea/index.d.ts +117 -0
  63. package/dist/toggle/Toggle.js +16 -19
  64. package/dist/toggle-group/ToggleGroup.js +327 -0
  65. package/dist/upload/Upload.js +16 -11
  66. package/dist/upload/buttons-upload/ButtonsUpload.js +35 -25
  67. package/dist/upload/buttons-upload/Icons.js +40 -0
  68. package/dist/upload/dragAndDropArea/DragAndDropArea.js +78 -31
  69. package/dist/upload/file-upload/FileToUpload.js +64 -33
  70. package/dist/upload/file-upload/Icons.js +66 -0
  71. package/dist/upload/files-upload/FilesToUpload.js +16 -16
  72. package/dist/upload/readme.md +2 -2
  73. package/dist/upload/transaction/Icons.js +160 -0
  74. package/dist/upload/transaction/Transaction.js +42 -49
  75. package/dist/upload/transactions/Transactions.js +38 -20
  76. package/dist/useTheme.js +22 -0
  77. package/dist/wizard/Icons.js +65 -0
  78. package/dist/wizard/Wizard.js +141 -56
  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/Footer.test.js +2 -7
  86. package/test/Header.test.js +5 -10
  87. package/test/InputText.test.js +53 -41
  88. package/test/Link.test.js +25 -7
  89. package/test/NumberInput.test.js +259 -0
  90. package/test/Paginator.test.js +72 -60
  91. package/test/PasswordInput.test.js +83 -0
  92. package/test/ResultsetTable.test.js +66 -19
  93. package/test/Select.test.js +55 -34
  94. package/test/Sidenav.test.js +22 -64
  95. package/test/Slider.test.js +24 -15
  96. package/test/Spinner.test.js +5 -0
  97. package/test/Tabs.test.js +21 -0
  98. package/test/TextInput.test.js +732 -0
  99. package/test/Textarea.test.js +193 -0
  100. package/test/ToggleGroup.test.js +85 -0
  101. package/test/Upload.test.js +5 -5
  102. package/test/{TextArea.test.js → V3TextArea.test.js} +6 -7
  103. package/dist/accordion/Accordion.stories.js +0 -207
  104. package/dist/accordion/readme.md +0 -96
  105. package/dist/alert/Alert.stories.js +0 -158
  106. package/dist/alert/close.svg +0 -4
  107. package/dist/alert/error.svg +0 -4
  108. package/dist/alert/info.svg +0 -4
  109. package/dist/alert/readme.md +0 -43
  110. package/dist/alert/success.svg +0 -4
  111. package/dist/alert/warning.svg +0 -4
  112. package/dist/button/Button.stories.js +0 -224
  113. package/dist/button/readme.md +0 -93
  114. package/dist/common/services/example-service.js +0 -10
  115. package/dist/common/services/example-service.test.js +0 -12
  116. package/dist/date/calendar.svg +0 -1
  117. package/dist/date/calendar_dark.svg +0 -1
  118. package/dist/dialog/Dialog.stories.js +0 -217
  119. package/dist/dialog/readme.md +0 -32
  120. package/dist/dropdown/Dropdown.stories.js +0 -249
  121. package/dist/dropdown/baseline-arrow_drop_down.svg +0 -1
  122. package/dist/dropdown/baseline-arrow_drop_down_wh.svg +0 -4
  123. package/dist/dropdown/baseline-arrow_drop_up.svg +0 -1
  124. package/dist/dropdown/baseline-arrow_drop_up_wh.svg +0 -4
  125. package/dist/dropdown/readme.md +0 -69
  126. package/dist/footer/Footer.stories.js +0 -94
  127. package/dist/footer/dxc_logo_wht.png +0 -0
  128. package/dist/footer/readme.md +0 -41
  129. package/dist/header/Header.stories.js +0 -176
  130. package/dist/header/close_icon.svg +0 -1
  131. package/dist/header/dxc_logo_black.png +0 -0
  132. package/dist/header/dxc_logo_white.png +0 -0
  133. package/dist/header/hamb_menu_black.svg +0 -1
  134. package/dist/header/hamb_menu_white.svg +0 -1
  135. package/dist/header/readme.md +0 -33
  136. package/dist/input-text/InputText.stories.js +0 -209
  137. package/dist/input-text/error.svg +0 -1
  138. package/dist/input-text/readme.md +0 -91
  139. package/dist/paginator/images/next.svg +0 -3
  140. package/dist/paginator/images/nextPage.svg +0 -3
  141. package/dist/paginator/images/previous.svg +0 -3
  142. package/dist/paginator/images/previousPage.svg +0 -3
  143. package/dist/paginator/readme.md +0 -50
  144. package/dist/resultsetTable/arrow_downward-24px_wht.svg +0 -1
  145. package/dist/resultsetTable/arrow_upward-24px_wht.svg +0 -1
  146. package/dist/resultsetTable/unfold_more-24px_wht.svg +0 -1
  147. package/dist/select/Select.stories.js +0 -235
  148. package/dist/select/readme.md +0 -72
  149. package/dist/sidenav/arrow_icon.svg +0 -3
  150. package/dist/slider/Slider.stories.js +0 -241
  151. package/dist/upload/buttons-upload/drag-drop-icon.svg +0 -4
  152. package/dist/upload/buttons-upload/upload-button.svg +0 -1
  153. package/dist/upload/file-upload/audio-icon.svg +0 -4
  154. package/dist/upload/file-upload/close.svg +0 -4
  155. package/dist/upload/file-upload/file-icon.svg +0 -4
  156. package/dist/upload/file-upload/video-icon.svg +0 -4
  157. package/dist/upload/transaction/audio-icon-err.svg +0 -4
  158. package/dist/upload/transaction/audio-icon.svg +0 -4
  159. package/dist/upload/transaction/error-icon.svg +0 -4
  160. package/dist/upload/transaction/file-icon-err.svg +0 -4
  161. package/dist/upload/transaction/file-icon.svg +0 -4
  162. package/dist/upload/transaction/image-icon-err.svg +0 -4
  163. package/dist/upload/transaction/image-icon.svg +0 -4
  164. package/dist/upload/transaction/success-icon.svg +0 -4
  165. package/dist/upload/transaction/video-icon-err.svg +0 -4
  166. package/dist/upload/transaction/video-icon.svg +0 -4
  167. package/dist/wizard/invalid_icon.svg +0 -6
  168. package/dist/wizard/valid_icon.svg +0 -6
  169. package/dist/wizard/validation-wrong.svg +0 -6
  170. 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,16 +25,32 @@ 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");
28
+ var _useTheme = _interopRequireDefault(require("../useTheme.js"));
29
+
30
+ var _Icons = require("./Icons");
31
+
32
+ function _templateObject14() {
33
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n width: ", ";\n height: ", ";\n ", "\n border: ", ";\n opacity: 1;\n flex-grow: 1;\n"]);
34
+
35
+ _templateObject14 = function _templateObject14() {
36
+ return data;
37
+ };
29
38
 
30
- var _ThemeContext = _interopRequireDefault(require("../ThemeContext.js"));
39
+ return data;
40
+ }
31
41
 
32
- var _valid_icon = _interopRequireDefault(require("./valid_icon.svg"));
42
+ function _templateObject13() {
43
+ 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"]);
33
44
 
34
- var _invalid_icon = _interopRequireDefault(require("./invalid_icon.svg"));
45
+ _templateObject13 = function _templateObject13() {
46
+ return data;
47
+ };
48
+
49
+ return data;
50
+ }
35
51
 
36
52
  function _templateObject12() {
37
- var data = (0, _taggedTemplateLiteral2["default"])(["\n width: ", ";\n height: ", ";\n ", "\n border: ", ";\n opacity: 1;\n flex-grow: 1;\n"]);
53
+ 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"]);
38
54
 
39
55
  _templateObject12 = function _templateObject12() {
40
56
  return data;
@@ -44,7 +60,7 @@ function _templateObject12() {
44
60
  }
45
61
 
46
62
  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"]);
63
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n margin-left: 12px;\n"]);
48
64
 
49
65
  _templateObject11 = function _templateObject11() {
50
66
  return data;
@@ -54,7 +70,7 @@ function _templateObject11() {
54
70
  }
55
71
 
56
72
  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"]);
73
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n width: 18px;\n height: 18px;\n position: absolute;\n top: 22.5px;\n left: 22.5px;\n"]);
58
74
 
59
75
  _templateObject10 = function _templateObject10() {
60
76
  return data;
@@ -64,7 +80,7 @@ function _templateObject10() {
64
80
  }
65
81
 
66
82
  function _templateObject9() {
67
- var data = (0, _taggedTemplateLiteral2["default"])(["\n margin-left: 10px;\n color: ", ";\n"]);
83
+ 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
84
 
69
85
  _templateObject9 = function _templateObject9() {
70
86
  return data;
@@ -74,7 +90,7 @@ function _templateObject9() {
74
90
  }
75
91
 
76
92
  function _templateObject8() {
77
- var data = (0, _taggedTemplateLiteral2["default"])(["\n width: 18px;\n height: 18px;\n position: absolute;\n bottom: 0px;\n right: 0px;\n"]);
93
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n background-color: ", ";\n mask: url(", ") no-repeat center;\n mask-size: ", ";\n height: ", ";\n width: ", ";\n"]);
78
94
 
79
95
  _templateObject8 = function _templateObject8() {
80
96
  return data;
@@ -84,7 +100,7 @@ function _templateObject8() {
84
100
  }
85
101
 
86
102
  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"]);
103
+ 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
104
 
89
105
  _templateObject7 = function _templateObject7() {
90
106
  return data;
@@ -94,7 +110,7 @@ function _templateObject7() {
94
110
  }
95
111
 
96
112
  function _templateObject6() {
97
- var data = (0, _taggedTemplateLiteral2["default"])(["\n width: 19px;\n height: 19px;\n"]);
113
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n width: ", ";\n height: ", ";\n"]);
98
114
 
99
115
  _templateObject6 = function _templateObject6() {
100
116
  return data;
@@ -104,7 +120,7 @@ function _templateObject6() {
104
120
  }
105
121
 
106
122
  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"]);
123
+ 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
124
 
109
125
  _templateObject5 = function _templateObject5() {
110
126
  return data;
@@ -114,7 +130,7 @@ function _templateObject5() {
114
130
  }
115
131
 
116
132
  function _templateObject4() {
117
- var data = (0, _taggedTemplateLiteral2["default"])(["\n position: relative;\n display: inline-flex;\n padding-bottom: 3px;\n"]);
133
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n position: relative;\n display: inline-flex;\n padding-bottom: 4px;\n"]);
118
134
 
119
135
  _templateObject4 = function _templateObject4() {
120
136
  return data;
@@ -124,7 +140,7 @@ function _templateObject4() {
124
140
  }
125
141
 
126
142
  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"]);
143
+ 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
144
 
129
145
  _templateObject3 = function _templateObject3() {
130
146
  return data;
@@ -134,7 +150,7 @@ function _templateObject3() {
134
150
  }
135
151
 
136
152
  function _templateObject2() {
137
- var data = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n ", "\n flex-grow: ", ";\n flex-direction: ", ";\n ", "\n \n"]);
153
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n ", "\n flex-grow: ", ";\n flex-direction: ", ";\n ", "\n"]);
138
154
 
139
155
  _templateObject2 = function _templateObject2() {
140
156
  return data;
@@ -144,7 +160,7 @@ function _templateObject2() {
144
160
  }
145
161
 
146
162
  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"]);
163
+ 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
164
 
149
165
  _templateObject = function _templateObject() {
150
166
  return data;
@@ -159,18 +175,17 @@ var DxcWizard = function DxcWizard(_ref) {
159
175
  currentStep = _ref.currentStep,
160
176
  onStepClick = _ref.onStepClick,
161
177
  steps = _ref.steps,
162
- margin = _ref.margin;
178
+ margin = _ref.margin,
179
+ _ref$tabIndex = _ref.tabIndex,
180
+ tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
163
181
 
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];
182
+ var _useState = (0, _react.useState)(currentStep || 0),
183
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
184
+ innerCurrent = _useState2[0],
185
+ setInnerCurrentStep = _useState2[1];
168
186
 
169
187
  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]);
188
+ var colorsTheme = (0, _useTheme["default"])();
174
189
 
175
190
  var handleStepClick = function handleStepClick(newValue) {
176
191
  if (currentStep == null) {
@@ -183,7 +198,7 @@ var DxcWizard = function DxcWizard(_ref) {
183
198
  };
184
199
 
185
200
  return _react["default"].createElement(_styledComponents.ThemeProvider, {
186
- theme: colorsTheme
201
+ theme: colorsTheme.wizard
187
202
  }, _react["default"].createElement(StepsContainer, {
188
203
  mode: mode,
189
204
  margin: margin
@@ -193,11 +208,11 @@ var DxcWizard = function DxcWizard(_ref) {
193
208
  mode: mode,
194
209
  lastStep: i === steps.length - 1
195
210
  }, _react["default"].createElement(Step, {
211
+ tabIndex: tabIndex,
196
212
  onClick: function onClick() {
197
213
  return handleStepClick(i);
198
214
  },
199
215
  mode: mode,
200
- disable: step.disabled,
201
216
  disabled: step.disabled,
202
217
  first: i === 0,
203
218
  last: i === steps.length - 1
@@ -205,18 +220,23 @@ var DxcWizard = function DxcWizard(_ref) {
205
220
  current: i === renderedCurrent,
206
221
  visited: i < renderedCurrent,
207
222
  disabled: step.disabled
208
- }, step.iconSrc ? _react["default"].createElement(Icon, {
223
+ }, step.icon ? _react["default"].createElement(StepIconContainer, {
224
+ disabled: step.disabled
225
+ }, (0, _typeof2["default"])(step.icon) === "object" ? step.icon.type === "img" ? _react["default"].createElement(ImgContainer, {
226
+ current: i === renderedCurrent,
227
+ img: step.icon.props.src
228
+ }) : step.icon : _react["default"].createElement(step.icon)) : step.iconSrc ? _react["default"].createElement(Icon, {
209
229
  src: step.iconSrc
210
230
  }) : _react["default"].createElement(Number, {
211
231
  disabled: step.disabled,
212
232
  current: i === renderedCurrent
213
- }, i + 1)), step.valid !== undefined ? step.valid ? _react["default"].createElement(ValidityIcon, {
214
- src: _valid_icon["default"]
215
- }) : _react["default"].createElement(ValidityIcon, {
216
- 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, {
233
+ }, i + 1)), step.valid !== undefined ? step.valid ? _react["default"].createElement(ValidityIconContainer, null, _Icons.validIcon) : _react["default"].createElement(ValidityIconContainer, null, _Icons.invalidIcon) : ""), step.label || step.description ? _react["default"].createElement(InfoContainer, null, step.label ? _react["default"].createElement(Label, {
234
+ disabled: step.disabled,
235
+ visited: i <= innerCurrent
236
+ }, step.label) : "", step.description ? _react["default"].createElement(Description, {
237
+ disabled: step.disabled,
238
+ visited: i <= innerCurrent
239
+ }, step.description) : "") : ""), i === steps.length - 1 ? "" : _react["default"].createElement(StepSeparator, {
220
240
  mode: mode
221
241
  }));
222
242
  })));
@@ -226,6 +246,8 @@ var StepsContainer = _styledComponents["default"].div(_templateObject(), functio
226
246
  return props.mode === "vertical" ? "column" : "row";
227
247
  }, function (props) {
228
248
  return props.mode === "vertical" ? "height: 500px" : "width: 100%";
249
+ }, function (props) {
250
+ return props.theme.fontFamily;
229
251
  }, function (props) {
230
252
  return props.margin && (0, _typeof2["default"])(props.margin) !== "object" ? _variables.spaces[props.margin] : "0px";
231
253
  }, function (props) {
@@ -249,53 +271,114 @@ var StepContainer = _styledComponents["default"].div(_templateObject2(), functio
249
271
  });
250
272
 
251
273
  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";
274
+ 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
275
  }, function (props) {
254
276
  return props.disabled ? "cursor: not-allowed" : "";
255
277
  }, function (props) {
256
278
  return props.disabled ? "" : "cursor: pointer";
279
+ }, function (props) {
280
+ return props.theme.focusColor;
257
281
  });
258
282
 
259
283
  var StepHeader = _styledComponents["default"].div(_templateObject4());
260
284
 
261
285
  var IconContainer = _styledComponents["default"].div(_templateObject5(), function (props) {
262
- return !props.current && !props.disabled ? "32px" : "36px";
286
+ return props.disabled ? props.theme.disabledCircleWidth : props.current ? props.theme.selectedCircleWidth : props.theme.circleWidth;
263
287
  }, function (props) {
264
- return !props.current && !props.disabled ? "32px" : "36px";
288
+ return props.disabled ? props.theme.disabledCircleHeight : props.current ? props.theme.selectedCircleHeight : props.theme.circleHeight;
265
289
  }, function (props) {
266
- return !props.current && !props.disabled ? "border: 2px solid ".concat(props.theme.wizard.borderColor, ";") : "";
290
+ 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 ");
267
291
  }, function (props) {
268
- return props.disabled ? "background: ".concat(props.theme.wizard.disabledBackground, ";\n p {\n color: ").concat(props.theme.wizard.disabledFont, " !important;\n }") : "";
292
+ return props.disabled ? "color: ".concat(props.theme.disabledFontColor, ";") : "color: ".concat(props.current ? props.theme.stepContainerSelectedFontColor : props.theme.stepContainerFontColor, ";");
269
293
  }, function (props) {
270
- return props.current ? "background: ".concat(props.theme.wizard.selectedBackgroundColor, ";") : "";
271
- }, function (props) {
272
- return props.current ? "p {\n color: ".concat(props.theme.wizard.selectedBackgroundFont, " !important;\n }") : "";
294
+ return !props.current && !props.disabled ? props.theme.circleBorderRadius : props.current ? props.theme.selectedCircleBorderRadius : props.disabled ? props.theme.disabledCircleBorderRadius : "";
273
295
  });
274
296
 
275
- var Icon = _styledComponents["default"].img(_templateObject6());
297
+ var Icon = _styledComponents["default"].img(_templateObject6(), function (props) {
298
+ return props.theme.stepContainerIconSize;
299
+ }, function (props) {
300
+ return props.theme.stepContainerIconSize;
301
+ });
276
302
 
277
- var Number = _styledComponents["default"].p(_templateObject7(), function (props) {
278
- return props.theme.wizard.fontColor;
303
+ var StepIconContainer = _styledComponents["default"].div(_templateObject7(), function (props) {
304
+ return props.theme.stepContainerIconSize;
305
+ }, function (props) {
306
+ return props.theme.stepContainerIconSize;
279
307
  });
280
308
 
281
- var ValidityIcon = _styledComponents["default"].img(_templateObject8());
309
+ var ImgContainer = _styledComponents["default"].div(_templateObject8(), function (props) {
310
+ return props.current ? props.theme.stepContainerSelectedFontColor : props.theme.stepContainerFontColor;
311
+ }, function (_ref2) {
312
+ var img = _ref2.img;
313
+ return img;
314
+ }, function (props) {
315
+ return "".concat(props.theme.stepContainerIconSize, " ").concat(props.theme.stepContainerIconSize);
316
+ }, function (props) {
317
+ return props.theme.stepContainerIconSize;
318
+ }, function (props) {
319
+ return props.theme.stepContainerIconSize;
320
+ });
282
321
 
283
- var InfoContainer = _styledComponents["default"].div(_templateObject9(), function (props) {
284
- return props.active ? props.theme.wizard.fontColor : props.theme.wizard.disabledFont;
322
+ var Number = _styledComponents["default"].p(_templateObject9(), function (props) {
323
+ return props.theme.stepContainerFontSize;
324
+ }, function (props) {
325
+ return props.theme.stepContainerFontFamily;
326
+ }, function (props) {
327
+ return props.theme.stepContainerFontStyle;
328
+ }, function (props) {
329
+ return props.theme.stepContainerFontWeight;
330
+ }, function (props) {
331
+ return props.theme.stepContainerLetterSpacing;
285
332
  });
286
333
 
287
- var Label = _styledComponents["default"].p(_templateObject10());
334
+ var ValidityIconContainer = _styledComponents["default"].div(_templateObject10());
288
335
 
289
- var Description = _styledComponents["default"].p(_templateObject11());
336
+ var InfoContainer = _styledComponents["default"].div(_templateObject11());
337
+
338
+ var Label = _styledComponents["default"].p(_templateObject12(), function (props) {
339
+ return props.theme.labelTextAlign;
340
+ }, function (props) {
341
+ return props.theme.labelFontFamily;
342
+ }, function (props) {
343
+ return props.theme.labelFontSize;
344
+ }, function (props) {
345
+ return props.theme.labelFontStyle;
346
+ }, function (props) {
347
+ return props.theme.labelFontWeight;
348
+ }, function (props) {
349
+ return props.theme.labelLetterSpacing;
350
+ }, function (props) {
351
+ return props.disabled ? "color: ".concat(props.theme.disabledFontColor, ";") : "color: ".concat(props.visited ? props.theme.visitedLabelFontColor : props.theme.labelFontColor, ";");
352
+ }, function (props) {
353
+ return props.theme.labelFontTextTransform;
354
+ });
355
+
356
+ var Description = _styledComponents["default"].p(_templateObject13(), function (props) {
357
+ return props.theme.descriptionTextAlign;
358
+ }, function (props) {
359
+ return props.theme.descriptionFontFamily;
360
+ }, function (props) {
361
+ return props.theme.descriptionFontSize;
362
+ }, function (props) {
363
+ return props.theme.descriptionFontStyle;
364
+ }, function (props) {
365
+ return props.theme.descriptionFontWeight;
366
+ }, function (props) {
367
+ return props.theme.descriptionLetterSpacing;
368
+ }, function (props) {
369
+ return props.theme.descriptionFontTextTransform;
370
+ }, function (props) {
371
+ return props.disabled ? "color: ".concat(props.theme.disabledFontColor, ";") : "color: ".concat(props.visited ? props.theme.visitedDescriptionFontColor : props.theme.descriptionFontColor, ";");
372
+ });
290
373
 
291
- var StepSeparator = _styledComponents["default"].div(_templateObject12(), function (props) {
374
+ var StepSeparator = _styledComponents["default"].div(_templateObject14(), function (props) {
292
375
  return props.mode === "horizontal" ? "" : "0";
293
376
  }, function (props) {
294
377
  return props.mode === "horizontal" ? "0" : "";
295
378
  }, function (props) {
296
379
  return props.mode === "vertical" ? "margin: 0 18px;" : "";
297
380
  }, function (props) {
298
- return "solid 1px ".concat(props.theme.wizard.lineColor);
381
+ return "".concat(props.theme.separatorBorderStyle, " ").concat(props.theme.separatorBorderThickness, " ").concat(props.theme.separatorColor);
299
382
  });
300
383
 
301
384
  DxcWizard.propTypes = {
@@ -305,6 +388,7 @@ DxcWizard.propTypes = {
305
388
  steps: _propTypes["default"].arrayOf(_propTypes["default"].shape({
306
389
  label: _propTypes["default"].string,
307
390
  description: _propTypes["default"].string,
391
+ icon: _propTypes["default"].oneOfType([_propTypes["default"].element, _propTypes["default"].func]),
308
392
  iconSrc: _propTypes["default"].string,
309
393
  disabled: _propTypes["default"].bool,
310
394
  valid: _propTypes["default"].bool
@@ -314,7 +398,8 @@ DxcWizard.propTypes = {
314
398
  bottom: _propTypes["default"].oneOf(Object.keys(_variables.spaces)),
315
399
  left: _propTypes["default"].oneOf(Object.keys(_variables.spaces)),
316
400
  right: _propTypes["default"].oneOf(Object.keys(_variables.spaces))
317
- }), _propTypes["default"].oneOf((0, _toConsumableArray2["default"])(Object.keys(_variables.spaces)))])
401
+ }), _propTypes["default"].oneOf((0, _toConsumableArray2["default"])(Object.keys(_variables.spaces)))]),
402
+ tabIndex: _propTypes["default"].number
318
403
  };
319
404
  var _default = DxcWizard;
320
405
  exports["default"] = _default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxc-technology/halstack-react",
3
- "version": "0.0.0-e792e0c",
3
+ "version": "0.0.0-e832ef8",
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
+ });