@dxc-technology/halstack-react 0.0.0-c908d78 → 0.0.0-c9b5c13

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 (291) hide show
  1. package/BackgroundColorContext.d.ts +10 -0
  2. package/BackgroundColorContext.js +1 -4
  3. package/HalstackContext.d.ts +12 -0
  4. package/HalstackContext.js +295 -0
  5. package/accordion/Accordion.d.ts +1 -1
  6. package/accordion/Accordion.js +15 -47
  7. package/accordion/Accordion.stories.tsx +307 -0
  8. package/accordion/Accordion.test.js +72 -0
  9. package/accordion/types.d.ts +8 -8
  10. package/accordion-group/AccordionGroup.d.ts +1 -1
  11. package/accordion-group/AccordionGroup.js +15 -17
  12. package/accordion-group/AccordionGroup.stories.tsx +225 -0
  13. package/accordion-group/AccordionGroup.test.js +151 -0
  14. package/accordion-group/types.d.ts +8 -8
  15. package/alert/Alert.js +6 -3
  16. package/alert/Alert.stories.tsx +170 -0
  17. package/alert/Alert.test.js +92 -0
  18. package/alert/types.d.ts +1 -1
  19. package/badge/Badge.d.ts +4 -0
  20. package/badge/Badge.js +6 -4
  21. package/badge/types.d.ts +5 -0
  22. package/{radio → badge}/types.js +0 -0
  23. package/bleed/Bleed.d.ts +3 -0
  24. package/bleed/Bleed.js +84 -0
  25. package/bleed/Bleed.stories.tsx +342 -0
  26. package/bleed/types.d.ts +37 -0
  27. package/bleed/types.js +5 -0
  28. package/box/Box.d.ts +1 -1
  29. package/box/Box.js +26 -39
  30. package/box/Box.test.js +18 -0
  31. package/box/types.d.ts +0 -4
  32. package/button/Button.d.ts +1 -1
  33. package/button/Button.js +24 -27
  34. package/button/Button.stories.tsx +222 -241
  35. package/button/Button.test.js +35 -0
  36. package/button/types.d.ts +5 -9
  37. package/card/Card.js +26 -30
  38. package/card/Card.stories.tsx +201 -0
  39. package/card/Card.test.js +50 -0
  40. package/card/ice-cream.jpg +0 -0
  41. package/card/types.d.ts +4 -6
  42. package/checkbox/Checkbox.d.ts +1 -1
  43. package/checkbox/Checkbox.js +45 -41
  44. package/checkbox/Checkbox.stories.tsx +124 -128
  45. package/checkbox/Checkbox.test.js +78 -0
  46. package/checkbox/types.d.ts +9 -5
  47. package/chip/Chip.d.ts +4 -0
  48. package/chip/Chip.js +16 -76
  49. package/chip/Chip.stories.tsx +119 -0
  50. package/chip/Chip.test.js +56 -0
  51. package/chip/types.d.ts +45 -0
  52. package/chip/types.js +5 -0
  53. package/common/variables.js +247 -346
  54. package/date-input/DateInput.js +63 -52
  55. package/date-input/DateInput.stories.tsx +138 -0
  56. package/date-input/DateInput.test.js +479 -0
  57. package/date-input/types.d.ts +16 -9
  58. package/dialog/Dialog.js +8 -35
  59. package/dialog/Dialog.stories.tsx +212 -0
  60. package/dialog/Dialog.test.js +40 -0
  61. package/dropdown/Dropdown.d.ts +1 -1
  62. package/dropdown/Dropdown.js +22 -48
  63. package/dropdown/Dropdown.stories.tsx +249 -0
  64. package/dropdown/Dropdown.test.js +189 -0
  65. package/dropdown/types.d.ts +6 -15
  66. package/file-input/FileInput.d.ts +4 -0
  67. package/file-input/FileInput.js +172 -111
  68. package/file-input/FileInput.stories.tsx +507 -0
  69. package/file-input/FileInput.test.js +457 -0
  70. package/file-input/FileItem.d.ts +14 -0
  71. package/file-input/FileItem.js +16 -23
  72. package/file-input/types.d.ts +112 -0
  73. package/file-input/types.js +5 -0
  74. package/footer/Footer.d.ts +1 -1
  75. package/footer/Footer.js +32 -113
  76. package/footer/{Footer.stories.jsx → Footer.stories.tsx} +1 -22
  77. package/footer/Footer.test.js +109 -0
  78. package/footer/Icons.d.ts +2 -0
  79. package/footer/Icons.js +3 -3
  80. package/footer/types.d.ts +22 -18
  81. package/header/Header.js +29 -50
  82. package/header/Header.stories.tsx +172 -0
  83. package/header/Header.test.js +79 -0
  84. package/header/Icons.d.ts +2 -0
  85. package/header/types.d.ts +4 -2
  86. package/heading/Heading.d.ts +4 -0
  87. package/heading/Heading.js +7 -24
  88. package/heading/Heading.stories.tsx +54 -0
  89. package/heading/Heading.test.js +186 -0
  90. package/heading/types.d.ts +33 -0
  91. package/heading/types.js +5 -0
  92. package/inset/Inset.d.ts +3 -0
  93. package/inset/Inset.js +84 -0
  94. package/inset/Inset.stories.tsx +229 -0
  95. package/inset/types.d.ts +37 -0
  96. package/inset/types.js +5 -0
  97. package/layout/ApplicationLayout.d.ts +11 -0
  98. package/layout/ApplicationLayout.js +84 -120
  99. package/layout/ApplicationLayout.stories.tsx +126 -0
  100. package/layout/Icons.d.ts +5 -0
  101. package/layout/Icons.js +13 -2
  102. package/layout/SidenavContext.d.ts +5 -0
  103. package/layout/SidenavContext.js +19 -0
  104. package/layout/types.d.ts +52 -0
  105. package/layout/types.js +5 -0
  106. package/link/Link.d.ts +3 -2
  107. package/link/Link.js +61 -86
  108. package/link/Link.stories.tsx +186 -0
  109. package/link/Link.test.js +83 -0
  110. package/link/types.d.ts +9 -29
  111. package/list/List.d.ts +4 -0
  112. package/list/List.js +47 -0
  113. package/list/List.stories.tsx +95 -0
  114. package/list/types.d.ts +7 -0
  115. package/list/types.js +5 -0
  116. package/main.d.ts +12 -9
  117. package/main.js +72 -42
  118. package/number-input/NumberInput.d.ts +4 -0
  119. package/number-input/NumberInput.js +16 -68
  120. package/number-input/{NumberInput.stories.jsx → NumberInput.stories.tsx} +5 -5
  121. package/number-input/NumberInput.test.js +506 -0
  122. package/number-input/NumberInputContext.d.ts +4 -0
  123. package/number-input/NumberInputContext.js +5 -2
  124. package/number-input/numberInputContextTypes.d.ts +19 -0
  125. package/number-input/numberInputContextTypes.js +5 -0
  126. package/number-input/types.d.ts +124 -0
  127. package/number-input/types.js +5 -0
  128. package/package.json +9 -6
  129. package/paginator/Paginator.js +19 -46
  130. package/paginator/Paginator.test.js +266 -0
  131. package/password-input/PasswordInput.js +23 -19
  132. package/password-input/PasswordInput.stories.tsx +3 -3
  133. package/password-input/PasswordInput.test.js +180 -0
  134. package/password-input/types.d.ts +29 -19
  135. package/progress-bar/ProgressBar.js +5 -5
  136. package/progress-bar/ProgressBar.stories.jsx +11 -11
  137. package/progress-bar/ProgressBar.test.js +65 -0
  138. package/quick-nav/QuickNav.d.ts +4 -0
  139. package/quick-nav/QuickNav.js +112 -0
  140. package/quick-nav/QuickNav.stories.tsx +237 -0
  141. package/quick-nav/types.d.ts +21 -0
  142. package/quick-nav/types.js +5 -0
  143. package/radio-group/Radio.d.ts +4 -0
  144. package/radio-group/Radio.js +141 -0
  145. package/radio-group/RadioGroup.d.ts +4 -0
  146. package/radio-group/RadioGroup.js +282 -0
  147. package/radio-group/RadioGroup.stories.tsx +100 -0
  148. package/radio-group/RadioGroup.test.js +695 -0
  149. package/radio-group/types.d.ts +114 -0
  150. package/radio-group/types.js +5 -0
  151. package/resultsetTable/ResultsetTable.d.ts +4 -0
  152. package/resultsetTable/ResultsetTable.js +9 -29
  153. package/resultsetTable/ResultsetTable.stories.tsx +275 -0
  154. package/resultsetTable/ResultsetTable.test.js +306 -0
  155. package/resultsetTable/types.d.ts +67 -0
  156. package/resultsetTable/types.js +5 -0
  157. package/row/Row.d.ts +3 -0
  158. package/row/Row.js +127 -0
  159. package/row/Row.stories.tsx +237 -0
  160. package/row/types.d.ts +28 -0
  161. package/row/types.js +5 -0
  162. package/select/Icons.d.ts +10 -0
  163. package/select/Icons.js +93 -0
  164. package/select/Listbox.d.ts +4 -0
  165. package/select/Listbox.js +152 -0
  166. package/select/Option.d.ts +4 -0
  167. package/select/Option.js +110 -0
  168. package/select/Select.d.ts +4 -0
  169. package/select/Select.js +122 -342
  170. package/select/Select.stories.tsx +594 -0
  171. package/select/Select.test.js +2120 -0
  172. package/select/types.d.ts +213 -0
  173. package/select/types.js +5 -0
  174. package/sidenav/Sidenav.d.ts +9 -0
  175. package/sidenav/Sidenav.js +26 -24
  176. package/sidenav/Sidenav.stories.tsx +182 -0
  177. package/sidenav/Sidenav.test.js +56 -0
  178. package/sidenav/types.d.ts +50 -0
  179. package/sidenav/types.js +5 -0
  180. package/slider/Slider.d.ts +1 -1
  181. package/slider/Slider.js +45 -33
  182. package/slider/Slider.stories.tsx +177 -0
  183. package/slider/Slider.test.js +150 -0
  184. package/slider/types.d.ts +6 -7
  185. package/spinner/Spinner.js +3 -3
  186. package/spinner/Spinner.stories.jsx +1 -0
  187. package/spinner/Spinner.test.js +64 -0
  188. package/stack/Stack.d.ts +3 -0
  189. package/stack/Stack.js +97 -0
  190. package/stack/Stack.stories.tsx +164 -0
  191. package/stack/types.d.ts +24 -0
  192. package/stack/types.js +5 -0
  193. package/switch/Switch.d.ts +1 -1
  194. package/switch/Switch.js +37 -21
  195. package/switch/Switch.stories.tsx +15 -15
  196. package/switch/Switch.test.js +98 -0
  197. package/switch/types.d.ts +6 -2
  198. package/table/Table.js +3 -3
  199. package/table/Table.stories.jsx +2 -1
  200. package/table/Table.test.js +26 -0
  201. package/tabs/Tabs.d.ts +1 -1
  202. package/tabs/Tabs.js +20 -20
  203. package/tabs/Tabs.stories.tsx +112 -0
  204. package/tabs/Tabs.test.js +140 -0
  205. package/tabs/types.d.ts +29 -18
  206. package/tabs-nav/NavTabs.d.ts +8 -0
  207. package/tabs-nav/NavTabs.js +125 -0
  208. package/tabs-nav/NavTabs.stories.tsx +170 -0
  209. package/tabs-nav/NavTabs.test.js +82 -0
  210. package/tabs-nav/Tab.d.ts +4 -0
  211. package/tabs-nav/Tab.js +132 -0
  212. package/tabs-nav/types.d.ts +53 -0
  213. package/tabs-nav/types.js +5 -0
  214. package/tag/Tag.d.ts +1 -1
  215. package/tag/Tag.js +18 -28
  216. package/tag/Tag.stories.tsx +26 -29
  217. package/tag/Tag.test.js +60 -0
  218. package/tag/types.d.ts +23 -14
  219. package/text/Text.d.ts +7 -0
  220. package/text/Text.js +30 -0
  221. package/text/Text.stories.tsx +19 -0
  222. package/text-input/Suggestion.d.ts +4 -0
  223. package/text-input/Suggestion.js +55 -0
  224. package/text-input/TextInput.d.ts +4 -0
  225. package/text-input/TextInput.js +91 -146
  226. package/text-input/TextInput.stories.tsx +474 -0
  227. package/text-input/TextInput.test.js +1712 -0
  228. package/text-input/types.d.ts +178 -0
  229. package/text-input/types.js +5 -0
  230. package/textarea/Textarea.d.ts +4 -0
  231. package/textarea/Textarea.js +39 -79
  232. package/textarea/Textarea.stories.jsx +37 -15
  233. package/textarea/Textarea.test.js +437 -0
  234. package/textarea/types.d.ts +137 -0
  235. package/textarea/types.js +5 -0
  236. package/toggle-group/ToggleGroup.d.ts +4 -0
  237. package/toggle-group/ToggleGroup.js +18 -46
  238. package/toggle-group/ToggleGroup.stories.tsx +173 -0
  239. package/toggle-group/ToggleGroup.test.js +156 -0
  240. package/toggle-group/types.d.ts +105 -0
  241. package/toggle-group/types.js +5 -0
  242. package/useTheme.d.ts +2 -0
  243. package/useTheme.js +2 -2
  244. package/useTranslatedLabels.d.ts +2 -0
  245. package/useTranslatedLabels.js +20 -0
  246. package/wizard/Wizard.d.ts +4 -0
  247. package/wizard/Wizard.js +115 -94
  248. package/wizard/Wizard.stories.tsx +214 -0
  249. package/wizard/Wizard.test.js +141 -0
  250. package/wizard/types.d.ts +64 -0
  251. package/wizard/types.js +5 -0
  252. package/ThemeContext.js +0 -246
  253. package/V3Select/V3Select.js +0 -455
  254. package/V3Select/index.d.ts +0 -27
  255. package/V3Textarea/V3Textarea.js +0 -260
  256. package/V3Textarea/index.d.ts +0 -27
  257. package/chip/index.d.ts +0 -22
  258. package/date/Date.js +0 -373
  259. package/date/index.d.ts +0 -27
  260. package/file-input/index.d.ts +0 -81
  261. package/heading/index.d.ts +0 -17
  262. package/input-text/Icons.js +0 -22
  263. package/input-text/InputText.js +0 -611
  264. package/input-text/index.d.ts +0 -36
  265. package/number-input/index.d.ts +0 -113
  266. package/radio/Radio.d.ts +0 -4
  267. package/radio/Radio.js +0 -174
  268. package/radio/Radio.stories.tsx +0 -192
  269. package/radio/types.d.ts +0 -54
  270. package/resultsetTable/index.d.ts +0 -19
  271. package/select/index.d.ts +0 -131
  272. package/sidenav/index.d.ts +0 -13
  273. package/text-input/index.d.ts +0 -135
  274. package/textarea/index.d.ts +0 -117
  275. package/toggle/Toggle.js +0 -186
  276. package/toggle/index.d.ts +0 -21
  277. package/toggle-group/index.d.ts +0 -21
  278. package/upload/Upload.js +0 -201
  279. package/upload/buttons-upload/ButtonsUpload.js +0 -111
  280. package/upload/buttons-upload/Icons.js +0 -40
  281. package/upload/dragAndDropArea/DragAndDropArea.js +0 -225
  282. package/upload/dragAndDropArea/Icons.js +0 -39
  283. package/upload/file-upload/FileToUpload.js +0 -115
  284. package/upload/file-upload/Icons.js +0 -66
  285. package/upload/files-upload/FilesToUpload.js +0 -109
  286. package/upload/index.d.ts +0 -15
  287. package/upload/transaction/Icons.js +0 -160
  288. package/upload/transaction/Transaction.js +0 -104
  289. package/upload/transactions/Transactions.js +0 -94
  290. package/wizard/Icons.js +0 -65
  291. package/wizard/index.d.ts +0 -18
package/slider/Slider.js CHANGED
@@ -27,9 +27,11 @@ var _variables = require("../common/variables.js");
27
27
 
28
28
  var _utils = require("../common/utils.js");
29
29
 
30
- var _useTheme = _interopRequireDefault(require("../useTheme.js"));
30
+ var _useTheme = _interopRequireDefault(require("../useTheme"));
31
31
 
32
- var _BackgroundColorContext = _interopRequireDefault(require("../BackgroundColorContext.js"));
32
+ var _BackgroundColorContext = _interopRequireDefault(require("../BackgroundColorContext"));
33
+
34
+ var _uuid = require("uuid");
33
35
 
34
36
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7;
35
37
 
@@ -42,6 +44,7 @@ var DxcSlider = function DxcSlider(_ref) {
42
44
  label = _ref$label === void 0 ? "" : _ref$label,
43
45
  _ref$name = _ref.name,
44
46
  name = _ref$name === void 0 ? "" : _ref$name,
47
+ defaultValue = _ref.defaultValue,
45
48
  value = _ref.value,
46
49
  _ref$helperText = _ref.helperText,
47
50
  helperText = _ref$helperText === void 0 ? "" : _ref$helperText,
@@ -64,17 +67,20 @@ var DxcSlider = function DxcSlider(_ref) {
64
67
  labelFormatCallback = _ref.labelFormatCallback,
65
68
  margin = _ref.margin,
66
69
  _ref$size = _ref.size,
67
- size = _ref$size === void 0 ? "fillParent" : _ref$size,
68
- _ref$tabIndex = _ref.tabIndex,
69
- tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
70
+ size = _ref$size === void 0 ? "fillParent" : _ref$size;
70
71
 
71
- var _useState = (0, _react.useState)(0),
72
+ var _useState = (0, _react.useState)(defaultValue !== null && defaultValue !== void 0 ? defaultValue : 0),
72
73
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
73
74
  innerValue = _useState2[0],
74
75
  setInnerValue = _useState2[1];
75
76
 
76
77
  var colorsTheme = (0, _useTheme["default"])();
77
78
  var backgroundType = (0, _react.useContext)(_BackgroundColorContext["default"]);
79
+
80
+ var _useState3 = (0, _react.useState)("label-".concat((0, _uuid.v4)())),
81
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 1),
82
+ labelId = _useState4[0];
83
+
78
84
  var minLabel = (0, _react.useMemo)(function () {
79
85
  return labelFormatCallback ? labelFormatCallback(minValue) : minValue;
80
86
  }, [labelFormatCallback, minValue]);
@@ -109,7 +115,14 @@ var DxcSlider = function DxcSlider(_ref) {
109
115
  }, /*#__PURE__*/_react["default"].createElement(Container, {
110
116
  margin: margin,
111
117
  size: size
112
- }, /*#__PURE__*/_react["default"].createElement(Label, null, label), /*#__PURE__*/_react["default"].createElement(HelperText, null, helperText), /*#__PURE__*/_react["default"].createElement(SliderContainer, {
118
+ }, /*#__PURE__*/_react["default"].createElement(Label, {
119
+ id: labelId,
120
+ disabled: disabled,
121
+ backgroundType: backgroundType
122
+ }, label), /*#__PURE__*/_react["default"].createElement(HelperText, {
123
+ disabled: disabled,
124
+ backgroundType: backgroundType
125
+ }, helperText), /*#__PURE__*/_react["default"].createElement(SliderContainer, {
113
126
  backgroundType: backgroundType
114
127
  }, showLimitsValues && /*#__PURE__*/_react["default"].createElement(MinLabelContainer, {
115
128
  backgroundType: backgroundType,
@@ -123,23 +136,22 @@ var DxcSlider = function DxcSlider(_ref) {
123
136
  step: step,
124
137
  marks: marks || [],
125
138
  disabled: disabled,
126
- tabIndex: tabIndex
139
+ "aria-labelledby": labelId
127
140
  }), showLimitsValues && /*#__PURE__*/_react["default"].createElement(MaxLabelContainer, {
128
141
  backgroundType: backgroundType,
129
142
  disabled: disabled,
130
143
  step: step
131
144
  }, maxLabel), showInput && /*#__PURE__*/_react["default"].createElement(StyledTextInput, null, /*#__PURE__*/_react["default"].createElement(_TextInput["default"], {
132
145
  name: name,
133
- value: value != null && value >= 0 && value || innerValue,
146
+ value: value != null && value >= 0 && value.toString() || innerValue.toString(),
134
147
  disabled: disabled,
135
148
  onChange: handlerInputChange,
136
- size: "fillParent",
137
- tabIndex: tabIndex
149
+ size: "fillParent"
138
150
  })))));
139
151
  };
140
152
 
141
153
  var sizes = {
142
- medium: "240px",
154
+ medium: "360px",
143
155
  large: "480px",
144
156
  fillParent: "100%"
145
157
  };
@@ -162,10 +174,10 @@ var Container = _styledComponents["default"].div(_templateObject || (_templateOb
162
174
  return calculateWidth(props.margin, props.size);
163
175
  });
164
176
 
165
- var Label = _styledComponents["default"].label(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: ", ";\n"])), function (props) {
166
- return props.theme.labelFontColor;
177
+ var Label = _styledComponents["default"].label(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: ", ";\n"])), function (props) {
178
+ return props.disabled ? props.backgroundType === "dark" ? props.theme.disabledLabelFontColorOnDark : props.theme.disabledLabelFontColor : props.backgroundType === "dark" ? props.theme.labelFontColorOnDark : props.theme.labelFontColor;
167
179
  }, function (props) {
168
- return props.theme.labelFontFamily;
180
+ return props.theme.fontFamily;
169
181
  }, function (props) {
170
182
  return props.theme.labelFontSize;
171
183
  }, function (props) {
@@ -177,20 +189,20 @@ var Label = _styledComponents["default"].label(_templateObject2 || (_templateObj
177
189
  });
178
190
 
179
191
  var HelperText = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: ", ";\n"])), function (props) {
180
- return props.theme.helperTextFontColor;
192
+ return props.disabled ? props.backgroundType === "dark" ? props.theme.disabledHelperTextFontColorOnDark : props.theme.disabledHelperTextFontColor : props.backgroundType === "dark" ? props.theme.helperTextFontColorOnDark : props.theme.helperTextFontColor;
181
193
  }, function (props) {
182
- return props.theme.helperTextFontFamily;
194
+ return props.theme.fontFamily;
183
195
  }, function (props) {
184
196
  return props.theme.helperTextFontSize;
185
197
  }, function (props) {
186
- return props.theme.helperTextFontstyle;
198
+ return props.theme.helperTextFontStyle;
187
199
  }, function (props) {
188
200
  return props.theme.helperTextFontWeight;
189
201
  }, function (props) {
190
202
  return props.theme.helperTextLineHeight;
191
203
  });
192
204
 
193
- var SliderContainer = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n height: 48px;\n align-items: center;\n\n .MultiSlider-root {\n display: flex;\n align-items: center;\n }\n .MuiSlider-container {\n padding: 30px 24px;\n }\n .MuiSlider-root.Mui-disabled {\n color: ", ";\n cursor: not-allowed;\n }\n .Mui-disabled {\n & .MuiSlider-thumb {\n height: ", ";\n width: ", ";\n background-color: ", ";\n top: ", ";\n }\n & .MuiSlider-track {\n background-color: ", ";\n }\n & .MuiSlider-rail {\n background-color: ", ";\n }\n & > .MuiSlider-mark.MuiSlider-markActive {\n background-color: ", " !important;\n }\n & > .MuiSlider-mark {\n background-color: ", ";\n height: ", ";\n width: ", ";\n border-radius: 18px;\n top: ", ";\n }\n }\n .MuiSlider-thumb {\n height: ", ";\n width: ", ";\n background-color: ", ";\n top: ", ";\n border-radius: 9999px;\n\n :hover,\n &.Mui-focusVisible {\n box-shadow: none;\n }\n &.MuiSlider-active {\n box-shadow: none;\n }\n :focus {\n outline: ", "\n auto 1px;\n outline-offset: 2px;\n background-color: ", ";\n }\n :hover {\n background-color: ", ";\n transform: scale(", ");\n transform-origin: center;\n height: ", ";\n width: ", ";\n top: ", ";\n }\n :active {\n background-color: ", ";\n transform: scale(", ");\n transform-origin: center;\n }\n }\n .MuiSlider-track {\n background-color: ", ";\n height: ", ";\n top: ", ";\n border-radius: 9999px;\n }\n .MuiSlider-track.MuiSlider-trackAfter {\n background-color: ", ";\n }\n .MuiSlider-rail {\n background-color: ", ";\n height: ", ";\n top: ", ";\n }\n .MuiSlider-mark.MuiSlider-markActive {\n background-color: ", ";\n }\n .MuiSlider-mark {\n background-color: ", ";\n height: ", ";\n width: ", ";\n border-radius: 18px;\n top: ", ";\n }\n"])), function (props) {
205
+ var SliderContainer = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n height: 48px;\n align-items: center;\n\n .MuiSlider-root {\n min-width: 15rem;\n }\n .MuiSlider-container {\n padding: 30px 24px;\n }\n .MuiSlider-root.Mui-disabled {\n color: ", ";\n cursor: not-allowed;\n }\n .Mui-disabled {\n & .MuiSlider-thumb {\n height: ", ";\n width: ", ";\n background-color: ", ";\n top: ", ";\n }\n & .MuiSlider-track {\n background-color: ", ";\n }\n & .MuiSlider-rail {\n background-color: ", ";\n }\n & > .MuiSlider-mark.MuiSlider-markActive {\n background-color: ", " !important;\n }\n & > .MuiSlider-mark {\n background-color: ", ";\n height: ", ";\n width: ", ";\n border-radius: 18px;\n top: ", ";\n }\n }\n .MuiSlider-thumb {\n height: ", ";\n width: ", ";\n background-color: ", ";\n top: ", ";\n border-radius: 9999px;\n\n :hover,\n &.Mui-focusVisible {\n box-shadow: none;\n }\n &.MuiSlider-active {\n box-shadow: none;\n }\n :focus {\n outline: ", "\n auto 1px;\n outline-offset: 2px;\n background-color: ", ";\n }\n :hover {\n background-color: ", ";\n transform: scale(", ");\n transform-origin: center;\n height: ", ";\n width: ", ";\n top: ", ";\n }\n :active {\n background-color: ", ";\n transform: scale(", ");\n transform-origin: center;\n }\n }\n .MuiSlider-track {\n background-color: ", ";\n height: ", ";\n top: ", ";\n border-radius: 9999px;\n }\n .MuiSlider-track.MuiSlider-trackAfter {\n background-color: ", ";\n }\n .MuiSlider-rail {\n background-color: ", ";\n height: ", ";\n top: ", ";\n }\n .MuiSlider-mark.MuiSlider-markActive {\n background-color: ", ";\n }\n .MuiSlider-mark {\n background-color: ", ";\n height: ", ";\n width: ", ";\n border-radius: 18px;\n top: ", ";\n }\n"])), function (props) {
194
206
  return props.backgroundType === "dark" ? props.theme.disabledThumbBackgroundColorOnDark : props.theme.disabledThumbBackgroundColor;
195
207
  }, function (props) {
196
208
  return props.theme.thumbHeight;
@@ -266,34 +278,34 @@ var SliderContainer = _styledComponents["default"].div(_templateObject4 || (_tem
266
278
  return props.theme.tickVerticalPosition;
267
279
  });
268
280
 
269
- var MinLabelContainer = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n color: ", ";\n letter-spacing: ", ";\n margin-right: ", ";\n"])), function (props) {
270
- return props.theme.fontFamily;
281
+ var MinLabelContainer = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n letter-spacing: ", ";\n white-space: nowrap;\n margin-right: ", ";\n"])), function (props) {
282
+ return props.disabled ? props.theme.disabledLimitValuesFontColor : props.backgroundType === "dark" ? props.theme.limitValuesFontColorOnDark : props.theme.limitValuesFontColor;
271
283
  }, function (props) {
272
- return props.theme.fontSize;
284
+ return props.theme.fontFamily;
273
285
  }, function (props) {
274
- return props.theme.fontStyle;
286
+ return props.theme.limitValuesFontSize;
275
287
  }, function (props) {
276
- return props.theme.fontWeight;
288
+ return props.theme.limitValuesFontStyle;
277
289
  }, function (props) {
278
- return props.disabled ? props.theme.disabledFontColor : props.backgroundType === "dark" ? props.theme.fontColorOnDark : props.theme.fontColor;
290
+ return props.theme.limitValuesFontWeight;
279
291
  }, function (props) {
280
- return props.theme.fontLetterSpacing;
292
+ return props.theme.limitValuesFontLetterSpacing;
281
293
  }, function (props) {
282
294
  return props.theme.floorLabelMarginRight;
283
295
  });
284
296
 
285
- var MaxLabelContainer = _styledComponents["default"].span(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n color: ", ";\n letter-spacing: ", ";\n margin-left: ", ";\n"])), function (props) {
286
- return props.theme.fontFamily;
297
+ var MaxLabelContainer = _styledComponents["default"].span(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n letter-spacing: ", ";\n white-space: nowrap;\n margin-left: ", ";\n"])), function (props) {
298
+ return props.disabled ? props.theme.disabledLimitValuesFontColor : props.backgroundType === "dark" ? props.theme.limitValuesFontColorOnDark : props.theme.limitValuesFontColor;
287
299
  }, function (props) {
288
- return props.theme.fontSize;
300
+ return props.theme.fontFamily;
289
301
  }, function (props) {
290
- return props.theme.fontStyle;
302
+ return props.theme.limitValuesFontSize;
291
303
  }, function (props) {
292
- return props.theme.fontWeight;
304
+ return props.theme.limitValuesFontStyle;
293
305
  }, function (props) {
294
- return props.disabled ? props.theme.disabledFontColor : props.backgroundType === "dark" ? props.theme.fontColorOnDark : props.theme.fontColor;
306
+ return props.theme.limitValuesFontWeight;
295
307
  }, function (props) {
296
- return props.theme.fontLetterSpacing;
308
+ return props.theme.limitValuesFontLetterSpacing;
297
309
  }, function (props) {
298
310
  return props.step === 1 ? props.theme.ceilLabelMarginLeft : "1.25rem";
299
311
  });
@@ -0,0 +1,177 @@
1
+ import React from "react";
2
+ import DxcSlider from "./Slider";
3
+ import { BackgroundColorProvider } from "../BackgroundColorContext";
4
+ import Title from "../../.storybook/components/Title";
5
+ import ExampleContainer from "../../.storybook/components/ExampleContainer";
6
+ import DarkContainer from "../../.storybook/components/DarkSection";
7
+
8
+ export default {
9
+ title: "Slider",
10
+ component: DxcSlider,
11
+ };
12
+
13
+ const labelFormat = (value) => `${value}E100000000000000000000000`;
14
+
15
+ export const Chromatic = () => (
16
+ <>
17
+ <Title title="States" theme="light" level={2} />
18
+ <ExampleContainer pseudoState="pseudo-hover">
19
+ <Title title="Hovered" theme="light" level={4} />
20
+ <DxcSlider label="Slider" helperText="Help message" showLimitsValues />
21
+ </ExampleContainer>
22
+ <ExampleContainer pseudoState="pseudo-active">
23
+ <Title title="Active" theme="light" level={4} />
24
+ <DxcSlider label="Slider" helperText="Help message" showLimitsValues />
25
+ </ExampleContainer>
26
+ <ExampleContainer pseudoState="pseudo-focus">
27
+ <Title title="Focused" theme="light" level={4} />
28
+ <DxcSlider label="Slider" helperText="Help message" showLimitsValues />
29
+ </ExampleContainer>
30
+ <ExampleContainer>
31
+ <Title title="Disabled" theme="light" level={4} />
32
+ <DxcSlider label="Slider" helperText="Help message" disabled showLimitsValues />
33
+ </ExampleContainer>
34
+ <ExampleContainer>
35
+ <Title title="Disabled discrete slider with input" theme="light" level={4} />
36
+ <DxcSlider
37
+ label="Slider"
38
+ helperText="Help message"
39
+ disabled
40
+ defaultValue={40}
41
+ minValue={0}
42
+ maxValue={50}
43
+ showLimitsValues
44
+ showInput
45
+ marks
46
+ step={10}
47
+ />
48
+ </ExampleContainer>
49
+ <Title title="Variants" theme="light" level={2} />
50
+ <ExampleContainer>
51
+ <Title title="Continuous slider" theme="light" level={4} />
52
+ <DxcSlider defaultValue={65} label="Slider" helperText="Help message" showLimitsValues />
53
+ </ExampleContainer>
54
+ <ExampleContainer>
55
+ <Title title="Discrete slider" theme="light" level={4} />
56
+ <DxcSlider defaultValue={20} label="Slider" helperText="Help message" showLimitsValues marks step={5} />
57
+ </ExampleContainer>
58
+ <ExampleContainer>
59
+ <Title title="Discrete slider with input" theme="light" level={4} />
60
+ <DxcSlider
61
+ defaultValue={20}
62
+ minValue={0}
63
+ maxValue={50}
64
+ label="Slider"
65
+ helperText="Help message"
66
+ showLimitsValues
67
+ showInput
68
+ marks
69
+ step={10}
70
+ />
71
+ </ExampleContainer>
72
+ <BackgroundColorProvider color="#333333">
73
+ <DarkContainer>
74
+ <Title title="Dark" theme="dark" level={2} />
75
+ <ExampleContainer pseudoState="pseudo-hover">
76
+ <Title title="Hovered" theme="dark" level={4} />
77
+ <DxcSlider label="Slider" helperText="Help message" showLimitsValues />
78
+ </ExampleContainer>
79
+ <ExampleContainer pseudoState="pseudo-active">
80
+ <Title title="Active" theme="dark" level={4} />
81
+ <DxcSlider label="Slider" helperText="Help message" showLimitsValues />
82
+ </ExampleContainer>
83
+ <ExampleContainer pseudoState="pseudo-focus">
84
+ <Title title="Focused" theme="dark" level={4} />
85
+ <DxcSlider label="Slider" helperText="Help message" showLimitsValues />
86
+ </ExampleContainer>
87
+ <ExampleContainer>
88
+ <Title title="Disabled" theme="dark" level={4} />
89
+ <DxcSlider label="Slider" helperText="Help message" disabled showLimitsValues />
90
+ </ExampleContainer>
91
+ <ExampleContainer>
92
+ <Title title="Disabled discrete slider with input" theme="dark" level={4} />
93
+ <DxcSlider
94
+ label="Slider"
95
+ helperText="Help message"
96
+ disabled
97
+ defaultValue={40}
98
+ minValue={0}
99
+ maxValue={50}
100
+ showLimitsValues
101
+ showInput
102
+ marks
103
+ step={5}
104
+ />
105
+ </ExampleContainer>
106
+ <ExampleContainer>
107
+ <Title title="Continuous slider" theme="dark" level={4} />
108
+ <DxcSlider defaultValue={65} label="Slider" helperText="Help message" showLimitsValues />
109
+ </ExampleContainer>
110
+ <ExampleContainer>
111
+ <Title title="Discrete slider" theme="dark" level={4} />
112
+ <DxcSlider defaultValue={20} label="Slider" helperText="Help message" showLimitsValues marks step={5} />
113
+ </ExampleContainer>
114
+ <ExampleContainer>
115
+ <Title title="Discrete slider with input" theme="dark" level={4} />
116
+ <DxcSlider
117
+ defaultValue={20}
118
+ minValue={0}
119
+ maxValue={50}
120
+ label="Slider"
121
+ helperText="Help message"
122
+ showLimitsValues
123
+ showInput
124
+ marks
125
+ step={10}
126
+ />
127
+ </ExampleContainer>
128
+ </DarkContainer>
129
+ </BackgroundColorProvider>
130
+ <Title title="Margins" theme="light" level={2} />
131
+ <ExampleContainer>
132
+ <Title title="Xxsmall" theme="light" level={4} />
133
+ <DxcSlider label="Xxsmall" margin="xxsmall" />
134
+ </ExampleContainer>
135
+ <ExampleContainer>
136
+ <Title title="Xsmall" theme="light" level={4} />
137
+ <DxcSlider label="Xsmall" margin="xsmall" />
138
+ </ExampleContainer>
139
+ <ExampleContainer>
140
+ <Title title="Small" theme="light" level={4} />
141
+ <DxcSlider label="Small" margin="small" />
142
+ </ExampleContainer>
143
+ <ExampleContainer>
144
+ <Title title="Medium" theme="light" level={4} />
145
+ <DxcSlider label="Medium" margin="medium" />
146
+ </ExampleContainer>
147
+ <ExampleContainer>
148
+ <Title title="Large" theme="light" level={4} />
149
+ <DxcSlider label="Large" margin="large" />
150
+ </ExampleContainer>
151
+ <ExampleContainer>
152
+ <Title title="Xlarge" theme="light" level={4} />
153
+ <DxcSlider label="Xlarge" margin="xlarge" />
154
+ </ExampleContainer>
155
+ <ExampleContainer>
156
+ <Title title="Xxlarge" theme="light" level={4} />
157
+ <DxcSlider label="Xxlarge" margin="xxlarge" />
158
+ </ExampleContainer>
159
+ <Title title="Sizes" theme="light" level={2} />
160
+ <ExampleContainer>
161
+ <Title title="Medium" theme="light" level={4} />
162
+ <DxcSlider label="Medium" size="medium" />
163
+ </ExampleContainer>
164
+ <ExampleContainer>
165
+ <Title title="Large" theme="light" level={4} />
166
+ <DxcSlider label="Large" size="large" />
167
+ </ExampleContainer>
168
+ <ExampleContainer>
169
+ <Title title="FillParent" theme="light" level={4} />
170
+ <DxcSlider label="FillParent" size="fillParent" />
171
+ </ExampleContainer>
172
+ <ExampleContainer>
173
+ <Title title="Large limit values labels" theme="light" level={4} />
174
+ <DxcSlider label="Slider" helperText="Help message" showLimitsValues labelFormatCallback={labelFormat} size="large" />
175
+ </ExampleContainer>
176
+ </>
177
+ );
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _react = _interopRequireDefault(require("react"));
6
+
7
+ var _react2 = require("@testing-library/react");
8
+
9
+ var _Slider = _interopRequireDefault(require("./Slider"));
10
+
11
+ describe("Slider component tests", function () {
12
+ test("Slider renders with correct text", function () {
13
+ var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
14
+ minValue: 0,
15
+ maxValue: 100,
16
+ showLimitsValues: true
17
+ })),
18
+ getByText = _render.getByText;
19
+
20
+ expect(getByText("0")).toBeTruthy();
21
+ expect(getByText("100")).toBeTruthy();
22
+ });
23
+ test("Slider renders with correct initial value when it is uncontrolled", function () {
24
+ var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
25
+ defaultValue: 30,
26
+ minValue: 0,
27
+ maxValue: 100,
28
+ showLimitsValues: true,
29
+ showInput: true
30
+ })),
31
+ getByRole = _render2.getByRole;
32
+
33
+ var slider = getByRole("slider");
34
+ var input = getByRole("textbox");
35
+ expect(slider.getAttribute("aria-valuenow")).toBe("30");
36
+ expect(input.value).toBe("30");
37
+ });
38
+ test("Calls correct function onChange in controlled slider", function () {
39
+ var onChange = jest.fn();
40
+
41
+ var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
42
+ minValue: 0,
43
+ maxValue: 100,
44
+ onChange: onChange,
45
+ showLimitsValues: true,
46
+ value: 13,
47
+ showInput: true
48
+ })),
49
+ getByRole = _render3.getByRole;
50
+
51
+ expect(getByRole("slider").getAttribute("aria-valuenow")).toBe("13");
52
+ expect(getByRole("textbox").value).toBe("13");
53
+ (0, _react2.act)(function () {
54
+ _react2.fireEvent.change(getByRole("textbox"), {
55
+ target: {
56
+ value: 25
57
+ }
58
+ });
59
+ });
60
+ expect(onChange).toHaveBeenCalledWith(25);
61
+ expect(getByRole("slider").getAttribute("aria-valuenow")).toBe("13");
62
+ expect(getByRole("textbox").value).toBe("13");
63
+ });
64
+ test("Calls correct function onChange in uncontrolled slider", function () {
65
+ var onChange = jest.fn();
66
+
67
+ var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
68
+ minValue: 0,
69
+ maxValue: 100,
70
+ onChange: onChange,
71
+ showLimitsValues: true,
72
+ showInput: true
73
+ })),
74
+ getByRole = _render4.getByRole;
75
+
76
+ (0, _react2.act)(function () {
77
+ _react2.fireEvent.change(getByRole("textbox"), {
78
+ target: {
79
+ value: 25
80
+ }
81
+ });
82
+ });
83
+ expect(onChange).toHaveBeenCalledWith(25);
84
+ expect(getByRole("slider").getAttribute("aria-valuenow")).toBe("25");
85
+ expect(getByRole("textbox").value).toBe("25");
86
+ });
87
+ test("Disabled slider have disabled input", function () {
88
+ var onChange = jest.fn();
89
+
90
+ var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
91
+ minValue: 0,
92
+ maxValue: 100,
93
+ onChange: onChange,
94
+ showLimitsValues: true,
95
+ disabled: true,
96
+ showInput: true,
97
+ value: 13
98
+ })),
99
+ getByRole = _render5.getByRole;
100
+
101
+ (0, _react2.act)(function () {
102
+ _react2.fireEvent.change(getByRole("textbox"), {
103
+ target: {
104
+ value: 25
105
+ }
106
+ });
107
+ });
108
+ expect(getByRole("textbox").hasAttribute("disabled")).toBeTruthy();
109
+ expect(getByRole("textbox").value).toBe("13");
110
+ });
111
+ test("Calls correct function onDragEnd", function () {
112
+ var onDragEnd = jest.fn();
113
+
114
+ var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
115
+ minValue: 0,
116
+ maxValue: 100,
117
+ showLimitsValues: true,
118
+ showInput: true,
119
+ onDragEnd: onDragEnd,
120
+ value: 25
121
+ })),
122
+ getByRole = _render6.getByRole;
123
+
124
+ (0, _react2.act)(function () {
125
+ _react2.fireEvent.mouseDown(getByRole("slider"));
126
+
127
+ _react2.fireEvent.mouseUp(getByRole("slider"));
128
+ });
129
+ expect(onDragEnd).toHaveBeenCalled();
130
+ });
131
+ test("Calls correct function labelFormatCallback", function () {
132
+ var labelFormatCallback = jest.fn(function (x) {
133
+ return "".concat(x, "$");
134
+ });
135
+
136
+ var _render7 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
137
+ minValue: 0,
138
+ maxValue: 100,
139
+ showLimitsValues: true,
140
+ showInput: true,
141
+ value: 25,
142
+ labelFormatCallback: labelFormatCallback
143
+ })),
144
+ getByText = _render7.getByText;
145
+
146
+ expect(getByText("0$")).toBeTruthy();
147
+ expect(getByText("100$")).toBeTruthy();
148
+ expect(labelFormatCallback).toHaveBeenCalledTimes(2);
149
+ });
150
+ });
package/slider/types.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- declare type Size = "medium" | "large" | "fillParent";
2
1
  declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
3
2
  declare type Margin = {
4
3
  top?: Space;
@@ -15,6 +14,10 @@ declare type Props = {
15
14
  * Name attribute of the input element.
16
15
  */
17
16
  name?: string;
17
+ /**
18
+ * Initial value of the slider, only when it is uncontrolled.
19
+ */
20
+ defaultValue?: number;
18
21
  /**
19
22
  * The selected value. If undefined, the component will be uncontrolled and the value will be managed internally by the component.
20
23
  */
@@ -65,7 +68,7 @@ declare type Props = {
65
68
  * This function will be used to format the labels displayed next to the slider.
66
69
  * The value will be passed as parameter and the function must return the formatted value.
67
70
  */
68
- labelFormatCallback?: (value: number) => void;
71
+ labelFormatCallback?: (value: number) => string;
69
72
  /**
70
73
  * Size of the margin to be applied to the component ('xxsmall' | 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' | 'xxlarge').
71
74
  * You can pass an object with 'top', 'bottom', 'left' and 'right' properties in order to specify different margin sizes.
@@ -74,10 +77,6 @@ declare type Props = {
74
77
  /**
75
78
  * Size of the component.
76
79
  */
77
- size?: Size;
78
- /**
79
- * Value of the tabindex attribute.
80
- */
81
- tabIndex?: number;
80
+ size?: "medium" | "large" | "fillParent";
82
81
  };
83
82
  export default Props;
@@ -19,9 +19,9 @@ var _styledComponents = _interopRequireWildcard(require("styled-components"));
19
19
 
20
20
  var _variables = require("../common/variables.js");
21
21
 
22
- var _useTheme = _interopRequireDefault(require("../useTheme.js"));
22
+ var _useTheme = _interopRequireDefault(require("../useTheme"));
23
23
 
24
- var _BackgroundColorContext = _interopRequireDefault(require("../BackgroundColorContext.js"));
24
+ var _BackgroundColorContext = _interopRequireDefault(require("../BackgroundColorContext"));
25
25
 
26
26
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12;
27
27
 
@@ -199,7 +199,7 @@ var SVGSpinner = _styledComponents["default"].svg(_templateObject8 || (_template
199
199
  var CircleSpinner = _styledComponents["default"].circle(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n fill: transparent;\n stroke-linecap: initial;\n vector-effect: non-scaling-stroke;\n animation: ", ";\n stroke: ", ";\n transform-origin: ", ";\n stroke-dasharray: ", ";\n stroke-width: ", ";\n stroke-dashoffset: ", ";\n"])), function (props) {
200
200
  return props.isDeterminated ? "none" : props.mode !== "small" ? "1.4s ease-in-out infinite both svg-circle-large" : "1.4s ease-in-out infinite both svg-circle-small";
201
201
  }, function (props) {
202
- return props.backgroundType === "dark" ? props.theme.trackCircleColorOnDark : props.theme.trackCircleColor;
202
+ return props.backgroundType === "dark" || props.mode === "overlay" ? props.theme.trackCircleColorOverlay : props.theme.trackCircleColor;
203
203
  }, function (props) {
204
204
  return !props.isDeterminated ? "50% 50%" : "";
205
205
  }, function (props) {
@@ -62,6 +62,7 @@ export const Chromatic = () => (
62
62
  <DxcSpinner margin="xlarge" mode="small" value="75"></DxcSpinner>
63
63
  <Title title="Xxlarge margin" theme="light" level={4} />
64
64
  <DxcSpinner margin="xxlarge" mode="small" value="75"></DxcSpinner>
65
+ <hr />
65
66
  </ExampleContainer>
66
67
  </>
67
68
  );
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _react = _interopRequireDefault(require("react"));
6
+
7
+ var _react2 = require("@testing-library/react");
8
+
9
+ var _Spinner = _interopRequireDefault(require("./Spinner"));
10
+
11
+ describe("Spinner component tests", function () {
12
+ test("Spinner renders with correct label", function () {
13
+ var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Spinner["default"], {
14
+ label: "test-loading"
15
+ })),
16
+ getByText = _render.getByText;
17
+
18
+ expect(getByText("test-loading")).toBeTruthy();
19
+ });
20
+ test("Spinner shows value correctly", function () {
21
+ var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Spinner["default"], {
22
+ label: "test-loading",
23
+ value: 75,
24
+ showValue: true
25
+ })),
26
+ getByText = _render2.getByText;
27
+
28
+ expect(getByText("75%")).toBeTruthy();
29
+ });
30
+ test("Small spinner hides value and label correctly", function () {
31
+ var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Spinner["default"], {
32
+ mode: "small",
33
+ label: "test-loading",
34
+ value: 75,
35
+ showValue: true
36
+ })),
37
+ queryByText = _render3.queryByText;
38
+
39
+ expect(queryByText("test-loading")).toBeFalsy();
40
+ expect(queryByText("75%")).toBeFalsy();
41
+ });
42
+ test("Overlay spinner shows value and label correctly", function () {
43
+ var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Spinner["default"], {
44
+ mode: "overlay",
45
+ label: "test-loading",
46
+ value: 75,
47
+ showValue: true
48
+ })),
49
+ getByText = _render4.getByText;
50
+
51
+ expect(getByText("test-loading")).toBeTruthy();
52
+ expect(getByText("75%")).toBeTruthy();
53
+ });
54
+ test("Get spinner by role", function () {
55
+ var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Spinner["default"], {
56
+ label: "test-loading",
57
+ value: 75,
58
+ showValue: true
59
+ })),
60
+ getByRole = _render5.getByRole;
61
+
62
+ expect(getByRole("progressbar")).toBeTruthy();
63
+ });
64
+ });
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ import StackPropsType from "./types";
3
+ export default function Stack({ gutter, divider, align, as, children }: StackPropsType): JSX.Element;