@hitachivantara/uikit-react-core 5.66.10 → 5.66.12

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 (451) hide show
  1. package/dist/cjs/Accordion/Accordion.cjs +1 -1
  2. package/dist/cjs/ActionBar/ActionBar.cjs +1 -1
  3. package/dist/cjs/ActionsGeneric/ActionsGeneric.cjs +1 -1
  4. package/dist/cjs/AppSwitcher/Action/Action.cjs +1 -1
  5. package/dist/cjs/AppSwitcher/AppSwitcher.cjs +2 -2
  6. package/dist/cjs/Avatar/Avatar.cjs +1 -1
  7. package/dist/cjs/AvatarGroup/AvatarGroup.cjs +1 -1
  8. package/dist/cjs/AvatarGroup/AvatarGroupContext.cjs +1 -1
  9. package/dist/cjs/Badge/Badge.cjs +1 -1
  10. package/dist/cjs/Banner/Banner.cjs +1 -1
  11. package/dist/cjs/Banner/BannerContent/ActionContainer/ActionContainer.cjs +1 -1
  12. package/dist/cjs/Banner/BannerContent/BannerContent.cjs +1 -1
  13. package/dist/cjs/Banner/BannerContent/MessageContainer/MessageContainer.cjs +1 -1
  14. package/dist/cjs/BaseCheckBox/BaseCheckBox.cjs +1 -1
  15. package/dist/cjs/BaseCheckBox/icons.cjs +1 -1
  16. package/dist/cjs/BaseDropdown/BaseDropdown.cjs +1 -1
  17. package/dist/cjs/BaseInput/BaseInput.cjs +1 -1
  18. package/dist/cjs/BaseRadio/BaseRadio.cjs +1 -1
  19. package/dist/cjs/BaseRadio/icons.cjs +1 -1
  20. package/dist/cjs/BaseSwitch/BaseSwitch.cjs +1 -1
  21. package/dist/cjs/Box/Box.cjs +1 -1
  22. package/dist/cjs/BreadCrumb/BreadCrumb.cjs +1 -1
  23. package/dist/cjs/BreadCrumb/Page/Page.cjs +1 -1
  24. package/dist/cjs/BreadCrumb/PathElement/PathElement.cjs +1 -1
  25. package/dist/cjs/BreadCrumb/utils.cjs +1 -1
  26. package/dist/cjs/BulkActions/BulkActions.cjs +1 -1
  27. package/dist/cjs/BulkActions/BulkActions.styles.cjs +1 -1
  28. package/dist/cjs/Button/Button.cjs +1 -1
  29. package/dist/cjs/Calendar/Calendar.cjs +10 -4
  30. package/dist/cjs/Calendar/CalendarHeader/CalendarHeader.cjs +1 -1
  31. package/dist/cjs/Calendar/CalendarNavigation/ComposedNavigation/ComposedNavigation.cjs +1 -1
  32. package/dist/cjs/Calendar/CalendarNavigation/MonthSelector/MonthSelector.cjs +1 -1
  33. package/dist/cjs/Calendar/CalendarNavigation/Navigation/Navigation.cjs +1 -1
  34. package/dist/cjs/Calendar/SingleCalendar/CalendarCell.cjs +2 -2
  35. package/dist/cjs/Calendar/SingleCalendar/SingleCalendar.cjs +1 -1
  36. package/dist/cjs/Card/Card.cjs +1 -1
  37. package/dist/cjs/Card/Content/Content.cjs +1 -1
  38. package/dist/cjs/Card/Header/Header.cjs +1 -1
  39. package/dist/cjs/Card/Media/Media.cjs +1 -7
  40. package/dist/cjs/Carousel/Carousel.cjs +1 -1
  41. package/dist/cjs/Carousel/CarouselControls.cjs +1 -1
  42. package/dist/cjs/Carousel/CarouselSlide/CarouselSlide.cjs +1 -1
  43. package/dist/cjs/Carousel/CarouselThumbnails.cjs +1 -1
  44. package/dist/cjs/CheckBox/CheckBox.cjs +1 -1
  45. package/dist/cjs/CheckBoxGroup/CheckBoxGroup.cjs +1 -1
  46. package/dist/cjs/ColorPicker/ColorPicker.cjs +1 -1
  47. package/dist/cjs/ColorPicker/Fields/Fields.cjs +1 -1
  48. package/dist/cjs/ColorPicker/Picker/Picker.cjs +1 -1
  49. package/dist/cjs/ColorPicker/PresetColors/PresetColors.cjs +1 -1
  50. package/dist/cjs/ColorPicker/SavedColors/SavedColors.cjs +1 -1
  51. package/dist/cjs/Container/Container.cjs +1 -1
  52. package/dist/cjs/Controls/Controls.cjs +1 -1
  53. package/dist/cjs/Controls/LeftControl/LeftControl.cjs +1 -1
  54. package/dist/cjs/Controls/RightControl/RightControl.cjs +1 -1
  55. package/dist/cjs/DatePicker/DatePicker.cjs +1 -1
  56. package/dist/cjs/Dialog/Actions/Actions.cjs +1 -1
  57. package/dist/cjs/Dialog/Content/Content.cjs +1 -1
  58. package/dist/cjs/Dialog/Dialog.cjs +1 -1
  59. package/dist/cjs/Dialog/Title/Title.cjs +1 -1
  60. package/dist/cjs/DotPagination/DotPagination.cjs +1 -1
  61. package/dist/cjs/Drawer/Drawer.cjs +1 -1
  62. package/dist/cjs/DropDownMenu/DropDownMenu.cjs +1 -1
  63. package/dist/cjs/Dropdown/Dropdown.cjs +1 -1
  64. package/dist/cjs/Dropdown/List/List.cjs +1 -1
  65. package/dist/cjs/DropdownButton/DropdownButton.cjs +1 -1
  66. package/dist/cjs/EmptyState/EmptyState.cjs +1 -1
  67. package/dist/cjs/FileUploader/DropZone/DropZone.cjs +1 -1
  68. package/dist/cjs/FileUploader/File/File.cjs +1 -1
  69. package/dist/cjs/FileUploader/FileList/FileList.cjs +1 -1
  70. package/dist/cjs/FileUploader/FileUploader.cjs +1 -1
  71. package/dist/cjs/FileUploader/Preview/Preview.cjs +1 -1
  72. package/dist/cjs/FilterGroup/Counter/Counter.cjs +1 -1
  73. package/dist/cjs/FilterGroup/FilterContent/FilterContent.cjs +1 -1
  74. package/dist/cjs/FilterGroup/FilterGroup.cjs +1 -1
  75. package/dist/cjs/FilterGroup/FilterGroupContext.cjs +1 -1
  76. package/dist/cjs/FilterGroup/LeftPanel/LeftPanel.cjs +1 -1
  77. package/dist/cjs/FilterGroup/RightPanel/RightPanel.cjs +1 -1
  78. package/dist/cjs/Focus/Focus.cjs +2 -3
  79. package/dist/cjs/Footer/Footer.cjs +1 -1
  80. package/dist/cjs/Forms/Adornment/Adornment.cjs +1 -1
  81. package/dist/cjs/Forms/CharCounter/CharCounter.cjs +1 -1
  82. package/dist/cjs/Forms/FormElement/FormElement.cjs +1 -1
  83. package/dist/cjs/Forms/InfoMessage/InfoMessage.cjs +1 -1
  84. package/dist/cjs/Forms/Label/Label.cjs +1 -1
  85. package/dist/cjs/Forms/Suggestions/Suggestions.cjs +1 -1
  86. package/dist/cjs/Forms/WarningText/WarningText.cjs +1 -1
  87. package/dist/cjs/GlobalActions/GlobalActions.cjs +1 -1
  88. package/dist/cjs/Grid/Grid.cjs +5 -8
  89. package/dist/cjs/Header/Actions/Actions.cjs +1 -1
  90. package/dist/cjs/Header/Brand/Brand.cjs +1 -1
  91. package/dist/cjs/Header/Header.cjs +1 -1
  92. package/dist/cjs/Header/Navigation/MenuBar/Bar.cjs +1 -1
  93. package/dist/cjs/Header/Navigation/MenuBar/MenuBar.cjs +1 -1
  94. package/dist/cjs/Header/Navigation/MenuItem/MenuItem.cjs +2 -2
  95. package/dist/cjs/Header/Navigation/Navigation.cjs +1 -1
  96. package/dist/cjs/Header/Navigation/useSelectionPath.cjs +1 -1
  97. package/dist/cjs/Header/Navigation/utils/FocusContext.cjs +1 -1
  98. package/dist/cjs/IconButton/IconButton.cjs +1 -1
  99. package/dist/cjs/InlineEditor/InlineEditor.cjs +1 -1
  100. package/dist/cjs/Input/Input.cjs +1 -1
  101. package/dist/cjs/Kpi/Kpi.cjs +1 -1
  102. package/dist/cjs/Link/Link.cjs +1 -1
  103. package/dist/cjs/List/List.cjs +1 -1
  104. package/dist/cjs/List/utils.cjs +1 -1
  105. package/dist/cjs/ListContainer/ListContainer.cjs +1 -1
  106. package/dist/cjs/ListContainer/ListItem/ListItem.cjs +1 -1
  107. package/dist/cjs/Loading/Loading.cjs +1 -1
  108. package/dist/cjs/LoadingContainer/LoadingContainer.cjs +1 -1
  109. package/dist/cjs/Login/Login.cjs +1 -1
  110. package/dist/cjs/MultiButton/MultiButton.cjs +1 -1
  111. package/dist/cjs/OverflowTooltip/OverflowTooltip.cjs +1 -1
  112. package/dist/cjs/Pagination/Pagination.cjs +1 -1
  113. package/dist/cjs/Pagination/Select.cjs +1 -1
  114. package/dist/cjs/Panel/Panel.cjs +1 -1
  115. package/dist/cjs/ProgressBar/ProgressBar.cjs +1 -1
  116. package/dist/cjs/QueryBuilder/ConfirmationDialog/ConfirmationDialog.cjs +1 -1
  117. package/dist/cjs/QueryBuilder/Context.cjs +1 -1
  118. package/dist/cjs/QueryBuilder/QueryBuilder.cjs +1 -1
  119. package/dist/cjs/QueryBuilder/Rule/Attribute/Attribute.cjs +1 -1
  120. package/dist/cjs/QueryBuilder/Rule/Operator/Operator.cjs +1 -1
  121. package/dist/cjs/QueryBuilder/Rule/Rule.cjs +1 -1
  122. package/dist/cjs/QueryBuilder/Rule/Value/BooleanValue/BooleanValue.cjs +1 -1
  123. package/dist/cjs/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.cjs +1 -1
  124. package/dist/cjs/QueryBuilder/Rule/Value/NumericValue/NumericValue.cjs +1 -1
  125. package/dist/cjs/QueryBuilder/Rule/Value/TextValue/TextValue.cjs +1 -1
  126. package/dist/cjs/QueryBuilder/Rule/Value/Value.cjs +1 -1
  127. package/dist/cjs/QueryBuilder/RuleGroup/RuleGroup.cjs +1 -1
  128. package/dist/cjs/QueryBuilder/utils/index.cjs +1 -1
  129. package/dist/cjs/Radio/Radio.cjs +1 -1
  130. package/dist/cjs/RadioGroup/RadioGroup.cjs +1 -1
  131. package/dist/cjs/ScrollTo/Horizontal/HorizontalScrollListItem/HorizontalScrollListItem.cjs +1 -1
  132. package/dist/cjs/ScrollTo/Horizontal/ScrollToHorizontal.cjs +1 -1
  133. package/dist/cjs/ScrollTo/Vertical/ScrollToVertical.cjs +1 -1
  134. package/dist/cjs/ScrollTo/Vertical/VerticalScrollListItem/VerticalScrollListItem.cjs +1 -1
  135. package/dist/cjs/ScrollTo/utils.cjs +2 -2
  136. package/dist/cjs/Section/Section.cjs +1 -1
  137. package/dist/cjs/Select/Option.cjs +1 -1
  138. package/dist/cjs/Select/OptionGroup.cjs +1 -1
  139. package/dist/cjs/Select/Select.cjs +1 -1
  140. package/dist/cjs/SelectionList/SelectionList.cjs +1 -1
  141. package/dist/cjs/SimpleGrid/SimpleGrid.cjs +1 -1
  142. package/dist/cjs/Skeleton/Skeleton.cjs +1 -1
  143. package/dist/cjs/Slider/Slider.cjs +1 -1
  144. package/dist/cjs/Slider/SliderInput/SliderInput.cjs +1 -1
  145. package/dist/cjs/Snackbar/Snackbar.cjs +1 -1
  146. package/dist/cjs/Snackbar/SnackbarContent/SnackbarContent.cjs +1 -1
  147. package/dist/cjs/SnackbarProvider/SnackbarProvider.cjs +1 -1
  148. package/dist/cjs/Stack/Stack.cjs +10 -11
  149. package/dist/cjs/Switch/Switch.cjs +1 -1
  150. package/dist/cjs/Tab/Tab.cjs +1 -1
  151. package/dist/cjs/Table/Table.cjs +1 -1
  152. package/dist/cjs/Table/TableBody/TableBody.cjs +1 -1
  153. package/dist/cjs/Table/TableCell/TableCell.cjs +1 -1
  154. package/dist/cjs/Table/TableContainer/TableContainer.cjs +1 -1
  155. package/dist/cjs/Table/TableHead/TableHead.cjs +1 -1
  156. package/dist/cjs/Table/TableHeader/TableHeader.cjs +1 -1
  157. package/dist/cjs/Table/TableRow/TableRow.cjs +1 -1
  158. package/dist/cjs/Table/hooks/useRowExpand.cjs +1 -1
  159. package/dist/cjs/Table/hooks/useRowSelection.cjs +7 -7
  160. package/dist/cjs/Table/renderers/DateColumnCell/DateColumnCell.cjs +1 -1
  161. package/dist/cjs/Table/renderers/DropdownColumnCell/DropdownColumnCell.cjs +1 -1
  162. package/dist/cjs/Table/renderers/ProgressColumnCell/ProgressColumnCell.cjs +1 -1
  163. package/dist/cjs/Table/renderers/SwitchColumnCell/SwitchColumnCell.cjs +1 -1
  164. package/dist/cjs/Table/renderers/renderers.cjs +1 -1
  165. package/dist/cjs/TableSection/TableSection.cjs +1 -1
  166. package/dist/cjs/TableSection/TableSection.styles.cjs +1 -1
  167. package/dist/cjs/Tabs/Tabs.cjs +1 -1
  168. package/dist/cjs/Tag/Tag.cjs +1 -1
  169. package/dist/cjs/TagsInput/TagsInput.cjs +2 -2
  170. package/dist/cjs/TextArea/TextArea.cjs +1 -1
  171. package/dist/cjs/TimeAgo/TimeAgo.cjs +1 -1
  172. package/dist/cjs/TimePicker/Placeholder.cjs +1 -1
  173. package/dist/cjs/TimePicker/TimePicker.cjs +1 -1
  174. package/dist/cjs/TimePicker/Unit/Unit.cjs +1 -1
  175. package/dist/cjs/ToggleButton/ToggleButton.cjs +1 -1
  176. package/dist/cjs/Tooltip/Tooltip.cjs +1 -1
  177. package/dist/cjs/TreeView/TreeItem/DefaultContent.cjs +1 -1
  178. package/dist/cjs/TreeView/TreeItem/TreeItem.cjs +1 -1
  179. package/dist/cjs/TreeView/TreeView.cjs +1 -1
  180. package/dist/cjs/TreeView/internals/DescendantProvider.cjs +2 -2
  181. package/dist/cjs/TreeView/internals/TreeViewProvider.cjs +1 -1
  182. package/dist/cjs/Typography/Typography.cjs +1 -1
  183. package/dist/cjs/VerticalNavigation/Actions/Action.cjs +13 -11
  184. package/dist/cjs/VerticalNavigation/Actions/Action.styles.cjs +4 -4
  185. package/dist/cjs/VerticalNavigation/Actions/Actions.cjs +9 -9
  186. package/dist/cjs/VerticalNavigation/Header/Header.cjs +46 -26
  187. package/dist/cjs/VerticalNavigation/Header/Header.styles.cjs +3 -1
  188. package/dist/cjs/VerticalNavigation/Navigation/Navigation.cjs +23 -29
  189. package/dist/cjs/VerticalNavigation/NavigationPopup/NavigationPopup.styles.cjs +0 -8
  190. package/dist/cjs/VerticalNavigation/NavigationPopup/NavigationPopupContainer.cjs +20 -6
  191. package/dist/cjs/VerticalNavigation/NavigationSlider/NavigationSlider.cjs +41 -30
  192. package/dist/cjs/VerticalNavigation/NavigationSlider/NavigationSlider.styles.cjs +6 -9
  193. package/dist/cjs/VerticalNavigation/TreeView/IconWrapper/IconWrapper.cjs +7 -18
  194. package/dist/cjs/VerticalNavigation/TreeView/TreeView.cjs +614 -631
  195. package/dist/cjs/VerticalNavigation/TreeView/TreeViewItem.cjs +39 -26
  196. package/dist/cjs/VerticalNavigation/TreeView/TreeViewItem.styles.cjs +25 -13
  197. package/dist/cjs/VerticalNavigation/VerticalNavigation.cjs +1 -1
  198. package/dist/cjs/hocs/withTooltip.cjs +1 -1
  199. package/dist/cjs/hooks/useEmotionCache.cjs +1 -1
  200. package/dist/cjs/hooks/useTheme.cjs +1 -1
  201. package/dist/cjs/providers/Provider.cjs +1 -1
  202. package/dist/cjs/providers/ThemeProvider.cjs +1 -1
  203. package/dist/cjs/utils/focusableElementFinder.cjs +1 -1
  204. package/dist/cjs/utils/iconVariant.cjs +1 -1
  205. package/dist/esm/Accordion/Accordion.js +1 -1
  206. package/dist/esm/ActionBar/ActionBar.js +1 -1
  207. package/dist/esm/ActionsGeneric/ActionsGeneric.js +1 -1
  208. package/dist/esm/AppSwitcher/Action/Action.js +1 -1
  209. package/dist/esm/AppSwitcher/AppSwitcher.js +2 -2
  210. package/dist/esm/AppSwitcher/AppSwitcher.js.map +1 -1
  211. package/dist/esm/Avatar/Avatar.js +1 -1
  212. package/dist/esm/AvatarGroup/AvatarGroup.js +1 -1
  213. package/dist/esm/AvatarGroup/AvatarGroupContext.js +1 -1
  214. package/dist/esm/Badge/Badge.js +1 -1
  215. package/dist/esm/Banner/Banner.js +1 -1
  216. package/dist/esm/Banner/BannerContent/ActionContainer/ActionContainer.js +1 -1
  217. package/dist/esm/Banner/BannerContent/BannerContent.js +1 -1
  218. package/dist/esm/Banner/BannerContent/MessageContainer/MessageContainer.js +1 -1
  219. package/dist/esm/BaseCheckBox/BaseCheckBox.js +1 -1
  220. package/dist/esm/BaseCheckBox/icons.js +1 -1
  221. package/dist/esm/BaseDropdown/BaseDropdown.js +1 -1
  222. package/dist/esm/BaseInput/BaseInput.js +1 -1
  223. package/dist/esm/BaseRadio/BaseRadio.js +1 -1
  224. package/dist/esm/BaseRadio/icons.js +1 -1
  225. package/dist/esm/BaseSwitch/BaseSwitch.js +1 -1
  226. package/dist/esm/Box/Box.js +1 -1
  227. package/dist/esm/BreadCrumb/BreadCrumb.js +1 -1
  228. package/dist/esm/BreadCrumb/Page/Page.js +1 -1
  229. package/dist/esm/BreadCrumb/PathElement/PathElement.js +1 -1
  230. package/dist/esm/BreadCrumb/utils.js +1 -1
  231. package/dist/esm/BulkActions/BulkActions.js +1 -1
  232. package/dist/esm/BulkActions/BulkActions.styles.js +1 -1
  233. package/dist/esm/Button/Button.js +1 -1
  234. package/dist/esm/Calendar/Calendar.js +10 -4
  235. package/dist/esm/Calendar/Calendar.js.map +1 -1
  236. package/dist/esm/Calendar/CalendarHeader/CalendarHeader.js +1 -1
  237. package/dist/esm/Calendar/CalendarNavigation/ComposedNavigation/ComposedNavigation.js +1 -1
  238. package/dist/esm/Calendar/CalendarNavigation/MonthSelector/MonthSelector.js +1 -1
  239. package/dist/esm/Calendar/CalendarNavigation/Navigation/Navigation.js +1 -1
  240. package/dist/esm/Calendar/SingleCalendar/CalendarCell.js +2 -2
  241. package/dist/esm/Calendar/SingleCalendar/CalendarCell.js.map +1 -1
  242. package/dist/esm/Calendar/SingleCalendar/SingleCalendar.js +1 -1
  243. package/dist/esm/Card/Card.js +1 -1
  244. package/dist/esm/Card/Content/Content.js +1 -1
  245. package/dist/esm/Card/Header/Header.js +1 -1
  246. package/dist/esm/Card/Media/Media.js +1 -7
  247. package/dist/esm/Card/Media/Media.js.map +1 -1
  248. package/dist/esm/Carousel/Carousel.js +1 -1
  249. package/dist/esm/Carousel/CarouselControls.js +1 -1
  250. package/dist/esm/Carousel/CarouselSlide/CarouselSlide.js +1 -1
  251. package/dist/esm/Carousel/CarouselThumbnails.js +1 -1
  252. package/dist/esm/CheckBox/CheckBox.js +1 -1
  253. package/dist/esm/CheckBoxGroup/CheckBoxGroup.js +1 -1
  254. package/dist/esm/ColorPicker/ColorPicker.js +1 -1
  255. package/dist/esm/ColorPicker/Fields/Fields.js +1 -1
  256. package/dist/esm/ColorPicker/Picker/Picker.js +1 -1
  257. package/dist/esm/ColorPicker/PresetColors/PresetColors.js +1 -1
  258. package/dist/esm/ColorPicker/SavedColors/SavedColors.js +1 -1
  259. package/dist/esm/Container/Container.js +1 -1
  260. package/dist/esm/Controls/Controls.js +1 -1
  261. package/dist/esm/Controls/LeftControl/LeftControl.js +1 -1
  262. package/dist/esm/Controls/RightControl/RightControl.js +1 -1
  263. package/dist/esm/DatePicker/DatePicker.js +1 -1
  264. package/dist/esm/Dialog/Actions/Actions.js +1 -1
  265. package/dist/esm/Dialog/Content/Content.js +1 -1
  266. package/dist/esm/Dialog/Dialog.js +1 -1
  267. package/dist/esm/Dialog/Title/Title.js +1 -1
  268. package/dist/esm/DotPagination/DotPagination.js +1 -1
  269. package/dist/esm/Drawer/Drawer.js +1 -1
  270. package/dist/esm/DropDownMenu/DropDownMenu.js +1 -1
  271. package/dist/esm/Dropdown/Dropdown.js +1 -1
  272. package/dist/esm/Dropdown/List/List.js +1 -1
  273. package/dist/esm/DropdownButton/DropdownButton.js +1 -1
  274. package/dist/esm/EmptyState/EmptyState.js +1 -1
  275. package/dist/esm/FileUploader/DropZone/DropZone.js +1 -1
  276. package/dist/esm/FileUploader/File/File.js +1 -1
  277. package/dist/esm/FileUploader/FileList/FileList.js +1 -1
  278. package/dist/esm/FileUploader/FileUploader.js +1 -1
  279. package/dist/esm/FileUploader/Preview/Preview.js +1 -1
  280. package/dist/esm/FilterGroup/Counter/Counter.js +1 -1
  281. package/dist/esm/FilterGroup/FilterContent/FilterContent.js +1 -1
  282. package/dist/esm/FilterGroup/FilterGroup.js +1 -1
  283. package/dist/esm/FilterGroup/FilterGroupContext.js +1 -1
  284. package/dist/esm/FilterGroup/LeftPanel/LeftPanel.js +1 -1
  285. package/dist/esm/FilterGroup/RightPanel/RightPanel.js +1 -1
  286. package/dist/esm/Focus/Focus.js +2 -3
  287. package/dist/esm/Focus/Focus.js.map +1 -1
  288. package/dist/esm/Footer/Footer.js +1 -1
  289. package/dist/esm/Forms/Adornment/Adornment.js +1 -1
  290. package/dist/esm/Forms/CharCounter/CharCounter.js +1 -1
  291. package/dist/esm/Forms/FormElement/FormElement.js +1 -1
  292. package/dist/esm/Forms/InfoMessage/InfoMessage.js +1 -1
  293. package/dist/esm/Forms/Label/Label.js +1 -1
  294. package/dist/esm/Forms/Suggestions/Suggestions.js +1 -1
  295. package/dist/esm/Forms/WarningText/WarningText.js +1 -1
  296. package/dist/esm/GlobalActions/GlobalActions.js +1 -1
  297. package/dist/esm/Grid/Grid.js +5 -8
  298. package/dist/esm/Grid/Grid.js.map +1 -1
  299. package/dist/esm/Header/Actions/Actions.js +1 -1
  300. package/dist/esm/Header/Brand/Brand.js +1 -1
  301. package/dist/esm/Header/Header.js +1 -1
  302. package/dist/esm/Header/Navigation/MenuBar/Bar.js +1 -1
  303. package/dist/esm/Header/Navigation/MenuBar/MenuBar.js +1 -1
  304. package/dist/esm/Header/Navigation/MenuItem/MenuItem.js +2 -2
  305. package/dist/esm/Header/Navigation/MenuItem/MenuItem.js.map +1 -1
  306. package/dist/esm/Header/Navigation/Navigation.js +1 -1
  307. package/dist/esm/Header/Navigation/useSelectionPath.js +1 -1
  308. package/dist/esm/Header/Navigation/useSelectionPath.js.map +1 -1
  309. package/dist/esm/Header/Navigation/utils/FocusContext.js +1 -1
  310. package/dist/esm/IconButton/IconButton.js +1 -1
  311. package/dist/esm/InlineEditor/InlineEditor.js +1 -1
  312. package/dist/esm/Input/Input.js +1 -1
  313. package/dist/esm/Kpi/Kpi.js +1 -1
  314. package/dist/esm/Link/Link.js +1 -1
  315. package/dist/esm/Link/Link.js.map +1 -1
  316. package/dist/esm/List/List.js +1 -1
  317. package/dist/esm/List/utils.js +1 -1
  318. package/dist/esm/List/utils.js.map +1 -1
  319. package/dist/esm/ListContainer/ListContainer.js +1 -1
  320. package/dist/esm/ListContainer/ListItem/ListItem.js +1 -1
  321. package/dist/esm/Loading/Loading.js +1 -1
  322. package/dist/esm/LoadingContainer/LoadingContainer.js +1 -1
  323. package/dist/esm/Login/Login.js +1 -1
  324. package/dist/esm/MultiButton/MultiButton.js +1 -1
  325. package/dist/esm/OverflowTooltip/OverflowTooltip.js +1 -1
  326. package/dist/esm/Pagination/Pagination.js +1 -1
  327. package/dist/esm/Pagination/Select.js +1 -1
  328. package/dist/esm/Panel/Panel.js +1 -1
  329. package/dist/esm/ProgressBar/ProgressBar.js +1 -1
  330. package/dist/esm/QueryBuilder/ConfirmationDialog/ConfirmationDialog.js +1 -1
  331. package/dist/esm/QueryBuilder/Context.js +1 -1
  332. package/dist/esm/QueryBuilder/QueryBuilder.js +1 -1
  333. package/dist/esm/QueryBuilder/QueryBuilder.js.map +1 -1
  334. package/dist/esm/QueryBuilder/Rule/Attribute/Attribute.js +1 -1
  335. package/dist/esm/QueryBuilder/Rule/Operator/Operator.js +1 -1
  336. package/dist/esm/QueryBuilder/Rule/Rule.js +1 -1
  337. package/dist/esm/QueryBuilder/Rule/Value/BooleanValue/BooleanValue.js +1 -1
  338. package/dist/esm/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.js +1 -1
  339. package/dist/esm/QueryBuilder/Rule/Value/NumericValue/NumericValue.js +1 -1
  340. package/dist/esm/QueryBuilder/Rule/Value/TextValue/TextValue.js +1 -1
  341. package/dist/esm/QueryBuilder/Rule/Value/Value.js +1 -1
  342. package/dist/esm/QueryBuilder/RuleGroup/RuleGroup.js +1 -1
  343. package/dist/esm/QueryBuilder/utils/index.js +1 -1
  344. package/dist/esm/QueryBuilder/utils/index.js.map +1 -1
  345. package/dist/esm/Radio/Radio.js +1 -1
  346. package/dist/esm/RadioGroup/RadioGroup.js +1 -1
  347. package/dist/esm/ScrollTo/Horizontal/HorizontalScrollListItem/HorizontalScrollListItem.js +1 -1
  348. package/dist/esm/ScrollTo/Horizontal/ScrollToHorizontal.js +1 -1
  349. package/dist/esm/ScrollTo/Vertical/ScrollToVertical.js +1 -1
  350. package/dist/esm/ScrollTo/Vertical/VerticalScrollListItem/VerticalScrollListItem.js +1 -1
  351. package/dist/esm/ScrollTo/useScrollTo.js.map +1 -1
  352. package/dist/esm/ScrollTo/utils.js +2 -2
  353. package/dist/esm/ScrollTo/utils.js.map +1 -1
  354. package/dist/esm/Section/Section.js +1 -1
  355. package/dist/esm/Select/Option.js +1 -1
  356. package/dist/esm/Select/OptionGroup.js +1 -1
  357. package/dist/esm/Select/Select.js +1 -1
  358. package/dist/esm/SelectionList/SelectionList.js +1 -1
  359. package/dist/esm/SimpleGrid/SimpleGrid.js +1 -1
  360. package/dist/esm/Skeleton/Skeleton.js +1 -1
  361. package/dist/esm/Slider/Slider.js +1 -1
  362. package/dist/esm/Slider/SliderInput/SliderInput.js +1 -1
  363. package/dist/esm/Slider/utils.js.map +1 -1
  364. package/dist/esm/Snackbar/Snackbar.js +1 -1
  365. package/dist/esm/Snackbar/SnackbarContent/SnackbarContent.js +1 -1
  366. package/dist/esm/SnackbarProvider/SnackbarProvider.js +1 -1
  367. package/dist/esm/Stack/Stack.js +10 -11
  368. package/dist/esm/Stack/Stack.js.map +1 -1
  369. package/dist/esm/Switch/Switch.js +1 -1
  370. package/dist/esm/Tab/Tab.js +1 -1
  371. package/dist/esm/Table/Table.js +1 -1
  372. package/dist/esm/Table/TableBody/TableBody.js +1 -1
  373. package/dist/esm/Table/TableCell/TableCell.js +1 -1
  374. package/dist/esm/Table/TableContainer/TableContainer.js +1 -1
  375. package/dist/esm/Table/TableHead/TableHead.js +1 -1
  376. package/dist/esm/Table/TableHeader/TableHeader.js +1 -1
  377. package/dist/esm/Table/TableRow/TableRow.js +1 -1
  378. package/dist/esm/Table/hooks/useRowExpand.js +1 -1
  379. package/dist/esm/Table/hooks/useRowSelection.js +7 -7
  380. package/dist/esm/Table/hooks/useRowSelection.js.map +1 -1
  381. package/dist/esm/Table/renderers/DateColumnCell/DateColumnCell.js +1 -1
  382. package/dist/esm/Table/renderers/DropdownColumnCell/DropdownColumnCell.js +1 -1
  383. package/dist/esm/Table/renderers/ProgressColumnCell/ProgressColumnCell.js +1 -1
  384. package/dist/esm/Table/renderers/SwitchColumnCell/SwitchColumnCell.js +1 -1
  385. package/dist/esm/Table/renderers/renderers.js +1 -1
  386. package/dist/esm/Table/renderers/renderers.js.map +1 -1
  387. package/dist/esm/TableSection/TableSection.js +1 -1
  388. package/dist/esm/TableSection/TableSection.styles.js +1 -1
  389. package/dist/esm/Tabs/Tabs.js +1 -1
  390. package/dist/esm/Tag/Tag.js +1 -1
  391. package/dist/esm/TagsInput/TagsInput.js +2 -2
  392. package/dist/esm/TagsInput/TagsInput.js.map +1 -1
  393. package/dist/esm/TextArea/TextArea.js +1 -1
  394. package/dist/esm/TimeAgo/TimeAgo.js +1 -1
  395. package/dist/esm/TimePicker/Placeholder.js +1 -1
  396. package/dist/esm/TimePicker/TimePicker.js +1 -1
  397. package/dist/esm/TimePicker/Unit/Unit.js +1 -1
  398. package/dist/esm/ToggleButton/ToggleButton.js +1 -1
  399. package/dist/esm/Tooltip/Tooltip.js +1 -1
  400. package/dist/esm/TreeView/TreeItem/DefaultContent.js +1 -1
  401. package/dist/esm/TreeView/TreeItem/TreeItem.js +1 -1
  402. package/dist/esm/TreeView/TreeView.js +1 -1
  403. package/dist/esm/TreeView/internals/DescendantProvider.js +2 -2
  404. package/dist/esm/TreeView/internals/DescendantProvider.js.map +1 -1
  405. package/dist/esm/TreeView/internals/TreeViewProvider.js +1 -1
  406. package/dist/esm/Typography/Typography.js +1 -1
  407. package/dist/esm/VerticalNavigation/Actions/Action.js +13 -11
  408. package/dist/esm/VerticalNavigation/Actions/Action.js.map +1 -1
  409. package/dist/esm/VerticalNavigation/Actions/Action.styles.js +4 -4
  410. package/dist/esm/VerticalNavigation/Actions/Action.styles.js.map +1 -1
  411. package/dist/esm/VerticalNavigation/Actions/Actions.js +9 -9
  412. package/dist/esm/VerticalNavigation/Actions/Actions.js.map +1 -1
  413. package/dist/esm/VerticalNavigation/Header/Header.js +46 -26
  414. package/dist/esm/VerticalNavigation/Header/Header.js.map +1 -1
  415. package/dist/esm/VerticalNavigation/Header/Header.styles.js +3 -1
  416. package/dist/esm/VerticalNavigation/Header/Header.styles.js.map +1 -1
  417. package/dist/esm/VerticalNavigation/Navigation/Navigation.js +23 -29
  418. package/dist/esm/VerticalNavigation/Navigation/Navigation.js.map +1 -1
  419. package/dist/esm/VerticalNavigation/NavigationPopup/NavigationPopup.styles.js +0 -6
  420. package/dist/esm/VerticalNavigation/NavigationPopup/NavigationPopup.styles.js.map +1 -1
  421. package/dist/esm/VerticalNavigation/NavigationPopup/NavigationPopupContainer.js +21 -7
  422. package/dist/esm/VerticalNavigation/NavigationPopup/NavigationPopupContainer.js.map +1 -1
  423. package/dist/esm/VerticalNavigation/NavigationSlider/NavigationSlider.js +41 -30
  424. package/dist/esm/VerticalNavigation/NavigationSlider/NavigationSlider.js.map +1 -1
  425. package/dist/esm/VerticalNavigation/NavigationSlider/NavigationSlider.styles.js +6 -9
  426. package/dist/esm/VerticalNavigation/NavigationSlider/NavigationSlider.styles.js.map +1 -1
  427. package/dist/esm/VerticalNavigation/TreeView/IconWrapper/IconWrapper.js +7 -18
  428. package/dist/esm/VerticalNavigation/TreeView/IconWrapper/IconWrapper.js.map +1 -1
  429. package/dist/esm/VerticalNavigation/TreeView/TreeView.js +614 -631
  430. package/dist/esm/VerticalNavigation/TreeView/TreeView.js.map +1 -1
  431. package/dist/esm/VerticalNavigation/TreeView/TreeView.styles.js.map +1 -1
  432. package/dist/esm/VerticalNavigation/TreeView/TreeViewItem.js +39 -26
  433. package/dist/esm/VerticalNavigation/TreeView/TreeViewItem.js.map +1 -1
  434. package/dist/esm/VerticalNavigation/TreeView/TreeViewItem.styles.js +25 -13
  435. package/dist/esm/VerticalNavigation/TreeView/TreeViewItem.styles.js.map +1 -1
  436. package/dist/esm/VerticalNavigation/VerticalNavigation.js +1 -1
  437. package/dist/esm/VerticalNavigation/VerticalNavigation.js.map +1 -1
  438. package/dist/esm/hocs/withTooltip.js +1 -1
  439. package/dist/esm/hooks/useEmotionCache.js +1 -1
  440. package/dist/esm/hooks/useTheme.js +1 -1
  441. package/dist/esm/providers/Provider.js +1 -1
  442. package/dist/esm/providers/ThemeProvider.js +1 -1
  443. package/dist/esm/types/generic.js.map +1 -1
  444. package/dist/esm/utils/focusableElementFinder.js +1 -1
  445. package/dist/esm/utils/focusableElementFinder.js.map +1 -1
  446. package/dist/esm/utils/iconVariant.js +1 -1
  447. package/dist/types/index.d.ts +82 -231
  448. package/package.json +5 -5
  449. package/dist/cjs/VerticalNavigation/TreeView/IconWrapper/IconWrapper.styles.cjs +0 -20
  450. package/dist/esm/VerticalNavigation/TreeView/IconWrapper/IconWrapper.styles.js +0 -18
  451. package/dist/esm/VerticalNavigation/TreeView/IconWrapper/IconWrapper.styles.js.map +0 -1
@@ -1,6 +1,7 @@
1
- import { jsx } from "@emotion/react/jsx-runtime";
1
+ import { jsx } from "react/jsx-runtime";
2
2
  import { forwardRef, useRef, useState, useCallback, useMemo } from "react";
3
3
  import { useControlled } from "../../hooks/useControlled.js";
4
+ import { useDefaultProps } from "../../hooks/useDefaultProps.js";
4
5
  import { useForkRef } from "../../hooks/useForkRef.js";
5
6
  import { useUniqueId } from "../../hooks/useUniqueId.js";
6
7
  import { DescendantProvider } from "../../TreeView/internals/DescendantProvider.js";
@@ -16,517 +17,523 @@ function findNextFirstChar(firstChars, startIndex, char) {
16
17
  function noopSelection() {
17
18
  return false;
18
19
  }
19
- const HvVerticalNavigationTreeView = forwardRef(
20
- (props, ref) => {
21
- const {
22
- id: idProp,
23
- className,
24
- classes: classesProp,
25
- mode = "treeview",
26
- collapsible = false,
27
- expanded: expandedProp,
28
- defaultExpanded = [],
29
- onToggle,
30
- selectable = false,
31
- multiSelect: multiSelectProp = false,
32
- selected: selectedProp,
33
- defaultSelected = [],
34
- onChange,
35
- disabledItemsFocusable = false,
36
- onFocus,
37
- onBlur,
38
- onKeyDown,
39
- children,
40
- ...others
41
- } = props;
42
- const { classes, cx } = useClasses(classesProp);
43
- const treeviewMode = mode === "treeview";
44
- const multiSelect = selectable && multiSelectProp;
45
- const treeId = useUniqueId(idProp);
46
- const treeRef = useRef(null);
47
- const handleRef = useForkRef(treeRef, ref);
48
- const [expanded, setExpandedState] = useControlled(
49
- expandedProp,
50
- defaultExpanded
51
- );
52
- const [selected, setSelectedState] = useControlled(
53
- selectedProp,
54
- defaultSelected
55
- );
56
- const [focusedNodeId, setFocusedNodeId] = useState(null);
57
- const nodeMap = useRef({});
58
- const firstCharMap = useRef({});
59
- const isExpanded = useCallback(
60
- (id) => !collapsible || (Array.isArray(expanded) ? expanded.indexOf(id) !== -1 : false),
61
- [collapsible, expanded]
62
- );
63
- const isExpandable = useCallback(
64
- (id) => collapsible && nodeMap.current[id] && nodeMap.current[id].expandable,
65
- [collapsible]
66
- );
67
- const isSelected = useCallback(
68
- (id) => selectable && (Array.isArray(selected) ? selected.indexOf(id) !== -1 : selected === id),
69
- [selectable, selected]
70
- );
71
- const isSelectable = useCallback(
72
- (id) => selectable && nodeMap.current[id] && nodeMap.current[id].selectable,
73
- [selectable]
74
- );
75
- const isDisabled = useCallback((id) => {
76
- let node = nodeMap.current[id];
77
- if (!node) {
78
- return false;
79
- }
20
+ const HvVerticalNavigationTreeView = forwardRef((props, ref) => {
21
+ const {
22
+ id: idProp,
23
+ className,
24
+ classes: classesProp,
25
+ mode = "treeview",
26
+ collapsible = false,
27
+ expanded: expandedProp,
28
+ defaultExpanded = [],
29
+ onToggle,
30
+ selectable = false,
31
+ multiSelect: multiSelectProp = false,
32
+ selected: selectedProp,
33
+ defaultSelected = [],
34
+ onChange,
35
+ disabledItemsFocusable = false,
36
+ onFocus,
37
+ onBlur,
38
+ onKeyDown,
39
+ children,
40
+ ...others
41
+ } = useDefaultProps("HvVerticalNavigationTreeView", props);
42
+ const { classes, cx } = useClasses(classesProp);
43
+ const treeviewMode = mode === "treeview";
44
+ const multiSelect = selectable && multiSelectProp;
45
+ const treeId = useUniqueId(idProp);
46
+ const treeRef = useRef(null);
47
+ const handleRef = useForkRef(treeRef, ref);
48
+ const [expanded, setExpandedState] = useControlled(
49
+ expandedProp,
50
+ defaultExpanded
51
+ );
52
+ const [selected, setSelectedState] = useControlled(
53
+ selectedProp,
54
+ defaultSelected
55
+ );
56
+ const [focusedNodeId, setFocusedNodeId] = useState(null);
57
+ const nodeMap = useRef({});
58
+ const firstCharMap = useRef({});
59
+ const isExpanded = useCallback(
60
+ (id) => !collapsible || (Array.isArray(expanded) ? expanded.indexOf(id) !== -1 : false),
61
+ [collapsible, expanded]
62
+ );
63
+ const isExpandable = useCallback(
64
+ (id) => collapsible && nodeMap.current[id] && nodeMap.current[id].expandable,
65
+ [collapsible]
66
+ );
67
+ const isSelected = useCallback(
68
+ (id) => selectable && (Array.isArray(selected) ? selected.indexOf(id) !== -1 : selected === id),
69
+ [selectable, selected]
70
+ );
71
+ const isSelectable = useCallback(
72
+ (id) => selectable && nodeMap.current[id] && nodeMap.current[id].selectable,
73
+ [selectable]
74
+ );
75
+ const isDisabled = useCallback((id) => {
76
+ let node = nodeMap.current[id];
77
+ if (!node) {
78
+ return false;
79
+ }
80
+ if (node.disabled) {
81
+ return true;
82
+ }
83
+ while (node.parentId != null) {
84
+ node = nodeMap.current[node.parentId];
80
85
  if (node.disabled) {
81
86
  return true;
82
87
  }
83
- while (node.parentId != null) {
84
- node = nodeMap.current[node.parentId];
85
- if (node.disabled) {
86
- return true;
87
- }
88
+ }
89
+ return false;
90
+ }, []);
91
+ const isFocused = useCallback(
92
+ (id) => focusedNodeId === id,
93
+ [focusedNodeId]
94
+ );
95
+ const isChildSelected = useCallback(
96
+ // the second part of the condition is to ensure that the id we're
97
+ // looking at is actually of a child (ie, there's at least one "-")
98
+ (id) => {
99
+ return Array().concat(selected).some((s) => s.startsWith(id) && s.includes("-"));
100
+ },
101
+ [selected]
102
+ );
103
+ const getChildrenIds = (id) => Object.keys(nodeMap.current).map((key) => {
104
+ return nodeMap.current[key];
105
+ }).filter((node) => node.parentId === id).sort((a, b) => a.index - b.index).map((child) => child.id);
106
+ const getNavigableChildrenIds = useCallback(
107
+ (id) => {
108
+ let childrenIds = getChildrenIds(id);
109
+ if (!disabledItemsFocusable) {
110
+ childrenIds = childrenIds.filter((node) => !isDisabled(node));
88
111
  }
89
- return false;
90
- }, []);
91
- const isFocused = useCallback(
92
- (id) => focusedNodeId === id,
93
- [focusedNodeId]
94
- );
95
- const isChildSelected = useCallback(
96
- // the second part of the condition is to ensure that the id we're
97
- // looking at is actually of a child (ie, there's at least one "-")
98
- (id) => {
99
- return Array().concat(selected).some((s) => s.startsWith(id) && s.includes("-"));
100
- },
101
- [selected]
102
- );
103
- const getChildrenIds = (id) => Object.keys(nodeMap.current).map((key) => {
104
- return nodeMap.current[key];
105
- }).filter((node) => node.parentId === id).sort((a, b) => a.index - b.index).map((child) => child.id);
106
- const getNavigableChildrenIds = useCallback(
107
- (id) => {
108
- let childrenIds = getChildrenIds(id);
109
- if (!disabledItemsFocusable) {
110
- childrenIds = childrenIds.filter((node) => !isDisabled(node));
111
- }
112
- return childrenIds;
113
- },
114
- [disabledItemsFocusable, isDisabled]
115
- );
116
- const getNextNode = useCallback(
117
- (id) => {
118
- if (isExpanded(id) && getNavigableChildrenIds(id).length > 0) {
119
- return getNavigableChildrenIds(id)[0];
120
- }
121
- let node = nodeMap.current[id];
122
- while (node != null) {
123
- const siblings = getNavigableChildrenIds(node.parentId);
124
- const nextSibling = siblings[siblings.indexOf(node.id) + 1];
125
- if (nextSibling) {
126
- return nextSibling;
127
- }
128
- node = nodeMap.current[node.parentId];
112
+ return childrenIds;
113
+ },
114
+ [disabledItemsFocusable, isDisabled]
115
+ );
116
+ const getNextNode = useCallback(
117
+ (id) => {
118
+ if (isExpanded(id) && getNavigableChildrenIds(id).length > 0) {
119
+ return getNavigableChildrenIds(id)[0];
120
+ }
121
+ let node = nodeMap.current[id];
122
+ while (node != null) {
123
+ const siblings = getNavigableChildrenIds(node.parentId);
124
+ const nextSibling = siblings[siblings.indexOf(node.id) + 1];
125
+ if (nextSibling) {
126
+ return nextSibling;
129
127
  }
130
- return null;
131
- },
132
- [getNavigableChildrenIds, isExpanded]
133
- );
134
- const getPreviousNode = (id) => {
135
- const node = nodeMap.current[id];
136
- const siblings = getNavigableChildrenIds(node.parentId);
137
- const nodeIndex = siblings.indexOf(id);
138
- if (nodeIndex === 0) {
139
- return node.parentId;
128
+ node = nodeMap.current[node.parentId];
140
129
  }
141
- let currentNode = siblings[nodeIndex - 1];
142
- while (isExpanded(currentNode) && getNavigableChildrenIds(currentNode).length > 0) {
143
- currentNode = getNavigableChildrenIds(currentNode).pop();
130
+ return null;
131
+ },
132
+ [getNavigableChildrenIds, isExpanded]
133
+ );
134
+ const getPreviousNode = (id) => {
135
+ const node = nodeMap.current[id];
136
+ const siblings = getNavigableChildrenIds(node.parentId);
137
+ const nodeIndex = siblings.indexOf(id);
138
+ if (nodeIndex === 0) {
139
+ return node.parentId;
140
+ }
141
+ let currentNode = siblings[nodeIndex - 1];
142
+ while (isExpanded(currentNode) && getNavigableChildrenIds(currentNode).length > 0) {
143
+ currentNode = getNavigableChildrenIds(currentNode).pop();
144
+ }
145
+ return currentNode;
146
+ };
147
+ const getLastNode = () => {
148
+ let lastNode = getNavigableChildrenIds(null).pop();
149
+ while (isExpanded(lastNode)) {
150
+ lastNode = getNavigableChildrenIds(lastNode).pop();
151
+ }
152
+ return lastNode;
153
+ };
154
+ const getFirstNode = () => getNavigableChildrenIds(null)[0];
155
+ const getParent = (id) => nodeMap.current[id].parentId;
156
+ const findOrderInTremauxTree = useCallback(
157
+ (nodeAId, nodeBId) => {
158
+ if (nodeAId === nodeBId) {
159
+ return [nodeAId, nodeBId];
144
160
  }
145
- return currentNode;
146
- };
147
- const getLastNode = () => {
148
- let lastNode = getNavigableChildrenIds(null).pop();
149
- while (isExpanded(lastNode)) {
150
- lastNode = getNavigableChildrenIds(lastNode).pop();
161
+ const nodeA = nodeMap.current[nodeAId];
162
+ const nodeB = nodeMap.current[nodeBId];
163
+ if (nodeA.parentId === nodeB.id || nodeB.parentId === nodeA.id) {
164
+ return nodeB.parentId === nodeA.id ? [nodeA.id, nodeB.id] : [nodeB.id, nodeA.id];
151
165
  }
152
- return lastNode;
153
- };
154
- const getFirstNode = () => getNavigableChildrenIds(null)[0];
155
- const getParent = (id) => nodeMap.current[id].parentId;
156
- const findOrderInTremauxTree = useCallback(
157
- (nodeAId, nodeBId) => {
158
- if (nodeAId === nodeBId) {
159
- return [nodeAId, nodeBId];
160
- }
161
- const nodeA = nodeMap.current[nodeAId];
162
- const nodeB = nodeMap.current[nodeBId];
163
- if (nodeA.parentId === nodeB.id || nodeB.parentId === nodeA.id) {
164
- return nodeB.parentId === nodeA.id ? [nodeA.id, nodeB.id] : [nodeB.id, nodeA.id];
165
- }
166
- const aFamily = [nodeA.id];
167
- const bFamily = [nodeB.id];
168
- let aAncestor = nodeA.parentId;
169
- let bAncestor = nodeB.parentId;
170
- let aAncestorIsCommon = bFamily.indexOf(aAncestor) !== -1;
171
- let bAncestorIsCommon = aFamily.indexOf(bAncestor) !== -1;
172
- let continueA = true;
173
- let continueB = true;
174
- while (!bAncestorIsCommon && !aAncestorIsCommon) {
175
- if (continueA) {
176
- aFamily.push(aAncestor);
177
- aAncestorIsCommon = bFamily.indexOf(aAncestor) !== -1;
178
- continueA = aAncestor !== null;
179
- if (!aAncestorIsCommon && continueA) {
180
- aAncestor = nodeMap.current[aAncestor].parentId;
181
- }
182
- }
183
- if (continueB && !aAncestorIsCommon) {
184
- bFamily.push(bAncestor);
185
- bAncestorIsCommon = aFamily.indexOf(bAncestor) !== -1;
186
- continueB = bAncestor !== null;
187
- if (!bAncestorIsCommon && continueB) {
188
- bAncestor = nodeMap.current[bAncestor].parentId;
189
- }
166
+ const aFamily = [nodeA.id];
167
+ const bFamily = [nodeB.id];
168
+ let aAncestor = nodeA.parentId;
169
+ let bAncestor = nodeB.parentId;
170
+ let aAncestorIsCommon = bFamily.indexOf(aAncestor) !== -1;
171
+ let bAncestorIsCommon = aFamily.indexOf(bAncestor) !== -1;
172
+ let continueA = true;
173
+ let continueB = true;
174
+ while (!bAncestorIsCommon && !aAncestorIsCommon) {
175
+ if (continueA) {
176
+ aFamily.push(aAncestor);
177
+ aAncestorIsCommon = bFamily.indexOf(aAncestor) !== -1;
178
+ continueA = aAncestor !== null;
179
+ if (!aAncestorIsCommon && continueA) {
180
+ aAncestor = nodeMap.current[aAncestor].parentId;
190
181
  }
191
182
  }
192
- const commonAncestor = aAncestorIsCommon ? aAncestor : bAncestor;
193
- const ancestorFamily = getChildrenIds(commonAncestor);
194
- const aSide = aFamily[aFamily.indexOf(commonAncestor) - 1];
195
- const bSide = bFamily[bFamily.indexOf(commonAncestor) - 1];
196
- return ancestorFamily.indexOf(aSide) < ancestorFamily.indexOf(bSide) ? [nodeAId, nodeBId] : [nodeBId, nodeAId];
197
- },
198
- []
199
- );
200
- const getNodesInRange = useCallback(
201
- (nodeA, nodeB) => {
202
- if (nodeA && nodeB) {
203
- const [first, last] = findOrderInTremauxTree(nodeA, nodeB);
204
- const nodes = [first];
205
- let current = first;
206
- while (current !== last) {
207
- current = getNextNode(current);
208
- nodes.push(current);
183
+ if (continueB && !aAncestorIsCommon) {
184
+ bFamily.push(bAncestor);
185
+ bAncestorIsCommon = aFamily.indexOf(bAncestor) !== -1;
186
+ continueB = bAncestor !== null;
187
+ if (!bAncestorIsCommon && continueB) {
188
+ bAncestor = nodeMap.current[bAncestor].parentId;
209
189
  }
210
- return nodes;
211
- }
212
- return [];
213
- },
214
- [findOrderInTremauxTree, getNextNode]
215
- );
216
- const focus = (event, id) => {
217
- if (id) {
218
- setFocusedNodeId(id);
219
- if (nodeMap.current[id]?.onFocus) {
220
- nodeMap.current[id].onFocus(event);
221
190
  }
222
191
  }
223
- };
224
- const focusNextNode = (event, id) => focus(event, getNextNode(id));
225
- const focusPreviousNode = (event, id) => focus(event, getPreviousNode(id));
226
- const focusFirstNode = (event) => focus(event, getFirstNode());
227
- const focusLastNode = (event) => focus(event, getLastNode());
228
- const focusByFirstCharacter = (event, id, char) => {
229
- let start;
230
- let index;
231
- const lowercaseChar = char.toLowerCase();
232
- const firstCharIds = [];
233
- const firstChars = [];
234
- Object.keys(firstCharMap.current).forEach((nodeId) => {
235
- const firstChar = firstCharMap.current[nodeId];
236
- const map = nodeMap.current[nodeId];
237
- const visible = map.parentId ? isExpanded(map.parentId) : true;
238
- const shouldBeSkipped = disabledItemsFocusable ? false : isDisabled(nodeId);
239
- if (visible && !shouldBeSkipped) {
240
- firstCharIds.push(nodeId);
241
- firstChars.push(firstChar);
192
+ const commonAncestor = aAncestorIsCommon ? aAncestor : bAncestor;
193
+ const ancestorFamily = getChildrenIds(commonAncestor);
194
+ const aSide = aFamily[aFamily.indexOf(commonAncestor) - 1];
195
+ const bSide = bFamily[bFamily.indexOf(commonAncestor) - 1];
196
+ return ancestorFamily.indexOf(aSide) < ancestorFamily.indexOf(bSide) ? [nodeAId, nodeBId] : [nodeBId, nodeAId];
197
+ },
198
+ []
199
+ );
200
+ const getNodesInRange = useCallback(
201
+ (nodeA, nodeB) => {
202
+ if (nodeA && nodeB) {
203
+ const [first, last] = findOrderInTremauxTree(nodeA, nodeB);
204
+ const nodes = [first];
205
+ let current = first;
206
+ while (current !== last) {
207
+ current = getNextNode(current);
208
+ nodes.push(current);
242
209
  }
243
- });
244
- start = firstCharIds.indexOf(id) + 1;
245
- if (start >= firstCharIds.length) {
246
- start = 0;
210
+ return nodes;
247
211
  }
248
- index = findNextFirstChar(firstChars, start, lowercaseChar);
249
- if (index === -1) {
250
- index = findNextFirstChar(firstChars, 0, lowercaseChar);
212
+ return [];
213
+ },
214
+ [findOrderInTremauxTree, getNextNode]
215
+ );
216
+ const focus = (event, id) => {
217
+ if (id) {
218
+ setFocusedNodeId(id);
219
+ if (nodeMap.current[id]?.onFocus) {
220
+ nodeMap.current[id].onFocus(event);
251
221
  }
252
- if (index > -1) {
253
- focus(event, firstCharIds[index]);
222
+ }
223
+ };
224
+ const focusNextNode = (event, id) => focus(event, getNextNode(id));
225
+ const focusPreviousNode = (event, id) => focus(event, getPreviousNode(id));
226
+ const focusFirstNode = (event) => focus(event, getFirstNode());
227
+ const focusLastNode = (event) => focus(event, getLastNode());
228
+ const focusByFirstCharacter = (event, id, char) => {
229
+ let start;
230
+ let index;
231
+ const lowercaseChar = char.toLowerCase();
232
+ const firstCharIds = [];
233
+ const firstChars = [];
234
+ Object.keys(firstCharMap.current).forEach((nodeId) => {
235
+ const firstChar = firstCharMap.current[nodeId];
236
+ const map = nodeMap.current[nodeId];
237
+ const visible = map.parentId ? isExpanded(map.parentId) : true;
238
+ const shouldBeSkipped = disabledItemsFocusable ? false : isDisabled(nodeId);
239
+ if (visible && !shouldBeSkipped) {
240
+ firstCharIds.push(nodeId);
241
+ firstChars.push(firstChar);
254
242
  }
255
- };
256
- const toggleExpansion = useCallback(
257
- (event, value = focusedNodeId) => {
258
- if (!value)
259
- return;
260
- const newExpanded = expanded.includes(value) ? expanded.filter((id) => id !== value) : [value].concat(expanded);
261
- if (onToggle) {
262
- onToggle(event, newExpanded);
263
- }
264
- setExpandedState(newExpanded);
265
- },
266
- [expanded, focusedNodeId, onToggle, setExpandedState]
243
+ });
244
+ start = firstCharIds.indexOf(id) + 1;
245
+ if (start >= firstCharIds.length) {
246
+ start = 0;
247
+ }
248
+ index = findNextFirstChar(firstChars, start, lowercaseChar);
249
+ if (index === -1) {
250
+ index = findNextFirstChar(firstChars, 0, lowercaseChar);
251
+ }
252
+ if (index > -1) {
253
+ focus(event, firstCharIds[index]);
254
+ }
255
+ };
256
+ const toggleExpansion = useCallback(
257
+ (event, value = focusedNodeId) => {
258
+ if (!value)
259
+ return;
260
+ const newExpanded = expanded.includes(value) ? expanded.filter((id) => id !== value) : [value].concat(expanded);
261
+ onToggle?.(event, newExpanded);
262
+ setExpandedState(newExpanded);
263
+ },
264
+ [expanded, focusedNodeId, onToggle, setExpandedState]
265
+ );
266
+ const expandAllSiblings = (event, id) => {
267
+ const map = nodeMap.current[id];
268
+ const siblings = getChildrenIds(map.parentId);
269
+ const diff = siblings.filter(
270
+ (child) => isExpandable(child) && !isExpanded(child)
267
271
  );
268
- const expandAllSiblings = (event, id) => {
269
- const map = nodeMap.current[id];
270
- const siblings = getChildrenIds(map.parentId);
271
- const diff = siblings.filter(
272
- (child) => isExpandable(child) && !isExpanded(child)
273
- );
274
- const newExpanded = expanded.concat(diff);
275
- if (diff.length > 0) {
276
- setExpandedState(newExpanded);
277
- if (onToggle) {
278
- onToggle(event, newExpanded);
279
- }
272
+ const newExpanded = expanded.concat(diff);
273
+ if (diff.length > 0) {
274
+ setExpandedState(newExpanded);
275
+ onToggle?.(event, newExpanded);
276
+ }
277
+ };
278
+ const lastSelectedNode = useRef(null);
279
+ const lastSelectionWasRange = useRef(false);
280
+ const currentRangeSelection = useRef([]);
281
+ const isDivElement = (element) => {
282
+ return element.nodeType === 1;
283
+ };
284
+ const handleRangeArrowSelect = useCallback(
285
+ (event, nodes) => {
286
+ let base = Array().concat(selected);
287
+ const { start, next, current } = nodes;
288
+ if (!next || !current) {
289
+ return;
280
290
  }
281
- };
282
- const lastSelectedNode = useRef(null);
283
- const lastSelectionWasRange = useRef(false);
284
- const currentRangeSelection = useRef([]);
285
- const isDivElement = (element) => {
286
- return element.nodeType === 1;
287
- };
288
- const handleRangeArrowSelect = useCallback(
289
- (event, nodes) => {
290
- let base = Array().concat(selected);
291
- const { start, next, current } = nodes;
292
- if (!next || !current) {
293
- return;
294
- }
295
- if (isDivElement(current) && currentRangeSelection.current.indexOf(current) === -1) {
296
- currentRangeSelection.current = [];
297
- }
298
- if (lastSelectionWasRange.current) {
299
- if (isDivElement(next) && currentRangeSelection.current.indexOf(next) !== -1) {
300
- base = base.filter((id) => id === start || id !== current);
301
- currentRangeSelection.current = currentRangeSelection.current.filter(
302
- (id) => id === start || id !== current
303
- );
304
- } else {
305
- base.push(next);
306
- currentRangeSelection.current.push(next);
307
- }
291
+ if (isDivElement(current) && currentRangeSelection.current.indexOf(current) === -1) {
292
+ currentRangeSelection.current = [];
293
+ }
294
+ if (lastSelectionWasRange.current) {
295
+ if (isDivElement(next) && currentRangeSelection.current.indexOf(next) !== -1) {
296
+ base = base.filter((id) => id === start || id !== current);
297
+ currentRangeSelection.current = currentRangeSelection.current.filter(
298
+ (id) => id === start || id !== current
299
+ );
308
300
  } else {
309
301
  base.push(next);
310
- currentRangeSelection.current.push(current, next);
311
- }
312
- if (onChange) {
313
- onChange(
314
- event,
315
- base,
316
- base.map((id) => nodeMap.current[id]?.payload)
317
- );
318
- }
319
- setSelectedState(base);
320
- },
321
- [onChange, selected, setSelectedState]
322
- );
323
- const handleRangeSelect = useCallback(
324
- (event, nodes) => {
325
- let base = Array().concat(selected);
326
- const { start, end } = nodes;
327
- if (lastSelectionWasRange.current) {
328
- base = base.filter(
329
- (id) => !currentRangeSelection.current.includes(id)
330
- );
331
- }
332
- let range = getNodesInRange(start, end);
333
- range = range.filter((node) => !isDisabled(node));
334
- currentRangeSelection.current = range;
335
- let newSelected = base.concat(range);
336
- newSelected = newSelected.filter(
337
- (id, i) => newSelected.indexOf(id) === i
338
- );
339
- if (onChange) {
340
- onChange(
341
- event,
342
- newSelected,
343
- newSelected.map((id) => nodeMap.current[id]?.payload)
344
- );
345
- }
346
- setSelectedState(newSelected);
347
- },
348
- [getNodesInRange, isDisabled, onChange, selected, setSelectedState]
349
- );
350
- const handleMultipleSelect = useCallback(
351
- (event, value) => {
352
- const newSelected = selected.includes(value) ? selected.filter((id) => id !== value) : [value].concat(selected);
353
- if (onChange) {
354
- onChange(
355
- event,
356
- newSelected,
357
- newSelected.map((id) => nodeMap.current[id]?.payload)
358
- );
359
- }
360
- setSelectedState(newSelected);
361
- },
362
- [onChange, selected, setSelectedState]
363
- );
364
- const handleSingleSelect = useCallback(
365
- (event, value) => {
366
- const newSelected = multiSelect ? [value] : value;
367
- if (onChange) {
368
- const nodeValue = nodeMap.current[newSelected]?.payload;
369
- onChange(event, newSelected, multiSelect ? [nodeValue] : nodeValue);
370
- }
371
- setSelectedState(newSelected);
372
- },
373
- [multiSelect, onChange, setSelectedState]
374
- );
375
- const selectNode = useCallback(
376
- (event, id, multiple = false) => {
377
- if (id && isSelectable(id)) {
378
- if (multiple) {
379
- handleMultipleSelect(event, id);
380
- } else {
381
- handleSingleSelect(event, id);
382
- }
383
- lastSelectedNode.current = id;
384
- lastSelectionWasRange.current = false;
385
- currentRangeSelection.current = [];
386
- return true;
387
- }
388
- return false;
389
- },
390
- [handleMultipleSelect, handleSingleSelect, isSelectable]
391
- );
392
- const selectRange = useCallback(
393
- (event, nodes, stacked = false) => {
394
- const { start = lastSelectedNode.current, end, current } = nodes;
395
- if (stacked) {
396
- handleRangeArrowSelect(event, { start, next: end, current });
397
- } else if (start != null && end != null) {
398
- handleRangeSelect(event, { start, end });
302
+ currentRangeSelection.current.push(next);
399
303
  }
400
- lastSelectionWasRange.current = true;
401
- },
402
- [handleRangeArrowSelect, handleRangeSelect]
403
- );
404
- const rangeSelectToFirst = (event, id) => {
405
- if (!lastSelectedNode.current) {
406
- lastSelectedNode.current = id;
407
- }
408
- const start = lastSelectionWasRange.current ? lastSelectedNode.current : id;
409
- selectRange(event, {
410
- start,
411
- end: getFirstNode()
412
- });
413
- };
414
- const rangeSelectToLast = (event, id) => {
415
- if (!lastSelectedNode.current) {
416
- lastSelectedNode.current = id;
304
+ } else {
305
+ base.push(next);
306
+ currentRangeSelection.current.push(current, next);
417
307
  }
418
- const start = lastSelectionWasRange.current ? lastSelectedNode.current : id;
419
- selectRange(event, {
420
- start,
421
- end: getLastNode()
422
- });
423
- };
424
- const selectNextNode = (event, id) => {
425
- if (!isDisabled(getNextNode(id))) {
426
- selectRange(
427
- event,
428
- {
429
- end: getNextNode(id),
430
- current: id
431
- },
432
- true
308
+ onChange?.(
309
+ event,
310
+ base,
311
+ base.map((id) => nodeMap.current[id]?.payload)
312
+ );
313
+ setSelectedState(base);
314
+ },
315
+ [onChange, selected, setSelectedState]
316
+ );
317
+ const handleRangeSelect = useCallback(
318
+ (event, nodes) => {
319
+ let base = Array().concat(selected);
320
+ const { start, end } = nodes;
321
+ if (lastSelectionWasRange.current) {
322
+ base = base.filter(
323
+ (id) => !currentRangeSelection.current.includes(id)
433
324
  );
434
325
  }
435
- };
436
- const selectPreviousNode = (event, id) => {
437
- if (!isDisabled(getPreviousNode(id))) {
438
- selectRange(
439
- event,
440
- {
441
- end: getPreviousNode(id),
442
- current: id
443
- },
444
- true
445
- );
326
+ let range = getNodesInRange(start, end);
327
+ range = range.filter((node) => !isDisabled(node));
328
+ currentRangeSelection.current = range;
329
+ let newSelected = base.concat(range);
330
+ newSelected = newSelected.filter(
331
+ (id, i) => newSelected.indexOf(id) === i
332
+ );
333
+ onChange?.(
334
+ event,
335
+ newSelected,
336
+ newSelected.map((id) => nodeMap.current[id]?.payload)
337
+ );
338
+ setSelectedState(newSelected);
339
+ },
340
+ [getNodesInRange, isDisabled, onChange, selected, setSelectedState]
341
+ );
342
+ const handleMultipleSelect = useCallback(
343
+ (event, value) => {
344
+ const newSelected = selected.includes(value) ? selected.filter((id) => id !== value) : [value].concat(selected);
345
+ onChange?.(
346
+ event,
347
+ newSelected,
348
+ newSelected.map((id) => nodeMap.current[id]?.payload)
349
+ );
350
+ setSelectedState(newSelected);
351
+ },
352
+ [onChange, selected, setSelectedState]
353
+ );
354
+ const handleSingleSelect = useCallback(
355
+ (event, value) => {
356
+ const newSelected = multiSelect ? [value] : value;
357
+ if (onChange) {
358
+ const nodeValue = nodeMap.current[newSelected]?.payload;
359
+ onChange(event, newSelected, multiSelect ? [nodeValue] : nodeValue);
446
360
  }
447
- };
448
- const selectAllNodes = (event) => {
449
- selectRange(event, { start: getFirstNode(), end: getLastNode() });
450
- };
451
- const registerNode = useCallback((node) => {
452
- const {
453
- id,
454
- index,
455
- parentId,
456
- expandable,
457
- idAttribute,
458
- disabled,
459
- selectable: nodeSelectable,
460
- onFocus: nodeOnFocus,
461
- payload
462
- } = node;
463
- nodeMap.current[id] = {
464
- id,
465
- index,
466
- parentId,
467
- expandable,
468
- idAttribute,
469
- disabled,
470
- selectable: nodeSelectable,
471
- onFocus: nodeOnFocus,
472
- payload
473
- };
474
- }, []);
475
- const unregisterNode = useCallback((id) => {
476
- const newMap = { ...nodeMap.current };
477
- delete newMap[id];
478
- nodeMap.current = newMap;
479
- setFocusedNodeId((oldFocusedNodeId) => {
480
- if (oldFocusedNodeId === id && treeRef.current && treeRef.current === (treeRef.current.ownerDocument || document).activeElement) {
481
- return getChildrenIds(null)[0];
482
- }
483
- return oldFocusedNodeId;
484
- });
485
- }, []);
486
- const mapFirstChar = useCallback((id, firstChar) => {
487
- firstCharMap.current[id] = firstChar;
488
- }, []);
489
- const unMapFirstChar = useCallback((id) => {
490
- const newMap = { ...firstCharMap.current };
491
- delete newMap[id];
492
- firstCharMap.current = newMap;
493
- }, []);
494
- const handleNextArrow = (event) => {
495
- if (!focusedNodeId)
496
- return false;
497
- if (isExpandable(focusedNodeId)) {
498
- if (isExpanded(focusedNodeId)) {
499
- focusNextNode(event, focusedNodeId);
500
- } else if (!isDisabled(focusedNodeId)) {
501
- toggleExpansion(event);
361
+ setSelectedState(newSelected);
362
+ },
363
+ [multiSelect, onChange, setSelectedState]
364
+ );
365
+ const selectNode = useCallback(
366
+ (event, id, multiple = false) => {
367
+ if (id && isSelectable(id)) {
368
+ if (multiple) {
369
+ handleMultipleSelect(event, id);
370
+ } else {
371
+ handleSingleSelect(event, id);
502
372
  }
503
- }
504
- return true;
505
- };
506
- const handlePreviousArrow = (event) => {
507
- if (!focusedNodeId)
508
- return false;
509
- if (isExpanded(focusedNodeId) && !isDisabled(focusedNodeId)) {
510
- toggleExpansion(event, focusedNodeId);
511
- return true;
512
- }
513
- const parent = getParent(focusedNodeId);
514
- if (parent) {
515
- focus(event, parent);
373
+ lastSelectedNode.current = id;
374
+ lastSelectionWasRange.current = false;
375
+ currentRangeSelection.current = [];
516
376
  return true;
517
377
  }
518
378
  return false;
379
+ },
380
+ [handleMultipleSelect, handleSingleSelect, isSelectable]
381
+ );
382
+ const selectRange = useCallback(
383
+ (event, nodes, stacked = false) => {
384
+ const { start = lastSelectedNode.current, end, current } = nodes;
385
+ if (stacked) {
386
+ handleRangeArrowSelect(event, { start, next: end, current });
387
+ } else if (start != null && end != null) {
388
+ handleRangeSelect(event, { start, end });
389
+ }
390
+ lastSelectionWasRange.current = true;
391
+ },
392
+ [handleRangeArrowSelect, handleRangeSelect]
393
+ );
394
+ const rangeSelectToFirst = (event, id) => {
395
+ if (!lastSelectedNode.current) {
396
+ lastSelectedNode.current = id;
397
+ }
398
+ const start = lastSelectionWasRange.current ? lastSelectedNode.current : id;
399
+ selectRange(event, {
400
+ start,
401
+ end: getFirstNode()
402
+ });
403
+ };
404
+ const rangeSelectToLast = (event, id) => {
405
+ if (!lastSelectedNode.current) {
406
+ lastSelectedNode.current = id;
407
+ }
408
+ const start = lastSelectionWasRange.current ? lastSelectedNode.current : id;
409
+ selectRange(event, {
410
+ start,
411
+ end: getLastNode()
412
+ });
413
+ };
414
+ const selectNextNode = (event, id) => {
415
+ if (!isDisabled(getNextNode(id))) {
416
+ selectRange(
417
+ event,
418
+ {
419
+ end: getNextNode(id),
420
+ current: id
421
+ },
422
+ true
423
+ );
424
+ }
425
+ };
426
+ const selectPreviousNode = (event, id) => {
427
+ if (!isDisabled(getPreviousNode(id))) {
428
+ selectRange(
429
+ event,
430
+ {
431
+ end: getPreviousNode(id),
432
+ current: id
433
+ },
434
+ true
435
+ );
436
+ }
437
+ };
438
+ const selectAllNodes = (event) => {
439
+ selectRange(event, { start: getFirstNode(), end: getLastNode() });
440
+ };
441
+ const registerNode = useCallback((node) => {
442
+ const {
443
+ id,
444
+ index,
445
+ parentId,
446
+ expandable,
447
+ idAttribute,
448
+ disabled,
449
+ selectable: nodeSelectable,
450
+ onFocus: nodeOnFocus,
451
+ payload
452
+ } = node;
453
+ nodeMap.current[id] = {
454
+ id,
455
+ index,
456
+ parentId,
457
+ expandable,
458
+ idAttribute,
459
+ disabled,
460
+ selectable: nodeSelectable,
461
+ onFocus: nodeOnFocus,
462
+ payload
519
463
  };
520
- const handleKeyDown = (event) => {
521
- let flag = false;
522
- const { key } = event;
523
- if (event.altKey || event.currentTarget !== event.target || !focusedNodeId) {
524
- return;
464
+ }, []);
465
+ const unregisterNode = useCallback((id) => {
466
+ const newMap = { ...nodeMap.current };
467
+ delete newMap[id];
468
+ nodeMap.current = newMap;
469
+ setFocusedNodeId((oldFocusedNodeId) => {
470
+ if (oldFocusedNodeId === id && treeRef.current && treeRef.current === (treeRef.current.ownerDocument || document).activeElement) {
471
+ return getChildrenIds(null)[0];
525
472
  }
526
- const ctrlPressed = event.ctrlKey || event.metaKey;
527
- switch (key) {
528
- case " ":
529
- if (isSelectable(focusedNodeId) && !isDisabled(focusedNodeId)) {
473
+ return oldFocusedNodeId;
474
+ });
475
+ }, []);
476
+ const mapFirstChar = useCallback((id, firstChar) => {
477
+ firstCharMap.current[id] = firstChar;
478
+ }, []);
479
+ const unMapFirstChar = useCallback((id) => {
480
+ const newMap = { ...firstCharMap.current };
481
+ delete newMap[id];
482
+ firstCharMap.current = newMap;
483
+ }, []);
484
+ const handleNextArrow = (event) => {
485
+ if (!focusedNodeId)
486
+ return false;
487
+ if (isExpandable(focusedNodeId)) {
488
+ if (isExpanded(focusedNodeId)) {
489
+ focusNextNode(event, focusedNodeId);
490
+ } else if (!isDisabled(focusedNodeId)) {
491
+ toggleExpansion(event);
492
+ }
493
+ }
494
+ return true;
495
+ };
496
+ const handlePreviousArrow = (event) => {
497
+ if (!focusedNodeId)
498
+ return false;
499
+ if (isExpanded(focusedNodeId) && !isDisabled(focusedNodeId)) {
500
+ toggleExpansion(event, focusedNodeId);
501
+ return true;
502
+ }
503
+ const parent = getParent(focusedNodeId);
504
+ if (parent) {
505
+ focus(event, parent);
506
+ return true;
507
+ }
508
+ return false;
509
+ };
510
+ const handleKeyDown = (event) => {
511
+ let flag = false;
512
+ const { key } = event;
513
+ if (event.altKey || event.currentTarget !== event.target || !focusedNodeId) {
514
+ return;
515
+ }
516
+ const ctrlPressed = event.ctrlKey || event.metaKey;
517
+ switch (key) {
518
+ case " ":
519
+ if (isSelectable(focusedNodeId) && !isDisabled(focusedNodeId)) {
520
+ if (multiSelect && event.shiftKey) {
521
+ selectRange(event, { end: focusedNodeId });
522
+ flag = true;
523
+ } else if (multiSelect) {
524
+ flag = selectNode(event, focusedNodeId, true);
525
+ } else {
526
+ flag = selectNode(event, focusedNodeId);
527
+ }
528
+ }
529
+ event.stopPropagation();
530
+ break;
531
+ case "Enter":
532
+ if (!isDisabled(focusedNodeId)) {
533
+ if (isExpandable(focusedNodeId)) {
534
+ toggleExpansion(event);
535
+ flag = true;
536
+ } else if (isSelectable(focusedNodeId)) {
530
537
  if (multiSelect && event.shiftKey) {
531
538
  selectRange(event, { end: focusedNodeId });
532
539
  flag = true;
@@ -536,160 +543,136 @@ const HvVerticalNavigationTreeView = forwardRef(
536
543
  flag = selectNode(event, focusedNodeId);
537
544
  }
538
545
  }
539
- event.stopPropagation();
540
- break;
541
- case "Enter":
542
- if (!isDisabled(focusedNodeId)) {
543
- if (isExpandable(focusedNodeId)) {
544
- toggleExpansion(event);
545
- flag = true;
546
- } else if (isSelectable(focusedNodeId)) {
547
- if (multiSelect && event.shiftKey) {
548
- selectRange(event, { end: focusedNodeId });
549
- flag = true;
550
- } else if (multiSelect) {
551
- flag = selectNode(event, focusedNodeId, true);
552
- } else {
553
- flag = selectNode(event, focusedNodeId);
554
- }
555
- }
556
- }
557
- event.stopPropagation();
558
- break;
559
- case "ArrowDown":
560
- if (multiSelect && event.shiftKey) {
561
- selectNextNode(event, focusedNodeId);
562
- }
563
- focusNextNode(event, focusedNodeId);
564
- flag = true;
565
- break;
566
- case "ArrowUp":
567
- if (multiSelect && event.shiftKey) {
568
- selectPreviousNode(event, focusedNodeId);
569
- }
570
- focusPreviousNode(event, focusedNodeId);
546
+ }
547
+ event.stopPropagation();
548
+ break;
549
+ case "ArrowDown":
550
+ if (multiSelect && event.shiftKey) {
551
+ selectNextNode(event, focusedNodeId);
552
+ }
553
+ focusNextNode(event, focusedNodeId);
554
+ flag = true;
555
+ break;
556
+ case "ArrowUp":
557
+ if (multiSelect && event.shiftKey) {
558
+ selectPreviousNode(event, focusedNodeId);
559
+ }
560
+ focusPreviousNode(event, focusedNodeId);
561
+ flag = true;
562
+ break;
563
+ case "ArrowRight":
564
+ flag = handleNextArrow(event);
565
+ break;
566
+ case "ArrowLeft":
567
+ flag = handlePreviousArrow(event);
568
+ break;
569
+ case "Home":
570
+ if (multiSelect && ctrlPressed && event.shiftKey && !isDisabled(focusedNodeId)) {
571
+ rangeSelectToFirst(event, focusedNodeId);
572
+ }
573
+ focusFirstNode(event);
574
+ flag = true;
575
+ break;
576
+ case "End":
577
+ if (multiSelect && ctrlPressed && event.shiftKey && !isDisabled(focusedNodeId)) {
578
+ rangeSelectToLast(event, focusedNodeId);
579
+ }
580
+ focusLastNode(event);
581
+ flag = true;
582
+ break;
583
+ default:
584
+ if (key === "*") {
585
+ expandAllSiblings(event, focusedNodeId);
571
586
  flag = true;
572
- break;
573
- case "ArrowRight":
574
- flag = handleNextArrow(event);
575
- break;
576
- case "ArrowLeft":
577
- flag = handlePreviousArrow(event);
578
- break;
579
- case "Home":
580
- if (multiSelect && ctrlPressed && event.shiftKey && !isDisabled(focusedNodeId)) {
581
- rangeSelectToFirst(event, focusedNodeId);
582
- }
583
- focusFirstNode(event);
587
+ } else if (multiSelect && ctrlPressed && key.toLowerCase() === "a") {
588
+ selectAllNodes(event);
584
589
  flag = true;
585
- break;
586
- case "End":
587
- if (multiSelect && ctrlPressed && event.shiftKey && !isDisabled(focusedNodeId)) {
588
- rangeSelectToLast(event, focusedNodeId);
589
- }
590
- focusLastNode(event);
590
+ } else if (!ctrlPressed && !event.shiftKey && isPrintableCharacter(key)) {
591
+ focusByFirstCharacter(event, focusedNodeId, key);
591
592
  flag = true;
592
- break;
593
- default:
594
- if (key === "*") {
595
- expandAllSiblings(event, focusedNodeId);
596
- flag = true;
597
- } else if (multiSelect && ctrlPressed && key.toLowerCase() === "a") {
598
- selectAllNodes(event);
599
- flag = true;
600
- } else if (!ctrlPressed && !event.shiftKey && isPrintableCharacter(key)) {
601
- focusByFirstCharacter(event, focusedNodeId, key);
602
- flag = true;
603
- }
604
- }
605
- if (flag) {
606
- event.preventDefault();
607
- event.stopPropagation();
608
- }
609
- if (onKeyDown) {
610
- onKeyDown(event);
611
- }
612
- };
613
- const handleFocus = (event) => {
614
- if (event.target === event.currentTarget) {
615
- const firstSelected = Array.isArray(selected) ? selected[0] : selected;
616
- focus(event, firstSelected || getNavigableChildrenIds(null)[0]);
617
- }
618
- if (onFocus) {
619
- onFocus(event);
620
- }
621
- };
622
- const handleBlur = (event) => {
623
- setFocusedNodeId(null);
624
- if (onBlur) {
625
- onBlur(event);
626
- }
627
- };
628
- const activeDescendant = focusedNodeId && nodeMap.current[focusedNodeId] ? nodeMap.current[focusedNodeId].idAttribute : null;
629
- const treeControlContext = useMemo(
630
- () => ({
631
- treeId,
632
- mode,
633
- collapsible,
634
- toggleExpansion,
635
- multiSelect,
636
- selectNode: selectable ? selectNode : noopSelection,
637
- selectRange: selectable ? selectRange : noopSelection,
638
- disabledItemsFocusable,
639
- registerNode,
640
- unregisterNode,
641
- mapFirstChar,
642
- unMapFirstChar,
643
- focus
644
- }),
645
- [
646
- registerNode,
647
- unregisterNode,
648
- mapFirstChar,
649
- unMapFirstChar,
650
- toggleExpansion,
651
- selectable,
652
- selectNode,
653
- selectRange,
654
- mode,
655
- collapsible,
656
- multiSelect,
657
- disabledItemsFocusable,
658
- treeId
659
- ]
660
- );
661
- const treeStateContext = useMemo(
662
- () => ({
663
- isExpanded,
664
- isSelected,
665
- isFocused,
666
- isDisabled,
667
- isChildSelected
668
- }),
669
- [isDisabled, isExpanded, isFocused, isSelected, isChildSelected]
670
- );
671
- return /* @__PURE__ */ jsx(TreeViewControlContext.Provider, { value: treeControlContext, children: /* @__PURE__ */ jsx(TreeViewStateContext.Provider, { value: treeStateContext, children: /* @__PURE__ */ jsx(DescendantProvider, { children: /* @__PURE__ */ jsx(
672
- "ul",
673
- {
674
- ref: handleRef,
675
- id: idProp,
676
- className: cx(classes.root, className),
677
- ...treeviewMode && {
678
- id: treeId,
679
- role: "tree",
680
- "aria-multiselectable": multiSelect,
681
- "aria-activedescendant": activeDescendant,
682
- tabIndex: 0,
683
- onFocus: handleFocus,
684
- onBlur: handleBlur,
685
- onKeyDown: handleKeyDown
686
- },
687
- ...others,
688
- children
689
- }
690
- ) }) }) });
691
- }
692
- );
593
+ }
594
+ }
595
+ if (flag) {
596
+ event.preventDefault();
597
+ event.stopPropagation();
598
+ }
599
+ onKeyDown?.(event);
600
+ };
601
+ const handleFocus = (event) => {
602
+ if (event.target === event.currentTarget) {
603
+ const firstSelected = Array.isArray(selected) ? selected[0] : selected;
604
+ focus(event, firstSelected || getNavigableChildrenIds(null)[0]);
605
+ }
606
+ onFocus?.(event);
607
+ };
608
+ const handleBlur = (event) => {
609
+ setFocusedNodeId(null);
610
+ onBlur?.(event);
611
+ };
612
+ const activeDescendant = focusedNodeId && nodeMap.current[focusedNodeId] ? nodeMap.current[focusedNodeId].idAttribute : null;
613
+ const treeControlContext = useMemo(
614
+ () => ({
615
+ treeId,
616
+ mode,
617
+ collapsible,
618
+ toggleExpansion,
619
+ multiSelect,
620
+ selectNode: selectable ? selectNode : noopSelection,
621
+ selectRange: selectable ? selectRange : noopSelection,
622
+ disabledItemsFocusable,
623
+ registerNode,
624
+ unregisterNode,
625
+ mapFirstChar,
626
+ unMapFirstChar,
627
+ focus
628
+ }),
629
+ [
630
+ registerNode,
631
+ unregisterNode,
632
+ mapFirstChar,
633
+ unMapFirstChar,
634
+ toggleExpansion,
635
+ selectable,
636
+ selectNode,
637
+ selectRange,
638
+ mode,
639
+ collapsible,
640
+ multiSelect,
641
+ disabledItemsFocusable,
642
+ treeId
643
+ ]
644
+ );
645
+ const treeStateContext = useMemo(
646
+ () => ({
647
+ isExpanded,
648
+ isSelected,
649
+ isFocused,
650
+ isDisabled,
651
+ isChildSelected
652
+ }),
653
+ [isDisabled, isExpanded, isFocused, isSelected, isChildSelected]
654
+ );
655
+ return /* @__PURE__ */ jsx(TreeViewControlContext.Provider, { value: treeControlContext, children: /* @__PURE__ */ jsx(TreeViewStateContext.Provider, { value: treeStateContext, children: /* @__PURE__ */ jsx(DescendantProvider, { children: /* @__PURE__ */ jsx(
656
+ "ul",
657
+ {
658
+ ref: handleRef,
659
+ id: idProp,
660
+ className: cx(classes.root, className),
661
+ ...treeviewMode && {
662
+ id: treeId,
663
+ role: "tree",
664
+ "aria-multiselectable": multiSelect,
665
+ "aria-activedescendant": activeDescendant,
666
+ tabIndex: 0,
667
+ onFocus: handleFocus,
668
+ onBlur: handleBlur,
669
+ onKeyDown: handleKeyDown
670
+ },
671
+ ...others,
672
+ children
673
+ }
674
+ ) }) }) });
675
+ });
693
676
  export {
694
677
  HvVerticalNavigationTreeView,
695
678
  staticClasses as treeViewClasses