@hitachivantara/uikit-react-core 5.0.1 → 5.1.0

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 (220) hide show
  1. package/dist/cjs/components/ActionsGeneric/ActionsGeneric.styles.cjs +8 -4
  2. package/dist/cjs/components/ActionsGeneric/ActionsGeneric.styles.cjs.map +1 -1
  3. package/dist/cjs/components/Banner/BannerContent/ActionContainer/ActionContainer.styles.cjs +10 -6
  4. package/dist/cjs/components/Banner/BannerContent/ActionContainer/ActionContainer.styles.cjs.map +1 -1
  5. package/dist/cjs/components/BaseDropdown/BaseDropdown.cjs +1 -0
  6. package/dist/cjs/components/BaseDropdown/BaseDropdown.cjs.map +1 -1
  7. package/dist/cjs/components/BaseDropdown/BaseDropdown.styles.cjs +22 -14
  8. package/dist/cjs/components/BaseDropdown/BaseDropdown.styles.cjs.map +1 -1
  9. package/dist/cjs/components/BreadCrumb/BreadCrumb.styles.cjs +9 -5
  10. package/dist/cjs/components/BreadCrumb/BreadCrumb.styles.cjs.map +1 -1
  11. package/dist/cjs/components/BreadCrumb/Page/Page.styles.cjs +8 -4
  12. package/dist/cjs/components/BreadCrumb/Page/Page.styles.cjs.map +1 -1
  13. package/dist/cjs/components/Dialog/Dialog.styles.cjs +9 -5
  14. package/dist/cjs/components/Dialog/Dialog.styles.cjs.map +1 -1
  15. package/dist/cjs/components/DropDownMenu/DropDownMenu.styles.cjs +9 -5
  16. package/dist/cjs/components/DropDownMenu/DropDownMenu.styles.cjs.map +1 -1
  17. package/dist/cjs/components/Dropdown/List/List.styles.cjs +4 -5
  18. package/dist/cjs/components/Dropdown/List/List.styles.cjs.map +1 -1
  19. package/dist/cjs/components/Dropdown/dropdownClasses.cjs +1 -1
  20. package/dist/cjs/components/Dropdown/dropdownClasses.cjs.map +1 -1
  21. package/dist/cjs/components/FileUploader/File/File.styles.cjs +16 -12
  22. package/dist/cjs/components/FileUploader/File/File.styles.cjs.map +1 -1
  23. package/dist/cjs/components/FileUploader/Preview/Preview.styles.cjs +9 -5
  24. package/dist/cjs/components/FileUploader/Preview/Preview.styles.cjs.map +1 -1
  25. package/dist/cjs/components/Header/Brand/Brand.styles.cjs +9 -5
  26. package/dist/cjs/components/Header/Brand/Brand.styles.cjs.map +1 -1
  27. package/dist/cjs/components/Pagination/Pagination.cjs +1 -1
  28. package/dist/cjs/components/Pagination/Pagination.cjs.map +1 -1
  29. package/dist/cjs/components/Slider/Slider.cjs +301 -0
  30. package/dist/cjs/components/Slider/Slider.cjs.map +1 -0
  31. package/dist/cjs/components/Slider/Slider.styles.cjs +334 -0
  32. package/dist/cjs/components/Slider/Slider.styles.cjs.map +1 -0
  33. package/dist/cjs/components/Slider/SliderInput/SliderInput.cjs +66 -0
  34. package/dist/cjs/components/Slider/SliderInput/SliderInput.cjs.map +1 -0
  35. package/dist/cjs/components/Slider/SliderInput/SliderInput.styles.cjs +55 -0
  36. package/dist/cjs/components/Slider/SliderInput/SliderInput.styles.cjs.map +1 -0
  37. package/dist/cjs/components/Slider/SliderInput/sliderInputClasses.cjs +8 -0
  38. package/dist/cjs/components/Slider/SliderInput/sliderInputClasses.cjs.map +1 -0
  39. package/dist/cjs/components/Slider/base.cjs +251 -0
  40. package/dist/cjs/components/Slider/base.cjs.map +1 -0
  41. package/dist/cjs/components/Slider/sliderClasses.cjs +8 -0
  42. package/dist/cjs/components/Slider/sliderClasses.cjs.map +1 -0
  43. package/dist/cjs/components/Slider/utils.cjs +217 -0
  44. package/dist/cjs/components/Slider/utils.cjs.map +1 -0
  45. package/dist/cjs/components/Table/Table.cjs +1 -1
  46. package/dist/cjs/components/Table/Table.cjs.map +1 -1
  47. package/dist/cjs/components/Table/TableBody/TableBody.cjs +1 -1
  48. package/dist/cjs/components/Table/TableBody/TableBody.cjs.map +1 -1
  49. package/dist/cjs/components/Table/TableBody/tableBodyClasses.cjs.map +1 -1
  50. package/dist/cjs/components/Table/TableCell/TableCell.cjs +1 -1
  51. package/dist/cjs/components/Table/TableCell/TableCell.cjs.map +1 -1
  52. package/dist/cjs/components/Table/TableCell/tableCellClasses.cjs.map +1 -1
  53. package/dist/cjs/components/Table/TableContainer/TableContainer.cjs +1 -1
  54. package/dist/cjs/components/Table/TableContainer/TableContainer.cjs.map +1 -1
  55. package/dist/cjs/components/Table/TableContainer/tableContainerClasses.cjs.map +1 -1
  56. package/dist/cjs/components/Table/TableHead/TableHead.cjs +1 -1
  57. package/dist/cjs/components/Table/TableHead/TableHead.cjs.map +1 -1
  58. package/dist/cjs/components/Table/TableHead/tableHeadClasses.cjs.map +1 -1
  59. package/dist/cjs/components/Table/TableHeader/TableHeader.cjs +2 -2
  60. package/dist/cjs/components/Table/TableHeader/TableHeader.cjs.map +1 -1
  61. package/dist/cjs/components/Table/TableHeader/TableHeader.styles.cjs +15 -8
  62. package/dist/cjs/components/Table/TableHeader/TableHeader.styles.cjs.map +1 -1
  63. package/dist/cjs/components/Table/TableHeader/tableHeaderClasses.cjs.map +1 -1
  64. package/dist/cjs/components/Table/TableRow/TableRow.cjs +1 -1
  65. package/dist/cjs/components/Table/TableRow/TableRow.cjs.map +1 -1
  66. package/dist/cjs/components/Table/TableRow/tableRowClasses.cjs.map +1 -1
  67. package/dist/cjs/components/Table/hooks/useRowSelection.cjs.map +1 -1
  68. package/dist/cjs/components/Table/hooks/useSortBy.cjs.map +1 -1
  69. package/dist/cjs/components/Table/hooks/useTable.cjs +24 -20
  70. package/dist/cjs/components/Table/hooks/useTable.cjs.map +1 -1
  71. package/dist/cjs/components/Table/renderers/DateColumnCell/DateColumnCell.cjs.map +1 -1
  72. package/dist/cjs/components/Table/renderers/DropdownColumnCell/DropdownColumnCell.cjs.map +1 -1
  73. package/dist/cjs/components/Table/renderers/ProgressColumnCell/ProgressColumnCell.cjs.map +1 -1
  74. package/dist/cjs/components/Table/renderers/SwitchColumnCell/SwitchColumnCell.cjs.map +1 -1
  75. package/dist/cjs/components/Table/renderers/renderers.cjs +14 -12
  76. package/dist/cjs/components/Table/renderers/renderers.cjs.map +1 -1
  77. package/dist/cjs/components/Table/tableClasses.cjs.map +1 -1
  78. package/dist/cjs/components/Table/utils/fallbacks.cjs.map +1 -1
  79. package/dist/cjs/components/Tag/Tag.styles.cjs +9 -5
  80. package/dist/cjs/components/Tag/Tag.styles.cjs.map +1 -1
  81. package/dist/cjs/components/VerticalNavigation/Header/Header.styles.cjs +8 -4
  82. package/dist/cjs/components/VerticalNavigation/Header/Header.styles.cjs.map +1 -1
  83. package/dist/cjs/components/VerticalNavigation/Navigation/Navigation.cjs +76 -17
  84. package/dist/cjs/components/VerticalNavigation/Navigation/Navigation.cjs.map +1 -1
  85. package/dist/cjs/components/VerticalNavigation/Navigation/Navigation.styles.cjs +4 -1
  86. package/dist/cjs/components/VerticalNavigation/Navigation/Navigation.styles.cjs.map +1 -1
  87. package/dist/cjs/components/VerticalNavigation/Navigation/navigationClasses.cjs +1 -1
  88. package/dist/cjs/components/VerticalNavigation/Navigation/navigationClasses.cjs.map +1 -1
  89. package/dist/cjs/components/VerticalNavigation/NavigationPopup/NavigationPopup.cjs +58 -0
  90. package/dist/cjs/components/VerticalNavigation/NavigationPopup/NavigationPopup.cjs.map +1 -0
  91. package/dist/cjs/components/VerticalNavigation/NavigationPopup/NavigationPopup.styles.cjs +16 -0
  92. package/dist/cjs/components/VerticalNavigation/NavigationPopup/NavigationPopup.styles.cjs.map +1 -0
  93. package/dist/cjs/components/VerticalNavigation/TreeView/IconWrapper/IconWrapper.cjs +41 -0
  94. package/dist/cjs/components/VerticalNavigation/TreeView/IconWrapper/IconWrapper.cjs.map +1 -0
  95. package/dist/cjs/components/VerticalNavigation/TreeView/IconWrapper/IconWrapper.styles.cjs +42 -0
  96. package/dist/cjs/components/VerticalNavigation/TreeView/IconWrapper/IconWrapper.styles.cjs.map +1 -0
  97. package/dist/cjs/components/VerticalNavigation/TreeView/TooltipWrapper/TooltipWrapper.cjs +24 -0
  98. package/dist/cjs/components/VerticalNavigation/TreeView/TooltipWrapper/TooltipWrapper.cjs.map +1 -0
  99. package/dist/cjs/components/VerticalNavigation/TreeView/TreeViewItem.cjs +43 -45
  100. package/dist/cjs/components/VerticalNavigation/TreeView/TreeViewItem.cjs.map +1 -1
  101. package/dist/cjs/components/VerticalNavigation/VerticalNavigation.cjs +6 -2
  102. package/dist/cjs/components/VerticalNavigation/VerticalNavigation.cjs.map +1 -1
  103. package/dist/cjs/components/VerticalNavigation/VerticalNavigation.styles.cjs +6 -4
  104. package/dist/cjs/components/VerticalNavigation/VerticalNavigation.styles.cjs.map +1 -1
  105. package/dist/cjs/components/VerticalNavigation/VerticalNavigationContext.cjs.map +1 -1
  106. package/dist/cjs/components/VerticalNavigation/utils/VerticalNavigation.utils.cjs +7 -0
  107. package/dist/cjs/components/VerticalNavigation/utils/VerticalNavigation.utils.cjs.map +1 -0
  108. package/dist/cjs/index.cjs +4 -0
  109. package/dist/cjs/index.cjs.map +1 -1
  110. package/dist/esm/components/ActionsGeneric/ActionsGeneric.styles.js +8 -4
  111. package/dist/esm/components/ActionsGeneric/ActionsGeneric.styles.js.map +1 -1
  112. package/dist/esm/components/Banner/BannerContent/ActionContainer/ActionContainer.styles.js +10 -6
  113. package/dist/esm/components/Banner/BannerContent/ActionContainer/ActionContainer.styles.js.map +1 -1
  114. package/dist/esm/components/BaseDropdown/BaseDropdown.js +1 -0
  115. package/dist/esm/components/BaseDropdown/BaseDropdown.js.map +1 -1
  116. package/dist/esm/components/BaseDropdown/BaseDropdown.styles.js +22 -14
  117. package/dist/esm/components/BaseDropdown/BaseDropdown.styles.js.map +1 -1
  118. package/dist/esm/components/BreadCrumb/BreadCrumb.styles.js +9 -5
  119. package/dist/esm/components/BreadCrumb/BreadCrumb.styles.js.map +1 -1
  120. package/dist/esm/components/BreadCrumb/Page/Page.styles.js +8 -4
  121. package/dist/esm/components/BreadCrumb/Page/Page.styles.js.map +1 -1
  122. package/dist/esm/components/Dialog/Dialog.styles.js +9 -5
  123. package/dist/esm/components/Dialog/Dialog.styles.js.map +1 -1
  124. package/dist/esm/components/DropDownMenu/DropDownMenu.styles.js +9 -5
  125. package/dist/esm/components/DropDownMenu/DropDownMenu.styles.js.map +1 -1
  126. package/dist/esm/components/Dropdown/List/List.styles.js +4 -5
  127. package/dist/esm/components/Dropdown/List/List.styles.js.map +1 -1
  128. package/dist/esm/components/Dropdown/dropdownClasses.js +1 -1
  129. package/dist/esm/components/Dropdown/dropdownClasses.js.map +1 -1
  130. package/dist/esm/components/FileUploader/File/File.styles.js +16 -12
  131. package/dist/esm/components/FileUploader/File/File.styles.js.map +1 -1
  132. package/dist/esm/components/FileUploader/Preview/Preview.styles.js +9 -5
  133. package/dist/esm/components/FileUploader/Preview/Preview.styles.js.map +1 -1
  134. package/dist/esm/components/Header/Brand/Brand.styles.js +9 -5
  135. package/dist/esm/components/Header/Brand/Brand.styles.js.map +1 -1
  136. package/dist/esm/components/Pagination/Pagination.js +1 -1
  137. package/dist/esm/components/Pagination/Pagination.js.map +1 -1
  138. package/dist/esm/components/Slider/Slider.js +299 -0
  139. package/dist/esm/components/Slider/Slider.js.map +1 -0
  140. package/dist/esm/components/Slider/Slider.styles.js +330 -0
  141. package/dist/esm/components/Slider/Slider.styles.js.map +1 -0
  142. package/dist/esm/components/Slider/SliderInput/SliderInput.js +64 -0
  143. package/dist/esm/components/Slider/SliderInput/SliderInput.js.map +1 -0
  144. package/dist/esm/components/Slider/SliderInput/SliderInput.styles.js +53 -0
  145. package/dist/esm/components/Slider/SliderInput/SliderInput.styles.js.map +1 -0
  146. package/dist/esm/components/Slider/SliderInput/sliderInputClasses.js +8 -0
  147. package/dist/esm/components/Slider/SliderInput/sliderInputClasses.js.map +1 -0
  148. package/dist/esm/components/Slider/base.js +251 -0
  149. package/dist/esm/components/Slider/base.js.map +1 -0
  150. package/dist/esm/components/Slider/sliderClasses.js +8 -0
  151. package/dist/esm/components/Slider/sliderClasses.js.map +1 -0
  152. package/dist/esm/components/Slider/utils.js +217 -0
  153. package/dist/esm/components/Slider/utils.js.map +1 -0
  154. package/dist/esm/components/Table/Table.js +1 -1
  155. package/dist/esm/components/Table/Table.js.map +1 -1
  156. package/dist/esm/components/Table/TableBody/TableBody.js +1 -1
  157. package/dist/esm/components/Table/TableBody/TableBody.js.map +1 -1
  158. package/dist/esm/components/Table/TableBody/tableBodyClasses.js.map +1 -1
  159. package/dist/esm/components/Table/TableCell/TableCell.js +1 -1
  160. package/dist/esm/components/Table/TableCell/TableCell.js.map +1 -1
  161. package/dist/esm/components/Table/TableCell/tableCellClasses.js.map +1 -1
  162. package/dist/esm/components/Table/TableContainer/TableContainer.js +1 -1
  163. package/dist/esm/components/Table/TableContainer/TableContainer.js.map +1 -1
  164. package/dist/esm/components/Table/TableContainer/tableContainerClasses.js.map +1 -1
  165. package/dist/esm/components/Table/TableHead/TableHead.js +1 -1
  166. package/dist/esm/components/Table/TableHead/TableHead.js.map +1 -1
  167. package/dist/esm/components/Table/TableHead/tableHeadClasses.js.map +1 -1
  168. package/dist/esm/components/Table/TableHeader/TableHeader.js +2 -2
  169. package/dist/esm/components/Table/TableHeader/TableHeader.js.map +1 -1
  170. package/dist/esm/components/Table/TableHeader/TableHeader.styles.js +15 -8
  171. package/dist/esm/components/Table/TableHeader/TableHeader.styles.js.map +1 -1
  172. package/dist/esm/components/Table/TableHeader/tableHeaderClasses.js.map +1 -1
  173. package/dist/esm/components/Table/TableRow/TableRow.js +1 -1
  174. package/dist/esm/components/Table/TableRow/TableRow.js.map +1 -1
  175. package/dist/esm/components/Table/TableRow/tableRowClasses.js.map +1 -1
  176. package/dist/esm/components/Table/hooks/useRowSelection.js.map +1 -1
  177. package/dist/esm/components/Table/hooks/useSortBy.js.map +1 -1
  178. package/dist/esm/components/Table/hooks/useTable.js +24 -20
  179. package/dist/esm/components/Table/hooks/useTable.js.map +1 -1
  180. package/dist/esm/components/Table/renderers/DateColumnCell/DateColumnCell.js.map +1 -1
  181. package/dist/esm/components/Table/renderers/DropdownColumnCell/DropdownColumnCell.js.map +1 -1
  182. package/dist/esm/components/Table/renderers/ProgressColumnCell/ProgressColumnCell.js.map +1 -1
  183. package/dist/esm/components/Table/renderers/SwitchColumnCell/SwitchColumnCell.js.map +1 -1
  184. package/dist/esm/components/Table/renderers/renderers.js +15 -13
  185. package/dist/esm/components/Table/renderers/renderers.js.map +1 -1
  186. package/dist/esm/components/Table/tableClasses.js.map +1 -1
  187. package/dist/esm/components/Table/utils/fallbacks.js.map +1 -1
  188. package/dist/esm/components/Tag/Tag.styles.js +9 -5
  189. package/dist/esm/components/Tag/Tag.styles.js.map +1 -1
  190. package/dist/esm/components/VerticalNavigation/Header/Header.styles.js +8 -4
  191. package/dist/esm/components/VerticalNavigation/Header/Header.styles.js.map +1 -1
  192. package/dist/esm/components/VerticalNavigation/Navigation/Navigation.js +77 -19
  193. package/dist/esm/components/VerticalNavigation/Navigation/Navigation.js.map +1 -1
  194. package/dist/esm/components/VerticalNavigation/Navigation/Navigation.styles.js +4 -1
  195. package/dist/esm/components/VerticalNavigation/Navigation/Navigation.styles.js.map +1 -1
  196. package/dist/esm/components/VerticalNavigation/Navigation/navigationClasses.js +1 -1
  197. package/dist/esm/components/VerticalNavigation/Navigation/navigationClasses.js.map +1 -1
  198. package/dist/esm/components/VerticalNavigation/NavigationPopup/NavigationPopup.js +56 -0
  199. package/dist/esm/components/VerticalNavigation/NavigationPopup/NavigationPopup.js.map +1 -0
  200. package/dist/esm/components/VerticalNavigation/NavigationPopup/NavigationPopup.styles.js +14 -0
  201. package/dist/esm/components/VerticalNavigation/NavigationPopup/NavigationPopup.styles.js.map +1 -0
  202. package/dist/esm/components/VerticalNavigation/TreeView/IconWrapper/IconWrapper.js +41 -0
  203. package/dist/esm/components/VerticalNavigation/TreeView/IconWrapper/IconWrapper.js.map +1 -0
  204. package/dist/esm/components/VerticalNavigation/TreeView/IconWrapper/IconWrapper.styles.js +40 -0
  205. package/dist/esm/components/VerticalNavigation/TreeView/IconWrapper/IconWrapper.styles.js.map +1 -0
  206. package/dist/esm/components/VerticalNavigation/TreeView/TooltipWrapper/TooltipWrapper.js +24 -0
  207. package/dist/esm/components/VerticalNavigation/TreeView/TooltipWrapper/TooltipWrapper.js.map +1 -0
  208. package/dist/esm/components/VerticalNavigation/TreeView/TreeViewItem.js +43 -45
  209. package/dist/esm/components/VerticalNavigation/TreeView/TreeViewItem.js.map +1 -1
  210. package/dist/esm/components/VerticalNavigation/VerticalNavigation.js +6 -2
  211. package/dist/esm/components/VerticalNavigation/VerticalNavigation.js.map +1 -1
  212. package/dist/esm/components/VerticalNavigation/VerticalNavigation.styles.js +6 -4
  213. package/dist/esm/components/VerticalNavigation/VerticalNavigation.styles.js.map +1 -1
  214. package/dist/esm/components/VerticalNavigation/VerticalNavigationContext.js.map +1 -1
  215. package/dist/esm/components/VerticalNavigation/utils/VerticalNavigation.utils.js +7 -0
  216. package/dist/esm/components/VerticalNavigation/utils/VerticalNavigation.utils.js.map +1 -0
  217. package/dist/esm/index.js +22 -18
  218. package/dist/esm/index.js.map +1 -1
  219. package/dist/types/index.d.ts +374 -272
  220. package/package.json +7 -5
@@ -0,0 +1,301 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const clsx = require("clsx");
4
+ const React = require("react");
5
+ const validationStates = require("../Forms/FormElement/validationStates.cjs");
6
+ const sliderClasses = require("./sliderClasses.cjs");
7
+ const Slider_styles = require("./Slider.styles.cjs");
8
+ const utils = require("./utils.cjs");
9
+ const SliderInput = require("./SliderInput/SliderInput.cjs");
10
+ const jsxRuntime = require("@emotion/react/jsx-runtime");
11
+ const useUniqueId = require("../../hooks/useUniqueId.cjs");
12
+ const setId = require("../../utils/setId.cjs");
13
+ const useControlled = require("../../hooks/useControlled.cjs");
14
+ const Label = require("../Forms/Label/Label.cjs");
15
+ const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
16
+ const clsx__default = /* @__PURE__ */ _interopDefault(clsx);
17
+ const HvSlider = ({
18
+ id,
19
+ className,
20
+ name,
21
+ label,
22
+ status,
23
+ statusMessage,
24
+ disabled,
25
+ classes,
26
+ sliderProps,
27
+ knobProps,
28
+ inputProps,
29
+ requiredMessage = "The value is required",
30
+ noOverlap = true,
31
+ hideInput = false,
32
+ required = false,
33
+ readOnly = false,
34
+ markProperties = [],
35
+ defaultValues = [void 0],
36
+ values: valuesProp = [],
37
+ knobProperties: knobPropertiesProp,
38
+ "aria-errormessage": ariaErrorMessage,
39
+ maxPointValue = 100,
40
+ minPointValue = 0,
41
+ divisionQuantity = 100,
42
+ markStep = 20,
43
+ markDigits = 0,
44
+ formatMark,
45
+ onChange,
46
+ onBlur,
47
+ onBeforeChange,
48
+ onAfterChange,
49
+ formatTooltip,
50
+ ...others
51
+ }) => {
52
+ const hasLabel = label != null;
53
+ const isDirty = React.useRef(false);
54
+ const elementId = useUniqueId.default(id, "hvSlider");
55
+ const sliderInputId = setId.setId(elementId, "input");
56
+ const stepValue = React.useMemo(() => utils.calculateStepValue(maxPointValue, minPointValue, divisionQuantity), [divisionQuantity, maxPointValue, minPointValue]);
57
+ const inverseStepValue = 1 / stepValue;
58
+ const marks = React.useMemo(() => utils.createMark(markProperties, markStep, divisionQuantity, minPointValue, stepValue, markDigits, !!disabled, Slider_styles.sliderStyles, formatMark), [disabled, divisionQuantity, formatMark, markDigits, markProperties, markStep, minPointValue, stepValue, Slider_styles.sliderStyles]);
59
+ const canShowError = ariaErrorMessage == null && (status !== void 0 && statusMessage !== void 0 || status === void 0 && required);
60
+ const isSingle = React.useMemo(() => utils.isSingleSlider(valuesProp, defaultValues), [defaultValues, valuesProp]);
61
+ const value = React.useMemo(() => (valuesProp == null ? void 0 : valuesProp.length) > 0 ? utils.knobsValuesToKnobsPositions(valuesProp, inverseStepValue, minPointValue) : void 0, [inverseStepValue, minPointValue, valuesProp]);
62
+ const defaultKnobsPositions = React.useMemo(() => utils.knobsValuesToKnobsPositions(defaultValues, inverseStepValue, minPointValue), [defaultValues, inverseStepValue, minPointValue]);
63
+ const [knobsPositions, setKnobsPositions] = useControlled.useControlled(value, defaultKnobsPositions);
64
+ const {
65
+ arrayStatus,
66
+ arrayDefaultStatus
67
+ } = React.useMemo(() => utils.convertStatusToArray(knobsPositions.length, status), [knobsPositions.length, status]);
68
+ const [validationStatus, setValidationState] = useControlled.useControlled(arrayStatus, arrayDefaultStatus);
69
+ const [validationMessage, setValidationMessage] = useControlled.useControlled(statusMessage, "");
70
+ const [isDraggingTrack, setIsDraggingTrack] = React.useState(false);
71
+ const knobProperties = utils.generateDefaultKnobProperties(knobsPositions.length, disabled, knobPropertiesProp);
72
+ const rangesCount = knobProperties.length - 1;
73
+ const trackStyles = utils.createTrackStyles(knobProperties, Slider_styles.sliderStyles);
74
+ const knobStyles = utils.createKnobStyles(knobProperties, Slider_styles.sliderStyles);
75
+ const performValidation = React.useCallback(() => {
76
+ let invalid = false;
77
+ const newValidationState = knobsPositions.map((position) => {
78
+ if (position == null || Number.isNaN(position)) {
79
+ invalid = true;
80
+ return validationStates.default.invalid;
81
+ }
82
+ return validationStates.default.valid;
83
+ });
84
+ setValidationState([...newValidationState]);
85
+ if (invalid) {
86
+ setValidationMessage(requiredMessage);
87
+ return;
88
+ }
89
+ setValidationMessage("");
90
+ }, [knobsPositions, requiredMessage, setValidationMessage, setValidationState]);
91
+ React.useEffect(() => {
92
+ const stepVl = utils.calculateStepValue(maxPointValue, minPointValue, divisionQuantity);
93
+ const inverseStepVl = 1 / stepVl;
94
+ if ((valuesProp == null ? void 0 : valuesProp.length) > 0) {
95
+ setKnobsPositions(utils.knobsValuesToKnobsPositions(valuesProp.length > 0 ? valuesProp : defaultValues, inverseStepVl, minPointValue));
96
+ }
97
+ }, [defaultValues, divisionQuantity, maxPointValue, minPointValue, setKnobsPositions, valuesProp]);
98
+ React.useEffect(() => {
99
+ if (!isDirty.current) {
100
+ return;
101
+ }
102
+ performValidation();
103
+ }, [knobsPositions, requiredMessage, performValidation]);
104
+ const onMouseDownHandler = (event) => {
105
+ if (event.target.className.includes("track")) {
106
+ setIsDraggingTrack(true);
107
+ }
108
+ };
109
+ const onMouseUpHandler = () => {
110
+ setIsDraggingTrack(false);
111
+ };
112
+ const generateKnobsPositionAndValues = (knobsCurrentPosition) => {
113
+ const newKnobsPosition = knobsCurrentPosition.slice();
114
+ const knobsValues = [];
115
+ let duplicatedValue = null;
116
+ const findDuplicated = newKnobsPosition.filter((item, index) => newKnobsPosition.indexOf(item) !== index);
117
+ if (noOverlap && findDuplicated.length > 0) {
118
+ [duplicatedValue] = findDuplicated;
119
+ }
120
+ newKnobsPosition.forEach((position, index, array) => {
121
+ const newArray = array;
122
+ let newPosition = position;
123
+ if (noOverlap && newPosition === duplicatedValue) {
124
+ const previousValue = knobsPositions[index];
125
+ if (previousValue !== newPosition) {
126
+ newPosition += newPosition > previousValue ? -1 : 1;
127
+ newArray[index] = newPosition;
128
+ }
129
+ }
130
+ knobsValues[index] = utils.knobsPositionToScaledValue(newPosition, minPointValue, stepValue);
131
+ }, void 0);
132
+ return {
133
+ knobsPosition: newKnobsPosition,
134
+ knobsValues
135
+ };
136
+ };
137
+ const onBlurHandler = (event) => {
138
+ const knobs = generateKnobsPositionAndValues(knobsPositions);
139
+ performValidation();
140
+ onBlur == null ? void 0 : onBlur(event, knobs.knobsValues, status);
141
+ };
142
+ const onChangeHandler = (knobsPosition) => {
143
+ isDirty.current = true;
144
+ const knobs = generateKnobsPositionAndValues(knobsPosition);
145
+ knobProperties.forEach((knobProperty, index) => {
146
+ if (knobProperty.fixed) {
147
+ knobs.knobsPosition[index] = utils.scaledValueToKnobsPositionValue(defaultValues[index], minPointValue, inverseStepValue);
148
+ }
149
+ });
150
+ if (disabled || readOnly)
151
+ return;
152
+ onChange == null ? void 0 : onChange(knobs.knobsValues);
153
+ setKnobsPositions(knobs.knobsPosition);
154
+ };
155
+ const onInputChangeHandler = (inputValues, index) => {
156
+ let newKnobPositions = utils.knobsValuesToKnobsPositions(inputValues, inverseStepValue, minPointValue);
157
+ newKnobPositions = utils.ensureValuesConsistency(newKnobPositions, index);
158
+ onChangeHandler(newKnobPositions);
159
+ };
160
+ const onBeforeChangeHandler = (knobsPosition) => {
161
+ const knobs = generateKnobsPositionAndValues(knobsPosition);
162
+ onBeforeChange == null ? void 0 : onBeforeChange(knobs.knobsValues);
163
+ };
164
+ const onAfterChangeHandler = (knobsPosition) => {
165
+ const knobs = generateKnobsPositionAndValues(knobsPosition);
166
+ onAfterChange == null ? void 0 : onAfterChange(knobs.knobsValues);
167
+ };
168
+ const createKnob = (knobNode, params) => {
169
+ var _a, _b;
170
+ const {
171
+ value: knobValue,
172
+ dragging,
173
+ index
174
+ } = params;
175
+ const {
176
+ className: knobClassName,
177
+ style,
178
+ ...restProps
179
+ } = knobNode.props;
180
+ const scaledKnobValue = utils.knobsPositionToScaledValue(knobValue, minPointValue, stepValue).toFixed(markDigits);
181
+ if (dragging) {
182
+ style.backgroundColor = (_a = knobProperties[index]) == null ? void 0 : _a.dragColor;
183
+ } else {
184
+ style.backgroundColor = (_b = knobProperties[index]) == null ? void 0 : _b.color;
185
+ }
186
+ const isEmpty = Number.isNaN(knobsPositions[index]) || knobsPositions[index] == null;
187
+ const handleId = setId.setId(elementId, "knob");
188
+ const indexedHandleId = setId.setId(handleId, index);
189
+ return /* @__PURE__ */ jsxRuntime.jsx(Slider_styles.StyledTooltipContainer, {
190
+ className: clsx__default.default(!disabled && !isEmpty && clsx__default.default(classes == null ? void 0 : classes.handleContainer, sliderClasses.default.handleContainer), disabled && !isEmpty && clsx__default.default(classes == null ? void 0 : classes.handleContainerDisabled, sliderClasses.default.handleContainerDisabled), (isEmpty || readOnly) && clsx__default.default(classes == null ? void 0 : classes.handleHiddenContainer, sliderClasses.default.handleHiddenContainer)),
191
+ $active: !!(!disabled && !isEmpty),
192
+ $disabled: !!(disabled && !isEmpty),
193
+ $hidden: isEmpty || readOnly,
194
+ children: /* @__PURE__ */ jsxRuntime.jsx(Slider_styles.StyledTooltip, {
195
+ prefixCls: "rc-slider-tooltip",
196
+ overlay: (formatTooltip == null ? void 0 : formatTooltip(scaledKnobValue)) || scaledKnobValue,
197
+ visible: dragging,
198
+ placement: "top",
199
+ overlayClassName: clsx__default.default(classes == null ? void 0 : classes.sliderTooltip, sliderClasses.default.sliderTooltip),
200
+ getTooltipContainer: () => document.getElementById(indexedHandleId || ""),
201
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", {
202
+ id: indexedHandleId,
203
+ style,
204
+ className: clsx__default.default(knobClassName, classes == null ? void 0 : classes.handle, sliderClasses.default.handle),
205
+ ...restProps,
206
+ "aria-label": `${label}-knob-${index}`,
207
+ "aria-valuenow": utils.knobsPositionToScaledValue(knobValue, minPointValue, stepValue),
208
+ "aria-valuemin": minPointValue,
209
+ "aria-valuemax": maxPointValue,
210
+ ...knobProps == null ? void 0 : knobProps[index]
211
+ })
212
+ })
213
+ }, index);
214
+ };
215
+ return /* @__PURE__ */ jsxRuntime.jsxs(Slider_styles.StyledFormElement, {
216
+ className: clsx__default.default(className, classes == null ? void 0 : classes.root, sliderClasses.default.root, !readOnly && !disabled && !isSingle && isDraggingTrack && clsx__default.default(classes == null ? void 0 : classes.trackDragging, sliderClasses.default.trackDragging), !readOnly && !disabled && !isSingle && !isDraggingTrack && clsx__default.default(classes == null ? void 0 : classes.trackStandBy, sliderClasses.default.trackStandBy), disabled && clsx__default.default(classes == null ? void 0 : classes.rootDisabled, sliderClasses.default.rootDisabled)),
217
+ $dragging: !readOnly && !disabled && !isSingle && isDraggingTrack,
218
+ $standBy: !readOnly && !disabled && !isSingle && !isDraggingTrack,
219
+ $disabled: !!disabled,
220
+ id,
221
+ name,
222
+ status: utils.statusArrayToFormStatus(validationStatus),
223
+ disabled,
224
+ required,
225
+ readOnly,
226
+ onMouseDown: onMouseDownHandler,
227
+ onMouseUp: onMouseUpHandler,
228
+ onBlur: onBlurHandler,
229
+ ...others,
230
+ children: [(hasLabel || !hideInput) && /* @__PURE__ */ jsxRuntime.jsxs(Slider_styles.StyledLabelContainer, {
231
+ className: clsx__default.default(classes == null ? void 0 : classes.labelContainer, sliderClasses.default.labelContainer, hasLabel && clsx__default.default(classes == null ? void 0 : classes.labelIncluded, sliderClasses.default.labelIncluded), !hasLabel && clsx__default.default(classes == null ? void 0 : classes.onlyInput, sliderClasses.default.onlyInput)),
232
+ $hasLabel: hasLabel,
233
+ children: [hasLabel && /* @__PURE__ */ jsxRuntime.jsx(Label.HvLabel, {
234
+ id: setId.setId(elementId, "label"),
235
+ className: clsx__default.default(classes == null ? void 0 : classes.label, sliderClasses.default.label),
236
+ htmlFor: setId.setId(elementId, "slider"),
237
+ label
238
+ }), !hideInput && /* @__PURE__ */ jsxRuntime.jsx(SliderInput.HvSliderInput, {
239
+ id: sliderInputId,
240
+ label,
241
+ values: utils.knobsPositionsToKnobsValues(knobsPositions, stepValue, minPointValue),
242
+ onChange: onInputChangeHandler,
243
+ status: validationStatus,
244
+ disabled,
245
+ readOnly,
246
+ markDigits,
247
+ inputProps
248
+ })]
249
+ }), /* @__PURE__ */ jsxRuntime.jsxs(Slider_styles.StyledSliderContainer, {
250
+ className: clsx__default.default(classes == null ? void 0 : classes.sliderBase, sliderClasses.default.sliderBase, classes == null ? void 0 : classes.sliderContainer, sliderClasses.default.sliderContainer),
251
+ children: [isSingle && /* @__PURE__ */ jsxRuntime.jsx(Slider_styles.StyledSlider, {
252
+ handleRender: createKnob,
253
+ className: clsx__default.default(classes == null ? void 0 : classes.sliderRoot, sliderClasses.default.sliderRoot),
254
+ min: 0,
255
+ max: divisionQuantity,
256
+ step: 1,
257
+ marks,
258
+ dotStyle: disabled ? Slider_styles.sliderStyles.dotDisabled : Slider_styles.sliderStyles.dot,
259
+ onChange: (singleValue) => onChangeHandler(Array.isArray(singleValue) ? singleValue : [singleValue]),
260
+ onBeforeChange: (singleValue) => onBeforeChangeHandler(Array.isArray(singleValue) ? singleValue : [singleValue]),
261
+ onAfterChange: (singleValue) => onAfterChangeHandler(Array.isArray(singleValue) ? singleValue : [singleValue]),
262
+ value: knobsPositions.length > 0 ? knobsPositions[0] : void 0,
263
+ allowCross: false,
264
+ disabled,
265
+ count: rangesCount,
266
+ railStyle: Slider_styles.sliderStyles.rail,
267
+ handleStyle: knobStyles.knobInner,
268
+ trackStyle: trackStyles,
269
+ ...sliderProps
270
+ }), !isSingle && /* @__PURE__ */ jsxRuntime.jsx(Slider_styles.StyledSlider, {
271
+ range: true,
272
+ handleRender: createKnob,
273
+ className: clsx__default.default(classes == null ? void 0 : classes.sliderRoot, sliderClasses.default.sliderRoot, !isSingle && clsx__default.default(classes == null ? void 0 : classes.rootRange, sliderClasses.default.rootRange)),
274
+ min: 0,
275
+ max: divisionQuantity,
276
+ step: 1,
277
+ marks,
278
+ disabled,
279
+ dotStyle: disabled ? Slider_styles.sliderStyles.dotDisabled : Slider_styles.sliderStyles.dot,
280
+ onChange: (singleValue) => onChangeHandler(Array.isArray(singleValue) ? singleValue : [singleValue]),
281
+ onBeforeChange: (singleValue) => onBeforeChangeHandler(Array.isArray(singleValue) ? singleValue : [singleValue]),
282
+ onAfterChange: (singleValue) => onAfterChangeHandler(Array.isArray(singleValue) ? singleValue : [singleValue]),
283
+ value: knobsPositions.length > 0 ? [...knobsPositions] : void 0,
284
+ allowCross: false,
285
+ count: rangesCount,
286
+ railStyle: Slider_styles.sliderStyles.rail,
287
+ handleStyle: knobStyles.knobInner,
288
+ trackStyle: trackStyles,
289
+ draggableTrack: !readOnly && !isSingle,
290
+ ...sliderProps
291
+ })]
292
+ }), canShowError && /* @__PURE__ */ jsxRuntime.jsx(Slider_styles.StyledWarning, {
293
+ id: setId.setId(elementId, "error"),
294
+ className: clsx__default.default(classes == null ? void 0 : classes.error, sliderClasses.default.error),
295
+ disableBorder: true,
296
+ children: validationMessage
297
+ })]
298
+ });
299
+ };
300
+ exports.HvSlider = HvSlider;
301
+ //# sourceMappingURL=Slider.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Slider.cjs","sources":["../../../../src/components/Slider/Slider.tsx"],"sourcesContent":["import { SliderProps } from \"rc-slider\";\nimport clsx from \"clsx\";\nimport React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { HvBaseProps } from \"~/types\";\nimport { setId } from \"~/utils\";\nimport { useControlled, useUniqueId } from \"~/hooks\";\nimport validationStates from \"~/components/Forms/FormElement/validationStates\";\nimport { HvFormStatus, HvLabel, HvInputProps } from \"~/components\";\nimport sliderClasses, { HvSliderClasses } from \"./sliderClasses\";\nimport {\n sliderStyles,\n StyledFormElement,\n StyledLabelContainer,\n StyledSlider,\n StyledSliderContainer,\n StyledTooltip,\n StyledTooltipContainer,\n StyledWarning,\n} from \"./Slider.styles\";\nimport {\n calculateStepValue,\n convertStatusToArray,\n createKnobStyles,\n createMark,\n createTrackStyles,\n ensureValuesConsistency,\n generateDefaultKnobProperties,\n isSingleSlider,\n knobsPositionsToKnobsValues,\n knobsPositionToScaledValue,\n knobsValuesToKnobsPositions,\n scaledValueToKnobsPositionValue,\n statusArrayToFormStatus,\n} from \"./utils\";\nimport { HvSliderInput } from \"./SliderInput/SliderInput\";\n\nexport interface HvKnobProperty {\n color?: string;\n defaultValue?: number;\n hidden?: boolean;\n fixed?: boolean;\n hoverColor?: string;\n trackColor?: string;\n dragColor?: string;\n}\n\nexport interface HvMarkProperty {\n position?: number;\n label?: string;\n}\n\nexport interface HvSliderProps\n extends HvBaseProps<HTMLDivElement, { onChange; onBlur }> {\n /**\n * The slider name.\n */\n name?: string;\n /**\n * The label of the slider.\n *\n * If not provided, an aria-label or aria-labelledby must be inputted via sliderProps.\n */\n label?: React.ReactNode;\n /**\n * Indicates that the slider is disabled.\n */\n disabled?: boolean;\n /**\n * Indicates that the slider is not editable.\n */\n readOnly?: boolean;\n /**\n * Indicates that user slider is required on the form element.\n */\n required?: boolean;\n /**\n * What message to render when the value is required.\n */\n requiredMessage?: string;\n /**\n * If `true` the input that controls the slider is hidden.\n */\n hideInput?: boolean;\n /**\n * Attributes applied to the slider element.\n */\n sliderProps?: SliderProps;\n /**\n * The status of the slider element.\n *\n * Valid is correct, invalid is incorrect and standBy means no validations have run.\n *\n * When uncontrolled and unspecified it will default to \"standBy\" and change to either \"valid\"\n * or \"invalid\" after any change to the state.\n */\n status?: HvFormStatus | HvFormStatus[];\n /**\n * The error message to show when `status` is \"invalid\".\n */\n statusMessage?: React.ReactNode;\n /**\n * The values array to apply to the component\n */\n values?: number[];\n /**\n * The default values array to apply to the component\n */\n defaultValues?: (number | undefined)[];\n /**\n * The object used to set the knob properties,\n * for every item in the array a new knob will be created.\n */\n knobProperties?: HvKnobProperty[];\n /**\n * The object used to set the mark properties individually.\n */\n markProperties?: HvMarkProperty[];\n /**\n * The function executed before a change will occur in the slider.\n */\n onBeforeChange?: (value: number[]) => void;\n /**\n * The function executed while a change is occurring in the slider.\n */\n onChange?: (value: number[]) => void;\n /**\n * The function executed after a change ocurred in the slider.\n */\n onAfterChange?: (value: number[]) => void;\n /**\n * The function executed after a blur ocurred in the slider.\n */\n onBlur?: (\n event: React.FocusEvent,\n knobsValues: number[],\n status?: HvFormStatus | HvFormStatus[]\n ) => void;\n /**\n * The separation in points between marks.\n * example: if 10 divisions and a markstep of 2 there will be 5 marks.\n */\n markStep?: number;\n /**\n * How many subdivisions there are in the slider.\n */\n divisionQuantity?: number;\n /**\n * The value of the first point in the slider from left to right.\n */\n minPointValue?: number;\n /**\n * The value of the last point in the slider from left to right.\n */\n maxPointValue?: number;\n /**\n * The nax number of decimals if no format function is applied\n */\n markDigits?: number;\n /**\n * A formatting function used to add format to the marks in the track,\n * the function receives the mark text\n */\n formatMark?: (label: React.ReactNode) => React.ReactNode;\n /**\n * A formatting function used to add format to the tooltip in the track,\n * the function receives the mark text\n */\n formatTooltip?: (label: React.ReactNode) => React.ReactNode;\n /**\n * If `true` the knobs can't have the same value, if `false` knobs can have the same value.\n */\n noOverlap?: boolean;\n /**\n * Attributes applied to the input element.\n */\n inputProps?: HvInputProps[];\n /**\n * Attributes applied to the knob element.\n */\n knobProps?: React.HTMLAttributes<HTMLDivElement>[];\n /**\n * The classes object to be applied into the root object.\n */\n classes?: HvSliderClasses;\n}\n\n/**\n * Sliders reflect a range of values along a bar, from which users may select a single value. They are ideal for adjusting settings such as volume, brightness, or applying image filters.\n */\nexport const HvSlider = ({\n id,\n className,\n name,\n label,\n status,\n statusMessage,\n disabled,\n classes,\n sliderProps,\n knobProps,\n inputProps,\n requiredMessage = \"The value is required\",\n noOverlap = true,\n hideInput = false,\n required = false,\n readOnly = false,\n markProperties = [],\n defaultValues = [undefined],\n values: valuesProp = [],\n knobProperties: knobPropertiesProp,\n \"aria-errormessage\": ariaErrorMessage,\n maxPointValue = 100,\n minPointValue = 0,\n divisionQuantity = 100,\n markStep = 20,\n markDigits = 0,\n formatMark,\n onChange,\n onBlur,\n onBeforeChange,\n onAfterChange,\n formatTooltip,\n ...others\n}: HvSliderProps) => {\n // Miscellaneous state\n const hasLabel = label != null;\n\n // Signals that the user has manually edited the input value\n const isDirty = useRef(false);\n\n const elementId = useUniqueId(id, \"hvSlider\");\n\n const sliderInputId = setId(elementId, \"input\");\n\n const stepValue: number = useMemo(\n () => calculateStepValue(maxPointValue, minPointValue, divisionQuantity),\n [divisionQuantity, maxPointValue, minPointValue]\n );\n\n const inverseStepValue: number = 1 / stepValue;\n\n const marks = useMemo(\n () =>\n createMark(\n markProperties,\n markStep,\n divisionQuantity,\n minPointValue,\n stepValue,\n markDigits,\n !!disabled,\n sliderStyles,\n formatMark\n ),\n [\n disabled,\n divisionQuantity,\n formatMark,\n markDigits,\n markProperties,\n markStep,\n minPointValue,\n stepValue,\n sliderStyles,\n ]\n );\n\n const canShowError =\n ariaErrorMessage == null &&\n ((status !== undefined && statusMessage !== undefined) ||\n (status === undefined && required));\n\n const isSingle: boolean = useMemo(\n () => isSingleSlider(valuesProp, defaultValues),\n [defaultValues, valuesProp]\n );\n\n const value: number[] | undefined = useMemo(\n () =>\n valuesProp?.length > 0\n ? knobsValuesToKnobsPositions(\n valuesProp,\n inverseStepValue,\n minPointValue\n )\n : undefined,\n [inverseStepValue, minPointValue, valuesProp]\n );\n\n const defaultKnobsPositions: number[] = useMemo(\n () =>\n knobsValuesToKnobsPositions(\n defaultValues,\n inverseStepValue,\n minPointValue\n ),\n [defaultValues, inverseStepValue, minPointValue]\n );\n\n const [knobsPositions, setKnobsPositions] = useControlled(\n value,\n defaultKnobsPositions\n );\n\n // Validation related state\n const { arrayStatus, arrayDefaultStatus } = useMemo(\n () => convertStatusToArray(knobsPositions.length, status),\n [knobsPositions.length, status]\n );\n\n const [validationStatus, setValidationState] = useControlled(\n arrayStatus,\n arrayDefaultStatus\n );\n\n const [validationMessage, setValidationMessage] = useControlled(\n statusMessage,\n \"\"\n );\n\n const [isDraggingTrack, setIsDraggingTrack] = useState<boolean>(false);\n\n const knobProperties: HvKnobProperty[] = generateDefaultKnobProperties(\n knobsPositions.length,\n disabled,\n knobPropertiesProp\n );\n\n const rangesCount = knobProperties.length - 1;\n\n const trackStyles = createTrackStyles(knobProperties, sliderStyles);\n\n const knobStyles = createKnobStyles(knobProperties, sliderStyles);\n\n const performValidation = useCallback(() => {\n let invalid: boolean = false;\n\n const newValidationState = knobsPositions.map((position) => {\n if (position == null || Number.isNaN(position)) {\n invalid = true;\n return validationStates.invalid;\n }\n return validationStates.valid;\n });\n\n setValidationState([...newValidationState]);\n\n if (invalid) {\n setValidationMessage(requiredMessage);\n return;\n }\n\n setValidationMessage(\"\");\n }, [\n knobsPositions,\n requiredMessage,\n setValidationMessage,\n setValidationState,\n ]);\n\n useEffect(() => {\n const stepVl = calculateStepValue(\n maxPointValue,\n minPointValue,\n divisionQuantity\n );\n\n const inverseStepVl = 1 / stepVl;\n\n if (valuesProp?.length > 0) {\n setKnobsPositions(\n knobsValuesToKnobsPositions(\n valuesProp.length > 0 ? valuesProp : defaultValues,\n inverseStepVl,\n minPointValue\n )\n );\n }\n }, [\n defaultValues,\n divisionQuantity,\n maxPointValue,\n minPointValue,\n setKnobsPositions,\n valuesProp,\n ]);\n\n useEffect(() => {\n if (!isDirty.current) {\n // Skip validation if currently focused or if empty and\n // the user never manually edited the input value\n return;\n }\n\n performValidation();\n }, [knobsPositions, requiredMessage, performValidation]);\n\n const onMouseDownHandler = (event: React.MouseEvent<HTMLDivElement>) => {\n if ((event.target as HTMLDivElement).className.includes(\"track\")) {\n setIsDraggingTrack(true);\n }\n };\n\n const onMouseUpHandler = () => {\n setIsDraggingTrack(false);\n };\n\n /**\n * Generates an object which posses the current value and position of the knobs.\n *\n * @param {Array} knobsCurrentPosition - An array containing the current positions of the knobs.\n * @returns {Object} - An object with the positions and values of the knobs.\n * @memberof HvSlider\n */\n const generateKnobsPositionAndValues = (\n knobsCurrentPosition: number[]\n ): { knobsPosition: number[]; knobsValues: number[] } => {\n const newKnobsPosition: number[] = knobsCurrentPosition.slice();\n const knobsValues: number[] = [];\n\n let duplicatedValue: number | null = null;\n\n const findDuplicated: number[] = newKnobsPosition.filter(\n (item, index) => newKnobsPosition.indexOf(item) !== index\n );\n\n if (noOverlap && findDuplicated.length > 0) {\n [duplicatedValue] = findDuplicated;\n }\n\n newKnobsPosition.forEach((position, index, array) => {\n const newArray: number[] = array;\n let newPosition: number = position;\n\n if (noOverlap && newPosition === duplicatedValue) {\n const previousValue = knobsPositions[index];\n if (previousValue !== newPosition) {\n newPosition += newPosition > previousValue ? -1 : 1;\n newArray[index] = newPosition;\n }\n }\n\n knobsValues[index] = knobsPositionToScaledValue(\n newPosition,\n minPointValue,\n stepValue\n );\n }, this);\n\n return {\n knobsPosition: newKnobsPosition,\n knobsValues,\n };\n };\n\n const onBlurHandler = (event: React.FocusEvent) => {\n const knobs = generateKnobsPositionAndValues(knobsPositions);\n\n performValidation();\n\n onBlur?.(event, knobs.knobsValues, status);\n };\n\n /**\n * Function executed while the knobs changes.\n *\n * executes the callback provided by the user with the values and position of the knobs,\n * also lock the value of the knob in case one is fixed.\n *\n * @param {Array} knobsPosition - An array containing the current positions of the knobs.\n * @memberof HvSlider\n */\n const onChangeHandler = (knobsPosition: number[]) => {\n isDirty.current = true;\n\n const knobs = generateKnobsPositionAndValues(knobsPosition);\n\n knobProperties.forEach((knobProperty, index) => {\n if (knobProperty.fixed) {\n knobs.knobsPosition[index] = scaledValueToKnobsPositionValue(\n defaultValues[index],\n minPointValue,\n inverseStepValue\n );\n }\n });\n\n if (disabled || readOnly) return;\n\n onChange?.(knobs.knobsValues);\n\n setKnobsPositions(knobs.knobsPosition);\n };\n\n const onInputChangeHandler = (inputValues: number[], index: number) => {\n let newKnobPositions = knobsValuesToKnobsPositions(\n inputValues,\n inverseStepValue,\n minPointValue\n );\n\n newKnobPositions = ensureValuesConsistency(newKnobPositions, index);\n\n onChangeHandler(newKnobPositions);\n };\n\n /**\n * Function executed before a change.\n *\n * executes the callback provided by the user with the values and position of the knobs\n *\n * @param {Array} knobsPosition - An array containing the current positions of the knobs.\n * @memberof HvSlider\n */\n const onBeforeChangeHandler = (knobsPosition: number[]) => {\n const knobs = generateKnobsPositionAndValues(knobsPosition);\n\n onBeforeChange?.(knobs.knobsValues);\n };\n\n /**\n * Function executed after a change.\n *\n * executes the callback provided by the user with the values and position of the knobs\n *\n * @param {Array} knobsPosition - An array containing the current positions of the knobs.\n * @memberof HvSlider\n */\n const onAfterChangeHandler = (knobsPosition: number[]) => {\n const knobs = generateKnobsPositionAndValues(knobsPosition);\n\n onAfterChange?.(knobs.knobsValues);\n };\n\n /**\n * Function used to create a custom knob for the slider.\n *\n * TODO: This should be isolated because is creating a sub component,\n * but there were some problems regarding the underlying component losing\n * references of the handlers disabling the focus.\n *\n * @param {Object} props - An object containing the properties of the knobs.\n * @memberof HvSlider\n */\n const createKnob = (knobNode, params) => {\n const { value: knobValue, dragging, index } = params;\n const { className: knobClassName, style, ...restProps } = knobNode.props;\n const scaledKnobValue = knobsPositionToScaledValue(\n knobValue,\n minPointValue,\n stepValue\n ).toFixed(markDigits);\n if (dragging) {\n style.backgroundColor = knobProperties[index]?.dragColor;\n } else {\n style.backgroundColor = knobProperties[index]?.color;\n }\n\n const isEmpty =\n Number.isNaN(knobsPositions[index]) || knobsPositions[index] == null;\n const handleId = setId(elementId, \"knob\");\n const indexedHandleId = setId(handleId, index);\n\n return (\n <StyledTooltipContainer\n key={index}\n className={clsx(\n !disabled &&\n !isEmpty &&\n clsx(classes?.handleContainer, sliderClasses.handleContainer),\n disabled &&\n !isEmpty &&\n clsx(\n classes?.handleContainerDisabled,\n sliderClasses.handleContainerDisabled\n ),\n (isEmpty || readOnly) &&\n clsx(\n classes?.handleHiddenContainer,\n sliderClasses.handleHiddenContainer\n )\n )}\n $active={!!(!disabled && !isEmpty)}\n $disabled={!!(disabled && !isEmpty)}\n $hidden={isEmpty || readOnly}\n >\n <StyledTooltip\n prefixCls=\"rc-slider-tooltip\"\n overlay={formatTooltip?.(scaledKnobValue) || scaledKnobValue}\n visible={dragging}\n placement=\"top\"\n overlayClassName={clsx(\n classes?.sliderTooltip,\n sliderClasses.sliderTooltip\n )}\n getTooltipContainer={() =>\n document.getElementById(indexedHandleId || \"\") as HTMLElement\n }\n >\n <div\n id={indexedHandleId}\n style={style}\n className={clsx(\n knobClassName,\n classes?.handle,\n sliderClasses.handle\n )}\n {...restProps}\n aria-label={`${label}-knob-${index}`}\n aria-valuenow={knobsPositionToScaledValue(\n knobValue,\n minPointValue,\n stepValue\n )}\n aria-valuemin={minPointValue}\n aria-valuemax={maxPointValue}\n {...knobProps?.[index]}\n />\n </StyledTooltip>\n </StyledTooltipContainer>\n );\n };\n\n return (\n <StyledFormElement\n className={clsx(\n className,\n classes?.root,\n sliderClasses.root,\n !readOnly &&\n !disabled &&\n !isSingle &&\n isDraggingTrack &&\n clsx(classes?.trackDragging, sliderClasses.trackDragging),\n !readOnly &&\n !disabled &&\n !isSingle &&\n !isDraggingTrack &&\n clsx(classes?.trackStandBy, sliderClasses.trackStandBy),\n disabled && clsx(classes?.rootDisabled, sliderClasses.rootDisabled)\n )}\n $dragging={!readOnly && !disabled && !isSingle && isDraggingTrack}\n $standBy={!readOnly && !disabled && !isSingle && !isDraggingTrack}\n $disabled={!!disabled}\n id={id}\n name={name}\n status={statusArrayToFormStatus(validationStatus)}\n disabled={disabled}\n required={required}\n readOnly={readOnly}\n onMouseDown={onMouseDownHandler}\n onMouseUp={onMouseUpHandler}\n onBlur={onBlurHandler}\n {...others}\n >\n {(hasLabel || !hideInput) && (\n <StyledLabelContainer\n className={clsx(\n classes?.labelContainer,\n sliderClasses.labelContainer,\n hasLabel &&\n clsx(classes?.labelIncluded, sliderClasses.labelIncluded),\n !hasLabel && clsx(classes?.onlyInput, sliderClasses.onlyInput)\n )}\n $hasLabel={hasLabel}\n >\n {hasLabel && (\n <HvLabel\n id={setId(elementId, \"label\")}\n className={clsx(classes?.label, sliderClasses.label)}\n htmlFor={setId(elementId, \"slider\")}\n label={label}\n />\n )}\n\n {!hideInput && (\n <HvSliderInput\n id={sliderInputId}\n label={label}\n values={knobsPositionsToKnobsValues(\n knobsPositions,\n stepValue,\n minPointValue\n )}\n onChange={onInputChangeHandler}\n status={validationStatus}\n disabled={disabled}\n readOnly={readOnly}\n markDigits={markDigits}\n inputProps={inputProps}\n />\n )}\n </StyledLabelContainer>\n )}\n\n <StyledSliderContainer\n className={clsx(\n classes?.sliderBase,\n sliderClasses.sliderBase,\n classes?.sliderContainer,\n sliderClasses.sliderContainer\n )}\n >\n {isSingle && (\n <StyledSlider\n handleRender={createKnob}\n className={clsx(classes?.sliderRoot, sliderClasses.sliderRoot)}\n min={0}\n max={divisionQuantity}\n step={1}\n marks={marks}\n dotStyle={disabled ? sliderStyles.dotDisabled : sliderStyles.dot}\n onChange={(singleValue) =>\n onChangeHandler(\n Array.isArray(singleValue) ? singleValue : [singleValue]\n )\n }\n onBeforeChange={(singleValue) =>\n onBeforeChangeHandler(\n Array.isArray(singleValue) ? singleValue : [singleValue]\n )\n }\n onAfterChange={(singleValue) =>\n onAfterChangeHandler(\n Array.isArray(singleValue) ? singleValue : [singleValue]\n )\n }\n value={knobsPositions.length > 0 ? knobsPositions[0] : undefined}\n allowCross={false}\n disabled={disabled}\n count={rangesCount}\n railStyle={sliderStyles.rail}\n handleStyle={knobStyles.knobInner}\n trackStyle={trackStyles}\n {...sliderProps}\n />\n )}\n {!isSingle && (\n <StyledSlider\n range\n handleRender={createKnob}\n className={clsx(\n classes?.sliderRoot,\n sliderClasses.sliderRoot,\n !isSingle && clsx(classes?.rootRange, sliderClasses.rootRange)\n )}\n min={0}\n max={divisionQuantity}\n step={1}\n marks={marks}\n disabled={disabled}\n dotStyle={disabled ? sliderStyles.dotDisabled : sliderStyles.dot}\n onChange={(singleValue) =>\n onChangeHandler(\n Array.isArray(singleValue) ? singleValue : [singleValue]\n )\n }\n onBeforeChange={(singleValue) =>\n onBeforeChangeHandler(\n Array.isArray(singleValue) ? singleValue : [singleValue]\n )\n }\n onAfterChange={(singleValue) =>\n onAfterChangeHandler(\n Array.isArray(singleValue) ? singleValue : [singleValue]\n )\n }\n value={knobsPositions.length > 0 ? [...knobsPositions] : undefined}\n allowCross={false}\n count={rangesCount}\n railStyle={sliderStyles.rail}\n handleStyle={knobStyles.knobInner}\n trackStyle={trackStyles}\n draggableTrack={!readOnly && !isSingle}\n {...sliderProps}\n />\n )}\n </StyledSliderContainer>\n\n {canShowError && (\n <StyledWarning\n id={setId(elementId, \"error\")}\n className={clsx(classes?.error, sliderClasses.error)}\n disableBorder\n >\n {validationMessage}\n </StyledWarning>\n )}\n </StyledFormElement>\n );\n};\n"],"names":["HvSlider","id","className","name","label","status","statusMessage","disabled","classes","sliderProps","knobProps","inputProps","requiredMessage","noOverlap","hideInput","required","readOnly","markProperties","defaultValues","undefined","values","valuesProp","knobProperties","knobPropertiesProp","ariaErrorMessage","maxPointValue","minPointValue","divisionQuantity","markStep","markDigits","formatMark","onChange","onBlur","onBeforeChange","onAfterChange","formatTooltip","others","hasLabel","isDirty","useRef","elementId","useUniqueId","sliderInputId","setId","stepValue","useMemo","calculateStepValue","inverseStepValue","marks","createMark","sliderStyles","canShowError","isSingle","isSingleSlider","value","length","knobsValuesToKnobsPositions","defaultKnobsPositions","knobsPositions","setKnobsPositions","useControlled","arrayStatus","arrayDefaultStatus","convertStatusToArray","validationStatus","setValidationState","validationMessage","setValidationMessage","isDraggingTrack","setIsDraggingTrack","useState","generateDefaultKnobProperties","rangesCount","trackStyles","createTrackStyles","knobStyles","createKnobStyles","performValidation","useCallback","invalid","newValidationState","map","position","Number","isNaN","validationStates","valid","useEffect","stepVl","inverseStepVl","current","onMouseDownHandler","event","target","includes","onMouseUpHandler","generateKnobsPositionAndValues","knobsCurrentPosition","newKnobsPosition","slice","knobsValues","duplicatedValue","findDuplicated","filter","item","index","indexOf","forEach","array","newArray","newPosition","previousValue","knobsPositionToScaledValue","knobsPosition","onBlurHandler","knobs","onChangeHandler","knobProperty","fixed","scaledValueToKnobsPositionValue","onInputChangeHandler","inputValues","newKnobPositions","ensureValuesConsistency","onBeforeChangeHandler","onAfterChangeHandler","createKnob","knobNode","params","knobValue","dragging","knobClassName","style","restProps","props","scaledKnobValue","toFixed","backgroundColor","dragColor","color","isEmpty","handleId","indexedHandleId","StyledTooltipContainer","clsx","handleContainer","sliderClasses","handleContainerDisabled","handleHiddenContainer","$active","$disabled","$hidden","children","StyledTooltip","prefixCls","overlay","visible","placement","overlayClassName","sliderTooltip","getTooltipContainer","document","getElementById","handle","StyledFormElement","root","trackDragging","trackStandBy","rootDisabled","$dragging","$standBy","statusArrayToFormStatus","onMouseDown","onMouseUp","StyledLabelContainer","labelContainer","labelIncluded","onlyInput","$hasLabel","_jsx","HvLabel","htmlFor","HvSliderInput","knobsPositionsToKnobsValues","_jsxs","StyledSliderContainer","sliderBase","sliderContainer","StyledSlider","handleRender","sliderRoot","min","max","step","dotStyle","dotDisabled","dot","singleValue","Array","isArray","allowCross","count","railStyle","rail","handleStyle","knobInner","trackStyle","range","rootRange","draggableTrack","StyledWarning","error","disableBorder"],"mappings":"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"}