@dxc-technology/halstack-react 0.0.0-dcd93c4 → 0.0.0-dddc3c4

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 (121) hide show
  1. package/accordion/types.d.ts +1 -1
  2. package/accordion-group/types.d.ts +1 -1
  3. package/bleed/Bleed.stories.tsx +63 -63
  4. package/bulleted-list/BulletedList.d.ts +7 -0
  5. package/bulleted-list/BulletedList.js +123 -0
  6. package/bulleted-list/BulletedList.stories.tsx +200 -0
  7. package/bulleted-list/types.d.ts +11 -0
  8. package/{inline → bulleted-list}/types.js +0 -0
  9. package/button/Button.js +43 -61
  10. package/button/Button.stories.tsx +9 -0
  11. package/button/types.d.ts +7 -7
  12. package/chip/types.d.ts +1 -1
  13. package/common/variables.js +52 -14
  14. package/date-input/DateInput.js +3 -3
  15. package/dialog/Dialog.js +52 -28
  16. package/dialog/Dialog.stories.tsx +1 -2
  17. package/dialog/Dialog.test.js +34 -4
  18. package/dialog/types.d.ts +2 -2
  19. package/dropdown/Dropdown.d.ts +1 -1
  20. package/dropdown/Dropdown.js +242 -246
  21. package/dropdown/Dropdown.stories.tsx +126 -63
  22. package/dropdown/Dropdown.test.js +510 -108
  23. package/dropdown/DropdownMenu.d.ts +4 -0
  24. package/dropdown/DropdownMenu.js +80 -0
  25. package/dropdown/DropdownMenuItem.d.ts +4 -0
  26. package/dropdown/DropdownMenuItem.js +92 -0
  27. package/dropdown/types.d.ts +25 -5
  28. package/flex/Flex.d.ts +4 -0
  29. package/flex/Flex.js +57 -0
  30. package/flex/Flex.stories.tsx +103 -0
  31. package/flex/types.d.ts +21 -0
  32. package/{list → flex}/types.js +0 -0
  33. package/footer/types.d.ts +1 -1
  34. package/header/Header.js +74 -72
  35. package/header/Header.stories.tsx +4 -4
  36. package/header/Icons.js +2 -2
  37. package/header/types.d.ts +2 -2
  38. package/inset/Inset.stories.tsx +4 -4
  39. package/layout/ApplicationLayout.d.ts +15 -6
  40. package/layout/ApplicationLayout.js +36 -64
  41. package/layout/ApplicationLayout.stories.tsx +80 -44
  42. package/layout/types.d.ts +17 -27
  43. package/link/Link.js +1 -1
  44. package/link/Link.stories.tsx +12 -5
  45. package/link/types.d.ts +1 -1
  46. package/main.d.ts +5 -9
  47. package/main.js +27 -59
  48. package/package.json +9 -9
  49. package/paragraph/Paragraph.d.ts +6 -0
  50. package/paragraph/Paragraph.js +38 -0
  51. package/paragraph/Paragraph.stories.tsx +44 -0
  52. package/progress-bar/ProgressBar.d.ts +2 -2
  53. package/progress-bar/ProgressBar.js +56 -50
  54. package/progress-bar/ProgressBar.stories.jsx +3 -1
  55. package/progress-bar/ProgressBar.test.js +67 -22
  56. package/progress-bar/types.d.ts +3 -4
  57. package/quick-nav/QuickNav.js +15 -13
  58. package/quick-nav/QuickNav.stories.tsx +41 -14
  59. package/radio-group/RadioGroup.js +11 -13
  60. package/select/Listbox.d.ts +1 -1
  61. package/select/Listbox.js +25 -1
  62. package/select/Select.js +14 -31
  63. package/select/Select.stories.tsx +6 -5
  64. package/select/Select.test.js +63 -50
  65. package/select/types.d.ts +2 -4
  66. package/sidenav/Sidenav.d.ts +6 -5
  67. package/sidenav/Sidenav.js +176 -55
  68. package/sidenav/Sidenav.stories.tsx +154 -156
  69. package/sidenav/Sidenav.test.js +25 -37
  70. package/sidenav/types.d.ts +50 -27
  71. package/slider/Slider.js +112 -97
  72. package/slider/Slider.stories.tsx +7 -1
  73. package/slider/Slider.test.js +121 -21
  74. package/slider/types.d.ts +2 -2
  75. package/switch/Switch.d.ts +1 -1
  76. package/switch/Switch.js +110 -54
  77. package/switch/Switch.stories.tsx +8 -30
  78. package/switch/Switch.test.js +122 -8
  79. package/switch/types.d.ts +3 -4
  80. package/tabs/Tab.d.ts +4 -0
  81. package/tabs/Tab.js +135 -0
  82. package/tabs/Tabs.js +360 -104
  83. package/tabs/Tabs.stories.tsx +74 -0
  84. package/tabs/Tabs.test.js +217 -6
  85. package/tabs/types.d.ts +15 -5
  86. package/tabs-nav/NavTabs.js +5 -5
  87. package/tabs-nav/Tab.js +3 -5
  88. package/tabs-nav/types.d.ts +1 -1
  89. package/tag/types.d.ts +1 -1
  90. package/text-input/TextInput.js +12 -21
  91. package/text-input/TextInput.stories.tsx +1 -2
  92. package/text-input/types.d.ts +1 -1
  93. package/toggle-group/types.d.ts +1 -1
  94. package/typography/Typography.d.ts +4 -0
  95. package/typography/Typography.js +131 -0
  96. package/typography/Typography.stories.tsx +198 -0
  97. package/typography/types.d.ts +18 -0
  98. package/{row → typography}/types.js +0 -0
  99. package/wizard/Wizard.js +9 -16
  100. package/wizard/Wizard.stories.tsx +20 -1
  101. package/wizard/types.d.ts +5 -4
  102. package/inline/Inline.d.ts +0 -4
  103. package/inline/Inline.js +0 -60
  104. package/inline/Inline.stories.tsx +0 -319
  105. package/inline/types.d.ts +0 -36
  106. package/list/List.d.ts +0 -4
  107. package/list/List.js +0 -47
  108. package/list/List.stories.tsx +0 -89
  109. package/list/types.d.ts +0 -7
  110. package/row/Row.d.ts +0 -3
  111. package/row/Row.js +0 -127
  112. package/row/Row.stories.tsx +0 -237
  113. package/row/types.d.ts +0 -28
  114. package/stack/Stack.d.ts +0 -4
  115. package/stack/Stack.js +0 -56
  116. package/stack/Stack.stories.tsx +0 -263
  117. package/stack/types.d.ts +0 -32
  118. package/stack/types.js +0 -5
  119. package/text/Text.d.ts +0 -7
  120. package/text/Text.js +0 -30
  121. package/text/Text.stories.tsx +0 -19
package/slider/Slider.js CHANGED
@@ -17,8 +17,6 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
17
17
 
18
18
  var _react = _interopRequireWildcard(require("react"));
19
19
 
20
- var _Slider = _interopRequireDefault(require("@material-ui/lab/Slider"));
21
-
22
20
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
23
21
 
24
22
  var _TextInput = _interopRequireDefault(require("../text-input/TextInput"));
@@ -31,9 +29,7 @@ var _useTheme = _interopRequireDefault(require("../useTheme"));
31
29
 
32
30
  var _BackgroundColorContext = _interopRequireDefault(require("../BackgroundColorContext"));
33
31
 
34
- var _uuid = require("uuid");
35
-
36
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7;
32
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12;
37
33
 
38
34
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
39
35
 
@@ -74,28 +70,57 @@ var DxcSlider = function DxcSlider(_ref) {
74
70
  innerValue = _useState2[0],
75
71
  setInnerValue = _useState2[1];
76
72
 
73
+ var _useState3 = (0, _react.useState)(false),
74
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
75
+ dragging = _useState4[0],
76
+ setDragging = _useState4[1];
77
+
77
78
  var colorsTheme = (0, _useTheme["default"])();
78
79
  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
-
80
+ var labelId = "slider" + (0, _react.useId)();
84
81
  var minLabel = (0, _react.useMemo)(function () {
85
82
  return labelFormatCallback ? labelFormatCallback(minValue) : minValue;
86
83
  }, [labelFormatCallback, minValue]);
87
84
  var maxLabel = (0, _react.useMemo)(function () {
88
85
  return labelFormatCallback ? labelFormatCallback(maxValue) : maxValue;
89
86
  }, [labelFormatCallback, maxValue]);
87
+ var tickMarks = (0, _react.useMemo)(function () {
88
+ var ticks = [];
89
+ var numberOfMarks = Math.floor(maxValue / step - minValue / step);
90
+ var index = 0;
91
+ var range = maxValue - minValue;
92
+
93
+ if (marks) {
94
+ while (index <= numberOfMarks) {
95
+ ticks.push( /*#__PURE__*/_react["default"].createElement(TickMark, {
96
+ disabled: disabled,
97
+ stepPosition: step * index / range * 100,
98
+ backgroundType: backgroundType
99
+ }));
100
+ index++;
101
+ }
102
+
103
+ return ticks;
104
+ } else {
105
+ return null;
106
+ }
107
+ }, [minValue, maxValue, step]);
108
+
109
+ var handleSliderChange = function handleSliderChange(event) {
110
+ var valueToCheck = event.target.value;
111
+ (valueToCheck !== value || valueToCheck !== innerValue) && setInnerValue(valueToCheck);
112
+ onChange === null || onChange === void 0 ? void 0 : onChange(valueToCheck);
113
+ };
90
114
 
91
- var handlerSliderChange = function handlerSliderChange(event, newValue) {
92
- var valueToCheck = value !== null && value !== void 0 ? value : innerValue;
93
- valueToCheck !== newValue && setInnerValue(newValue);
94
- onChange === null || onChange === void 0 ? void 0 : onChange(newValue);
115
+ var handleSliderDragging = function handleSliderDragging() {
116
+ setDragging(true);
95
117
  };
96
118
 
97
- var handleSliderOnChangeCommited = function handleSliderOnChangeCommited(event, selectedValue) {
98
- onDragEnd === null || onDragEnd === void 0 ? void 0 : onDragEnd(selectedValue);
119
+ var handleSliderOnChangeCommited = function handleSliderOnChangeCommited(event) {
120
+ if (dragging) {
121
+ setDragging(false);
122
+ onDragEnd === null || onDragEnd === void 0 ? void 0 : onDragEnd(event.target.value);
123
+ }
99
124
  };
100
125
 
101
126
  var handlerInputChange = function handlerInputChange(event) {
@@ -110,6 +135,7 @@ var DxcSlider = function DxcSlider(_ref) {
110
135
  }
111
136
  };
112
137
 
138
+ var isFirefox = navigator.userAgent.indexOf("Firefox") !== -1;
113
139
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
114
140
  theme: colorsTheme.slider
115
141
  }, /*#__PURE__*/_react["default"].createElement(Container, {
@@ -122,28 +148,36 @@ var DxcSlider = function DxcSlider(_ref) {
122
148
  }, label), /*#__PURE__*/_react["default"].createElement(HelperText, {
123
149
  disabled: disabled,
124
150
  backgroundType: backgroundType
125
- }, helperText), /*#__PURE__*/_react["default"].createElement(SliderContainer, {
126
- backgroundType: backgroundType
127
- }, showLimitsValues && /*#__PURE__*/_react["default"].createElement(MinLabelContainer, {
151
+ }, helperText), /*#__PURE__*/_react["default"].createElement(SliderContainer, null, showLimitsValues && /*#__PURE__*/_react["default"].createElement(MinLabelContainer, {
128
152
  backgroundType: backgroundType,
129
153
  disabled: disabled
130
- }, minLabel), /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
131
- value: value != null && value >= 0 && value || innerValue,
154
+ }, minLabel), /*#__PURE__*/_react["default"].createElement(SliderInputContainer, null, /*#__PURE__*/_react["default"].createElement(SliderInput, {
155
+ role: "slider",
156
+ type: "range",
157
+ value: value != null && value >= 0 ? value : innerValue,
132
158
  min: minValue,
133
159
  max: maxValue,
134
- onChange: handlerSliderChange,
135
- onChangeCommitted: handleSliderOnChangeCommited,
136
160
  step: step,
137
- marks: marks || [],
161
+ marks: marks,
138
162
  disabled: disabled,
139
- "aria-labelledby": labelId
140
- }), showLimitsValues && /*#__PURE__*/_react["default"].createElement(MaxLabelContainer, {
163
+ "aria-labelledby": labelId,
164
+ "aria-orientation": "horizontal",
165
+ "aria-valuemax": maxValue,
166
+ "aria-valuemin": minValue,
167
+ "aria-valuenow": value != null && value >= 0 ? value : innerValue,
168
+ onChange: handleSliderChange,
169
+ onMouseUp: handleSliderOnChangeCommited,
170
+ onMouseDown: handleSliderDragging,
171
+ backgroundType: backgroundType
172
+ }), marks && /*#__PURE__*/_react["default"].createElement(MarksContainer, {
173
+ isFirefox: isFirefox
174
+ }, tickMarks)), showLimitsValues && /*#__PURE__*/_react["default"].createElement(MaxLabelContainer, {
141
175
  backgroundType: backgroundType,
142
176
  disabled: disabled,
143
177
  step: step
144
178
  }, maxLabel), showInput && /*#__PURE__*/_react["default"].createElement(StyledTextInput, null, /*#__PURE__*/_react["default"].createElement(_TextInput["default"], {
145
179
  name: name,
146
- value: value != null && value >= 0 && value.toString() || innerValue.toString(),
180
+ value: value != null && value >= 0 ? value.toString() : innerValue.toString(),
147
181
  disabled: disabled,
148
182
  onChange: handlerInputChange,
149
183
  size: "fillParent"
@@ -160,6 +194,14 @@ var calculateWidth = function calculateWidth(margin, size) {
160
194
  return size === "fillParent" ? "calc(".concat(sizes[size], " - ").concat((0, _utils.getMargin)(margin, "left"), " - ").concat((0, _utils.getMargin)(margin, "right"), ")") : sizes[size];
161
195
  };
162
196
 
197
+ var getChromeStyles = function getChromeStyles() {
198
+ return "\n width: 100%;\n margin-right: 4px;";
199
+ };
200
+
201
+ var getFireFoxStyles = function getFireFoxStyles() {
202
+ return "\n width: calc(100% - 16px);\n margin-right: 3px;";
203
+ };
204
+
163
205
  var Container = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n width: ", ";\n"])), function (props) {
164
206
  return props.margin && (0, _typeof2["default"])(props.margin) !== "object" ? _variables.spaces[props.margin] : "0px";
165
207
  }, function (props) {
@@ -188,7 +230,7 @@ var Label = _styledComponents["default"].label(_templateObject2 || (_templateObj
188
230
  return props.theme.labelLineHeight;
189
231
  });
190
232
 
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) {
233
+ var HelperText = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: ", ";\n"])), function (props) {
192
234
  return props.disabled ? props.backgroundType === "dark" ? props.theme.disabledHelperTextFontColorOnDark : props.theme.disabledHelperTextFontColor : props.backgroundType === "dark" ? props.theme.helperTextFontColorOnDark : props.theme.helperTextFontColor;
193
235
  }, function (props) {
194
236
  return props.theme.fontFamily;
@@ -202,83 +244,51 @@ var HelperText = _styledComponents["default"].span(_templateObject3 || (_templat
202
244
  return props.theme.helperTextLineHeight;
203
245
  });
204
246
 
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) {
206
- return props.backgroundType === "dark" ? props.theme.disabledThumbBackgroundColorOnDark : props.theme.disabledThumbBackgroundColor;
207
- }, function (props) {
208
- return props.theme.thumbHeight;
209
- }, function (props) {
210
- return props.theme.thumbWidth;
211
- }, function (props) {
212
- return props.backgroundType === "dark" ? props.theme.disabledThumbBackgroundColorOnDark : props.theme.disabledThumbBackgroundColor;
213
- }, function (props) {
214
- return props.theme.disabledThumbVerticalPosition;
215
- }, function (props) {
216
- return props.backgroundType === "dark" ? props.theme.disabledTrackLineColorOnDark : props.theme.disabledTrackLineColor;
217
- }, function (props) {
218
- return props.backgroundType === "dark" ? props.theme.disabledTotalLineColorOnDark : props.theme.disabledTotalLineColor;
219
- }, function (props) {
220
- return props.backgroundType === "dark" ? props.theme.disabledTickBackgroundColorOnDark : props.theme.disabledTickBackgroundColor;
247
+ var SliderInput = _styledComponents["default"].input(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n width: 100%;\n min-width: 240px;\n height: ", ";\n display: inline-block;\n vertical-align: middle;\n -webkit-appearance: none;\n background-color: ", ";\n background-image: ", ";\n background-repeat: no-repeat;\n background-size: ", ";\n border-radius: 5px;\n z-index: 1;\n cursor: ", ";\n &::-webkit-slider-runnable-track {\n -webkit-appearance: none;\n box-shadow: none;\n border: none;\n background: transparent;\n margin: 0px -8px;\n }\n\n &::-webkit-slider-thumb {\n -webkit-appearance: none;\n border: none;\n height: ", ";\n width: ", ";\n border-radius: 25px;\n background: ", ";\n &:active {\n ", "\n }\n &:hover {\n ", "\n }\n }\n &::-moz-range-track {\n -webkit-appearance: none;\n box-shadow: none;\n border: none;\n background: transparent;\n }\n &::-moz-range-thumb {\n -webkit-appearance: none;\n border: none;\n height: ", ";\n width: ", ";\n border-radius: 25px;\n background: ", ";\n &:active {\n background: ", ";\n transform: scale(1.16667);\n }\n &:hover {\n ", "\n }\n }\n &:focus {\n outline: none;\n &::-webkit-slider-thumb {\n outline: ", "\n auto 1px;\n outline-offset: 2px;\n }\n &::-moz-range-thumb {\n outline: ", "\n auto 1px;\n outline-offset: 2px;\n }\n }\n"])), function (props) {
248
+ return props.theme.trackLineThickness;
221
249
  }, function (props) {
222
- return props.backgroundType === "dark" ? props.theme.disabledTickBackgroundColorOnDark : props.theme.disabledTickBackgroundColor;
250
+ return props.disabled ? props.backgroundType === "dark" ? props.theme.disabledTotalLineColorOnDark + "61" : props.theme.disabledTotalLineColor + "61" : props.backgroundType === "dark" ? props.theme.totalLineColorOnDark + "61" : props.theme.totalLineColor + "61";
223
251
  }, function (props) {
224
- return props.theme.tickHeight;
252
+ return props.disabled ? props.backgroundType === "dark" ? "linear-gradient(".concat(props.theme.disabledTrackLineColorOnDark, ", ").concat(props.theme.disabledTrackLineColorOnDark, ")") : "linear-gradient(".concat(props.theme.disabledTrackLineColor, ", ").concat(props.theme.disabledTrackLineColor, ")") : props.backgroundType === "dark" ? "linear-gradient(".concat(props.theme.trackLineColorOnDark, ", ").concat(props.theme.trackLineColorOnDark, ")") : "linear-gradient(".concat(props.theme.trackLineColor, ", ").concat(props.theme.trackLineColor, ")");
225
253
  }, function (props) {
226
- return props.theme.tickWidth;
254
+ return (props.value - props.min) * 100 / (props.max - props.min) + "% 100%";
227
255
  }, function (props) {
228
- return props.theme.disabledTickVerticalPosition;
256
+ return props.disabled ? "not-allowed" : "pointer";
229
257
  }, function (props) {
230
258
  return props.theme.thumbHeight;
231
259
  }, function (props) {
232
260
  return props.theme.thumbWidth;
233
261
  }, function (props) {
234
- return props.backgroundType === "dark" ? props.theme.thumbBackgroundColorOnDark : props.theme.thumbBackgroundColor;
235
- }, function (props) {
236
- return props.theme.thumbVerticalPosition;
237
- }, function (props) {
238
- return props.backgroundType === "dark" ? props.theme.focusColorOnDark : props.theme.focusColor;
262
+ return props.disabled ? props.backgroundType === "dark" ? props.theme.disabledThumbBackgroundColorOnDark : props.theme.disabledThumbBackgroundColor : props.backgroundType === "dark" ? props.theme.thumbBackgroundColorOnDark : props.theme.thumbBackgroundColor;
239
263
  }, function (props) {
240
- return props.backgroundType === "dark" ? props.theme.focusThumbBackgroundColorOnDark : props.theme.focusThumbBackgroundColor;
264
+ if (!props.disabled) {
265
+ return "\n background: ".concat(props.backgroundType === "dark" ? props.theme.activeThumbBackgroundColorOnDark : props.theme.activeThumbBackgroundColor, ";\n transform: scale(1.16667);");
266
+ }
241
267
  }, function (props) {
242
- return props.backgroundType === "dark" ? props.theme.hoverThumbBackgroundColorOnDark : props.theme.hoverThumbBackgroundColor;
268
+ if (!props.disabled) {
269
+ return "height: ".concat(props.theme.hoverThumbHeight, ";\n width: ").concat(props.theme.hoverThumbWidth, ";\n transform: scale(1.16667);\n transform-origin: center center;\n background: ").concat(props.backgroundType === "dark" ? props.theme.hoverThumbBackgroundColorOnDark : props.theme.hoverThumbBackgroundColor, ";");
270
+ }
243
271
  }, function (props) {
244
- return props.theme.hoverThumbScale;
245
- }, function (props) {
246
- return props.theme.hoverThumbHeight;
272
+ return props.theme.thumbHeight;
247
273
  }, function (props) {
248
- return props.theme.hoverThumbWidth;
274
+ return props.theme.thumbWidth;
249
275
  }, function (props) {
250
- return props.theme.hoverThumbVerticalPosition;
276
+ return props.disabled ? props.backgroundType === "dark" ? props.theme.disabledThumbBackgroundColorOnDark : props.theme.disabledThumbBackgroundColor : props.backgroundType === "dark" ? props.theme.thumbBackgroundColorOnDark : props.theme.thumbBackgroundColor;
251
277
  }, function (props) {
252
278
  return props.backgroundType === "dark" ? props.theme.activeThumbBackgroundColorOnDark : props.theme.activeThumbBackgroundColor;
253
279
  }, function (props) {
254
- return props.theme.activeThumbScale;
255
- }, function (props) {
256
- return props.backgroundType === "dark" ? props.theme.trackLineColorOnDark : props.theme.trackLineColor;
280
+ if (!props.disabled) {
281
+ return "height: ".concat(props.theme.hoverThumbHeight, ";\n width: ").concat(props.theme.hoverThumbWidth, ";\n transform: scale(1.16667);\n transform-origin: center center;\n background: ").concat(props.backgroundType === "dark" ? props.theme.hoverThumbBackgroundColorOnDark : props.theme.hoverThumbBackgroundColor, ";");
282
+ }
257
283
  }, function (props) {
258
- return props.theme.trackLineThickness;
259
- }, function (props) {
260
- return props.theme.trackLineVerticalPosition;
261
- }, function (props) {
262
- return props.backgroundType === "dark" ? props.theme.trackLineColorOnDark : props.theme.trackLineColor;
263
- }, function (props) {
264
- return props.backgroundType === "dark" ? props.theme.totalLineColorOnDark : props.theme.totalLineColor;
265
- }, function (props) {
266
- return props.theme.totalLineThickness;
284
+ return props.disabled ? props.backgroundType === "dark" ? props.theme.disabledFocusColorOnDark : props.theme.disabledFocusColor : props.backgroundType === "dark" ? props.theme.focusColorOnDark : props.theme.focusColor;
267
285
  }, function (props) {
268
- return props.theme.totalLineVerticalPosition;
269
- }, function (props) {
270
- return props.backgroundType === "dark" ? props.theme.tickBackgroundColorOnDark : props.theme.tickBackgroundColor;
271
- }, function (props) {
272
- return props.backgroundType === "dark" ? props.theme.tickBackgroundColorOnDark : props.theme.tickBackgroundColor;
273
- }, function (props) {
274
- return props.theme.tickHeight;
275
- }, function (props) {
276
- return props.theme.tickWidth;
277
- }, function (props) {
278
- return props.theme.tickVerticalPosition;
286
+ return props.disabled ? props.backgroundType === "dark" ? props.theme.disabledFocusColorOnDark : props.theme.disabledFocusColor : props.backgroundType === "dark" ? props.theme.focusColorOnDark : props.theme.focusColor;
279
287
  });
280
288
 
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) {
289
+ var SliderContainer = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n height: 48px;\n align-items: center;\n"])));
290
+
291
+ var LimitLabelContainer = _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"])), function (props) {
282
292
  return props.disabled ? props.theme.disabledLimitValuesFontColor : props.backgroundType === "dark" ? props.theme.limitValuesFontColorOnDark : props.theme.limitValuesFontColor;
283
293
  }, function (props) {
284
294
  return props.theme.fontFamily;
@@ -290,27 +300,32 @@ var MinLabelContainer = _styledComponents["default"].span(_templateObject5 || (_
290
300
  return props.theme.limitValuesFontWeight;
291
301
  }, function (props) {
292
302
  return props.theme.limitValuesFontLetterSpacing;
293
- }, function (props) {
303
+ });
304
+
305
+ var MinLabelContainer = (0, _styledComponents["default"])(LimitLabelContainer)(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n margin-right: ", ";\n"])), function (props) {
294
306
  return props.theme.floorLabelMarginRight;
295
307
  });
308
+ var MaxLabelContainer = (0, _styledComponents["default"])(LimitLabelContainer)(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n margin-left: ", ";\n"])), function (props) {
309
+ return props.step === 1 ? props.theme.ceilLabelMarginLeft : "1.25rem";
310
+ });
296
311
 
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;
299
- }, function (props) {
300
- return props.theme.fontFamily;
301
- }, function (props) {
302
- return props.theme.limitValuesFontSize;
303
- }, function (props) {
304
- return props.theme.limitValuesFontStyle;
312
+ var SliderInputContainer = _styledComponents["default"].div(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n position: relative;\n width: 100%;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-right: -2px;\n padding-top: 1px;\n"])));
313
+
314
+ var MarksContainer = _styledComponents["default"].div(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2["default"])(["\n ", "\n position: absolute;\n pointer-events: none;\n height: 100%;\n display: flex;\n align-items: center;\n"])), function (props) {
315
+ return props.isFirefox ? getFireFoxStyles() : getChromeStyles();
316
+ });
317
+
318
+ var TickMark = _styledComponents["default"].span(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n background: ", ";\n height: ", ";\n width: ", ";\n border-radius: 18px;\n left: ", ";\n"])), function (props) {
319
+ return props.disabled ? props.backgroundType === "dark" ? props.theme.disabledTickBackgroundColorOnDark : props.theme.disabledTickBackgroundColor : props.backgroundType === "dark" ? props.theme.tickBackgroundColorOnDark : props.theme.tickBackgroundColor;
305
320
  }, function (props) {
306
- return props.theme.limitValuesFontWeight;
321
+ return props.theme.tickHeight;
307
322
  }, function (props) {
308
- return props.theme.limitValuesFontLetterSpacing;
323
+ return props.theme.tickWidth;
309
324
  }, function (props) {
310
- return props.step === 1 ? props.theme.ceilLabelMarginLeft : "1.25rem";
325
+ return "".concat(props.stepPosition, "%");
311
326
  });
312
327
 
313
- var StyledTextInput = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n margin-left: ", ";\n label + .MuiInput-formControl {\n margin-top: 2px;\n }\n max-width: 70px;\n"])), function (props) {
328
+ var StyledTextInput = _styledComponents["default"].div(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteral2["default"])(["\n margin-left: ", ";\n max-width: 70px;\n"])), function (props) {
314
329
  return props.theme.inputMarginLeft;
315
330
  });
316
331
 
@@ -171,7 +171,13 @@ export const Chromatic = () => (
171
171
  </ExampleContainer>
172
172
  <ExampleContainer>
173
173
  <Title title="Large limit values labels" theme="light" level={4} />
174
- <DxcSlider label="Slider" helperText="Help message" showLimitsValues labelFormatCallback={labelFormat} size="large" />
174
+ <DxcSlider
175
+ label="Slider"
176
+ helperText="Help message"
177
+ showLimitsValues
178
+ labelFormatCallback={labelFormat}
179
+ size="large"
180
+ />
175
181
  </ExampleContainer>
176
182
  </>
177
183
  );
@@ -6,19 +6,26 @@ var _react = _interopRequireDefault(require("react"));
6
6
 
7
7
  var _react2 = require("@testing-library/react");
8
8
 
9
+ var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
10
+
9
11
  var _Slider = _interopRequireDefault(require("./Slider"));
10
12
 
11
13
  describe("Slider component tests", function () {
12
- test("Slider renders with correct text", function () {
14
+ test("Slider renders with correct text and label id", function () {
13
15
  var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
16
+ label: "label",
14
17
  minValue: 0,
15
18
  maxValue: 100,
16
19
  showLimitsValues: true
17
20
  })),
18
- getByText = _render.getByText;
21
+ getByText = _render.getByText,
22
+ getByRole = _render.getByRole;
19
23
 
20
24
  expect(getByText("0")).toBeTruthy();
21
25
  expect(getByText("100")).toBeTruthy();
26
+ var sliderId = getByText("label").getAttribute("id");
27
+ expect(getByRole("slider").getAttribute("aria-labelledby")).toBe(sliderId);
28
+ expect(getByRole("slider").getAttribute("aria-orientation")).toBe("horizontal");
22
29
  });
23
30
  test("Slider renders with correct initial value when it is uncontrolled", function () {
24
31
  var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
@@ -35,10 +42,37 @@ describe("Slider component tests", function () {
35
42
  expect(slider.getAttribute("aria-valuenow")).toBe("30");
36
43
  expect(input.value).toBe("30");
37
44
  });
45
+ test("Slider correct limit values", function () {
46
+ var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
47
+ defaultValue: 125,
48
+ minValue: 30,
49
+ maxValue: 125,
50
+ showLimitsValues: true
51
+ })),
52
+ getByRole = _render3.getByRole,
53
+ getByText = _render3.getByText;
54
+
55
+ var slider = getByRole("slider");
56
+ expect(slider.getAttribute("aria-valuemin")).toBe("30");
57
+ expect(slider.getAttribute("aria-valuemax")).toBe("125");
58
+
59
+ _userEvent["default"].tab();
60
+
61
+ _react2.fireEvent.keyDown(slider, {
62
+ key: "ArrowRight",
63
+ code: "ArrowRight",
64
+ keyCode: 39,
65
+ charCode: 39
66
+ });
67
+
68
+ expect(slider.getAttribute("aria-valuenow")).toBe("125");
69
+ expect(getByText("30")).toBeTruthy();
70
+ expect(getByText("125")).toBeTruthy();
71
+ });
38
72
  test("Calls correct function onChange in controlled slider", function () {
39
73
  var onChange = jest.fn();
40
74
 
41
- var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
75
+ var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
42
76
  minValue: 0,
43
77
  maxValue: 100,
44
78
  onChange: onChange,
@@ -46,7 +80,7 @@ describe("Slider component tests", function () {
46
80
  value: 13,
47
81
  showInput: true
48
82
  })),
49
- getByRole = _render3.getByRole;
83
+ getByRole = _render4.getByRole;
50
84
 
51
85
  expect(getByRole("slider").getAttribute("aria-valuenow")).toBe("13");
52
86
  expect(getByRole("textbox").value).toBe("13");
@@ -64,14 +98,14 @@ describe("Slider component tests", function () {
64
98
  test("Calls correct function onChange in uncontrolled slider", function () {
65
99
  var onChange = jest.fn();
66
100
 
67
- var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
101
+ var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
68
102
  minValue: 0,
69
103
  maxValue: 100,
70
104
  onChange: onChange,
71
105
  showLimitsValues: true,
72
106
  showInput: true
73
107
  })),
74
- getByRole = _render4.getByRole;
108
+ getByRole = _render5.getByRole;
75
109
 
76
110
  (0, _react2.act)(function () {
77
111
  _react2.fireEvent.change(getByRole("textbox"), {
@@ -84,10 +118,10 @@ describe("Slider component tests", function () {
84
118
  expect(getByRole("slider").getAttribute("aria-valuenow")).toBe("25");
85
119
  expect(getByRole("textbox").value).toBe("25");
86
120
  });
87
- test("Disabled slider have disabled input", function () {
121
+ test("Disabled slider have disabled input and slider", function () {
88
122
  var onChange = jest.fn();
89
123
 
90
- var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
124
+ var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
91
125
  minValue: 0,
92
126
  maxValue: 100,
93
127
  onChange: onChange,
@@ -96,7 +130,7 @@ describe("Slider component tests", function () {
96
130
  showInput: true,
97
131
  value: 13
98
132
  })),
99
- getByRole = _render5.getByRole;
133
+ getByRole = _render6.getByRole;
100
134
 
101
135
  (0, _react2.act)(function () {
102
136
  _react2.fireEvent.change(getByRole("textbox"), {
@@ -107,33 +141,64 @@ describe("Slider component tests", function () {
107
141
  });
108
142
  expect(getByRole("textbox").hasAttribute("disabled")).toBeTruthy();
109
143
  expect(getByRole("textbox").value).toBe("13");
144
+ expect(getByRole("slider").hasAttribute("disabled")).toBeTruthy();
110
145
  });
111
- test("Calls correct function onDragEnd", function () {
146
+ test("Calls correct function onDragEnd when it is uncontrolled", function () {
112
147
  var onDragEnd = jest.fn();
113
148
 
114
- var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
149
+ var _render7 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
115
150
  minValue: 0,
116
- maxValue: 100,
117
- showLimitsValues: true,
118
- showInput: true,
151
+ maxValue: 150,
119
152
  onDragEnd: onDragEnd,
120
- value: 25
153
+ showInput: true
121
154
  })),
122
- getByRole = _render6.getByRole;
155
+ getByRole = _render7.getByRole;
123
156
 
157
+ var slider = getByRole("slider");
158
+ (0, _react2.act)(function () {
159
+ _react2.fireEvent.mouseDown(slider);
160
+ });
124
161
  (0, _react2.act)(function () {
125
- _react2.fireEvent.mouseDown(getByRole("slider"));
162
+ _react2.fireEvent.mouseUp(slider, {
163
+ target: {
164
+ value: 120
165
+ }
166
+ });
167
+ });
168
+ expect(onDragEnd).toHaveBeenCalledWith("120");
169
+ });
170
+ test("Calls correct function onDragEnd when it is controlled", function () {
171
+ var onDragEnd = jest.fn();
126
172
 
127
- _react2.fireEvent.mouseUp(getByRole("slider"));
173
+ var _render8 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
174
+ minValue: 0,
175
+ maxValue: 150,
176
+ value: 50,
177
+ onDragEnd: onDragEnd,
178
+ showInput: true
179
+ })),
180
+ getByRole = _render8.getByRole;
181
+
182
+ var slider = getByRole("slider");
183
+ (0, _react2.act)(function () {
184
+ _react2.fireEvent.mouseDown(slider);
128
185
  });
129
- expect(onDragEnd).toHaveBeenCalled();
186
+ (0, _react2.act)(function () {
187
+ _react2.fireEvent.mouseUp(slider, {
188
+ target: {
189
+ value: 120
190
+ }
191
+ });
192
+ });
193
+ expect(onDragEnd).toHaveBeenCalledWith("120");
194
+ expect(slider.getAttribute("aria-valuenow")).toBe("50");
130
195
  });
131
196
  test("Calls correct function labelFormatCallback", function () {
132
197
  var labelFormatCallback = jest.fn(function (x) {
133
198
  return "".concat(x, "$");
134
199
  });
135
200
 
136
- var _render7 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
201
+ var _render9 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
137
202
  minValue: 0,
138
203
  maxValue: 100,
139
204
  showLimitsValues: true,
@@ -141,10 +206,45 @@ describe("Slider component tests", function () {
141
206
  value: 25,
142
207
  labelFormatCallback: labelFormatCallback
143
208
  })),
144
- getByText = _render7.getByText;
209
+ getByText = _render9.getByText;
145
210
 
146
211
  expect(getByText("0$")).toBeTruthy();
147
212
  expect(getByText("100$")).toBeTruthy();
148
213
  expect(labelFormatCallback).toHaveBeenCalledTimes(2);
149
214
  });
215
+ test("Change value correctly to 0 from external function", function () {
216
+ var onChange = jest.fn();
217
+
218
+ var _render10 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
219
+ minValue: 0,
220
+ maxValue: 100,
221
+ onChange: onChange,
222
+ showLimitsValues: true,
223
+ value: 13,
224
+ showInput: true
225
+ })),
226
+ rerender = _render10.rerender,
227
+ getByRole = _render10.getByRole;
228
+
229
+ var slider = getByRole("slider");
230
+
231
+ _userEvent["default"].tab();
232
+
233
+ _react2.fireEvent.keyDown(slider, {
234
+ key: "ArrowRight",
235
+ code: "ArrowRight",
236
+ keyCode: 39,
237
+ charCode: 39
238
+ });
239
+
240
+ rerender( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
241
+ minValue: 0,
242
+ maxValue: 100,
243
+ onChange: onChange,
244
+ showLimitsValues: true,
245
+ value: 0,
246
+ showInput: true
247
+ }));
248
+ expect(slider.getAttribute("aria-valuenow")).toBe("0");
249
+ });
150
250
  });
package/slider/types.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
2
- declare type Margin = {
1
+ export declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
2
+ export declare type Margin = {
3
3
  top?: Space;
4
4
  bottom?: Space;
5
5
  left?: Space;
@@ -1,4 +1,4 @@
1
1
  /// <reference types="react" />
2
- import SwitchPropsType from "./types";
2
+ import { SwitchPropsType } from "./types";
3
3
  declare const DxcSwitch: ({ defaultChecked, checked, value, label, labelPosition, name, disabled, optional, onChange, margin, size, tabIndex, }: SwitchPropsType) => JSX.Element;
4
4
  export default DxcSwitch;