@hitachivantara/uikit-react-core 5.66.10 → 5.66.11

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