@dxc-technology/halstack-react 0.0.0-f53e801 → 0.0.0-f54247d

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 (103) hide show
  1. package/HalstackContext.js +7 -8
  2. package/accordion/Accordion.js +122 -103
  3. package/accordion/Accordion.stories.tsx +1 -2
  4. package/accordion/Accordion.test.js +9 -10
  5. package/accordion/types.d.ts +4 -3
  6. package/accordion-group/AccordionGroup.js +1 -21
  7. package/accordion-group/AccordionGroup.stories.tsx +27 -1
  8. package/accordion-group/AccordionGroup.test.js +20 -45
  9. package/accordion-group/types.d.ts +9 -2
  10. package/alert/Alert.js +1 -1
  11. package/box/Box.js +1 -1
  12. package/box/types.d.ts +1 -0
  13. package/card/types.d.ts +1 -0
  14. package/checkbox/Checkbox.d.ts +2 -2
  15. package/checkbox/Checkbox.js +92 -99
  16. package/checkbox/Checkbox.stories.tsx +79 -59
  17. package/checkbox/Checkbox.test.js +93 -16
  18. package/checkbox/types.d.ts +6 -2
  19. package/common/variables.js +27 -19
  20. package/date-input/Calendar.d.ts +4 -0
  21. package/date-input/Calendar.js +258 -0
  22. package/date-input/DateInput.js +77 -222
  23. package/date-input/DateInput.stories.tsx +30 -17
  24. package/date-input/DateInput.test.js +411 -138
  25. package/date-input/DatePicker.d.ts +4 -0
  26. package/date-input/DatePicker.js +160 -0
  27. package/date-input/YearPicker.d.ts +4 -0
  28. package/date-input/YearPicker.js +115 -0
  29. package/date-input/types.d.ts +53 -0
  30. package/dialog/Dialog.js +4 -4
  31. package/dialog/Dialog.stories.tsx +56 -0
  32. package/dialog/types.d.ts +1 -0
  33. package/dropdown/Dropdown.js +38 -34
  34. package/dropdown/Dropdown.test.js +19 -25
  35. package/dropdown/DropdownMenuItem.js +1 -1
  36. package/file-input/FileInput.d.ts +2 -2
  37. package/file-input/FileInput.js +177 -219
  38. package/file-input/FileInput.stories.tsx +38 -10
  39. package/file-input/FileInput.test.js +53 -12
  40. package/file-input/FileItem.d.ts +4 -14
  41. package/file-input/FileItem.js +38 -63
  42. package/file-input/types.d.ts +17 -0
  43. package/flex/Flex.d.ts +1 -1
  44. package/flex/Flex.js +31 -19
  45. package/flex/types.d.ts +14 -3
  46. package/footer/Footer.stories.tsx +8 -1
  47. package/footer/types.d.ts +1 -0
  48. package/header/Header.stories.tsx +4 -4
  49. package/header/types.d.ts +1 -0
  50. package/layout/ApplicationLayout.stories.tsx +1 -0
  51. package/link/Link.js +1 -1
  52. package/number-input/NumberInput.test.js +43 -7
  53. package/package.json +14 -19
  54. package/paginator/Paginator.js +2 -2
  55. package/paginator/Paginator.test.js +1 -1
  56. package/password-input/PasswordInput.test.js +13 -12
  57. package/quick-nav/QuickNav.js +11 -12
  58. package/quick-nav/QuickNav.stories.tsx +97 -19
  59. package/radio-group/Radio.d.ts +1 -1
  60. package/radio-group/Radio.js +43 -28
  61. package/radio-group/RadioGroup.js +15 -13
  62. package/radio-group/RadioGroup.stories.tsx +1 -0
  63. package/radio-group/RadioGroup.test.js +123 -96
  64. package/radio-group/types.d.ts +2 -2
  65. package/resultsetTable/Icons.d.ts +7 -0
  66. package/resultsetTable/Icons.js +51 -0
  67. package/resultsetTable/ResultsetTable.js +48 -107
  68. package/resultsetTable/ResultsetTable.stories.tsx +50 -25
  69. package/resultsetTable/ResultsetTable.test.js +23 -41
  70. package/resultsetTable/types.d.ts +2 -2
  71. package/select/Listbox.js +0 -1
  72. package/select/Select.js +3 -1
  73. package/select/Select.stories.tsx +2 -5
  74. package/select/Select.test.js +267 -209
  75. package/slider/Slider.d.ts +2 -2
  76. package/slider/Slider.js +118 -93
  77. package/slider/Slider.stories.tsx +7 -1
  78. package/slider/Slider.test.js +87 -24
  79. package/slider/types.d.ts +6 -2
  80. package/switch/Switch.d.ts +3 -3
  81. package/switch/Switch.js +94 -83
  82. package/switch/Switch.test.js +26 -13
  83. package/switch/types.d.ts +6 -1
  84. package/table/Table.js +1 -1
  85. package/table/Table.test.js +1 -1
  86. package/tabs/Tab.d.ts +4 -0
  87. package/tabs/Tab.js +135 -0
  88. package/tabs/Tabs.js +360 -104
  89. package/tabs/Tabs.stories.tsx +74 -0
  90. package/tabs/Tabs.test.js +217 -6
  91. package/tabs/types.d.ts +14 -4
  92. package/tabs-nav/Tab.js +1 -1
  93. package/tag/Tag.js +1 -1
  94. package/text-input/Icons.d.ts +8 -0
  95. package/text-input/Icons.js +60 -0
  96. package/text-input/Suggestion.js +7 -5
  97. package/text-input/Suggestions.d.ts +4 -0
  98. package/text-input/Suggestions.js +134 -0
  99. package/text-input/TextInput.js +179 -263
  100. package/text-input/TextInput.stories.tsx +189 -181
  101. package/text-input/TextInput.test.js +639 -727
  102. package/text-input/types.d.ts +21 -2
  103. package/common/RequiredComponent.js +0 -32
@@ -1,4 +1,4 @@
1
- /// <reference types="react" />
1
+ import React from "react";
2
2
  import SliderPropsType from "./types";
3
- declare const DxcSlider: ({ label, name, defaultValue, value, helperText, minValue, maxValue, step, showLimitsValues, showInput, disabled, marks, onChange, onDragEnd, labelFormatCallback, margin, size, }: SliderPropsType) => JSX.Element;
3
+ declare const DxcSlider: React.ForwardRefExoticComponent<SliderPropsType & React.RefAttributes<HTMLDivElement>>;
4
4
  export default DxcSlider;
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"));
@@ -33,13 +31,13 @@ var _BackgroundColorContext = _interopRequireDefault(require("../BackgroundColor
33
31
 
34
32
  var _uuid = require("uuid");
35
33
 
36
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7;
34
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12;
37
35
 
38
36
  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
37
 
40
38
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
41
39
 
42
- var DxcSlider = function DxcSlider(_ref) {
40
+ var DxcSlider = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
43
41
  var _ref$label = _ref.label,
44
42
  label = _ref$label === void 0 ? "" : _ref$label,
45
43
  _ref$name = _ref.name,
@@ -74,12 +72,17 @@ var DxcSlider = function DxcSlider(_ref) {
74
72
  innerValue = _useState2[0],
75
73
  setInnerValue = _useState2[1];
76
74
 
75
+ var _useState3 = (0, _react.useState)(false),
76
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
77
+ dragging = _useState4[0],
78
+ setDragging = _useState4[1];
79
+
77
80
  var colorsTheme = (0, _useTheme["default"])();
78
81
  var backgroundType = (0, _react.useContext)(_BackgroundColorContext["default"]);
79
82
 
80
- var _useState3 = (0, _react.useState)("label-".concat((0, _uuid.v4)())),
81
- _useState4 = (0, _slicedToArray2["default"])(_useState3, 1),
82
- labelId = _useState4[0];
83
+ var _useState5 = (0, _react.useState)("label-".concat((0, _uuid.v4)())),
84
+ _useState6 = (0, _slicedToArray2["default"])(_useState5, 1),
85
+ labelId = _useState6[0];
83
86
 
84
87
  var minLabel = (0, _react.useMemo)(function () {
85
88
  return labelFormatCallback ? labelFormatCallback(minValue) : minValue;
@@ -87,15 +90,44 @@ var DxcSlider = function DxcSlider(_ref) {
87
90
  var maxLabel = (0, _react.useMemo)(function () {
88
91
  return labelFormatCallback ? labelFormatCallback(maxValue) : maxValue;
89
92
  }, [labelFormatCallback, maxValue]);
93
+ var tickMarks = (0, _react.useMemo)(function () {
94
+ var ticks = [];
95
+ var numberOfMarks = Math.floor(maxValue / step - minValue / step);
96
+ var index = 0;
97
+ var range = maxValue - minValue;
98
+
99
+ if (marks) {
100
+ while (index <= numberOfMarks) {
101
+ ticks.push( /*#__PURE__*/_react["default"].createElement(TickMark, {
102
+ disabled: disabled,
103
+ stepPosition: step * index / range,
104
+ backgroundType: backgroundType,
105
+ stepValue: (value !== null && value !== void 0 ? value : innerValue) / maxValue
106
+ }));
107
+ index++;
108
+ }
109
+
110
+ return ticks;
111
+ } else {
112
+ return null;
113
+ }
114
+ }, [minValue, maxValue, step, value, innerValue]);
115
+
116
+ var handleSliderChange = function handleSliderChange(event) {
117
+ var valueToCheck = event.target.value;
118
+ (valueToCheck !== value || valueToCheck !== innerValue) && setInnerValue(valueToCheck);
119
+ onChange === null || onChange === void 0 ? void 0 : onChange(valueToCheck);
120
+ };
90
121
 
91
- var handlerSliderChange = function handlerSliderChange(event, newValue) {
92
- var valueToCheck = value != null && value >= 0 ? value : innerValue;
93
- valueToCheck !== newValue && setInnerValue(newValue);
94
- onChange === null || onChange === void 0 ? void 0 : onChange(newValue);
122
+ var handleSliderDragging = function handleSliderDragging() {
123
+ setDragging(true);
95
124
  };
96
125
 
97
- var handleSliderOnChangeCommited = function handleSliderOnChangeCommited(event, selectedValue) {
98
- onDragEnd === null || onDragEnd === void 0 ? void 0 : onDragEnd(selectedValue);
126
+ var handleSliderOnChangeCommited = function handleSliderOnChangeCommited(event) {
127
+ if (dragging) {
128
+ setDragging(false);
129
+ onDragEnd === null || onDragEnd === void 0 ? void 0 : onDragEnd(event.target.value);
130
+ }
99
131
  };
100
132
 
101
133
  var handlerInputChange = function handlerInputChange(event) {
@@ -110,11 +142,13 @@ var DxcSlider = function DxcSlider(_ref) {
110
142
  }
111
143
  };
112
144
 
145
+ var isFirefox = navigator.userAgent.indexOf("Firefox") !== -1;
113
146
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
114
147
  theme: colorsTheme.slider
115
148
  }, /*#__PURE__*/_react["default"].createElement(Container, {
116
149
  margin: margin,
117
- size: size
150
+ size: size,
151
+ ref: ref
118
152
  }, /*#__PURE__*/_react["default"].createElement(Label, {
119
153
  id: labelId,
120
154
  disabled: disabled,
@@ -122,22 +156,30 @@ var DxcSlider = function DxcSlider(_ref) {
122
156
  }, label), /*#__PURE__*/_react["default"].createElement(HelperText, {
123
157
  disabled: disabled,
124
158
  backgroundType: backgroundType
125
- }, helperText), /*#__PURE__*/_react["default"].createElement(SliderContainer, {
126
- backgroundType: backgroundType
127
- }, showLimitsValues && /*#__PURE__*/_react["default"].createElement(MinLabelContainer, {
159
+ }, helperText), /*#__PURE__*/_react["default"].createElement(SliderContainer, null, showLimitsValues && /*#__PURE__*/_react["default"].createElement(MinLabelContainer, {
128
160
  backgroundType: backgroundType,
129
161
  disabled: disabled
130
- }, minLabel), /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
162
+ }, minLabel), /*#__PURE__*/_react["default"].createElement(SliderInputContainer, null, /*#__PURE__*/_react["default"].createElement(SliderInput, {
163
+ role: "slider",
164
+ type: "range",
131
165
  value: value != null && value >= 0 ? value : innerValue,
132
166
  min: minValue,
133
167
  max: maxValue,
134
- onChange: handlerSliderChange,
135
- onChangeCommitted: handleSliderOnChangeCommited,
136
168
  step: step,
137
- marks: marks || [],
169
+ marks: marks,
138
170
  disabled: disabled,
139
- "aria-labelledby": labelId
140
- }), showLimitsValues && /*#__PURE__*/_react["default"].createElement(MaxLabelContainer, {
171
+ "aria-labelledby": labelId,
172
+ "aria-orientation": "horizontal",
173
+ "aria-valuemax": maxValue,
174
+ "aria-valuemin": minValue,
175
+ "aria-valuenow": value != null && value >= 0 ? value : innerValue,
176
+ onChange: handleSliderChange,
177
+ onMouseUp: handleSliderOnChangeCommited,
178
+ onMouseDown: handleSliderDragging,
179
+ backgroundType: backgroundType
180
+ }), marks && /*#__PURE__*/_react["default"].createElement(MarksContainer, {
181
+ isFirefox: isFirefox
182
+ }, tickMarks)), showLimitsValues && /*#__PURE__*/_react["default"].createElement(MaxLabelContainer, {
141
183
  backgroundType: backgroundType,
142
184
  disabled: disabled,
143
185
  step: step
@@ -148,7 +190,7 @@ var DxcSlider = function DxcSlider(_ref) {
148
190
  onChange: handlerInputChange,
149
191
  size: "fillParent"
150
192
  })))));
151
- };
193
+ });
152
194
 
153
195
  var sizes = {
154
196
  medium: "360px",
@@ -160,6 +202,14 @@ var calculateWidth = function calculateWidth(margin, size) {
160
202
  return size === "fillParent" ? "calc(".concat(sizes[size], " - ").concat((0, _utils.getMargin)(margin, "left"), " - ").concat((0, _utils.getMargin)(margin, "right"), ")") : sizes[size];
161
203
  };
162
204
 
205
+ var getChromeStyles = function getChromeStyles() {
206
+ return "\n width: 100%;\n margin-right: 4px;";
207
+ };
208
+
209
+ var getFireFoxStyles = function getFireFoxStyles() {
210
+ return "\n width: calc(100% - 16px);\n margin-right: 3px;";
211
+ };
212
+
163
213
  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
214
  return props.margin && (0, _typeof2["default"])(props.margin) !== "object" ? _variables.spaces[props.margin] : "0px";
165
215
  }, function (props) {
@@ -188,7 +238,7 @@ var Label = _styledComponents["default"].label(_templateObject2 || (_templateObj
188
238
  return props.theme.labelLineHeight;
189
239
  });
190
240
 
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) {
241
+ 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
242
  return props.disabled ? props.backgroundType === "dark" ? props.theme.disabledHelperTextFontColorOnDark : props.theme.disabledHelperTextFontColor : props.backgroundType === "dark" ? props.theme.helperTextFontColorOnDark : props.theme.helperTextFontColor;
193
243
  }, function (props) {
194
244
  return props.theme.fontFamily;
@@ -202,83 +252,51 @@ var HelperText = _styledComponents["default"].span(_templateObject3 || (_templat
202
252
  return props.theme.helperTextLineHeight;
203
253
  });
204
254
 
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;
255
+ 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) {
256
+ return props.theme.trackLineThickness;
221
257
  }, function (props) {
222
- return props.backgroundType === "dark" ? props.theme.disabledTickBackgroundColorOnDark : props.theme.disabledTickBackgroundColor;
258
+ return props.disabled ? props.backgroundType === "dark" ? props.theme.disabledTotalLineColorOnDark + "61" : props.theme.disabledTotalLineColor + "61" : props.backgroundType === "dark" ? props.theme.totalLineColorOnDark + "61" : props.theme.totalLineColor;
223
259
  }, function (props) {
224
- return props.theme.tickHeight;
260
+ 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
261
  }, function (props) {
226
- return props.theme.tickWidth;
262
+ return (props.value - props.min) * 100 / (props.max - props.min) + "% 100%";
227
263
  }, function (props) {
228
- return props.theme.disabledTickVerticalPosition;
264
+ return props.disabled ? "not-allowed" : "pointer";
229
265
  }, function (props) {
230
266
  return props.theme.thumbHeight;
231
267
  }, function (props) {
232
268
  return props.theme.thumbWidth;
233
269
  }, 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;
270
+ return props.disabled ? props.backgroundType === "dark" ? props.theme.disabledThumbBackgroundColorOnDark : props.theme.disabledThumbBackgroundColor : props.backgroundType === "dark" ? props.theme.thumbBackgroundColorOnDark : props.theme.thumbBackgroundColor;
239
271
  }, function (props) {
240
- return props.backgroundType === "dark" ? props.theme.focusThumbBackgroundColorOnDark : props.theme.focusThumbBackgroundColor;
272
+ if (!props.disabled) {
273
+ return "\n background: ".concat(props.backgroundType === "dark" ? props.theme.activeThumbBackgroundColorOnDark : props.theme.activeThumbBackgroundColor, ";\n transform: scale(1.16667);");
274
+ }
241
275
  }, function (props) {
242
- return props.backgroundType === "dark" ? props.theme.hoverThumbBackgroundColorOnDark : props.theme.hoverThumbBackgroundColor;
276
+ if (!props.disabled) {
277
+ 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, ";");
278
+ }
243
279
  }, function (props) {
244
- return props.theme.hoverThumbScale;
245
- }, function (props) {
246
- return props.theme.hoverThumbHeight;
280
+ return props.theme.thumbHeight;
247
281
  }, function (props) {
248
- return props.theme.hoverThumbWidth;
282
+ return props.theme.thumbWidth;
249
283
  }, function (props) {
250
- return props.theme.hoverThumbVerticalPosition;
284
+ return props.disabled ? props.backgroundType === "dark" ? props.theme.disabledThumbBackgroundColorOnDark : props.theme.disabledThumbBackgroundColor : props.backgroundType === "dark" ? props.theme.thumbBackgroundColorOnDark : props.theme.thumbBackgroundColor;
251
285
  }, function (props) {
252
286
  return props.backgroundType === "dark" ? props.theme.activeThumbBackgroundColorOnDark : props.theme.activeThumbBackgroundColor;
253
287
  }, function (props) {
254
- return props.theme.activeThumbScale;
255
- }, function (props) {
256
- return props.backgroundType === "dark" ? props.theme.trackLineColorOnDark : props.theme.trackLineColor;
288
+ if (!props.disabled) {
289
+ 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, ";");
290
+ }
257
291
  }, 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;
267
- }, 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;
292
+ return props.disabled ? props.backgroundType === "dark" ? props.theme.disabledFocusColorOnDark : props.theme.disabledFocusColor : props.backgroundType === "dark" ? props.theme.focusColorOnDark : props.theme.focusColor;
273
293
  }, function (props) {
274
- return props.theme.tickHeight;
275
- }, function (props) {
276
- return props.theme.tickWidth;
277
- }, function (props) {
278
- return props.theme.tickVerticalPosition;
294
+ return props.disabled ? props.backgroundType === "dark" ? props.theme.disabledFocusColorOnDark : props.theme.disabledFocusColor : props.backgroundType === "dark" ? props.theme.focusColorOnDark : props.theme.focusColor;
279
295
  });
280
296
 
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) {
297
+ var SliderContainer = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n height: 48px;\n align-items: center;\n"])));
298
+
299
+ 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
300
  return props.disabled ? props.theme.disabledLimitValuesFontColor : props.backgroundType === "dark" ? props.theme.limitValuesFontColorOnDark : props.theme.limitValuesFontColor;
283
301
  }, function (props) {
284
302
  return props.theme.fontFamily;
@@ -290,27 +308,34 @@ var MinLabelContainer = _styledComponents["default"].span(_templateObject5 || (_
290
308
  return props.theme.limitValuesFontWeight;
291
309
  }, function (props) {
292
310
  return props.theme.limitValuesFontLetterSpacing;
293
- }, function (props) {
311
+ });
312
+
313
+ var MinLabelContainer = (0, _styledComponents["default"])(LimitLabelContainer)(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n margin-right: ", ";\n"])), function (props) {
294
314
  return props.theme.floorLabelMarginRight;
295
315
  });
316
+ var MaxLabelContainer = (0, _styledComponents["default"])(LimitLabelContainer)(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n margin-left: ", ";\n"])), function (props) {
317
+ return props.step === 1 ? props.theme.ceilLabelMarginLeft : "1.25rem";
318
+ });
296
319
 
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;
320
+ 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"])));
321
+
322
+ 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) {
323
+ return props.isFirefox ? getFireFoxStyles() : getChromeStyles();
324
+ });
325
+
326
+ 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 ", ";\n"])), function (props) {
327
+ return props.disabled ? props.backgroundType === "dark" ? props.theme.disabledTickBackgroundColorOnDark : props.theme.disabledTickBackgroundColor : props.backgroundType === "dark" ? props.theme.tickBackgroundColorOnDark : props.theme.tickBackgroundColor;
303
328
  }, function (props) {
304
- return props.theme.limitValuesFontStyle;
329
+ return props.theme.tickHeight;
305
330
  }, function (props) {
306
- return props.theme.limitValuesFontWeight;
331
+ return props.theme.tickWidth;
307
332
  }, function (props) {
308
- return props.theme.limitValuesFontLetterSpacing;
333
+ return "calc(".concat(props.stepPosition, " * 100%)");
309
334
  }, function (props) {
310
- return props.step === 1 ? props.theme.ceilLabelMarginLeft : "1.25rem";
335
+ return !props.disabled ? "z-index: ".concat(props.stepPosition <= props.stepValue ? "0" : "1") : "";
311
336
  });
312
337
 
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) {
338
+ var StyledTextInput = _styledComponents["default"].div(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteral2["default"])(["\n margin-left: ", ";\n max-width: 70px;\n"])), function (props) {
314
339
  return props.theme.inputMarginLeft;
315
340
  });
316
341
 
@@ -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
  );
@@ -11,16 +11,21 @@ var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
11
11
  var _Slider = _interopRequireDefault(require("./Slider"));
12
12
 
13
13
  describe("Slider component tests", function () {
14
- test("Slider renders with correct text", function () {
14
+ test("Slider renders with correct text and label id", function () {
15
15
  var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
16
+ label: "label",
16
17
  minValue: 0,
17
18
  maxValue: 100,
18
19
  showLimitsValues: true
19
20
  })),
20
- getByText = _render.getByText;
21
+ getByText = _render.getByText,
22
+ getByRole = _render.getByRole;
21
23
 
22
24
  expect(getByText("0")).toBeTruthy();
23
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");
24
29
  });
25
30
  test("Slider renders with correct initial value when it is uncontrolled", function () {
26
31
  var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
@@ -37,10 +42,37 @@ describe("Slider component tests", function () {
37
42
  expect(slider.getAttribute("aria-valuenow")).toBe("30");
38
43
  expect(input.value).toBe("30");
39
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
+ });
40
72
  test("Calls correct function onChange in controlled slider", function () {
41
73
  var onChange = jest.fn();
42
74
 
43
- var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
75
+ var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
44
76
  minValue: 0,
45
77
  maxValue: 100,
46
78
  onChange: onChange,
@@ -48,7 +80,7 @@ describe("Slider component tests", function () {
48
80
  value: 13,
49
81
  showInput: true
50
82
  })),
51
- getByRole = _render3.getByRole;
83
+ getByRole = _render4.getByRole;
52
84
 
53
85
  expect(getByRole("slider").getAttribute("aria-valuenow")).toBe("13");
54
86
  expect(getByRole("textbox").value).toBe("13");
@@ -66,14 +98,14 @@ describe("Slider component tests", function () {
66
98
  test("Calls correct function onChange in uncontrolled slider", function () {
67
99
  var onChange = jest.fn();
68
100
 
69
- var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
101
+ var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
70
102
  minValue: 0,
71
103
  maxValue: 100,
72
104
  onChange: onChange,
73
105
  showLimitsValues: true,
74
106
  showInput: true
75
107
  })),
76
- getByRole = _render4.getByRole;
108
+ getByRole = _render5.getByRole;
77
109
 
78
110
  (0, _react2.act)(function () {
79
111
  _react2.fireEvent.change(getByRole("textbox"), {
@@ -86,10 +118,10 @@ describe("Slider component tests", function () {
86
118
  expect(getByRole("slider").getAttribute("aria-valuenow")).toBe("25");
87
119
  expect(getByRole("textbox").value).toBe("25");
88
120
  });
89
- test("Disabled slider have disabled input", function () {
121
+ test("Disabled slider have disabled input and slider", function () {
90
122
  var onChange = jest.fn();
91
123
 
92
- var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
124
+ var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
93
125
  minValue: 0,
94
126
  maxValue: 100,
95
127
  onChange: onChange,
@@ -98,7 +130,7 @@ describe("Slider component tests", function () {
98
130
  showInput: true,
99
131
  value: 13
100
132
  })),
101
- getByRole = _render5.getByRole;
133
+ getByRole = _render6.getByRole;
102
134
 
103
135
  (0, _react2.act)(function () {
104
136
  _react2.fireEvent.change(getByRole("textbox"), {
@@ -109,33 +141,64 @@ describe("Slider component tests", function () {
109
141
  });
110
142
  expect(getByRole("textbox").hasAttribute("disabled")).toBeTruthy();
111
143
  expect(getByRole("textbox").value).toBe("13");
144
+ expect(getByRole("slider").hasAttribute("disabled")).toBeTruthy();
112
145
  });
113
- test("Calls correct function onDragEnd", function () {
146
+ test("Calls correct function onDragEnd when it is uncontrolled", function () {
114
147
  var onDragEnd = jest.fn();
115
148
 
116
- var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
149
+ var _render7 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
117
150
  minValue: 0,
118
- maxValue: 100,
119
- showLimitsValues: true,
120
- showInput: true,
151
+ maxValue: 150,
121
152
  onDragEnd: onDragEnd,
122
- value: 25
153
+ showInput: true
123
154
  })),
124
- getByRole = _render6.getByRole;
155
+ getByRole = _render7.getByRole;
125
156
 
157
+ var slider = getByRole("slider");
158
+ (0, _react2.act)(function () {
159
+ _react2.fireEvent.mouseDown(slider);
160
+ });
126
161
  (0, _react2.act)(function () {
127
- _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();
172
+
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;
128
181
 
129
- _react2.fireEvent.mouseUp(getByRole("slider"));
182
+ var slider = getByRole("slider");
183
+ (0, _react2.act)(function () {
184
+ _react2.fireEvent.mouseDown(slider);
130
185
  });
131
- 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");
132
195
  });
133
196
  test("Calls correct function labelFormatCallback", function () {
134
197
  var labelFormatCallback = jest.fn(function (x) {
135
198
  return "".concat(x, "$");
136
199
  });
137
200
 
138
- var _render7 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
201
+ var _render9 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
139
202
  minValue: 0,
140
203
  maxValue: 100,
141
204
  showLimitsValues: true,
@@ -143,7 +206,7 @@ describe("Slider component tests", function () {
143
206
  value: 25,
144
207
  labelFormatCallback: labelFormatCallback
145
208
  })),
146
- getByText = _render7.getByText;
209
+ getByText = _render9.getByText;
147
210
 
148
211
  expect(getByText("0$")).toBeTruthy();
149
212
  expect(getByText("100$")).toBeTruthy();
@@ -152,7 +215,7 @@ describe("Slider component tests", function () {
152
215
  test("Change value correctly to 0 from external function", function () {
153
216
  var onChange = jest.fn();
154
217
 
155
- var _render8 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
218
+ var _render10 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
156
219
  minValue: 0,
157
220
  maxValue: 100,
158
221
  onChange: onChange,
@@ -160,8 +223,8 @@ describe("Slider component tests", function () {
160
223
  value: 13,
161
224
  showInput: true
162
225
  })),
163
- rerender = _render8.rerender,
164
- getByRole = _render8.getByRole;
226
+ rerender = _render10.rerender,
227
+ getByRole = _render10.getByRole;
165
228
 
166
229
  var slider = getByRole("slider");
167
230
 
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;
@@ -79,4 +79,8 @@ declare type Props = {
79
79
  */
80
80
  size?: "medium" | "large" | "fillParent";
81
81
  };
82
+ /**
83
+ * Reference to the component.
84
+ */
85
+ export declare type RefType = HTMLDivElement;
82
86
  export default Props;
@@ -1,4 +1,4 @@
1
- /// <reference types="react" />
2
- import { SwitchPropsType } from "./types";
3
- declare const DxcSwitch: ({ defaultChecked, checked, value, label, labelPosition, name, disabled, optional, onChange, margin, size, tabIndex, }: SwitchPropsType) => JSX.Element;
1
+ import React from "react";
2
+ import SwitchPropsType from "./types";
3
+ declare const DxcSwitch: React.ForwardRefExoticComponent<SwitchPropsType & React.RefAttributes<HTMLDivElement>>;
4
4
  export default DxcSwitch;