@hitachivantara/uikit-react-core 3.68.1 → 3.68.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (244) hide show
  1. package/dist/Accordion/Accordion.js.map +1 -1
  2. package/dist/ActionBar/ActionBar.js.map +1 -1
  3. package/dist/ActionsGeneric/ActionsGeneric.js.map +1 -1
  4. package/dist/AppSwitcher/Action/Action.js.map +1 -1
  5. package/dist/AppSwitcher/AppSwitcher.js.map +1 -1
  6. package/dist/AppSwitcher/TitleWithTooltip.js.map +1 -1
  7. package/dist/AssetInventory/AssetInventory.js.map +1 -1
  8. package/dist/AssetInventory/CardView/CardView.js.map +1 -1
  9. package/dist/AssetInventory/ListView/ListView.js.map +1 -1
  10. package/dist/AssetInventory/ListView/ListViewCell/ListViewCell.js.map +1 -1
  11. package/dist/AssetInventory/ListView/ListViewCell/styles.js.map +1 -1
  12. package/dist/AssetInventory/ListView/ListViewContext/ListViewContext.js.map +1 -1
  13. package/dist/AssetInventory/ListView/ListViewHeaderRow/ListViewHeaderRow.js.map +1 -1
  14. package/dist/AssetInventory/ListView/ListViewRow/ListViewRow.js.map +1 -1
  15. package/dist/AssetInventory/Multibutton/Multibutton.js.map +1 -1
  16. package/dist/AssetInventory/Search/Search.js.map +1 -1
  17. package/dist/AssetInventory/Sort/Sort.js.map +1 -1
  18. package/dist/AssetInventory/setActionsId.js.map +1 -1
  19. package/dist/Avatar/Avatar.js.map +1 -1
  20. package/dist/Badge/Badge.js.map +1 -1
  21. package/dist/Banner/Banner.js.map +1 -1
  22. package/dist/Banner/BannerWrapper/ActionContainer/ActionContainer.js.map +1 -1
  23. package/dist/Banner/BannerWrapper/ActionContainer/styles.js.map +1 -1
  24. package/dist/Banner/BannerWrapper/BannerContentWrapper.js.map +1 -1
  25. package/dist/Banner/BannerWrapper/MessageContainer/MessageContainer.js.map +1 -1
  26. package/dist/BaseCheckBox/BaseCheckBox.js.map +1 -1
  27. package/dist/BaseDropdown/BaseDropdown.js.map +1 -1
  28. package/dist/BaseDropdown/BaseDropdownContext/BaseDropdownContext.js.map +1 -1
  29. package/dist/BaseInput/BaseInput.js.map +1 -1
  30. package/dist/BaseInput/validations.js.map +1 -1
  31. package/dist/BaseRadio/BaseRadio.js.map +1 -1
  32. package/dist/BaseSwitch/BaseSwitch.js.map +1 -1
  33. package/dist/BreadCrumb/BreadCrumb.js.map +1 -1
  34. package/dist/BreadCrumb/utils.js.map +1 -1
  35. package/dist/BulkActions/BulkActions.js.map +1 -1
  36. package/dist/BulkActions/styles.js.map +1 -1
  37. package/dist/Button/Button.js.map +1 -1
  38. package/dist/Button/materialConfigurarion.js.map +1 -1
  39. package/dist/Button/styles.js.map +1 -1
  40. package/dist/Calendar/Calendar.js.map +1 -1
  41. package/dist/Calendar/CalendarHeader/CalendarHeader.js.map +1 -1
  42. package/dist/Calendar/CalendarNavigation/ComposedNavigation/ComposedNavigation.js.map +1 -1
  43. package/dist/Calendar/CalendarNavigation/MonthSelector/MonthSelector.js.map +1 -1
  44. package/dist/Calendar/CalendarNavigation/Navigation/Navigation.js.map +1 -1
  45. package/dist/Calendar/CalendarWeekLabels/CalendarWeekLabels.js.map +1 -1
  46. package/dist/Calendar/SingleCalendar/CalendarCell.js.map +1 -1
  47. package/dist/Calendar/SingleCalendar/SingleCalendar.js.map +1 -1
  48. package/dist/Calendar/model.js.map +1 -1
  49. package/dist/Calendar/utils.js.map +1 -1
  50. package/dist/Card/Card.js.map +1 -1
  51. package/dist/Card/Content/Content.js.map +1 -1
  52. package/dist/Card/Header/Header.js.map +1 -1
  53. package/dist/Card/Media/Media.js.map +1 -1
  54. package/dist/Card/styles.js.map +1 -1
  55. package/dist/CheckBox/CheckBox.js.map +1 -1
  56. package/dist/CheckBoxGroup/CheckBoxGroup.js.map +1 -1
  57. package/dist/Container/Container.js.map +1 -1
  58. package/dist/DatePicker/DatePicker.js.map +1 -1
  59. package/dist/DatePicker/useVisibleDate.js.map +1 -1
  60. package/dist/DatePicker/utils.js.map +1 -1
  61. package/dist/Dialog/Dialog.js.map +1 -1
  62. package/dist/Dialog/DialogActions/DialogActions.js.map +1 -1
  63. package/dist/Dialog/DialogContent/DialogContent.js.map +1 -1
  64. package/dist/Dialog/DialogTitle/DialogTitle.js.map +1 -1
  65. package/dist/Dialog/styles.js.map +1 -1
  66. package/dist/DropDownMenu/DropDownMenu.js.map +1 -1
  67. package/dist/Dropdown/Dropdown.js.map +1 -1
  68. package/dist/Dropdown/List/List.js.map +1 -1
  69. package/dist/EmptyState/EmptyState.js.map +1 -1
  70. package/dist/FileUploader/DropZone/DropZone.js.map +1 -1
  71. package/dist/FileUploader/File/File.js.map +1 -1
  72. package/dist/FileUploader/FileList/FileList.js.map +1 -1
  73. package/dist/FileUploader/FileUploader.js.map +1 -1
  74. package/dist/FileUploader/Preview/Preview.js.map +1 -1
  75. package/dist/FilterGroup/Counter/Counter.js.map +1 -1
  76. package/dist/FilterGroup/Counter/styles.js.map +1 -1
  77. package/dist/FilterGroup/FilterContent/FilterContent.js.map +1 -1
  78. package/dist/FilterGroup/FilterContent/styles.js.map +1 -1
  79. package/dist/FilterGroup/FilterGroup.js.map +1 -1
  80. package/dist/FilterGroup/FilterGroupContext.js.map +1 -1
  81. package/dist/FilterGroup/LeftPanel/LeftPanel.js.map +1 -1
  82. package/dist/FilterGroup/LeftPanel/styles.js.map +1 -1
  83. package/dist/FilterGroup/RightPanel/RightPanel.js.map +1 -1
  84. package/dist/FilterGroup/RightPanel/styles.js.map +1 -1
  85. package/dist/FilterGroup/styles.js.map +1 -1
  86. package/dist/Focus/Focus.js.map +1 -1
  87. package/dist/Focus/utils.js.map +1 -1
  88. package/dist/Footer/Footer.js.map +1 -1
  89. package/dist/Forms/Adornment/Adornment.js.map +1 -1
  90. package/dist/Forms/CharCounter/CharCounter.js.map +1 -1
  91. package/dist/Forms/FormElement/FormElement.js.map +1 -1
  92. package/dist/Forms/FormElement/context/FormElementContext.js.map +1 -1
  93. package/dist/Forms/FormElement/context/FormElementDescriptorsContext.js.map +1 -1
  94. package/dist/Forms/FormElement/context/FormElementValueContext.js.map +1 -1
  95. package/dist/Forms/FormElement/utils/FormUtils.js.map +1 -1
  96. package/dist/Forms/InfoMessage/InfoMessage.js.map +1 -1
  97. package/dist/Forms/Label/Label.js.map +1 -1
  98. package/dist/Forms/Suggestions/Suggestions.js.map +1 -1
  99. package/dist/Forms/WarningText/WarningText.js.map +1 -1
  100. package/dist/GlobalActions/GlobalActions.js.map +1 -1
  101. package/dist/Grid/Grid.js.map +1 -1
  102. package/dist/Header/Actions/Actions.js.map +1 -1
  103. package/dist/Header/Brand/Brand.js.map +1 -1
  104. package/dist/Header/Header.js.map +1 -1
  105. package/dist/Header/Navigation/MenuBar/MenuBar.js.map +1 -1
  106. package/dist/Header/Navigation/MenuItem/MenuItem.js.map +1 -1
  107. package/dist/Header/Navigation/Navigation.js.map +1 -1
  108. package/dist/Header/Navigation/utils/FocusContext.js.map +1 -1
  109. package/dist/Header/Navigation/utils/SelectionContext.js.map +1 -1
  110. package/dist/Header/Navigation/utils/useSelectionPath.js.map +1 -1
  111. package/dist/Input/Input.js.map +1 -1
  112. package/dist/Kpi/Kpi.js.map +1 -1
  113. package/dist/Link/Link.js.map +1 -1
  114. package/dist/List/List.js +20 -16
  115. package/dist/List/List.js.map +1 -1
  116. package/dist/List/useSelectableList.js.map +1 -1
  117. package/dist/List/utils.js.map +1 -1
  118. package/dist/ListContainer/ListContainer.js.map +1 -1
  119. package/dist/ListContainer/ListContext/ListContext.js.map +1 -1
  120. package/dist/ListContainer/ListItem/ListItem.js.map +1 -1
  121. package/dist/Loading/Loading.js.map +1 -1
  122. package/dist/Login/Login.js.map +1 -1
  123. package/dist/Login/styles.js.map +1 -1
  124. package/dist/MultiButton/MultiButton.js.map +1 -1
  125. package/dist/OverflowTooltip/OverflowTooltip.js.map +1 -1
  126. package/dist/Pagination/Pagination.js.map +1 -1
  127. package/dist/Pagination/Select.js.map +1 -1
  128. package/dist/Pagination/utils.js.map +1 -1
  129. package/dist/Panel/Panel.js.map +1 -1
  130. package/dist/Provider/Provider.js.map +1 -1
  131. package/dist/Provider/context.js.map +1 -1
  132. package/dist/Provider/useLocale.js.map +1 -1
  133. package/dist/Radio/Radio.js.map +1 -1
  134. package/dist/RadioGroup/RadioGroup.js.map +1 -1
  135. package/dist/ScrollTo/Horizontal/HorizontalScrollListItem/HorizontalScrollListItem.js.map +1 -1
  136. package/dist/ScrollTo/Horizontal/ScrollToHorizontal.js.map +1 -1
  137. package/dist/ScrollTo/Horizontal/styles.js.map +1 -1
  138. package/dist/ScrollTo/Vertical/ScrollToVertical.js.map +1 -1
  139. package/dist/ScrollTo/Vertical/VerticalScrollListItem/VerticalScrollListItem.js.map +1 -1
  140. package/dist/ScrollTo/Vertical/styles.js.map +1 -1
  141. package/dist/ScrollTo/useScrollTo.js.map +1 -1
  142. package/dist/ScrollTo/withTooltip.js.map +1 -1
  143. package/dist/SelectionList/SelectionList.js.map +1 -1
  144. package/dist/SimpleGrid/SimpleGrid.js.map +1 -1
  145. package/dist/SimpleGrid/styles.js.map +1 -1
  146. package/dist/Slider/Slider.js.map +1 -1
  147. package/dist/Slider/SliderInput/SliderInput.js.map +1 -1
  148. package/dist/Slider/utils.js.map +1 -1
  149. package/dist/Snackbar/Snackbar.js.map +1 -1
  150. package/dist/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.js.map +1 -1
  151. package/dist/Snackbar/SnackbarProvider/SnackbarProvider.js.map +1 -1
  152. package/dist/Stack/Stack.js.map +1 -1
  153. package/dist/Switch/Switch.js.map +1 -1
  154. package/dist/Tab/Tab.js.map +1 -1
  155. package/dist/Table/CellWithTooltip/index.js.map +1 -1
  156. package/dist/Table/Header/Header.js.map +1 -1
  157. package/dist/Table/NoData/index.js.map +1 -1
  158. package/dist/Table/NoData/styles.js.map +1 -1
  159. package/dist/Table/Table.js +19 -22
  160. package/dist/Table/Table.js.map +1 -1
  161. package/dist/Table/columnUtils.js.map +1 -1
  162. package/dist/Table/selectTable.js.map +1 -1
  163. package/dist/Table/styles.js.map +1 -1
  164. package/dist/Tabs/Tabs.js.map +1 -1
  165. package/dist/Tag/Tag.js.map +1 -1
  166. package/dist/Tag/styles.js.map +1 -1
  167. package/dist/TagsInput/TagsInput.js.map +1 -1
  168. package/dist/TextArea/TextArea.js.map +1 -1
  169. package/dist/TimePicker/PeriodPicker/PeriodPicker.js.map +1 -1
  170. package/dist/TimePicker/PeriodPicker/index.js.map +1 -1
  171. package/dist/TimePicker/TimePicker.js.map +1 -1
  172. package/dist/TimePicker/UnitTimePicker/UnitTimePicker.js.map +1 -1
  173. package/dist/TimePicker/UnitTimePicker/index.js.map +1 -1
  174. package/dist/TimePicker/timePickerConverter.js.map +1 -1
  175. package/dist/TimePicker/timePickerFormatter.js.map +1 -1
  176. package/dist/TimePicker/timePickerUtils.js.map +1 -1
  177. package/dist/ToggleButton/ToggleButton.js.map +1 -1
  178. package/dist/Tooltip/Tooltip.js.map +1 -1
  179. package/dist/Typography/Typography.js.map +1 -1
  180. package/dist/UserPreferences/Action/Action.js.map +1 -1
  181. package/dist/UserPreferences/Action/styles.js.map +1 -1
  182. package/dist/UserPreferences/Actions/Actions.js.map +1 -1
  183. package/dist/UserPreferences/Options/Group/Group.js.map +1 -1
  184. package/dist/UserPreferences/Options/Label/Label.js.map +1 -1
  185. package/dist/UserPreferences/Options/Option.js.map +1 -1
  186. package/dist/UserPreferences/Options/Options.js.map +1 -1
  187. package/dist/UserPreferences/Options/OptionsContext.js.map +1 -1
  188. package/dist/UserPreferences/Options/styles.js.map +1 -1
  189. package/dist/UserPreferences/UserPreferences.js.map +1 -1
  190. package/dist/VerticalNavigation/Actions/Action.js.map +1 -1
  191. package/dist/VerticalNavigation/Actions/Actions.js.map +1 -1
  192. package/dist/VerticalNavigation/Navigation/Navigation.js +0 -1
  193. package/dist/VerticalNavigation/Navigation/Navigation.js.map +1 -1
  194. package/dist/VerticalNavigation/TreeView/TreeView.js.map +1 -1
  195. package/dist/VerticalNavigation/TreeView/TreeViewContexts.js.map +1 -1
  196. package/dist/VerticalNavigation/TreeView/TreeViewItem.js +1 -1
  197. package/dist/VerticalNavigation/TreeView/TreeViewItem.js.map +1 -1
  198. package/dist/VerticalNavigation/TreeView/descendants.js.map +1 -1
  199. package/dist/VerticalNavigation/VerticalContainer/VerticalContainer.js.map +1 -1
  200. package/dist/VerticalNavigation/VerticalNavigation.js.map +1 -1
  201. package/dist/legacy/List/List.js +23 -19
  202. package/dist/legacy/List/List.js.map +1 -1
  203. package/dist/legacy/Table/Table.js +20 -23
  204. package/dist/legacy/Table/Table.js.map +1 -1
  205. package/dist/legacy/VerticalNavigation/Navigation/Navigation.js +0 -1
  206. package/dist/legacy/VerticalNavigation/Navigation/Navigation.js.map +1 -1
  207. package/dist/legacy/VerticalNavigation/TreeView/TreeViewItem.js +1 -1
  208. package/dist/legacy/VerticalNavigation/TreeView/TreeViewItem.js.map +1 -1
  209. package/dist/legacy/utils/ConditionalRenderer.js +1 -0
  210. package/dist/legacy/utils/ConditionalRenderer.js.map +1 -1
  211. package/dist/modern/List/List.js +25 -24
  212. package/dist/modern/List/List.js.map +1 -1
  213. package/dist/modern/Table/Table.js +20 -23
  214. package/dist/modern/Table/Table.js.map +1 -1
  215. package/dist/modern/VerticalNavigation/TreeView/TreeViewItem.js +1 -1
  216. package/dist/modern/VerticalNavigation/TreeView/TreeViewItem.js.map +1 -1
  217. package/dist/modern/utils/ConditionalRenderer.js +1 -0
  218. package/dist/modern/utils/ConditionalRenderer.js.map +1 -1
  219. package/dist/theme/CssBaseline.js.map +1 -1
  220. package/dist/theme/ScopedCssBaseline.js.map +1 -1
  221. package/dist/theme/createGenerateClassName.js.map +1 -1
  222. package/dist/theme/index.js.map +1 -1
  223. package/dist/theme/overrides/muiButton.js.map +1 -1
  224. package/dist/theme/palette.js.map +1 -1
  225. package/dist/theme/typography.js.map +1 -1
  226. package/dist/useUniqueId.js.map +1 -1
  227. package/dist/utils/ConditionalRenderer.js +1 -0
  228. package/dist/utils/ConditionalRenderer.js.map +1 -1
  229. package/dist/utils/browser.js.map +1 -1
  230. package/dist/utils/hexToRgbA.js.map +1 -1
  231. package/dist/utils/refType.js.map +1 -1
  232. package/dist/utils/setId.js.map +1 -1
  233. package/dist/utils/useComputation.js.map +1 -1
  234. package/dist/utils/useDeprecated.js.map +1 -1
  235. package/dist/utils/useImageLoaded.js.map +1 -1
  236. package/dist/utils/useIsMounted.js.map +1 -1
  237. package/dist/utils/useLabels.js.map +1 -1
  238. package/dist/utils/usePropAsRef.js.map +1 -1
  239. package/dist/utils/useSavedState.js.map +1 -1
  240. package/dist/utils/useUpdated.js.map +1 -1
  241. package/dist/utils/useWidth.js.map +1 -1
  242. package/dist/withId.js.map +1 -1
  243. package/dist/withTooltip.js.map +1 -1
  244. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"TreeViewItem.js","names":["preventSelection","event","disabled","shiftKey","ctrlKey","metaKey","preventDefault","TreeViewItem","React","forwardRef","props","ref","idProp","id","className","classes","disabledProp","selectableProp","selectable","nodeId","icon","label","payload","onClick","onMouseDown","onFocus","children","others","treeViewControlContext","TreeViewControlContext","TreeViewStateContext","isExpanded","isSelected","isFocused","isDisabled","treeId","mode","collapsible","toggleExpansion","multiSelect","selectNode","selectRange","disabledItemsFocusable","registerNode","unregisterNode","mapFirstChar","unMapFirstChar","focus","treeviewMode","treeitemElement","setTreeitemElement","contentRef","handleRef","descendant","element","index","parentId","level","expandable","Array","isArray","expanded","focused","selected","idAttribute","undefined","current","textContent","substring","toLowerCase","ariaSelected","handleFocus","target","currentTarget","ownerDocument","document","getElementById","preventScroll","unfocusable","handleExpansion","multiple","handleSelection","end","handleMouseDown","handleClick","handleKeyDown","isEventHandled","key","altKey","stopPropagation","renderedContent","content","paddingLeft","role","tabIndex","onKeyDown","renderedChildren","group","node","unselected","unselectable","collapsed","propTypes","PropTypes","string","shape","isRequired","bool","any","func","styles","name"],"sources":["../../../src/VerticalNavigation/TreeView/TreeViewItem.js"],"sourcesContent":["import React, { useCallback, useContext, useEffect, useMemo, useRef, useState } from \"react\";\nimport clsx from \"clsx\";\nimport PropTypes from \"prop-types\";\nimport { withStyles } from \"@material-ui/core\";\n\nimport { DropDownXS, DropUpXS } from \"@hitachivantara/uikit-react-icons\";\n\nimport HvTypography from \"../../Typography\";\n\nimport { TreeViewControlContext, TreeViewStateContext } from \"./TreeViewContexts\";\n\nimport { setId, useForkRef } from \"../../utils\";\n\nimport { DescendantProvider, useDescendant } from \"./descendants\";\n\nimport styles from \"./styles\";\n\nconst preventSelection = (event, disabled) => {\n if (event.shiftKey || event.ctrlKey || event.metaKey || disabled) {\n // Prevent text selection\n event.preventDefault();\n }\n};\n\nconst TreeViewItem = React.forwardRef((props, 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 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 } = 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 = 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(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 { 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 = 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 (mapFirstChar && unMapFirstChar && label) {\n mapFirstChar(nodeId, contentRef.current?.textContent.substring(0, 1).toLowerCase());\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 (!focused && event.currentTarget === event.target && !unfocusable) {\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) {\n focus(event, nodeId);\n }\n\n const multiple = 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(nodeId))) {\n 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) {\n focus(event, nodeId);\n }\n\n const multiple = multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);\n\n if (multiple) {\n if (event.shiftKey) {\n selectRange(event, { end: nodeId });\n } else {\n selectNode(event, nodeId, true);\n }\n } else {\n selectNode(event, nodeId);\n }\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 [disabled, expandable, handleExpansion, handleSelection, onClick, selectable]\n );\n\n const handleKeyDown = useCallback(\n (event) => {\n let isEventHandled = false;\n const { key } = event;\n\n if (event.altKey || event.ctrlKey || event.metaKey || event.currentTarget !== event.target) {\n return;\n }\n if (contentRef.current === event.currentTarget) {\n if (key === \"Enter\" || key === \" \") {\n if (expandable) {\n isEventHandled = handleExpansion(event);\n }\n\n if (selectable) {\n isEventHandled = handleSelection(event);\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 <HvTypography\n id={setId(id, \"button\")}\n component=\"div\"\n innerRef={contentRef}\n className={classes.content}\n variant={disabled ? \"placeholderText\" : \"normalText\"}\n onClick={handleClick}\n onMouseDown={handleMouseDown}\n style={{\n paddingLeft: (expandable || icon != null ? 0 : 10) + 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 {expandable && (expanded ? <DropUpXS /> : <DropDownXS />)}\n {icon}\n {label}\n </HvTypography>\n ),\n [\n id,\n classes.content,\n handleClick,\n handleMouseDown,\n expandable,\n level,\n collapsible,\n treeviewMode,\n handleFocus,\n handleKeyDown,\n selectable,\n selected,\n expanded,\n icon,\n label,\n ]\n );\n\n const renderedChildren = useMemo(\n () =>\n children && (\n <ul\n id={setId(id, \"group\")}\n className={classes.group}\n role={treeviewMode ? \"group\" : undefined}\n >\n {children}\n </ul>\n ),\n [children, classes.group, id, treeviewMode]\n );\n\n return (\n <li\n ref={handleRef}\n id={id}\n className={clsx(classes.node, className, {\n [classes.disabled]: disabled,\n [classes.expandable]: expandable,\n [classes.collapsed]: expandable && !expanded,\n [classes.expanded]: expandable && expanded,\n [classes.selectable]: !disabled && selectable,\n [classes.unselectable]: !disabled && !selectable,\n [classes.selected]: !disabled && selectable && selected,\n [classes.unselected]: !disabled && selectable && !selected,\n [classes.focused]: focused,\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 <DescendantProvider id={nodeId} level={level + 1}>\n {renderedChildren}\n </DescendantProvider>\n </li>\n );\n});\n\nTreeViewItem.propTypes = {\n /**\n * Id to be applied to the root node.\n */\n id: PropTypes.string,\n /**\n * Class names to be applied.\n */\n className: PropTypes.string,\n /**\n * A Jss Object used to override or extend the styles applied to the Radio button.\n */\n classes: PropTypes.shape({\n /**\n * Style applied to the root of the component.\n */\n node: PropTypes.string,\n /**\n * Style applied to the content.\n */\n content: PropTypes.string,\n /**\n * Style applied to the group.\n */\n group: PropTypes.string,\n /**\n * Style applied when item is disabled.\n */\n disabled: PropTypes.string,\n /**\n * Style applied when item is expandable.\n */\n expandable: PropTypes.string,\n /**\n * Style applied when item is collapsed.\n */\n collapsed: PropTypes.string,\n /**\n * Style applied when item is expanded.\n */\n expanded: PropTypes.string,\n /**\n * Style applied when item is selectable.\n */\n selectable: PropTypes.string,\n /**\n * Style applied when item is unselectable.\n */\n unselectable: PropTypes.string,\n /**\n * Style applied when item is selected.\n */\n selected: PropTypes.string,\n /**\n * Style applied when item is unselectable.\n */\n unselected: PropTypes.string,\n /**\n * Style applied when item is focused.\n */\n focused: PropTypes.string,\n }).isRequired,\n /**\n * Is the node disabled.\n */\n disabled: PropTypes.bool,\n /**\n * Can the node be selected.\n */\n selectable: PropTypes.bool,\n /**\n * The id of the node.\n */\n nodeId: PropTypes.string.isRequired,\n /**\n * The icon to display next to the node's label.\n */\n icon: PropTypes.node,\n /**\n * The item label.\n */\n label: PropTypes.node.isRequired,\n /**\n * The node payload.\n */\n // eslint-disable-next-line react/forbid-prop-types\n payload: PropTypes.any,\n /**\n * @ignore\n */\n onClick: PropTypes.func,\n /**\n * @ignore\n */\n onMouseDown: PropTypes.func,\n /**\n * @ignore\n */\n onFocus: PropTypes.func,\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n};\n\nexport default withStyles(styles, {\n name: \"HvVerticalNavigationTreeViewItem\",\n})(TreeViewItem);\n"],"mappings":"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"}
1
+ {"version":3,"file":"TreeViewItem.js","names":["preventSelection","event","disabled","shiftKey","ctrlKey","metaKey","preventDefault","TreeViewItem","React","forwardRef","props","ref","idProp","id","className","classes","disabledProp","selectableProp","selectable","nodeId","icon","label","payload","onClick","onMouseDown","onFocus","children","others","treeViewControlContext","useContext","TreeViewControlContext","TreeViewStateContext","isExpanded","isSelected","isFocused","isDisabled","treeId","mode","collapsible","toggleExpansion","multiSelect","selectNode","selectRange","disabledItemsFocusable","registerNode","unregisterNode","mapFirstChar","unMapFirstChar","focus","treeviewMode","useState","treeitemElement","setTreeitemElement","contentRef","useRef","handleRef","useForkRef","descendant","useMemo","element","useDescendant","index","parentId","level","expandable","Array","isArray","expanded","focused","selected","useEffect","idAttribute","undefined","current","textContent","substring","toLowerCase","ariaSelected","handleFocus","useCallback","target","currentTarget","ownerDocument","document","getElementById","preventScroll","unfocusable","handleExpansion","multiple","handleSelection","end","handleMouseDown","handleClick","handleKeyDown","isEventHandled","key","altKey","stopPropagation","renderedContent","setId","content","paddingLeft","role","tabIndex","onKeyDown","renderedChildren","group","clsx","node","unselected","unselectable","collapsed","propTypes","PropTypes","string","shape","isRequired","bool","any","func","withStyles","styles","name"],"sources":["../../../src/VerticalNavigation/TreeView/TreeViewItem.js"],"sourcesContent":["import React, { useCallback, useContext, useEffect, useMemo, useRef, useState } from \"react\";\nimport clsx from \"clsx\";\nimport PropTypes from \"prop-types\";\nimport { withStyles } from \"@material-ui/core\";\n\nimport { DropDownXS, DropUpXS } from \"@hitachivantara/uikit-react-icons\";\n\nimport HvTypography from \"../../Typography\";\n\nimport { TreeViewControlContext, TreeViewStateContext } from \"./TreeViewContexts\";\n\nimport { setId, useForkRef } from \"../../utils\";\n\nimport { DescendantProvider, useDescendant } from \"./descendants\";\n\nimport styles from \"./styles\";\n\nconst preventSelection = (event, disabled) => {\n if (event.shiftKey || event.ctrlKey || event.metaKey || disabled) {\n // Prevent text selection\n event.preventDefault();\n }\n};\n\nconst TreeViewItem = React.forwardRef((props, 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 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 } = 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 = 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(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 { 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 = 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 (mapFirstChar && unMapFirstChar && label) {\n mapFirstChar(nodeId, contentRef.current?.textContent.substring(0, 1).toLowerCase());\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 (!focused && event.currentTarget === event.target && !unfocusable) {\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) {\n focus(event, nodeId);\n }\n\n const multiple = 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(nodeId))) {\n 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) {\n focus(event, nodeId);\n }\n\n const multiple = multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);\n\n if (multiple) {\n if (event.shiftKey) {\n selectRange(event, { end: nodeId });\n } else {\n selectNode(event, nodeId, true);\n }\n } else {\n selectNode(event, nodeId);\n }\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 [disabled, expandable, handleExpansion, handleSelection, onClick, selectable]\n );\n\n const handleKeyDown = useCallback(\n (event) => {\n let isEventHandled = false;\n const { key } = event;\n\n if (event.altKey || event.ctrlKey || event.metaKey || event.currentTarget !== event.target) {\n return;\n }\n if (contentRef.current === event.currentTarget) {\n if (key === \"Enter\" || key === \" \") {\n if (expandable) {\n isEventHandled = handleExpansion(event);\n }\n\n if (selectable) {\n isEventHandled = handleSelection(event);\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 <HvTypography\n id={setId(id, \"button\")}\n component=\"div\"\n innerRef={contentRef}\n className={classes.content}\n variant={disabled ? \"placeholderText\" : \"normalText\"}\n onClick={handleClick}\n onMouseDown={handleMouseDown}\n style={{\n paddingLeft: (expandable || icon != null ? 0 : 10) + 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 {expandable && (expanded ? <DropUpXS /> : <DropDownXS />)}\n {icon}\n {label}\n </HvTypography>\n ),\n [\n id,\n classes.content,\n handleClick,\n handleMouseDown,\n expandable,\n level,\n collapsible,\n treeviewMode,\n handleFocus,\n handleKeyDown,\n selectable,\n selected,\n expanded,\n icon,\n label,\n disabled,\n ]\n );\n\n const renderedChildren = useMemo(\n () =>\n children && (\n <ul\n id={setId(id, \"group\")}\n className={classes.group}\n role={treeviewMode ? \"group\" : undefined}\n >\n {children}\n </ul>\n ),\n [children, classes.group, id, treeviewMode]\n );\n\n return (\n <li\n ref={handleRef}\n id={id}\n className={clsx(classes.node, className, {\n [classes.disabled]: disabled,\n [classes.expandable]: expandable,\n [classes.collapsed]: expandable && !expanded,\n [classes.expanded]: expandable && expanded,\n [classes.selectable]: !disabled && selectable,\n [classes.unselectable]: !disabled && !selectable,\n [classes.selected]: !disabled && selectable && selected,\n [classes.unselected]: !disabled && selectable && !selected,\n [classes.focused]: focused,\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 <DescendantProvider id={nodeId} level={level + 1}>\n {renderedChildren}\n </DescendantProvider>\n </li>\n );\n});\n\nTreeViewItem.propTypes = {\n /**\n * Id to be applied to the root node.\n */\n id: PropTypes.string,\n /**\n * Class names to be applied.\n */\n className: PropTypes.string,\n /**\n * A Jss Object used to override or extend the styles applied to the Radio button.\n */\n classes: PropTypes.shape({\n /**\n * Style applied to the root of the component.\n */\n node: PropTypes.string,\n /**\n * Style applied to the content.\n */\n content: PropTypes.string,\n /**\n * Style applied to the group.\n */\n group: PropTypes.string,\n /**\n * Style applied when item is disabled.\n */\n disabled: PropTypes.string,\n /**\n * Style applied when item is expandable.\n */\n expandable: PropTypes.string,\n /**\n * Style applied when item is collapsed.\n */\n collapsed: PropTypes.string,\n /**\n * Style applied when item is expanded.\n */\n expanded: PropTypes.string,\n /**\n * Style applied when item is selectable.\n */\n selectable: PropTypes.string,\n /**\n * Style applied when item is unselectable.\n */\n unselectable: PropTypes.string,\n /**\n * Style applied when item is selected.\n */\n selected: PropTypes.string,\n /**\n * Style applied when item is unselectable.\n */\n unselected: PropTypes.string,\n /**\n * Style applied when item is focused.\n */\n focused: PropTypes.string,\n }).isRequired,\n /**\n * Is the node disabled.\n */\n disabled: PropTypes.bool,\n /**\n * Can the node be selected.\n */\n selectable: PropTypes.bool,\n /**\n * The id of the node.\n */\n nodeId: PropTypes.string.isRequired,\n /**\n * The icon to display next to the node's label.\n */\n icon: PropTypes.node,\n /**\n * The item label.\n */\n label: PropTypes.node.isRequired,\n /**\n * The node payload.\n */\n // eslint-disable-next-line react/forbid-prop-types\n payload: PropTypes.any,\n /**\n * @ignore\n */\n onClick: PropTypes.func,\n /**\n * @ignore\n */\n onMouseDown: PropTypes.func,\n /**\n * @ignore\n */\n onFocus: PropTypes.func,\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n};\n\nexport default withStyles(styles, {\n name: \"HvVerticalNavigationTreeViewItem\",\n})(TreeViewItem);\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"descendants.js","names":["findIndex","array","comp","i","length","binaryFindElement","element","start","end","middle","Math","floor","compareDocumentPosition","Node","DOCUMENT_POSITION_PRECEDING","DescendantContext","React","createContext","level","process","env","NODE_ENV","displayName","usePrevious","value","ref","useRef","useEffect","current","noop","useDescendant","descendant","useState","forceUpdate","useContext","registerDescendant","unregisterDescendant","descendants","parentId","index","item","previousDescendants","someDescendantsHaveChanged","some","newDescendant","position","undefined","DescendantProvider","props","children","id","items","set","useCallback","other","oldItems","newItems","newItem","slice","splice","forEach","filter","useMemo","propTypes","PropTypes","node","string","number"],"sources":["../../../src/VerticalNavigation/TreeView/descendants.js"],"sourcesContent":["/**\n * Copied from https://github.com/mui-org/material-ui/blob/8763de1633d80295e7b83d8c21040dad333e6699/packages/material-ui-lab/src/TreeView/descendants.js\n * Credit: https://github.com/reach/reach-ui/blob/86a046f54d53b6420e392b3fa56dd991d9d4e458/packages/descendants/README.md\n *\n * - Added level (depth) property.\n * - Use local copy of useEnhancedEffect.\n */\n\nimport * as React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { useEnhancedEffect } from \"../../utils\";\n\n// To replace with .findIndex() once we stop IE11 support.\nfunction findIndex(array, comp) {\n for (let i = 0; i < array.length; i += 1) {\n if (comp(array[i])) {\n return i;\n }\n }\n\n return -1;\n}\n\nfunction binaryFindElement(array, element) {\n let start = 0;\n let end = array.length - 1;\n\n while (start <= end) {\n const middle = Math.floor((start + end) / 2);\n\n if (array[middle].element === element) {\n return middle;\n }\n\n // eslint-disable-next-line no-bitwise\n if (array[middle].element.compareDocumentPosition(element) & Node.DOCUMENT_POSITION_PRECEDING) {\n end = middle - 1;\n } else {\n start = middle + 1;\n }\n }\n\n return start;\n}\n\nconst DescendantContext = React.createContext({ level: 0 });\n\nif (process.env.NODE_ENV !== \"production\") {\n DescendantContext.displayName = \"DescendantContext\";\n}\n\nfunction usePrevious(value) {\n const ref = React.useRef(null);\n React.useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref.current;\n}\n\nconst noop = () => {};\n\n/**\n * This hook registers our descendant by passing it into an array. We can then\n * search that array by to find its index when registering it in the component.\n * We use this for focus management, keyboard navigation, and typeahead\n * functionality for some components.\n *\n * The hook accepts the element node\n *\n * Our main goals with this are:\n * 1) maximum composability,\n * 2) minimal API friction\n * 3) SSR compatibility*\n * 4) concurrent safe\n * 5) index always up-to-date with the tree despite changes\n * 6) works with memoization of any component in the tree (hopefully)\n *\n * * As for SSR, the good news is that we don't actually need the index on the\n * server for most use-cases, as we are only using it to determine the order of\n * composed descendants for keyboard navigation.\n */\nexport function useDescendant(descendant) {\n const [, forceUpdate] = React.useState();\n const {\n registerDescendant = noop,\n unregisterDescendant = noop,\n descendants = [],\n parentId = null,\n level = 0,\n } = React.useContext(DescendantContext);\n\n // This will initially return -1 because we haven't registered the descendant\n // on the first render. After we register, this will then return the correct\n // index on the following render and we will re-register descendants\n // so that everything is up-to-date before the user interacts with a\n // collection.\n const index = findIndex(descendants, (item) => item.element === descendant.element);\n\n const previousDescendants = usePrevious(descendants);\n\n // We also need to re-register descendants any time ANY of the other\n // descendants have changed. My brain was melting when I wrote this and it\n // feels a little off, but checking in render and using the result in the\n // effect's dependency array works well enough.\n const someDescendantsHaveChanged = descendants.some((newDescendant, position) => {\n return (\n previousDescendants &&\n previousDescendants[position] &&\n previousDescendants[position].element !== newDescendant.element\n );\n });\n\n // Prevent any flashing\n useEnhancedEffect(() => {\n if (descendant.element) {\n registerDescendant({\n ...descendant,\n index,\n });\n return () => {\n unregisterDescendant(descendant.element);\n };\n }\n forceUpdate({});\n\n return undefined;\n }, [registerDescendant, unregisterDescendant, index, someDescendantsHaveChanged, descendant]);\n\n return { parentId, index, level };\n}\n\nexport function DescendantProvider(props) {\n const { children, id, level } = props;\n\n const [items, set] = React.useState([]);\n\n const registerDescendant = React.useCallback(({ element, ...other }) => {\n set((oldItems) => {\n let newItems;\n if (oldItems.length === 0) {\n // If there are no items, register at index 0 and bail.\n return [\n {\n ...other,\n element,\n index: 0,\n },\n ];\n }\n\n const index = binaryFindElement(oldItems, element);\n\n if (oldItems[index] && oldItems[index].element === element) {\n // If the element is already registered, just use the same array\n newItems = oldItems;\n } else {\n // When registering a descendant, we need to make sure we insert in\n // into the array in the same order that it appears in the DOM. So as\n // new descendants are added or maybe some are removed, we always know\n // that the array is up-to-date and correct.\n //\n // So here we look at our registered descendants and see if the new\n // element we are adding appears earlier than an existing descendant's\n // DOM node via `node.compareDocumentPosition`. If it does, we insert\n // the new element at this index. Because `registerDescendant` will be\n // called in an effect every time the descendants state value changes,\n // we should be sure that this index is accurate when descendent\n // elements come or go from our component.\n\n const newItem = {\n ...other,\n element,\n index,\n };\n\n // If an index is not found we will push the element to the end.\n newItems = oldItems.slice();\n newItems.splice(index, 0, newItem);\n }\n newItems.forEach((item, position) => {\n // eslint-disable-next-line no-param-reassign\n item.index = position;\n });\n return newItems;\n });\n }, []);\n\n const unregisterDescendant = React.useCallback((element) => {\n set((oldItems) => oldItems.filter((item) => element !== item.element));\n }, []);\n\n const value = React.useMemo(\n () => ({\n descendants: items,\n registerDescendant,\n unregisterDescendant,\n parentId: id,\n level,\n }),\n [items, registerDescendant, unregisterDescendant, id, level]\n );\n\n return <DescendantContext.Provider value={value}>{children}</DescendantContext.Provider>;\n}\n\nDescendantProvider.propTypes = {\n children: PropTypes.node,\n id: PropTypes.string,\n level: PropTypes.number,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA;;AACA;;AAEA;;;;;;;;;;;;AAEA;AACA,SAASA,SAAT,CAAmBC,KAAnB,EAA0BC,IAA1B,EAAgC;EAC9B,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGF,KAAK,CAACG,MAA1B,EAAkCD,CAAC,IAAI,CAAvC,EAA0C;IACxC,IAAID,IAAI,CAACD,KAAK,CAACE,CAAD,CAAN,CAAR,EAAoB;MAClB,OAAOA,CAAP;IACD;EACF;;EAED,OAAO,CAAC,CAAR;AACD;;AAED,SAASE,iBAAT,CAA2BJ,KAA3B,EAAkCK,OAAlC,EAA2C;EACzC,IAAIC,KAAK,GAAG,CAAZ;EACA,IAAIC,GAAG,GAAGP,KAAK,CAACG,MAAN,GAAe,CAAzB;;EAEA,OAAOG,KAAK,IAAIC,GAAhB,EAAqB;IACnB,IAAMC,MAAM,GAAGC,IAAI,CAACC,KAAL,CAAW,CAACJ,KAAK,GAAGC,GAAT,IAAgB,CAA3B,CAAf;;IAEA,IAAIP,KAAK,CAACQ,MAAD,CAAL,CAAcH,OAAd,KAA0BA,OAA9B,EAAuC;MACrC,OAAOG,MAAP;IACD,CALkB,CAOnB;;;IACA,IAAIR,KAAK,CAACQ,MAAD,CAAL,CAAcH,OAAd,CAAsBM,uBAAtB,CAA8CN,OAA9C,IAAyDO,IAAI,CAACC,2BAAlE,EAA+F;MAC7FN,GAAG,GAAGC,MAAM,GAAG,CAAf;IACD,CAFD,MAEO;MACLF,KAAK,GAAGE,MAAM,GAAG,CAAjB;IACD;EACF;;EAED,OAAOF,KAAP;AACD;;AAED,IAAMQ,iBAAiB,gBAAGC,KAAK,CAACC,aAAN,CAAoB;EAAEC,KAAK,EAAE;AAAT,CAApB,CAA1B;;AAEA,IAAIC,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,YAA7B,EAA2C;EACzCN,iBAAiB,CAACO,WAAlB,GAAgC,mBAAhC;AACD;;AAED,SAASC,WAAT,CAAqBC,KAArB,EAA4B;EAC1B,IAAMC,GAAG,GAAGT,KAAK,CAACU,MAAN,CAAa,IAAb,CAAZ;EACAV,KAAK,CAACW,SAAN,CAAgB,YAAM;IACpBF,GAAG,CAACG,OAAJ,GAAcJ,KAAd;EACD,CAFD,EAEG,CAACA,KAAD,CAFH;EAGA,OAAOC,GAAG,CAACG,OAAX;AACD;;AAED,IAAMC,IAAI,GAAG,SAAPA,IAAO,GAAM,CAAE,CAArB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASC,aAAT,CAAuBC,UAAvB,EAAmC;EACxC,sBAAwBf,KAAK,CAACgB,QAAN,EAAxB;EAAA;EAAA,IAASC,WAAT;;EACA,wBAMIjB,KAAK,CAACkB,UAAN,CAAiBnB,iBAAjB,CANJ;EAAA,8CACEoB,kBADF;EAAA,IACEA,kBADF,sCACuBN,IADvB;EAAA,8CAEEO,oBAFF;EAAA,IAEEA,oBAFF,sCAEyBP,IAFzB;EAAA,8CAGEQ,WAHF;EAAA,IAGEA,WAHF,sCAGgB,EAHhB;EAAA,8CAIEC,QAJF;EAAA,IAIEA,QAJF,sCAIa,IAJb;EAAA,8CAKEpB,KALF;EAAA,IAKEA,KALF,sCAKU,CALV,yBAFwC,CAUxC;EACA;EACA;EACA;EACA;;;EACA,IAAMqB,KAAK,GAAGvC,SAAS,CAACqC,WAAD,EAAc,UAACG,IAAD;IAAA,OAAUA,IAAI,CAAClC,OAAL,KAAiByB,UAAU,CAACzB,OAAtC;EAAA,CAAd,CAAvB;EAEA,IAAMmC,mBAAmB,GAAGlB,WAAW,CAACc,WAAD,CAAvC,CAjBwC,CAmBxC;EACA;EACA;EACA;;EACA,IAAMK,0BAA0B,GAAGL,WAAW,CAACM,IAAZ,CAAiB,UAACC,aAAD,EAAgBC,QAAhB,EAA6B;IAC/E,OACEJ,mBAAmB,IACnBA,mBAAmB,CAACI,QAAD,CADnB,IAEAJ,mBAAmB,CAACI,QAAD,CAAnB,CAA8BvC,OAA9B,KAA0CsC,aAAa,CAACtC,OAH1D;EAKD,CANkC,CAAnC,CAvBwC,CA+BxC;;EACA,8BAAkB,YAAM;IACtB,IAAIyB,UAAU,CAACzB,OAAf,EAAwB;MACtB6B,kBAAkB,iCACbJ,UADa;QAEhBQ,KAAK,EAALA;MAFgB,GAAlB;MAIA,OAAO,YAAM;QACXH,oBAAoB,CAACL,UAAU,CAACzB,OAAZ,CAApB;MACD,CAFD;IAGD;;IACD2B,WAAW,CAAC,EAAD,CAAX;IAEA,OAAOa,SAAP;EACD,CAbD,EAaG,CAACX,kBAAD,EAAqBC,oBAArB,EAA2CG,KAA3C,EAAkDG,0BAAlD,EAA8EX,UAA9E,CAbH;EAeA,OAAO;IAAEO,QAAQ,EAARA,QAAF;IAAYC,KAAK,EAALA,KAAZ;IAAmBrB,KAAK,EAALA;EAAnB,CAAP;AACD;;AAEM,SAAS6B,kBAAT,CAA4BC,KAA5B,EAAmC;EACxC,IAAQC,QAAR,GAAgCD,KAAhC,CAAQC,QAAR;EAAA,IAAkBC,EAAlB,GAAgCF,KAAhC,CAAkBE,EAAlB;EAAA,IAAsBhC,KAAtB,GAAgC8B,KAAhC,CAAsB9B,KAAtB;;EAEA,uBAAqBF,KAAK,CAACgB,QAAN,CAAe,EAAf,CAArB;EAAA;EAAA,IAAOmB,KAAP;EAAA,IAAcC,GAAd;;EAEA,IAAMjB,kBAAkB,GAAGnB,KAAK,CAACqC,WAAN,CAAkB,gBAA2B;IAAA,IAAxB/C,OAAwB,QAAxBA,OAAwB;IAAA,IAAZgD,KAAY;IACtEF,GAAG,CAAC,UAACG,QAAD,EAAc;MAChB,IAAIC,QAAJ;;MACA,IAAID,QAAQ,CAACnD,MAAT,KAAoB,CAAxB,EAA2B;QACzB;QACA,OAAO,iCAEAkD,KAFA;UAGHhD,OAAO,EAAPA,OAHG;UAIHiC,KAAK,EAAE;QAJJ,GAAP;MAOD;;MAED,IAAMA,KAAK,GAAGlC,iBAAiB,CAACkD,QAAD,EAAWjD,OAAX,CAA/B;;MAEA,IAAIiD,QAAQ,CAAChB,KAAD,CAAR,IAAmBgB,QAAQ,CAAChB,KAAD,CAAR,CAAgBjC,OAAhB,KAA4BA,OAAnD,EAA4D;QAC1D;QACAkD,QAAQ,GAAGD,QAAX;MACD,CAHD,MAGO;QACL;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QAEA,IAAME,OAAO,mCACRH,KADQ;UAEXhD,OAAO,EAAPA,OAFW;UAGXiC,KAAK,EAALA;QAHW,EAAb,CAdK,CAoBL;;;QACAiB,QAAQ,GAAGD,QAAQ,CAACG,KAAT,EAAX;QACAF,QAAQ,CAACG,MAAT,CAAgBpB,KAAhB,EAAuB,CAAvB,EAA0BkB,OAA1B;MACD;;MACDD,QAAQ,CAACI,OAAT,CAAiB,UAACpB,IAAD,EAAOK,QAAP,EAAoB;QACnC;QACAL,IAAI,CAACD,KAAL,GAAaM,QAAb;MACD,CAHD;MAIA,OAAOW,QAAP;IACD,CA/CE,CAAH;EAgDD,CAjD0B,EAiDxB,EAjDwB,CAA3B;EAmDA,IAAMpB,oBAAoB,GAAGpB,KAAK,CAACqC,WAAN,CAAkB,UAAC/C,OAAD,EAAa;IAC1D8C,GAAG,CAAC,UAACG,QAAD;MAAA,OAAcA,QAAQ,CAACM,MAAT,CAAgB,UAACrB,IAAD;QAAA,OAAUlC,OAAO,KAAKkC,IAAI,CAAClC,OAA3B;MAAA,CAAhB,CAAd;IAAA,CAAD,CAAH;EACD,CAF4B,EAE1B,EAF0B,CAA7B;EAIA,IAAMkB,KAAK,GAAGR,KAAK,CAAC8C,OAAN,CACZ;IAAA,OAAO;MACLzB,WAAW,EAAEc,KADR;MAELhB,kBAAkB,EAAlBA,kBAFK;MAGLC,oBAAoB,EAApBA,oBAHK;MAILE,QAAQ,EAAEY,EAJL;MAKLhC,KAAK,EAALA;IALK,CAAP;EAAA,CADY,EAQZ,CAACiC,KAAD,EAAQhB,kBAAR,EAA4BC,oBAA5B,EAAkDc,EAAlD,EAAsDhC,KAAtD,CARY,CAAd;EAWA,oBAAO,oBAAC,iBAAD,CAAmB,QAAnB;IAA4B,KAAK,EAAEM;EAAnC,GAA2CyB,QAA3C,CAAP;AACD;;AAED,wCAAAF,kBAAkB,CAACgB,SAAnB,GAA+B;EAC7Bd,QAAQ,EAAEe,mBAAUC,IADS;EAE7Bf,EAAE,EAAEc,mBAAUE,MAFe;EAG7BhD,KAAK,EAAE8C,mBAAUG;AAHY,CAA/B"}
1
+ {"version":3,"file":"descendants.js","names":["findIndex","array","comp","i","length","binaryFindElement","element","start","end","middle","Math","floor","compareDocumentPosition","Node","DOCUMENT_POSITION_PRECEDING","DescendantContext","React","createContext","level","process","env","NODE_ENV","displayName","usePrevious","value","ref","useRef","useEffect","current","noop","useDescendant","descendant","useState","forceUpdate","useContext","registerDescendant","unregisterDescendant","descendants","parentId","index","item","previousDescendants","someDescendantsHaveChanged","some","newDescendant","position","useEnhancedEffect","undefined","DescendantProvider","props","children","id","items","set","useCallback","other","oldItems","newItems","newItem","slice","splice","forEach","filter","useMemo","propTypes","PropTypes","node","string","number"],"sources":["../../../src/VerticalNavigation/TreeView/descendants.js"],"sourcesContent":["/**\n * Copied from https://github.com/mui-org/material-ui/blob/8763de1633d80295e7b83d8c21040dad333e6699/packages/material-ui-lab/src/TreeView/descendants.js\n * Credit: https://github.com/reach/reach-ui/blob/86a046f54d53b6420e392b3fa56dd991d9d4e458/packages/descendants/README.md\n *\n * - Added level (depth) property.\n * - Use local copy of useEnhancedEffect.\n */\n\nimport * as React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { useEnhancedEffect } from \"../../utils\";\n\n// To replace with .findIndex() once we stop IE11 support.\nfunction findIndex(array, comp) {\n for (let i = 0; i < array.length; i += 1) {\n if (comp(array[i])) {\n return i;\n }\n }\n\n return -1;\n}\n\nfunction binaryFindElement(array, element) {\n let start = 0;\n let end = array.length - 1;\n\n while (start <= end) {\n const middle = Math.floor((start + end) / 2);\n\n if (array[middle].element === element) {\n return middle;\n }\n\n // eslint-disable-next-line no-bitwise\n if (array[middle].element.compareDocumentPosition(element) & Node.DOCUMENT_POSITION_PRECEDING) {\n end = middle - 1;\n } else {\n start = middle + 1;\n }\n }\n\n return start;\n}\n\nconst DescendantContext = React.createContext({ level: 0 });\n\nif (process.env.NODE_ENV !== \"production\") {\n DescendantContext.displayName = \"DescendantContext\";\n}\n\nfunction usePrevious(value) {\n const ref = React.useRef(null);\n React.useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref.current;\n}\n\nconst noop = () => {};\n\n/**\n * This hook registers our descendant by passing it into an array. We can then\n * search that array by to find its index when registering it in the component.\n * We use this for focus management, keyboard navigation, and typeahead\n * functionality for some components.\n *\n * The hook accepts the element node\n *\n * Our main goals with this are:\n * 1) maximum composability,\n * 2) minimal API friction\n * 3) SSR compatibility*\n * 4) concurrent safe\n * 5) index always up-to-date with the tree despite changes\n * 6) works with memoization of any component in the tree (hopefully)\n *\n * * As for SSR, the good news is that we don't actually need the index on the\n * server for most use-cases, as we are only using it to determine the order of\n * composed descendants for keyboard navigation.\n */\nexport function useDescendant(descendant) {\n const [, forceUpdate] = React.useState();\n const {\n registerDescendant = noop,\n unregisterDescendant = noop,\n descendants = [],\n parentId = null,\n level = 0,\n } = React.useContext(DescendantContext);\n\n // This will initially return -1 because we haven't registered the descendant\n // on the first render. After we register, this will then return the correct\n // index on the following render and we will re-register descendants\n // so that everything is up-to-date before the user interacts with a\n // collection.\n const index = findIndex(descendants, (item) => item.element === descendant.element);\n\n const previousDescendants = usePrevious(descendants);\n\n // We also need to re-register descendants any time ANY of the other\n // descendants have changed. My brain was melting when I wrote this and it\n // feels a little off, but checking in render and using the result in the\n // effect's dependency array works well enough.\n const someDescendantsHaveChanged = descendants.some((newDescendant, position) => {\n return (\n previousDescendants &&\n previousDescendants[position] &&\n previousDescendants[position].element !== newDescendant.element\n );\n });\n\n // Prevent any flashing\n useEnhancedEffect(() => {\n if (descendant.element) {\n registerDescendant({\n ...descendant,\n index,\n });\n return () => {\n unregisterDescendant(descendant.element);\n };\n }\n forceUpdate({});\n\n return undefined;\n }, [registerDescendant, unregisterDescendant, index, someDescendantsHaveChanged, descendant]);\n\n return { parentId, index, level };\n}\n\nexport function DescendantProvider(props) {\n const { children, id, level } = props;\n\n const [items, set] = React.useState([]);\n\n const registerDescendant = React.useCallback(({ element, ...other }) => {\n set((oldItems) => {\n let newItems;\n if (oldItems.length === 0) {\n // If there are no items, register at index 0 and bail.\n return [\n {\n ...other,\n element,\n index: 0,\n },\n ];\n }\n\n const index = binaryFindElement(oldItems, element);\n\n if (oldItems[index] && oldItems[index].element === element) {\n // If the element is already registered, just use the same array\n newItems = oldItems;\n } else {\n // When registering a descendant, we need to make sure we insert in\n // into the array in the same order that it appears in the DOM. So as\n // new descendants are added or maybe some are removed, we always know\n // that the array is up-to-date and correct.\n //\n // So here we look at our registered descendants and see if the new\n // element we are adding appears earlier than an existing descendant's\n // DOM node via `node.compareDocumentPosition`. If it does, we insert\n // the new element at this index. Because `registerDescendant` will be\n // called in an effect every time the descendants state value changes,\n // we should be sure that this index is accurate when descendent\n // elements come or go from our component.\n\n const newItem = {\n ...other,\n element,\n index,\n };\n\n // If an index is not found we will push the element to the end.\n newItems = oldItems.slice();\n newItems.splice(index, 0, newItem);\n }\n newItems.forEach((item, position) => {\n // eslint-disable-next-line no-param-reassign\n item.index = position;\n });\n return newItems;\n });\n }, []);\n\n const unregisterDescendant = React.useCallback((element) => {\n set((oldItems) => oldItems.filter((item) => element !== item.element));\n }, []);\n\n const value = React.useMemo(\n () => ({\n descendants: items,\n registerDescendant,\n unregisterDescendant,\n parentId: id,\n level,\n }),\n [items, registerDescendant, unregisterDescendant, id, level]\n );\n\n return <DescendantContext.Provider value={value}>{children}</DescendantContext.Provider>;\n}\n\nDescendantProvider.propTypes = {\n children: PropTypes.node,\n id: PropTypes.string,\n level: PropTypes.number,\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"VerticalContainer.js","names":["VerticalContainer","id","className","classes","isAnchorBarVisible","isOpen","toggleOpenCallback","buttonAriaLabel","children","position","closeOnExit","others","open","setOpen","prevPropOpen","setPrevPropOpen","containerRef","buttonRef","focusableList","setTimeout","current","toggleOpen","newState","prevState","handlerKeyContainer","event","KeyboardCodes","Tab","target","first","shiftKey","last","Esc","focus","renderedAnchorBar","anchorBar","button","renderedContainer","separator","contentContainer","root","withAnchorBar","static","relative","fixed","absolute","verticalContainer","propTypes","PropTypes","string","shape","isRequired","oneOf","bool","node","func","styles","name"],"sources":["../../../src/VerticalNavigation/VerticalContainer/VerticalContainer.js"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport isNil from \"lodash/isNil\";\nimport { ClickAwayListener, withStyles } from \"@material-ui/core\";\nimport clsx from \"clsx\";\nimport { Menu } from \"@hitachivantara/uikit-react-icons\";\nimport { isKeypress, KeyboardCodes } from \"../../utils/KeyboardUtils\";\nimport Button from \"../../Button\";\nimport { setId } from \"../../utils\";\nimport { getFirstAndLastFocus } from \"../../utils/focusableElementFinder\";\n\nimport styles from \"./styles\";\n\n/**\n * Vertical Container.\n *\n * @constructor\n */\nconst VerticalContainer = ({\n id,\n className,\n classes,\n isAnchorBarVisible = true,\n isOpen = false,\n toggleOpenCallback,\n buttonAriaLabel,\n children,\n position = \"static\",\n closeOnExit,\n ...others\n}) => {\n const [open, setOpen] = useState(isOpen);\n const [prevPropOpen, setPrevPropOpen] = useState(null);\n const containerRef = useRef(null);\n const buttonRef = useRef(null);\n const focusableList = useRef(null);\n\n if (isOpen !== prevPropOpen) {\n setOpen(isOpen);\n setPrevPropOpen(isOpen);\n }\n\n /**\n * Fills the object with the first and last focusable element inside the container.\n * When the container is open the first focusable element is focus.\n */\n useEffect(() => {\n setTimeout(() => {\n if (open) {\n focusableList.current = getFirstAndLastFocus(containerRef.current);\n }\n });\n }, [open]);\n\n /**\n * Toggle the open state based on the received paramenter.\n *\n * @type {(...args: any[]) => any}\n */\n const toggleOpen = useCallback(\n (newState = null) => {\n if (newState !== null) {\n if (newState !== open) {\n setOpen(newState);\n } else {\n return;\n }\n } else {\n setOpen((prevState) => !prevState);\n }\n toggleOpenCallback?.(open);\n },\n [toggleOpenCallback, open]\n );\n\n /**\n * Handler of keyboard clicks.\n */\n const handlerKeyContainer = useCallback(\n (event) => {\n if (closeOnExit) {\n if (\n isKeypress(event, KeyboardCodes.Tab) &&\n !isNil(event.target) &&\n !isNil(focusableList.current) &&\n !isNil(focusableList.current.first)\n ) {\n if (\n (event.shiftKey && event.target.id === focusableList.current.first.id) ||\n (!event.shiftKey && event.target.id === focusableList.current.last.id)\n ) {\n toggleOpen(false);\n }\n }\n if (isKeypress(event, KeyboardCodes.Esc) === false) {\n return;\n }\n buttonRef.current.focus();\n toggleOpen(false);\n }\n },\n [closeOnExit, toggleOpen]\n );\n const renderedAnchorBar = useMemo(\n () => (\n <div id={setId(id, \"anchor-bar\")} className={classes.anchorBar}>\n <Button\n id={setId(id, \"hamburger-button\")}\n className={classes.button}\n ref={buttonRef}\n onClick={() => toggleOpen()}\n aria-label={buttonAriaLabel || (open && \"close\") || (!open && \"open\")}\n icon\n >\n <Menu />\n </Button>\n </div>\n ),\n [buttonAriaLabel, classes.anchorBar, classes.button, id, open, toggleOpen]\n );\n\n const renderedContainer = useMemo(\n () => (\n <>\n {isAnchorBarVisible && <div className={classes.separator} />}\n {/* eslint-disable-next-line jsx-a11y/no-static-element-interactions */}\n <div\n id={setId(id, \"container\")}\n ref={containerRef}\n className={classes.contentContainer}\n onKeyDown={handlerKeyContainer}\n >\n {children}\n </div>\n </>\n ),\n [\n children,\n classes.contentContainer,\n classes.separator,\n handlerKeyContainer,\n id,\n isAnchorBarVisible,\n ]\n );\n\n return (\n <div\n className={clsx(className, classes.root, {\n [classes.withAnchorBar]: isAnchorBarVisible,\n [classes.static]: position === \"static\",\n [classes.relative]: position === \"relative\",\n [classes.fixed]: position === \"fixed\",\n [classes.absolute]: position === \"absolute\",\n })}\n >\n <ClickAwayListener onClickAway={() => closeOnExit && toggleOpen(false)}>\n <div id={id} className={classes.verticalContainer} {...others}>\n {isAnchorBarVisible && renderedAnchorBar}\n {open && renderedContainer}\n </div>\n </ClickAwayListener>\n </div>\n );\n};\n\nVerticalContainer.propTypes = {\n /**\n * Identifier.\n */\n id: PropTypes.string,\n /**\n * Class names to be applied.\n */\n className: PropTypes.string,\n /**\n * Styles applied to the element.\n */\n classes: PropTypes.shape({\n /**\n * Styles applied to the root container.\n */\n root: PropTypes.string,\n /**\n * Styles applied when the component is in fixed positioning.\n */\n fixed: PropTypes.string,\n /**\n * Styles applied when the component is in relative positioning.\n */\n relative: PropTypes.string,\n /**\n * Styles applied when the component is in absolute positioning.\n */\n absolute: PropTypes.string,\n /**\n * Styles applied when the component is in static positioning.\n */\n static: PropTypes.string,\n /**\n * Styles applied when the component has anchor bar.\n */\n withAnchorBar: PropTypes.string,\n /**\n * Styles applied to the vertical container.\n */\n verticalContainer: PropTypes.string,\n /**\n * Styles applied to the anchor bar.\n */\n anchorBar: PropTypes.string,\n /**\n * Styles applied to the button.\n */\n button: PropTypes.string,\n /**\n * Styles applied to the separator.\n */\n separator: PropTypes.string,\n /**\n * Styles applied to the content container.\n */\n contentContainer: PropTypes.string,\n }).isRequired,\n\n /**\n * Position of the component.\n */\n position: PropTypes.oneOf([\"static\", \"relative\", \"fixed\", \"absolute\"]),\n\n /**\n * Defines if a anchor bar is visible,\n */\n isAnchorBarVisible: PropTypes.bool,\n /**\n * Is the navigation open.\n */\n isOpen: PropTypes.bool,\n /**\n * Aria-label for the button.\n */\n buttonAriaLabel: PropTypes.string,\n /**\n * Children component.\n */\n children: PropTypes.node.isRequired,\n /**\n * Callback when the navigation toggles between open and close.\n */\n toggleOpenCallback: PropTypes.func,\n /**\n * Defines if the content pane should close when losing focus / clicking outside.\n */\n closeOnExit: PropTypes.bool,\n};\n\nexport default withStyles(styles, {\n name: \"HvVerticalNavigationVerticalContainer\",\n})(VerticalContainer);\n"],"mappings":"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"}
1
+ {"version":3,"file":"VerticalContainer.js","names":["VerticalContainer","id","className","classes","isAnchorBarVisible","isOpen","toggleOpenCallback","buttonAriaLabel","children","position","closeOnExit","others","useState","open","setOpen","prevPropOpen","setPrevPropOpen","containerRef","useRef","buttonRef","focusableList","useEffect","setTimeout","current","getFirstAndLastFocus","toggleOpen","useCallback","newState","prevState","handlerKeyContainer","event","isKeypress","KeyboardCodes","Tab","isNil","target","first","shiftKey","last","Esc","focus","renderedAnchorBar","useMemo","setId","anchorBar","button","renderedContainer","separator","contentContainer","clsx","root","withAnchorBar","static","relative","fixed","absolute","verticalContainer","propTypes","PropTypes","string","shape","isRequired","oneOf","bool","node","func","withStyles","styles","name"],"sources":["../../../src/VerticalNavigation/VerticalContainer/VerticalContainer.js"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport isNil from \"lodash/isNil\";\nimport { ClickAwayListener, withStyles } from \"@material-ui/core\";\nimport clsx from \"clsx\";\nimport { Menu } from \"@hitachivantara/uikit-react-icons\";\nimport { isKeypress, KeyboardCodes } from \"../../utils/KeyboardUtils\";\nimport Button from \"../../Button\";\nimport { setId } from \"../../utils\";\nimport { getFirstAndLastFocus } from \"../../utils/focusableElementFinder\";\n\nimport styles from \"./styles\";\n\n/**\n * Vertical Container.\n *\n * @constructor\n */\nconst VerticalContainer = ({\n id,\n className,\n classes,\n isAnchorBarVisible = true,\n isOpen = false,\n toggleOpenCallback,\n buttonAriaLabel,\n children,\n position = \"static\",\n closeOnExit,\n ...others\n}) => {\n const [open, setOpen] = useState(isOpen);\n const [prevPropOpen, setPrevPropOpen] = useState(null);\n const containerRef = useRef(null);\n const buttonRef = useRef(null);\n const focusableList = useRef(null);\n\n if (isOpen !== prevPropOpen) {\n setOpen(isOpen);\n setPrevPropOpen(isOpen);\n }\n\n /**\n * Fills the object with the first and last focusable element inside the container.\n * When the container is open the first focusable element is focus.\n */\n useEffect(() => {\n setTimeout(() => {\n if (open) {\n focusableList.current = getFirstAndLastFocus(containerRef.current);\n }\n });\n }, [open]);\n\n /**\n * Toggle the open state based on the received paramenter.\n *\n * @type {(...args: any[]) => any}\n */\n const toggleOpen = useCallback(\n (newState = null) => {\n if (newState !== null) {\n if (newState !== open) {\n setOpen(newState);\n } else {\n return;\n }\n } else {\n setOpen((prevState) => !prevState);\n }\n toggleOpenCallback?.(open);\n },\n [toggleOpenCallback, open]\n );\n\n /**\n * Handler of keyboard clicks.\n */\n const handlerKeyContainer = useCallback(\n (event) => {\n if (closeOnExit) {\n if (\n isKeypress(event, KeyboardCodes.Tab) &&\n !isNil(event.target) &&\n !isNil(focusableList.current) &&\n !isNil(focusableList.current.first)\n ) {\n if (\n (event.shiftKey && event.target.id === focusableList.current.first.id) ||\n (!event.shiftKey && event.target.id === focusableList.current.last.id)\n ) {\n toggleOpen(false);\n }\n }\n if (isKeypress(event, KeyboardCodes.Esc) === false) {\n return;\n }\n buttonRef.current.focus();\n toggleOpen(false);\n }\n },\n [closeOnExit, toggleOpen]\n );\n const renderedAnchorBar = useMemo(\n () => (\n <div id={setId(id, \"anchor-bar\")} className={classes.anchorBar}>\n <Button\n id={setId(id, \"hamburger-button\")}\n className={classes.button}\n ref={buttonRef}\n onClick={() => toggleOpen()}\n aria-label={buttonAriaLabel || (open && \"close\") || (!open && \"open\")}\n icon\n >\n <Menu />\n </Button>\n </div>\n ),\n [buttonAriaLabel, classes.anchorBar, classes.button, id, open, toggleOpen]\n );\n\n const renderedContainer = useMemo(\n () => (\n <>\n {isAnchorBarVisible && <div className={classes.separator} />}\n {/* eslint-disable-next-line jsx-a11y/no-static-element-interactions */}\n <div\n id={setId(id, \"container\")}\n ref={containerRef}\n className={classes.contentContainer}\n onKeyDown={handlerKeyContainer}\n >\n {children}\n </div>\n </>\n ),\n [\n children,\n classes.contentContainer,\n classes.separator,\n handlerKeyContainer,\n id,\n isAnchorBarVisible,\n ]\n );\n\n return (\n <div\n className={clsx(className, classes.root, {\n [classes.withAnchorBar]: isAnchorBarVisible,\n [classes.static]: position === \"static\",\n [classes.relative]: position === \"relative\",\n [classes.fixed]: position === \"fixed\",\n [classes.absolute]: position === \"absolute\",\n })}\n >\n <ClickAwayListener onClickAway={() => closeOnExit && toggleOpen(false)}>\n <div id={id} className={classes.verticalContainer} {...others}>\n {isAnchorBarVisible && renderedAnchorBar}\n {open && renderedContainer}\n </div>\n </ClickAwayListener>\n </div>\n );\n};\n\nVerticalContainer.propTypes = {\n /**\n * Identifier.\n */\n id: PropTypes.string,\n /**\n * Class names to be applied.\n */\n className: PropTypes.string,\n /**\n * Styles applied to the element.\n */\n classes: PropTypes.shape({\n /**\n * Styles applied to the root container.\n */\n root: PropTypes.string,\n /**\n * Styles applied when the component is in fixed positioning.\n */\n fixed: PropTypes.string,\n /**\n * Styles applied when the component is in relative positioning.\n */\n relative: PropTypes.string,\n /**\n * Styles applied when the component is in absolute positioning.\n */\n absolute: PropTypes.string,\n /**\n * Styles applied when the component is in static positioning.\n */\n static: PropTypes.string,\n /**\n * Styles applied when the component has anchor bar.\n */\n withAnchorBar: PropTypes.string,\n /**\n * Styles applied to the vertical container.\n */\n verticalContainer: PropTypes.string,\n /**\n * Styles applied to the anchor bar.\n */\n anchorBar: PropTypes.string,\n /**\n * Styles applied to the button.\n */\n button: PropTypes.string,\n /**\n * Styles applied to the separator.\n */\n separator: PropTypes.string,\n /**\n * Styles applied to the content container.\n */\n contentContainer: PropTypes.string,\n }).isRequired,\n\n /**\n * Position of the component.\n */\n position: PropTypes.oneOf([\"static\", \"relative\", \"fixed\", \"absolute\"]),\n\n /**\n * Defines if a anchor bar is visible,\n */\n isAnchorBarVisible: PropTypes.bool,\n /**\n * Is the navigation open.\n */\n isOpen: PropTypes.bool,\n /**\n * Aria-label for the button.\n */\n buttonAriaLabel: PropTypes.string,\n /**\n * Children component.\n */\n children: PropTypes.node.isRequired,\n /**\n * Callback when the navigation toggles between open and close.\n */\n toggleOpenCallback: PropTypes.func,\n /**\n * Defines if the content pane should close when losing focus / clicking outside.\n */\n closeOnExit: PropTypes.bool,\n};\n\nexport default withStyles(styles, {\n name: \"HvVerticalNavigationVerticalContainer\",\n})(VerticalContainer);\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"VerticalNavigation.js","names":["VerticalNavigation","id","className","classes","children","isOpenProp","isOpen","toggleOpenCallback","isCollapsableProp","isCollapsable","positionProp","position","closeOnExitProp","closeOnExit","buttonAriaLabel","others","deprecatedMode","content","root","legacyMode","noCollapsable","propTypes","PropTypes","string","shape","isRequired","node","bool","func","oneOf","styles","name"],"sources":["../../src/VerticalNavigation/VerticalNavigation.js"],"sourcesContent":["import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport clsx from \"clsx\";\nimport { deprecatedPropType, withStyles } from \"@material-ui/core\";\nimport VerticalContainer from \"./VerticalContainer\";\nimport { setId } from \"../utils\";\nimport styles from \"./styles\";\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 */\nconst VerticalNavigation = ({\n id,\n className,\n classes,\n\n children,\n\n // deprecated props\n isOpen: isOpenProp,\n toggleOpenCallback,\n isCollapsable: isCollapsableProp,\n position: positionProp,\n closeOnExit: closeOnExitProp,\n buttonAriaLabel,\n\n ...others\n}) => {\n const deprecatedMode =\n isOpenProp != null ||\n toggleOpenCallback != null ||\n isCollapsableProp != null ||\n positionProp != null ||\n closeOnExitProp != null ||\n buttonAriaLabel != null;\n\n let isOpen;\n let isCollapsable;\n let position;\n let closeOnExit;\n if (deprecatedMode) {\n // restore the default values if needed\n closeOnExit = closeOnExitProp ?? false;\n position = positionProp ?? \"static\";\n isCollapsable = isCollapsableProp ?? false;\n isOpen = isOpenProp ?? !isCollapsable;\n }\n\n const content = (\n <div\n id={id}\n className={clsx(className, classes.root, {\n [classes.noCollapsable]: deprecatedMode && !isCollapsable,\n [classes.legacyMode]: deprecatedMode,\n })}\n {...others}\n >\n {children}\n </div>\n );\n\n if (deprecatedMode) {\n return (\n <VerticalContainer\n id={setId(id, \"container\")}\n isOpen={isOpen}\n toggleOpenCallback={toggleOpenCallback}\n position={position}\n isAnchorBarVisible={isCollapsable}\n closeOnExit={closeOnExit}\n buttonAriaLabel={buttonAriaLabel}\n >\n {content}\n </VerticalContainer>\n );\n }\n\n return content;\n};\n\nVerticalNavigation.propTypes = {\n /**\n * Id to be applied to the root node.\n */\n id: PropTypes.string,\n /**\n * Class names to be applied.\n */\n className: PropTypes.string,\n /**\n * A Jss Object used to override or extend the styles applied to the component.\n */\n classes: PropTypes.shape({\n /**\n * Style applied to the root of the component.\n */\n root: PropTypes.string,\n /**\n * Style applied to the root of the component when it not collapsable.\n *\n * @deprecated This logic should be external, i.e. using the HvVerticalNavigation inside a Drawer component.\n */\n noCollapsable: deprecatedPropType(PropTypes.string),\n /**\n * @ignore\n */\n legacyMode: PropTypes.string,\n }).isRequired,\n\n /**\n * The content inside the actions container.\n */\n children: PropTypes.node,\n\n /**\n * Sets if the navigation should have a button to hide itself.\n *\n * @deprecated This logic should be external, i.e. using the HvVerticalNavigation inside a Drawer component.\n */\n isCollapsable: deprecatedPropType(\n PropTypes.bool,\n \"This logic should be external, i.e. using the HvVerticalNavigation inside a Drawer component.\"\n ),\n /**\n * Is the navigation open.\n *\n * @deprecated This logic should be external, i.e. using the HvVerticalNavigation inside a Drawer component.\n */\n isOpen: deprecatedPropType(\n PropTypes.bool,\n \"This logic should be external, i.e. using the HvVerticalNavigation inside a Drawer component.\"\n ),\n /**\n * Callback when the navigation toggles between open and close.\n */\n toggleOpenCallback: PropTypes.func,\n /**\n * Position of the component.\n *\n * @deprecated This logic should be external, i.e. using the HvVerticalNavigation inside a Drawer component.\n */\n position: deprecatedPropType(\n PropTypes.oneOf([\"static\", \"relative\", \"fixed\", \"absolute\"]),\n \"This logic should be external, i.e. using the HvVerticalNavigation inside a Drawer component.\"\n ),\n /**\n * Defines if the navigation should close when losing focus / clicking outside.\n *\n * @deprecated This logic should be external, i.e. using the HvVerticalNavigation inside a Drawer component.\n */\n closeOnExit: deprecatedPropType(\n PropTypes.bool,\n \"This logic should be external, i.e. using the HvVerticalNavigation inside a Drawer component.\"\n ),\n /**\n * Aria-label for the button that opens the vertical navigation.\n *\n * @deprecated This logic should be external, i.e. using the HvVerticalNavigation inside a Drawer component.\n */\n buttonAriaLabel: deprecatedPropType(\n PropTypes.bool,\n \"This logic should be external, i.e. using the HvVerticalNavigation inside a Drawer component.\"\n ),\n};\n\nexport default withStyles(styles, { name: \"HvVerticalNavigation\" })(VerticalNavigation);\n"],"mappings":"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"}
1
+ {"version":3,"file":"VerticalNavigation.js","names":["VerticalNavigation","id","className","classes","children","isOpenProp","isOpen","toggleOpenCallback","isCollapsableProp","isCollapsable","positionProp","position","closeOnExitProp","closeOnExit","buttonAriaLabel","others","deprecatedMode","content","clsx","root","legacyMode","noCollapsable","setId","propTypes","PropTypes","string","shape","deprecatedPropType","isRequired","node","bool","func","oneOf","withStyles","styles","name"],"sources":["../../src/VerticalNavigation/VerticalNavigation.js"],"sourcesContent":["import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport clsx from \"clsx\";\nimport { deprecatedPropType, withStyles } from \"@material-ui/core\";\nimport VerticalContainer from \"./VerticalContainer\";\nimport { setId } from \"../utils\";\nimport styles from \"./styles\";\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 */\nconst VerticalNavigation = ({\n id,\n className,\n classes,\n\n children,\n\n // deprecated props\n isOpen: isOpenProp,\n toggleOpenCallback,\n isCollapsable: isCollapsableProp,\n position: positionProp,\n closeOnExit: closeOnExitProp,\n buttonAriaLabel,\n\n ...others\n}) => {\n const deprecatedMode =\n isOpenProp != null ||\n toggleOpenCallback != null ||\n isCollapsableProp != null ||\n positionProp != null ||\n closeOnExitProp != null ||\n buttonAriaLabel != null;\n\n let isOpen;\n let isCollapsable;\n let position;\n let closeOnExit;\n if (deprecatedMode) {\n // restore the default values if needed\n closeOnExit = closeOnExitProp ?? false;\n position = positionProp ?? \"static\";\n isCollapsable = isCollapsableProp ?? false;\n isOpen = isOpenProp ?? !isCollapsable;\n }\n\n const content = (\n <div\n id={id}\n className={clsx(className, classes.root, {\n [classes.noCollapsable]: deprecatedMode && !isCollapsable,\n [classes.legacyMode]: deprecatedMode,\n })}\n {...others}\n >\n {children}\n </div>\n );\n\n if (deprecatedMode) {\n return (\n <VerticalContainer\n id={setId(id, \"container\")}\n isOpen={isOpen}\n toggleOpenCallback={toggleOpenCallback}\n position={position}\n isAnchorBarVisible={isCollapsable}\n closeOnExit={closeOnExit}\n buttonAriaLabel={buttonAriaLabel}\n >\n {content}\n </VerticalContainer>\n );\n }\n\n return content;\n};\n\nVerticalNavigation.propTypes = {\n /**\n * Id to be applied to the root node.\n */\n id: PropTypes.string,\n /**\n * Class names to be applied.\n */\n className: PropTypes.string,\n /**\n * A Jss Object used to override or extend the styles applied to the component.\n */\n classes: PropTypes.shape({\n /**\n * Style applied to the root of the component.\n */\n root: PropTypes.string,\n /**\n * Style applied to the root of the component when it not collapsable.\n *\n * @deprecated This logic should be external, i.e. using the HvVerticalNavigation inside a Drawer component.\n */\n noCollapsable: deprecatedPropType(PropTypes.string),\n /**\n * @ignore\n */\n legacyMode: PropTypes.string,\n }).isRequired,\n\n /**\n * The content inside the actions container.\n */\n children: PropTypes.node,\n\n /**\n * Sets if the navigation should have a button to hide itself.\n *\n * @deprecated This logic should be external, i.e. using the HvVerticalNavigation inside a Drawer component.\n */\n isCollapsable: deprecatedPropType(\n PropTypes.bool,\n \"This logic should be external, i.e. using the HvVerticalNavigation inside a Drawer component.\"\n ),\n /**\n * Is the navigation open.\n *\n * @deprecated This logic should be external, i.e. using the HvVerticalNavigation inside a Drawer component.\n */\n isOpen: deprecatedPropType(\n PropTypes.bool,\n \"This logic should be external, i.e. using the HvVerticalNavigation inside a Drawer component.\"\n ),\n /**\n * Callback when the navigation toggles between open and close.\n */\n toggleOpenCallback: PropTypes.func,\n /**\n * Position of the component.\n *\n * @deprecated This logic should be external, i.e. using the HvVerticalNavigation inside a Drawer component.\n */\n position: deprecatedPropType(\n PropTypes.oneOf([\"static\", \"relative\", \"fixed\", \"absolute\"]),\n \"This logic should be external, i.e. using the HvVerticalNavigation inside a Drawer component.\"\n ),\n /**\n * Defines if the navigation should close when losing focus / clicking outside.\n *\n * @deprecated This logic should be external, i.e. using the HvVerticalNavigation inside a Drawer component.\n */\n closeOnExit: deprecatedPropType(\n PropTypes.bool,\n \"This logic should be external, i.e. using the HvVerticalNavigation inside a Drawer component.\"\n ),\n /**\n * Aria-label for the button that opens the vertical navigation.\n *\n * @deprecated This logic should be external, i.e. using the HvVerticalNavigation inside a Drawer component.\n */\n buttonAriaLabel: deprecatedPropType(\n PropTypes.bool,\n \"This logic should be external, i.e. using the HvVerticalNavigation inside a Drawer component.\"\n ),\n};\n\nexport default withStyles(styles, { name: \"HvVerticalNavigation\" })(VerticalNavigation);\n"],"mappings":"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"}
@@ -20,10 +20,10 @@ import "core-js/modules/es.symbol.js";
20
20
  import "core-js/modules/es.object.get-own-property-descriptor.js";
21
21
  import "core-js/modules/web.dom-collections.for-each.js";
22
22
  import "core-js/modules/es.object.get-own-property-descriptors.js";
23
- import React, { isValidElement, useEffect, memo } from "react";
23
+ import React, { isValidElement, useEffect, useCallback, forwardRef } from "react";
24
24
  import PropTypes from "prop-types";
25
25
  import clsx from "clsx";
26
- import { FixedSizeList, areEqual } from "react-window";
26
+ import { FixedSizeList } from "react-window";
27
27
  import { withStyles } from "@material-ui/core";
28
28
  import { DropRightXS } from "@hitachivantara/uikit-react-icons";
29
29
  import { parseList, wrapperTooltip } from "./utils";
@@ -238,7 +238,8 @@ var HvList = function HvList(props) {
238
238
  listRef.current.scrollToItem(selectedItemIndex);
239
239
  }
240
240
  }, [listRef, selectedItemIndex]);
241
- var ListItem = /*#__PURE__*/memo(function (_ref) {
241
+
242
+ var ListItem = function ListItem(_ref) {
242
243
  var index = _ref.index,
243
244
  style = _ref.style;
244
245
  var item = filteredList[index];
@@ -254,15 +255,31 @@ var HvList = function HvList(props) {
254
255
  condensed: condensed,
255
256
  disableGutters: useSelector
256
257
  });
257
- }, areEqual);
258
+ };
259
+
258
260
  process.env.NODE_ENV !== "production" ? ListItem.propTypes = {
259
- index: PropTypes.number.isRequired,
260
261
  style: PropTypes.shape({
261
262
  top: PropTypes.number.isRequired,
262
263
  left: PropTypes.number.isRequired,
263
264
  width: PropTypes.number.isRequired
264
265
  }).isRequired
265
266
  } : void 0;
267
+ var renderFixedList = useCallback(function () {
268
+ return /*#__PURE__*/forwardRef(function (_ref2, ref) {
269
+ var rest = _extends({}, _ref2);
270
+
271
+ return /*#__PURE__*/React.createElement(HvListContainer, _extends({
272
+ id: id,
273
+ className: clsx(className, classes.root),
274
+ role: selectable ? "listbox" : "menu",
275
+ interactive: true,
276
+ condensed: condensed,
277
+ disableGutters: useSelector,
278
+ "aria-multiselectable": selectable && multiSelect || undefined,
279
+ ref: ref
280
+ }, rest));
281
+ });
282
+ }, [id, useSelector, className, classes, condensed, selectable, multiSelect]);
266
283
  return /*#__PURE__*/React.createElement(React.Fragment, null, multiSelect && useSelector && showSelectAll && renderSelectAll(), filteredList.length > 0 && !virtualized && /*#__PURE__*/React.createElement(HvListContainer, _extends({
267
284
  id: id,
268
285
  className: clsx(className, classes.root),
@@ -280,20 +297,7 @@ var HvList = function HvList(props) {
280
297
  width: "100%",
281
298
  itemCount: filteredList.length,
282
299
  itemSize: condensed ? 32 : 40,
283
- innerElementType: /*#__PURE__*/React.forwardRef(function (_ref2, ref) {
284
- var rest = _extends({}, _ref2);
285
-
286
- return /*#__PURE__*/React.createElement(HvListContainer, _extends({
287
- id: id,
288
- className: clsx(className, classes.root),
289
- role: selectable ? "listbox" : "menu",
290
- interactive: true,
291
- condensed: condensed,
292
- disableGutters: useSelector,
293
- "aria-multiselectable": selectable && multiSelect || undefined,
294
- ref: ref
295
- }, rest));
296
- })
300
+ innerElementType: renderFixedList
297
301
  }, others), ListItem));
298
302
  };
299
303
 
@@ -1 +1 @@
1
- {"version":3,"file":"List.js","names":["React","isValidElement","useEffect","memo","PropTypes","clsx","FixedSizeList","areEqual","withStyles","DropRightXS","parseList","wrapperTooltip","useSelectableList","HvLink","HvCheckBox","HvListContainer","HvListItem","HvRadio","HvTypography","setId","styles","DEFAULT_LABELS","selectAll","selectionConjunction","HvList","props","id","classes","className","multiSelect","hasTooltips","showSelectAll","labels","useSelector","selectable","singleSelectionToggle","condensed","onChange","onClick","values","valuesProp","height","virtualized","others","list","setList","selection","listRef","useRef","passedProps","parsedList","handleSelect","evt","item","path","preventDefault","disabled","handleSelectAll","anySelectableSelected","some","elem","selected","renderLeftIcon","icon","isSelected","isDisabled","renderSelectAll","anySelected","length","allSelected","selectionLabel","selectAllSelector","renderItemText","ItemText","label","a","link","renderMultiSelectItem","itemId","Selection","root","selectorRoot","container","selectorContainer","truncate","renderSingleSelectItem","renderListItem","i","otherProps","startAdornment","undefined","itemSelector","showNavIcon","box","filteredList","filter","it","isHidden","map","reduce","result","selectedItemIndex","findIndex","current","scrollToItem","ListItem","index","style","tabIndex","top","parseFloat","left","width","interactive","disableGutters","propTypes","number","isRequired","shape","virtualizedRoot","forwardRef","ref","rest","string","arrayOf","oneOfType","node","bool","func","params","instanceOf","Object","name"],"sources":["../../../src/List/List.js"],"sourcesContent":["import React, { isValidElement, useEffect, memo } from \"react\";\nimport PropTypes from \"prop-types\";\nimport clsx from \"clsx\";\nimport { FixedSizeList, areEqual } from \"react-window\";\n\nimport { withStyles } from \"@material-ui/core\";\nimport { DropRightXS } from \"@hitachivantara/uikit-react-icons\";\n\nimport { parseList, wrapperTooltip } from \"./utils\";\nimport useSelectableList from \"./useSelectableList\";\n\nimport { HvLink, HvCheckBox, HvListContainer, HvListItem, HvRadio, HvTypography, setId } from \"..\";\n\nimport styles from \"./styles\";\n\nconst DEFAULT_LABELS = {\n selectAll: \"Select All\",\n selectionConjunction: \"/\",\n};\n\n/**\n * Component used to show a set of related data to the user.\n */\nconst HvList = (props) => {\n const {\n id,\n classes,\n className,\n multiSelect = false,\n hasTooltips = false,\n showSelectAll = false,\n labels = DEFAULT_LABELS,\n useSelector = false,\n selectable = true,\n singleSelectionToggle = true,\n condensed = false,\n onChange,\n onClick,\n values: valuesProp = [],\n height,\n virtualized = false,\n ...others\n } = props;\n const [list, setList, selection] = useSelectableList(valuesProp);\n const listRef = React.useRef(null);\n\n useEffect(() => {\n const passedProps = { multiSelect, selectable, singleSelectionToggle };\n const parsedList = parseList(valuesProp, null, passedProps);\n setList(parsedList);\n }, [valuesProp, multiSelect, selectable, singleSelectionToggle, setList]);\n\n const handleSelect = (evt, item) => {\n if (!item.path) evt.preventDefault();\n if (item.disabled) return;\n\n const passedProps = { multiSelect, selectable, singleSelectionToggle };\n const parsedList = parseList(list, item, passedProps);\n setList(parsedList);\n\n onClick?.(evt, item);\n onChange?.(parsedList);\n };\n\n const handleSelectAll = () => {\n const passedProps = { multiSelect, selectable, singleSelectionToggle };\n const anySelectableSelected = list.some((elem) => elem.selected || elem.disabled);\n const parsedList = parseList(list, null, passedProps, !anySelectableSelected);\n setList(parsedList);\n\n onChange?.(parsedList);\n };\n\n const renderLeftIcon = (item) =>\n isValidElement(item.icon)\n ? item.icon\n : item.icon?.({\n isSelected: item.selected,\n isDisabled: item.disabled,\n });\n\n const renderSelectAll = () => {\n const { selectAll, selectionConjunction } = labels;\n\n const anySelected = !!selection?.length;\n const allSelected = selection.length === list.length;\n\n const selectionLabel = (\n <HvTypography component=\"span\">\n {!anySelected ? (\n <>\n <b>{selectAll}</b>\n {` (${list.length})`}\n </>\n ) : (\n <>\n <b>{selection.length}</b>\n {`\\xa0${selectionConjunction}\\xa0`}\n {list.length}\n </>\n )}\n </HvTypography>\n );\n\n return (\n <HvCheckBox\n id={setId(id, \"select-all\")}\n label={selectionLabel}\n onChange={handleSelectAll}\n className={classes.selectAllSelector}\n indeterminate={anySelected && !allSelected}\n checked={allSelected}\n />\n );\n };\n\n const renderItemText = (item) => {\n const ItemText = wrapperTooltip(hasTooltips, item.label, item.label);\n\n return !multiSelect && item.path ? (\n <HvLink key={item.label} route={item.path} classes={{ a: classes.link }}>\n <ItemText />\n </HvLink>\n ) : (\n <ItemText />\n );\n };\n\n const renderMultiSelectItem = (item, itemId) => {\n if (useSelector) {\n const Selection = wrapperTooltip(\n hasTooltips,\n <HvCheckBox\n id={setId(itemId, \"selector\")}\n label={item.label}\n checked={item.selected}\n disabled={item.disabled}\n onChange={(evt) => handleSelect(evt, item)}\n classes={{\n root: classes.selectorRoot,\n container: classes.selectorContainer,\n label: classes.truncate,\n }}\n />,\n item.label\n );\n return <Selection />;\n }\n\n return renderItemText(item);\n };\n\n const renderSingleSelectItem = (item, itemId) => {\n if (useSelector) {\n const Selection = wrapperTooltip(\n hasTooltips,\n <HvRadio\n id={setId(itemId, \"selector\")}\n label={item.label}\n checked={item.selected}\n disabled={item.disabled}\n classes={{\n root: classes.selectorRoot,\n container: classes.selectorContainer,\n label: classes.truncate,\n }}\n />,\n item.label\n );\n return <Selection />;\n }\n return renderItemText(item);\n };\n\n const renderListItem = (item, i, otherProps = {}) => {\n const itemId = setId(id, \"item\", i);\n const selected = item.selected || false;\n\n let startAdornment = null;\n if (!useSelector && item.icon) {\n startAdornment = renderLeftIcon(item);\n }\n\n return (\n <HvListItem\n key={i}\n id={itemId}\n role={selectable ? \"option\" : \"menuitem\"}\n disabled={item.disabled || undefined}\n className={classes.item}\n classes={{ selected: useSelector || multiSelect ? classes.itemSelector : \"\" }}\n selected={multiSelect || selected ? selected : undefined}\n onClick={(evt) => handleSelect(evt, item)}\n startAdornment={startAdornment}\n endAdornment={item.showNavIcon && <DropRightXS className={classes.box} iconSize=\"XS\" />}\n {...otherProps}\n >\n {multiSelect ? renderMultiSelectItem(item, itemId) : renderSingleSelectItem(item, itemId)}\n </HvListItem>\n );\n };\n\n const filteredList = list.filter((it) => !it.isHidden);\n const anySelected = list\n .map((item) => item.selected && !item.disabled)\n .reduce((result, selected) => result || selected, false);\n\n const selectedItemIndex = list.findIndex((item) => item.selected);\n useEffect(() => {\n if (selectedItemIndex >= 0 && listRef.current !== null) {\n listRef.current.scrollToItem(selectedItemIndex);\n }\n }, [listRef, selectedItemIndex]);\n\n const ListItem = memo(({ index, style }) => {\n const item = filteredList[index];\n const tabIndex =\n item.tabIndex || (!anySelected && index === 0) || (item.selected && !item.disabled) ? 0 : -1;\n\n return renderListItem(item, index, {\n style: {\n ...style,\n top: `${parseFloat(style.top) + 5}px`,\n left: `${parseFloat(style.left) + 5}px`,\n width: `calc(${parseFloat(style.width)}% - 10px)`,\n },\n tabIndex,\n interactive: true,\n condensed,\n disableGutters: useSelector,\n });\n }, areEqual);\n ListItem.propTypes = {\n index: PropTypes.number.isRequired,\n style: PropTypes.shape({\n top: PropTypes.number.isRequired,\n left: PropTypes.number.isRequired,\n width: PropTypes.number.isRequired,\n }).isRequired,\n };\n\n return (\n <>\n {multiSelect && useSelector && showSelectAll && renderSelectAll()}\n\n {filteredList.length > 0 && !virtualized && (\n <HvListContainer\n id={id}\n className={clsx(className, classes.root)}\n role={selectable ? \"listbox\" : \"menu\"}\n interactive\n condensed={condensed}\n disableGutters={useSelector}\n aria-multiselectable={(selectable && multiSelect) || undefined}\n {...others}\n >\n {filteredList.map((item, i) => renderListItem(item, i))}\n </HvListContainer>\n )}\n {filteredList.length > 0 && virtualized && (\n <FixedSizeList\n ref={listRef}\n className={classes.virtualizedRoot}\n height={height + 5}\n width=\"100%\"\n itemCount={filteredList.length}\n itemSize={condensed ? 32 : 40}\n innerElementType={React.forwardRef(({ ...rest }, ref) => (\n <HvListContainer\n id={id}\n className={clsx(className, classes.root)}\n role={selectable ? \"listbox\" : \"menu\"}\n interactive\n condensed={condensed}\n disableGutters={useSelector}\n aria-multiselectable={(selectable && multiSelect) || undefined}\n ref={ref}\n {...rest}\n />\n ))}\n {...others}\n >\n {ListItem}\n </FixedSizeList>\n )}\n </>\n );\n};\n\nHvList.propTypes = {\n /**\n * Class names to be applied.\n */\n className: PropTypes.string,\n /**\n * A Jss Object used to override or extend the component styles applied.\n */\n classes: PropTypes.shape({\n /**\n * Styles applied to the component root class.\n */\n root: PropTypes.string,\n /**\n * Styles applied to the component root class in virtualized form.\n */\n virtualizedRoot: PropTypes.string,\n /**\n * Styles applied to the list item selector.\n */\n selectorRoot: PropTypes.string,\n /**\n * Styles applied to the list item selector label container.\n */\n selectorContainer: PropTypes.string,\n /**\n * Style applied to the icon box.\n */\n box: PropTypes.string,\n /**\n * Styles applied when the list item text when truncate.\n */\n truncate: PropTypes.string,\n /**\n * Styles applied to the list item.\n */\n item: PropTypes.string,\n /**\n * Styles applied to the list item when it has a selector.\n */\n itemSelector: PropTypes.string,\n /**\n * Styles applied to the list item when it has a link path.\n */\n link: PropTypes.string,\n /**\n * Styles applied to the select all selector.\n */\n selectAllSelector: PropTypes.string,\n }).isRequired,\n /**\n * The id of the root element\n */\n id: PropTypes.string,\n /**\n * A list containing the elements to be rendered.\n *\n * - id: The id of the item.\n * - label: The label of the element to be rendered.\n * - selected: The selection state of the element.\n * - disabled: The disabled state of the element.\n * - isHidden: Is item visible.\n * - icon: The icon.\n * - showNavIcon: If true renders the navigation icon on the right.\n * - path: The path to navigate to.\n */\n // eslint-disable-next-line react/no-unused-prop-types\n values: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n label: PropTypes.node.isRequired,\n selected: PropTypes.bool,\n disabled: PropTypes.bool,\n isHidden: PropTypes.bool,\n icon: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n showNavIcon: PropTypes.bool,\n path: PropTypes.string,\n params: PropTypes.instanceOf(Object),\n })\n ).isRequired,\n /**\n * If true renders a multi select list.\n */\n multiSelect: PropTypes.bool,\n /**\n * If true renders select all option for multi selection lists with selectors.\n * note: It will only be rendered if multiSelect and useSelector props are set to true.\n */\n showSelectAll: PropTypes.bool,\n /**\n * An object containing all the labels for the dropdown.\n */\n labels: PropTypes.shape({\n /**\n * The label used for the All checkbox action.\n */\n selectAll: PropTypes.string,\n /**\n * The label used in the middle of the multiselection count.\n */\n selectionConjunction: PropTypes.string,\n }),\n /**\n * If true renders list items with radio or checkbox selectors.\n */\n useSelector: PropTypes.bool,\n /**\n * Call back fired when list item is selected. Returns selection state.\n */\n onChange: PropTypes.func,\n /**\n * Call back fired when list item is selected. Returns selected item.\n */\n onClick: PropTypes.func,\n /**\n * If `true` the list items will show the selection state.\n */\n selectable: PropTypes.bool,\n /**\n * If `true`, selection can be toggled when single selection.\n */\n singleSelectionToggle: PropTypes.bool,\n /**\n * If `true` the list will be rendered without vertical spacing.\n */\n condensed: PropTypes.bool,\n /**\n * If `true` the dropdown will show tooltips when user mouseenter text in list\n */\n hasTooltips: PropTypes.bool,\n /**\n * Experimental. Height of the dropdown, in case you want to control it from a prop. Styles can also be used through dropdownListContainer class. Required in case virtualized is used\n */\n height: PropTypes.number,\n /**\n * Experimental. Uses dropdown in a virtualized form, where not all options are rendered initially. Good for use cases with a lot of options.\n */\n virtualized: PropTypes.bool,\n};\n\nexport default withStyles(styles, { name: \"HvList\" })(HvList);\n"],"mappings":"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"}
1
+ {"version":3,"file":"List.js","names":["React","isValidElement","useEffect","useCallback","forwardRef","PropTypes","clsx","FixedSizeList","withStyles","DropRightXS","parseList","wrapperTooltip","useSelectableList","HvLink","HvCheckBox","HvListContainer","HvListItem","HvRadio","HvTypography","setId","styles","DEFAULT_LABELS","selectAll","selectionConjunction","HvList","props","id","classes","className","multiSelect","hasTooltips","showSelectAll","labels","useSelector","selectable","singleSelectionToggle","condensed","onChange","onClick","values","valuesProp","height","virtualized","others","list","setList","selection","listRef","useRef","passedProps","parsedList","handleSelect","evt","item","path","preventDefault","disabled","handleSelectAll","anySelectableSelected","some","elem","selected","renderLeftIcon","icon","isSelected","isDisabled","renderSelectAll","anySelected","length","allSelected","selectionLabel","selectAllSelector","renderItemText","ItemText","label","a","link","renderMultiSelectItem","itemId","Selection","root","selectorRoot","container","selectorContainer","truncate","renderSingleSelectItem","renderListItem","i","otherProps","startAdornment","undefined","itemSelector","showNavIcon","box","filteredList","filter","it","isHidden","map","reduce","result","selectedItemIndex","findIndex","current","scrollToItem","ListItem","index","style","tabIndex","top","parseFloat","left","width","interactive","disableGutters","propTypes","shape","number","isRequired","renderFixedList","ref","rest","virtualizedRoot","string","arrayOf","oneOfType","node","bool","func","params","instanceOf","Object","name"],"sources":["../../../src/List/List.js"],"sourcesContent":["import React, { isValidElement, useEffect, useCallback, forwardRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport clsx from \"clsx\";\nimport { FixedSizeList } from \"react-window\";\n\nimport { withStyles } from \"@material-ui/core\";\nimport { DropRightXS } from \"@hitachivantara/uikit-react-icons\";\n\nimport { parseList, wrapperTooltip } from \"./utils\";\nimport useSelectableList from \"./useSelectableList\";\n\nimport { HvLink, HvCheckBox, HvListContainer, HvListItem, HvRadio, HvTypography, setId } from \"..\";\n\nimport styles from \"./styles\";\n\nconst DEFAULT_LABELS = {\n selectAll: \"Select All\",\n selectionConjunction: \"/\",\n};\n\n/**\n * Component used to show a set of related data to the user.\n */\nconst HvList = (props) => {\n const {\n id,\n classes,\n className,\n multiSelect = false,\n hasTooltips = false,\n showSelectAll = false,\n labels = DEFAULT_LABELS,\n useSelector = false,\n selectable = true,\n singleSelectionToggle = true,\n condensed = false,\n onChange,\n onClick,\n values: valuesProp = [],\n height,\n virtualized = false,\n ...others\n } = props;\n const [list, setList, selection] = useSelectableList(valuesProp);\n const listRef = React.useRef(null);\n\n useEffect(() => {\n const passedProps = { multiSelect, selectable, singleSelectionToggle };\n const parsedList = parseList(valuesProp, null, passedProps);\n setList(parsedList);\n }, [valuesProp, multiSelect, selectable, singleSelectionToggle, setList]);\n\n const handleSelect = (evt, item) => {\n if (!item.path) evt.preventDefault();\n if (item.disabled) return;\n\n const passedProps = { multiSelect, selectable, singleSelectionToggle };\n const parsedList = parseList(list, item, passedProps);\n setList(parsedList);\n\n onClick?.(evt, item);\n onChange?.(parsedList);\n };\n\n const handleSelectAll = () => {\n const passedProps = { multiSelect, selectable, singleSelectionToggle };\n const anySelectableSelected = list.some((elem) => elem.selected || elem.disabled);\n const parsedList = parseList(list, null, passedProps, !anySelectableSelected);\n setList(parsedList);\n\n onChange?.(parsedList);\n };\n\n const renderLeftIcon = (item) =>\n isValidElement(item.icon)\n ? item.icon\n : item.icon?.({\n isSelected: item.selected,\n isDisabled: item.disabled,\n });\n\n const renderSelectAll = () => {\n const { selectAll, selectionConjunction } = labels;\n\n const anySelected = !!selection?.length;\n const allSelected = selection.length === list.length;\n\n const selectionLabel = (\n <HvTypography component=\"span\">\n {!anySelected ? (\n <>\n <b>{selectAll}</b>\n {` (${list.length})`}\n </>\n ) : (\n <>\n <b>{selection.length}</b>\n {`\\xa0${selectionConjunction}\\xa0`}\n {list.length}\n </>\n )}\n </HvTypography>\n );\n\n return (\n <HvCheckBox\n id={setId(id, \"select-all\")}\n label={selectionLabel}\n onChange={handleSelectAll}\n className={classes.selectAllSelector}\n indeterminate={anySelected && !allSelected}\n checked={allSelected}\n />\n );\n };\n\n const renderItemText = (item) => {\n const ItemText = wrapperTooltip(hasTooltips, item.label, item.label);\n\n return !multiSelect && item.path ? (\n <HvLink key={item.label} route={item.path} classes={{ a: classes.link }}>\n <ItemText />\n </HvLink>\n ) : (\n <ItemText />\n );\n };\n\n const renderMultiSelectItem = (item, itemId) => {\n if (useSelector) {\n const Selection = wrapperTooltip(\n hasTooltips,\n <HvCheckBox\n id={setId(itemId, \"selector\")}\n label={item.label}\n checked={item.selected}\n disabled={item.disabled}\n onChange={(evt) => handleSelect(evt, item)}\n classes={{\n root: classes.selectorRoot,\n container: classes.selectorContainer,\n label: classes.truncate,\n }}\n />,\n item.label\n );\n return <Selection />;\n }\n\n return renderItemText(item);\n };\n\n const renderSingleSelectItem = (item, itemId) => {\n if (useSelector) {\n const Selection = wrapperTooltip(\n hasTooltips,\n <HvRadio\n id={setId(itemId, \"selector\")}\n label={item.label}\n checked={item.selected}\n disabled={item.disabled}\n classes={{\n root: classes.selectorRoot,\n container: classes.selectorContainer,\n label: classes.truncate,\n }}\n />,\n item.label\n );\n return <Selection />;\n }\n return renderItemText(item);\n };\n\n const renderListItem = (item, i, otherProps = {}) => {\n const itemId = setId(id, \"item\", i);\n const selected = item.selected || false;\n\n let startAdornment = null;\n if (!useSelector && item.icon) {\n startAdornment = renderLeftIcon(item);\n }\n\n return (\n <HvListItem\n key={i}\n id={itemId}\n role={selectable ? \"option\" : \"menuitem\"}\n disabled={item.disabled || undefined}\n className={classes.item}\n classes={{ selected: useSelector || multiSelect ? classes.itemSelector : \"\" }}\n selected={multiSelect || selected ? selected : undefined}\n onClick={(evt) => handleSelect(evt, item)}\n startAdornment={startAdornment}\n endAdornment={item.showNavIcon && <DropRightXS className={classes.box} iconSize=\"XS\" />}\n {...otherProps}\n >\n {multiSelect ? renderMultiSelectItem(item, itemId) : renderSingleSelectItem(item, itemId)}\n </HvListItem>\n );\n };\n\n const filteredList = list.filter((it) => !it.isHidden);\n const anySelected = list\n .map((item) => item.selected && !item.disabled)\n .reduce((result, selected) => result || selected, false);\n\n const selectedItemIndex = list.findIndex((item) => item.selected);\n useEffect(() => {\n if (selectedItemIndex >= 0 && listRef.current !== null) {\n listRef.current.scrollToItem(selectedItemIndex);\n }\n }, [listRef, selectedItemIndex]);\n\n const ListItem = ({ index, style }) => {\n const item = filteredList[index];\n const tabIndex =\n item.tabIndex || (!anySelected && index === 0) || (item.selected && !item.disabled) ? 0 : -1;\n\n return renderListItem(item, index, {\n style: {\n ...style,\n top: `${parseFloat(style.top) + 5}px`,\n left: `${parseFloat(style.left) + 5}px`,\n width: `calc(${parseFloat(style.width)}% - 10px)`,\n },\n tabIndex,\n interactive: true,\n condensed,\n disableGutters: useSelector,\n });\n };\n\n ListItem.propTypes = {\n style: PropTypes.shape({\n top: PropTypes.number.isRequired,\n left: PropTypes.number.isRequired,\n width: PropTypes.number.isRequired,\n }).isRequired,\n };\n\n const renderFixedList = useCallback(() => {\n return forwardRef(({ ...rest }, ref) => (\n <HvListContainer\n id={id}\n className={clsx(className, classes.root)}\n role={selectable ? \"listbox\" : \"menu\"}\n interactive\n condensed={condensed}\n disableGutters={useSelector}\n aria-multiselectable={(selectable && multiSelect) || undefined}\n ref={ref}\n {...rest}\n />\n ));\n }, [id, useSelector, className, classes, condensed, selectable, multiSelect]);\n\n return (\n <>\n {multiSelect && useSelector && showSelectAll && renderSelectAll()}\n\n {filteredList.length > 0 && !virtualized && (\n <HvListContainer\n id={id}\n className={clsx(className, classes.root)}\n role={selectable ? \"listbox\" : \"menu\"}\n interactive\n condensed={condensed}\n disableGutters={useSelector}\n aria-multiselectable={(selectable && multiSelect) || undefined}\n {...others}\n >\n {filteredList.map((item, i) => renderListItem(item, i))}\n </HvListContainer>\n )}\n {filteredList.length > 0 && virtualized && (\n <FixedSizeList\n ref={listRef}\n className={classes.virtualizedRoot}\n height={height + 5}\n width=\"100%\"\n itemCount={filteredList.length}\n itemSize={condensed ? 32 : 40}\n innerElementType={renderFixedList}\n {...others}\n >\n {ListItem}\n </FixedSizeList>\n )}\n </>\n );\n};\n\nHvList.propTypes = {\n /**\n * Class names to be applied.\n */\n className: PropTypes.string,\n /**\n * A Jss Object used to override or extend the component styles applied.\n */\n classes: PropTypes.shape({\n /**\n * Styles applied to the component root class.\n */\n root: PropTypes.string,\n /**\n * Styles applied to the component root class in virtualized form.\n */\n virtualizedRoot: PropTypes.string,\n /**\n * Styles applied to the list item selector.\n */\n selectorRoot: PropTypes.string,\n /**\n * Styles applied to the list item selector label container.\n */\n selectorContainer: PropTypes.string,\n /**\n * Style applied to the icon box.\n */\n box: PropTypes.string,\n /**\n * Styles applied when the list item text when truncate.\n */\n truncate: PropTypes.string,\n /**\n * Styles applied to the list item.\n */\n item: PropTypes.string,\n /**\n * Styles applied to the list item when it has a selector.\n */\n itemSelector: PropTypes.string,\n /**\n * Styles applied to the list item when it has a link path.\n */\n link: PropTypes.string,\n /**\n * Styles applied to the select all selector.\n */\n selectAllSelector: PropTypes.string,\n }).isRequired,\n /**\n * The id of the root element\n */\n id: PropTypes.string,\n /**\n * A list containing the elements to be rendered.\n *\n * - id: The id of the item.\n * - label: The label of the element to be rendered.\n * - selected: The selection state of the element.\n * - disabled: The disabled state of the element.\n * - isHidden: Is item visible.\n * - icon: The icon.\n * - showNavIcon: If true renders the navigation icon on the right.\n * - path: The path to navigate to.\n */\n // eslint-disable-next-line react/no-unused-prop-types\n values: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n label: PropTypes.node.isRequired,\n selected: PropTypes.bool,\n disabled: PropTypes.bool,\n isHidden: PropTypes.bool,\n icon: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n showNavIcon: PropTypes.bool,\n path: PropTypes.string,\n params: PropTypes.instanceOf(Object),\n })\n ).isRequired,\n /**\n * If true renders a multi select list.\n */\n multiSelect: PropTypes.bool,\n /**\n * If true renders select all option for multi selection lists with selectors.\n * note: It will only be rendered if multiSelect and useSelector props are set to true.\n */\n showSelectAll: PropTypes.bool,\n /**\n * An object containing all the labels for the dropdown.\n */\n labels: PropTypes.shape({\n /**\n * The label used for the All checkbox action.\n */\n selectAll: PropTypes.string,\n /**\n * The label used in the middle of the multiselection count.\n */\n selectionConjunction: PropTypes.string,\n }),\n /**\n * If true renders list items with radio or checkbox selectors.\n */\n useSelector: PropTypes.bool,\n /**\n * Call back fired when list item is selected. Returns selection state.\n */\n onChange: PropTypes.func,\n /**\n * Call back fired when list item is selected. Returns selected item.\n */\n onClick: PropTypes.func,\n /**\n * If `true` the list items will show the selection state.\n */\n selectable: PropTypes.bool,\n /**\n * If `true`, selection can be toggled when single selection.\n */\n singleSelectionToggle: PropTypes.bool,\n /**\n * If `true` the list will be rendered without vertical spacing.\n */\n condensed: PropTypes.bool,\n /**\n * If `true` the dropdown will show tooltips when user mouseenter text in list\n */\n hasTooltips: PropTypes.bool,\n /**\n * Experimental. Height of the dropdown, in case you want to control it from a prop. Styles can also be used through dropdownListContainer class. Required in case virtualized is used\n */\n height: PropTypes.number,\n /**\n * Experimental. Uses dropdown in a virtualized form, where not all options are rendered initially. Good for use cases with a lot of options.\n */\n virtualized: PropTypes.bool,\n};\n\nexport default withStyles(styles, { name: \"HvList\" })(HvList);\n"],"mappings":"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"}