@hitachivantara/uikit-react-core 5.18.0 → 5.18.2

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 (194) hide show
  1. package/dist/cjs/components/Accordion/Accordion.cjs +1 -1
  2. package/dist/cjs/components/Accordion/Accordion.cjs.map +1 -1
  3. package/dist/cjs/components/AppSwitcher/AppSwitcher.cjs +2 -5
  4. package/dist/cjs/components/AppSwitcher/AppSwitcher.cjs.map +1 -1
  5. package/dist/cjs/components/BaseInput/BaseInput.cjs +1 -1
  6. package/dist/cjs/components/BaseInput/BaseInput.cjs.map +1 -1
  7. package/dist/cjs/components/Box/Box.cjs +2 -2
  8. package/dist/cjs/components/Box/Box.cjs.map +1 -1
  9. package/dist/cjs/components/Button/Button.cjs +1 -1
  10. package/dist/cjs/components/Button/Button.cjs.map +1 -1
  11. package/dist/cjs/components/Button/Button.styles.cjs +6 -5
  12. package/dist/cjs/components/Button/Button.styles.cjs.map +1 -1
  13. package/dist/cjs/components/Carousel/Carousel.cjs +8 -8
  14. package/dist/cjs/components/Carousel/Carousel.cjs.map +1 -1
  15. package/dist/cjs/components/ColorPicker/Fields/Fields.cjs +8 -8
  16. package/dist/cjs/components/ColorPicker/Fields/Fields.cjs.map +1 -1
  17. package/dist/cjs/components/ColorPicker/Picker/Picker.cjs +2 -2
  18. package/dist/cjs/components/ColorPicker/Picker/Picker.cjs.map +1 -1
  19. package/dist/cjs/components/DatePicker/DatePicker.cjs +2 -2
  20. package/dist/cjs/components/DatePicker/DatePicker.cjs.map +1 -1
  21. package/dist/cjs/components/Dialog/Dialog.cjs +1 -1
  22. package/dist/cjs/components/Dialog/Dialog.cjs.map +1 -1
  23. package/dist/cjs/components/DotPagination/DotPagination.cjs +19 -13
  24. package/dist/cjs/components/DotPagination/DotPagination.cjs.map +1 -1
  25. package/dist/cjs/components/DotPagination/DotPagination.styles.cjs +20 -67
  26. package/dist/cjs/components/DotPagination/DotPagination.styles.cjs.map +1 -1
  27. package/dist/cjs/components/DropDownMenu/DropDownMenu.styles.cjs +1 -0
  28. package/dist/cjs/components/DropDownMenu/DropDownMenu.styles.cjs.map +1 -1
  29. package/dist/cjs/components/Dropdown/List/List.cjs +1 -1
  30. package/dist/cjs/components/Dropdown/List/List.cjs.map +1 -1
  31. package/dist/cjs/components/FilterGroup/RightPanel/RightPanel.cjs +1 -1
  32. package/dist/cjs/components/FilterGroup/RightPanel/RightPanel.cjs.map +1 -1
  33. package/dist/cjs/components/Forms/Suggestions/Suggestions.cjs +16 -13
  34. package/dist/cjs/components/Forms/Suggestions/Suggestions.cjs.map +1 -1
  35. package/dist/cjs/components/Header/Navigation/MenuItem/MenuItem.cjs +26 -15
  36. package/dist/cjs/components/Header/Navigation/MenuItem/MenuItem.cjs.map +1 -1
  37. package/dist/cjs/components/Input/Input.cjs +83 -75
  38. package/dist/cjs/components/Input/Input.cjs.map +1 -1
  39. package/dist/cjs/components/ListContainer/ListItem/ListItem.cjs +2 -2
  40. package/dist/cjs/components/ListContainer/ListItem/ListItem.cjs.map +1 -1
  41. package/dist/cjs/components/MultiButton/MultiButton.styles.cjs +10 -10
  42. package/dist/cjs/components/MultiButton/MultiButton.styles.cjs.map +1 -1
  43. package/dist/cjs/components/Pagination/Pagination.cjs.map +1 -1
  44. package/dist/cjs/components/Pagination/Pagination.styles.cjs +1 -3
  45. package/dist/cjs/components/Pagination/Pagination.styles.cjs.map +1 -1
  46. package/dist/cjs/components/ScrollTo/useScrollTo.cjs.map +1 -1
  47. package/dist/cjs/components/Slider/Slider.cjs +1 -1
  48. package/dist/cjs/components/Slider/Slider.cjs.map +1 -1
  49. package/dist/cjs/components/Snackbar/Snackbar.cjs +9 -14
  50. package/dist/cjs/components/Snackbar/Snackbar.cjs.map +1 -1
  51. package/dist/cjs/components/Snackbar/Snackbar.styles.cjs +38 -29
  52. package/dist/cjs/components/Snackbar/Snackbar.styles.cjs.map +1 -1
  53. package/dist/cjs/components/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.cjs +22 -18
  54. package/dist/cjs/components/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.cjs.map +1 -1
  55. package/dist/cjs/components/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.styles.cjs +37 -89
  56. package/dist/cjs/components/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.styles.cjs.map +1 -1
  57. package/dist/cjs/components/Snackbar/SnackbarProvider/SnackbarProvider.cjs +34 -64
  58. package/dist/cjs/components/Snackbar/SnackbarProvider/SnackbarProvider.cjs.map +1 -1
  59. package/dist/cjs/components/Snackbar/SnackbarProvider/SnackbarProvider.styles.cjs +28 -0
  60. package/dist/cjs/components/Snackbar/SnackbarProvider/SnackbarProvider.styles.cjs.map +1 -0
  61. package/dist/cjs/components/Table/TableCell/TableCell.cjs +6 -3
  62. package/dist/cjs/components/Table/TableCell/TableCell.cjs.map +1 -1
  63. package/dist/cjs/components/Table/TableRow/TableRow.cjs +9 -6
  64. package/dist/cjs/components/Table/TableRow/TableRow.cjs.map +1 -1
  65. package/dist/cjs/components/TagsInput/TagsInput.cjs +1 -1
  66. package/dist/cjs/components/TagsInput/TagsInput.cjs.map +1 -1
  67. package/dist/cjs/components/TextArea/TextArea.cjs +45 -43
  68. package/dist/cjs/components/TextArea/TextArea.cjs.map +1 -1
  69. package/dist/cjs/components/Typography/Typography.cjs +20 -133
  70. package/dist/cjs/components/Typography/Typography.cjs.map +1 -1
  71. package/dist/cjs/components/Typography/Typography.styles.cjs +107 -0
  72. package/dist/cjs/components/Typography/Typography.styles.cjs.map +1 -0
  73. package/dist/cjs/components/Typography/utils.cjs.map +1 -1
  74. package/dist/cjs/components/VerticalNavigation/Header/Header.cjs +1 -1
  75. package/dist/cjs/components/VerticalNavigation/Header/Header.cjs.map +1 -1
  76. package/dist/cjs/components/VerticalNavigation/Navigation/Navigation.cjs +7 -7
  77. package/dist/cjs/components/VerticalNavigation/Navigation/Navigation.cjs.map +1 -1
  78. package/dist/cjs/components/VerticalNavigation/TreeView/TreeViewItem.cjs +5 -5
  79. package/dist/cjs/components/VerticalNavigation/TreeView/TreeViewItem.cjs.map +1 -1
  80. package/dist/cjs/components/VerticalNavigation/TreeView/descendants.cjs +1 -4
  81. package/dist/cjs/components/VerticalNavigation/TreeView/descendants.cjs.map +1 -1
  82. package/dist/cjs/components/VerticalNavigation/VerticalNavigation.cjs +5 -5
  83. package/dist/cjs/components/VerticalNavigation/VerticalNavigation.cjs.map +1 -1
  84. package/dist/cjs/hooks/useWidth.cjs.map +1 -1
  85. package/dist/cjs/index.cjs +13 -10
  86. package/dist/cjs/index.cjs.map +1 -1
  87. package/dist/cjs/providers/ThemeProvider.cjs +20 -18
  88. package/dist/cjs/providers/ThemeProvider.cjs.map +1 -1
  89. package/dist/esm/components/Accordion/Accordion.js +1 -1
  90. package/dist/esm/components/Accordion/Accordion.js.map +1 -1
  91. package/dist/esm/components/AppSwitcher/AppSwitcher.js +2 -5
  92. package/dist/esm/components/AppSwitcher/AppSwitcher.js.map +1 -1
  93. package/dist/esm/components/BaseInput/BaseInput.js +1 -1
  94. package/dist/esm/components/BaseInput/BaseInput.js.map +1 -1
  95. package/dist/esm/components/Box/Box.js +2 -2
  96. package/dist/esm/components/Box/Box.js.map +1 -1
  97. package/dist/esm/components/Button/Button.js +1 -1
  98. package/dist/esm/components/Button/Button.js.map +1 -1
  99. package/dist/esm/components/Button/Button.styles.js +6 -5
  100. package/dist/esm/components/Button/Button.styles.js.map +1 -1
  101. package/dist/esm/components/Carousel/Carousel.js +9 -9
  102. package/dist/esm/components/Carousel/Carousel.js.map +1 -1
  103. package/dist/esm/components/ColorPicker/Fields/Fields.js +8 -8
  104. package/dist/esm/components/ColorPicker/Fields/Fields.js.map +1 -1
  105. package/dist/esm/components/ColorPicker/Picker/Picker.js +2 -2
  106. package/dist/esm/components/ColorPicker/Picker/Picker.js.map +1 -1
  107. package/dist/esm/components/DatePicker/DatePicker.js +2 -2
  108. package/dist/esm/components/DatePicker/DatePicker.js.map +1 -1
  109. package/dist/esm/components/Dialog/Dialog.js +1 -1
  110. package/dist/esm/components/Dialog/Dialog.js.map +1 -1
  111. package/dist/esm/components/DotPagination/DotPagination.js +22 -15
  112. package/dist/esm/components/DotPagination/DotPagination.js.map +1 -1
  113. package/dist/esm/components/DotPagination/DotPagination.styles.js +20 -65
  114. package/dist/esm/components/DotPagination/DotPagination.styles.js.map +1 -1
  115. package/dist/esm/components/DropDownMenu/DropDownMenu.styles.js +1 -0
  116. package/dist/esm/components/DropDownMenu/DropDownMenu.styles.js.map +1 -1
  117. package/dist/esm/components/Dropdown/List/List.js +1 -1
  118. package/dist/esm/components/Dropdown/List/List.js.map +1 -1
  119. package/dist/esm/components/FilterGroup/RightPanel/RightPanel.js +1 -1
  120. package/dist/esm/components/FilterGroup/RightPanel/RightPanel.js.map +1 -1
  121. package/dist/esm/components/Forms/Suggestions/Suggestions.js +17 -14
  122. package/dist/esm/components/Forms/Suggestions/Suggestions.js.map +1 -1
  123. package/dist/esm/components/Header/Navigation/MenuItem/MenuItem.js +26 -15
  124. package/dist/esm/components/Header/Navigation/MenuItem/MenuItem.js.map +1 -1
  125. package/dist/esm/components/Input/Input.js +84 -76
  126. package/dist/esm/components/Input/Input.js.map +1 -1
  127. package/dist/esm/components/ListContainer/ListItem/ListItem.js +2 -2
  128. package/dist/esm/components/ListContainer/ListItem/ListItem.js.map +1 -1
  129. package/dist/esm/components/MultiButton/MultiButton.styles.js +10 -10
  130. package/dist/esm/components/MultiButton/MultiButton.styles.js.map +1 -1
  131. package/dist/esm/components/Pagination/Pagination.js.map +1 -1
  132. package/dist/esm/components/Pagination/Pagination.styles.js +1 -3
  133. package/dist/esm/components/Pagination/Pagination.styles.js.map +1 -1
  134. package/dist/esm/components/ScrollTo/useScrollTo.js.map +1 -1
  135. package/dist/esm/components/Slider/Slider.js +2 -2
  136. package/dist/esm/components/Slider/Slider.js.map +1 -1
  137. package/dist/esm/components/Snackbar/Snackbar.js +12 -16
  138. package/dist/esm/components/Snackbar/Snackbar.js.map +1 -1
  139. package/dist/esm/components/Snackbar/Snackbar.styles.js +38 -26
  140. package/dist/esm/components/Snackbar/Snackbar.styles.js.map +1 -1
  141. package/dist/esm/components/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.js +21 -18
  142. package/dist/esm/components/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.js.map +1 -1
  143. package/dist/esm/components/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.styles.js +37 -86
  144. package/dist/esm/components/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.styles.js.map +1 -1
  145. package/dist/esm/components/Snackbar/SnackbarProvider/SnackbarProvider.js +35 -62
  146. package/dist/esm/components/Snackbar/SnackbarProvider/SnackbarProvider.js.map +1 -1
  147. package/dist/esm/components/Snackbar/SnackbarProvider/SnackbarProvider.styles.js +28 -0
  148. package/dist/esm/components/Snackbar/SnackbarProvider/SnackbarProvider.styles.js.map +1 -0
  149. package/dist/esm/components/Table/TableCell/TableCell.js +6 -3
  150. package/dist/esm/components/Table/TableCell/TableCell.js.map +1 -1
  151. package/dist/esm/components/Table/TableRow/TableRow.js +9 -6
  152. package/dist/esm/components/Table/TableRow/TableRow.js.map +1 -1
  153. package/dist/esm/components/TagsInput/TagsInput.js +1 -1
  154. package/dist/esm/components/TagsInput/TagsInput.js.map +1 -1
  155. package/dist/esm/components/TextArea/TextArea.js +46 -44
  156. package/dist/esm/components/TextArea/TextArea.js.map +1 -1
  157. package/dist/esm/components/Typography/Typography.js +23 -133
  158. package/dist/esm/components/Typography/Typography.js.map +1 -1
  159. package/dist/esm/components/Typography/Typography.styles.js +107 -0
  160. package/dist/esm/components/Typography/Typography.styles.js.map +1 -0
  161. package/dist/esm/components/Typography/utils.js.map +1 -1
  162. package/dist/esm/components/VerticalNavigation/Header/Header.js +1 -1
  163. package/dist/esm/components/VerticalNavigation/Header/Header.js.map +1 -1
  164. package/dist/esm/components/VerticalNavigation/Navigation/Navigation.js +7 -7
  165. package/dist/esm/components/VerticalNavigation/Navigation/Navigation.js.map +1 -1
  166. package/dist/esm/components/VerticalNavigation/TreeView/TreeViewItem.js +5 -5
  167. package/dist/esm/components/VerticalNavigation/TreeView/TreeViewItem.js.map +1 -1
  168. package/dist/esm/components/VerticalNavigation/TreeView/descendants.js +1 -4
  169. package/dist/esm/components/VerticalNavigation/TreeView/descendants.js.map +1 -1
  170. package/dist/esm/components/VerticalNavigation/VerticalNavigation.js +6 -6
  171. package/dist/esm/components/VerticalNavigation/VerticalNavigation.js.map +1 -1
  172. package/dist/esm/hooks/useWidth.js.map +1 -1
  173. package/dist/esm/index.js +270 -267
  174. package/dist/esm/index.js.map +1 -1
  175. package/dist/esm/providers/ThemeProvider.js +21 -19
  176. package/dist/esm/providers/ThemeProvider.js.map +1 -1
  177. package/dist/types/index.d.ts +265 -204
  178. package/package.json +3 -3
  179. package/dist/cjs/components/DotPagination/dotPaginationClasses.cjs +0 -8
  180. package/dist/cjs/components/DotPagination/dotPaginationClasses.cjs.map +0 -1
  181. package/dist/cjs/components/Snackbar/SnackbarContentWrapper/snackbarContentWrapperClasses.cjs +0 -8
  182. package/dist/cjs/components/Snackbar/SnackbarContentWrapper/snackbarContentWrapperClasses.cjs.map +0 -1
  183. package/dist/cjs/components/Snackbar/snackbarClasses.cjs +0 -8
  184. package/dist/cjs/components/Snackbar/snackbarClasses.cjs.map +0 -1
  185. package/dist/cjs/components/Typography/typographyClasses.cjs +0 -8
  186. package/dist/cjs/components/Typography/typographyClasses.cjs.map +0 -1
  187. package/dist/esm/components/DotPagination/dotPaginationClasses.js +0 -8
  188. package/dist/esm/components/DotPagination/dotPaginationClasses.js.map +0 -1
  189. package/dist/esm/components/Snackbar/SnackbarContentWrapper/snackbarContentWrapperClasses.js +0 -8
  190. package/dist/esm/components/Snackbar/SnackbarContentWrapper/snackbarContentWrapperClasses.js.map +0 -1
  191. package/dist/esm/components/Snackbar/snackbarClasses.js +0 -8
  192. package/dist/esm/components/Snackbar/snackbarClasses.js.map +0 -1
  193. package/dist/esm/components/Typography/typographyClasses.js +0 -8
  194. package/dist/esm/components/Typography/typographyClasses.js.map +0 -1
@@ -1,27 +1,29 @@
1
- import { clsx } from "clsx";
1
+ import { OtherStep, CurrentStep } from "@hitachivantara/uikit-react-icons";
2
2
  import { cloneElement } from "react";
3
- import dotPaginationClasses from "./dotPaginationClasses.js";
4
- import { StyledRadioGroup, StyledRadio, StyledOtherStep, StyledCurrentStep } from "./DotPagination.styles.js";
3
+ import { useClasses } from "./DotPagination.styles.js";
4
+ import { staticClasses } from "./DotPagination.styles.js";
5
5
  import { jsx } from "@emotion/react/jsx-runtime";
6
+ import { HvRadioGroup } from "../RadioGroup/RadioGroup.js";
7
+ import { HvRadio } from "../Radio/Radio.js";
6
8
  const getSelectorIcons = (radioIcon, radioCheckedIcon, classes) => {
7
9
  return {
8
- radio: cloneElement(radioIcon || /* @__PURE__ */ jsx(StyledOtherStep, {
10
+ radio: cloneElement(radioIcon || /* @__PURE__ */ jsx(OtherStep, {
9
11
  width: 8,
10
12
  height: 8
11
13
  }), {
12
- className: clsx(classes == null ? void 0 : classes.icon, dotPaginationClasses.icon)
14
+ className: classes == null ? void 0 : classes.icon
13
15
  }),
14
- radioChecked: cloneElement(radioCheckedIcon || /* @__PURE__ */ jsx(StyledCurrentStep, {
16
+ radioChecked: cloneElement(radioCheckedIcon || /* @__PURE__ */ jsx(CurrentStep, {
15
17
  width: 8,
16
18
  height: 8
17
19
  }), {
18
- className: clsx(classes == null ? void 0 : classes.icon, dotPaginationClasses.icon)
20
+ className: classes == null ? void 0 : classes.icon
19
21
  })
20
22
  };
21
23
  };
22
24
  const HvDotPagination = ({
23
25
  className,
24
- classes,
26
+ classes: classesProp = {},
25
27
  unselectedIcon,
26
28
  selectedIcon,
27
29
  pages = 1,
@@ -31,18 +33,22 @@ const HvDotPagination = ({
31
33
  ...others
32
34
  }) => {
33
35
  const range = (n) => Array.from(Array(n), (_, i) => i);
36
+ const {
37
+ classes,
38
+ cx
39
+ } = useClasses(classesProp);
34
40
  const icons = getSelectorIcons(unselectedIcon, selectedIcon, classes);
35
- return /* @__PURE__ */ jsx(StyledRadioGroup, {
36
- className: clsx(className, classes == null ? void 0 : classes.root, dotPaginationClasses.root),
41
+ return /* @__PURE__ */ jsx(HvRadioGroup, {
42
+ className: cx(classes.root, className),
37
43
  classes: {
38
- horizontal: clsx(classes == null ? void 0 : classes.horizontal, dotPaginationClasses.horizontal)
44
+ horizontal: classes.horizontal
39
45
  },
40
46
  orientation: "horizontal",
41
47
  ...others,
42
- children: range(pages).map((i) => /* @__PURE__ */ jsx(StyledRadio, {
48
+ children: range(pages).map((i) => /* @__PURE__ */ jsx(HvRadio, {
43
49
  classes: {
44
- radio: clsx(classes == null ? void 0 : classes.radio, dotPaginationClasses.radio),
45
- root: clsx(classes == null ? void 0 : classes.radioRoot, dotPaginationClasses.radioRoot)
50
+ radio: classes.radio,
51
+ root: classes.radioRoot
46
52
  },
47
53
  value: i,
48
54
  checked: page === i,
@@ -54,6 +60,7 @@ const HvDotPagination = ({
54
60
  });
55
61
  };
56
62
  export {
57
- HvDotPagination
63
+ HvDotPagination,
64
+ staticClasses as dotPaginationClasses
58
65
  };
59
66
  //# sourceMappingURL=DotPagination.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DotPagination.js","sources":["../../../../src/components/DotPagination/DotPagination.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport { cloneElement } from \"react\";\nimport { HvRadioGroupProps } from \"../RadioGroup\";\nimport dotPaginationClasses, {\n HvDotPaginationClasses,\n} from \"./dotPaginationClasses\";\nimport {\n StyledCurrentStep,\n StyledOtherStep,\n StyledRadio,\n StyledRadioGroup,\n} from \"./DotPagination.styles\";\n\nexport interface HvDotPaginationProps\n extends Omit<HvRadioGroupProps, \"classes\"> {\n /**\n * Icon to override the default one used for the unselected state.\n *\n * The default icon is `OtherStep`.\n */\n unselectedIcon?: React.ReactElement;\n /**\n * Icon to override the default one used for the selected state.\n *\n * The default icon is `CurrentStep`.\n */\n selectedIcon?: React.ReactElement;\n /**\n * The number of pages the component has.\n */\n pages?: number;\n /**\n * The currently selected page.\n */\n page?: number;\n /**\n * The callback fired when the page value changes.\n */\n onPageChange?: (\n event: React.ChangeEvent<HTMLInputElement>,\n page: number\n ) => void;\n /**\n * The callback fired to get the page aria label.\n */\n getItemAriaLabel?: (page: number) => string;\n /**\n * A Jss Object used to override or extend the styles applied.\n */\n classes?: HvDotPaginationClasses;\n}\n\nconst getSelectorIcons = (\n radioIcon?: React.ReactElement,\n radioCheckedIcon?: React.ReactElement,\n classes?: HvDotPaginationClasses\n) => {\n return {\n radio: cloneElement(radioIcon || <StyledOtherStep width={8} height={8} />, {\n className: clsx(classes?.icon, dotPaginationClasses.icon),\n }),\n radioChecked: cloneElement(\n radioCheckedIcon || <StyledCurrentStep width={8} height={8} />,\n {\n className: clsx(classes?.icon, dotPaginationClasses.icon),\n }\n ),\n };\n};\n\n/**\n * Pagination is the process of dividing a document into discrete pages. It relates to how users interact with structured content on a website or application.\n * This component uses Radio Buttons to represent each page.\n */\nexport const HvDotPagination = ({\n className,\n classes,\n unselectedIcon,\n selectedIcon,\n pages = 1,\n page = 0,\n onPageChange,\n getItemAriaLabel,\n ...others\n}: HvDotPaginationProps) => {\n const range = (n: number) => Array.from(Array(n), (_, i) => i);\n\n const icons = getSelectorIcons(unselectedIcon, selectedIcon, classes);\n\n return (\n <StyledRadioGroup\n className={clsx(className, classes?.root, dotPaginationClasses.root)}\n classes={{\n horizontal: clsx(classes?.horizontal, dotPaginationClasses.horizontal),\n }}\n orientation=\"horizontal\"\n {...others}\n >\n {range(pages).map((i) => (\n <StyledRadio\n classes={{\n radio: clsx(classes?.radio, dotPaginationClasses.radio),\n root: clsx(classes?.radioRoot, dotPaginationClasses.radioRoot),\n }}\n key={i}\n value={i}\n checked={page === i}\n onChange={(event) => onPageChange?.(event, i)}\n icon={icons.radio}\n checkedIcon={icons.radioChecked}\n aria-label={getItemAriaLabel?.(i)}\n />\n ))}\n </StyledRadioGroup>\n );\n};\n"],"names":["getSelectorIcons","radioIcon","radioCheckedIcon","classes","radio","cloneElement","_jsx","StyledOtherStep","width","height","className","clsx","icon","dotPaginationClasses","radioChecked","StyledCurrentStep","HvDotPagination","unselectedIcon","selectedIcon","pages","page","onPageChange","getItemAriaLabel","others","range","n","Array","from","_","i","icons","StyledRadioGroup","root","horizontal","orientation","children","map","StyledRadio","radioRoot","value","checked","onChange","event","checkedIcon"],"mappings":";;;;;AAoDA,MAAMA,mBAAmBA,CACvBC,WACAC,kBACAC,YACG;AACI,SAAA;AAAA,IACLC,OAAOC,aAAaJ,aAAaK,oBAACC,iBAAe;AAAA,MAACC,OAAO;AAAA,MAAGC,QAAQ;AAAA,IAAA,CAAI,GAAG;AAAA,MACzEC,WAAWC,KAAKR,mCAASS,MAAMC,qBAAqBD,IAAI;AAAA,IAAA,CACzD;AAAA,IACDE,cAAcT,aACZH,oBAAoBI,oBAACS,mBAAiB;AAAA,MAACP,OAAO;AAAA,MAAGC,QAAQ;AAAA,IAAA,CAAI,GAC7D;AAAA,MACEC,WAAWC,KAAKR,mCAASS,MAAMC,qBAAqBD,IAAI;AAAA,IAAA,CAE5D;AAAA,EAAA;AAEJ;AAMO,MAAMI,kBAAkBA,CAAC;AAAA,EAC9BN;AAAAA,EACAP;AAAAA,EACAc;AAAAA,EACAC;AAAAA,EACAC,QAAQ;AAAA,EACRC,OAAO;AAAA,EACPC;AAAAA,EACAC;AAAAA,EACA,GAAGC;AACiB,MAAM;AACpBC,QAAAA,QAAQA,CAACC,MAAcC,MAAMC,KAAKD,MAAMD,CAAC,GAAG,CAACG,GAAGC,MAAMA,CAAC;AAE7D,QAAMC,QAAQ9B,iBAAiBiB,gBAAgBC,cAAcf,OAAO;AAEpE,6BACG4B,kBAAgB;AAAA,IACfrB,WAAWC,KAAKD,WAAWP,mCAAS6B,MAAMnB,qBAAqBmB,IAAI;AAAA,IACnE7B,SAAS;AAAA,MACP8B,YAAYtB,KAAKR,mCAAS8B,YAAYpB,qBAAqBoB,UAAU;AAAA,IACvE;AAAA,IACAC,aAAY;AAAA,IAAY,GACpBX;AAAAA,IAAMY,UAETX,MAAML,KAAK,EAAEiB,IAAKP,CAAAA,0BAChBQ,aAAW;AAAA,MACVlC,SAAS;AAAA,QACPC,OAAOO,KAAKR,mCAASC,OAAOS,qBAAqBT,KAAK;AAAA,QACtD4B,MAAMrB,KAAKR,mCAASmC,WAAWzB,qBAAqByB,SAAS;AAAA,MAC/D;AAAA,MAEAC,OAAOV;AAAAA,MACPW,SAASpB,SAASS;AAAAA,MAClBY,UAAWC,CAAAA,UAAUrB,6CAAeqB,OAAOb;AAAAA,MAC3CjB,MAAMkB,MAAM1B;AAAAA,MACZuC,aAAab,MAAMhB;AAAAA,MACnB,cAAYQ,qDAAmBO;AAAAA,IAAG,GAN7BA,CAON,CACF;AAAA,EAAA,CACe;AAEtB;"}
1
+ {"version":3,"file":"DotPagination.js","sources":["../../../../src/components/DotPagination/DotPagination.tsx"],"sourcesContent":["import { CurrentStep, OtherStep } from \"@hitachivantara/uikit-react-icons\";\nimport { cloneElement } from \"react\";\nimport { HvRadio, HvRadioGroup, HvRadioGroupProps } from \"@core/components\";\nimport { ExtractNames } from \"@core/utils\";\n\nimport { staticClasses, useClasses } from \"./DotPagination.styles\";\n\nexport { staticClasses as dotPaginationClasses };\n\nexport type HvDotPaginationClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvDotPaginationProps\n extends Omit<HvRadioGroupProps, \"classes\"> {\n /**\n * Icon to override the default one used for the unselected state.\n *\n * The default icon is `OtherStep`.\n */\n unselectedIcon?: React.ReactElement;\n /**\n * Icon to override the default one used for the selected state.\n *\n * The default icon is `CurrentStep`.\n */\n selectedIcon?: React.ReactElement;\n /**\n * The number of pages the component has.\n */\n pages?: number;\n /**\n * The currently selected page.\n */\n page?: number;\n /**\n * The callback fired when the page value changes.\n */\n onPageChange?: (\n event: React.ChangeEvent<HTMLInputElement>,\n page: number\n ) => void;\n /**\n * The callback fired to get the page aria label.\n */\n getItemAriaLabel?: (page: number) => string;\n /**\n * A Jss Object used to override or extend the styles applied.\n */\n classes?: HvDotPaginationClasses;\n}\n\nconst getSelectorIcons = (\n radioIcon?: React.ReactElement,\n radioCheckedIcon?: React.ReactElement,\n classes?: HvDotPaginationClasses\n) => {\n return {\n radio: cloneElement(radioIcon || <OtherStep width={8} height={8} />, {\n className: classes?.icon,\n }),\n radioChecked: cloneElement(\n radioCheckedIcon || <CurrentStep width={8} height={8} />,\n {\n className: classes?.icon,\n }\n ),\n };\n};\n\n/**\n * Pagination is the process of dividing a document into discrete pages. It relates to how users interact with structured content on a website or application.\n * This component uses Radio Buttons to represent each page.\n */\nexport const HvDotPagination = ({\n className,\n classes: classesProp = {},\n unselectedIcon,\n selectedIcon,\n pages = 1,\n page = 0,\n onPageChange,\n getItemAriaLabel,\n ...others\n}: HvDotPaginationProps) => {\n const range = (n: number) => Array.from(Array(n), (_, i) => i);\n\n const { classes, cx } = useClasses(classesProp);\n\n const icons = getSelectorIcons(unselectedIcon, selectedIcon, classes);\n\n return (\n <HvRadioGroup\n className={cx(classes.root, className)}\n classes={{\n horizontal: classes.horizontal,\n }}\n orientation=\"horizontal\"\n {...others}\n >\n {range(pages).map((i) => (\n <HvRadio\n classes={{\n radio: classes.radio,\n root: classes.radioRoot,\n }}\n key={i}\n value={i}\n checked={page === i}\n onChange={(event) => onPageChange?.(event, i)}\n icon={icons.radio}\n checkedIcon={icons.radioChecked}\n aria-label={getItemAriaLabel?.(i)}\n />\n ))}\n </HvRadioGroup>\n );\n};\n"],"names":["getSelectorIcons","radioIcon","radioCheckedIcon","classes","radio","cloneElement","_jsx","OtherStep","width","height","className","icon","radioChecked","CurrentStep","HvDotPagination","classesProp","unselectedIcon","selectedIcon","pages","page","onPageChange","getItemAriaLabel","others","range","n","Array","from","_","i","cx","useClasses","icons","HvRadioGroup","root","horizontal","orientation","children","map","HvRadio","radioRoot","value","checked","onChange","event","checkedIcon"],"mappings":";;;;;;;AAkDA,MAAMA,mBAAmBA,CACvBC,WACAC,kBACAC,YACG;AACI,SAAA;AAAA,IACLC,OAAOC,aAAaJ,aAAaK,oBAACC,WAAS;AAAA,MAACC,OAAO;AAAA,MAAGC,QAAQ;AAAA,IAAA,CAAI,GAAG;AAAA,MACnEC,WAAWP,mCAASQ;AAAAA,IAAAA,CACrB;AAAA,IACDC,cAAcP,aACZH,oBAAoBI,oBAACO,aAAW;AAAA,MAACL,OAAO;AAAA,MAAGC,QAAQ;AAAA,IAAA,CAAI,GACvD;AAAA,MACEC,WAAWP,mCAASQ;AAAAA,IAAAA,CAExB;AAAA,EAAA;AAEJ;AAMO,MAAMG,kBAAkBA,CAAC;AAAA,EAC9BJ;AAAAA,EACAP,SAASY,cAAc,CAAC;AAAA,EACxBC;AAAAA,EACAC;AAAAA,EACAC,QAAQ;AAAA,EACRC,OAAO;AAAA,EACPC;AAAAA,EACAC;AAAAA,EACA,GAAGC;AACiB,MAAM;AACpBC,QAAAA,QAAQA,CAACC,MAAcC,MAAMC,KAAKD,MAAMD,CAAC,GAAG,CAACG,GAAGC,MAAMA,CAAC;AAEvD,QAAA;AAAA,IAAEzB;AAAAA,IAAS0B;AAAAA,EAAAA,IAAOC,WAAWf,WAAW;AAE9C,QAAMgB,QAAQ/B,iBAAiBgB,gBAAgBC,cAAcd,OAAO;AAEpE,6BACG6B,cAAY;AAAA,IACXtB,WAAWmB,GAAG1B,QAAQ8B,MAAMvB,SAAS;AAAA,IACrCP,SAAS;AAAA,MACP+B,YAAY/B,QAAQ+B;AAAAA,IACtB;AAAA,IACAC,aAAY;AAAA,IAAY,GACpBb;AAAAA,IAAMc,UAETb,MAAML,KAAK,EAAEmB,IAAKT,CAAAA,0BAChBU,SAAO;AAAA,MACNnC,SAAS;AAAA,QACPC,OAAOD,QAAQC;AAAAA,QACf6B,MAAM9B,QAAQoC;AAAAA,MAChB;AAAA,MAEAC,OAAOZ;AAAAA,MACPa,SAAStB,SAASS;AAAAA,MAClBc,UAAWC,CAAAA,UAAUvB,6CAAeuB,OAAOf;AAAAA,MAC3CjB,MAAMoB,MAAM3B;AAAAA,MACZwC,aAAab,MAAMnB;AAAAA,MACnB,cAAYS,qDAAmBO;AAAAA,IAAG,GAN7BA,CAON,CACF;AAAA,EAAA,CACW;AAElB;"}
@@ -1,79 +1,34 @@
1
- import _styled from "@emotion/styled/base";
2
1
  import { theme } from "@hitachivantara/uikit-styles";
3
- import { OtherStep, CurrentStep } from "@hitachivantara/uikit-react-icons";
4
- import dotPaginationClasses from "./dotPaginationClasses.js";
5
- import { jsx } from "@emotion/react/jsx-runtime";
6
- import { HvRadioGroup } from "../RadioGroup/RadioGroup.js";
7
- import { HvRadio } from "../Radio/Radio.js";
8
- function _EMOTION_STRINGIFIED_CSS_ERROR__() {
9
- return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).";
10
- }
11
- const StyledRadioGroup = /* @__PURE__ */ _styled((props) => /* @__PURE__ */ jsx(HvRadioGroup, {
12
- ...props
13
- }), process.env.NODE_ENV === "production" ? {
14
- target: "e1buriah3"
15
- } : {
16
- target: "e1buriah3",
17
- label: "StyledRadioGroup"
18
- })({
19
- display: "flex",
20
- justifyContent: "center",
21
- [`& .${dotPaginationClasses.horizontal}`]: {
2
+ import { createClasses } from "../../utils/classes.js";
3
+ const {
4
+ useClasses,
5
+ staticClasses
6
+ } = createClasses("HvDotPagination", {
7
+ root: {
8
+ display: "flex",
9
+ justifyContent: "center"
10
+ },
11
+ horizontal: {
22
12
  marginLeft: 0,
23
13
  width: "auto"
24
- }
25
- }, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2h2LXVpa2l0LXJlYWN0L2h2LXVpa2l0LXJlYWN0L3BhY2thZ2VzL2NvcmUvc3JjL2NvbXBvbmVudHMvRG90UGFnaW5hdGlvbi9Eb3RQYWdpbmF0aW9uLnN0eWxlcy50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBV2dDIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL2h2LXVpa2l0LXJlYWN0L2h2LXVpa2l0LXJlYWN0L3BhY2thZ2VzL2NvcmUvc3JjL2NvbXBvbmVudHMvRG90UGFnaW5hdGlvbi9Eb3RQYWdpbmF0aW9uLnN0eWxlcy50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWRcIjtcbmltcG9ydCB7XG4gIEh2UmFkaW8sXG4gIEh2UmFkaW9Hcm91cCxcbiAgSHZSYWRpb0dyb3VwUHJvcHMsXG4gIEh2UmFkaW9Qcm9wcyxcbn0gZnJvbSBcIkBjb3JlL2NvbXBvbmVudHNcIjtcbmltcG9ydCB7IHRoZW1lIH0gZnJvbSBcIkBoaXRhY2hpdmFudGFyYS91aWtpdC1zdHlsZXNcIjtcbmltcG9ydCB7IEN1cnJlbnRTdGVwLCBPdGhlclN0ZXAgfSBmcm9tIFwiQGhpdGFjaGl2YW50YXJhL3Vpa2l0LXJlYWN0LWljb25zXCI7XG5pbXBvcnQgZG90UGFnaW5hdGlvbkNsYXNzZXMgZnJvbSBcIi4vZG90UGFnaW5hdGlvbkNsYXNzZXNcIjtcblxuZXhwb3J0IGNvbnN0IFN0eWxlZFJhZGlvR3JvdXAgPSBzdHlsZWQoKHByb3BzOiBIdlJhZGlvR3JvdXBQcm9wcykgPT4gKFxuICA8SHZSYWRpb0dyb3VwIHsuLi5wcm9wc30gLz5cbikpKHtcbiAgZGlzcGxheTogXCJmbGV4XCIsXG4gIGp1c3RpZnlDb250ZW50OiBcImNlbnRlclwiLFxuXG4gIFtgJiAuJHtkb3RQYWdpbmF0aW9uQ2xhc3Nlcy5ob3Jpem9udGFsfWBdOiB7XG4gICAgbWFyZ2luTGVmdDogMCxcbiAgICB3aWR0aDogXCJhdXRvXCIsXG4gIH0sXG59KTtcblxuZXhwb3J0IGNvbnN0IFN0eWxlZFJhZGlvID0gc3R5bGVkKChwcm9wczogSHZSYWRpb1Byb3BzKSA9PiAoXG4gIDxIdlJhZGlvIHsuLi5wcm9wc30gLz5cbikpKHtcbiAgW2AmLiR7ZG90UGFnaW5hdGlvbkNsYXNzZXMucmFkaW9Sb290fWBdOiB7XG4gICAgbWFyZ2luTGVmdDogXCI4cHhcIixcbiAgfSxcblxuICBbYCYgLiR7ZG90UGFnaW5hdGlvbkNsYXNzZXMucmFkaW99YF06IHtcbiAgICBoZWlnaHQ6IFwiMTZweFwiLFxuXG4gICAgXCImOmhvdmVyXCI6IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUuY29sb3JzLm5ldXRyYWxfMjAsXG4gICAgICBib3JkZXJSYWRpdXM6IFwiMTAwJVwiLFxuICAgIH0sXG4gIH0sXG59KTtcblxuZXhwb3J0IGNvbnN0IFN0eWxlZE90aGVyU3RlcCA9IHN0eWxlZChPdGhlclN0ZXApKHtcbiAgd2lkdGg6IFwiMTZweFwiLFxuICBoZWlnaHQ6IFwiMTZweFwiLFxufSk7XG5cbmV4cG9ydCBjb25zdCBTdHlsZWRDdXJyZW50U3RlcCA9IHN0eWxlZChDdXJyZW50U3RlcCkoe1xuICB3aWR0aDogXCIxNnB4XCIsXG4gIGhlaWdodDogXCIxNnB4XCIsXG59KTtcbiJdfQ== */");
26
- const StyledRadio = /* @__PURE__ */ _styled((props) => /* @__PURE__ */ jsx(HvRadio, {
27
- ...props
28
- }), process.env.NODE_ENV === "production" ? {
29
- target: "e1buriah2"
30
- } : {
31
- target: "e1buriah2",
32
- label: "StyledRadio"
33
- })({
34
- [`&.${dotPaginationClasses.radioRoot}`]: {
35
- marginLeft: "8px"
36
14
  },
37
- [`& .${dotPaginationClasses.radio}`]: {
15
+ radioRoot: {
16
+ marginLeft: theme.space.xs
17
+ },
18
+ radio: {
38
19
  height: "16px",
39
20
  "&:hover": {
40
21
  backgroundColor: theme.colors.neutral_20,
41
22
  borderRadius: "100%"
42
23
  }
24
+ },
25
+ icon: {
26
+ width: "16px",
27
+ height: "16px"
43
28
  }
44
- }, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2h2LXVpa2l0LXJlYWN0L2h2LXVpa2l0LXJlYWN0L3BhY2thZ2VzL2NvcmUvc3JjL2NvbXBvbmVudHMvRG90UGFnaW5hdGlvbi9Eb3RQYWdpbmF0aW9uLnN0eWxlcy50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBdUIyQiIsImZpbGUiOiIvaG9tZS9ydW5uZXIvd29yay9odi11aWtpdC1yZWFjdC9odi11aWtpdC1yZWFjdC9wYWNrYWdlcy9jb3JlL3NyYy9jb21wb25lbnRzL0RvdFBhZ2luYXRpb24vRG90UGFnaW5hdGlvbi5zdHlsZXMudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5pbXBvcnQge1xuICBIdlJhZGlvLFxuICBIdlJhZGlvR3JvdXAsXG4gIEh2UmFkaW9Hcm91cFByb3BzLFxuICBIdlJhZGlvUHJvcHMsXG59IGZyb20gXCJAY29yZS9jb21wb25lbnRzXCI7XG5pbXBvcnQgeyB0aGVtZSB9IGZyb20gXCJAaGl0YWNoaXZhbnRhcmEvdWlraXQtc3R5bGVzXCI7XG5pbXBvcnQgeyBDdXJyZW50U3RlcCwgT3RoZXJTdGVwIH0gZnJvbSBcIkBoaXRhY2hpdmFudGFyYS91aWtpdC1yZWFjdC1pY29uc1wiO1xuaW1wb3J0IGRvdFBhZ2luYXRpb25DbGFzc2VzIGZyb20gXCIuL2RvdFBhZ2luYXRpb25DbGFzc2VzXCI7XG5cbmV4cG9ydCBjb25zdCBTdHlsZWRSYWRpb0dyb3VwID0gc3R5bGVkKChwcm9wczogSHZSYWRpb0dyb3VwUHJvcHMpID0+IChcbiAgPEh2UmFkaW9Hcm91cCB7Li4ucHJvcHN9IC8+XG4pKSh7XG4gIGRpc3BsYXk6IFwiZmxleFwiLFxuICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcblxuICBbYCYgLiR7ZG90UGFnaW5hdGlvbkNsYXNzZXMuaG9yaXpvbnRhbH1gXToge1xuICAgIG1hcmdpbkxlZnQ6IDAsXG4gICAgd2lkdGg6IFwiYXV0b1wiLFxuICB9LFxufSk7XG5cbmV4cG9ydCBjb25zdCBTdHlsZWRSYWRpbyA9IHN0eWxlZCgocHJvcHM6IEh2UmFkaW9Qcm9wcykgPT4gKFxuICA8SHZSYWRpbyB7Li4ucHJvcHN9IC8+XG4pKSh7XG4gIFtgJi4ke2RvdFBhZ2luYXRpb25DbGFzc2VzLnJhZGlvUm9vdH1gXToge1xuICAgIG1hcmdpbkxlZnQ6IFwiOHB4XCIsXG4gIH0sXG5cbiAgW2AmIC4ke2RvdFBhZ2luYXRpb25DbGFzc2VzLnJhZGlvfWBdOiB7XG4gICAgaGVpZ2h0OiBcIjE2cHhcIixcblxuICAgIFwiJjpob3ZlclwiOiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLmNvbG9ycy5uZXV0cmFsXzIwLFxuICAgICAgYm9yZGVyUmFkaXVzOiBcIjEwMCVcIixcbiAgICB9LFxuICB9LFxufSk7XG5cbmV4cG9ydCBjb25zdCBTdHlsZWRPdGhlclN0ZXAgPSBzdHlsZWQoT3RoZXJTdGVwKSh7XG4gIHdpZHRoOiBcIjE2cHhcIixcbiAgaGVpZ2h0OiBcIjE2cHhcIixcbn0pO1xuXG5leHBvcnQgY29uc3QgU3R5bGVkQ3VycmVudFN0ZXAgPSBzdHlsZWQoQ3VycmVudFN0ZXApKHtcbiAgd2lkdGg6IFwiMTZweFwiLFxuICBoZWlnaHQ6IFwiMTZweFwiLFxufSk7XG4iXX0= */");
45
- const StyledOtherStep = /* @__PURE__ */ _styled(OtherStep, process.env.NODE_ENV === "production" ? {
46
- target: "e1buriah1"
47
- } : {
48
- target: "e1buriah1",
49
- label: "StyledOtherStep"
50
- })(process.env.NODE_ENV === "production" ? {
51
- name: "157xhr7",
52
- styles: "width:16px;height:16px"
53
- } : {
54
- name: "157xhr7",
55
- styles: "width:16px;height:16px",
56
- map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2h2LXVpa2l0LXJlYWN0L2h2LXVpa2l0LXJlYWN0L3BhY2thZ2VzL2NvcmUvc3JjL2NvbXBvbmVudHMvRG90UGFnaW5hdGlvbi9Eb3RQYWdpbmF0aW9uLnN0eWxlcy50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBd0MrQiIsImZpbGUiOiIvaG9tZS9ydW5uZXIvd29yay9odi11aWtpdC1yZWFjdC9odi11aWtpdC1yZWFjdC9wYWNrYWdlcy9jb3JlL3NyYy9jb21wb25lbnRzL0RvdFBhZ2luYXRpb24vRG90UGFnaW5hdGlvbi5zdHlsZXMudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5pbXBvcnQge1xuICBIdlJhZGlvLFxuICBIdlJhZGlvR3JvdXAsXG4gIEh2UmFkaW9Hcm91cFByb3BzLFxuICBIdlJhZGlvUHJvcHMsXG59IGZyb20gXCJAY29yZS9jb21wb25lbnRzXCI7XG5pbXBvcnQgeyB0aGVtZSB9IGZyb20gXCJAaGl0YWNoaXZhbnRhcmEvdWlraXQtc3R5bGVzXCI7XG5pbXBvcnQgeyBDdXJyZW50U3RlcCwgT3RoZXJTdGVwIH0gZnJvbSBcIkBoaXRhY2hpdmFudGFyYS91aWtpdC1yZWFjdC1pY29uc1wiO1xuaW1wb3J0IGRvdFBhZ2luYXRpb25DbGFzc2VzIGZyb20gXCIuL2RvdFBhZ2luYXRpb25DbGFzc2VzXCI7XG5cbmV4cG9ydCBjb25zdCBTdHlsZWRSYWRpb0dyb3VwID0gc3R5bGVkKChwcm9wczogSHZSYWRpb0dyb3VwUHJvcHMpID0+IChcbiAgPEh2UmFkaW9Hcm91cCB7Li4ucHJvcHN9IC8+XG4pKSh7XG4gIGRpc3BsYXk6IFwiZmxleFwiLFxuICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcblxuICBbYCYgLiR7ZG90UGFnaW5hdGlvbkNsYXNzZXMuaG9yaXpvbnRhbH1gXToge1xuICAgIG1hcmdpbkxlZnQ6IDAsXG4gICAgd2lkdGg6IFwiYXV0b1wiLFxuICB9LFxufSk7XG5cbmV4cG9ydCBjb25zdCBTdHlsZWRSYWRpbyA9IHN0eWxlZCgocHJvcHM6IEh2UmFkaW9Qcm9wcykgPT4gKFxuICA8SHZSYWRpbyB7Li4ucHJvcHN9IC8+XG4pKSh7XG4gIFtgJi4ke2RvdFBhZ2luYXRpb25DbGFzc2VzLnJhZGlvUm9vdH1gXToge1xuICAgIG1hcmdpbkxlZnQ6IFwiOHB4XCIsXG4gIH0sXG5cbiAgW2AmIC4ke2RvdFBhZ2luYXRpb25DbGFzc2VzLnJhZGlvfWBdOiB7XG4gICAgaGVpZ2h0OiBcIjE2cHhcIixcblxuICAgIFwiJjpob3ZlclwiOiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLmNvbG9ycy5uZXV0cmFsXzIwLFxuICAgICAgYm9yZGVyUmFkaXVzOiBcIjEwMCVcIixcbiAgICB9LFxuICB9LFxufSk7XG5cbmV4cG9ydCBjb25zdCBTdHlsZWRPdGhlclN0ZXAgPSBzdHlsZWQoT3RoZXJTdGVwKSh7XG4gIHdpZHRoOiBcIjE2cHhcIixcbiAgaGVpZ2h0OiBcIjE2cHhcIixcbn0pO1xuXG5leHBvcnQgY29uc3QgU3R5bGVkQ3VycmVudFN0ZXAgPSBzdHlsZWQoQ3VycmVudFN0ZXApKHtcbiAgd2lkdGg6IFwiMTZweFwiLFxuICBoZWlnaHQ6IFwiMTZweFwiLFxufSk7XG4iXX0= */",
57
- toString: _EMOTION_STRINGIFIED_CSS_ERROR__
58
- });
59
- const StyledCurrentStep = /* @__PURE__ */ _styled(CurrentStep, process.env.NODE_ENV === "production" ? {
60
- target: "e1buriah0"
61
- } : {
62
- target: "e1buriah0",
63
- label: "StyledCurrentStep"
64
- })(process.env.NODE_ENV === "production" ? {
65
- name: "157xhr7",
66
- styles: "width:16px;height:16px"
67
- } : {
68
- name: "157xhr7",
69
- styles: "width:16px;height:16px",
70
- map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2h2LXVpa2l0LXJlYWN0L2h2LXVpa2l0LXJlYWN0L3BhY2thZ2VzL2NvcmUvc3JjL2NvbXBvbmVudHMvRG90UGFnaW5hdGlvbi9Eb3RQYWdpbmF0aW9uLnN0eWxlcy50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBNkNpQyIsImZpbGUiOiIvaG9tZS9ydW5uZXIvd29yay9odi11aWtpdC1yZWFjdC9odi11aWtpdC1yZWFjdC9wYWNrYWdlcy9jb3JlL3NyYy9jb21wb25lbnRzL0RvdFBhZ2luYXRpb24vRG90UGFnaW5hdGlvbi5zdHlsZXMudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5pbXBvcnQge1xuICBIdlJhZGlvLFxuICBIdlJhZGlvR3JvdXAsXG4gIEh2UmFkaW9Hcm91cFByb3BzLFxuICBIdlJhZGlvUHJvcHMsXG59IGZyb20gXCJAY29yZS9jb21wb25lbnRzXCI7XG5pbXBvcnQgeyB0aGVtZSB9IGZyb20gXCJAaGl0YWNoaXZhbnRhcmEvdWlraXQtc3R5bGVzXCI7XG5pbXBvcnQgeyBDdXJyZW50U3RlcCwgT3RoZXJTdGVwIH0gZnJvbSBcIkBoaXRhY2hpdmFudGFyYS91aWtpdC1yZWFjdC1pY29uc1wiO1xuaW1wb3J0IGRvdFBhZ2luYXRpb25DbGFzc2VzIGZyb20gXCIuL2RvdFBhZ2luYXRpb25DbGFzc2VzXCI7XG5cbmV4cG9ydCBjb25zdCBTdHlsZWRSYWRpb0dyb3VwID0gc3R5bGVkKChwcm9wczogSHZSYWRpb0dyb3VwUHJvcHMpID0+IChcbiAgPEh2UmFkaW9Hcm91cCB7Li4ucHJvcHN9IC8+XG4pKSh7XG4gIGRpc3BsYXk6IFwiZmxleFwiLFxuICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcblxuICBbYCYgLiR7ZG90UGFnaW5hdGlvbkNsYXNzZXMuaG9yaXpvbnRhbH1gXToge1xuICAgIG1hcmdpbkxlZnQ6IDAsXG4gICAgd2lkdGg6IFwiYXV0b1wiLFxuICB9LFxufSk7XG5cbmV4cG9ydCBjb25zdCBTdHlsZWRSYWRpbyA9IHN0eWxlZCgocHJvcHM6IEh2UmFkaW9Qcm9wcykgPT4gKFxuICA8SHZSYWRpbyB7Li4ucHJvcHN9IC8+XG4pKSh7XG4gIFtgJi4ke2RvdFBhZ2luYXRpb25DbGFzc2VzLnJhZGlvUm9vdH1gXToge1xuICAgIG1hcmdpbkxlZnQ6IFwiOHB4XCIsXG4gIH0sXG5cbiAgW2AmIC4ke2RvdFBhZ2luYXRpb25DbGFzc2VzLnJhZGlvfWBdOiB7XG4gICAgaGVpZ2h0OiBcIjE2cHhcIixcblxuICAgIFwiJjpob3ZlclwiOiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLmNvbG9ycy5uZXV0cmFsXzIwLFxuICAgICAgYm9yZGVyUmFkaXVzOiBcIjEwMCVcIixcbiAgICB9LFxuICB9LFxufSk7XG5cbmV4cG9ydCBjb25zdCBTdHlsZWRPdGhlclN0ZXAgPSBzdHlsZWQoT3RoZXJTdGVwKSh7XG4gIHdpZHRoOiBcIjE2cHhcIixcbiAgaGVpZ2h0OiBcIjE2cHhcIixcbn0pO1xuXG5leHBvcnQgY29uc3QgU3R5bGVkQ3VycmVudFN0ZXAgPSBzdHlsZWQoQ3VycmVudFN0ZXApKHtcbiAgd2lkdGg6IFwiMTZweFwiLFxuICBoZWlnaHQ6IFwiMTZweFwiLFxufSk7XG4iXX0= */",
71
- toString: _EMOTION_STRINGIFIED_CSS_ERROR__
72
29
  });
73
30
  export {
74
- StyledCurrentStep,
75
- StyledOtherStep,
76
- StyledRadio,
77
- StyledRadioGroup
31
+ staticClasses,
32
+ useClasses
78
33
  };
79
34
  //# sourceMappingURL=DotPagination.styles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DotPagination.styles.js","sources":["../../../../src/components/DotPagination/DotPagination.styles.tsx"],"sourcesContent":["import styled from \"@emotion/styled\";\nimport {\n HvRadio,\n HvRadioGroup,\n HvRadioGroupProps,\n HvRadioProps,\n} from \"@core/components\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\nimport { CurrentStep, OtherStep } from \"@hitachivantara/uikit-react-icons\";\nimport dotPaginationClasses from \"./dotPaginationClasses\";\n\nexport const StyledRadioGroup = styled((props: HvRadioGroupProps) => (\n <HvRadioGroup {...props} />\n))({\n display: \"flex\",\n justifyContent: \"center\",\n\n [`& .${dotPaginationClasses.horizontal}`]: {\n marginLeft: 0,\n width: \"auto\",\n },\n});\n\nexport const StyledRadio = styled((props: HvRadioProps) => (\n <HvRadio {...props} />\n))({\n [`&.${dotPaginationClasses.radioRoot}`]: {\n marginLeft: \"8px\",\n },\n\n [`& .${dotPaginationClasses.radio}`]: {\n height: \"16px\",\n\n \"&:hover\": {\n backgroundColor: theme.colors.neutral_20,\n borderRadius: \"100%\",\n },\n },\n});\n\nexport const StyledOtherStep = styled(OtherStep)({\n width: \"16px\",\n height: \"16px\",\n});\n\nexport const StyledCurrentStep = styled(CurrentStep)({\n width: \"16px\",\n height: \"16px\",\n});\n"],"names":["StyledRadioGroup","_styled","props","HvRadioGroup","process","env","NODE_ENV","target","label","display","justifyContent","dotPaginationClasses","horizontal","marginLeft","width","StyledRadio","HvRadio","radioRoot","radio","height","backgroundColor","theme","colors","neutral_20","borderRadius","StyledOtherStep","OtherStep","name","styles","map","toString","_EMOTION_STRINGIFIED_CSS_ERROR__","StyledCurrentStep","CurrentStep"],"mappings":";;;;;;;;;;AAWO,MAAMA,mBAAmBC,wBAAO,CAACC,8BACrCC,cAAY;AAAA,EAAA,GAAKD;AAAK,CAAG,GAC3BE,QAAAC,IAAAC,aAAA,eAAA;AAAA,EAAAC,QAAA;AAAA,IAAA;AAAA,EAAAA,QAAA;AAAA,EAAAC,OAAA;AAAA,CAAA,EAAE;AAAA,EACDC,SAAS;AAAA,EACTC,gBAAgB;AAAA,EAEhB,CAAE,MAAKC,qBAAqBC,YAAY,GAAG;AAAA,IACzCC,YAAY;AAAA,IACZC,OAAO;AAAA,EACT;AACF,GAACV,QAAAC,IAAAC,aAAC,eAAA,KAAA,yhEAAA;AAEK,MAAMS,cAAcd,wBAAO,CAACC,8BAChCc,SAAO;AAAA,EAAA,GAAKd;AAAK,CAAG,GACtBE,QAAAC,IAAAC,aAAA,eAAA;AAAA,EAAAC,QAAA;AAAA,IAAA;AAAA,EAAAA,QAAA;AAAA,EAAAC,OAAA;AAAA,CAAA,EAAE;AAAA,EACD,CAAE,KAAIG,qBAAqBM,WAAW,GAAG;AAAA,IACvCJ,YAAY;AAAA,EACd;AAAA,EAEA,CAAE,MAAKF,qBAAqBO,OAAO,GAAG;AAAA,IACpCC,QAAQ;AAAA,IAER,WAAW;AAAA,MACTC,iBAAiBC,MAAMC,OAAOC;AAAAA,MAC9BC,cAAc;AAAA,IAChB;AAAA,EACF;AACF,GAACpB,QAAAC,IAAAC,aAAC,eAAA,KAAA,yhEAAA;AAEK,MAAMmB,kBAAyBC,wBAAAA,WAAStB,QAAAC,IAAAC,aAAA,eAAA;AAAA,EAAAC,QAAA;AAAA,IAAA;AAAA,EAAAA,QAAA;AAAA,EAAAC,OAAA;AAAA,CAAA,EAACJ,QAAAC,IAAAC,aAAA,eAAA;AAAA,EAAAqB,MAAA;AAAA,EAAAC,QAAA;AAAA,IAAA;AAAA,EAAAD,MAAA;AAAA,EAAAC,QAAA;AAAA,EAAAC,KAAA;AAAA,EAAAC,UAAAC;AAAA,CAG/C;AAEM,MAAMC,oBAA2BC,wBAAAA,aAAW7B,QAAAC,IAAAC,aAAA,eAAA;AAAA,EAAAC,QAAA;AAAA,IAAA;AAAA,EAAAA,QAAA;AAAA,EAAAC,OAAA;AAAA,CAAA,EAACJ,QAAAC,IAAAC,aAAA,eAAA;AAAA,EAAAqB,MAAA;AAAA,EAAAC,QAAA;AAAA,IAAA;AAAA,EAAAD,MAAA;AAAA,EAAAC,QAAA;AAAA,EAAAC,KAAA;AAAA,EAAAC,UAAAC;AAAA,CAGnD;"}
1
+ {"version":3,"file":"DotPagination.styles.js","sources":["../../../../src/components/DotPagination/DotPagination.styles.tsx"],"sourcesContent":["import { createClasses } from \"@core/utils\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nexport const { useClasses, staticClasses } = createClasses(\"HvDotPagination\", {\n root: {\n display: \"flex\",\n justifyContent: \"center\",\n },\n\n horizontal: {\n marginLeft: 0,\n width: \"auto\",\n },\n\n radioRoot: {\n marginLeft: theme.space.xs,\n },\n\n radio: {\n height: \"16px\",\n\n \"&:hover\": {\n backgroundColor: theme.colors.neutral_20,\n borderRadius: \"100%\",\n },\n },\n\n icon: {\n width: \"16px\",\n height: \"16px\",\n },\n});\n"],"names":["useClasses","staticClasses","createClasses","root","display","justifyContent","horizontal","marginLeft","width","radioRoot","theme","space","xs","radio","height","backgroundColor","colors","neutral_20","borderRadius","icon"],"mappings":";;AAGa,MAAA;AAAA,EAAEA;AAAAA,EAAYC;AAAc,IAAIC,cAAc,mBAAmB;AAAA,EAC5EC,MAAM;AAAA,IACJC,SAAS;AAAA,IACTC,gBAAgB;AAAA,EAClB;AAAA,EAEAC,YAAY;AAAA,IACVC,YAAY;AAAA,IACZC,OAAO;AAAA,EACT;AAAA,EAEAC,WAAW;AAAA,IACTF,YAAYG,MAAMC,MAAMC;AAAAA,EAC1B;AAAA,EAEAC,OAAO;AAAA,IACLC,QAAQ;AAAA,IAER,WAAW;AAAA,MACTC,iBAAiBL,MAAMM,OAAOC;AAAAA,MAC9BC,cAAc;AAAA,IAChB;AAAA,EACF;AAAA,EAEAC,MAAM;AAAA,IACJX,OAAO;AAAA,IACPM,QAAQ;AAAA,EACV;AACF,CAAC;"}
@@ -23,6 +23,7 @@ const {
23
23
  icon: {
24
24
  position: "relative",
25
25
  width: 32,
26
+ height: 32,
26
27
  boxSizing: "border-box",
27
28
  padding: 0,
28
29
  borderRadius: theme.dropDownMenu.borderRadius,
@@ -1 +1 @@
1
- {"version":3,"file":"DropDownMenu.styles.js","sources":["../../../../src/components/DropDownMenu/DropDownMenu.styles.tsx"],"sourcesContent":["import { theme } from \"@hitachivantara/uikit-styles\";\nimport { createClasses, outlineStyles } from \"@core/utils\";\n\nexport const { staticClasses, useClasses } = createClasses(\"HvDropDownMenu\", {\n /** Styles applied to the container. */\n container: {\n width: 32,\n },\n /** Styles applied to the BaseDropdown container. */\n baseContainer: {},\n /** Styles applied to the root. */\n root: {\n display: \"inline-block\",\n width: \"auto\",\n \"&.focus-visible $icon\": {\n ...outlineStyles,\n },\n },\n /** Styles applied to the icon. */\n icon: {\n position: \"relative\",\n width: 32,\n boxSizing: \"border-box\",\n padding: 0,\n borderRadius: theme.dropDownMenu.borderRadius,\n border: theme.dropDownMenu.borderClosed,\n },\n /** Styles applied to the icon when selected. */\n iconSelected: {\n backgroundColor: theme.colors.atmo1,\n boxShadow: theme.colors.shadow,\n\n \"&:hover\": {\n backgroundColor: theme.colors.atmo1,\n },\n\n \"& svg .color0\": {\n fill: theme.colors.secondary,\n },\n\n borderRadius: `${theme.radii.base} ${theme.radii.base} 0px 0px`,\n border: theme.dropDownMenu.borderOpened,\n },\n /** Styles applied to the list root. */\n menuListRoot: {},\n /** Styles applied to the list. */\n menuList: {},\n});\n"],"names":["staticClasses","useClasses","createClasses","container","width","baseContainer","root","display","outlineStyles","icon","position","boxSizing","padding","borderRadius","theme","dropDownMenu","border","borderClosed","iconSelected","backgroundColor","colors","atmo1","boxShadow","shadow","fill","secondary","radii","base","borderOpened","menuListRoot","menuList"],"mappings":";;;AAGa,MAAA;AAAA,EAAEA;AAAAA,EAAeC;AAAW,IAAIC,cAAc,kBAAkB;AAAA;AAAA,EAE3EC,WAAW;AAAA,IACTC,OAAO;AAAA,EACT;AAAA;AAAA,EAEAC,eAAe,CAAC;AAAA;AAAA,EAEhBC,MAAM;AAAA,IACJC,SAAS;AAAA,IACTH,OAAO;AAAA,IACP,yBAAyB;AAAA,MACvB,GAAGI;AAAAA,IACL;AAAA,EACF;AAAA;AAAA,EAEAC,MAAM;AAAA,IACJC,UAAU;AAAA,IACVN,OAAO;AAAA,IACPO,WAAW;AAAA,IACXC,SAAS;AAAA,IACTC,cAAcC,MAAMC,aAAaF;AAAAA,IACjCG,QAAQF,MAAMC,aAAaE;AAAAA,EAC7B;AAAA;AAAA,EAEAC,cAAc;AAAA,IACZC,iBAAiBL,MAAMM,OAAOC;AAAAA,IAC9BC,WAAWR,MAAMM,OAAOG;AAAAA,IAExB,WAAW;AAAA,MACTJ,iBAAiBL,MAAMM,OAAOC;AAAAA,IAChC;AAAA,IAEA,iBAAiB;AAAA,MACfG,MAAMV,MAAMM,OAAOK;AAAAA,IACrB;AAAA,IAEAZ,cAAe,GAAEC,MAAMY,MAAMC,QAAQb,MAAMY,MAAMC;AAAAA,IACjDX,QAAQF,MAAMC,aAAaa;AAAAA,EAC7B;AAAA;AAAA,EAEAC,cAAc,CAAC;AAAA;AAAA,EAEfC,UAAU,CAAC;AACb,CAAC;"}
1
+ {"version":3,"file":"DropDownMenu.styles.js","sources":["../../../../src/components/DropDownMenu/DropDownMenu.styles.tsx"],"sourcesContent":["import { theme } from \"@hitachivantara/uikit-styles\";\nimport { createClasses, outlineStyles } from \"@core/utils\";\n\nexport const { staticClasses, useClasses } = createClasses(\"HvDropDownMenu\", {\n /** Styles applied to the container. */\n container: {\n width: 32,\n },\n /** Styles applied to the BaseDropdown container. */\n baseContainer: {},\n /** Styles applied to the root. */\n root: {\n display: \"inline-block\",\n width: \"auto\",\n \"&.focus-visible $icon\": {\n ...outlineStyles,\n },\n },\n /** Styles applied to the icon. */\n icon: {\n position: \"relative\",\n width: 32,\n height: 32,\n boxSizing: \"border-box\",\n padding: 0,\n borderRadius: theme.dropDownMenu.borderRadius,\n border: theme.dropDownMenu.borderClosed,\n },\n /** Styles applied to the icon when selected. */\n iconSelected: {\n backgroundColor: theme.colors.atmo1,\n boxShadow: theme.colors.shadow,\n\n \"&:hover\": {\n backgroundColor: theme.colors.atmo1,\n },\n\n \"& svg .color0\": {\n fill: theme.colors.secondary,\n },\n\n borderRadius: `${theme.radii.base} ${theme.radii.base} 0px 0px`,\n border: theme.dropDownMenu.borderOpened,\n },\n /** Styles applied to the list root. */\n menuListRoot: {},\n /** Styles applied to the list. */\n menuList: {},\n});\n"],"names":["staticClasses","useClasses","createClasses","container","width","baseContainer","root","display","outlineStyles","icon","position","height","boxSizing","padding","borderRadius","theme","dropDownMenu","border","borderClosed","iconSelected","backgroundColor","colors","atmo1","boxShadow","shadow","fill","secondary","radii","base","borderOpened","menuListRoot","menuList"],"mappings":";;;AAGa,MAAA;AAAA,EAAEA;AAAAA,EAAeC;AAAW,IAAIC,cAAc,kBAAkB;AAAA;AAAA,EAE3EC,WAAW;AAAA,IACTC,OAAO;AAAA,EACT;AAAA;AAAA,EAEAC,eAAe,CAAC;AAAA;AAAA,EAEhBC,MAAM;AAAA,IACJC,SAAS;AAAA,IACTH,OAAO;AAAA,IACP,yBAAyB;AAAA,MACvB,GAAGI;AAAAA,IACL;AAAA,EACF;AAAA;AAAA,EAEAC,MAAM;AAAA,IACJC,UAAU;AAAA,IACVN,OAAO;AAAA,IACPO,QAAQ;AAAA,IACRC,WAAW;AAAA,IACXC,SAAS;AAAA,IACTC,cAAcC,MAAMC,aAAaF;AAAAA,IACjCG,QAAQF,MAAMC,aAAaE;AAAAA,EAC7B;AAAA;AAAA,EAEAC,cAAc;AAAA,IACZC,iBAAiBL,MAAMM,OAAOC;AAAAA,IAC9BC,WAAWR,MAAMM,OAAOG;AAAAA,IAExB,WAAW;AAAA,MACTJ,iBAAiBL,MAAMM,OAAOC;AAAAA,IAChC;AAAA,IAEA,iBAAiB;AAAA,MACfG,MAAMV,MAAMM,OAAOK;AAAAA,IACrB;AAAA,IAEAZ,cAAe,GAAEC,MAAMY,MAAMC,QAAQb,MAAMY,MAAMC;AAAAA,IACjDX,QAAQF,MAAMC,aAAaa;AAAAA,EAC7B;AAAA;AAAA,EAEAC,cAAc,CAAC;AAAA;AAAA,EAEfC,UAAU,CAAC;AACb,CAAC;"}
@@ -66,7 +66,7 @@ const HvDropdownList = ({
66
66
  if (notifyChangesOnFirstRender) {
67
67
  onChange == null ? void 0 : onChange(values, false, false, true);
68
68
  }
69
- }, [values]);
69
+ }, [values, notifyChangesOnFirstRender, onChange]);
70
70
  const handleSearch = (str) => {
71
71
  const results = list ? list.filter(({
72
72
  searchValue,
@@ -1 +1 @@
1
- {"version":3,"file":"List.js","sources":["../../../../../src/components/Dropdown/List/List.tsx"],"sourcesContent":["import { useContext, useEffect, useState } from \"react\";\nimport { clsx } from \"clsx\";\nimport isNil from \"lodash/isNil\";\nimport { setId } from \"@core/utils\";\nimport {\n HvActionBar,\n HvButton,\n HvCheckBox,\n HvInput,\n HvListValue,\n HvTypography,\n} from \"@core/components\";\nimport BaseDropdownContext from \"../../BaseDropdown/BaseDropdownContext\";\nimport {\n StyledList,\n StyledListContainer,\n StyledRootList,\n StyledSearchContainer,\n} from \"./List.styles\";\nimport { getSelected } from \"../utils\";\nimport { HvDropdownLabelsProps } from \"../Dropdown\";\nimport dropdownListClasses, { HvDropdownListClasses } from \"./listClasses\";\n\nexport interface HvDropdownListProps {\n /**\n * Id to be applied to the root node.\n */\n id?: string;\n /**\n * A Jss Object used to override or extend the component styles.\n */\n classes?: HvDropdownListClasses;\n /**\n * The list to be rendered.\n */\n values?: HvListValue[];\n /**\n * If true renders a multi select list.\n */\n multiSelect?: boolean;\n /**\n * If true renders the search component.\n */\n showSearch?: boolean;\n /**\n * A function to be executed whenever a item is selected in the list\n * or the Apply button is activated (when `multiSelect` is `true`).\n */\n onChange: any;\n /**\n * A function to be executed whenever the Cancel button is activated.\n */\n onCancel: any;\n /**\n * An object containing all the labels for the dropdown.\n */\n labels?: HvDropdownLabelsProps;\n /**\n * If 'true' the dropdown will notify on the first render.\n */\n notifyChangesOnFirstRender?: boolean;\n /**\n * If `true` the dropdown will show tooltips when user mouseenter text in list\n */\n hasTooltips?: boolean;\n /**\n * If `true`, selection can be toggled when single selection.\n */\n singleSelectionToggle?: boolean;\n /**\n * Experimental. Height of the dropdown, in case you want to control it from a prop. Styles can also be used through dropdownListContainer class. Required in case virtualized is used\n */\n height?: number;\n /**\n * Experimental. Max height of the dropdown, in case you want to control it from a prop. Styles can also be used through dropdownListContainer class.\n */\n maxHeight?: number;\n /**\n * Experimental. Uses dropdown in a virtualized form, where not all options are rendered initially. Good for use cases with a lot of options.\n */\n virtualized?: boolean;\n}\n\n/**\n * The values property was being deeply cloned. That created a significant performance\n * hit when the values contained complex properties' values, like React Nodes.\n *\n * For minimizing the impact of removing the clone, a shallow clone of the array and its\n * objects is performed instead. That should have the same effect in the majority of the\n * cases, where the properties' values are primitive.\n */\nconst clone = (values: HvListValue[]) => values.map((value) => ({ ...value }));\n\n/**\n * Set all hidden's to false.\n */\nconst cleanHidden = (lst: HvListValue[]) =>\n lst.map((item) => ({ ...item, isHidden: false }));\n\nconst valuesExist = (values) => !isNil(values) && values?.length > 0;\n\nexport const HvDropdownList = ({\n id,\n classes,\n values = [],\n multiSelect = false,\n showSearch = false,\n onChange,\n onCancel,\n labels,\n notifyChangesOnFirstRender = false,\n hasTooltips = false,\n singleSelectionToggle,\n height: dropdownHeight,\n maxHeight,\n virtualized = false,\n ...others\n}: HvDropdownListProps) => {\n const [searchStr, setSearchStr] = useState<string>(\"\");\n const [list, setList] = useState<HvListValue[]>(clone(values));\n const [allSelected, setAllSelected] = useState<boolean>(false);\n const [anySelected, setAnySelected] = useState<boolean>(false);\n const { width, height } = useContext(BaseDropdownContext);\n\n const newLabels = {\n selectAll: labels?.selectAll,\n selectionConjunction: labels?.multiSelectionConjunction,\n };\n\n /**\n * Update states associated with select all.\n */\n const updateSelectAll = (listValues: HvListValue[]) => {\n if (!listValues) return;\n const nbrSelected = getSelected(listValues).length;\n const hasSelection = nbrSelected > 0;\n const allSelect = nbrSelected === listValues.length;\n\n setAnySelected(hasSelection);\n setAllSelected(hasSelection && allSelect);\n };\n\n /**\n * After the first render, call onChange if notifyChangesOnFirstRender.\n */\n useEffect(() => {\n if (!valuesExist(values)) return;\n setList(clone(values));\n updateSelectAll(values);\n if (notifyChangesOnFirstRender) {\n onChange?.(values, false, false, true);\n }\n }, [values]);\n\n /**\n * Sets the filtered values to the state.\n *\n * @param {String} str - The value that is being looked.\n */\n const handleSearch = (str: string) => {\n const results = list\n ? list.filter(\n ({\n searchValue,\n label,\n value,\n }: {\n searchValue?: any;\n label?: any;\n value?: any;\n }) => {\n let stringValue = \"\";\n if (\n typeof searchValue === \"string\" ||\n searchValue instanceof String\n ) {\n stringValue = searchValue.toLowerCase();\n } else if (typeof label === \"string\" || label instanceof String) {\n stringValue = label.toLowerCase();\n } else if (typeof value === \"string\" || value instanceof String) {\n stringValue = value.toLowerCase();\n }\n\n return stringValue.indexOf(str.toLowerCase()) >= 0;\n }\n )\n : null;\n\n if (!isNil(results)) {\n const newList = list.map((elem) => {\n const isResult = results.find((result) => result.label === elem.label);\n return { ...elem, isHidden: !isResult };\n });\n\n setList(newList);\n setSearchStr(str);\n }\n return str;\n };\n\n /**\n * Create search element.\n *\n * @returns {*}\n */\n const renderSearch = () => (\n <StyledSearchContainer\n className={clsx(\n dropdownListClasses.searchContainer,\n classes?.searchContainer\n )}\n >\n <HvInput\n id={setId(id, \"search\")}\n type=\"search\"\n value={searchStr}\n placeholder={labels?.searchPlaceholder}\n onChange={(event, str) => handleSearch(str)}\n />\n </StyledSearchContainer>\n );\n\n /**\n * Select all the values inside the dropdown.\n *\n */\n const handleSelectAll = () => {\n const newList = list.map((elem) => ({ ...elem, selected: !anySelected }));\n setList(newList);\n updateSelectAll(newList);\n };\n\n /**\n * Create selecteAll component.\n *\n * @returns {*}\n */\n const renderSelectAll = () => {\n const selectAll = labels?.selectAll;\n const multiSelectionConjunction = labels?.multiSelectionConjunction;\n const nbrSelected = getSelected(list).length;\n\n const defaultLabel = (\n <HvTypography component=\"span\">\n {nbrSelected > 0 ? (\n <>\n <b>{nbrSelected}</b>\n {` ${multiSelectionConjunction} ${list.length}`}\n </>\n ) : (\n <>\n <b>{selectAll}</b>\n {` (${list.length})`}\n </>\n )}\n </HvTypography>\n );\n\n return (\n <div\n className={clsx(\n dropdownListClasses.selectAllContainer,\n classes?.selectAllContainer\n )}\n >\n <HvCheckBox\n id={setId(id, \"select-all\")}\n label={defaultLabel}\n onChange={() => handleSelectAll()}\n classes={{\n container: clsx(dropdownListClasses.selection, classes?.selection),\n }}\n className={clsx(dropdownListClasses.selectAll, classes?.selectAll)}\n indeterminate={anySelected && !allSelected}\n checked={allSelected}\n />\n </div>\n );\n };\n\n /**\n * When selecting the state list is updated with the corresponding selection.\n *\n * @param listValues - elements selected.\n */\n const onSelection = (listValues) => {\n if (!multiSelect) {\n onChange(cleanHidden(listValues), true, true, true);\n } else {\n updateSelectAll(listValues);\n setList(clone(listValues));\n }\n };\n\n /**\n * Render action buttons.\n */\n const renderActions = () => {\n const applyLabel = labels?.applyLabel;\n const cancelLabel = labels?.cancelLabel;\n return (\n <HvActionBar id={setId(id, \"actions\")}>\n <HvButton\n id={setId(id, \"actions-apply\")}\n onClick={() => onChange(cleanHidden(list), true, true, true)}\n variant=\"primaryGhost\"\n >\n {applyLabel}\n </HvButton>\n <HvButton\n id={setId(id, \"actions-cancel\")}\n onClick={onCancel}\n variant=\"primaryGhost\"\n >\n {cancelLabel}\n </HvButton>\n </HvActionBar>\n );\n };\n\n const showList = valuesExist(values);\n\n return (\n <StyledRootList\n className={clsx(dropdownListClasses.rootList, classes?.rootList)}\n >\n <div\n className={clsx(\n dropdownListClasses.listBorderDown,\n classes?.listBorderDown\n )}\n />\n <StyledListContainer\n className={clsx(\n dropdownListClasses.listContainer,\n classes?.listContainer\n )}\n >\n {showSearch && renderSearch()}\n {showList && multiSelect && renderSelectAll()}\n {showList && (\n <StyledList\n id={setId(id, \"list\")}\n classes={{\n root: clsx(\n dropdownListClasses.dropdownListContainer,\n classes?.dropdownListContainer\n ),\n }}\n $dropdownHeight={dropdownHeight}\n $maxHeight={maxHeight}\n $virtualized={virtualized}\n $height={height}\n $width={width}\n values={list}\n multiSelect={multiSelect}\n useSelector={multiSelect}\n showSelectAll={false}\n onChange={onSelection}\n labels={newLabels}\n hasTooltips={hasTooltips}\n selectable\n condensed\n singleSelectionToggle={singleSelectionToggle}\n height={dropdownHeight}\n virtualized={virtualized}\n {...others}\n />\n )}\n </StyledListContainer>\n {showList && multiSelect ? renderActions() : null}\n </StyledRootList>\n );\n};\n"],"names":["clone","values","map","value","cleanHidden","lst","item","isHidden","valuesExist","isNil","length","HvDropdownList","id","classes","multiSelect","showSearch","onChange","onCancel","labels","notifyChangesOnFirstRender","hasTooltips","singleSelectionToggle","height","dropdownHeight","maxHeight","virtualized","others","searchStr","setSearchStr","useState","list","setList","allSelected","setAllSelected","anySelected","setAnySelected","width","useContext","BaseDropdownContext","newLabels","selectAll","selectionConjunction","multiSelectionConjunction","updateSelectAll","listValues","nbrSelected","getSelected","hasSelection","allSelect","useEffect","handleSearch","str","results","filter","searchValue","label","stringValue","String","toLowerCase","indexOf","newList","elem","isResult","find","result","renderSearch","_jsx","StyledSearchContainer","className","clsx","dropdownListClasses","searchContainer","children","HvInput","setId","type","placeholder","searchPlaceholder","event","handleSelectAll","selected","renderSelectAll","defaultLabel","HvTypography","component","_jsxs","_Fragment","selectAllContainer","HvCheckBox","container","selection","indeterminate","checked","onSelection","renderActions","applyLabel","cancelLabel","HvActionBar","HvButton","onClick","variant","showList","StyledRootList","rootList","listBorderDown","StyledListContainer","listContainer","StyledList","root","dropdownListContainer","$dropdownHeight","$maxHeight","$virtualized","$height","$width","useSelector","showSelectAll","selectable","condensed"],"mappings":"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"}
1
+ {"version":3,"file":"List.js","sources":["../../../../../src/components/Dropdown/List/List.tsx"],"sourcesContent":["import { useContext, useEffect, useState } from \"react\";\nimport { clsx } from \"clsx\";\nimport isNil from \"lodash/isNil\";\nimport { setId } from \"@core/utils\";\nimport {\n HvActionBar,\n HvButton,\n HvCheckBox,\n HvInput,\n HvListValue,\n HvTypography,\n} from \"@core/components\";\nimport BaseDropdownContext from \"../../BaseDropdown/BaseDropdownContext\";\nimport {\n StyledList,\n StyledListContainer,\n StyledRootList,\n StyledSearchContainer,\n} from \"./List.styles\";\nimport { getSelected } from \"../utils\";\nimport { HvDropdownLabelsProps } from \"../Dropdown\";\nimport dropdownListClasses, { HvDropdownListClasses } from \"./listClasses\";\n\nexport interface HvDropdownListProps {\n /**\n * Id to be applied to the root node.\n */\n id?: string;\n /**\n * A Jss Object used to override or extend the component styles.\n */\n classes?: HvDropdownListClasses;\n /**\n * The list to be rendered.\n */\n values?: HvListValue[];\n /**\n * If true renders a multi select list.\n */\n multiSelect?: boolean;\n /**\n * If true renders the search component.\n */\n showSearch?: boolean;\n /**\n * A function to be executed whenever a item is selected in the list\n * or the Apply button is activated (when `multiSelect` is `true`).\n */\n onChange: any;\n /**\n * A function to be executed whenever the Cancel button is activated.\n */\n onCancel: any;\n /**\n * An object containing all the labels for the dropdown.\n */\n labels?: HvDropdownLabelsProps;\n /**\n * If 'true' the dropdown will notify on the first render.\n */\n notifyChangesOnFirstRender?: boolean;\n /**\n * If `true` the dropdown will show tooltips when user mouseenter text in list\n */\n hasTooltips?: boolean;\n /**\n * If `true`, selection can be toggled when single selection.\n */\n singleSelectionToggle?: boolean;\n /**\n * Experimental. Height of the dropdown, in case you want to control it from a prop. Styles can also be used through dropdownListContainer class. Required in case virtualized is used\n */\n height?: number;\n /**\n * Experimental. Max height of the dropdown, in case you want to control it from a prop. Styles can also be used through dropdownListContainer class.\n */\n maxHeight?: number;\n /**\n * Experimental. Uses dropdown in a virtualized form, where not all options are rendered initially. Good for use cases with a lot of options.\n */\n virtualized?: boolean;\n}\n\n/**\n * The values property was being deeply cloned. That created a significant performance\n * hit when the values contained complex properties' values, like React Nodes.\n *\n * For minimizing the impact of removing the clone, a shallow clone of the array and its\n * objects is performed instead. That should have the same effect in the majority of the\n * cases, where the properties' values are primitive.\n */\nconst clone = (values: HvListValue[]) => values.map((value) => ({ ...value }));\n\n/**\n * Set all hidden's to false.\n */\nconst cleanHidden = (lst: HvListValue[]) =>\n lst.map((item) => ({ ...item, isHidden: false }));\n\nconst valuesExist = (values) => !isNil(values) && values?.length > 0;\n\nexport const HvDropdownList = ({\n id,\n classes,\n values = [],\n multiSelect = false,\n showSearch = false,\n onChange,\n onCancel,\n labels,\n notifyChangesOnFirstRender = false,\n hasTooltips = false,\n singleSelectionToggle,\n height: dropdownHeight,\n maxHeight,\n virtualized = false,\n ...others\n}: HvDropdownListProps) => {\n const [searchStr, setSearchStr] = useState<string>(\"\");\n const [list, setList] = useState<HvListValue[]>(clone(values));\n const [allSelected, setAllSelected] = useState<boolean>(false);\n const [anySelected, setAnySelected] = useState<boolean>(false);\n const { width, height } = useContext(BaseDropdownContext);\n\n const newLabels = {\n selectAll: labels?.selectAll,\n selectionConjunction: labels?.multiSelectionConjunction,\n };\n\n /**\n * Update states associated with select all.\n */\n const updateSelectAll = (listValues: HvListValue[]) => {\n if (!listValues) return;\n const nbrSelected = getSelected(listValues).length;\n const hasSelection = nbrSelected > 0;\n const allSelect = nbrSelected === listValues.length;\n\n setAnySelected(hasSelection);\n setAllSelected(hasSelection && allSelect);\n };\n\n /**\n * After the first render, call onChange if notifyChangesOnFirstRender.\n */\n useEffect(() => {\n if (!valuesExist(values)) return;\n setList(clone(values));\n updateSelectAll(values);\n if (notifyChangesOnFirstRender) {\n onChange?.(values, false, false, true);\n }\n }, [values, notifyChangesOnFirstRender, onChange]);\n\n /**\n * Sets the filtered values to the state.\n *\n * @param {String} str - The value that is being looked.\n */\n const handleSearch = (str: string) => {\n const results = list\n ? list.filter(\n ({\n searchValue,\n label,\n value,\n }: {\n searchValue?: any;\n label?: any;\n value?: any;\n }) => {\n let stringValue = \"\";\n if (\n typeof searchValue === \"string\" ||\n searchValue instanceof String\n ) {\n stringValue = searchValue.toLowerCase();\n } else if (typeof label === \"string\" || label instanceof String) {\n stringValue = label.toLowerCase();\n } else if (typeof value === \"string\" || value instanceof String) {\n stringValue = value.toLowerCase();\n }\n\n return stringValue.indexOf(str.toLowerCase()) >= 0;\n }\n )\n : null;\n\n if (!isNil(results)) {\n const newList = list.map((elem) => {\n const isResult = results.find((result) => result.label === elem.label);\n return { ...elem, isHidden: !isResult };\n });\n\n setList(newList);\n setSearchStr(str);\n }\n return str;\n };\n\n /**\n * Create search element.\n *\n * @returns {*}\n */\n const renderSearch = () => (\n <StyledSearchContainer\n className={clsx(\n dropdownListClasses.searchContainer,\n classes?.searchContainer\n )}\n >\n <HvInput\n id={setId(id, \"search\")}\n type=\"search\"\n value={searchStr}\n placeholder={labels?.searchPlaceholder}\n onChange={(event, str) => handleSearch(str)}\n />\n </StyledSearchContainer>\n );\n\n /**\n * Select all the values inside the dropdown.\n *\n */\n const handleSelectAll = () => {\n const newList = list.map((elem) => ({ ...elem, selected: !anySelected }));\n setList(newList);\n updateSelectAll(newList);\n };\n\n /**\n * Create selecteAll component.\n *\n * @returns {*}\n */\n const renderSelectAll = () => {\n const selectAll = labels?.selectAll;\n const multiSelectionConjunction = labels?.multiSelectionConjunction;\n const nbrSelected = getSelected(list).length;\n\n const defaultLabel = (\n <HvTypography component=\"span\">\n {nbrSelected > 0 ? (\n <>\n <b>{nbrSelected}</b>\n {` ${multiSelectionConjunction} ${list.length}`}\n </>\n ) : (\n <>\n <b>{selectAll}</b>\n {` (${list.length})`}\n </>\n )}\n </HvTypography>\n );\n\n return (\n <div\n className={clsx(\n dropdownListClasses.selectAllContainer,\n classes?.selectAllContainer\n )}\n >\n <HvCheckBox\n id={setId(id, \"select-all\")}\n label={defaultLabel}\n onChange={() => handleSelectAll()}\n classes={{\n container: clsx(dropdownListClasses.selection, classes?.selection),\n }}\n className={clsx(dropdownListClasses.selectAll, classes?.selectAll)}\n indeterminate={anySelected && !allSelected}\n checked={allSelected}\n />\n </div>\n );\n };\n\n /**\n * When selecting the state list is updated with the corresponding selection.\n *\n * @param listValues - elements selected.\n */\n const onSelection = (listValues) => {\n if (!multiSelect) {\n onChange(cleanHidden(listValues), true, true, true);\n } else {\n updateSelectAll(listValues);\n setList(clone(listValues));\n }\n };\n\n /**\n * Render action buttons.\n */\n const renderActions = () => {\n const applyLabel = labels?.applyLabel;\n const cancelLabel = labels?.cancelLabel;\n return (\n <HvActionBar id={setId(id, \"actions\")}>\n <HvButton\n id={setId(id, \"actions-apply\")}\n onClick={() => onChange(cleanHidden(list), true, true, true)}\n variant=\"primaryGhost\"\n >\n {applyLabel}\n </HvButton>\n <HvButton\n id={setId(id, \"actions-cancel\")}\n onClick={onCancel}\n variant=\"primaryGhost\"\n >\n {cancelLabel}\n </HvButton>\n </HvActionBar>\n );\n };\n\n const showList = valuesExist(values);\n\n return (\n <StyledRootList\n className={clsx(dropdownListClasses.rootList, classes?.rootList)}\n >\n <div\n className={clsx(\n dropdownListClasses.listBorderDown,\n classes?.listBorderDown\n )}\n />\n <StyledListContainer\n className={clsx(\n dropdownListClasses.listContainer,\n classes?.listContainer\n )}\n >\n {showSearch && renderSearch()}\n {showList && multiSelect && renderSelectAll()}\n {showList && (\n <StyledList\n id={setId(id, \"list\")}\n classes={{\n root: clsx(\n dropdownListClasses.dropdownListContainer,\n classes?.dropdownListContainer\n ),\n }}\n $dropdownHeight={dropdownHeight}\n $maxHeight={maxHeight}\n $virtualized={virtualized}\n $height={height}\n $width={width}\n values={list}\n multiSelect={multiSelect}\n useSelector={multiSelect}\n showSelectAll={false}\n onChange={onSelection}\n labels={newLabels}\n hasTooltips={hasTooltips}\n selectable\n condensed\n singleSelectionToggle={singleSelectionToggle}\n height={dropdownHeight}\n virtualized={virtualized}\n {...others}\n />\n )}\n </StyledListContainer>\n {showList && multiSelect ? renderActions() : null}\n </StyledRootList>\n );\n};\n"],"names":["clone","values","map","value","cleanHidden","lst","item","isHidden","valuesExist","isNil","length","HvDropdownList","id","classes","multiSelect","showSearch","onChange","onCancel","labels","notifyChangesOnFirstRender","hasTooltips","singleSelectionToggle","height","dropdownHeight","maxHeight","virtualized","others","searchStr","setSearchStr","useState","list","setList","allSelected","setAllSelected","anySelected","setAnySelected","width","useContext","BaseDropdownContext","newLabels","selectAll","selectionConjunction","multiSelectionConjunction","updateSelectAll","listValues","nbrSelected","getSelected","hasSelection","allSelect","useEffect","handleSearch","str","results","filter","searchValue","label","stringValue","String","toLowerCase","indexOf","newList","elem","isResult","find","result","renderSearch","_jsx","StyledSearchContainer","className","clsx","dropdownListClasses","searchContainer","children","HvInput","setId","type","placeholder","searchPlaceholder","event","handleSelectAll","selected","renderSelectAll","defaultLabel","HvTypography","component","_jsxs","_Fragment","selectAllContainer","HvCheckBox","container","selection","indeterminate","checked","onSelection","renderActions","applyLabel","cancelLabel","HvActionBar","HvButton","onClick","variant","showList","StyledRootList","rootList","listBorderDown","StyledListContainer","listContainer","StyledList","root","dropdownListContainer","$dropdownHeight","$maxHeight","$virtualized","$height","$width","useSelector","showSelectAll","selectable","condensed"],"mappings":"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"}
@@ -94,7 +94,7 @@ const HvFilterGroupRightPanel = ({
94
94
  checked: allSelected
95
95
  })
96
96
  });
97
- }, [activeFilterValues == null ? void 0 : activeFilterValues.length, activeGroupOptions.length, allSelected, anySelected, handleSelectAll, id, labels]);
97
+ }, [activeFilterValues == null ? void 0 : activeFilterValues.length, activeGroupOptions.length, allSelected, anySelected, handleSelectAll, id, labels, classes == null ? void 0 : classes.selectAllContainer, classes == null ? void 0 : classes.selectAll]);
98
98
  return /* @__PURE__ */ jsx(HvPanel, {
99
99
  id: setId(id, "rightPanel"),
100
100
  className,
@@ -1 +1 @@
1
- {"version":3,"file":"RightPanel.js","sources":["../../../../../src/components/FilterGroup/RightPanel/RightPanel.tsx"],"sourcesContent":["import {\n HvCheckBox,\n HvInput,\n HvList,\n HvPanel,\n HvTypography,\n} from \"@core/components\";\nimport { ExtractNames, setId } from \"@core/utils\";\nimport { useCallback, useContext, useEffect, useMemo, useState } from \"react\";\nimport cloneDeep from \"lodash/cloneDeep\";\nimport { HvFilterGroupContext } from \"../FilterGroupContext\";\nimport { staticClasses, useClasses } from \"./RightPanel.styles\";\n\nexport { staticClasses as filterGroupRightPanelClasses };\n\nexport type HvFilterGroupRightPanelClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvFilterGroupRightPanelProps {\n id?: string;\n className?: string;\n labels?: {\n searchBoxPlaceholder?: string;\n selectAll?: string;\n multiSelectionConjunction?: string;\n };\n emptyElement?: React.ReactNode;\n classes?: HvFilterGroupRightPanelClasses;\n}\n\nexport const HvFilterGroupRightPanel = ({\n id,\n className,\n labels,\n emptyElement,\n classes: classesProp,\n}: HvFilterGroupRightPanelProps) => {\n const { classes } = useClasses(classesProp);\n const [searchStr, setSearchStr] = useState<string>(\"\");\n const [allSelected, setAllSelected] = useState<boolean>(false);\n const [anySelected, setAnySelected] = useState<boolean>(false);\n\n const {\n filterOptions,\n filterValues = [],\n setFilterValues,\n activeGroup,\n } = useContext(HvFilterGroupContext);\n\n const activeGroupOptions = useMemo(\n () => filterOptions[activeGroup]?.data.map((option) => option.id) || [],\n [filterOptions, activeGroup]\n );\n\n const activeFilterValues = useMemo(\n () =>\n filterValues[activeGroup]?.filter((value) =>\n activeGroupOptions.includes(value)\n ) || [],\n [filterValues, activeGroupOptions, activeGroup]\n );\n\n const listValues = useMemo(\n () =>\n filterOptions[activeGroup]?.data.map((option) => ({\n ...option,\n label: option.name,\n selected: filterValues[activeGroup]?.includes(option.id),\n isHidden:\n option.name.toLowerCase().indexOf(searchStr.toLowerCase()) < 0,\n })) || [],\n [filterOptions, filterValues, activeGroup, searchStr]\n );\n\n const updateSelectAll = useCallback(() => {\n const nbrSelected = activeFilterValues?.length;\n const hasSelection = nbrSelected > 0;\n const allSelect = nbrSelected === activeGroupOptions.length;\n\n setAnySelected(hasSelection);\n setAllSelected(hasSelection && allSelect);\n }, [activeFilterValues, activeGroupOptions]);\n\n useEffect(() => {\n updateSelectAll();\n }, [activeFilterValues, updateSelectAll]);\n\n useEffect(() => setSearchStr(\"\"), [activeGroup]);\n\n const onChangeHandler = (values) => {\n const newFilterValues = filterOptions.map((_, i) =>\n activeGroup === i\n ? values.filter((v) => v.selected).map((v) => v.id)\n : [...(filterValues[i] || [])]\n );\n setFilterValues(newFilterValues);\n };\n\n const handleSelectAll = useCallback(() => {\n const newFilterValues = cloneDeep(filterValues);\n newFilterValues[activeGroup] = anySelected ? [] : activeGroupOptions;\n\n setFilterValues(newFilterValues);\n }, [\n activeGroup,\n activeGroupOptions,\n anySelected,\n filterValues,\n setFilterValues,\n ]);\n\n /**\n * Create selectAll component.\n *\n * @returns {*}\n */\n const SelectAll = useCallback(() => {\n const nbrSelected = activeFilterValues?.length;\n\n const defaultLabel = (\n <HvTypography component=\"span\">\n {nbrSelected > 0 ? (\n <>\n <b>{nbrSelected}</b>\n {` ${labels?.multiSelectionConjunction} ${activeGroupOptions.length}`}\n </>\n ) : (\n <>\n <b>{labels?.selectAll}</b>\n {` (${activeGroupOptions.length})`}\n </>\n )}\n </HvTypography>\n );\n\n return (\n <div className={classes.selectAllContainer}>\n <HvCheckBox\n id={setId(id, \"select-all\")}\n label={defaultLabel}\n onChange={() => handleSelectAll()}\n className={classes.selectAll}\n indeterminate={anySelected && !allSelected}\n checked={allSelected}\n />\n </div>\n );\n }, [\n activeFilterValues?.length,\n activeGroupOptions.length,\n allSelected,\n anySelected,\n handleSelectAll,\n id,\n labels,\n ]);\n\n return (\n <HvPanel id={setId(id, \"rightPanel\")} className={className}>\n {listValues.length > 0 ? (\n <>\n <HvInput\n id={setId(id, \"search\")}\n classes={{\n root: classes.search,\n }}\n type=\"search\"\n placeholder={labels?.searchBoxPlaceholder}\n value={searchStr}\n onChange={(_, str) => setSearchStr(str)}\n />\n <SelectAll />\n <HvList\n key={activeGroup}\n id={setId(id, \"list\")}\n values={listValues}\n className={classes.list}\n multiSelect\n useSelector\n showSelectAll={false}\n onChange={onChangeHandler}\n selectable\n condensed\n hasTooltips\n />\n </>\n ) : (\n emptyElement\n )}\n </HvPanel>\n );\n};\n"],"names":["HvFilterGroupRightPanel","id","className","labels","emptyElement","classes","classesProp","useClasses","searchStr","setSearchStr","useState","allSelected","setAllSelected","anySelected","setAnySelected","filterOptions","filterValues","setFilterValues","activeGroup","useContext","HvFilterGroupContext","activeGroupOptions","useMemo","data","map","option","activeFilterValues","filter","value","includes","listValues","label","name","selected","isHidden","toLowerCase","indexOf","updateSelectAll","useCallback","nbrSelected","length","hasSelection","allSelect","useEffect","onChangeHandler","values","newFilterValues","_","i","v","handleSelectAll","cloneDeep","SelectAll","defaultLabel","HvTypography","component","children","_jsxs","_Fragment","_jsx","multiSelectionConjunction","selectAll","selectAllContainer","HvCheckBox","setId","onChange","indeterminate","checked","HvPanel","HvInput","root","search","type","placeholder","searchBoxPlaceholder","str","HvList","list","multiSelect","useSelector","showSelectAll","selectable","condensed","hasTooltips"],"mappings":"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"}
1
+ {"version":3,"file":"RightPanel.js","sources":["../../../../../src/components/FilterGroup/RightPanel/RightPanel.tsx"],"sourcesContent":["import {\n HvCheckBox,\n HvInput,\n HvList,\n HvPanel,\n HvTypography,\n} from \"@core/components\";\nimport { ExtractNames, setId } from \"@core/utils\";\nimport { useCallback, useContext, useEffect, useMemo, useState } from \"react\";\nimport cloneDeep from \"lodash/cloneDeep\";\nimport { HvFilterGroupContext } from \"../FilterGroupContext\";\nimport { staticClasses, useClasses } from \"./RightPanel.styles\";\n\nexport { staticClasses as filterGroupRightPanelClasses };\n\nexport type HvFilterGroupRightPanelClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvFilterGroupRightPanelProps {\n id?: string;\n className?: string;\n labels?: {\n searchBoxPlaceholder?: string;\n selectAll?: string;\n multiSelectionConjunction?: string;\n };\n emptyElement?: React.ReactNode;\n classes?: HvFilterGroupRightPanelClasses;\n}\n\nexport const HvFilterGroupRightPanel = ({\n id,\n className,\n labels,\n emptyElement,\n classes: classesProp,\n}: HvFilterGroupRightPanelProps) => {\n const { classes } = useClasses(classesProp);\n const [searchStr, setSearchStr] = useState<string>(\"\");\n const [allSelected, setAllSelected] = useState<boolean>(false);\n const [anySelected, setAnySelected] = useState<boolean>(false);\n\n const {\n filterOptions,\n filterValues = [],\n setFilterValues,\n activeGroup,\n } = useContext(HvFilterGroupContext);\n\n const activeGroupOptions = useMemo(\n () => filterOptions[activeGroup]?.data.map((option) => option.id) || [],\n [filterOptions, activeGroup]\n );\n\n const activeFilterValues = useMemo(\n () =>\n filterValues[activeGroup]?.filter((value) =>\n activeGroupOptions.includes(value)\n ) || [],\n [filterValues, activeGroupOptions, activeGroup]\n );\n\n const listValues = useMemo(\n () =>\n filterOptions[activeGroup]?.data.map((option) => ({\n ...option,\n label: option.name,\n selected: filterValues[activeGroup]?.includes(option.id),\n isHidden:\n option.name.toLowerCase().indexOf(searchStr.toLowerCase()) < 0,\n })) || [],\n [filterOptions, filterValues, activeGroup, searchStr]\n );\n\n const updateSelectAll = useCallback(() => {\n const nbrSelected = activeFilterValues?.length;\n const hasSelection = nbrSelected > 0;\n const allSelect = nbrSelected === activeGroupOptions.length;\n\n setAnySelected(hasSelection);\n setAllSelected(hasSelection && allSelect);\n }, [activeFilterValues, activeGroupOptions]);\n\n useEffect(() => {\n updateSelectAll();\n }, [activeFilterValues, updateSelectAll]);\n\n useEffect(() => setSearchStr(\"\"), [activeGroup]);\n\n const onChangeHandler = (values) => {\n const newFilterValues = filterOptions.map((_, i) =>\n activeGroup === i\n ? values.filter((v) => v.selected).map((v) => v.id)\n : [...(filterValues[i] || [])]\n );\n setFilterValues(newFilterValues);\n };\n\n const handleSelectAll = useCallback(() => {\n const newFilterValues = cloneDeep(filterValues);\n newFilterValues[activeGroup] = anySelected ? [] : activeGroupOptions;\n\n setFilterValues(newFilterValues);\n }, [\n activeGroup,\n activeGroupOptions,\n anySelected,\n filterValues,\n setFilterValues,\n ]);\n\n /**\n * Create selectAll component.\n *\n * @returns {*}\n */\n const SelectAll = useCallback(() => {\n const nbrSelected = activeFilterValues?.length;\n\n const defaultLabel = (\n <HvTypography component=\"span\">\n {nbrSelected > 0 ? (\n <>\n <b>{nbrSelected}</b>\n {` ${labels?.multiSelectionConjunction} ${activeGroupOptions.length}`}\n </>\n ) : (\n <>\n <b>{labels?.selectAll}</b>\n {` (${activeGroupOptions.length})`}\n </>\n )}\n </HvTypography>\n );\n\n return (\n <div className={classes.selectAllContainer}>\n <HvCheckBox\n id={setId(id, \"select-all\")}\n label={defaultLabel}\n onChange={() => handleSelectAll()}\n className={classes.selectAll}\n indeterminate={anySelected && !allSelected}\n checked={allSelected}\n />\n </div>\n );\n }, [\n activeFilterValues?.length,\n activeGroupOptions.length,\n allSelected,\n anySelected,\n handleSelectAll,\n id,\n labels,\n classes?.selectAllContainer,\n classes?.selectAll,\n ]);\n\n return (\n <HvPanel id={setId(id, \"rightPanel\")} className={className}>\n {listValues.length > 0 ? (\n <>\n <HvInput\n id={setId(id, \"search\")}\n classes={{\n root: classes.search,\n }}\n type=\"search\"\n placeholder={labels?.searchBoxPlaceholder}\n value={searchStr}\n onChange={(_, str) => setSearchStr(str)}\n />\n <SelectAll />\n <HvList\n key={activeGroup}\n id={setId(id, \"list\")}\n values={listValues}\n className={classes.list}\n multiSelect\n useSelector\n showSelectAll={false}\n onChange={onChangeHandler}\n selectable\n condensed\n hasTooltips\n />\n </>\n ) : (\n emptyElement\n )}\n </HvPanel>\n );\n};\n"],"names":["HvFilterGroupRightPanel","id","className","labels","emptyElement","classes","classesProp","useClasses","searchStr","setSearchStr","useState","allSelected","setAllSelected","anySelected","setAnySelected","filterOptions","filterValues","setFilterValues","activeGroup","useContext","HvFilterGroupContext","activeGroupOptions","useMemo","data","map","option","activeFilterValues","filter","value","includes","listValues","label","name","selected","isHidden","toLowerCase","indexOf","updateSelectAll","useCallback","nbrSelected","length","hasSelection","allSelect","useEffect","onChangeHandler","values","newFilterValues","_","i","v","handleSelectAll","cloneDeep","SelectAll","defaultLabel","HvTypography","component","children","_jsxs","_Fragment","_jsx","multiSelectionConjunction","selectAll","selectAllContainer","HvCheckBox","setId","onChange","indeterminate","checked","HvPanel","HvInput","root","search","type","placeholder","searchBoxPlaceholder","str","HvList","list","multiSelect","useSelector","showSelectAll","selectable","condensed","hasTooltips"],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { clsx } from "clsx";
2
- import { useContext, useRef, useState, useEffect } from "react";
2
+ import { forwardRef, useContext, useRef, useState, useEffect } from "react";
3
+ import { useForkRef } from "@mui/material";
3
4
  import { StyledRoot, StyledPopper, StyledSelectionList } from "./Suggestions.styles.js";
4
5
  import suggestionsClasses from "./suggestionsClasses.js";
5
6
  import { jsx } from "@emotion/react/jsx-runtime";
@@ -7,22 +8,24 @@ import { useClickOutside } from "../../../hooks/useClickOutside.js";
7
8
  import { HvListItem } from "../../ListContainer/ListItem/ListItem.js";
8
9
  import { HvFormElementContext } from "../FormElement/context/FormElementContext.js";
9
10
  import { setId } from "../../../utils/setId.js";
10
- const HvSuggestions = ({
11
- id,
12
- className,
13
- classes,
14
- expanded = false,
15
- anchorEl,
16
- suggestionValues = [],
17
- onClose,
18
- onSuggestionSelected,
19
- ...others
20
- }) => {
11
+ const HvSuggestions = forwardRef((props, extRef) => {
12
+ const {
13
+ id,
14
+ className,
15
+ classes,
16
+ expanded = false,
17
+ anchorEl,
18
+ suggestionValues = [],
19
+ onClose,
20
+ onSuggestionSelected,
21
+ ...others
22
+ } = props;
21
23
  const {
22
24
  elementId
23
25
  } = useContext(HvFormElementContext);
24
26
  const localId = id ?? setId(elementId, "suggestions");
25
27
  const ref = useRef(null);
28
+ const forkedRef = useForkRef(ref, extRef);
26
29
  const [isOpen, setIsOpen] = useState(expanded);
27
30
  useClickOutside(ref, (event) => {
28
31
  setIsOpen(false);
@@ -33,7 +36,7 @@ const HvSuggestions = ({
33
36
  }, [expanded]);
34
37
  return /* @__PURE__ */ jsx(StyledRoot, {
35
38
  id: localId,
36
- ref,
39
+ ref: forkedRef,
37
40
  className: clsx(className, suggestionsClasses.root, classes == null ? void 0 : classes.root),
38
41
  ...others,
39
42
  children: /* @__PURE__ */ jsx(StyledPopper, {
@@ -56,7 +59,7 @@ const HvSuggestions = ({
56
59
  })
57
60
  })
58
61
  });
59
- };
62
+ });
60
63
  export {
61
64
  HvSuggestions
62
65
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Suggestions.js","sources":["../../../../../src/components/Forms/Suggestions/Suggestions.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport React, { useContext, useEffect, useRef, useState } from \"react\";\nimport { HvBaseProps } from \"@core/types\";\nimport { setId } from \"@core/utils\";\nimport {\n StyledRoot,\n StyledSelectionList,\n StyledPopper,\n} from \"./Suggestions.styles\";\nimport { HvFormElementContext } from \"../FormElement\";\nimport { HvListItem } from \"../../ListContainer/ListItem\";\nimport { HvClickOutsideEvent, useClickOutside } from \"../../../hooks\";\nimport suggestionsClasses, { HvSuggestionsClasses } from \"./suggestionsClasses\";\n\nexport interface HvSuggestion {\n id?: string;\n label: React.ReactNode;\n value?: string;\n disabled?: boolean;\n}\n\nexport interface HvSuggestionsProps extends HvBaseProps {\n /** Whether suggestions is visible. */\n expanded?: boolean;\n /** The HTML element Suggestions attaches to. */\n anchorEl?: HTMLElement | null;\n /** Array of { id, label, ...others } values to display in the suggestion list */\n suggestionValues?: HvSuggestion[] | null;\n /** Function called when a suggestion is selected */\n onSuggestionSelected?: (event: React.MouseEvent, value: HvSuggestion) => void;\n /** Function called when suggestion list is closed */\n onClose?: (event: HvClickOutsideEvent) => void;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvSuggestionsClasses;\n}\n\nexport const HvSuggestions = ({\n id,\n className,\n classes,\n expanded = false,\n anchorEl,\n suggestionValues = [],\n onClose,\n onSuggestionSelected,\n ...others\n}: HvSuggestionsProps) => {\n const { elementId } = useContext(HvFormElementContext);\n const localId = id ?? setId(elementId, \"suggestions\");\n\n const ref = useRef<HTMLDivElement>(null);\n const [isOpen, setIsOpen] = useState<boolean>(expanded);\n\n useClickOutside(ref, (event: HvClickOutsideEvent) => {\n setIsOpen(false);\n onClose?.(event);\n });\n\n useEffect(() => {\n setIsOpen(expanded);\n }, [expanded]);\n\n return (\n <StyledRoot\n id={localId}\n ref={ref}\n className={clsx(className, suggestionsClasses.root, classes?.root)}\n {...others}\n >\n <StyledPopper\n open={isOpen}\n disablePortal\n anchorEl={anchorEl}\n className={clsx(suggestionsClasses.popper, classes?.popper)}\n >\n <StyledSelectionList\n className={clsx(suggestionsClasses.list, classes?.list)}\n id={setId(localId, \"list\")}\n onChange={onSuggestionSelected}\n >\n {suggestionValues?.map((item, i) => {\n const itemKey = item.id || setId(\"item\", i);\n\n return (\n <HvListItem\n key={itemKey}\n value={item}\n disabled={item.disabled || undefined}\n >\n {item.label}\n </HvListItem>\n );\n })}\n </StyledSelectionList>\n </StyledPopper>\n </StyledRoot>\n );\n};\n"],"names":["HvSuggestions","id","className","classes","expanded","anchorEl","suggestionValues","onClose","onSuggestionSelected","others","elementId","useContext","HvFormElementContext","localId","setId","ref","useRef","isOpen","setIsOpen","useState","event","useEffect","StyledRoot","clsx","suggestionsClasses","root","children","StyledPopper","open","disablePortal","popper","StyledSelectionList","list","onChange","map","item","i","itemKey","HvListItem","value","disabled","undefined","label"],"mappings":";;;;;;;;;AAoCO,MAAMA,gBAAgBA,CAAC;AAAA,EAC5BC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC,WAAW;AAAA,EACXC;AAAAA,EACAC,mBAAmB,CAAE;AAAA,EACrBC;AAAAA,EACAC;AAAAA,EACA,GAAGC;AACe,MAAM;AAClB,QAAA;AAAA,IAAEC;AAAAA,EAAAA,IAAcC,WAAWC,oBAAoB;AACrD,QAAMC,UAAUZ,MAAMa,MAAMJ,WAAW,aAAa;AAE9CK,QAAAA,MAAMC,OAAuB,IAAI;AACvC,QAAM,CAACC,QAAQC,SAAS,IAAIC,SAAkBf,QAAQ;AAEtCW,kBAAAA,KAAK,CAACK,UAA+B;AACnDF,cAAU,KAAK;AACfX,uCAAUa;AAAAA,EAAK,CAChB;AAEDC,YAAU,MAAM;AACdH,cAAUd,QAAQ;AAAA,EAAA,GACjB,CAACA,QAAQ,CAAC;AAEb,6BACGkB,YAAU;AAAA,IACTrB,IAAIY;AAAAA,IACJE;AAAAA,IACAb,WAAWqB,KAAKrB,WAAWsB,mBAAmBC,MAAMtB,mCAASsB,IAAI;AAAA,IAAE,GAC/DhB;AAAAA,IAAMiB,8BAETC,cAAY;AAAA,MACXC,MAAMX;AAAAA,MACNY,eAAa;AAAA,MACbxB;AAAAA,MACAH,WAAWqB,KAAKC,mBAAmBM,QAAQ3B,mCAAS2B,MAAM;AAAA,MAAEJ,8BAE3DK,qBAAmB;AAAA,QAClB7B,WAAWqB,KAAKC,mBAAmBQ,MAAM7B,mCAAS6B,IAAI;AAAA,QACtD/B,IAAIa,MAAMD,SAAS,MAAM;AAAA,QACzBoB,UAAUzB;AAAAA,QAAqBkB,UAE9BpB,qDAAkB4B,IAAI,CAACC,MAAMC,MAAM;AAClC,gBAAMC,UAAUF,KAAKlC,MAAMa,MAAM,QAAQsB,CAAC;AAE1C,qCACGE,YAAU;AAAA,YAETC,OAAOJ;AAAAA,YACPK,UAAUL,KAAKK,YAAYC;AAAAA,YAAUf,UAEpCS,KAAKO;AAAAA,aAJDL,OAKK;AAAA,QAAA;AAAA,MAEf,CACkB;AAAA,IAAA,CACT;AAAA,EAAA,CACJ;AAEhB;"}
1
+ {"version":3,"file":"Suggestions.js","sources":["../../../../../src/components/Forms/Suggestions/Suggestions.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport React, {\n forwardRef,\n useContext,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { useForkRef } from \"@mui/material\";\nimport { HvBaseProps } from \"@core/types\";\nimport { setId } from \"@core/utils\";\nimport {\n StyledRoot,\n StyledSelectionList,\n StyledPopper,\n} from \"./Suggestions.styles\";\nimport { HvFormElementContext } from \"../FormElement\";\nimport { HvListItem } from \"../../ListContainer/ListItem\";\nimport { HvClickOutsideEvent, useClickOutside } from \"../../../hooks\";\nimport suggestionsClasses, { HvSuggestionsClasses } from \"./suggestionsClasses\";\n\nexport interface HvSuggestion {\n id?: string;\n label: React.ReactNode;\n value?: string;\n disabled?: boolean;\n}\n\nexport interface HvSuggestionsProps extends HvBaseProps {\n /** Whether suggestions is visible. */\n expanded?: boolean;\n /** The HTML element Suggestions attaches to. */\n anchorEl?: HTMLElement | null;\n /** Array of { id, label, ...others } values to display in the suggestion list */\n suggestionValues?: HvSuggestion[] | null;\n /** Function called when a suggestion is selected */\n onSuggestionSelected?: (event: React.MouseEvent, value: HvSuggestion) => void;\n /** Function called when suggestion list is closed */\n onClose?: (event: HvClickOutsideEvent) => void;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvSuggestionsClasses;\n}\n\nexport const HvSuggestions = forwardRef((props: HvSuggestionsProps, extRef) => {\n const {\n id,\n className,\n classes,\n expanded = false,\n anchorEl,\n suggestionValues = [],\n onClose,\n onSuggestionSelected,\n ...others\n } = props;\n const { elementId } = useContext(HvFormElementContext);\n const localId = id ?? setId(elementId, \"suggestions\");\n\n const ref = useRef<HTMLDivElement>(null);\n const forkedRef = useForkRef(ref, extRef);\n\n const [isOpen, setIsOpen] = useState(expanded);\n\n useClickOutside(ref, (event) => {\n setIsOpen(false);\n onClose?.(event);\n });\n\n useEffect(() => {\n setIsOpen(expanded);\n }, [expanded]);\n\n return (\n <StyledRoot\n id={localId}\n ref={forkedRef}\n className={clsx(className, suggestionsClasses.root, classes?.root)}\n {...others}\n >\n <StyledPopper\n open={isOpen}\n disablePortal\n anchorEl={anchorEl}\n className={clsx(suggestionsClasses.popper, classes?.popper)}\n >\n <StyledSelectionList\n className={clsx(suggestionsClasses.list, classes?.list)}\n id={setId(localId, \"list\")}\n onChange={onSuggestionSelected}\n >\n {suggestionValues?.map((item, i) => {\n const itemKey = item.id || setId(\"item\", i);\n\n return (\n <HvListItem\n key={itemKey}\n value={item}\n disabled={item.disabled || undefined}\n >\n {item.label}\n </HvListItem>\n );\n })}\n </StyledSelectionList>\n </StyledPopper>\n </StyledRoot>\n );\n});\n"],"names":["HvSuggestions","forwardRef","props","extRef","id","className","classes","expanded","anchorEl","suggestionValues","onClose","onSuggestionSelected","others","elementId","useContext","HvFormElementContext","localId","setId","ref","useRef","forkedRef","useForkRef","isOpen","setIsOpen","useState","useClickOutside","event","useEffect","StyledRoot","clsx","suggestionsClasses","root","children","StyledPopper","open","disablePortal","popper","StyledSelectionList","list","onChange","map","item","i","itemKey","HvListItem","value","disabled","undefined","label"],"mappings":";;;;;;;;;;AA2CO,MAAMA,gBAAgBC,WAAW,CAACC,OAA2BC,WAAW;AACvE,QAAA;AAAA,IACJC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC,WAAW;AAAA,IACXC;AAAAA,IACAC,mBAAmB,CAAE;AAAA,IACrBC;AAAAA,IACAC;AAAAA,IACA,GAAGC;AAAAA,EACDV,IAAAA;AACE,QAAA;AAAA,IAAEW;AAAAA,EAAAA,IAAcC,WAAWC,oBAAoB;AACrD,QAAMC,UAAUZ,MAAMa,MAAMJ,WAAW,aAAa;AAE9CK,QAAAA,MAAMC,OAAuB,IAAI;AACjCC,QAAAA,YAAYC,WAAWH,KAAKf,MAAM;AAExC,QAAM,CAACmB,QAAQC,SAAS,IAAIC,SAASjB,QAAQ;AAE7CkB,kBAAgBP,KAAMQ,CAAU,UAAA;AAC9BH,cAAU,KAAK;AACfb,uCAAUgB;AAAAA,EAAK,CAChB;AAEDC,YAAU,MAAM;AACdJ,cAAUhB,QAAQ;AAAA,EAAA,GACjB,CAACA,QAAQ,CAAC;AAEb,6BACGqB,YAAU;AAAA,IACTxB,IAAIY;AAAAA,IACJE,KAAKE;AAAAA,IACLf,WAAWwB,KAAKxB,WAAWyB,mBAAmBC,MAAMzB,mCAASyB,IAAI;AAAA,IAAE,GAC/DnB;AAAAA,IAAMoB,8BAETC,cAAY;AAAA,MACXC,MAAMZ;AAAAA,MACNa,eAAa;AAAA,MACb3B;AAAAA,MACAH,WAAWwB,KAAKC,mBAAmBM,QAAQ9B,mCAAS8B,MAAM;AAAA,MAAEJ,8BAE3DK,qBAAmB;AAAA,QAClBhC,WAAWwB,KAAKC,mBAAmBQ,MAAMhC,mCAASgC,IAAI;AAAA,QACtDlC,IAAIa,MAAMD,SAAS,MAAM;AAAA,QACzBuB,UAAU5B;AAAAA,QAAqBqB,UAE9BvB,qDAAkB+B,IAAI,CAACC,MAAMC,MAAM;AAClC,gBAAMC,UAAUF,KAAKrC,MAAMa,MAAM,QAAQyB,CAAC;AAE1C,qCACGE,YAAU;AAAA,YAETC,OAAOJ;AAAAA,YACPK,UAAUL,KAAKK,YAAYC;AAAAA,YAAUf,UAEpCS,KAAKO;AAAAA,aAJDL,OAKK;AAAA,QAAA;AAAA,MAEf,CACkB;AAAA,IAAA,CACT;AAAA,EAAA,CACJ;AAEhB,CAAC;"}
@@ -7,6 +7,25 @@ import { HvMenuBar } from "../MenuBar/MenuBar.js";
7
7
  import { HvTypography } from "../../../Typography/Typography.js";
8
8
  import { isKeypress } from "../../../../utils/keyboardUtils/keyCheck.js";
9
9
  import { keyboardCodes } from "../../../../utils/keyboardUtils/keyboardCodes.js";
10
+ const traverseItem = (node) => {
11
+ var _a;
12
+ let href;
13
+ let target;
14
+ if (node == null ? void 0 : node.href) {
15
+ href = node == null ? void 0 : node.href;
16
+ target = node == null ? void 0 : node.target;
17
+ } else if ((node == null ? void 0 : node.data) != null && ((_a = node == null ? void 0 : node.data) == null ? void 0 : _a.length) > 0) {
18
+ let i = 0;
19
+ while (href == null && i < node.data.length) {
20
+ traverseItem(node == null ? void 0 : node.data[i]);
21
+ i += 1;
22
+ }
23
+ }
24
+ return {
25
+ href,
26
+ target
27
+ };
28
+ };
10
29
  const HvMenuItem = ({
11
30
  id,
12
31
  item,
@@ -51,21 +70,13 @@ const HvMenuItem = ({
51
70
  });
52
71
  let itemHref = item == null ? void 0 : item.href;
53
72
  let itemTarget = item == null ? void 0 : item.target;
54
- if (itemHref == null) {
55
- let traversePreOrder = function(node) {
56
- var _a;
57
- if (node == null ? void 0 : node.href) {
58
- itemHref = node == null ? void 0 : node.href;
59
- itemTarget = node == null ? void 0 : node.target;
60
- } else if ((node == null ? void 0 : node.data) != null && ((_a = node == null ? void 0 : node.data) == null ? void 0 : _a.length) > 0) {
61
- let i = 0;
62
- while (itemHref == null && i < node.data.length) {
63
- traversePreOrder(node == null ? void 0 : node.data[i]);
64
- i += 1;
65
- }
66
- }
67
- };
68
- traversePreOrder(item);
73
+ if ((item == null ? void 0 : item.href) == null) {
74
+ const {
75
+ href,
76
+ target
77
+ } = traverseItem(item);
78
+ itemHref = href;
79
+ itemTarget = target;
69
80
  }
70
81
  return /* @__PURE__ */ jsxs(MenuItemLi, {
71
82
  id,