@hitachivantara/uikit-react-core 5.0.2 → 5.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/dist/cjs/components/Dropdown/dropdownClasses.cjs +1 -1
  2. package/dist/cjs/components/Dropdown/dropdownClasses.cjs.map +1 -1
  3. package/dist/cjs/components/Pagination/Pagination.cjs +1 -1
  4. package/dist/cjs/components/Pagination/Pagination.cjs.map +1 -1
  5. package/dist/cjs/components/Slider/Slider.cjs +301 -0
  6. package/dist/cjs/components/Slider/Slider.cjs.map +1 -0
  7. package/dist/cjs/components/Slider/Slider.styles.cjs +334 -0
  8. package/dist/cjs/components/Slider/Slider.styles.cjs.map +1 -0
  9. package/dist/cjs/components/Slider/SliderInput/SliderInput.cjs +66 -0
  10. package/dist/cjs/components/Slider/SliderInput/SliderInput.cjs.map +1 -0
  11. package/dist/cjs/components/Slider/SliderInput/SliderInput.styles.cjs +55 -0
  12. package/dist/cjs/components/Slider/SliderInput/SliderInput.styles.cjs.map +1 -0
  13. package/dist/cjs/components/Slider/SliderInput/sliderInputClasses.cjs +8 -0
  14. package/dist/cjs/components/Slider/SliderInput/sliderInputClasses.cjs.map +1 -0
  15. package/dist/cjs/components/Slider/base.cjs +251 -0
  16. package/dist/cjs/components/Slider/base.cjs.map +1 -0
  17. package/dist/cjs/components/Slider/sliderClasses.cjs +8 -0
  18. package/dist/cjs/components/Slider/sliderClasses.cjs.map +1 -0
  19. package/dist/cjs/components/Slider/utils.cjs +217 -0
  20. package/dist/cjs/components/Slider/utils.cjs.map +1 -0
  21. package/dist/cjs/components/Table/TableBody/tableBodyClasses.cjs.map +1 -1
  22. package/dist/cjs/components/Table/TableCell/tableCellClasses.cjs.map +1 -1
  23. package/dist/cjs/components/Table/TableContainer/tableContainerClasses.cjs.map +1 -1
  24. package/dist/cjs/components/Table/TableHead/tableHeadClasses.cjs.map +1 -1
  25. package/dist/cjs/components/Table/TableHeader/tableHeaderClasses.cjs.map +1 -1
  26. package/dist/cjs/components/Table/TableRow/tableRowClasses.cjs.map +1 -1
  27. package/dist/cjs/components/Table/tableClasses.cjs.map +1 -1
  28. package/dist/cjs/components/VerticalNavigation/Navigation/Navigation.cjs +76 -17
  29. package/dist/cjs/components/VerticalNavigation/Navigation/Navigation.cjs.map +1 -1
  30. package/dist/cjs/components/VerticalNavigation/Navigation/Navigation.styles.cjs +4 -1
  31. package/dist/cjs/components/VerticalNavigation/Navigation/Navigation.styles.cjs.map +1 -1
  32. package/dist/cjs/components/VerticalNavigation/Navigation/navigationClasses.cjs +1 -1
  33. package/dist/cjs/components/VerticalNavigation/Navigation/navigationClasses.cjs.map +1 -1
  34. package/dist/cjs/components/VerticalNavigation/NavigationPopup/NavigationPopup.cjs +58 -0
  35. package/dist/cjs/components/VerticalNavigation/NavigationPopup/NavigationPopup.cjs.map +1 -0
  36. package/dist/cjs/components/VerticalNavigation/NavigationPopup/NavigationPopup.styles.cjs +16 -0
  37. package/dist/cjs/components/VerticalNavigation/NavigationPopup/NavigationPopup.styles.cjs.map +1 -0
  38. package/dist/cjs/components/VerticalNavigation/TreeView/IconWrapper/IconWrapper.cjs +41 -0
  39. package/dist/cjs/components/VerticalNavigation/TreeView/IconWrapper/IconWrapper.cjs.map +1 -0
  40. package/dist/cjs/components/VerticalNavigation/TreeView/IconWrapper/IconWrapper.styles.cjs +42 -0
  41. package/dist/cjs/components/VerticalNavigation/TreeView/IconWrapper/IconWrapper.styles.cjs.map +1 -0
  42. package/dist/cjs/components/VerticalNavigation/TreeView/TooltipWrapper/TooltipWrapper.cjs +24 -0
  43. package/dist/cjs/components/VerticalNavigation/TreeView/TooltipWrapper/TooltipWrapper.cjs.map +1 -0
  44. package/dist/cjs/components/VerticalNavigation/TreeView/TreeViewItem.cjs +42 -44
  45. package/dist/cjs/components/VerticalNavigation/TreeView/TreeViewItem.cjs.map +1 -1
  46. package/dist/cjs/components/VerticalNavigation/VerticalNavigation.cjs +6 -2
  47. package/dist/cjs/components/VerticalNavigation/VerticalNavigation.cjs.map +1 -1
  48. package/dist/cjs/components/VerticalNavigation/VerticalNavigation.styles.cjs +6 -4
  49. package/dist/cjs/components/VerticalNavigation/VerticalNavigation.styles.cjs.map +1 -1
  50. package/dist/cjs/components/VerticalNavigation/VerticalNavigationContext.cjs.map +1 -1
  51. package/dist/cjs/components/VerticalNavigation/utils/VerticalNavigation.utils.cjs +7 -0
  52. package/dist/cjs/components/VerticalNavigation/utils/VerticalNavigation.utils.cjs.map +1 -0
  53. package/dist/cjs/index.cjs +4 -0
  54. package/dist/cjs/index.cjs.map +1 -1
  55. package/dist/esm/components/Dropdown/dropdownClasses.js +1 -1
  56. package/dist/esm/components/Dropdown/dropdownClasses.js.map +1 -1
  57. package/dist/esm/components/Pagination/Pagination.js +1 -1
  58. package/dist/esm/components/Pagination/Pagination.js.map +1 -1
  59. package/dist/esm/components/Slider/Slider.js +299 -0
  60. package/dist/esm/components/Slider/Slider.js.map +1 -0
  61. package/dist/esm/components/Slider/Slider.styles.js +330 -0
  62. package/dist/esm/components/Slider/Slider.styles.js.map +1 -0
  63. package/dist/esm/components/Slider/SliderInput/SliderInput.js +64 -0
  64. package/dist/esm/components/Slider/SliderInput/SliderInput.js.map +1 -0
  65. package/dist/esm/components/Slider/SliderInput/SliderInput.styles.js +53 -0
  66. package/dist/esm/components/Slider/SliderInput/SliderInput.styles.js.map +1 -0
  67. package/dist/esm/components/Slider/SliderInput/sliderInputClasses.js +8 -0
  68. package/dist/esm/components/Slider/SliderInput/sliderInputClasses.js.map +1 -0
  69. package/dist/esm/components/Slider/base.js +251 -0
  70. package/dist/esm/components/Slider/base.js.map +1 -0
  71. package/dist/esm/components/Slider/sliderClasses.js +8 -0
  72. package/dist/esm/components/Slider/sliderClasses.js.map +1 -0
  73. package/dist/esm/components/Slider/utils.js +217 -0
  74. package/dist/esm/components/Slider/utils.js.map +1 -0
  75. package/dist/esm/components/Table/TableBody/tableBodyClasses.js.map +1 -1
  76. package/dist/esm/components/Table/TableCell/tableCellClasses.js.map +1 -1
  77. package/dist/esm/components/Table/TableContainer/tableContainerClasses.js.map +1 -1
  78. package/dist/esm/components/Table/TableHead/tableHeadClasses.js.map +1 -1
  79. package/dist/esm/components/Table/TableHeader/tableHeaderClasses.js.map +1 -1
  80. package/dist/esm/components/Table/TableRow/tableRowClasses.js.map +1 -1
  81. package/dist/esm/components/Table/tableClasses.js.map +1 -1
  82. package/dist/esm/components/VerticalNavigation/Navigation/Navigation.js +77 -19
  83. package/dist/esm/components/VerticalNavigation/Navigation/Navigation.js.map +1 -1
  84. package/dist/esm/components/VerticalNavigation/Navigation/Navigation.styles.js +4 -1
  85. package/dist/esm/components/VerticalNavigation/Navigation/Navigation.styles.js.map +1 -1
  86. package/dist/esm/components/VerticalNavigation/Navigation/navigationClasses.js +1 -1
  87. package/dist/esm/components/VerticalNavigation/Navigation/navigationClasses.js.map +1 -1
  88. package/dist/esm/components/VerticalNavigation/NavigationPopup/NavigationPopup.js +56 -0
  89. package/dist/esm/components/VerticalNavigation/NavigationPopup/NavigationPopup.js.map +1 -0
  90. package/dist/esm/components/VerticalNavigation/NavigationPopup/NavigationPopup.styles.js +14 -0
  91. package/dist/esm/components/VerticalNavigation/NavigationPopup/NavigationPopup.styles.js.map +1 -0
  92. package/dist/esm/components/VerticalNavigation/TreeView/IconWrapper/IconWrapper.js +41 -0
  93. package/dist/esm/components/VerticalNavigation/TreeView/IconWrapper/IconWrapper.js.map +1 -0
  94. package/dist/esm/components/VerticalNavigation/TreeView/IconWrapper/IconWrapper.styles.js +40 -0
  95. package/dist/esm/components/VerticalNavigation/TreeView/IconWrapper/IconWrapper.styles.js.map +1 -0
  96. package/dist/esm/components/VerticalNavigation/TreeView/TooltipWrapper/TooltipWrapper.js +24 -0
  97. package/dist/esm/components/VerticalNavigation/TreeView/TooltipWrapper/TooltipWrapper.js.map +1 -0
  98. package/dist/esm/components/VerticalNavigation/TreeView/TreeViewItem.js +42 -44
  99. package/dist/esm/components/VerticalNavigation/TreeView/TreeViewItem.js.map +1 -1
  100. package/dist/esm/components/VerticalNavigation/VerticalNavigation.js +6 -2
  101. package/dist/esm/components/VerticalNavigation/VerticalNavigation.js.map +1 -1
  102. package/dist/esm/components/VerticalNavigation/VerticalNavigation.styles.js +6 -4
  103. package/dist/esm/components/VerticalNavigation/VerticalNavigation.styles.js.map +1 -1
  104. package/dist/esm/components/VerticalNavigation/VerticalNavigationContext.js.map +1 -1
  105. package/dist/esm/components/VerticalNavigation/utils/VerticalNavigation.utils.js +7 -0
  106. package/dist/esm/components/VerticalNavigation/utils/VerticalNavigation.utils.js.map +1 -0
  107. package/dist/esm/index.js +22 -18
  108. package/dist/esm/index.js.map +1 -1
  109. package/dist/types/index.d.ts +201 -14
  110. package/package.json +7 -5
@@ -7,11 +7,11 @@ const treeViewItemClasses = require("./treeViewItemClasses.cjs");
7
7
  const TreeViewItem_styles = require("./TreeViewItem.styles.cjs");
8
8
  const descendants = require("./descendants.cjs");
9
9
  const TreeViewContext = require("./TreeViewContext.cjs");
10
- const VerticalNavigationContext = require("../VerticalNavigationContext.cjs");
11
10
  const jsxRuntime = require("@emotion/react/jsx-runtime");
12
11
  const useForkRef = require("../../../hooks/useForkRef.cjs");
12
+ const IconWrapper = require("./IconWrapper/IconWrapper.cjs");
13
+ const VerticalNavigationContext = require("../VerticalNavigationContext.cjs");
13
14
  const setId = require("../../../utils/setId.cjs");
14
- const Avatar = require("../../Avatar/Avatar.cjs");
15
15
  const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
16
16
  const clsx__default = /* @__PURE__ */ _interopDefault(clsx);
17
17
  const preventSelection = (event, disabled) => {
@@ -37,6 +37,7 @@ const HvVerticalNavigationTreeViewItem = React.forwardRef((props, ref) => {
37
37
  onMouseDown,
38
38
  onFocus,
39
39
  children,
40
+ disableTooltip,
40
41
  ...others
41
42
  } = props;
42
43
  const treeViewControlContext = React.useContext(TreeViewContext.TreeViewControlContext);
@@ -90,7 +91,7 @@ const HvVerticalNavigationTreeViewItem = React.forwardRef((props, ref) => {
90
91
  const focused = isFocused ? isFocused(nodeId) : false;
91
92
  const selected = isSelected ? isSelected(nodeId) : false;
92
93
  const disabled = isDisabled ? isDisabled(nodeId) : false;
93
- const selectable = selectableProp != null ? selectableProp : !collapsible || !expandable;
94
+ const selectable = selectableProp != null ? selectableProp : !collapsible || !expandable || !isOpen;
94
95
  React.useEffect(() => {
95
96
  if (registerNode && unregisterNode && index !== -1) {
96
97
  registerNode({
@@ -143,7 +144,7 @@ const HvVerticalNavigationTreeViewItem = React.forwardRef((props, ref) => {
143
144
  focus(event, nodeId);
144
145
  }
145
146
  const multiple = multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);
146
- if (expandable && !(multiple && isExpanded && isExpanded(nodeId))) {
147
+ if (expandable && isOpen && !(multiple && isExpanded && isExpanded(nodeId))) {
147
148
  if (toggleExpansion)
148
149
  toggleExpansion(event, nodeId);
149
150
  }
@@ -181,7 +182,7 @@ const HvVerticalNavigationTreeViewItem = React.forwardRef((props, ref) => {
181
182
  }, [disabled, onMouseDown]);
182
183
  const handleClick = React.useCallback((event) => {
183
184
  if (!disabled) {
184
- if (expandable) {
185
+ if (expandable && isOpen) {
185
186
  handleExpansion(event);
186
187
  }
187
188
  if (selectable) {
@@ -202,7 +203,7 @@ const HvVerticalNavigationTreeViewItem = React.forwardRef((props, ref) => {
202
203
  }
203
204
  if (contentRef.current === event.currentTarget) {
204
205
  if (key === "Enter" || key === " ") {
205
- if (expandable) {
206
+ if (expandable && isOpen) {
206
207
  isEventHandled = handleExpansion(event);
207
208
  }
208
209
  if (selectable) {
@@ -215,44 +216,41 @@ const HvVerticalNavigationTreeViewItem = React.forwardRef((props, ref) => {
215
216
  }
216
217
  }
217
218
  }, [expandable, handleExpansion, handleSelection, selectable]);
218
- const renderedContent = React.useMemo(() => {
219
- var _a2, _b;
220
- return /* @__PURE__ */ jsxRuntime.jsxs(TreeViewItem_styles.StyledContent, {
221
- id: setId.setId(id, "button"),
222
- component: href ? "a" : "div",
223
- href,
224
- target,
225
- ref: contentRef,
226
- className: clsx__default.default(treeViewItemClasses.default.content, classes == null ? void 0 : classes.content, href != null && clsx__default.default(treeViewItemClasses.default.link, classes == null ? void 0 : classes.link), !isOpen && clsx__default.default(treeViewItemClasses.default.minimized, classes == null ? void 0 : classes.minimized)),
227
- variant: disabled ? "placeholderText" : "body",
228
- onClick: handleClick,
229
- onMouseDown: handleMouseDown,
230
- style: {
231
- paddingLeft: (expandable || icon != null ? 0 : 10) + level * (collapsible ? 32 : 10)
232
- },
233
- ...treeviewMode ? {
234
- role: "button",
235
- tabIndex: -1,
236
- onFocus: handleFocus
237
- } : {
238
- role: "button",
239
- tabIndex: selectable || expandable ? 0 : -1,
240
- onKeyDown: handleKeyDown,
241
- "aria-current": selectable && selected ? "page" : void 0,
242
- "aria-expanded": expandable ? expanded : void 0,
243
- "aria-controls": expandable ? setId.setId(id, "group") : void 0
244
- },
245
- children: [isOpen && expandable && (expanded ? /* @__PURE__ */ jsxRuntime.jsx(uikitReactIcons.DropUpXS, {}) : /* @__PURE__ */ jsxRuntime.jsx(uikitReactIcons.DropDownXS, {})), !icon && level === 0 && !isOpen && collapsedMode === "icon" && ((_a2 = contentRef.current) == null ? void 0 : _a2.textContent) ? /* @__PURE__ */ jsxRuntime.jsx(Avatar.HvAvatar, {
246
- variant: "square",
247
- size: "xs",
248
- backgroundColor: "secondary_80",
249
- style: {
250
- fontSize: "15px"
251
- },
252
- children: (_b = contentRef.current) == null ? void 0 : _b.textContent.substring(0, 1)
253
- }) : icon, isOpen && label]
254
- });
255
- }, [id, href, target, classes == null ? void 0 : classes.content, treeViewItemClasses.default.content, classes == null ? void 0 : classes.link, treeViewItemClasses.default.link, classes == null ? void 0 : classes.minimized, treeViewItemClasses.default.minimized, disabled, handleClick, handleMouseDown, expandable, icon, level, collapsible, treeviewMode, handleFocus, selectable, handleKeyDown, selected, expanded, label]);
219
+ const renderedContent = React.useMemo(() => /* @__PURE__ */ jsxRuntime.jsxs(TreeViewItem_styles.StyledContent, {
220
+ id: setId.setId(id, "button"),
221
+ component: href ? "a" : "div",
222
+ href,
223
+ target,
224
+ ref: contentRef,
225
+ className: clsx__default.default(treeViewItemClasses.default.content, classes == null ? void 0 : classes.content, href != null && clsx__default.default(treeViewItemClasses.default.link, classes == null ? void 0 : classes.link), !isOpen && clsx__default.default(treeViewItemClasses.default.minimized, classes == null ? void 0 : classes.minimized)),
226
+ variant: disabled ? "placeholderText" : "body",
227
+ onClick: handleClick,
228
+ onMouseDown: handleMouseDown,
229
+ style: {
230
+ paddingLeft: (expandable || icon != null ? 0 : 10) + level * (collapsible ? 32 : 10)
231
+ },
232
+ ...treeviewMode ? {
233
+ role: "button",
234
+ tabIndex: -1,
235
+ onFocus: handleFocus
236
+ } : {
237
+ role: "button",
238
+ tabIndex: selectable || expandable ? 0 : -1,
239
+ onKeyDown: handleKeyDown,
240
+ "aria-current": selectable && selected ? "page" : void 0,
241
+ "aria-expanded": expandable ? expanded : void 0,
242
+ "aria-controls": expandable ? setId.setId(id, "group") : void 0,
243
+ "aria-label": payload == null ? void 0 : payload.label
244
+ },
245
+ children: [isOpen && expandable && (expanded ? /* @__PURE__ */ jsxRuntime.jsx(uikitReactIcons.DropUpXS, {}) : /* @__PURE__ */ jsxRuntime.jsx(uikitReactIcons.DropDownXS, {})), /* @__PURE__ */ jsxRuntime.jsx(IconWrapper.IconWrapper, {
246
+ icon,
247
+ label: payload == null ? void 0 : payload.label,
248
+ hasChildren: Boolean(children),
249
+ showAvatar: !icon && level === 0 && !isOpen && collapsedMode === "icon",
250
+ isOpen,
251
+ disableTooltip
252
+ }), isOpen && label]
253
+ }), [id, href, target, classes == null ? void 0 : classes.content, treeViewItemClasses.default.content, classes == null ? void 0 : classes.link, treeViewItemClasses.default.link, classes == null ? void 0 : classes.minimized, treeViewItemClasses.default.minimized, disabled, handleClick, handleMouseDown, expandable, icon, level, collapsible, treeviewMode, handleFocus, selectable, handleKeyDown, selected, expanded, label, disableTooltip]);
256
254
  const renderedChildren = React.useMemo(() => children && /* @__PURE__ */ jsxRuntime.jsx(TreeViewItem_styles.StyledGroup, {
257
255
  id: setId.setId(id, "group"),
258
256
  className: clsx__default.default(treeViewItemClasses.default.group, classes == null ? void 0 : classes.group),
@@ -1 +1 @@
1
- {"version":3,"file":"TreeViewItem.cjs","sources":["../../../../../src/components/VerticalNavigation/TreeView/TreeViewItem.tsx"],"sourcesContent":["import {\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport clsx from \"clsx\";\nimport { DropDownXS, DropUpXS } from \"@hitachivantara/uikit-react-icons\";\nimport { useForkRef } from \"~/hooks\";\nimport { setId } from \"~/utils\";\nimport treeViewItemClasses, {\n HvVerticalNavigationTreeViewItemClasses,\n} from \"./treeViewItemClasses\";\nimport { StyledContent, StyledGroup, StyledNode } from \"./TreeViewItem.styles\";\nimport { DescendantProvider, useDescendant } from \"./descendants\";\nimport {\n TreeViewControlContext,\n TreeViewStateContext,\n} from \"./TreeViewContext\";\nimport { HvAvatar } from \"~/components\";\nimport { VerticalNavigationContext } from \"../VerticalNavigationContext\";\n\nexport type HvVerticalNavigationTreeViewItemProps = {\n /**\n * Id to be applied to the root node.\n */\n id?: string;\n /**\n * Class names to be applied.\n */\n className?: string;\n /**\n * A Jss Object used to override or extend the styles applied to the Radio button.\n */\n classes?: HvVerticalNavigationTreeViewItemClasses;\n /**\n * Is the node disabled.\n */\n disabled?: boolean;\n /**\n * Can the node be selected.\n */\n selectable?: boolean;\n /**\n * The id of the node.\n */\n nodeId?: string;\n /**\n * The icon to display next to the node's label.\n */\n icon?: React.ReactNode;\n /**\n * The item label.\n */\n label?: React.ReactNode;\n /**\n * The url for the link.\n */\n href?: string;\n /**\n * The behavior when opening a link.\n */\n target?: string;\n /**\n * The node payload.\n */\n payload?: any;\n /**\n * @ignore\n */\n onClick?: any;\n /**\n * @ignore\n */\n onMouseDown?: any;\n /**\n * @ignore\n */\n onFocus?: any;\n /**\n * The content of the component.\n */\n children?: React.ReactNode;\n};\n\nconst preventSelection = (event, disabled) => {\n if (event.shiftKey || event.ctrlKey || event.metaKey || disabled) {\n // Prevent text selection\n event.preventDefault();\n }\n};\n\nexport const HvVerticalNavigationTreeViewItem = forwardRef(\n (props: HvVerticalNavigationTreeViewItemProps, ref) => {\n const {\n id: idProp,\n className,\n classes,\n\n disabled: disabledProp = false,\n\n selectable: selectableProp,\n\n nodeId,\n icon = null,\n label,\n href,\n target,\n payload,\n\n onClick,\n onMouseDown,\n onFocus,\n\n children,\n\n ...others\n } = props;\n\n const treeViewControlContext = useContext(TreeViewControlContext);\n const { isExpanded, isSelected, isFocused, isDisabled, isChildSelected } =\n useContext(TreeViewStateContext);\n\n const {\n treeId,\n mode,\n collapsible,\n toggleExpansion,\n multiSelect,\n selectNode,\n selectRange,\n disabledItemsFocusable,\n registerNode,\n unregisterNode,\n mapFirstChar,\n unMapFirstChar,\n focus,\n } = treeViewControlContext;\n\n const treeviewMode = mode === \"treeview\";\n\n let id: string | null = null;\n\n if (idProp != null) {\n id = idProp;\n } else if (treeId && nodeId) {\n id = `${treeId}-${nodeId}`;\n }\n\n const [treeitemElement, setTreeitemElement] = useState(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const handleRef = useForkRef(setTreeitemElement, ref);\n\n const descendant = useMemo(\n () => ({\n element: treeitemElement,\n id: nodeId,\n }),\n [nodeId, treeitemElement]\n );\n\n const { isOpen, collapsedMode } = useContext(VerticalNavigationContext);\n\n const { index, parentId, level } = useDescendant(descendant);\n\n const expandable = collapsible && Array.isArray(children);\n const expanded = isExpanded ? isExpanded(nodeId) : false;\n const focused = isFocused ? isFocused(nodeId) : false;\n const selected = isSelected ? isSelected(nodeId) : false;\n const disabled = isDisabled ? isDisabled(nodeId) : false;\n\n const selectable =\n selectableProp != null ? selectableProp : !collapsible || !expandable;\n\n useEffect(() => {\n // On the first render a node's index will be -1. We want to wait for the real index.\n if (registerNode && unregisterNode && index !== -1) {\n registerNode({\n id: nodeId,\n idAttribute: id,\n index,\n parentId,\n selectable,\n expandable,\n disabled: disabledProp,\n onFocus,\n payload,\n });\n\n return () => {\n unregisterNode(nodeId);\n };\n }\n\n return undefined;\n }, [\n registerNode,\n unregisterNode,\n parentId,\n index,\n nodeId,\n expandable,\n disabledProp,\n id,\n selectable,\n onFocus,\n payload,\n ]);\n\n useEffect(() => {\n if (\n mapFirstChar &&\n unMapFirstChar &&\n label &&\n contentRef.current?.textContent\n ) {\n mapFirstChar(\n nodeId,\n contentRef.current?.textContent.substring(0, 1).toLowerCase()\n );\n\n return () => {\n unMapFirstChar(nodeId);\n };\n }\n return undefined;\n }, [mapFirstChar, unMapFirstChar, nodeId, label]);\n\n let ariaSelected;\n if (multiSelect) {\n ariaSelected = selected;\n } else if (selected) {\n /* single-selection trees unset aria-selected on un-selected items.\n *\n * If the tree does not support multiple selection, aria-selected\n * is set to true for the selected node and it is not present on any other node in the tree.\n * Source: https://www.w3.org/TR/wai-aria-practices/#TreeView\n */\n ariaSelected = true;\n }\n\n const handleFocus = useCallback(\n (event) => {\n // DOM focus stays on the tree which manages focus with aria-activedescendant\n if (event.target === event.currentTarget) {\n (event.target.ownerDocument || document)\n .getElementById(treeId)\n .focus({ preventScroll: true });\n }\n\n const unfocusable = !disabledItemsFocusable && disabled;\n if (\n !focused &&\n event.currentTarget === event.target &&\n !unfocusable &&\n focus\n ) {\n focus(event, nodeId);\n }\n },\n [disabled, disabledItemsFocusable, focus, focused, nodeId, treeId]\n );\n\n const handleExpansion = useCallback(\n (event) => {\n if (!disabled) {\n if (treeviewMode && !focused && focus) {\n focus(event, nodeId);\n }\n\n const multiple =\n multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);\n\n // If already expanded and trying to toggle selection don't close\n if (expandable && !(multiple && isExpanded && isExpanded(nodeId))) {\n if (toggleExpansion) toggleExpansion(event, nodeId);\n }\n }\n },\n [\n disabled,\n expandable,\n focus,\n focused,\n isExpanded,\n multiSelect,\n nodeId,\n toggleExpansion,\n treeviewMode,\n ]\n );\n\n const handleSelection = useCallback(\n (event) => {\n if (selectable && !disabled) {\n if (treeviewMode && !focused && focus) {\n focus(event, nodeId);\n }\n\n const multiple =\n multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);\n\n if (multiple) {\n if (event.shiftKey) {\n if (selectRange) return selectRange(event, { end: nodeId });\n } else {\n if (selectNode) return selectNode(event, nodeId, true);\n }\n } else {\n if (selectNode) return selectNode(event, nodeId);\n }\n } else {\n return false;\n }\n },\n [\n disabled,\n focus,\n focused,\n multiSelect,\n nodeId,\n selectNode,\n selectRange,\n selectable,\n treeviewMode,\n ]\n );\n\n const handleMouseDown = useCallback(\n (event) => {\n preventSelection(event, disabled);\n\n if (onMouseDown) {\n onMouseDown(event);\n }\n },\n [disabled, onMouseDown]\n );\n\n const handleClick = useCallback(\n (event) => {\n if (!disabled) {\n if (expandable) {\n handleExpansion(event);\n }\n\n if (selectable) {\n handleSelection(event);\n }\n }\n\n if (onClick) {\n onClick(event);\n }\n },\n [\n disabled,\n expandable,\n handleExpansion,\n handleSelection,\n onClick,\n selectable,\n ]\n );\n\n const handleKeyDown = useCallback(\n (event) => {\n let isEventHandled = false;\n const { key } = event;\n\n if (\n event.altKey ||\n event.ctrlKey ||\n event.metaKey ||\n event.currentTarget !== event.target\n ) {\n return;\n }\n if (contentRef.current === event.currentTarget) {\n if (key === \"Enter\" || key === \" \") {\n if (expandable) {\n isEventHandled = handleExpansion(event) as unknown as boolean;\n }\n\n if (selectable) {\n isEventHandled = handleSelection(event) as boolean;\n }\n }\n\n if (isEventHandled) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n },\n [expandable, handleExpansion, handleSelection, selectable]\n );\n\n const renderedContent = useMemo(\n () => (\n <StyledContent\n id={setId(id, \"button\")}\n component={href ? \"a\" : \"div\"}\n href={href}\n target={target}\n ref={contentRef}\n className={clsx(\n treeViewItemClasses.content,\n classes?.content,\n href != null && clsx(treeViewItemClasses.link, classes?.link),\n !isOpen && clsx(treeViewItemClasses.minimized, classes?.minimized)\n )}\n variant={disabled ? \"placeholderText\" : \"body\"}\n onClick={handleClick}\n onMouseDown={handleMouseDown}\n style={{\n paddingLeft:\n (expandable || icon != null ? 0 : 10) +\n level * (collapsible ? 32 : 10),\n }}\n {...(treeviewMode\n ? {\n role: \"button\",\n tabIndex: -1,\n onFocus: handleFocus,\n }\n : {\n role: \"button\",\n tabIndex: selectable || expandable ? 0 : -1,\n onKeyDown: handleKeyDown,\n \"aria-current\": selectable && selected ? \"page\" : undefined,\n \"aria-expanded\": expandable ? expanded : undefined,\n \"aria-controls\": expandable ? setId(id, \"group\") : undefined,\n })}\n >\n {isOpen && expandable && (expanded ? <DropUpXS /> : <DropDownXS />)}\n {!icon &&\n level === 0 &&\n !isOpen &&\n collapsedMode === \"icon\" &&\n contentRef.current?.textContent ? (\n <HvAvatar\n variant=\"square\"\n size=\"xs\"\n backgroundColor=\"secondary_80\"\n style={{ fontSize: \"15px\" }}\n >\n {contentRef.current?.textContent.substring(0, 1)}\n </HvAvatar>\n ) : (\n icon\n )}\n {isOpen && label}\n </StyledContent>\n ),\n [\n id,\n href,\n target,\n classes?.content,\n treeViewItemClasses.content,\n classes?.link,\n treeViewItemClasses.link,\n classes?.minimized,\n treeViewItemClasses.minimized,\n disabled,\n handleClick,\n handleMouseDown,\n expandable,\n icon,\n level,\n collapsible,\n treeviewMode,\n handleFocus,\n selectable,\n handleKeyDown,\n selected,\n expanded,\n label,\n ]\n );\n\n const renderedChildren = useMemo(\n () =>\n children && (\n <StyledGroup\n id={setId(id, \"group\")}\n className={clsx(treeViewItemClasses.group, classes?.group)}\n role={treeviewMode ? \"group\" : undefined}\n >\n {children}\n </StyledGroup>\n ),\n [children, treeViewItemClasses.group, classes?.group, id, treeviewMode]\n );\n\n return (\n <StyledNode\n ref={handleRef}\n id={id ?? undefined}\n className={clsx(\n treeViewItemClasses?.node,\n classes?.node,\n className,\n disabled && clsx(treeViewItemClasses.disabled, classes?.disabled),\n expandable &&\n clsx(treeViewItemClasses.expandable, classes?.expandable),\n expandable &&\n !expanded &&\n clsx(treeViewItemClasses.collapsed, classes?.collapsed),\n expandable &&\n expanded &&\n clsx(treeViewItemClasses.expanded, classes?.expanded),\n selectable &&\n !disabled &&\n clsx(treeViewItemClasses.selectable, classes?.selectable),\n !disabled &&\n !selectable &&\n clsx(treeViewItemClasses.unselectable, classes?.unselectable),\n !disabled &&\n selectable &&\n selected &&\n clsx(treeViewItemClasses.selected, classes?.selected),\n !disabled &&\n selectable &&\n !selected &&\n clsx(treeViewItemClasses.unselected, classes?.unselected),\n focused && clsx(treeViewItemClasses.focused, classes?.focused),\n !isOpen &&\n collapsedMode == \"simple\" &&\n clsx(treeViewItemClasses.hide, classes?.hide),\n !isOpen &&\n collapsedMode == \"icon\" &&\n isChildSelected &&\n isChildSelected(nodeId) &&\n clsx(treeViewItemClasses.selected, classes?.selected)\n )}\n data-hasicon={icon != null ? true : undefined}\n {...(mode === \"treeview\" && {\n role: \"treeitem\",\n \"aria-selected\": ariaSelected,\n \"aria-expanded\": expandable ? expanded : undefined,\n \"aria-disabled\": disabled ? true : undefined,\n })}\n {...others}\n >\n {renderedContent}\n {isOpen && (\n <DescendantProvider id={nodeId} level={level + 1}>\n {renderedChildren}\n </DescendantProvider>\n )}\n </StyledNode>\n );\n }\n);\n"],"names":["preventSelection","event","disabled","shiftKey","ctrlKey","metaKey","preventDefault","HvVerticalNavigationTreeViewItem","forwardRef","props","ref","id","idProp","className","classes","disabledProp","selectable","selectableProp","nodeId","icon","label","href","target","payload","onClick","onMouseDown","onFocus","children","others","treeViewControlContext","useContext","TreeViewControlContext","isExpanded","isSelected","isFocused","isDisabled","isChildSelected","TreeViewStateContext","treeId","mode","collapsible","toggleExpansion","multiSelect","selectNode","selectRange","disabledItemsFocusable","registerNode","unregisterNode","mapFirstChar","unMapFirstChar","focus","treeviewMode","treeitemElement","setTreeitemElement","useState","contentRef","useRef","handleRef","useForkRef","descendant","useMemo","element","isOpen","collapsedMode","VerticalNavigationContext","index","parentId","level","useDescendant","expandable","Array","isArray","expanded","focused","selected","useEffect","idAttribute","undefined","current","textContent","substring","toLowerCase","ariaSelected","handleFocus","useCallback","currentTarget","ownerDocument","document","getElementById","preventScroll","unfocusable","handleExpansion","multiple","handleSelection","end","handleMouseDown","handleClick","handleKeyDown","isEventHandled","key","altKey","stopPropagation","renderedContent","_jsxs","StyledContent","setId","component","clsx","treeViewItemClasses","content","link","minimized","variant","style","paddingLeft","role","tabIndex","onKeyDown","DropUpXS","_jsx","DropDownXS","HvAvatar","size","backgroundColor","fontSize","renderedChildren","StyledGroup","group","StyledNode","node","collapsed","unselectable","unselected","hide","DescendantProvider"],"mappings":"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"}
1
+ {"version":3,"file":"TreeViewItem.cjs","sources":["../../../../../src/components/VerticalNavigation/TreeView/TreeViewItem.tsx"],"sourcesContent":["import {\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport clsx from \"clsx\";\nimport { DropDownXS, DropUpXS } from \"@hitachivantara/uikit-react-icons\";\nimport { useForkRef } from \"~/hooks\";\nimport { setId } from \"~/utils\";\nimport treeViewItemClasses, {\n HvVerticalNavigationTreeViewItemClasses,\n} from \"./treeViewItemClasses\";\nimport { StyledContent, StyledGroup, StyledNode } from \"./TreeViewItem.styles\";\nimport { DescendantProvider, useDescendant } from \"./descendants\";\nimport {\n TreeViewControlContext,\n TreeViewStateContext,\n} from \"./TreeViewContext\";\nimport { VerticalNavigationContext } from \"../\";\nimport { IconWrapper } from \"./IconWrapper\";\n\nexport type HvVerticalNavigationTreeViewItemProps = {\n /**\n * Id to be applied to the root node.\n */\n id?: string;\n /**\n * Class names to be applied.\n */\n className?: string;\n /**\n * A Jss Object used to override or extend the styles applied to the Radio button.\n */\n classes?: HvVerticalNavigationTreeViewItemClasses;\n /**\n * Is the node disabled.\n */\n disabled?: boolean;\n /**\n * Can the node be selected.\n */\n selectable?: boolean;\n /**\n * The id of the node.\n */\n nodeId?: string;\n /**\n * The icon to display next to the node's label.\n */\n icon?: React.ReactNode;\n /**\n * The item label.\n */\n label?: React.ReactNode;\n /**\n * The url for the link.\n */\n href?: string;\n /**\n * The behavior when opening a link.\n */\n target?: string;\n /**\n * The node payload.\n */\n payload?: any;\n /**\n * @ignore\n */\n onClick?: any;\n /**\n * @ignore\n */\n onMouseDown?: any;\n /**\n * @ignore\n */\n onFocus?: any;\n /**\n * The content of the component.\n */\n children?: React.ReactNode;\n /**\n * @ignore\n */\n onMouseEnter?: any;\n /**\n * Disables the appearence of a tooltip on hovering an element ( Only applicable when the in collapsed mode)\n */\n disableTooltip?: boolean;\n};\n\nconst preventSelection = (event, disabled) => {\n if (event.shiftKey || event.ctrlKey || event.metaKey || disabled) {\n // Prevent text selection\n event.preventDefault();\n }\n};\n\nexport const HvVerticalNavigationTreeViewItem = forwardRef(\n (props: HvVerticalNavigationTreeViewItemProps, ref) => {\n const {\n id: idProp,\n className,\n classes,\n\n disabled: disabledProp = false,\n\n selectable: selectableProp,\n\n nodeId,\n icon = null,\n label,\n href,\n target,\n payload,\n\n onClick,\n onMouseDown,\n onFocus,\n\n children,\n\n disableTooltip,\n\n ...others\n } = props;\n\n const treeViewControlContext = useContext(TreeViewControlContext);\n const { isExpanded, isSelected, isFocused, isDisabled, isChildSelected } =\n useContext(TreeViewStateContext);\n\n const {\n treeId,\n mode,\n collapsible,\n toggleExpansion,\n multiSelect,\n selectNode,\n selectRange,\n disabledItemsFocusable,\n registerNode,\n unregisterNode,\n mapFirstChar,\n unMapFirstChar,\n focus,\n } = treeViewControlContext;\n\n const treeviewMode = mode === \"treeview\";\n\n let id: string | null = null;\n\n if (idProp != null) {\n id = idProp;\n } else if (treeId && nodeId) {\n id = `${treeId}-${nodeId}`;\n }\n\n const [treeitemElement, setTreeitemElement] = useState(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const handleRef = useForkRef(setTreeitemElement, ref);\n\n const descendant = useMemo(\n () => ({\n element: treeitemElement,\n id: nodeId,\n }),\n [nodeId, treeitemElement]\n );\n\n const { isOpen, collapsedMode } = useContext(VerticalNavigationContext);\n\n const { index, parentId, level } = useDescendant(descendant);\n\n const expandable = collapsible && Array.isArray(children);\n const expanded = isExpanded ? isExpanded(nodeId) : false;\n const focused = isFocused ? isFocused(nodeId) : false;\n const selected = isSelected ? isSelected(nodeId) : false;\n const disabled = isDisabled ? isDisabled(nodeId) : false;\n\n const selectable =\n selectableProp != null\n ? selectableProp\n : !collapsible || !expandable || !isOpen;\n\n useEffect(() => {\n // On the first render a node's index will be -1. We want to wait for the real index.\n if (registerNode && unregisterNode && index !== -1) {\n registerNode({\n id: nodeId,\n idAttribute: id,\n index,\n parentId,\n selectable,\n expandable,\n disabled: disabledProp,\n onFocus,\n payload,\n });\n\n return () => {\n unregisterNode(nodeId);\n };\n }\n\n return undefined;\n }, [\n registerNode,\n unregisterNode,\n parentId,\n index,\n nodeId,\n expandable,\n disabledProp,\n id,\n selectable,\n onFocus,\n payload,\n ]);\n\n useEffect(() => {\n if (\n mapFirstChar &&\n unMapFirstChar &&\n label &&\n contentRef.current?.textContent\n ) {\n mapFirstChar(\n nodeId,\n contentRef.current?.textContent.substring(0, 1).toLowerCase()\n );\n\n return () => {\n unMapFirstChar(nodeId);\n };\n }\n return undefined;\n }, [mapFirstChar, unMapFirstChar, nodeId, label]);\n\n let ariaSelected;\n if (multiSelect) {\n ariaSelected = selected;\n } else if (selected) {\n /* single-selection trees unset aria-selected on un-selected items.\n *\n * If the tree does not support multiple selection, aria-selected\n * is set to true for the selected node and it is not present on any other node in the tree.\n * Source: https://www.w3.org/TR/wai-aria-practices/#TreeView\n */\n ariaSelected = true;\n }\n\n const handleFocus = useCallback(\n (event) => {\n // DOM focus stays on the tree which manages focus with aria-activedescendant\n if (event.target === event.currentTarget) {\n (event.target.ownerDocument || document)\n .getElementById(treeId)\n .focus({ preventScroll: true });\n }\n\n const unfocusable = !disabledItemsFocusable && disabled;\n if (\n !focused &&\n event.currentTarget === event.target &&\n !unfocusable &&\n focus\n ) {\n focus(event, nodeId);\n }\n },\n [disabled, disabledItemsFocusable, focus, focused, nodeId, treeId]\n );\n\n const handleExpansion = useCallback(\n (event) => {\n if (!disabled) {\n if (treeviewMode && !focused && focus) {\n focus(event, nodeId);\n }\n\n const multiple =\n multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);\n\n // If already expanded and trying to toggle selection don't close\n if (\n expandable &&\n isOpen &&\n !(multiple && isExpanded && isExpanded(nodeId))\n ) {\n if (toggleExpansion) toggleExpansion(event, nodeId);\n }\n }\n },\n [\n disabled,\n expandable,\n focus,\n focused,\n isExpanded,\n multiSelect,\n nodeId,\n toggleExpansion,\n treeviewMode,\n ]\n );\n\n const handleSelection = useCallback(\n (event) => {\n if (selectable && !disabled) {\n if (treeviewMode && !focused && focus) {\n focus(event, nodeId);\n }\n\n const multiple =\n multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);\n\n if (multiple) {\n if (event.shiftKey) {\n if (selectRange) return selectRange(event, { end: nodeId });\n } else {\n if (selectNode) return selectNode(event, nodeId, true);\n }\n } else {\n if (selectNode) return selectNode(event, nodeId);\n }\n } else {\n return false;\n }\n },\n [\n disabled,\n focus,\n focused,\n multiSelect,\n nodeId,\n selectNode,\n selectRange,\n selectable,\n treeviewMode,\n ]\n );\n\n const handleMouseDown = useCallback(\n (event) => {\n preventSelection(event, disabled);\n\n if (onMouseDown) {\n onMouseDown(event);\n }\n },\n [disabled, onMouseDown]\n );\n\n const handleClick = useCallback(\n (event) => {\n if (!disabled) {\n if (expandable && isOpen) {\n handleExpansion(event);\n }\n\n if (selectable) {\n handleSelection(event);\n }\n }\n\n if (onClick) {\n onClick(event);\n }\n },\n [\n disabled,\n expandable,\n handleExpansion,\n handleSelection,\n onClick,\n selectable,\n ]\n );\n\n const handleKeyDown = useCallback(\n (event) => {\n let isEventHandled = false;\n const { key } = event;\n\n if (\n event.altKey ||\n event.ctrlKey ||\n event.metaKey ||\n event.currentTarget !== event.target\n ) {\n return;\n }\n if (contentRef.current === event.currentTarget) {\n if (key === \"Enter\" || key === \" \") {\n if (expandable && isOpen) {\n isEventHandled = handleExpansion(event) as unknown as boolean;\n }\n\n if (selectable) {\n isEventHandled = handleSelection(event) as boolean;\n }\n }\n\n if (isEventHandled) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n },\n [expandable, handleExpansion, handleSelection, selectable]\n );\n\n const renderedContent = useMemo(\n () => (\n <StyledContent\n id={setId(id, \"button\")}\n component={href ? \"a\" : \"div\"}\n href={href}\n target={target}\n ref={contentRef}\n className={clsx(\n treeViewItemClasses.content,\n classes?.content,\n href != null && clsx(treeViewItemClasses.link, classes?.link),\n !isOpen && clsx(treeViewItemClasses.minimized, classes?.minimized)\n )}\n variant={disabled ? \"placeholderText\" : \"body\"}\n onClick={handleClick}\n onMouseDown={handleMouseDown}\n style={{\n paddingLeft:\n (expandable || icon != null ? 0 : 10) +\n level * (collapsible ? 32 : 10),\n }}\n {...(treeviewMode\n ? {\n role: \"button\",\n tabIndex: -1,\n onFocus: handleFocus,\n }\n : {\n role: \"button\",\n tabIndex: selectable || expandable ? 0 : -1,\n onKeyDown: handleKeyDown,\n \"aria-current\": selectable && selected ? \"page\" : undefined,\n \"aria-expanded\": expandable ? expanded : undefined,\n \"aria-controls\": expandable ? setId(id, \"group\") : undefined,\n \"aria-label\": payload?.label,\n })}\n >\n {isOpen && expandable && (expanded ? <DropUpXS /> : <DropDownXS />)}\n\n <IconWrapper\n icon={icon}\n label={payload?.label}\n hasChildren={Boolean(children)}\n showAvatar={\n !icon && level === 0 && !isOpen && collapsedMode === \"icon\"\n }\n isOpen={isOpen}\n disableTooltip={disableTooltip}\n />\n\n {isOpen && label}\n </StyledContent>\n ),\n [\n id,\n href,\n target,\n classes?.content,\n treeViewItemClasses.content,\n classes?.link,\n treeViewItemClasses.link,\n classes?.minimized,\n treeViewItemClasses.minimized,\n disabled,\n handleClick,\n handleMouseDown,\n expandable,\n icon,\n level,\n collapsible,\n treeviewMode,\n handleFocus,\n selectable,\n handleKeyDown,\n selected,\n expanded,\n label,\n disableTooltip,\n ]\n );\n\n const renderedChildren = useMemo(\n () =>\n children && (\n <StyledGroup\n id={setId(id, \"group\")}\n className={clsx(treeViewItemClasses.group, classes?.group)}\n role={treeviewMode ? \"group\" : undefined}\n >\n {children}\n </StyledGroup>\n ),\n [children, treeViewItemClasses.group, classes?.group, id, treeviewMode]\n );\n\n return (\n <StyledNode\n ref={handleRef}\n id={id ?? undefined}\n className={clsx(\n treeViewItemClasses?.node,\n classes?.node,\n className,\n disabled && clsx(treeViewItemClasses.disabled, classes?.disabled),\n expandable &&\n clsx(treeViewItemClasses.expandable, classes?.expandable),\n expandable &&\n !expanded &&\n clsx(treeViewItemClasses.collapsed, classes?.collapsed),\n expandable &&\n expanded &&\n clsx(treeViewItemClasses.expanded, classes?.expanded),\n selectable &&\n !disabled &&\n clsx(treeViewItemClasses.selectable, classes?.selectable),\n !disabled &&\n !selectable &&\n clsx(treeViewItemClasses.unselectable, classes?.unselectable),\n !disabled &&\n selectable &&\n selected &&\n clsx(treeViewItemClasses.selected, classes?.selected),\n !disabled &&\n selectable &&\n !selected &&\n clsx(treeViewItemClasses.unselected, classes?.unselected),\n focused && clsx(treeViewItemClasses.focused, classes?.focused),\n !isOpen &&\n collapsedMode == \"simple\" &&\n clsx(treeViewItemClasses.hide, classes?.hide),\n !isOpen &&\n collapsedMode == \"icon\" &&\n isChildSelected &&\n isChildSelected(nodeId) &&\n clsx(treeViewItemClasses.selected, classes?.selected)\n )}\n data-hasicon={icon != null ? true : undefined}\n {...(mode === \"treeview\" && {\n role: \"treeitem\",\n \"aria-selected\": ariaSelected,\n \"aria-expanded\": expandable ? expanded : undefined,\n \"aria-disabled\": disabled ? true : undefined,\n })}\n {...others}\n >\n {renderedContent}\n {isOpen && (\n <DescendantProvider id={nodeId} level={level + 1}>\n {renderedChildren}\n </DescendantProvider>\n )}\n </StyledNode>\n );\n }\n);\n"],"names":["preventSelection","event","disabled","shiftKey","ctrlKey","metaKey","preventDefault","HvVerticalNavigationTreeViewItem","forwardRef","props","ref","id","idProp","className","classes","disabledProp","selectable","selectableProp","nodeId","icon","label","href","target","payload","onClick","onMouseDown","onFocus","children","disableTooltip","others","treeViewControlContext","useContext","TreeViewControlContext","isExpanded","isSelected","isFocused","isDisabled","isChildSelected","TreeViewStateContext","treeId","mode","collapsible","toggleExpansion","multiSelect","selectNode","selectRange","disabledItemsFocusable","registerNode","unregisterNode","mapFirstChar","unMapFirstChar","focus","treeviewMode","treeitemElement","setTreeitemElement","useState","contentRef","useRef","handleRef","useForkRef","descendant","useMemo","element","isOpen","collapsedMode","VerticalNavigationContext","index","parentId","level","useDescendant","expandable","Array","isArray","expanded","focused","selected","useEffect","idAttribute","undefined","current","textContent","substring","toLowerCase","ariaSelected","handleFocus","useCallback","currentTarget","ownerDocument","document","getElementById","preventScroll","unfocusable","handleExpansion","multiple","handleSelection","end","handleMouseDown","handleClick","handleKeyDown","isEventHandled","key","altKey","stopPropagation","renderedContent","_jsxs","StyledContent","setId","component","clsx","treeViewItemClasses","content","link","minimized","variant","style","paddingLeft","role","tabIndex","onKeyDown","DropUpXS","DropDownXS","IconWrapper","hasChildren","Boolean","showAvatar","renderedChildren","StyledGroup","group","StyledNode","node","collapsed","unselectable","unselected","hide","DescendantProvider"],"mappings":";;;;;;;;;;;;;;;;AAgGA,MAAMA,mBAAmBA,CAACC,OAAOC,aAAa;AAC5C,MAAID,MAAME,YAAYF,MAAMG,WAAWH,MAAMI,WAAWH,UAAU;AAEhED,UAAMK,eAAgB;AAAA,EACxB;AACF;AAEO,MAAMC,mCAAmCC,MAAAA,WAC9C,CAACC,OAA8CC,QAAQ;;AAC/C,QAAA;AAAA,IACJC,IAAIC;AAAAA,IACJC;AAAAA,IACAC;AAAAA,IAEAZ,UAAUa,eAAe;AAAA,IAEzBC,YAAYC;AAAAA,IAEZC;AAAAA,IACAC,OAAO;AAAA,IACPC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IAEAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IAEAC;AAAAA,IAEAC;AAAAA,IAEA,GAAGC;AAAAA,EACDpB,IAAAA;AAEEqB,QAAAA,yBAAyBC,iBAAWC,gBAAAA,sBAAsB;AAC1D,QAAA;AAAA,IAAEC;AAAAA,IAAYC;AAAAA,IAAYC;AAAAA,IAAWC;AAAAA,IAAYC;AAAAA,EAAAA,IACrDN,MAAAA,WAAWO,gBAAAA,oBAAoB;AAE3B,QAAA;AAAA,IACJC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,EACErB,IAAAA;AAEJ,QAAMsB,eAAeZ,SAAS;AAE9B,MAAI7B,KAAoB;AAExB,MAAIC,UAAU,MAAM;AACbA,SAAAA;AAAAA,EAAAA,WACI2B,UAAUrB,QAAQ;AAC3BP,SAAM,GAAE4B,UAAUrB;AAAAA,EACpB;AAEA,QAAM,CAACmC,iBAAiBC,kBAAkB,IAAIC,eAAS,IAAI;AACrDC,QAAAA,aAAaC,aAAuB,IAAI;AACxCC,QAAAA,YAAYC,WAAAA,QAAWL,oBAAoB5C,GAAG;AAE9CkD,QAAAA,aAAaC,MAAAA,QACjB,OAAO;AAAA,IACLC,SAAST;AAAAA,IACT1C,IAAIO;AAAAA,EAEN,IAAA,CAACA,QAAQmC,eAAe,CAAC;AAGrB,QAAA;AAAA,IAAEU;AAAAA,IAAQC;AAAAA,EAAAA,IAAkBjC,MAAAA,WAAWkC,0BAAAA,yBAAyB;AAEhE,QAAA;AAAA,IAAEC;AAAAA,IAAOC;AAAAA,IAAUC;AAAAA,EAAAA,IAAUC,YAAAA,cAAcT,UAAU;AAE3D,QAAMU,aAAa7B,eAAe8B,MAAMC,QAAQ7C,QAAQ;AACxD,QAAM8C,WAAWxC,aAAaA,WAAWf,MAAM,IAAI;AACnD,QAAMwD,UAAUvC,YAAYA,UAAUjB,MAAM,IAAI;AAChD,QAAMyD,WAAWzC,aAAaA,WAAWhB,MAAM,IAAI;AACnD,QAAMhB,WAAWkC,aAAaA,WAAWlB,MAAM,IAAI;AAE7CF,QAAAA,aACJC,kBAAkB,OACdA,iBACA,CAACwB,eAAe,CAAC6B,cAAc,CAACP;AAEtCa,QAAAA,UAAU,MAAM;AAEV7B,QAAAA,gBAAgBC,kBAAkBkB,UAAU,IAAI;AACrC,mBAAA;AAAA,QACXvD,IAAIO;AAAAA,QACJ2D,aAAalE;AAAAA,QACbuD;AAAAA,QACAC;AAAAA,QACAnD;AAAAA,QACAsD;AAAAA,QACApE,UAAUa;AAAAA,QACVW;AAAAA,QACAH;AAAAA,MAAAA,CACD;AAED,aAAO,MAAM;AACXyB,uBAAe9B,MAAM;AAAA,MAAA;AAAA,IAEzB;AAEO4D,WAAAA;AAAAA,EACN,GAAA,CACD/B,cACAC,gBACAmB,UACAD,OACAhD,QACAoD,YACAvD,cACAJ,IACAK,YACAU,SACAH,OAAO,CACR;AAEDqD,QAAAA,UAAU,MAAM;;AACd,QACE3B,gBACAC,kBACA9B,WACAoC,MAAAA,WAAWuB,YAAXvB,gBAAAA,IAAoBwB,cACpB;AAEE9D,mBAAAA,SACAsC,gBAAWuB,YAAXvB,mBAAoBwB,YAAYC,UAAU,GAAG,GAAGC,aAAa;AAG/D,aAAO,MAAM;AACXhC,uBAAehC,MAAM;AAAA,MAAA;AAAA,IAEzB;AACO4D,WAAAA;AAAAA,KACN,CAAC7B,cAAcC,gBAAgBhC,QAAQE,KAAK,CAAC;AAE5C+D,MAAAA;AACJ,MAAIxC,aAAa;AACAgC,mBAAAA;AAAAA,aACNA,UAAU;AAOJ,mBAAA;AAAA,EACjB;AAEMS,QAAAA,cAAcC,kBACjBpF,CAAU,UAAA;AAELA,QAAAA,MAAMqB,WAAWrB,MAAMqF,eAAe;AACxC,OAACrF,MAAMqB,OAAOiE,iBAAiBC,UAC5BC,eAAelD,MAAM,EACrBY,MAAM;AAAA,QAAEuC,eAAe;AAAA,MAAA,CAAM;AAAA,IAClC;AAEMC,UAAAA,cAAc,CAAC7C,0BAA0B5C;AAE7C,QAAA,CAACwE,WACDzE,MAAMqF,kBAAkBrF,MAAMqB,UAC9B,CAACqE,eACDxC,OACA;AACAA,YAAMlD,OAAOiB,MAAM;AAAA,IACrB;AAAA,EAAA,GAEF,CAAChB,UAAU4C,wBAAwBK,OAAOuB,SAASxD,QAAQqB,MAAM,CAAC;AAG9DqD,QAAAA,kBAAkBP,kBACrBpF,CAAU,UAAA;AACT,QAAI,CAACC,UAAU;AACTkD,UAAAA,gBAAgB,CAACsB,WAAWvB,OAAO;AACrCA,cAAMlD,OAAOiB,MAAM;AAAA,MACrB;AAEA,YAAM2E,WACJlD,gBAAgB1C,MAAME,YAAYF,MAAMG,WAAWH,MAAMI;AAG3D,UACEiE,cACAP,UACA,EAAE8B,YAAY5D,cAAcA,WAAWf,MAAM,IAC7C;AACIwB,YAAAA;AAAiBA,0BAAgBzC,OAAOiB,MAAM;AAAA,MACpD;AAAA,IACF;AAAA,EACF,GACA,CACEhB,UACAoE,YACAnB,OACAuB,SACAzC,YACAU,aACAzB,QACAwB,iBACAU,YAAY,CACb;AAGG0C,QAAAA,kBAAkBT,kBACrBpF,CAAU,UAAA;AACLe,QAAAA,cAAc,CAACd,UAAU;AACvBkD,UAAAA,gBAAgB,CAACsB,WAAWvB,OAAO;AACrCA,cAAMlD,OAAOiB,MAAM;AAAA,MACrB;AAEA,YAAM2E,WACJlD,gBAAgB1C,MAAME,YAAYF,MAAMG,WAAWH,MAAMI;AAE3D,UAAIwF,UAAU;AACZ,YAAI5F,MAAME,UAAU;AACd0C,cAAAA;AAAa,mBAAOA,YAAY5C,OAAO;AAAA,cAAE8F,KAAK7E;AAAAA,YAAAA,CAAQ;AAAA,QAAA,OACrD;AACD0B,cAAAA;AAAmBA,mBAAAA,WAAW3C,OAAOiB,QAAQ,IAAI;AAAA,QACvD;AAAA,MAAA,OACK;AACD0B,YAAAA;AAAmBA,iBAAAA,WAAW3C,OAAOiB,MAAM;AAAA,MACjD;AAAA,IAAA,OACK;AACE,aAAA;AAAA,IACT;AAAA,EACF,GACA,CACEhB,UACAiD,OACAuB,SACA/B,aACAzB,QACA0B,YACAC,aACA7B,YACAoC,YAAY,CACb;AAGG4C,QAAAA,kBAAkBX,kBACrBpF,CAAU,UAAA;AACTD,qBAAiBC,OAAOC,QAAQ;AAEhC,QAAIuB,aAAa;AACfA,kBAAYxB,KAAK;AAAA,IACnB;AAAA,EAAA,GAEF,CAACC,UAAUuB,WAAW,CAAC;AAGnBwE,QAAAA,cAAcZ,kBACjBpF,CAAU,UAAA;AACT,QAAI,CAACC,UAAU;AACb,UAAIoE,cAAcP,QAAQ;AACxB6B,wBAAgB3F,KAAK;AAAA,MACvB;AAEA,UAAIe,YAAY;AACd8E,wBAAgB7F,KAAK;AAAA,MACvB;AAAA,IACF;AAEA,QAAIuB,SAAS;AACXA,cAAQvB,KAAK;AAAA,IACf;AAAA,EAAA,GAEF,CACEC,UACAoE,YACAsB,iBACAE,iBACAtE,SACAR,UAAU,CACX;AAGGkF,QAAAA,gBAAgBb,kBACnBpF,CAAU,UAAA;AACT,QAAIkG,iBAAiB;AACf,UAAA;AAAA,MAAEC;AAAAA,IAAQnG,IAAAA;AAGdA,QAAAA,MAAMoG,UACNpG,MAAMG,WACNH,MAAMI,WACNJ,MAAMqF,kBAAkBrF,MAAMqB,QAC9B;AACA;AAAA,IACF;AACIkC,QAAAA,WAAWuB,YAAY9E,MAAMqF,eAAe;AAC1Cc,UAAAA,QAAQ,WAAWA,QAAQ,KAAK;AAClC,YAAI9B,cAAcP,QAAQ;AACxBoC,2BAAiBP,gBAAgB3F,KAAK;AAAA,QACxC;AAEA,YAAIe,YAAY;AACdmF,2BAAiBL,gBAAgB7F,KAAK;AAAA,QACxC;AAAA,MACF;AAEA,UAAIkG,gBAAgB;AAClBlG,cAAMK,eAAgB;AACtBL,cAAMqG,gBAAiB;AAAA,MACzB;AAAA,IACF;AAAA,KAEF,CAAChC,YAAYsB,iBAAiBE,iBAAiB9E,UAAU,CAAC;AAG5D,QAAMuF,kBAAkB1C,MAAAA,QACtB,MACE2C,2BAAAA,KAACC,oBAAAA,eAAa;AAAA,IACZ9F,IAAI+F,MAAAA,MAAM/F,IAAI,QAAQ;AAAA,IACtBgG,WAAWtF,OAAO,MAAM;AAAA,IACxBA;AAAAA,IACAC;AAAAA,IACAZ,KAAK8C;AAAAA,IACL3C,WAAW+F,cAAAA,QACTC,oBAAoBC,QAAAA,SACpBhG,mCAASgG,SACTzF,QAAQ,QAAQuF,cAAAA,QAAKC,oBAAAA,QAAoBE,MAAMjG,mCAASiG,IAAI,GAC5D,CAAChD,UAAU6C,cAAAA,QAAKC,oBAAAA,QAAoBG,WAAWlG,mCAASkG,SAAS,CAAC;AAAA,IAEpEC,SAAS/G,WAAW,oBAAoB;AAAA,IACxCsB,SAASyE;AAAAA,IACTxE,aAAauE;AAAAA,IACbkB,OAAO;AAAA,MACLC,cACG7C,cAAcnD,QAAQ,OAAO,IAAI,MAClCiD,SAAS3B,cAAc,KAAK;AAAA,IAChC;AAAA,IAAE,GACGW,eACD;AAAA,MACEgE,MAAM;AAAA,MACNC,UAAU;AAAA,MACV3F,SAAS0D;AAAAA,IAAAA,IAEX;AAAA,MACEgC,MAAM;AAAA,MACNC,UAAUrG,cAAcsD,aAAa,IAAI;AAAA,MACzCgD,WAAWpB;AAAAA,MACX,gBAAgBlF,cAAc2D,WAAW,SAASG;AAAAA,MAClD,iBAAiBR,aAAaG,WAAWK;AAAAA,MACzC,iBAAiBR,aAAaoC,MAAM/F,MAAAA,IAAI,OAAO,IAAImE;AAAAA,MACnD,cAAcvD,mCAASH;AAAAA,IACzB;AAAA,IAACO,UAAA,CAEJoC,UAAUO,eAAeG,0CAAY8C,+DAAeC,gBAAAA,YAAU,CAAA,CAAA,mCAE9DC,YAAAA,aAAW;AAAA,MACVtG;AAAAA,MACAC,OAAOG,mCAASH;AAAAA,MAChBsG,aAAaC,QAAQhG,QAAQ;AAAA,MAC7BiG,YACE,CAACzG,QAAQiD,UAAU,KAAK,CAACL,UAAUC,kBAAkB;AAAA,MAEvDD;AAAAA,MACAnC;AAAAA,IAAAA,CACA,GAEDmC,UAAU3C,KAAK;AAAA,EAAA,CAAA,GAGpB,CACET,IACAU,MACAC,QACAR,mCAASgG,SACTD,oBAAAA,QAAoBC,SACpBhG,mCAASiG,MACTF,oBAAAA,QAAoBE,MACpBjG,mCAASkG,WACTH,4BAAoBG,WACpB9G,UACA+F,aACAD,iBACA1B,YACAnD,MACAiD,OACA3B,aACAW,cACAgC,aACApE,YACAkF,eACAvB,UACAF,UACArD,OACAQ,cAAc,CACf;AAGH,QAAMiG,mBAAmBhE,MAAAA,QACvB,MACElC,2CACGmG,oBAAAA,aAAW;AAAA,IACVnH,IAAI+F,MAAAA,MAAM/F,IAAI,OAAO;AAAA,IACrBE,WAAW+F,cAAAA,QAAKC,oBAAAA,QAAoBkB,OAAOjH,mCAASiH,KAAK;AAAA,IACzDX,MAAMhE,eAAe,UAAU0B;AAAAA,IAAUnD;AAAAA,EAAAA,CAEhC,GAGf,CAACA,UAAUkF,oBAAAA,QAAoBkB,OAAOjH,mCAASiH,OAAOpH,IAAIyC,YAAY,CAAC;AAGzE,yCACG4E,oBAAAA,YAAU;AAAA,IACTtH,KAAKgD;AAAAA,IACL/C,IAAIA,MAAMmE;AAAAA,IACVjE,WAAW+F,cACTC,SAAAA,qCAAAA,mBAAqBoB,MACrBnH,mCAASmH,MACTpH,WACAX,YAAY0G,sBAAKC,oBAAAA,QAAoB3G,UAAUY,mCAASZ,QAAQ,GAChEoE,cACEsC,sBAAKC,oBAAAA,QAAoBvC,YAAYxD,mCAASwD,UAAU,GAC1DA,cACE,CAACG,YACDmC,cAAAA,QAAKC,oBAAAA,QAAoBqB,WAAWpH,mCAASoH,SAAS,GACxD5D,cACEG,YACAmC,sBAAKC,oBAAAA,QAAoBpC,UAAU3D,mCAAS2D,QAAQ,GACtDzD,cACE,CAACd,YACD0G,sBAAKC,oBAAAA,QAAoB7F,YAAYF,mCAASE,UAAU,GAC1D,CAACd,YACC,CAACc,cACD4F,cAAAA,QAAKC,oBAAAA,QAAoBsB,cAAcrH,mCAASqH,YAAY,GAC9D,CAACjI,YACCc,cACA2D,YACAiC,sBAAKC,4BAAoBlC,UAAU7D,mCAAS6D,QAAQ,GACtD,CAACzE,YACCc,cACA,CAAC2D,YACDiC,cAAAA,QAAKC,4BAAoBuB,YAAYtH,mCAASsH,UAAU,GAC1D1D,WAAWkC,cAAAA,QAAKC,oBAAAA,QAAoBnC,SAAS5D,mCAAS4D,OAAO,GAC7D,CAACX,UACCC,iBAAiB,YACjB4C,sBAAKC,4BAAoBwB,MAAMvH,mCAASuH,IAAI,GAC9C,CAACtE,UACCC,iBAAiB,UACjB3B,mBACAA,gBAAgBnB,MAAM,KACtB0F,sBAAKC,4BAAoBlC,UAAU7D,mCAAS6D,QAAQ,CAAC;AAAA,IAEzD,gBAAcxD,QAAQ,OAAO,OAAO2D;AAAAA,IAAU,GACzCtC,SAAS,cAAc;AAAA,MAC1B4E,MAAM;AAAA,MACN,iBAAiBjC;AAAAA,MACjB,iBAAiBb,aAAaG,WAAWK;AAAAA,MACzC,iBAAiB5E,WAAW,OAAO4E;AAAAA,IACrC;AAAA,IAAC,GACGjD;AAAAA,IAAMF,WAET4E,iBACAxC,yCACEuE,YAAAA,oBAAkB;AAAA,MAAC3H,IAAIO;AAAAA,MAAQkD,OAAOA,QAAQ;AAAA,MAAEzC,UAC9CkG;AAAAA,IAAAA,CAEJ,CAAA;AAAA,EAAA,CACU;AAEjB,CAAC;;"}
@@ -4,6 +4,7 @@ const clsx = require("clsx");
4
4
  const React = require("react");
5
5
  const VerticalNavigation_styles = require("./VerticalNavigation.styles.cjs");
6
6
  const verticalNavigationClasses = require("./verticalNavigationClasses.cjs");
7
+ const VerticalNavigation_utils = require("./utils/VerticalNavigation.utils.cjs");
7
8
  const jsxRuntime = require("@emotion/react/jsx-runtime");
8
9
  const NavigationSlider_utils = require("./NavigationSlider/utils/NavigationSlider.utils.cjs");
9
10
  const VerticalNavigationContext = require("./VerticalNavigationContext.cjs");
@@ -25,6 +26,7 @@ const HvVerticalNavigation = ({
25
26
  const withParentData = React.useMemo(() => NavigationSlider_utils.fillDataWithParentId(parentData), [parentData]);
26
27
  const initialParentItem = React.useMemo(() => NavigationSlider_utils.getParentItemById(withParentData, parentSelected), [withParentData, parentSelected]);
27
28
  const [parentItem, setParentItem] = React.useState(initialParentItem);
29
+ const hasAnyChildWithData = React.useMemo(() => VerticalNavigation_utils.hasChildNavigationItems(parentData), [parentData]);
28
30
  React.useEffect(() => setHeaderTitle(parentItem == null ? void 0 : parentItem.label), [parentItem, setParentItem]);
29
31
  const navigateToParentHandler = () => {
30
32
  setParentItem(NavigationSlider_utils.getParentItemById(withParentData, parentItem.id));
@@ -46,13 +48,15 @@ const HvVerticalNavigation = ({
46
48
  parentData,
47
49
  setParentData,
48
50
  parentSelected,
49
- setParentSelected
50
- }), [open, collapsedMode, slider, headerTitle, setHeaderTitle, parentItem, withParentData, navigateToChildHandler, navigateToParentHandler]);
51
+ setParentSelected,
52
+ hasAnyChildWithData
53
+ }), [open, collapsedMode, slider, headerTitle, setHeaderTitle, parentItem, withParentData, navigateToChildHandler, navigateToParentHandler, hasAnyChildWithData]);
51
54
  const content = /* @__PURE__ */ jsxRuntime.jsx(VerticalNavigationContext.VerticalNavigationContext.Provider, {
52
55
  value,
53
56
  children: /* @__PURE__ */ jsxRuntime.jsx(VerticalNavigation_styles.StyledRoot, {
54
57
  id,
55
58
  className: clsx__default.default(className, verticalNavigationClasses.default.root, classes == null ? void 0 : classes.root, !open && verticalNavigationClasses.default.collapsed, slider && verticalNavigationClasses.default.slider, classes == null ? void 0 : classes.collapsed),
59
+ hasAnyChildWithData,
56
60
  ...others,
57
61
  children
58
62
  })
@@ -1 +1 @@
1
- {"version":3,"file":"VerticalNavigation.cjs","sources":["../../../../src/components/VerticalNavigation/VerticalNavigation.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { StyledRoot } from \"./VerticalNavigation.styles\";\nimport verticalNavigationClasses, {\n HvVerticalNavigationClasses,\n} from \"./verticalNavigationClasses\";\nimport { NavigationData, VerticalNavigationContext } from \"./\";\nimport {\n fillDataWithParentId,\n getNavigationItemById,\n getParentItemById,\n} from \"./NavigationSlider/utils\";\n\nexport type HvVerticalNavigationProps = {\n /**\n * Id to be applied to the root node.\n */\n id?: string;\n /**\n * Class names to be applied.\n */\n className?: string;\n /**\n * A Jss Object used to override or extend the styles applied to the component.\n */\n classes?: HvVerticalNavigationClasses;\n /**\n * Current State of the Vertical Navigation Collapse\n */\n open?: boolean;\n /**\n * Collpased Mode for the Vertical Navigation, the default value is \"simple\".\n */\n collapsedMode?: HvVerticalNavigationMode;\n /**\n * Boolean to determine if treeview is in slider mode (for mobile navigation), the default value is false.\n */\n slider?: boolean;\n /**\n * The content inside the actions container.\n */\n children?: React.ReactNode;\n};\n\n/**\n * Navigation enables users to move through an app to complete tasks.\n *\n * It is recommended to use vertical navigation when your application requires global navigation that is displayed on the left.\n * While vertical navigation menus generally consume more space than their horizontal counterparts, they have become more popular as desktop monitors move to wide-screen formats.\n *\n * Even thou both the hierarchically organized data and the visual style ressemble a treeview-like structure, the [Treeview Design Pattern](https://w3c.github.io/aria-practices/#TreeView)\n * isn't necessarily the most appropriate.\n *\n * The tree role provides complex functionality that is not needed for typical site navigation, and changes the most common keyboard navigation using TAB.\n *\n * The [Disclosure Design Pattern](https://w3c.github.io/aria-practices/#disclosure) is more suited for typical site navigation, with expandable groups of links.\n * However it can be tedious to TAB through all navigation items to reach the actions panel.\n *\n * Both modes are available via the `mode` property and each app should choose the most appropriate.\n */\nexport const HvVerticalNavigation = ({\n id,\n className,\n classes,\n\n children,\n\n open = true,\n\n collapsedMode = \"simple\",\n\n slider = false,\n\n ...others\n}: HvVerticalNavigationProps) => {\n const [parentData, setParentData] = useState<NavigationData[]>([]);\n\n const [parentSelected, setParentSelected] = useState();\n\n const [headerTitle, setHeaderTitle] = useState<string | undefined>();\n\n // navigationSlider\n const withParentData = useMemo(\n () => fillDataWithParentId(parentData),\n [parentData]\n );\n\n const initialParentItem = useMemo(\n () => getParentItemById(withParentData, parentSelected),\n [withParentData, parentSelected]\n );\n\n const [parentItem, setParentItem] = useState(initialParentItem);\n\n useEffect(\n () => setHeaderTitle(parentItem?.label),\n [parentItem, setParentItem]\n );\n\n const navigateToParentHandler = () => {\n setParentItem(getParentItemById(withParentData, parentItem.id));\n };\n\n const navigateToChildHandler = (event, item) => {\n setParentItem(getNavigationItemById(withParentData, item.id));\n event.stopPropagation();\n };\n\n const value = useMemo(\n () => ({\n isOpen: open,\n collapsedMode,\n slider,\n headerTitle,\n setHeaderTitle,\n\n parentItem,\n withParentData,\n navigateToChildHandler,\n navigateToParentHandler,\n\n parentData,\n setParentData,\n parentSelected,\n setParentSelected,\n }),\n [\n open,\n collapsedMode,\n slider,\n headerTitle,\n setHeaderTitle,\n parentItem,\n withParentData,\n navigateToChildHandler,\n navigateToParentHandler,\n ]\n );\n\n const content = (\n <VerticalNavigationContext.Provider value={value}>\n <StyledRoot\n id={id}\n className={clsx(\n className,\n verticalNavigationClasses.root,\n classes?.root,\n !open && verticalNavigationClasses.collapsed,\n slider && verticalNavigationClasses.slider,\n classes?.collapsed\n )}\n {...others}\n >\n {children}\n </StyledRoot>\n </VerticalNavigationContext.Provider>\n );\n\n return content;\n};\n\nexport type HvVerticalNavigationMode = \"icon\" | \"simple\";\n\nexport type HvVerticalNavigationPosition =\n | \"static\"\n | \"relative\"\n | \"fixed\"\n | \"absolute\";\n"],"names":["HvVerticalNavigation","id","className","classes","children","open","collapsedMode","slider","others","parentData","setParentData","useState","parentSelected","setParentSelected","headerTitle","setHeaderTitle","withParentData","useMemo","fillDataWithParentId","initialParentItem","getParentItemById","parentItem","setParentItem","useEffect","label","navigateToParentHandler","navigateToChildHandler","event","item","getNavigationItemById","stopPropagation","value","isOpen","content","VerticalNavigationContext","Provider","StyledRoot","clsx","verticalNavigationClasses","root","collapsed"],"mappings":";;;;;;;;;;;AA4DO,MAAMA,uBAAuBA,CAAC;AAAA,EACnCC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EAEAC;AAAAA,EAEAC,OAAO;AAAA,EAEPC,gBAAgB;AAAA,EAEhBC,SAAS;AAAA,EAET,GAAGC;AACsB,MAAM;AAC/B,QAAM,CAACC,YAAYC,aAAa,IAAIC,MAAAA,SAA2B,CAAE,CAAA;AAEjE,QAAM,CAACC,gBAAgBC,iBAAiB,IAAIF,MAAU,SAAA;AAEtD,QAAM,CAACG,aAAaC,cAAc,IAAIJ,MAA8B,SAAA;AAG9DK,QAAAA,iBAAiBC,MAAAA,QACrB,MAAMC,uBAAAA,qBAAqBT,UAAU,GACrC,CAACA,UAAU,CAAC;AAGRU,QAAAA,oBAAoBF,cACxB,MAAMG,yCAAkBJ,gBAAgBJ,cAAc,GACtD,CAACI,gBAAgBJ,cAAc,CAAC;AAGlC,QAAM,CAACS,YAAYC,aAAa,IAAIX,eAASQ,iBAAiB;AAG5DI,kBAAA,MAAMR,eAAeM,yCAAYG,KAAK,GACtC,CAACH,YAAYC,aAAa,CAAC;AAG7B,QAAMG,0BAA0BA,MAAM;AACpCH,kBAAcF,uBAAAA,kBAAkBJ,gBAAgBK,WAAWpB,EAAE,CAAC;AAAA,EAAA;AAG1DyB,QAAAA,yBAAyBA,CAACC,OAAOC,SAAS;AAC9CN,kBAAcO,uBAAAA,sBAAsBb,gBAAgBY,KAAK3B,EAAE,CAAC;AAC5D0B,UAAMG,gBAAiB;AAAA,EAAA;AAGnBC,QAAAA,QAAQd,MAAAA,QACZ,OAAO;AAAA,IACLe,QAAQ3B;AAAAA,IACRC;AAAAA,IACAC;AAAAA,IACAO;AAAAA,IACAC;AAAAA,IAEAM;AAAAA,IACAL;AAAAA,IACAU;AAAAA,IACAD;AAAAA,IAEAhB;AAAAA,IACAC;AAAAA,IACAE;AAAAA,IACAC;AAAAA,EACF,IACA,CACER,MACAC,eACAC,QACAO,aACAC,gBACAM,YACAL,gBACAU,wBACAD,uBAAuB,CACxB;AAGGQ,QAAAA,UACHC,2BAAAA,IAAAA,0BAAAA,0BAA0BC,UAAQ;AAAA,IAACJ;AAAAA,IAAa3B,yCAC9CgC,sCAAU;AAAA,MACTnC;AAAAA,MACAC,WAAWmC,cAAAA,QACTnC,WACAoC,0BAAAA,QAA0BC,MAC1BpC,mCAASoC,MACT,CAAClC,QAAQiC,kCAA0BE,WACnCjC,UAAU+B,0BAA0B/B,QAAAA,QACpCJ,mCAASqC,SAAS;AAAA,MAClB,GACEhC;AAAAA,MAAMJ;AAAAA,IAAAA,CAED;AAAA,EAAA,CAGd;AAEM6B,SAAAA;AACT;;"}
1
+ {"version":3,"file":"VerticalNavigation.cjs","sources":["../../../../src/components/VerticalNavigation/VerticalNavigation.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { StyledRoot } from \"./VerticalNavigation.styles\";\nimport verticalNavigationClasses, {\n HvVerticalNavigationClasses,\n} from \"./verticalNavigationClasses\";\nimport { NavigationData, VerticalNavigationContext } from \"./\";\nimport {\n fillDataWithParentId,\n getNavigationItemById,\n getParentItemById,\n} from \"./NavigationSlider/utils\";\nimport { hasChildNavigationItems } from \"./utils/VerticalNavigation.utils\";\n\nexport type HvVerticalNavigationProps = {\n /**\n * Id to be applied to the root node.\n */\n id?: string;\n /**\n * Class names to be applied.\n */\n className?: string;\n /**\n * A Jss Object used to override or extend the styles applied to the component.\n */\n classes?: HvVerticalNavigationClasses;\n /**\n * Current State of the Vertical Navigation Collapse\n */\n open?: boolean;\n /**\n * Collpased Mode for the Vertical Navigation, the default value is \"simple\".\n */\n collapsedMode?: HvVerticalNavigationMode;\n /**\n * Boolean to determine if treeview is in slider mode (for mobile navigation), the default value is false.\n */\n slider?: boolean;\n /**\n * The content inside the actions container.\n */\n children?: React.ReactNode;\n};\n\n/**\n * Navigation enables users to move through an app to complete tasks.\n *\n * It is recommended to use vertical navigation when your application requires global navigation that is displayed on the left.\n * While vertical navigation menus generally consume more space than their horizontal counterparts, they have become more popular as desktop monitors move to wide-screen formats.\n *\n * Even thou both the hierarchically organized data and the visual style ressemble a treeview-like structure, the [Treeview Design Pattern](https://w3c.github.io/aria-practices/#TreeView)\n * isn't necessarily the most appropriate.\n *\n * The tree role provides complex functionality that is not needed for typical site navigation, and changes the most common keyboard navigation using TAB.\n *\n * The [Disclosure Design Pattern](https://w3c.github.io/aria-practices/#disclosure) is more suited for typical site navigation, with expandable groups of links.\n * However it can be tedious to TAB through all navigation items to reach the actions panel.\n *\n * Both modes are available via the `mode` property and each app should choose the most appropriate.\n */\nexport const HvVerticalNavigation = ({\n id,\n className,\n classes,\n\n children,\n\n open = true,\n\n collapsedMode = \"simple\",\n\n slider = false,\n\n ...others\n}: HvVerticalNavigationProps) => {\n const [parentData, setParentData] = useState<NavigationData[]>([]);\n\n const [parentSelected, setParentSelected] = useState();\n\n const [headerTitle, setHeaderTitle] = useState<string | undefined>();\n\n // navigationSlider\n const withParentData = useMemo(\n () => fillDataWithParentId(parentData),\n [parentData]\n );\n\n const initialParentItem = useMemo(\n () => getParentItemById(withParentData, parentSelected),\n [withParentData, parentSelected]\n );\n\n const [parentItem, setParentItem] = useState(initialParentItem);\n\n const hasAnyChildWithData = useMemo(\n () => hasChildNavigationItems(parentData),\n [parentData]\n );\n\n useEffect(\n () => setHeaderTitle(parentItem?.label),\n [parentItem, setParentItem]\n );\n\n const navigateToParentHandler = () => {\n setParentItem(getParentItemById(withParentData, parentItem.id));\n };\n\n const navigateToChildHandler = (event, item) => {\n setParentItem(getNavigationItemById(withParentData, item.id));\n event.stopPropagation();\n };\n\n const value = useMemo(\n () => ({\n isOpen: open,\n collapsedMode,\n slider,\n headerTitle,\n setHeaderTitle,\n\n parentItem,\n withParentData,\n navigateToChildHandler,\n navigateToParentHandler,\n\n parentData,\n setParentData,\n parentSelected,\n setParentSelected,\n hasAnyChildWithData,\n }),\n [\n open,\n collapsedMode,\n slider,\n headerTitle,\n setHeaderTitle,\n parentItem,\n withParentData,\n navigateToChildHandler,\n navigateToParentHandler,\n hasAnyChildWithData,\n ]\n );\n\n const content = (\n <VerticalNavigationContext.Provider value={value}>\n <StyledRoot\n id={id}\n className={clsx(\n className,\n verticalNavigationClasses.root,\n classes?.root,\n !open && verticalNavigationClasses.collapsed,\n slider && verticalNavigationClasses.slider,\n classes?.collapsed\n )}\n hasAnyChildWithData={hasAnyChildWithData}\n {...others}\n >\n {children}\n </StyledRoot>\n </VerticalNavigationContext.Provider>\n );\n\n return content;\n};\n\nexport type HvVerticalNavigationMode = \"icon\" | \"simple\";\n\nexport type HvVerticalNavigationPosition =\n | \"static\"\n | \"relative\"\n | \"fixed\"\n | \"absolute\";\n"],"names":["HvVerticalNavigation","id","className","classes","children","open","collapsedMode","slider","others","parentData","setParentData","useState","parentSelected","setParentSelected","headerTitle","setHeaderTitle","withParentData","useMemo","fillDataWithParentId","initialParentItem","getParentItemById","parentItem","setParentItem","hasAnyChildWithData","hasChildNavigationItems","useEffect","label","navigateToParentHandler","navigateToChildHandler","event","item","getNavigationItemById","stopPropagation","value","isOpen","content","VerticalNavigationContext","Provider","StyledRoot","clsx","verticalNavigationClasses","root","collapsed"],"mappings":";;;;;;;;;;;;AA6DO,MAAMA,uBAAuBA,CAAC;AAAA,EACnCC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EAEAC;AAAAA,EAEAC,OAAO;AAAA,EAEPC,gBAAgB;AAAA,EAEhBC,SAAS;AAAA,EAET,GAAGC;AACsB,MAAM;AAC/B,QAAM,CAACC,YAAYC,aAAa,IAAIC,MAAAA,SAA2B,CAAE,CAAA;AAEjE,QAAM,CAACC,gBAAgBC,iBAAiB,IAAIF,MAAU,SAAA;AAEtD,QAAM,CAACG,aAAaC,cAAc,IAAIJ,MAA8B,SAAA;AAG9DK,QAAAA,iBAAiBC,MAAAA,QACrB,MAAMC,uBAAAA,qBAAqBT,UAAU,GACrC,CAACA,UAAU,CAAC;AAGRU,QAAAA,oBAAoBF,cACxB,MAAMG,yCAAkBJ,gBAAgBJ,cAAc,GACtD,CAACI,gBAAgBJ,cAAc,CAAC;AAGlC,QAAM,CAACS,YAAYC,aAAa,IAAIX,eAASQ,iBAAiB;AAExDI,QAAAA,sBAAsBN,MAAAA,QAC1B,MAAMO,yBAAAA,wBAAwBf,UAAU,GACxC,CAACA,UAAU,CAAC;AAIZgB,kBAAA,MAAMV,eAAeM,yCAAYK,KAAK,GACtC,CAACL,YAAYC,aAAa,CAAC;AAG7B,QAAMK,0BAA0BA,MAAM;AACpCL,kBAAcF,uBAAAA,kBAAkBJ,gBAAgBK,WAAWpB,EAAE,CAAC;AAAA,EAAA;AAG1D2B,QAAAA,yBAAyBA,CAACC,OAAOC,SAAS;AAC9CR,kBAAcS,uBAAAA,sBAAsBf,gBAAgBc,KAAK7B,EAAE,CAAC;AAC5D4B,UAAMG,gBAAiB;AAAA,EAAA;AAGnBC,QAAAA,QAAQhB,MAAAA,QACZ,OAAO;AAAA,IACLiB,QAAQ7B;AAAAA,IACRC;AAAAA,IACAC;AAAAA,IACAO;AAAAA,IACAC;AAAAA,IAEAM;AAAAA,IACAL;AAAAA,IACAY;AAAAA,IACAD;AAAAA,IAEAlB;AAAAA,IACAC;AAAAA,IACAE;AAAAA,IACAC;AAAAA,IACAU;AAAAA,EAEF,IAAA,CACElB,MACAC,eACAC,QACAO,aACAC,gBACAM,YACAL,gBACAY,wBACAD,yBACAJ,mBAAmB,CACpB;AAGGY,QAAAA,UACHC,2BAAAA,IAAAA,0BAAAA,0BAA0BC,UAAQ;AAAA,IAACJ;AAAAA,IAAa7B,yCAC9CkC,sCAAU;AAAA,MACTrC;AAAAA,MACAC,WAAWqC,cAAAA,QACTrC,WACAsC,0BAAAA,QAA0BC,MAC1BtC,mCAASsC,MACT,CAACpC,QAAQmC,kCAA0BE,WACnCnC,UAAUiC,0BAA0BjC,QAAAA,QACpCJ,mCAASuC,SAAS;AAAA,MAEpBnB;AAAAA,MAAyC,GACrCf;AAAAA,MAAMJ;AAAAA,IAAAA,CAED;AAAA,EAAA,CAGd;AAEM+B,SAAAA;AACT;;"}
@@ -10,16 +10,18 @@ const StyledRoot = /* @__PURE__ */ _styled__default.default("div", process.env.N
10
10
  } : {
11
11
  target: "eyka99t0",
12
12
  label: "StyledRoot"
13
- })({
13
+ })(({
14
+ hasAnyChildWithData
15
+ }) => ({
14
16
  display: "flex",
15
17
  flexDirection: "column",
16
18
  justifyContent: uikitStyles.theme.verticalNavigation.justifyContent,
17
- width: "100%",
19
+ width: "220px",
18
20
  background: uikitStyles.theme.colors.atmo1,
19
21
  boxShadow: uikitStyles.theme.colors.shadow,
20
22
  clipPath: "inset(0px -12px 0px 0px)",
21
23
  [`&.${verticalNavigationClasses.default.collapsed}`]: {
22
- width: "56px",
24
+ width: hasAnyChildWithData ? "66px" : "56px",
23
25
  "& > :first-of-type:not(:last-child)": {
24
26
  padding: uikitStyles.theme.spacing(["sm", "xs", "xs", "xs"])
25
27
  },
@@ -43,6 +45,6 @@ const StyledRoot = /* @__PURE__ */ _styled__default.default("div", process.env.N
43
45
  borderBottom: `3px solid ${uikitStyles.theme.colors.atmo2}`
44
46
  }
45
47
  }
46
- }, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2h2LXVpa2l0LXJlYWN0L2h2LXVpa2l0LXJlYWN0L3BhY2thZ2VzL2NvcmUvc3JjL2NvbXBvbmVudHMvVmVydGljYWxOYXZpZ2F0aW9uL1ZlcnRpY2FsTmF2aWdhdGlvbi5zdHlsZXMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUkwQiIsImZpbGUiOiIvaG9tZS9ydW5uZXIvd29yay9odi11aWtpdC1yZWFjdC9odi11aWtpdC1yZWFjdC9wYWNrYWdlcy9jb3JlL3NyYy9jb21wb25lbnRzL1ZlcnRpY2FsTmF2aWdhdGlvbi9WZXJ0aWNhbE5hdmlnYXRpb24uc3R5bGVzLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZFwiO1xuaW1wb3J0IHsgdGhlbWUgfSBmcm9tIFwiQGhpdGFjaGl2YW50YXJhL3Vpa2l0LXN0eWxlc1wiO1xuaW1wb3J0IHZlcnRpY2FsTmF2aWdhdGlvbkNsYXNzZXMgZnJvbSBcIi4vdmVydGljYWxOYXZpZ2F0aW9uQ2xhc3Nlc1wiO1xuXG5leHBvcnQgY29uc3QgU3R5bGVkUm9vdCA9IHN0eWxlZChcImRpdlwiKSh7XG4gIGRpc3BsYXk6IFwiZmxleFwiLFxuICBmbGV4RGlyZWN0aW9uOiBcImNvbHVtblwiLFxuICBqdXN0aWZ5Q29udGVudDogdGhlbWUudmVydGljYWxOYXZpZ2F0aW9uLmp1c3RpZnlDb250ZW50LFxuXG4gIHdpZHRoOiBcIjEwMCVcIixcblxuICBiYWNrZ3JvdW5kOiB0aGVtZS5jb2xvcnMuYXRtbzEsXG4gIGJveFNoYWRvdzogdGhlbWUuY29sb3JzLnNoYWRvdyxcbiAgY2xpcFBhdGg6IFwiaW5zZXQoMHB4IC0xMnB4IDBweCAwcHgpXCIsXG5cbiAgW2AmLiR7dmVydGljYWxOYXZpZ2F0aW9uQ2xhc3Nlcy5jb2xsYXBzZWR9YF06IHtcbiAgICB3aWR0aDogXCI1NnB4XCIsXG5cbiAgICBcIiYgPiA6Zmlyc3Qtb2YtdHlwZTpub3QoOmxhc3QtY2hpbGQpXCI6IHtcbiAgICAgIHBhZGRpbmc6IHRoZW1lLnNwYWNpbmcoW1wic21cIiwgXCJ4c1wiLCBcInhzXCIsIFwieHNcIl0pLFxuICAgIH0sXG5cbiAgICBcIiYgPiA6bm90KG5hdjpmaXJzdC1vZi10eXBlKVwiOiB7XG4gICAgICBwYWRkaW5nOiB0aGVtZS5zcGFjaW5nKFtcInhzXCIsIFwieHNcIiwgXCJzbVwiLCBcInhzXCJdKSxcbiAgICB9LFxuICB9LFxuXG4gIFwiJiA+IDpvbmx5LWNoaWxkXCI6IHtcbiAgICBwYWRkaW5nOiB0aGVtZS5zcGFjZS5zbSxcbiAgfSxcbiAgXCImID4gOm5vdChuYXY6Zmlyc3Qtb2YtdHlwZSlcIjoge1xuICAgIGJvcmRlclRvcDogYDNweCBzb2xpZCAke3RoZW1lLmNvbG9ycy5hdG1vMn1gLFxuICAgIHBhZGRpbmc6IHRoZW1lLnNwYWNpbmcoW1wieHNcIiwgXCJzbVwiLCBcInNtXCIsIFwic21cIl0pLFxuICB9LFxuXG4gIFwiJiA+IDpmaXJzdC1vZi10eXBlOm5vdCg6bGFzdC1jaGlsZClcIjoge1xuICAgIGJvcmRlclRvcDogXCJub25lXCIsXG4gICAgcGFkZGluZzogdGhlbWUuc3BhY2luZyhbXCJzbVwiLCBcInNtXCIsIFwieHNcIiwgXCJzbVwiXSksXG4gIH0sXG5cbiAgW2AmLiR7dmVydGljYWxOYXZpZ2F0aW9uQ2xhc3Nlcy5zbGlkZXJ9YF06IHtcbiAgICBcIiYgPiBkaXY6Zmlyc3Qtb2YtdHlwZVwiOiB7XG4gICAgICBib3JkZXJCb3R0b206IGAzcHggc29saWQgJHt0aGVtZS5jb2xvcnMuYXRtbzJ9YCxcbiAgICB9LFxuICB9LFxufSk7XG4iXX0= */");
48
+ }), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2h2LXVpa2l0LXJlYWN0L2h2LXVpa2l0LXJlYWN0L3BhY2thZ2VzL2NvcmUvc3JjL2NvbXBvbmVudHMvVmVydGljYWxOYXZpZ2F0aW9uL1ZlcnRpY2FsTmF2aWdhdGlvbi5zdHlsZXMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVEwQiIsImZpbGUiOiIvaG9tZS9ydW5uZXIvd29yay9odi11aWtpdC1yZWFjdC9odi11aWtpdC1yZWFjdC9wYWNrYWdlcy9jb3JlL3NyYy9jb21wb25lbnRzL1ZlcnRpY2FsTmF2aWdhdGlvbi9WZXJ0aWNhbE5hdmlnYXRpb24uc3R5bGVzLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZFwiO1xuaW1wb3J0IHsgdGhlbWUgfSBmcm9tIFwiQGhpdGFjaGl2YW50YXJhL3Vpa2l0LXN0eWxlc1wiO1xuaW1wb3J0IHZlcnRpY2FsTmF2aWdhdGlvbkNsYXNzZXMgZnJvbSBcIi4vdmVydGljYWxOYXZpZ2F0aW9uQ2xhc3Nlc1wiO1xuXG5pbnRlcmZhY2UgU3R5bGVkUm9vdFByb3BzIHtcbiAgaGFzQW55Q2hpbGRXaXRoRGF0YTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IFN0eWxlZFJvb3QgPSBzdHlsZWQoXCJkaXZcIikoXG4gICh7IGhhc0FueUNoaWxkV2l0aERhdGEgfTogU3R5bGVkUm9vdFByb3BzKSA9PiAoe1xuICAgIGRpc3BsYXk6IFwiZmxleFwiLFxuICAgIGZsZXhEaXJlY3Rpb246IFwiY29sdW1uXCIsXG4gICAganVzdGlmeUNvbnRlbnQ6IHRoZW1lLnZlcnRpY2FsTmF2aWdhdGlvbi5qdXN0aWZ5Q29udGVudCxcblxuICAgIHdpZHRoOiBcIjIyMHB4XCIsXG5cbiAgICBiYWNrZ3JvdW5kOiB0aGVtZS5jb2xvcnMuYXRtbzEsXG4gICAgYm94U2hhZG93OiB0aGVtZS5jb2xvcnMuc2hhZG93LFxuICAgIGNsaXBQYXRoOiBcImluc2V0KDBweCAtMTJweCAwcHggMHB4KVwiLFxuXG4gICAgW2AmLiR7dmVydGljYWxOYXZpZ2F0aW9uQ2xhc3Nlcy5jb2xsYXBzZWR9YF06IHtcbiAgICAgIHdpZHRoOiBoYXNBbnlDaGlsZFdpdGhEYXRhID8gXCI2NnB4XCIgOiBcIjU2cHhcIixcblxuICAgICAgXCImID4gOmZpcnN0LW9mLXR5cGU6bm90KDpsYXN0LWNoaWxkKVwiOiB7XG4gICAgICAgIHBhZGRpbmc6IHRoZW1lLnNwYWNpbmcoW1wic21cIiwgXCJ4c1wiLCBcInhzXCIsIFwieHNcIl0pLFxuICAgICAgfSxcblxuICAgICAgXCImID4gOm5vdChuYXY6Zmlyc3Qtb2YtdHlwZSlcIjoge1xuICAgICAgICBwYWRkaW5nOiB0aGVtZS5zcGFjaW5nKFtcInhzXCIsIFwieHNcIiwgXCJzbVwiLCBcInhzXCJdKSxcbiAgICAgIH0sXG4gICAgfSxcblxuICAgIFwiJiA+IDpvbmx5LWNoaWxkXCI6IHtcbiAgICAgIHBhZGRpbmc6IHRoZW1lLnNwYWNlLnNtLFxuICAgIH0sXG4gICAgXCImID4gOm5vdChuYXY6Zmlyc3Qtb2YtdHlwZSlcIjoge1xuICAgICAgYm9yZGVyVG9wOiBgM3B4IHNvbGlkICR7dGhlbWUuY29sb3JzLmF0bW8yfWAsXG4gICAgICBwYWRkaW5nOiB0aGVtZS5zcGFjaW5nKFtcInhzXCIsIFwic21cIiwgXCJzbVwiLCBcInNtXCJdKSxcbiAgICB9LFxuXG4gICAgXCImID4gOmZpcnN0LW9mLXR5cGU6bm90KDpsYXN0LWNoaWxkKVwiOiB7XG4gICAgICBib3JkZXJUb3A6IFwibm9uZVwiLFxuICAgICAgcGFkZGluZzogdGhlbWUuc3BhY2luZyhbXCJzbVwiLCBcInNtXCIsIFwieHNcIiwgXCJzbVwiXSksXG4gICAgfSxcblxuICAgIFtgJi4ke3ZlcnRpY2FsTmF2aWdhdGlvbkNsYXNzZXMuc2xpZGVyfWBdOiB7XG4gICAgICBcIiYgPiBkaXY6Zmlyc3Qtb2YtdHlwZVwiOiB7XG4gICAgICAgIGJvcmRlckJvdHRvbTogYDNweCBzb2xpZCAke3RoZW1lLmNvbG9ycy5hdG1vMn1gLFxuICAgICAgfSxcbiAgICB9LFxuICB9KVxuKTtcbiJdfQ== */");
47
49
  exports.StyledRoot = StyledRoot;
48
50
  //# sourceMappingURL=VerticalNavigation.styles.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"VerticalNavigation.styles.cjs","sources":["../../../../src/components/VerticalNavigation/VerticalNavigation.styles.tsx"],"sourcesContent":["import styled from \"@emotion/styled\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\nimport verticalNavigationClasses from \"./verticalNavigationClasses\";\n\nexport const StyledRoot = styled(\"div\")({\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: theme.verticalNavigation.justifyContent,\n\n width: \"100%\",\n\n background: theme.colors.atmo1,\n boxShadow: theme.colors.shadow,\n clipPath: \"inset(0px -12px 0px 0px)\",\n\n [`&.${verticalNavigationClasses.collapsed}`]: {\n width: \"56px\",\n\n \"& > :first-of-type:not(:last-child)\": {\n padding: theme.spacing([\"sm\", \"xs\", \"xs\", \"xs\"]),\n },\n\n \"& > :not(nav:first-of-type)\": {\n padding: theme.spacing([\"xs\", \"xs\", \"sm\", \"xs\"]),\n },\n },\n\n \"& > :only-child\": {\n padding: theme.space.sm,\n },\n \"& > :not(nav:first-of-type)\": {\n borderTop: `3px solid ${theme.colors.atmo2}`,\n padding: theme.spacing([\"xs\", \"sm\", \"sm\", \"sm\"]),\n },\n\n \"& > :first-of-type:not(:last-child)\": {\n borderTop: \"none\",\n padding: theme.spacing([\"sm\", \"sm\", \"xs\", \"sm\"]),\n },\n\n [`&.${verticalNavigationClasses.slider}`]: {\n \"& > div:first-of-type\": {\n borderBottom: `3px solid ${theme.colors.atmo2}`,\n },\n },\n});\n"],"names":["StyledRoot","_styled","process","env","NODE_ENV","target","label","display","flexDirection","justifyContent","theme","verticalNavigation","width","background","colors","atmo1","boxShadow","shadow","clipPath","verticalNavigationClasses","collapsed","padding","spacing","space","sm","borderTop","atmo2","slider","borderBottom"],"mappings":";;;;;;;AAIO,MAAMA,aAAoBC,iCAAA,QAAA,OAAKC,QAAAC,IAAAC,aAAA,eAAA;AAAA,EAAAC,QAAA;AAAA,IAAA;AAAA,EAAAA,QAAA;AAAA,EAAAC,OAAA;AAAA,CAAA,EAAE;AAAA,EACtCC,SAAS;AAAA,EACTC,eAAe;AAAA,EACfC,gBAAgBC,YAAAA,MAAMC,mBAAmBF;AAAAA,EAEzCG,OAAO;AAAA,EAEPC,YAAYH,YAAAA,MAAMI,OAAOC;AAAAA,EACzBC,WAAWN,YAAAA,MAAMI,OAAOG;AAAAA,EACxBC,UAAU;AAAA,EAEV,CAAE,KAAIC,kCAA0BC,WAAW,GAAG;AAAA,IAC5CR,OAAO;AAAA,IAEP,uCAAuC;AAAA,MACrCS,SAASX,kBAAMY,QAAQ,CAAC,MAAM,MAAM,MAAM,IAAI,CAAC;AAAA,IACjD;AAAA,IAEA,+BAA+B;AAAA,MAC7BD,SAASX,kBAAMY,QAAQ,CAAC,MAAM,MAAM,MAAM,IAAI,CAAC;AAAA,IACjD;AAAA,EACF;AAAA,EAEA,mBAAmB;AAAA,IACjBD,SAASX,YAAAA,MAAMa,MAAMC;AAAAA,EACvB;AAAA,EACA,+BAA+B;AAAA,IAC7BC,WAAY,aAAYf,YAAAA,MAAMI,OAAOY;AAAAA,IACrCL,SAASX,kBAAMY,QAAQ,CAAC,MAAM,MAAM,MAAM,IAAI,CAAC;AAAA,EACjD;AAAA,EAEA,uCAAuC;AAAA,IACrCG,WAAW;AAAA,IACXJ,SAASX,kBAAMY,QAAQ,CAAC,MAAM,MAAM,MAAM,IAAI,CAAC;AAAA,EACjD;AAAA,EAEA,CAAE,KAAIH,kCAA0BQ,QAAQ,GAAG;AAAA,IACzC,yBAAyB;AAAA,MACvBC,cAAe,aAAYlB,YAAAA,MAAMI,OAAOY;AAAAA,IAC1C;AAAA,EACF;AACF,GAACxB,QAAAC,IAAAC,aAAC,eAAA,KAAA,6tEAAA;;"}
1
+ {"version":3,"file":"VerticalNavigation.styles.cjs","sources":["../../../../src/components/VerticalNavigation/VerticalNavigation.styles.tsx"],"sourcesContent":["import styled from \"@emotion/styled\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\nimport verticalNavigationClasses from \"./verticalNavigationClasses\";\n\ninterface StyledRootProps {\n hasAnyChildWithData: boolean;\n}\n\nexport const StyledRoot = styled(\"div\")(\n ({ hasAnyChildWithData }: StyledRootProps) => ({\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: theme.verticalNavigation.justifyContent,\n\n width: \"220px\",\n\n background: theme.colors.atmo1,\n boxShadow: theme.colors.shadow,\n clipPath: \"inset(0px -12px 0px 0px)\",\n\n [`&.${verticalNavigationClasses.collapsed}`]: {\n width: hasAnyChildWithData ? \"66px\" : \"56px\",\n\n \"& > :first-of-type:not(:last-child)\": {\n padding: theme.spacing([\"sm\", \"xs\", \"xs\", \"xs\"]),\n },\n\n \"& > :not(nav:first-of-type)\": {\n padding: theme.spacing([\"xs\", \"xs\", \"sm\", \"xs\"]),\n },\n },\n\n \"& > :only-child\": {\n padding: theme.space.sm,\n },\n \"& > :not(nav:first-of-type)\": {\n borderTop: `3px solid ${theme.colors.atmo2}`,\n padding: theme.spacing([\"xs\", \"sm\", \"sm\", \"sm\"]),\n },\n\n \"& > :first-of-type:not(:last-child)\": {\n borderTop: \"none\",\n padding: theme.spacing([\"sm\", \"sm\", \"xs\", \"sm\"]),\n },\n\n [`&.${verticalNavigationClasses.slider}`]: {\n \"& > div:first-of-type\": {\n borderBottom: `3px solid ${theme.colors.atmo2}`,\n },\n },\n })\n);\n"],"names":["StyledRoot","_styled","process","env","NODE_ENV","target","label","hasAnyChildWithData","display","flexDirection","justifyContent","theme","verticalNavigation","width","background","colors","atmo1","boxShadow","shadow","clipPath","verticalNavigationClasses","collapsed","padding","spacing","space","sm","borderTop","atmo2","slider","borderBottom"],"mappings":";;;;;;;AAQO,MAAMA,aAAoBC,iCAAA,QAAA,OAAKC,QAAAC,IAAAC,aAAA,eAAA;AAAA,EAAAC,QAAA;AAAA,IAAA;AAAA,EAAAA,QAAA;AAAA,EAAAC,OAAA;AAAA,CAAA,EACpC,CAAC;AAAA,EAAEC;AAAqC,OAAO;AAAA,EAC7CC,SAAS;AAAA,EACTC,eAAe;AAAA,EACfC,gBAAgBC,YAAAA,MAAMC,mBAAmBF;AAAAA,EAEzCG,OAAO;AAAA,EAEPC,YAAYH,YAAAA,MAAMI,OAAOC;AAAAA,EACzBC,WAAWN,YAAAA,MAAMI,OAAOG;AAAAA,EACxBC,UAAU;AAAA,EAEV,CAAE,KAAIC,kCAA0BC,WAAW,GAAG;AAAA,IAC5CR,OAAON,sBAAsB,SAAS;AAAA,IAEtC,uCAAuC;AAAA,MACrCe,SAASX,kBAAMY,QAAQ,CAAC,MAAM,MAAM,MAAM,IAAI,CAAC;AAAA,IACjD;AAAA,IAEA,+BAA+B;AAAA,MAC7BD,SAASX,kBAAMY,QAAQ,CAAC,MAAM,MAAM,MAAM,IAAI,CAAC;AAAA,IACjD;AAAA,EACF;AAAA,EAEA,mBAAmB;AAAA,IACjBD,SAASX,YAAAA,MAAMa,MAAMC;AAAAA,EACvB;AAAA,EACA,+BAA+B;AAAA,IAC7BC,WAAY,aAAYf,YAAAA,MAAMI,OAAOY;AAAAA,IACrCL,SAASX,kBAAMY,QAAQ,CAAC,MAAM,MAAM,MAAM,IAAI,CAAC;AAAA,EACjD;AAAA,EAEA,uCAAuC;AAAA,IACrCG,WAAW;AAAA,IACXJ,SAASX,kBAAMY,QAAQ,CAAC,MAAM,MAAM,MAAM,IAAI,CAAC;AAAA,EACjD;AAAA,EAEA,CAAE,KAAIH,kCAA0BQ,QAAQ,GAAG;AAAA,IACzC,yBAAyB;AAAA,MACvBC,cAAe,aAAYlB,YAAAA,MAAMI,OAAOY;AAAAA,IAC1C;AAAA,EACF;AACF,IAAEzB,QAAAC,IAAAC,aACH,eAAA,KAAA,qgFAAA;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"VerticalNavigationContext.cjs","sources":["../../../../src/components/VerticalNavigation/VerticalNavigationContext.tsx"],"sourcesContent":["import { createContext } from \"react\";\nimport { NavigationData, HvVerticalNavigationMode } from \"./\";\n\ninterface VerticalNavigationContextValue {\n isOpen: boolean;\n collapsedMode: HvVerticalNavigationMode;\n slider?: boolean;\n headerTitle?: string;\n setHeaderTitle?: React.Dispatch<React.SetStateAction<string | undefined>>;\n\n parentItem?;\n withParentData?;\n navigateToChildHandler?: (event, item) => void;\n navigateToParentHandler?: () => void;\n\n parentData?: NavigationData[];\n setParentData?: React.Dispatch<React.SetStateAction<any>>;\n parentSelected?;\n setParentSelected?: React.Dispatch<React.SetStateAction<any>>;\n}\n\nconst VerticalNavigationContext = createContext<VerticalNavigationContextValue>(\n {\n isOpen: true,\n collapsedMode: \"simple\",\n slider: false,\n }\n);\n\nexport { VerticalNavigationContext };\n"],"names":["VerticalNavigationContext","createContext","isOpen","collapsedMode","slider"],"mappings":";;;AAqBA,MAAMA,4BAA4BC,MAAAA,cAChC;AAAA,EACEC,QAAQ;AAAA,EACRC,eAAe;AAAA,EACfC,QAAQ;AACV,CAAC;;"}
1
+ {"version":3,"file":"VerticalNavigationContext.cjs","sources":["../../../../src/components/VerticalNavigation/VerticalNavigationContext.tsx"],"sourcesContent":["import { createContext } from \"react\";\nimport { NavigationData, HvVerticalNavigationMode } from \"./\";\n\ninterface VerticalNavigationContextValue {\n isOpen: boolean;\n collapsedMode: HvVerticalNavigationMode;\n slider?: boolean;\n headerTitle?: string;\n setHeaderTitle?: React.Dispatch<React.SetStateAction<string | undefined>>;\n\n parentItem?;\n withParentData?;\n navigateToChildHandler?: (event, item) => void;\n navigateToParentHandler?: () => void;\n\n parentData?: NavigationData[];\n setParentData?: React.Dispatch<React.SetStateAction<any>>;\n parentSelected?;\n setParentSelected?: React.Dispatch<React.SetStateAction<any>>;\n\n hasAnyChildWithData?: boolean;\n}\n\nconst VerticalNavigationContext = createContext<VerticalNavigationContextValue>(\n {\n isOpen: true,\n collapsedMode: \"simple\",\n slider: false,\n }\n);\n\nexport { VerticalNavigationContext };\n"],"names":["VerticalNavigationContext","createContext","isOpen","collapsedMode","slider"],"mappings":";;;AAuBA,MAAMA,4BAA4BC,MAAAA,cAChC;AAAA,EACEC,QAAQ;AAAA,EACRC,eAAe;AAAA,EACfC,QAAQ;AACV,CAAC;;"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const hasChildNavigationItems = (data) => {
4
+ return data.some((item) => item.data && item.data.length > 0);
5
+ };
6
+ exports.hasChildNavigationItems = hasChildNavigationItems;
7
+ //# sourceMappingURL=VerticalNavigation.utils.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VerticalNavigation.utils.cjs","sources":["../../../../../src/components/VerticalNavigation/utils/VerticalNavigation.utils.tsx"],"sourcesContent":["import { NavigationData } from \"../Navigation\";\n\n/**\n * Checks if there are any sub items in the NavigationItem data structure.\n *\n * @param data - The collection of navigation items.\n * @returns `true` if there is at least one sub item in the structure, `false` otherwise.\n */\nconst hasChildNavigationItems = (data: NavigationData[]) => {\n return data.some((item) => item.data && item.data.length > 0);\n};\n\nexport { hasChildNavigationItems };\n"],"names":["hasChildNavigationItems","data","some","item","length"],"mappings":";;AAQMA,MAAAA,0BAA0BA,CAACC,SAA2B;AACnDA,SAAAA,KAAKC,KAAMC,CAASA,SAAAA,KAAKF,QAAQE,KAAKF,KAAKG,SAAS,CAAC;AAC9D;;"}
@@ -228,6 +228,8 @@ const treeViewItemClasses = require("./components/VerticalNavigation/TreeView/tr
228
228
  const TreeView = require("./components/VerticalNavigation/TreeView/TreeView.cjs");
229
229
  const TreeViewItem = require("./components/VerticalNavigation/TreeView/TreeViewItem.cjs");
230
230
  const VerticalNavigationContext = require("./components/VerticalNavigation/VerticalNavigationContext.cjs");
231
+ const sliderClasses = require("./components/Slider/sliderClasses.cjs");
232
+ const Slider = require("./components/Slider/Slider.cjs");
231
233
  const useUniqueId = require("./hooks/useUniqueId.cjs");
232
234
  const useIsMounted = require("./hooks/useIsMounted.cjs");
233
235
  const useClickOutside = require("./hooks/useClickOutside.cjs");
@@ -546,6 +548,8 @@ exports.treeViewItemClasses = treeViewItemClasses.default;
546
548
  exports.HvVerticalNavigationTreeView = TreeView.HvVerticalNavigationTreeView;
547
549
  exports.HvVerticalNavigationTreeViewItem = TreeViewItem.HvVerticalNavigationTreeViewItem;
548
550
  exports.VerticalNavigationContext = VerticalNavigationContext.VerticalNavigationContext;
551
+ exports.sliderClasses = sliderClasses.default;
552
+ exports.HvSlider = Slider.HvSlider;
549
553
  exports.useUniqueId = useUniqueId.default;
550
554
  exports.useIsMounted = useIsMounted.default;
551
555
  exports.useClickOutside = useClickOutside.useClickOutside;
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,5 +1,5 @@
1
1
  import { getClasses } from "../../utils/classes.js";
2
- const classKeys = ["root", "labelContainer", "label", "description", "error", "placeholder", "selectionDisabled", "dropdown", "arrow", "dropdownHeader", "dropdownHeaderInvalid", "dropdownHeaderOpen", "rootList", "dropdownListContainer"];
2
+ const classKeys = ["root", "labelContainer", "label", "description", "error", "placeholder", "selectionDisabled", "dropdown", "arrow", "dropdownHeader", "dropdownHeaderInvalid", "dropdownHeaderOpen", "dropdownListContainer", "rootList"];
3
3
  const dropdownClasses = getClasses(classKeys, "HvDropdown");
4
4
  const dropdownClasses$1 = dropdownClasses;
5
5
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"dropdownClasses.js","sources":["../../../../src/components/Dropdown/dropdownClasses.tsx"],"sourcesContent":["import { getClasses } from \"~/utils\";\n\nexport type HvDropdownClasses = {\n root?: string;\n labelContainer?: string;\n label?: string;\n description?: string;\n error?: string;\n placeholder?: string;\n selectionDisabled?: string;\n dropdown?: string;\n arrow?: string;\n dropdownHeader?: string;\n dropdownHeaderInvalid?: string;\n dropdownHeaderOpen?: string;\n dropdownListContainer?: string;\n rootList?: string;\n};\n\nconst classKeys: string[] = [\n \"root\",\n \"labelContainer\",\n \"label\",\n \"description\",\n \"error\",\n \"placeholder\",\n \"selectionDisabled\",\n \"dropdown\",\n \"arrow\",\n \"dropdownHeader\",\n \"dropdownHeaderInvalid\",\n \"dropdownHeaderOpen\",\n \"rootList\",\n \"dropdownListContainer\",\n];\n\nconst dropdownClasses = getClasses<HvDropdownClasses>(classKeys, \"HvDropdown\");\n\nexport default dropdownClasses;\n"],"names":["classKeys","dropdownClasses","getClasses"],"mappings":";AAmBA,MAAMA,YAAsB,CAC1B,QACA,kBACA,SACA,eACA,SACA,eACA,qBACA,YACA,SACA,kBACA,yBACA,sBACA,YACA,uBAAuB;AAGzB,MAAMC,kBAAkBC,WAA8BF,WAAW,YAAY;AAE7E,MAAA,oBAAeC;"}
1
+ {"version":3,"file":"dropdownClasses.js","sources":["../../../../src/components/Dropdown/dropdownClasses.tsx"],"sourcesContent":["import { getClasses } from \"~/utils\";\n\nexport type HvDropdownClasses = {\n root?: string;\n labelContainer?: string;\n label?: string;\n description?: string;\n error?: string;\n placeholder?: string;\n selectionDisabled?: string;\n dropdown?: string;\n arrow?: string;\n dropdownHeader?: string;\n dropdownHeaderInvalid?: string;\n dropdownHeaderOpen?: string;\n dropdownListContainer?: string;\n rootList?: string;\n};\n\nconst classKeys: string[] = [\n \"root\",\n \"labelContainer\",\n \"label\",\n \"description\",\n \"error\",\n \"placeholder\",\n \"selectionDisabled\",\n \"dropdown\",\n \"arrow\",\n \"dropdownHeader\",\n \"dropdownHeaderInvalid\",\n \"dropdownHeaderOpen\",\n \"dropdownListContainer\",\n \"rootList\",\n];\n\nconst dropdownClasses = getClasses<HvDropdownClasses>(classKeys, \"HvDropdown\");\n\nexport default dropdownClasses;\n"],"names":["classKeys","dropdownClasses","getClasses"],"mappings":";AAmBA,MAAMA,YAAsB,CAC1B,QACA,kBACA,SACA,eACA,SACA,eACA,qBACA,YACA,SACA,kBACA,yBACA,sBACA,yBACA,UAAU;AAGZ,MAAMC,kBAAkBC,WAA8BF,WAAW,YAAY;AAE7E,MAAA,oBAAeC;"}
@@ -115,7 +115,7 @@ const HvPagination = ({
115
115
  className: clsx(paginationClasses.pageSizeOptionsSelect, classes == null ? void 0 : classes.pageSizeOptionsSelect),
116
116
  classes: {},
117
117
  "aria-label": labels == null ? void 0 : labels.pageSizeSelectorDescription,
118
- onChange: (evt, val) => onPageSizeChange == null ? void 0 : onPageSizeChange(val),
118
+ onChange: (_, val) => onPageSizeChange == null ? void 0 : onPageSizeChange(val),
119
119
  value: pageSize,
120
120
  children: pageSizeOptions.map((option) => /* @__PURE__ */ jsx(Option, {
121
121
  value: option,
@@ -1 +1 @@
1
- {"version":3,"file":"Pagination.js","sources":["../../../../src/components/Pagination/Pagination.tsx"],"sourcesContent":["import { HTMLAttributes, useCallback, useEffect } from \"react\";\nimport clsx from \"clsx\";\nimport { Hidden } from \"@mui/material\";\nimport { HvInput, HvInputProps, HvTypography } from \"~/components\";\nimport {\n Start,\n End,\n Backwards,\n Forwards,\n} from \"@hitachivantara/uikit-react-icons\";\nimport { HvBaseProps } from \"../../types\";\nimport { Option } from \"./Select\";\nimport {\n StyledRoot,\n StyledPageSizeOptions,\n StyledPageSizePrev,\n StyledSelect,\n StyledPageSizeTextContainer,\n StyledPageNavigator,\n StyledButtonIconTooltip,\n StyledPageJump,\n StyledPageInfo,\n} from \"./Pagination.styles\";\nimport paginationClasses, { HvPaginationClasses } from \"./paginationClasses\";\nimport { isKeypress, keyboardCodes, setId } from \"~/utils\";\nimport { usePageInput, getSafePage, setColor } from \"./utils\";\nimport { useLabels } from \"~/hooks\";\n\nexport type HvPaginationLabels = {\n /** The show label. */\n pageSizePrev?: string;\n /** Indicate the units of the page size selection. */\n pageSizeEntryName?: string;\n /** Used for the aria-label of the selection of number of unit.s */\n pageSizeSelectorDescription?: string;\n /** Separator of current page and total pages. */\n pagesSeparator?: string;\n /** Title of button `firstPage`. */\n paginationFirstPageTitle?: string;\n /** Title of button `previousPage`. */\n paginationPreviousPageTitle?: string;\n /** Title of button `nextPage`. */\n paginationNextPageTitle?: string;\n /** Title of button `lastPage`. */\n paginationLastPageTitle?: string;\n /** Aria-label passed to the page input. */\n paginationInputLabel?: string;\n /** Aria-label of the first page button */\n firstPage?: string;\n /** Aria-label of the previous page button */\n previousPage?: string;\n /** Aria-label of the next page button */\n nextPage?: string;\n /** Aria-label of the last page button */\n lastPage?: string;\n};\n\nexport type HvPaginationProps = HvBaseProps & {\n /** The number of pages the component has. */\n pages?: number;\n /** The currently selected page (0-indexed). */\n page?: number;\n /** Controls whether the left page size mechanism should be visible. */\n showPageSizeOptions?: boolean;\n /** The array of possible page sizes for the dropdown. */\n pageSizeOptions?: number[];\n /** The currently selected page size. */\n pageSize?: number;\n /** Controls whether the central page changing mechanism should be visible. */\n showPageJump?: boolean;\n /** Controls whether the previous/first page buttons are enabled. */\n canPrevious?: boolean;\n /** Controls whether the next/last page buttons are enabled. */\n canNext?: boolean;\n /** Function called when the page changes. */\n onPageChange?: (page: number) => void;\n /** Function called when the page size changes. */\n onPageSizeChange?: (pageSize: number) => void;\n /** An object containing all the labels for the component. */\n labels?: HvPaginationLabels;\n /** Other props to show page component. */\n showPageProps?: HTMLAttributes<HTMLDivElement>;\n /** Other props to pagination component. */\n navigationProps?: HTMLAttributes<HTMLDivElement>;\n /** Extra properties passed to the input component representing the current pages. */\n currentPageInputProps?: HvInputProps;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvPaginationClasses;\n};\n\nconst DEFAULT_LABELS = {\n pageSizePrev: \"Show\",\n pageSizeEntryName: \"rows\",\n pageSizeSelectorDescription: \"Select how many to display\",\n pagesSeparator: \"/\",\n paginationFirstPageTitle: \"First page\",\n paginationPreviousPageTitle: \"Previous page\",\n paginationNextPageTitle: \"Next page\",\n paginationLastPageTitle: \"Last page\",\n paginationInputLabel: \"Current page\",\n firstPage: \"First Page\",\n previousPage: \"Previous Page\",\n nextPage: \"Next Page\",\n lastPage: \"Last Page\",\n};\n\nconst { Enter } = keyboardCodes;\n\n/**\n * Pagination is the process of dividing a document into discrete pages. It relates to how users interact\n * with structured content on a website or application.\n */\nexport const HvPagination = ({\n classes,\n className,\n id,\n pages = 1,\n page = 0,\n showPageSizeOptions = true,\n pageSizeOptions = [5, 10, 20, 25, 50, 100],\n pageSize = 1,\n showPageJump = true,\n canPrevious = false,\n canNext = false,\n onPageChange,\n onPageSizeChange,\n labels: labelsProp,\n showPageProps,\n navigationProps,\n currentPageInputProps,\n ...others\n}: HvPaginationProps) => {\n const labels = useLabels(DEFAULT_LABELS, labelsProp);\n const [pageInput, handleInputChange] = usePageInput(page);\n\n const changePage = useCallback(\n (newPage) => {\n const safePage: number = getSafePage(newPage, page, pages);\n\n onPageChange?.(safePage);\n handleInputChange(null, safePage + 1);\n },\n [page, pages, onPageChange, handleInputChange]\n );\n\n useEffect(() => {\n if (page >= pages && pages > 0) {\n changePage(page);\n }\n }, [changePage, page, pages]);\n\n useEffect(() => {\n if (pageInput !== page + 1) {\n handleInputChange(null, page + 1);\n }\n\n // we only want to \"fix\" the input's display value when `page` property changed\n // (either externally or when internally committed - onBlur or Enter),\n // not while editing the input.\n // breaking a rule of hooks isn't ideal and it's just a hack for fixing\n // a bug preventing properly controlling of the `page` property.\n // fixing it some other way would potentially introduce a breaking change.\n }, [handleInputChange, page]);\n\n const renderPageJump = () => (\n <StyledPageJump\n className={clsx(paginationClasses.pageJump, classes?.pageJump)}\n >\n <HvInput\n id={setId(id, \"currentPage\")}\n labels={labels}\n inputProps={{\n \"aria-label\": labels?.paginationInputLabel,\n // We really want the native number input\n type: \"number\",\n }}\n classes={{\n root: clsx(\n paginationClasses.pageSizeInputContainer,\n classes?.pageSizeInputContainer\n ),\n input: clsx(paginationClasses.pageSizeInput, classes?.pageSizeInput),\n inputRoot: clsx(\n paginationClasses.pageSizeInputRoot,\n classes?.pageSizeInputRoot\n ),\n }}\n onChange={(event, value) => handleInputChange(event, Number(value))}\n value={String(pageInput)}\n onBlur={(evt, value) => changePage(Number(value) - 1)}\n onKeyDown={(evt, value) =>\n isKeypress(evt, Enter) && changePage(Number(value) - 1)\n }\n disabled={pageSize === 0}\n disableClear\n {...currentPageInputProps}\n />\n </StyledPageJump>\n );\n\n return (\n <StyledRoot\n id={id}\n className={clsx(className, paginationClasses.root, classes?.root)}\n {...others}\n >\n <StyledPageSizeOptions\n className={clsx(\n paginationClasses.pageSizeOptions,\n classes?.pageSizeOptions\n )}\n {...showPageProps}\n >\n {showPageSizeOptions && (\n <>\n <Hidden xsDown>\n <StyledPageSizePrev\n className={clsx(\n paginationClasses.pageSizeTextContainer,\n classes?.pageSizeTextContainer\n )}\n >\n <HvTypography component=\"span\">\n {labels?.pageSizePrev}\n </HvTypography>\n </StyledPageSizePrev>\n </Hidden>\n <StyledSelect\n id={setId(id, \"pageSize\")}\n disabled={pageSize === 0}\n className={clsx(\n paginationClasses.pageSizeOptionsSelect,\n classes?.pageSizeOptionsSelect\n )}\n classes={{}}\n aria-label={labels?.pageSizeSelectorDescription}\n onChange={(evt, val: number) => onPageSizeChange?.(val)}\n value={pageSize}\n >\n {pageSizeOptions.map((option) => (\n <Option key={option} value={option}>\n {option}\n </Option>\n ))}\n </StyledSelect>\n <Hidden xsDown>\n <StyledPageSizeTextContainer\n className={clsx(\n paginationClasses.pageSizeTextContainer,\n classes?.pageSizeTextContainer\n )}\n >\n <HvTypography component=\"span\">\n {labels?.pageSizeEntryName}\n </HvTypography>\n </StyledPageSizeTextContainer>\n </Hidden>\n </>\n )}\n </StyledPageSizeOptions>\n <StyledPageNavigator\n className={clsx(\n paginationClasses.pageNavigator,\n classes?.pageNavigator\n )}\n {...navigationProps}\n >\n <StyledButtonIconTooltip\n id={setId(id, \"firstPage-button\")}\n aria-label={labels?.firstPage}\n className={clsx(\n paginationClasses.iconContainer,\n classes?.iconContainer\n )}\n disabled={!canPrevious}\n onClick={() => changePage(0)}\n tooltip={labels?.paginationFirstPageTitle}\n >\n <Start\n className={clsx(paginationClasses.icon, classes?.icon)}\n color={setColor(!canPrevious)}\n />\n </StyledButtonIconTooltip>\n <StyledButtonIconTooltip\n id={setId(id, \"previousPage-button\")}\n aria-label={labels?.previousPage}\n className={clsx(\n paginationClasses.iconContainer,\n classes?.iconContainer\n )}\n disabled={!canPrevious}\n onClick={() => changePage(page - 1)}\n tooltip={labels?.paginationPreviousPageTitle}\n >\n <Backwards\n className={clsx(paginationClasses.icon, classes?.icon)}\n color={setColor(!canPrevious)}\n />\n </StyledButtonIconTooltip>\n <StyledPageInfo\n className={clsx(paginationClasses.pageInfo, classes?.pageInfo)}\n >\n {showPageJump ? (\n renderPageJump()\n ) : (\n <HvTypography component=\"span\">{`${page + 1}`}</HvTypography>\n )}\n <HvTypography component=\"span\">{`${labels?.pagesSeparator} `}</HvTypography>\n <HvTypography id={setId(id, \"totalPages\")} component=\"span\">\n {pages}\n </HvTypography>\n </StyledPageInfo>\n <StyledButtonIconTooltip\n id={setId(id, \"nextPage-button\")}\n aria-label={labels?.nextPage}\n className={clsx(\n paginationClasses.iconContainer,\n classes?.iconContainer\n )}\n disabled={!canNext}\n onClick={() => changePage(page + 1)}\n tooltip={labels?.paginationNextPageTitle}\n >\n <Forwards\n className={clsx(paginationClasses.icon, classes?.icon)}\n color={setColor(!canNext)}\n />\n </StyledButtonIconTooltip>\n <StyledButtonIconTooltip\n id={setId(id, \"lastPage-button\")}\n aria-label={labels?.lastPage}\n className={clsx(\n paginationClasses.iconContainer,\n classes?.iconContainer\n )}\n disabled={!canNext}\n onClick={() => changePage(pages - 1)}\n tooltip={labels?.paginationLastPageTitle}\n >\n <End\n className={clsx(paginationClasses.icon, classes?.icon)}\n color={setColor(!canNext)}\n />\n </StyledButtonIconTooltip>\n </StyledPageNavigator>\n </StyledRoot>\n );\n};\n"],"names":["DEFAULT_LABELS","pageSizePrev","pageSizeEntryName","pageSizeSelectorDescription","pagesSeparator","paginationFirstPageTitle","paginationPreviousPageTitle","paginationNextPageTitle","paginationLastPageTitle","paginationInputLabel","firstPage","previousPage","nextPage","lastPage","Enter","keyboardCodes","HvPagination","classes","className","id","pages","page","showPageSizeOptions","pageSizeOptions","pageSize","showPageJump","canPrevious","canNext","onPageChange","onPageSizeChange","labels","labelsProp","showPageProps","navigationProps","currentPageInputProps","others","useLabels","pageInput","handleInputChange","usePageInput","changePage","useCallback","newPage","safePage","getSafePage","useEffect","renderPageJump","_jsx","StyledPageJump","clsx","paginationClasses","pageJump","children","HvInput","setId","inputProps","type","root","pageSizeInputContainer","input","pageSizeInput","inputRoot","pageSizeInputRoot","onChange","event","value","Number","String","onBlur","evt","onKeyDown","isKeypress","disabled","disableClear","StyledRoot","StyledPageSizeOptions","_jsxs","_Fragment","Hidden","xsDown","StyledPageSizePrev","pageSizeTextContainer","HvTypography","component","StyledSelect","pageSizeOptionsSelect","val","map","option","Option","StyledPageSizeTextContainer","StyledPageNavigator","pageNavigator","StyledButtonIconTooltip","iconContainer","onClick","tooltip","Start","icon","color","setColor","Backwards","StyledPageInfo","pageInfo","Forwards","End"],"mappings":"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"}
1
+ {"version":3,"file":"Pagination.js","sources":["../../../../src/components/Pagination/Pagination.tsx"],"sourcesContent":["import { HTMLAttributes, useCallback, useEffect } from \"react\";\nimport clsx from \"clsx\";\nimport { Hidden } from \"@mui/material\";\nimport { HvInput, HvInputProps, HvTypography } from \"~/components\";\nimport {\n Start,\n End,\n Backwards,\n Forwards,\n} from \"@hitachivantara/uikit-react-icons\";\nimport { HvBaseProps } from \"../../types\";\nimport { Option } from \"./Select\";\nimport {\n StyledRoot,\n StyledPageSizeOptions,\n StyledPageSizePrev,\n StyledSelect,\n StyledPageSizeTextContainer,\n StyledPageNavigator,\n StyledButtonIconTooltip,\n StyledPageJump,\n StyledPageInfo,\n} from \"./Pagination.styles\";\nimport paginationClasses, { HvPaginationClasses } from \"./paginationClasses\";\nimport { isKeypress, keyboardCodes, setId } from \"~/utils\";\nimport { usePageInput, getSafePage, setColor } from \"./utils\";\nimport { useLabels } from \"~/hooks\";\n\nexport type HvPaginationLabels = {\n /** The show label. */\n pageSizePrev?: string;\n /** Indicate the units of the page size selection. */\n pageSizeEntryName?: string;\n /** Used for the aria-label of the selection of number of unit.s */\n pageSizeSelectorDescription?: string;\n /** Separator of current page and total pages. */\n pagesSeparator?: string;\n /** Title of button `firstPage`. */\n paginationFirstPageTitle?: string;\n /** Title of button `previousPage`. */\n paginationPreviousPageTitle?: string;\n /** Title of button `nextPage`. */\n paginationNextPageTitle?: string;\n /** Title of button `lastPage`. */\n paginationLastPageTitle?: string;\n /** Aria-label passed to the page input. */\n paginationInputLabel?: string;\n /** Aria-label of the first page button */\n firstPage?: string;\n /** Aria-label of the previous page button */\n previousPage?: string;\n /** Aria-label of the next page button */\n nextPage?: string;\n /** Aria-label of the last page button */\n lastPage?: string;\n};\n\nexport type HvPaginationProps = HvBaseProps & {\n /** The number of pages the component has. */\n pages?: number;\n /** The currently selected page (0-indexed). */\n page?: number;\n /** Controls whether the left page size mechanism should be visible. */\n showPageSizeOptions?: boolean;\n /** The array of possible page sizes for the dropdown. */\n pageSizeOptions?: number[];\n /** The currently selected page size. */\n pageSize?: number;\n /** Controls whether the central page changing mechanism should be visible. */\n showPageJump?: boolean;\n /** Controls whether the previous/first page buttons are enabled. */\n canPrevious?: boolean;\n /** Controls whether the next/last page buttons are enabled. */\n canNext?: boolean;\n /** Function called when the page changes. */\n onPageChange?: (page: number) => void;\n /** Function called when the page size changes. */\n onPageSizeChange?: (pageSize: number) => void;\n /** An object containing all the labels for the component. */\n labels?: HvPaginationLabels;\n /** Other props to show page component. */\n showPageProps?: HTMLAttributes<HTMLDivElement>;\n /** Other props to pagination component. */\n navigationProps?: HTMLAttributes<HTMLDivElement>;\n /** Extra properties passed to the input component representing the current pages. */\n currentPageInputProps?: HvInputProps;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvPaginationClasses;\n};\n\nconst DEFAULT_LABELS = {\n pageSizePrev: \"Show\",\n pageSizeEntryName: \"rows\",\n pageSizeSelectorDescription: \"Select how many to display\",\n pagesSeparator: \"/\",\n paginationFirstPageTitle: \"First page\",\n paginationPreviousPageTitle: \"Previous page\",\n paginationNextPageTitle: \"Next page\",\n paginationLastPageTitle: \"Last page\",\n paginationInputLabel: \"Current page\",\n firstPage: \"First Page\",\n previousPage: \"Previous Page\",\n nextPage: \"Next Page\",\n lastPage: \"Last Page\",\n};\n\nconst { Enter } = keyboardCodes;\n\n/**\n * Pagination is the process of dividing a document into discrete pages. It relates to how users interact\n * with structured content on a website or application.\n */\nexport const HvPagination = ({\n classes,\n className,\n id,\n pages = 1,\n page = 0,\n showPageSizeOptions = true,\n pageSizeOptions = [5, 10, 20, 25, 50, 100],\n pageSize = 1,\n showPageJump = true,\n canPrevious = false,\n canNext = false,\n onPageChange,\n onPageSizeChange,\n labels: labelsProp,\n showPageProps,\n navigationProps,\n currentPageInputProps,\n ...others\n}: HvPaginationProps) => {\n const labels = useLabels(DEFAULT_LABELS, labelsProp);\n const [pageInput, handleInputChange] = usePageInput(page);\n\n const changePage = useCallback(\n (newPage) => {\n const safePage: number = getSafePage(newPage, page, pages);\n\n onPageChange?.(safePage);\n handleInputChange(null, safePage + 1);\n },\n [page, pages, onPageChange, handleInputChange]\n );\n\n useEffect(() => {\n if (page >= pages && pages > 0) {\n changePage(page);\n }\n }, [changePage, page, pages]);\n\n useEffect(() => {\n if (pageInput !== page + 1) {\n handleInputChange(null, page + 1);\n }\n\n // we only want to \"fix\" the input's display value when `page` property changed\n // (either externally or when internally committed - onBlur or Enter),\n // not while editing the input.\n // breaking a rule of hooks isn't ideal and it's just a hack for fixing\n // a bug preventing properly controlling of the `page` property.\n // fixing it some other way would potentially introduce a breaking change.\n }, [handleInputChange, page]);\n\n const renderPageJump = () => (\n <StyledPageJump\n className={clsx(paginationClasses.pageJump, classes?.pageJump)}\n >\n <HvInput\n id={setId(id, \"currentPage\")}\n labels={labels}\n inputProps={{\n \"aria-label\": labels?.paginationInputLabel,\n // We really want the native number input\n type: \"number\",\n }}\n classes={{\n root: clsx(\n paginationClasses.pageSizeInputContainer,\n classes?.pageSizeInputContainer\n ),\n input: clsx(paginationClasses.pageSizeInput, classes?.pageSizeInput),\n inputRoot: clsx(\n paginationClasses.pageSizeInputRoot,\n classes?.pageSizeInputRoot\n ),\n }}\n onChange={(event, value) => handleInputChange(event, Number(value))}\n value={String(pageInput)}\n onBlur={(evt, value) => changePage(Number(value) - 1)}\n onKeyDown={(evt, value) =>\n isKeypress(evt, Enter) && changePage(Number(value) - 1)\n }\n disabled={pageSize === 0}\n disableClear\n {...currentPageInputProps}\n />\n </StyledPageJump>\n );\n\n return (\n <StyledRoot\n id={id}\n className={clsx(className, paginationClasses.root, classes?.root)}\n {...others}\n >\n <StyledPageSizeOptions\n className={clsx(\n paginationClasses.pageSizeOptions,\n classes?.pageSizeOptions\n )}\n {...showPageProps}\n >\n {showPageSizeOptions && (\n <>\n <Hidden xsDown>\n <StyledPageSizePrev\n className={clsx(\n paginationClasses.pageSizeTextContainer,\n classes?.pageSizeTextContainer\n )}\n >\n <HvTypography component=\"span\">\n {labels?.pageSizePrev}\n </HvTypography>\n </StyledPageSizePrev>\n </Hidden>\n <StyledSelect\n id={setId(id, \"pageSize\")}\n disabled={pageSize === 0}\n className={clsx(\n paginationClasses.pageSizeOptionsSelect,\n classes?.pageSizeOptionsSelect\n )}\n classes={{}}\n aria-label={labels?.pageSizeSelectorDescription}\n onChange={(_, val: number) => onPageSizeChange?.(val)}\n value={pageSize}\n >\n {pageSizeOptions.map((option) => (\n <Option key={option} value={option}>\n {option}\n </Option>\n ))}\n </StyledSelect>\n <Hidden xsDown>\n <StyledPageSizeTextContainer\n className={clsx(\n paginationClasses.pageSizeTextContainer,\n classes?.pageSizeTextContainer\n )}\n >\n <HvTypography component=\"span\">\n {labels?.pageSizeEntryName}\n </HvTypography>\n </StyledPageSizeTextContainer>\n </Hidden>\n </>\n )}\n </StyledPageSizeOptions>\n <StyledPageNavigator\n className={clsx(\n paginationClasses.pageNavigator,\n classes?.pageNavigator\n )}\n {...navigationProps}\n >\n <StyledButtonIconTooltip\n id={setId(id, \"firstPage-button\")}\n aria-label={labels?.firstPage}\n className={clsx(\n paginationClasses.iconContainer,\n classes?.iconContainer\n )}\n disabled={!canPrevious}\n onClick={() => changePage(0)}\n tooltip={labels?.paginationFirstPageTitle}\n >\n <Start\n className={clsx(paginationClasses.icon, classes?.icon)}\n color={setColor(!canPrevious)}\n />\n </StyledButtonIconTooltip>\n <StyledButtonIconTooltip\n id={setId(id, \"previousPage-button\")}\n aria-label={labels?.previousPage}\n className={clsx(\n paginationClasses.iconContainer,\n classes?.iconContainer\n )}\n disabled={!canPrevious}\n onClick={() => changePage(page - 1)}\n tooltip={labels?.paginationPreviousPageTitle}\n >\n <Backwards\n className={clsx(paginationClasses.icon, classes?.icon)}\n color={setColor(!canPrevious)}\n />\n </StyledButtonIconTooltip>\n <StyledPageInfo\n className={clsx(paginationClasses.pageInfo, classes?.pageInfo)}\n >\n {showPageJump ? (\n renderPageJump()\n ) : (\n <HvTypography component=\"span\">{`${page + 1}`}</HvTypography>\n )}\n <HvTypography component=\"span\">{`${labels?.pagesSeparator} `}</HvTypography>\n <HvTypography id={setId(id, \"totalPages\")} component=\"span\">\n {pages}\n </HvTypography>\n </StyledPageInfo>\n <StyledButtonIconTooltip\n id={setId(id, \"nextPage-button\")}\n aria-label={labels?.nextPage}\n className={clsx(\n paginationClasses.iconContainer,\n classes?.iconContainer\n )}\n disabled={!canNext}\n onClick={() => changePage(page + 1)}\n tooltip={labels?.paginationNextPageTitle}\n >\n <Forwards\n className={clsx(paginationClasses.icon, classes?.icon)}\n color={setColor(!canNext)}\n />\n </StyledButtonIconTooltip>\n <StyledButtonIconTooltip\n id={setId(id, \"lastPage-button\")}\n aria-label={labels?.lastPage}\n className={clsx(\n paginationClasses.iconContainer,\n classes?.iconContainer\n )}\n disabled={!canNext}\n onClick={() => changePage(pages - 1)}\n tooltip={labels?.paginationLastPageTitle}\n >\n <End\n className={clsx(paginationClasses.icon, classes?.icon)}\n color={setColor(!canNext)}\n />\n </StyledButtonIconTooltip>\n </StyledPageNavigator>\n </StyledRoot>\n );\n};\n"],"names":["DEFAULT_LABELS","pageSizePrev","pageSizeEntryName","pageSizeSelectorDescription","pagesSeparator","paginationFirstPageTitle","paginationPreviousPageTitle","paginationNextPageTitle","paginationLastPageTitle","paginationInputLabel","firstPage","previousPage","nextPage","lastPage","Enter","keyboardCodes","HvPagination","classes","className","id","pages","page","showPageSizeOptions","pageSizeOptions","pageSize","showPageJump","canPrevious","canNext","onPageChange","onPageSizeChange","labels","labelsProp","showPageProps","navigationProps","currentPageInputProps","others","useLabels","pageInput","handleInputChange","usePageInput","changePage","useCallback","newPage","safePage","getSafePage","useEffect","renderPageJump","_jsx","StyledPageJump","clsx","paginationClasses","pageJump","children","HvInput","setId","inputProps","type","root","pageSizeInputContainer","input","pageSizeInput","inputRoot","pageSizeInputRoot","onChange","event","value","Number","String","onBlur","evt","onKeyDown","isKeypress","disabled","disableClear","StyledRoot","StyledPageSizeOptions","_jsxs","_Fragment","Hidden","xsDown","StyledPageSizePrev","pageSizeTextContainer","HvTypography","component","StyledSelect","pageSizeOptionsSelect","_","val","map","option","Option","StyledPageSizeTextContainer","StyledPageNavigator","pageNavigator","StyledButtonIconTooltip","iconContainer","onClick","tooltip","Start","icon","color","setColor","Backwards","StyledPageInfo","pageInfo","Forwards","End"],"mappings":"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"}