@hitachivantara/uikit-react-core 5.32.0 → 5.34.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/Accordion/Accordion.cjs +4 -5
- package/dist/cjs/components/Accordion/Accordion.cjs.map +1 -1
- package/dist/cjs/components/ActionsGeneric/ActionsGeneric.cjs +5 -5
- package/dist/cjs/components/ActionsGeneric/ActionsGeneric.cjs.map +1 -1
- package/dist/cjs/components/AppSwitcher/Action/Action.cjs +2 -2
- package/dist/cjs/components/AppSwitcher/Action/Action.cjs.map +1 -1
- package/dist/cjs/components/AppSwitcher/AppSwitcher.cjs +2 -2
- package/dist/cjs/components/AppSwitcher/AppSwitcher.cjs.map +1 -1
- package/dist/cjs/components/Avatar/Avatar.cjs +1 -1
- package/dist/cjs/components/Avatar/Avatar.cjs.map +1 -1
- package/dist/cjs/components/Banner/BannerContent/BannerContent.cjs +1 -1
- package/dist/cjs/components/Banner/BannerContent/BannerContent.cjs.map +1 -1
- package/dist/cjs/components/BaseCheckBox/BaseCheckBox.cjs +3 -3
- package/dist/cjs/components/BaseCheckBox/BaseCheckBox.cjs.map +1 -1
- package/dist/cjs/components/BaseDropdown/BaseDropdown.cjs +15 -18
- package/dist/cjs/components/BaseDropdown/BaseDropdown.cjs.map +1 -1
- package/dist/cjs/components/BaseDropdown/BaseDropdown.styles.cjs +6 -6
- package/dist/cjs/components/BaseDropdown/BaseDropdown.styles.cjs.map +1 -1
- package/dist/cjs/components/BaseInput/BaseInput.cjs +1 -1
- package/dist/cjs/components/BaseInput/BaseInput.cjs.map +1 -1
- package/dist/cjs/components/BaseInput/validations.cjs +12 -13
- package/dist/cjs/components/BaseInput/validations.cjs.map +1 -1
- package/dist/cjs/components/BaseRadio/BaseRadio.cjs +3 -3
- package/dist/cjs/components/BaseRadio/BaseRadio.cjs.map +1 -1
- package/dist/cjs/components/BaseSwitch/BaseSwitch.cjs +3 -3
- package/dist/cjs/components/BaseSwitch/BaseSwitch.cjs.map +1 -1
- package/dist/cjs/components/Box/Box.cjs +1 -1
- package/dist/cjs/components/Box/Box.cjs.map +1 -1
- package/dist/cjs/components/BreadCrumb/BreadCrumb.cjs +1 -4
- package/dist/cjs/components/BreadCrumb/BreadCrumb.cjs.map +1 -1
- package/dist/cjs/components/BreadCrumb/Page/Page.cjs +1 -1
- package/dist/cjs/components/BreadCrumb/Page/Page.cjs.map +1 -1
- package/dist/cjs/components/BreadCrumb/utils.cjs +1 -1
- package/dist/cjs/components/BreadCrumb/utils.cjs.map +1 -1
- package/dist/cjs/components/BulkActions/BulkActions.cjs +4 -4
- package/dist/cjs/components/BulkActions/BulkActions.cjs.map +1 -1
- package/dist/cjs/components/BulkActions/BulkActions.styles.cjs.map +1 -1
- package/dist/cjs/components/Button/Button.cjs +1 -1
- package/dist/cjs/components/Button/Button.cjs.map +1 -1
- package/dist/cjs/components/Calendar/Calendar.cjs +3 -3
- package/dist/cjs/components/Calendar/Calendar.cjs.map +1 -1
- package/dist/cjs/components/Calendar/Calendar.styles.cjs +1 -1
- package/dist/cjs/components/Calendar/Calendar.styles.cjs.map +1 -1
- package/dist/cjs/components/Calendar/CalendarHeader/CalendarHeader.cjs +6 -9
- package/dist/cjs/components/Calendar/CalendarHeader/CalendarHeader.cjs.map +1 -1
- package/dist/cjs/components/Calendar/CalendarHeader/CalendarHeader.styles.cjs +1 -1
- package/dist/cjs/components/Calendar/CalendarHeader/CalendarHeader.styles.cjs.map +1 -1
- package/dist/cjs/components/Calendar/CalendarNavigation/ComposedNavigation/ComposedNavigation.cjs +4 -4
- package/dist/cjs/components/Calendar/CalendarNavigation/ComposedNavigation/ComposedNavigation.cjs.map +1 -1
- package/dist/cjs/components/Calendar/CalendarNavigation/ComposedNavigation/ComposedNavigation.styles.cjs +1 -1
- package/dist/cjs/components/Calendar/CalendarNavigation/ComposedNavigation/ComposedNavigation.styles.cjs.map +1 -1
- package/dist/cjs/components/Calendar/CalendarNavigation/MonthSelector/MonthSelector.cjs +2 -2
- package/dist/cjs/components/Calendar/CalendarNavigation/MonthSelector/MonthSelector.cjs.map +1 -1
- package/dist/cjs/components/Calendar/CalendarNavigation/Navigation/Navigation.cjs +8 -28
- package/dist/cjs/components/Calendar/CalendarNavigation/Navigation/Navigation.cjs.map +1 -1
- package/dist/cjs/components/Calendar/CalendarNavigation/Navigation/Navigation.styles.cjs +9 -39
- package/dist/cjs/components/Calendar/CalendarNavigation/Navigation/Navigation.styles.cjs.map +1 -1
- package/dist/cjs/components/Calendar/SingleCalendar/CalendarCell.cjs +3 -6
- package/dist/cjs/components/Calendar/SingleCalendar/CalendarCell.cjs.map +1 -1
- package/dist/cjs/components/Calendar/SingleCalendar/SingleCalendar.cjs +15 -19
- package/dist/cjs/components/Calendar/SingleCalendar/SingleCalendar.cjs.map +1 -1
- package/dist/cjs/components/Calendar/SingleCalendar/SingleCalendar.styles.cjs +9 -1
- package/dist/cjs/components/Calendar/SingleCalendar/SingleCalendar.styles.cjs.map +1 -1
- package/dist/cjs/components/Calendar/utils.cjs +8 -13
- package/dist/cjs/components/Calendar/utils.cjs.map +1 -1
- package/dist/cjs/components/Card/Card.cjs.map +1 -1
- package/dist/cjs/components/Card/Header/Header.cjs.map +1 -1
- package/dist/cjs/components/Card/Media/Media.cjs.map +1 -1
- package/dist/cjs/components/Carousel/Carousel.cjs +10 -11
- package/dist/cjs/components/Carousel/Carousel.cjs.map +1 -1
- package/dist/cjs/components/Carousel/CarouselControls.cjs +1 -1
- package/dist/cjs/components/Carousel/CarouselControls.cjs.map +1 -1
- package/dist/cjs/components/Carousel/CarouselThumbnails.cjs +1 -1
- package/dist/cjs/components/Carousel/CarouselThumbnails.cjs.map +1 -1
- package/dist/cjs/components/CheckBox/CheckBox.cjs +3 -3
- package/dist/cjs/components/CheckBox/CheckBox.cjs.map +1 -1
- package/dist/cjs/components/CheckBoxGroup/CheckBoxGroup.cjs +11 -17
- package/dist/cjs/components/CheckBoxGroup/CheckBoxGroup.cjs.map +1 -1
- package/dist/cjs/components/ColorPicker/ColorPicker.cjs +10 -10
- package/dist/cjs/components/ColorPicker/ColorPicker.cjs.map +1 -1
- package/dist/cjs/components/ColorPicker/Fields/Fields.cjs +16 -16
- package/dist/cjs/components/ColorPicker/Fields/Fields.cjs.map +1 -1
- package/dist/cjs/components/ColorPicker/Picker/Picker.cjs +3 -3
- package/dist/cjs/components/ColorPicker/Picker/Picker.cjs.map +1 -1
- package/dist/cjs/components/ColorPicker/PresetColors/PresetColors.cjs.map +1 -1
- package/dist/cjs/components/ColorPicker/SavedColors/SavedColors.cjs.map +1 -1
- package/dist/cjs/components/Controls/Controls.cjs +7 -13
- package/dist/cjs/components/Controls/Controls.cjs.map +1 -1
- package/dist/cjs/components/Controls/LeftControl/LeftControl.cjs +2 -2
- package/dist/cjs/components/Controls/LeftControl/LeftControl.cjs.map +1 -1
- package/dist/cjs/components/Controls/RightControl/RightControl.cjs +3 -3
- package/dist/cjs/components/Controls/RightControl/RightControl.cjs.map +1 -1
- package/dist/cjs/components/DatePicker/DatePicker.cjs +10 -11
- package/dist/cjs/components/DatePicker/DatePicker.cjs.map +1 -1
- package/dist/cjs/components/DatePicker/utils.cjs +1 -1
- package/dist/cjs/components/DatePicker/utils.cjs.map +1 -1
- package/dist/cjs/components/Dialog/Actions/Actions.cjs.map +1 -1
- package/dist/cjs/components/Dialog/Content/Content.cjs.map +1 -1
- package/dist/cjs/components/Dialog/Dialog.cjs +5 -5
- package/dist/cjs/components/Dialog/Dialog.cjs.map +1 -1
- package/dist/cjs/components/Dialog/Title/Title.cjs.map +1 -1
- package/dist/cjs/components/DotPagination/DotPagination.cjs +4 -4
- package/dist/cjs/components/DotPagination/DotPagination.cjs.map +1 -1
- package/dist/cjs/components/Drawer/Drawer.cjs +1 -1
- package/dist/cjs/components/Drawer/Drawer.cjs.map +1 -1
- package/dist/cjs/components/DropDownMenu/DropDownMenu.cjs +5 -6
- package/dist/cjs/components/DropDownMenu/DropDownMenu.cjs.map +1 -1
- package/dist/cjs/components/DropDownMenu/DropDownMenu.styles.cjs +1 -1
- package/dist/cjs/components/DropDownMenu/DropDownMenu.styles.cjs.map +1 -1
- package/dist/cjs/components/Dropdown/Dropdown.cjs +10 -12
- package/dist/cjs/components/Dropdown/Dropdown.cjs.map +1 -1
- package/dist/cjs/components/Dropdown/List/List.cjs +10 -13
- package/dist/cjs/components/Dropdown/List/List.cjs.map +1 -1
- package/dist/cjs/components/FileUploader/DropZone/DropZone.cjs +13 -14
- package/dist/cjs/components/FileUploader/DropZone/DropZone.cjs.map +1 -1
- package/dist/cjs/components/FileUploader/DropZone/DropZone.styles.cjs +1 -1
- package/dist/cjs/components/FileUploader/DropZone/DropZone.styles.cjs.map +1 -1
- package/dist/cjs/components/FileUploader/File/File.cjs +6 -6
- package/dist/cjs/components/FileUploader/File/File.cjs.map +1 -1
- package/dist/cjs/components/FileUploader/File/File.styles.cjs +1 -1
- package/dist/cjs/components/FileUploader/File/File.styles.cjs.map +1 -1
- package/dist/cjs/components/FileUploader/FileList/FileList.cjs +1 -1
- package/dist/cjs/components/FileUploader/FileList/FileList.cjs.map +1 -1
- package/dist/cjs/components/FileUploader/FileList/FileList.styles.cjs +1 -1
- package/dist/cjs/components/FileUploader/FileList/FileList.styles.cjs.map +1 -1
- package/dist/cjs/components/FileUploader/FileUploader.cjs +1 -1
- package/dist/cjs/components/FileUploader/FileUploader.cjs.map +1 -1
- package/dist/cjs/components/FileUploader/Preview/Preview.cjs +1 -1
- package/dist/cjs/components/FileUploader/Preview/Preview.cjs.map +1 -1
- package/dist/cjs/components/FileUploader/Preview/Preview.styles.cjs +1 -1
- package/dist/cjs/components/FileUploader/Preview/Preview.styles.cjs.map +1 -1
- package/dist/cjs/components/FilterGroup/Counter/Counter.cjs +2 -4
- package/dist/cjs/components/FilterGroup/Counter/Counter.cjs.map +1 -1
- package/dist/cjs/components/FilterGroup/FilterContent/FilterContent.cjs +10 -11
- package/dist/cjs/components/FilterGroup/FilterContent/FilterContent.cjs.map +1 -1
- package/dist/cjs/components/FilterGroup/FilterGroupContext.cjs +1 -1
- package/dist/cjs/components/FilterGroup/FilterGroupContext.cjs.map +1 -1
- package/dist/cjs/components/FilterGroup/RightPanel/RightPanel.cjs +14 -26
- package/dist/cjs/components/FilterGroup/RightPanel/RightPanel.cjs.map +1 -1
- package/dist/cjs/components/Focus/Focus.cjs +8 -13
- package/dist/cjs/components/Focus/Focus.cjs.map +1 -1
- package/dist/cjs/components/Focus/utils.cjs +1 -1
- package/dist/cjs/components/Focus/utils.cjs.map +1 -1
- package/dist/cjs/components/Footer/Footer.cjs.map +1 -1
- package/dist/cjs/components/Footer/Footer.styles.cjs.map +1 -1
- package/dist/cjs/components/Forms/Adornment/Adornment.cjs +1 -2
- package/dist/cjs/components/Forms/Adornment/Adornment.cjs.map +1 -1
- package/dist/cjs/components/Forms/FormElement/utils/FormUtils.cjs +17 -20
- package/dist/cjs/components/Forms/FormElement/utils/FormUtils.cjs.map +1 -1
- package/dist/cjs/components/Forms/Label/Label.cjs +1 -2
- package/dist/cjs/components/Forms/Label/Label.cjs.map +1 -1
- package/dist/cjs/components/Forms/Suggestions/Suggestions.cjs +2 -2
- package/dist/cjs/components/Forms/Suggestions/Suggestions.cjs.map +1 -1
- package/dist/cjs/components/Forms/WarningText/WarningText.cjs +3 -6
- package/dist/cjs/components/Forms/WarningText/WarningText.cjs.map +1 -1
- package/dist/cjs/components/Forms/WarningText/WarningText.styles.cjs +6 -7
- package/dist/cjs/components/Forms/WarningText/WarningText.styles.cjs.map +1 -1
- package/dist/cjs/components/GlobalActions/GlobalActions.cjs +1 -1
- package/dist/cjs/components/GlobalActions/GlobalActions.cjs.map +1 -1
- package/dist/cjs/components/GlobalActions/GlobalActions.styles.cjs.map +1 -1
- package/dist/cjs/components/Grid/Grid.cjs +1 -1
- package/dist/cjs/components/Grid/Grid.cjs.map +1 -1
- package/dist/cjs/components/Header/Actions/Actions.styles.cjs +1 -2
- package/dist/cjs/components/Header/Actions/Actions.styles.cjs.map +1 -1
- package/dist/cjs/components/Header/Navigation/MenuBar/Bar.cjs +1 -1
- package/dist/cjs/components/Header/Navigation/MenuBar/Bar.cjs.map +1 -1
- package/dist/cjs/components/Header/Navigation/MenuBar/MenuBar.cjs.map +1 -1
- package/dist/cjs/components/Header/Navigation/MenuItem/MenuItem.cjs +14 -15
- package/dist/cjs/components/Header/Navigation/MenuItem/MenuItem.cjs.map +1 -1
- package/dist/cjs/components/Header/Navigation/Navigation.cjs +1 -1
- package/dist/cjs/components/Header/Navigation/Navigation.cjs.map +1 -1
- package/dist/cjs/components/Header/Navigation/useSelectionPath.cjs +1 -1
- package/dist/cjs/components/Header/Navigation/useSelectionPath.cjs.map +1 -1
- package/dist/cjs/components/InlineEditor/InlineEditor.cjs +5 -5
- package/dist/cjs/components/InlineEditor/InlineEditor.cjs.map +1 -1
- package/dist/cjs/components/Input/Input.cjs +24 -29
- package/dist/cjs/components/Input/Input.cjs.map +1 -1
- package/dist/cjs/components/Kpi/Kpi.cjs +4 -4
- package/dist/cjs/components/Kpi/Kpi.cjs.map +1 -1
- package/dist/cjs/components/Link/Link.cjs +1 -1
- package/dist/cjs/components/Link/Link.cjs.map +1 -1
- package/dist/cjs/components/List/List.cjs +5 -6
- package/dist/cjs/components/List/List.cjs.map +1 -1
- package/dist/cjs/components/List/utils.cjs +6 -6
- package/dist/cjs/components/List/utils.cjs.map +1 -1
- package/dist/cjs/components/ListContainer/ListItem/ListItem.cjs +4 -4
- package/dist/cjs/components/ListContainer/ListItem/ListItem.cjs.map +1 -1
- package/dist/cjs/components/Login/Login.styles.cjs +1 -1
- package/dist/cjs/components/Login/Login.styles.cjs.map +1 -1
- package/dist/cjs/components/MultiButton/MultiButton.cjs +1 -1
- package/dist/cjs/components/MultiButton/MultiButton.cjs.map +1 -1
- package/dist/cjs/components/MultiButton/MultiButton.styles.cjs.map +1 -1
- package/dist/cjs/components/OverflowTooltip/OverflowTooltip.cjs +3 -4
- package/dist/cjs/components/OverflowTooltip/OverflowTooltip.cjs.map +1 -1
- package/dist/cjs/components/Pagination/Pagination.cjs +18 -16
- package/dist/cjs/components/Pagination/Pagination.cjs.map +1 -1
- package/dist/cjs/components/Pagination/Pagination.styles.cjs +27 -8
- package/dist/cjs/components/Pagination/Pagination.styles.cjs.map +1 -1
- package/dist/cjs/components/Pagination/Select.cjs +1 -1
- package/dist/cjs/components/Pagination/Select.cjs.map +1 -1
- package/dist/cjs/components/Panel/Panel.cjs.map +1 -1
- package/dist/cjs/components/ProgressBar/ProgressBar.cjs +1 -1
- package/dist/cjs/components/ProgressBar/ProgressBar.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/ConfirmationDialog/ConfirmationDialog.cjs +2 -2
- package/dist/cjs/components/QueryBuilder/ConfirmationDialog/ConfirmationDialog.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/Context.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/QueryBuilder.cjs +3 -3
- package/dist/cjs/components/QueryBuilder/QueryBuilder.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/Rule/Attribute/Attribute.cjs +4 -6
- package/dist/cjs/components/QueryBuilder/Rule/Attribute/Attribute.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/Rule/Rule.cjs +1 -1
- package/dist/cjs/components/QueryBuilder/Rule/Rule.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.cjs +18 -23
- package/dist/cjs/components/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/Rule/Value/NumericValue/NumericValue.cjs +31 -35
- package/dist/cjs/components/QueryBuilder/Rule/Value/NumericValue/NumericValue.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/RuleGroup/RuleGroup.cjs +10 -12
- package/dist/cjs/components/QueryBuilder/RuleGroup/RuleGroup.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/utils/index.cjs +1 -1
- package/dist/cjs/components/QueryBuilder/utils/index.cjs.map +1 -1
- package/dist/cjs/components/Radio/Radio.cjs +3 -3
- package/dist/cjs/components/Radio/Radio.cjs.map +1 -1
- package/dist/cjs/components/RadioGroup/RadioGroup.cjs +11 -16
- package/dist/cjs/components/RadioGroup/RadioGroup.cjs.map +1 -1
- package/dist/cjs/components/ScrollTo/Horizontal/HorizontalScrollListItem/HorizontalScrollListItem.cjs.map +1 -1
- package/dist/cjs/components/ScrollTo/Horizontal/ScrollToHorizontal.cjs +7 -7
- package/dist/cjs/components/ScrollTo/Horizontal/ScrollToHorizontal.cjs.map +1 -1
- package/dist/cjs/components/ScrollTo/Vertical/ScrollToVertical.cjs +4 -4
- package/dist/cjs/components/ScrollTo/Vertical/ScrollToVertical.cjs.map +1 -1
- package/dist/cjs/components/ScrollTo/Vertical/VerticalScrollListItem/VerticalScrollListItem.cjs +1 -1
- package/dist/cjs/components/ScrollTo/Vertical/VerticalScrollListItem/VerticalScrollListItem.cjs.map +1 -1
- package/dist/cjs/components/ScrollTo/Vertical/VerticalScrollListItem/VerticalScrollListItem.styles.cjs +1 -1
- package/dist/cjs/components/ScrollTo/Vertical/VerticalScrollListItem/VerticalScrollListItem.styles.cjs.map +1 -1
- package/dist/cjs/components/ScrollTo/useScrollTo.cjs +3 -3
- package/dist/cjs/components/ScrollTo/useScrollTo.cjs.map +1 -1
- package/dist/cjs/components/ScrollTo/utils.cjs +4 -7
- package/dist/cjs/components/ScrollTo/utils.cjs.map +1 -1
- package/dist/cjs/components/Section/Section.cjs +2 -2
- package/dist/cjs/components/Section/Section.cjs.map +1 -1
- package/dist/cjs/components/SelectionList/SelectionList.cjs +9 -15
- package/dist/cjs/components/SelectionList/SelectionList.cjs.map +1 -1
- package/dist/cjs/components/Slider/Slider.cjs +9 -10
- package/dist/cjs/components/Slider/Slider.cjs.map +1 -1
- package/dist/cjs/components/Slider/Slider.styles.cjs.map +1 -1
- package/dist/cjs/components/Slider/SliderInput/SliderInput.cjs +2 -2
- package/dist/cjs/components/Slider/SliderInput/SliderInput.cjs.map +1 -1
- package/dist/cjs/components/Slider/utils.cjs +2 -2
- package/dist/cjs/components/Slider/utils.cjs.map +1 -1
- package/dist/cjs/components/Snackbar/Snackbar.cjs.map +1 -1
- package/dist/cjs/components/Snackbar/SnackbarContent/SnackbarContent.cjs +2 -2
- package/dist/cjs/components/Snackbar/SnackbarContent/SnackbarContent.cjs.map +1 -1
- package/dist/cjs/components/Stack/Stack.cjs.map +1 -1
- package/dist/cjs/components/Switch/Switch.cjs +1 -1
- package/dist/cjs/components/Switch/Switch.cjs.map +1 -1
- package/dist/cjs/components/Tab/Tab.cjs.map +1 -1
- package/dist/cjs/components/Tab/Tab.styles.cjs +1 -1
- package/dist/cjs/components/Tab/Tab.styles.cjs.map +1 -1
- package/dist/cjs/components/Table/TableBody/TableBody.cjs +1 -2
- package/dist/cjs/components/Table/TableBody/TableBody.cjs.map +1 -1
- package/dist/cjs/components/Table/TableCell/TableCell.cjs +3 -4
- package/dist/cjs/components/Table/TableCell/TableCell.cjs.map +1 -1
- package/dist/cjs/components/Table/TableHead/TableHead.cjs +1 -2
- package/dist/cjs/components/Table/TableHead/TableHead.cjs.map +1 -1
- package/dist/cjs/components/Table/TableHeader/TableHeader.cjs +3 -4
- package/dist/cjs/components/Table/TableHeader/TableHeader.cjs.map +1 -1
- package/dist/cjs/components/Table/TableRow/TableRow.cjs +2 -3
- package/dist/cjs/components/Table/TableRow/TableRow.cjs.map +1 -1
- package/dist/cjs/components/Table/hooks/useHeaderGroups.cjs +1 -2
- package/dist/cjs/components/Table/hooks/useHeaderGroups.cjs.map +1 -1
- package/dist/cjs/components/Table/hooks/useResizeColumns.cjs +1 -2
- package/dist/cjs/components/Table/hooks/useResizeColumns.cjs.map +1 -1
- package/dist/cjs/components/Table/hooks/useRowExpand.cjs +2 -5
- package/dist/cjs/components/Table/hooks/useRowExpand.cjs.map +1 -1
- package/dist/cjs/components/Table/hooks/useRowSelection.cjs +2 -4
- package/dist/cjs/components/Table/hooks/useRowSelection.cjs.map +1 -1
- package/dist/cjs/components/Table/hooks/useSticky.cjs +5 -7
- package/dist/cjs/components/Table/hooks/useSticky.cjs.map +1 -1
- package/dist/cjs/components/Table/hooks/useTable.cjs.map +1 -1
- package/dist/cjs/components/Table/hooks/useTableStyles.cjs.map +1 -1
- package/dist/cjs/components/Table/renderers/DropdownColumnCell/DropdownColumnCell.cjs +1 -1
- package/dist/cjs/components/Table/renderers/DropdownColumnCell/DropdownColumnCell.cjs.map +1 -1
- package/dist/cjs/components/Table/renderers/SwitchColumnCell/SwitchColumnCell.cjs +1 -1
- package/dist/cjs/components/Table/renderers/SwitchColumnCell/SwitchColumnCell.cjs.map +1 -1
- package/dist/cjs/components/Table/renderers/renderers.cjs +6 -7
- package/dist/cjs/components/Table/renderers/renderers.cjs.map +1 -1
- package/dist/cjs/components/Table/utils/fallbacks.cjs +1 -1
- package/dist/cjs/components/Table/utils/fallbacks.cjs.map +1 -1
- package/dist/cjs/components/Tabs/Tabs.cjs.map +1 -1
- package/dist/cjs/components/Tabs/Tabs.styles.cjs.map +1 -1
- package/dist/cjs/components/Tag/Tag.cjs +2 -2
- package/dist/cjs/components/Tag/Tag.cjs.map +1 -1
- package/dist/cjs/components/Tag/Tag.styles.cjs.map +1 -1
- package/dist/cjs/components/TagsInput/TagsInput.cjs +16 -26
- package/dist/cjs/components/TagsInput/TagsInput.cjs.map +1 -1
- package/dist/cjs/components/TextArea/TextArea.cjs +5 -9
- package/dist/cjs/components/TextArea/TextArea.cjs.map +1 -1
- package/dist/cjs/components/TimePicker/Placeholder.cjs +1 -1
- package/dist/cjs/components/TimePicker/Placeholder.cjs.map +1 -1
- package/dist/cjs/components/TimePicker/TimePicker.cjs +3 -4
- package/dist/cjs/components/TimePicker/TimePicker.cjs.map +1 -1
- package/dist/cjs/components/ToggleButton/ToggleButton.cjs +1 -1
- package/dist/cjs/components/ToggleButton/ToggleButton.cjs.map +1 -1
- package/dist/cjs/components/Tooltip/Tooltip.cjs +1 -1
- package/dist/cjs/components/Tooltip/Tooltip.cjs.map +1 -1
- package/dist/cjs/components/Tooltip/Tooltip.styles.cjs.map +1 -1
- package/dist/cjs/components/Typography/Typography.cjs +1 -1
- package/dist/cjs/components/Typography/Typography.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/Actions/Action.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/Actions/Action.styles.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/Actions/Actions.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/Actions/Actions.styles.cjs +1 -1
- package/dist/cjs/components/VerticalNavigation/Actions/Actions.styles.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/Header/Header.cjs +1 -1
- package/dist/cjs/components/VerticalNavigation/Header/Header.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/Navigation/Navigation.cjs +10 -10
- package/dist/cjs/components/VerticalNavigation/Navigation/Navigation.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/Navigation/Navigation.styles.cjs +1 -1
- package/dist/cjs/components/VerticalNavigation/Navigation/Navigation.styles.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/NavigationPopup/NavigationPopup.styles.cjs +2 -2
- package/dist/cjs/components/VerticalNavigation/NavigationPopup/NavigationPopup.styles.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/NavigationPopup/NavigationPopupContainer.cjs +1 -1
- package/dist/cjs/components/VerticalNavigation/NavigationPopup/NavigationPopupContainer.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/NavigationSlider/NavigationSlider.cjs +2 -2
- package/dist/cjs/components/VerticalNavigation/NavigationSlider/NavigationSlider.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/NavigationSlider/NavigationSlider.styles.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/NavigationSlider/utils/NavigationSlider.utils.cjs +2 -4
- package/dist/cjs/components/VerticalNavigation/NavigationSlider/utils/NavigationSlider.utils.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/TreeView/IconWrapper/IconWrapper.cjs +1 -1
- package/dist/cjs/components/VerticalNavigation/TreeView/IconWrapper/IconWrapper.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/TreeView/TreeView.cjs +5 -16
- package/dist/cjs/components/VerticalNavigation/TreeView/TreeView.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/TreeView/TreeView.styles.cjs +1 -1
- package/dist/cjs/components/VerticalNavigation/TreeView/TreeView.styles.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/TreeView/TreeViewItem.cjs +7 -8
- package/dist/cjs/components/VerticalNavigation/TreeView/TreeViewItem.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/TreeView/descendants.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/VerticalNavigation.cjs +2 -2
- package/dist/cjs/components/VerticalNavigation/VerticalNavigation.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/VerticalNavigation.styles.cjs +1 -1
- package/dist/cjs/components/VerticalNavigation/VerticalNavigation.styles.cjs.map +1 -1
- package/dist/cjs/hocs/withTooltip.cjs +1 -1
- package/dist/cjs/hocs/withTooltip.cjs.map +1 -1
- package/dist/cjs/hooks/useClickOutside.cjs +2 -2
- package/dist/cjs/hooks/useClickOutside.cjs.map +1 -1
- package/dist/cjs/hooks/useComputation.cjs +1 -1
- package/dist/cjs/hooks/useComputation.cjs.map +1 -1
- package/dist/cjs/hooks/useCss.cjs.map +1 -1
- package/dist/cjs/hooks/useDefaultProps.cjs +4 -5
- package/dist/cjs/hooks/useDefaultProps.cjs.map +1 -1
- package/dist/cjs/hooks/useTheme.cjs +1 -2
- package/dist/cjs/hooks/useTheme.cjs.map +1 -1
- package/dist/cjs/utils/classes.cjs +2 -2
- package/dist/cjs/utils/classes.cjs.map +1 -1
- package/dist/cjs/utils/keyboardUtils.cjs +1 -1
- package/dist/cjs/utils/keyboardUtils.cjs.map +1 -1
- package/dist/cjs/utils/setId.cjs +1 -3
- package/dist/cjs/utils/setId.cjs.map +1 -1
- package/dist/cjs/utils/theme.cjs +2 -4
- package/dist/cjs/utils/theme.cjs.map +1 -1
- package/dist/esm/components/Accordion/Accordion.js +4 -5
- package/dist/esm/components/Accordion/Accordion.js.map +1 -1
- package/dist/esm/components/ActionsGeneric/ActionsGeneric.js +5 -5
- package/dist/esm/components/ActionsGeneric/ActionsGeneric.js.map +1 -1
- package/dist/esm/components/AppSwitcher/Action/Action.js +2 -2
- package/dist/esm/components/AppSwitcher/Action/Action.js.map +1 -1
- package/dist/esm/components/AppSwitcher/AppSwitcher.js +2 -2
- package/dist/esm/components/AppSwitcher/AppSwitcher.js.map +1 -1
- package/dist/esm/components/Avatar/Avatar.js +1 -1
- package/dist/esm/components/Avatar/Avatar.js.map +1 -1
- package/dist/esm/components/Banner/BannerContent/BannerContent.js +1 -1
- package/dist/esm/components/Banner/BannerContent/BannerContent.js.map +1 -1
- package/dist/esm/components/BaseCheckBox/BaseCheckBox.js +3 -3
- package/dist/esm/components/BaseCheckBox/BaseCheckBox.js.map +1 -1
- package/dist/esm/components/BaseDropdown/BaseDropdown.js +15 -18
- package/dist/esm/components/BaseDropdown/BaseDropdown.js.map +1 -1
- package/dist/esm/components/BaseDropdown/BaseDropdown.styles.js +6 -6
- package/dist/esm/components/BaseDropdown/BaseDropdown.styles.js.map +1 -1
- package/dist/esm/components/BaseInput/BaseInput.js +1 -1
- package/dist/esm/components/BaseInput/BaseInput.js.map +1 -1
- package/dist/esm/components/BaseInput/validations.js +12 -13
- package/dist/esm/components/BaseInput/validations.js.map +1 -1
- package/dist/esm/components/BaseRadio/BaseRadio.js +3 -3
- package/dist/esm/components/BaseRadio/BaseRadio.js.map +1 -1
- package/dist/esm/components/BaseSwitch/BaseSwitch.js +3 -3
- package/dist/esm/components/BaseSwitch/BaseSwitch.js.map +1 -1
- package/dist/esm/components/Box/Box.js +1 -1
- package/dist/esm/components/Box/Box.js.map +1 -1
- package/dist/esm/components/BreadCrumb/BreadCrumb.js +1 -2
- package/dist/esm/components/BreadCrumb/BreadCrumb.js.map +1 -1
- package/dist/esm/components/BreadCrumb/Page/Page.js +1 -1
- package/dist/esm/components/BreadCrumb/Page/Page.js.map +1 -1
- package/dist/esm/components/BreadCrumb/utils.js +1 -1
- package/dist/esm/components/BreadCrumb/utils.js.map +1 -1
- package/dist/esm/components/BulkActions/BulkActions.js +4 -4
- package/dist/esm/components/BulkActions/BulkActions.js.map +1 -1
- package/dist/esm/components/BulkActions/BulkActions.styles.js.map +1 -1
- package/dist/esm/components/Button/Button.js +1 -1
- package/dist/esm/components/Button/Button.js.map +1 -1
- package/dist/esm/components/Calendar/Calendar.js +3 -3
- package/dist/esm/components/Calendar/Calendar.js.map +1 -1
- package/dist/esm/components/Calendar/Calendar.styles.js +1 -1
- package/dist/esm/components/Calendar/Calendar.styles.js.map +1 -1
- package/dist/esm/components/Calendar/CalendarHeader/CalendarHeader.js +6 -8
- package/dist/esm/components/Calendar/CalendarHeader/CalendarHeader.js.map +1 -1
- package/dist/esm/components/Calendar/CalendarHeader/CalendarHeader.styles.js +1 -1
- package/dist/esm/components/Calendar/CalendarHeader/CalendarHeader.styles.js.map +1 -1
- package/dist/esm/components/Calendar/CalendarNavigation/ComposedNavigation/ComposedNavigation.js +4 -4
- package/dist/esm/components/Calendar/CalendarNavigation/ComposedNavigation/ComposedNavigation.js.map +1 -1
- package/dist/esm/components/Calendar/CalendarNavigation/ComposedNavigation/ComposedNavigation.styles.js +1 -1
- package/dist/esm/components/Calendar/CalendarNavigation/ComposedNavigation/ComposedNavigation.styles.js.map +1 -1
- package/dist/esm/components/Calendar/CalendarNavigation/MonthSelector/MonthSelector.js +2 -2
- package/dist/esm/components/Calendar/CalendarNavigation/MonthSelector/MonthSelector.js.map +1 -1
- package/dist/esm/components/Calendar/CalendarNavigation/Navigation/Navigation.js +8 -28
- package/dist/esm/components/Calendar/CalendarNavigation/Navigation/Navigation.js.map +1 -1
- package/dist/esm/components/Calendar/CalendarNavigation/Navigation/Navigation.styles.js +9 -39
- package/dist/esm/components/Calendar/CalendarNavigation/Navigation/Navigation.styles.js.map +1 -1
- package/dist/esm/components/Calendar/SingleCalendar/CalendarCell.js +3 -6
- package/dist/esm/components/Calendar/SingleCalendar/CalendarCell.js.map +1 -1
- package/dist/esm/components/Calendar/SingleCalendar/SingleCalendar.js +15 -17
- package/dist/esm/components/Calendar/SingleCalendar/SingleCalendar.js.map +1 -1
- package/dist/esm/components/Calendar/SingleCalendar/SingleCalendar.styles.js +9 -1
- package/dist/esm/components/Calendar/SingleCalendar/SingleCalendar.styles.js.map +1 -1
- package/dist/esm/components/Calendar/utils.js +8 -12
- package/dist/esm/components/Calendar/utils.js.map +1 -1
- package/dist/esm/components/Card/Card.js.map +1 -1
- package/dist/esm/components/Card/Header/Header.js.map +1 -1
- package/dist/esm/components/Card/Media/Media.js.map +1 -1
- package/dist/esm/components/Carousel/Carousel.js +10 -11
- package/dist/esm/components/Carousel/Carousel.js.map +1 -1
- package/dist/esm/components/Carousel/CarouselControls.js +1 -1
- package/dist/esm/components/Carousel/CarouselControls.js.map +1 -1
- package/dist/esm/components/Carousel/CarouselThumbnails.js +1 -1
- package/dist/esm/components/Carousel/CarouselThumbnails.js.map +1 -1
- package/dist/esm/components/CheckBox/CheckBox.js +3 -3
- package/dist/esm/components/CheckBox/CheckBox.js.map +1 -1
- package/dist/esm/components/CheckBoxGroup/CheckBoxGroup.js +11 -17
- package/dist/esm/components/CheckBoxGroup/CheckBoxGroup.js.map +1 -1
- package/dist/esm/components/ColorPicker/ColorPicker.js +10 -10
- package/dist/esm/components/ColorPicker/ColorPicker.js.map +1 -1
- package/dist/esm/components/ColorPicker/Fields/Fields.js +16 -16
- package/dist/esm/components/ColorPicker/Fields/Fields.js.map +1 -1
- package/dist/esm/components/ColorPicker/Picker/Picker.js +3 -3
- package/dist/esm/components/ColorPicker/Picker/Picker.js.map +1 -1
- package/dist/esm/components/ColorPicker/PresetColors/PresetColors.js.map +1 -1
- package/dist/esm/components/ColorPicker/SavedColors/SavedColors.js.map +1 -1
- package/dist/esm/components/Controls/Controls.js +7 -13
- package/dist/esm/components/Controls/Controls.js.map +1 -1
- package/dist/esm/components/Controls/LeftControl/LeftControl.js +2 -2
- package/dist/esm/components/Controls/LeftControl/LeftControl.js.map +1 -1
- package/dist/esm/components/Controls/RightControl/RightControl.js +3 -3
- package/dist/esm/components/Controls/RightControl/RightControl.js.map +1 -1
- package/dist/esm/components/DatePicker/DatePicker.js +10 -11
- package/dist/esm/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/esm/components/DatePicker/utils.js +1 -1
- package/dist/esm/components/DatePicker/utils.js.map +1 -1
- package/dist/esm/components/Dialog/Actions/Actions.js.map +1 -1
- package/dist/esm/components/Dialog/Content/Content.js.map +1 -1
- package/dist/esm/components/Dialog/Dialog.js +5 -5
- package/dist/esm/components/Dialog/Dialog.js.map +1 -1
- package/dist/esm/components/Dialog/Title/Title.js.map +1 -1
- package/dist/esm/components/DotPagination/DotPagination.js +4 -4
- package/dist/esm/components/DotPagination/DotPagination.js.map +1 -1
- package/dist/esm/components/Drawer/Drawer.js +1 -1
- package/dist/esm/components/Drawer/Drawer.js.map +1 -1
- package/dist/esm/components/DropDownMenu/DropDownMenu.js +5 -6
- package/dist/esm/components/DropDownMenu/DropDownMenu.js.map +1 -1
- package/dist/esm/components/DropDownMenu/DropDownMenu.styles.js +1 -1
- package/dist/esm/components/DropDownMenu/DropDownMenu.styles.js.map +1 -1
- package/dist/esm/components/Dropdown/Dropdown.js +10 -12
- package/dist/esm/components/Dropdown/Dropdown.js.map +1 -1
- package/dist/esm/components/Dropdown/List/List.js +10 -11
- package/dist/esm/components/Dropdown/List/List.js.map +1 -1
- package/dist/esm/components/FileUploader/DropZone/DropZone.js +13 -14
- package/dist/esm/components/FileUploader/DropZone/DropZone.js.map +1 -1
- package/dist/esm/components/FileUploader/DropZone/DropZone.styles.js +1 -1
- package/dist/esm/components/FileUploader/DropZone/DropZone.styles.js.map +1 -1
- package/dist/esm/components/FileUploader/File/File.js +6 -6
- package/dist/esm/components/FileUploader/File/File.js.map +1 -1
- package/dist/esm/components/FileUploader/File/File.styles.js +1 -1
- package/dist/esm/components/FileUploader/File/File.styles.js.map +1 -1
- package/dist/esm/components/FileUploader/FileList/FileList.js +1 -1
- package/dist/esm/components/FileUploader/FileList/FileList.js.map +1 -1
- package/dist/esm/components/FileUploader/FileList/FileList.styles.js +1 -1
- package/dist/esm/components/FileUploader/FileList/FileList.styles.js.map +1 -1
- package/dist/esm/components/FileUploader/FileUploader.js +1 -1
- package/dist/esm/components/FileUploader/FileUploader.js.map +1 -1
- package/dist/esm/components/FileUploader/Preview/Preview.js +1 -1
- package/dist/esm/components/FileUploader/Preview/Preview.js.map +1 -1
- package/dist/esm/components/FileUploader/Preview/Preview.styles.js +1 -1
- package/dist/esm/components/FileUploader/Preview/Preview.styles.js.map +1 -1
- package/dist/esm/components/FilterGroup/Counter/Counter.js +2 -4
- package/dist/esm/components/FilterGroup/Counter/Counter.js.map +1 -1
- package/dist/esm/components/FilterGroup/FilterContent/FilterContent.js +10 -11
- package/dist/esm/components/FilterGroup/FilterContent/FilterContent.js.map +1 -1
- package/dist/esm/components/FilterGroup/FilterGroupContext.js +1 -1
- package/dist/esm/components/FilterGroup/FilterGroupContext.js.map +1 -1
- package/dist/esm/components/FilterGroup/RightPanel/RightPanel.js +14 -26
- package/dist/esm/components/FilterGroup/RightPanel/RightPanel.js.map +1 -1
- package/dist/esm/components/Focus/Focus.js +8 -12
- package/dist/esm/components/Focus/Focus.js.map +1 -1
- package/dist/esm/components/Focus/utils.js +1 -1
- package/dist/esm/components/Focus/utils.js.map +1 -1
- package/dist/esm/components/Footer/Footer.js.map +1 -1
- package/dist/esm/components/Footer/Footer.styles.js.map +1 -1
- package/dist/esm/components/Forms/Adornment/Adornment.js +1 -2
- package/dist/esm/components/Forms/Adornment/Adornment.js.map +1 -1
- package/dist/esm/components/Forms/FormElement/utils/FormUtils.js +17 -20
- package/dist/esm/components/Forms/FormElement/utils/FormUtils.js.map +1 -1
- package/dist/esm/components/Forms/Label/Label.js +1 -2
- package/dist/esm/components/Forms/Label/Label.js.map +1 -1
- package/dist/esm/components/Forms/Suggestions/Suggestions.js +2 -2
- package/dist/esm/components/Forms/Suggestions/Suggestions.js.map +1 -1
- package/dist/esm/components/Forms/WarningText/WarningText.js +3 -4
- package/dist/esm/components/Forms/WarningText/WarningText.js.map +1 -1
- package/dist/esm/components/Forms/WarningText/WarningText.styles.js +6 -7
- package/dist/esm/components/Forms/WarningText/WarningText.styles.js.map +1 -1
- package/dist/esm/components/GlobalActions/GlobalActions.js +1 -1
- package/dist/esm/components/GlobalActions/GlobalActions.js.map +1 -1
- package/dist/esm/components/GlobalActions/GlobalActions.styles.js.map +1 -1
- package/dist/esm/components/Grid/Grid.js +1 -1
- package/dist/esm/components/Grid/Grid.js.map +1 -1
- package/dist/esm/components/Header/Actions/Actions.styles.js +1 -2
- package/dist/esm/components/Header/Actions/Actions.styles.js.map +1 -1
- package/dist/esm/components/Header/Navigation/MenuBar/Bar.js +1 -1
- package/dist/esm/components/Header/Navigation/MenuBar/Bar.js.map +1 -1
- package/dist/esm/components/Header/Navigation/MenuBar/MenuBar.js.map +1 -1
- package/dist/esm/components/Header/Navigation/MenuItem/MenuItem.js +14 -15
- package/dist/esm/components/Header/Navigation/MenuItem/MenuItem.js.map +1 -1
- package/dist/esm/components/Header/Navigation/Navigation.js +1 -1
- package/dist/esm/components/Header/Navigation/Navigation.js.map +1 -1
- package/dist/esm/components/Header/Navigation/useSelectionPath.js +1 -1
- package/dist/esm/components/Header/Navigation/useSelectionPath.js.map +1 -1
- package/dist/esm/components/InlineEditor/InlineEditor.js +5 -5
- package/dist/esm/components/InlineEditor/InlineEditor.js.map +1 -1
- package/dist/esm/components/Input/Input.js +24 -29
- package/dist/esm/components/Input/Input.js.map +1 -1
- package/dist/esm/components/Kpi/Kpi.js +4 -4
- package/dist/esm/components/Kpi/Kpi.js.map +1 -1
- package/dist/esm/components/Link/Link.js +1 -1
- package/dist/esm/components/Link/Link.js.map +1 -1
- package/dist/esm/components/List/List.js +5 -6
- package/dist/esm/components/List/List.js.map +1 -1
- package/dist/esm/components/List/utils.js +6 -6
- package/dist/esm/components/List/utils.js.map +1 -1
- package/dist/esm/components/ListContainer/ListItem/ListItem.js +4 -4
- package/dist/esm/components/ListContainer/ListItem/ListItem.js.map +1 -1
- package/dist/esm/components/Login/Login.styles.js +1 -1
- package/dist/esm/components/Login/Login.styles.js.map +1 -1
- package/dist/esm/components/MultiButton/MultiButton.js +1 -1
- package/dist/esm/components/MultiButton/MultiButton.js.map +1 -1
- package/dist/esm/components/MultiButton/MultiButton.styles.js.map +1 -1
- package/dist/esm/components/OverflowTooltip/OverflowTooltip.js +3 -4
- package/dist/esm/components/OverflowTooltip/OverflowTooltip.js.map +1 -1
- package/dist/esm/components/Pagination/Pagination.js +18 -16
- package/dist/esm/components/Pagination/Pagination.js.map +1 -1
- package/dist/esm/components/Pagination/Pagination.styles.js +29 -10
- package/dist/esm/components/Pagination/Pagination.styles.js.map +1 -1
- package/dist/esm/components/Pagination/Select.js +1 -1
- package/dist/esm/components/Pagination/Select.js.map +1 -1
- package/dist/esm/components/Panel/Panel.js.map +1 -1
- package/dist/esm/components/ProgressBar/ProgressBar.js +1 -1
- package/dist/esm/components/ProgressBar/ProgressBar.js.map +1 -1
- package/dist/esm/components/QueryBuilder/ConfirmationDialog/ConfirmationDialog.js +2 -2
- package/dist/esm/components/QueryBuilder/ConfirmationDialog/ConfirmationDialog.js.map +1 -1
- package/dist/esm/components/QueryBuilder/Context.js.map +1 -1
- package/dist/esm/components/QueryBuilder/QueryBuilder.js +3 -3
- package/dist/esm/components/QueryBuilder/QueryBuilder.js.map +1 -1
- package/dist/esm/components/QueryBuilder/Rule/Attribute/Attribute.js +4 -6
- package/dist/esm/components/QueryBuilder/Rule/Attribute/Attribute.js.map +1 -1
- package/dist/esm/components/QueryBuilder/Rule/Rule.js +1 -1
- package/dist/esm/components/QueryBuilder/Rule/Rule.js.map +1 -1
- package/dist/esm/components/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.js +18 -23
- package/dist/esm/components/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.js.map +1 -1
- package/dist/esm/components/QueryBuilder/Rule/Value/NumericValue/NumericValue.js +31 -35
- package/dist/esm/components/QueryBuilder/Rule/Value/NumericValue/NumericValue.js.map +1 -1
- package/dist/esm/components/QueryBuilder/RuleGroup/RuleGroup.js +10 -12
- package/dist/esm/components/QueryBuilder/RuleGroup/RuleGroup.js.map +1 -1
- package/dist/esm/components/QueryBuilder/utils/index.js +1 -1
- package/dist/esm/components/QueryBuilder/utils/index.js.map +1 -1
- package/dist/esm/components/Radio/Radio.js +3 -3
- package/dist/esm/components/Radio/Radio.js.map +1 -1
- package/dist/esm/components/RadioGroup/RadioGroup.js +11 -16
- package/dist/esm/components/RadioGroup/RadioGroup.js.map +1 -1
- package/dist/esm/components/ScrollTo/Horizontal/HorizontalScrollListItem/HorizontalScrollListItem.js.map +1 -1
- package/dist/esm/components/ScrollTo/Horizontal/ScrollToHorizontal.js +7 -7
- package/dist/esm/components/ScrollTo/Horizontal/ScrollToHorizontal.js.map +1 -1
- package/dist/esm/components/ScrollTo/Vertical/ScrollToVertical.js +4 -4
- package/dist/esm/components/ScrollTo/Vertical/ScrollToVertical.js.map +1 -1
- package/dist/esm/components/ScrollTo/Vertical/VerticalScrollListItem/VerticalScrollListItem.js +1 -1
- package/dist/esm/components/ScrollTo/Vertical/VerticalScrollListItem/VerticalScrollListItem.js.map +1 -1
- package/dist/esm/components/ScrollTo/Vertical/VerticalScrollListItem/VerticalScrollListItem.styles.js +1 -1
- package/dist/esm/components/ScrollTo/Vertical/VerticalScrollListItem/VerticalScrollListItem.styles.js.map +1 -1
- package/dist/esm/components/ScrollTo/useScrollTo.js +3 -3
- package/dist/esm/components/ScrollTo/useScrollTo.js.map +1 -1
- package/dist/esm/components/ScrollTo/utils.js +4 -7
- package/dist/esm/components/ScrollTo/utils.js.map +1 -1
- package/dist/esm/components/Section/Section.js +2 -2
- package/dist/esm/components/Section/Section.js.map +1 -1
- package/dist/esm/components/SelectionList/SelectionList.js +9 -15
- package/dist/esm/components/SelectionList/SelectionList.js.map +1 -1
- package/dist/esm/components/Slider/Slider.js +9 -10
- package/dist/esm/components/Slider/Slider.js.map +1 -1
- package/dist/esm/components/Slider/Slider.styles.js.map +1 -1
- package/dist/esm/components/Slider/SliderInput/SliderInput.js +2 -2
- package/dist/esm/components/Slider/SliderInput/SliderInput.js.map +1 -1
- package/dist/esm/components/Slider/utils.js +2 -2
- package/dist/esm/components/Slider/utils.js.map +1 -1
- package/dist/esm/components/Snackbar/Snackbar.js.map +1 -1
- package/dist/esm/components/Snackbar/SnackbarContent/SnackbarContent.js +2 -2
- package/dist/esm/components/Snackbar/SnackbarContent/SnackbarContent.js.map +1 -1
- package/dist/esm/components/Stack/Stack.js.map +1 -1
- package/dist/esm/components/Switch/Switch.js +1 -1
- package/dist/esm/components/Switch/Switch.js.map +1 -1
- package/dist/esm/components/Tab/Tab.js.map +1 -1
- package/dist/esm/components/Tab/Tab.styles.js +1 -1
- package/dist/esm/components/Tab/Tab.styles.js.map +1 -1
- package/dist/esm/components/Table/TableBody/TableBody.js +1 -2
- package/dist/esm/components/Table/TableBody/TableBody.js.map +1 -1
- package/dist/esm/components/Table/TableCell/TableCell.js +3 -4
- package/dist/esm/components/Table/TableCell/TableCell.js.map +1 -1
- package/dist/esm/components/Table/TableHead/TableHead.js +1 -2
- package/dist/esm/components/Table/TableHead/TableHead.js.map +1 -1
- package/dist/esm/components/Table/TableHeader/TableHeader.js +3 -4
- package/dist/esm/components/Table/TableHeader/TableHeader.js.map +1 -1
- package/dist/esm/components/Table/TableRow/TableRow.js +2 -3
- package/dist/esm/components/Table/TableRow/TableRow.js.map +1 -1
- package/dist/esm/components/Table/hooks/useHeaderGroups.js +1 -2
- package/dist/esm/components/Table/hooks/useHeaderGroups.js.map +1 -1
- package/dist/esm/components/Table/hooks/useResizeColumns.js +1 -2
- package/dist/esm/components/Table/hooks/useResizeColumns.js.map +1 -1
- package/dist/esm/components/Table/hooks/useRowExpand.js +2 -5
- package/dist/esm/components/Table/hooks/useRowExpand.js.map +1 -1
- package/dist/esm/components/Table/hooks/useRowSelection.js +2 -4
- package/dist/esm/components/Table/hooks/useRowSelection.js.map +1 -1
- package/dist/esm/components/Table/hooks/useSticky.js +5 -7
- package/dist/esm/components/Table/hooks/useSticky.js.map +1 -1
- package/dist/esm/components/Table/hooks/useTable.js.map +1 -1
- package/dist/esm/components/Table/hooks/useTableStyles.js.map +1 -1
- package/dist/esm/components/Table/renderers/DropdownColumnCell/DropdownColumnCell.js +1 -1
- package/dist/esm/components/Table/renderers/DropdownColumnCell/DropdownColumnCell.js.map +1 -1
- package/dist/esm/components/Table/renderers/SwitchColumnCell/SwitchColumnCell.js +1 -1
- package/dist/esm/components/Table/renderers/SwitchColumnCell/SwitchColumnCell.js.map +1 -1
- package/dist/esm/components/Table/renderers/renderers.js +6 -7
- package/dist/esm/components/Table/renderers/renderers.js.map +1 -1
- package/dist/esm/components/Table/utils/fallbacks.js +1 -1
- package/dist/esm/components/Table/utils/fallbacks.js.map +1 -1
- package/dist/esm/components/Tabs/Tabs.js.map +1 -1
- package/dist/esm/components/Tabs/Tabs.styles.js.map +1 -1
- package/dist/esm/components/Tag/Tag.js +2 -2
- package/dist/esm/components/Tag/Tag.js.map +1 -1
- package/dist/esm/components/Tag/Tag.styles.js.map +1 -1
- package/dist/esm/components/TagsInput/TagsInput.js +16 -24
- package/dist/esm/components/TagsInput/TagsInput.js.map +1 -1
- package/dist/esm/components/TextArea/TextArea.js +5 -7
- package/dist/esm/components/TextArea/TextArea.js.map +1 -1
- package/dist/esm/components/TimePicker/Placeholder.js +1 -1
- package/dist/esm/components/TimePicker/Placeholder.js.map +1 -1
- package/dist/esm/components/TimePicker/TimePicker.js +3 -4
- package/dist/esm/components/TimePicker/TimePicker.js.map +1 -1
- package/dist/esm/components/ToggleButton/ToggleButton.js +1 -1
- package/dist/esm/components/ToggleButton/ToggleButton.js.map +1 -1
- package/dist/esm/components/Tooltip/Tooltip.js +1 -1
- package/dist/esm/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/esm/components/Tooltip/Tooltip.styles.js.map +1 -1
- package/dist/esm/components/Typography/Typography.js +1 -1
- package/dist/esm/components/Typography/Typography.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/Actions/Action.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/Actions/Action.styles.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/Actions/Actions.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/Actions/Actions.styles.js +1 -1
- package/dist/esm/components/VerticalNavigation/Actions/Actions.styles.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/Header/Header.js +1 -1
- package/dist/esm/components/VerticalNavigation/Header/Header.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/Navigation/Navigation.js +10 -10
- package/dist/esm/components/VerticalNavigation/Navigation/Navigation.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/Navigation/Navigation.styles.js +1 -1
- package/dist/esm/components/VerticalNavigation/Navigation/Navigation.styles.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/NavigationPopup/NavigationPopup.styles.js +2 -2
- package/dist/esm/components/VerticalNavigation/NavigationPopup/NavigationPopup.styles.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/NavigationPopup/NavigationPopupContainer.js +1 -1
- package/dist/esm/components/VerticalNavigation/NavigationPopup/NavigationPopupContainer.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/NavigationSlider/NavigationSlider.js +2 -2
- package/dist/esm/components/VerticalNavigation/NavigationSlider/NavigationSlider.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/NavigationSlider/NavigationSlider.styles.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/NavigationSlider/utils/NavigationSlider.utils.js +2 -4
- package/dist/esm/components/VerticalNavigation/NavigationSlider/utils/NavigationSlider.utils.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/TreeView/IconWrapper/IconWrapper.js +1 -1
- package/dist/esm/components/VerticalNavigation/TreeView/IconWrapper/IconWrapper.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/TreeView/TreeView.js +5 -16
- package/dist/esm/components/VerticalNavigation/TreeView/TreeView.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/TreeView/TreeView.styles.js +1 -1
- package/dist/esm/components/VerticalNavigation/TreeView/TreeView.styles.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/TreeView/TreeViewItem.js +7 -8
- package/dist/esm/components/VerticalNavigation/TreeView/TreeViewItem.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/TreeView/descendants.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/VerticalNavigation.js +2 -2
- package/dist/esm/components/VerticalNavigation/VerticalNavigation.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/VerticalNavigation.styles.js +1 -1
- package/dist/esm/components/VerticalNavigation/VerticalNavigation.styles.js.map +1 -1
- package/dist/esm/hocs/withTooltip.js +1 -1
- package/dist/esm/hocs/withTooltip.js.map +1 -1
- package/dist/esm/hooks/useClickOutside.js +2 -2
- package/dist/esm/hooks/useClickOutside.js.map +1 -1
- package/dist/esm/hooks/useComputation.js +1 -1
- package/dist/esm/hooks/useComputation.js.map +1 -1
- package/dist/esm/hooks/useCss.js.map +1 -1
- package/dist/esm/hooks/useDefaultProps.js +4 -5
- package/dist/esm/hooks/useDefaultProps.js.map +1 -1
- package/dist/esm/hooks/useTheme.js +1 -2
- package/dist/esm/hooks/useTheme.js.map +1 -1
- package/dist/esm/utils/classes.js +2 -2
- package/dist/esm/utils/classes.js.map +1 -1
- package/dist/esm/utils/keyboardUtils.js +1 -1
- package/dist/esm/utils/keyboardUtils.js.map +1 -1
- package/dist/esm/utils/setId.js +1 -2
- package/dist/esm/utils/setId.js.map +1 -1
- package/dist/esm/utils/theme.js +2 -4
- package/dist/esm/utils/theme.js.map +1 -1
- package/dist/types/index.d.ts +5 -1
- package/package.json +5 -5
- package/dist/cjs/components/Calendar/CalendarWeekLabels/CalendarWeekLabels.cjs +0 -24
- package/dist/cjs/components/Calendar/CalendarWeekLabels/CalendarWeekLabels.cjs.map +0 -1
- package/dist/cjs/components/Calendar/CalendarWeekLabels/CalendarWeekLabels.styles.cjs +0 -19
- package/dist/cjs/components/Calendar/CalendarWeekLabels/CalendarWeekLabels.styles.cjs.map +0 -1
- package/dist/esm/components/Calendar/CalendarWeekLabels/CalendarWeekLabels.js +0 -25
- package/dist/esm/components/Calendar/CalendarWeekLabels/CalendarWeekLabels.js.map +0 -1
- package/dist/esm/components/Calendar/CalendarWeekLabels/CalendarWeekLabels.styles.js +0 -19
- package/dist/esm/components/Calendar/CalendarWeekLabels/CalendarWeekLabels.styles.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TreeView.js","sources":["../../../../../src/components/VerticalNavigation/TreeView/TreeView.tsx"],"sourcesContent":["import { forwardRef, useCallback, useMemo, useRef, useState } from \"react\";\n\nimport { useControlled } from \"@core/hooks/useControlled\";\nimport { useUniqueId } from \"@core/hooks/useUniqueId\";\nimport { useForkRef } from \"@core/hooks/useForkRef\";\n\nimport { ExtractNames } from \"@core/utils/classes\";\nimport {\n NavigationMode,\n TreeViewControlContext,\n TreeViewStateContext,\n} from \"./TreeViewContext\";\nimport { DescendantProvider } from \"./descendants\";\nimport { staticClasses, useClasses } from \"./TreeView.styles\";\n\nexport { staticClasses as treeViewClasses };\n\nexport type HvVerticalNavigationTreeViewClasses = ExtractNames<\n typeof useClasses\n>;\n\nexport interface HvVerticalNavigationTreeViewProps {\n /**\n * Id to be applied to the root node.\n */\n id?: string;\n /**\n * Class names to be applied.\n */\n className?: string;\n /**\n * A Jss Object used to override or extend the styles applied to the component.\n */\n classes?: HvVerticalNavigationTreeViewClasses;\n /**\n * Modus operandi (role) of the widget instance.\n */\n mode?: NavigationMode;\n /**\n * Enables selection.\n * @default false\n */\n selectable?: boolean;\n /**\n * Enables the simultaneous selection of multiple items.\n * @default false\n */\n multiSelect?: boolean;\n /**\n * The selected nodes' ids.\n *\n * When `multiSelect` is true this takes an array of strings; when false (default) a string.\n */\n selected?: string[] | string;\n /**\n * When uncontrolled, defines the initial selected nodes' ids.\n *\n * When `multiSelect` is true this takes an array of strings; when false (default) a string.\n * @default []\n */\n defaultSelected?: string[] | string;\n /**\n * Can non-leaf nodes be collapsed / expanded.\n */\n collapsible?: boolean;\n /**\n * Callback fired when a tree item is selected.\n *\n * @param {object} event The event source of the callback.\n * @param {string} nodeId The id of the selected node.\n */\n onChange?: any;\n /**\n * Expanded nodes' ids.\n */\n expanded?: string[];\n /**\n * When uncontrolled, defines the initial expanded nodes' ids.\n * @default []\n */\n defaultExpanded?: string[];\n /**\n * Callback fired when tree items are expanded/collapsed.\n *\n * @param {object} event The event source of the callback.\n * @param {array} nodeIds The ids of the expanded nodes (old and new).\n */\n onToggle?: (event, nodeIds) => void;\n /**\n * If `true`, will allow focus on disabled items.\n * @default false\n */\n disabledItemsFocusable?: boolean;\n /**\n * @ignore\n */\n onFocus?: (event: React.FocusEvent<any>) => void;\n /**\n * @ignore\n */\n onBlur?: (event: any) => void;\n /**\n * @ignore\n */\n onKeyDown?: (event: KeyboardEvent) => void;\n /**\n * The content of the component.\n */\n children?: React.ReactNode;\n}\n\nfunction isPrintableCharacter(string) {\n return string && string.length === 1 && string.match(/\\S/);\n}\n\nfunction findNextFirstChar(firstChars, startIndex, char) {\n for (let i = startIndex; i < firstChars.length; i += 1) {\n if (char === firstChars[i]) {\n return i;\n }\n }\n return -1;\n}\n\nfunction noopSelection() {\n return false;\n}\n\nexport const HvVerticalNavigationTreeView = forwardRef(\n (props: HvVerticalNavigationTreeViewProps, ref) => {\n const {\n id: idProp,\n className,\n classes: classesProp,\n\n mode = \"treeview\",\n\n collapsible = false,\n expanded: expandedProp,\n defaultExpanded = [],\n onToggle,\n\n selectable = false,\n multiSelect: multiSelectProp = false,\n selected: selectedProp,\n defaultSelected = [],\n onChange,\n\n disabledItemsFocusable = false,\n\n onFocus,\n onBlur,\n onKeyDown,\n\n children,\n\n ...others\n } = props;\n\n const { classes, cx } = useClasses(classesProp);\n\n const treeviewMode = mode === \"treeview\";\n const multiSelect = selectable && multiSelectProp;\n\n const treeId = useUniqueId(idProp, \"hvtreeview\");\n const treeRef = useRef<HTMLDivElement>(null);\n const handleRef = useForkRef(treeRef, ref);\n\n const [expanded, setExpandedState] = useControlled(\n expandedProp,\n defaultExpanded\n );\n\n const [selected, setSelectedState] = useControlled(\n selectedProp,\n defaultSelected\n );\n\n const [focusedNodeId, setFocusedNodeId] = useState<string | null>(null);\n\n const nodeMap = useRef({});\n\n const firstCharMap = useRef({});\n\n /*\n * Status Helpers\n */\n const isExpanded = useCallback(\n (id) =>\n !collapsible ||\n (Array.isArray(expanded) ? expanded.indexOf(id) !== -1 : false),\n [collapsible, expanded]\n );\n\n const isExpandable = useCallback(\n (id) =>\n collapsible && nodeMap.current[id] && nodeMap.current[id].expandable,\n [collapsible]\n );\n\n const isSelected = useCallback(\n (id) =>\n selectable &&\n (Array.isArray(selected)\n ? selected.indexOf(id) !== -1\n : selected === id),\n [selectable, selected]\n );\n\n const isSelectable = useCallback(\n (id) =>\n selectable && nodeMap.current[id] && nodeMap.current[id].selectable,\n [selectable]\n );\n\n const isDisabled = useCallback((id) => {\n let node = nodeMap.current[id];\n\n // This can be called before the node has been added to the node map.\n if (!node) {\n return false;\n }\n\n if (node.disabled) {\n return true;\n }\n\n while (node.parentId != null) {\n node = nodeMap.current[node.parentId];\n if (node.disabled) {\n return true;\n }\n }\n\n return false;\n }, []);\n\n const isFocused = useCallback(\n (id) => focusedNodeId === id,\n [focusedNodeId]\n );\n\n const isChildSelected = useCallback(\n // the second part of the condition is to ensure that the id we're\n // looking at is actually of a child (ie, there's at least one \"-\")\n (id) => selected.startsWith(id) && selected.includes(\"-\"),\n [selected]\n );\n\n /*\n * Child Helpers\n */\n const getChildrenIds = (id: string | null) =>\n Object.keys(nodeMap.current)\n .map((key) => {\n return nodeMap.current[key];\n })\n .filter((node) => node.parentId === id)\n .sort((a, b) => a.index - b.index)\n .map((child) => child.id);\n\n const getNavigableChildrenIds = useCallback(\n (id: string | null) => {\n let childrenIds = getChildrenIds(id);\n\n if (!disabledItemsFocusable) {\n childrenIds = childrenIds.filter((node) => !isDisabled(node));\n }\n return childrenIds;\n },\n [disabledItemsFocusable, isDisabled]\n );\n\n /*\n * Node Helpers\n */\n const getNextNode = useCallback(\n (id: string) => {\n // If expanded get first child\n if (isExpanded(id) && getNavigableChildrenIds(id).length > 0) {\n return getNavigableChildrenIds(id)[0];\n }\n\n let node = nodeMap.current[id];\n while (node != null) {\n // Try to get next sibling\n const siblings = getNavigableChildrenIds(node.parentId);\n const nextSibling = siblings[siblings.indexOf(node.id) + 1];\n\n if (nextSibling) {\n return nextSibling;\n }\n\n // If the sibling does not exist, go up a level to the parent and try again.\n node = nodeMap.current[node.parentId];\n }\n\n return null;\n },\n [getNavigableChildrenIds, isExpanded]\n );\n\n const getPreviousNode = (id: string) => {\n const node = nodeMap.current[id];\n const siblings = getNavigableChildrenIds(node.parentId);\n const nodeIndex = siblings.indexOf(id);\n\n if (nodeIndex === 0) {\n return node.parentId;\n }\n\n let currentNode = siblings[nodeIndex - 1];\n while (\n isExpanded(currentNode) &&\n getNavigableChildrenIds(currentNode).length > 0\n ) {\n currentNode = getNavigableChildrenIds(currentNode).pop();\n }\n\n return currentNode;\n };\n\n const getLastNode = () => {\n let lastNode = getNavigableChildrenIds(null).pop();\n\n while (isExpanded(lastNode)) {\n lastNode = getNavigableChildrenIds(lastNode).pop();\n }\n return lastNode;\n };\n const getFirstNode = () => getNavigableChildrenIds(null)[0];\n const getParent = (id) => nodeMap.current[id].parentId;\n\n /**\n * This is used to determine the start and end of a selection range so\n * we can get the nodes between the two border nodes.\n *\n * It finds the nodes' common ancestor using\n * a naive implementation of a lowest common ancestor algorithm\n * (https://en.wikipedia.org/wiki/Lowest_common_ancestor).\n * Then compares the ancestor's 2 children that are ancestors of nodeA and NodeB\n * so we can compare their indexes to work out which node comes first in a depth first search.\n * (https://en.wikipedia.org/wiki/Depth-first_search)\n *\n * Another way to put it is which node is shallower in a trémaux tree\n * https://en.wikipedia.org/wiki/Tr%C3%A9maux_tree\n */\n const findOrderInTremauxTree = useCallback(\n (nodeAId: string, nodeBId: string) => {\n if (nodeAId === nodeBId) {\n return [nodeAId, nodeBId];\n }\n\n const nodeA = nodeMap.current[nodeAId];\n const nodeB = nodeMap.current[nodeBId];\n\n if (nodeA.parentId === nodeB.id || nodeB.parentId === nodeA.id) {\n return nodeB.parentId === nodeA.id\n ? [nodeA.id, nodeB.id]\n : [nodeB.id, nodeA.id];\n }\n\n const aFamily = [nodeA.id];\n const bFamily = [nodeB.id];\n\n let aAncestor = nodeA.parentId;\n let bAncestor = nodeB.parentId;\n\n let aAncestorIsCommon = bFamily.indexOf(aAncestor) !== -1;\n let bAncestorIsCommon = aFamily.indexOf(bAncestor) !== -1;\n\n let continueA = true;\n let continueB = true;\n\n while (!bAncestorIsCommon && !aAncestorIsCommon) {\n if (continueA) {\n aFamily.push(aAncestor);\n aAncestorIsCommon = bFamily.indexOf(aAncestor) !== -1;\n continueA = aAncestor !== null;\n if (!aAncestorIsCommon && continueA) {\n aAncestor = nodeMap.current[aAncestor].parentId;\n }\n }\n\n if (continueB && !aAncestorIsCommon) {\n bFamily.push(bAncestor);\n bAncestorIsCommon = aFamily.indexOf(bAncestor) !== -1;\n continueB = bAncestor !== null;\n if (!bAncestorIsCommon && continueB) {\n bAncestor = nodeMap.current[bAncestor].parentId;\n }\n }\n }\n\n const commonAncestor = aAncestorIsCommon ? aAncestor : bAncestor;\n const ancestorFamily = getChildrenIds(commonAncestor);\n\n const aSide = aFamily[aFamily.indexOf(commonAncestor) - 1];\n const bSide = bFamily[bFamily.indexOf(commonAncestor) - 1];\n\n return ancestorFamily.indexOf(aSide) < ancestorFamily.indexOf(bSide)\n ? [nodeAId, nodeBId]\n : [nodeBId, nodeAId];\n },\n []\n );\n\n const getNodesInRange = useCallback(\n (nodeA, nodeB) => {\n if (nodeA && nodeB) {\n const [first, last] = findOrderInTremauxTree(nodeA, nodeB);\n const nodes = [first];\n\n let current = first;\n\n while (current !== last) {\n current = getNextNode(current);\n nodes.push(current);\n }\n\n return nodes;\n }\n return [];\n },\n [findOrderInTremauxTree, getNextNode]\n );\n\n /*\n * Focus Helpers\n */\n const focus = (event, id) => {\n if (id) {\n setFocusedNodeId(id);\n\n if (nodeMap.current[id]?.onFocus) {\n nodeMap.current[id].onFocus(event);\n }\n }\n };\n\n const focusNextNode = (event, id) => focus(event, getNextNode(id));\n const focusPreviousNode = (event, id) => focus(event, getPreviousNode(id));\n const focusFirstNode = (event) => focus(event, getFirstNode());\n const focusLastNode = (event) => focus(event, getLastNode());\n\n const focusByFirstCharacter = (event, id, char) => {\n let start;\n let index;\n const lowercaseChar = char.toLowerCase();\n\n const firstCharIds: string[] = [];\n const firstChars: string[] = [];\n // This really only works since the ids are strings\n Object.keys(firstCharMap.current).forEach((nodeId) => {\n const firstChar = firstCharMap.current[nodeId];\n const map = nodeMap.current[nodeId];\n const visible = map.parentId ? isExpanded(map.parentId) : true;\n const shouldBeSkipped = disabledItemsFocusable\n ? false\n : isDisabled(nodeId);\n\n if (visible && !shouldBeSkipped) {\n firstCharIds.push(nodeId);\n firstChars.push(firstChar);\n }\n });\n\n // Get start index for search based on position of currentItem\n start = firstCharIds.indexOf(id) + 1;\n if (start >= firstCharIds.length) {\n start = 0;\n }\n\n // Check remaining slots in the menu\n index = findNextFirstChar(firstChars, start, lowercaseChar);\n\n // If not found in remaining slots, check from beginning\n if (index === -1) {\n index = findNextFirstChar(firstChars, 0, lowercaseChar);\n }\n\n // If match was found...\n if (index > -1) {\n focus(event, firstCharIds[index]);\n }\n };\n\n /*\n * Expansion Helpers\n */\n const toggleExpansion = useCallback(\n (event, value = focusedNodeId) => {\n let newExpanded;\n\n if (expanded.indexOf(value) !== -1) {\n newExpanded = expanded.filter((id) => id !== value);\n } else {\n newExpanded = [value].concat(expanded);\n }\n\n if (onToggle) {\n onToggle(event, newExpanded);\n }\n\n setExpandedState(newExpanded);\n },\n [expanded, focusedNodeId, onToggle, setExpandedState]\n );\n\n const expandAllSiblings = (event, id) => {\n const map = nodeMap.current[id];\n const siblings = getChildrenIds(map.parentId);\n\n const diff = siblings.filter(\n (child) => isExpandable(child) && !isExpanded(child)\n );\n\n const newExpanded = expanded.concat(diff);\n\n if (diff.length > 0) {\n setExpandedState(newExpanded);\n\n if (onToggle) {\n onToggle(event, newExpanded);\n }\n }\n };\n\n /*\n * Selection Helpers\n */\n const lastSelectedNode = useRef<HTMLDivElement | null>(null);\n const lastSelectionWasRange = useRef(false);\n const currentRangeSelection = useRef<HTMLDivElement[]>([]);\n\n const isDivElement = (element): element is HTMLDivElement => {\n return (element as HTMLDivElement).nodeType === 1;\n };\n\n const handleRangeArrowSelect = useCallback(\n (event, nodes: { start?; next?; current? }) => {\n let base = selected.slice();\n const { start, next, current } = nodes;\n\n if (!next || !current) {\n return;\n }\n\n if (\n isDivElement(current) &&\n currentRangeSelection.current.indexOf(current) === -1\n ) {\n currentRangeSelection.current = [];\n }\n\n if (lastSelectionWasRange.current) {\n if (\n isDivElement(next) &&\n currentRangeSelection.current.indexOf(next) !== -1\n ) {\n base = base.filter((id) => id === start || id !== current);\n currentRangeSelection.current =\n currentRangeSelection.current.filter(\n (id) => id === start || id !== current\n );\n } else {\n base.push(next);\n currentRangeSelection.current.push(next);\n }\n } else {\n base.push(next);\n currentRangeSelection.current.push(current, next);\n }\n\n if (onChange) {\n onChange(\n event,\n base,\n base.map((id) => nodeMap.current[id]?.payload)\n );\n }\n\n setSelectedState(base);\n },\n [onChange, selected, setSelectedState]\n );\n\n const handleRangeSelect = useCallback(\n (event, nodes: { start?; end?; current? }) => {\n let base = selected.slice();\n const { start, end } = nodes;\n // If last selection was a range selection ignore nodes that were selected.\n if (lastSelectionWasRange.current) {\n base = base.filter(\n (id) => currentRangeSelection.current.indexOf(id) === -1\n );\n }\n\n let range = getNodesInRange(start, end);\n range = range.filter((node) => !isDisabled(node));\n currentRangeSelection.current = range;\n let newSelected = base.concat(range);\n newSelected = newSelected.filter(\n (id, i) => newSelected.indexOf(id) === i\n );\n\n if (onChange) {\n onChange(\n event,\n newSelected,\n newSelected.map((id) => nodeMap.current[id]?.payload)\n );\n }\n\n setSelectedState(newSelected);\n },\n [getNodesInRange, isDisabled, onChange, selected, setSelectedState]\n );\n\n const handleMultipleSelect = useCallback(\n (event, value) => {\n let newSelected;\n if (selected.indexOf(value) !== -1) {\n newSelected = selected.filter((id) => id !== value);\n } else {\n newSelected = [value].concat(selected);\n }\n\n if (onChange) {\n onChange(\n event,\n newSelected,\n newSelected.map((id) => nodeMap.current[id]?.payload)\n );\n }\n\n setSelectedState(newSelected);\n },\n [onChange, selected, setSelectedState]\n );\n\n const handleSingleSelect = useCallback(\n (event, value) => {\n const newSelected = multiSelect ? [value] : value;\n if (onChange) {\n const nodeValue = nodeMap.current[newSelected]?.payload;\n onChange(event, newSelected, multiSelect ? [nodeValue] : nodeValue);\n }\n\n setSelectedState(newSelected);\n },\n [multiSelect, onChange, setSelectedState]\n );\n\n const selectNode = useCallback(\n (event, id, multiple = false) => {\n if (id && isSelectable(id)) {\n if (multiple) {\n handleMultipleSelect(event, id);\n } else {\n handleSingleSelect(event, id);\n }\n lastSelectedNode.current = id;\n lastSelectionWasRange.current = false;\n currentRangeSelection.current = [];\n\n return true;\n }\n return false;\n },\n [handleMultipleSelect, handleSingleSelect, isSelectable]\n );\n\n const selectRange = useCallback(\n (\n event,\n nodes: { start?; end?; current?: HTMLDivElement | null },\n stacked = false\n ) => {\n const { start = lastSelectedNode.current, end, current } = nodes;\n if (stacked) {\n handleRangeArrowSelect(event, { start, next: end, current });\n } else if (start != null && end != null) {\n handleRangeSelect(event, { start, end });\n }\n lastSelectionWasRange.current = true;\n },\n [handleRangeArrowSelect, handleRangeSelect]\n );\n\n const rangeSelectToFirst = (event, id) => {\n if (!lastSelectedNode.current) {\n lastSelectedNode.current = id;\n }\n\n const start = lastSelectionWasRange.current\n ? lastSelectedNode.current\n : id;\n\n selectRange(event, {\n start,\n end: getFirstNode(),\n });\n };\n\n const rangeSelectToLast = (event: any, id) => {\n if (!lastSelectedNode.current) {\n lastSelectedNode.current = id;\n }\n\n const start = lastSelectionWasRange.current\n ? lastSelectedNode.current\n : id;\n\n selectRange(event, {\n start,\n end: getLastNode(),\n });\n };\n\n const selectNextNode = (event, id) => {\n if (!isDisabled(getNextNode(id))) {\n selectRange(\n event,\n {\n end: getNextNode(id),\n current: id,\n },\n true\n );\n }\n };\n\n const selectPreviousNode = (event, id) => {\n if (!isDisabled(getPreviousNode(id))) {\n selectRange(\n event,\n {\n end: getPreviousNode(id),\n current: id,\n },\n true\n );\n }\n };\n\n const selectAllNodes = (event) => {\n selectRange(event, { start: getFirstNode(), end: getLastNode() });\n };\n\n /*\n * Mapping Helpers\n */\n const registerNode = useCallback((node) => {\n const {\n id,\n index,\n parentId,\n expandable,\n idAttribute,\n disabled,\n selectable: nodeSelectable,\n onFocus: nodeOnFocus,\n payload,\n } = node;\n\n nodeMap.current[id] = {\n id,\n index,\n parentId,\n expandable,\n idAttribute,\n disabled,\n selectable: nodeSelectable,\n onFocus: nodeOnFocus,\n payload,\n };\n }, []);\n\n const unregisterNode = useCallback((id) => {\n const newMap = { ...nodeMap.current };\n delete newMap[id];\n nodeMap.current = newMap;\n\n setFocusedNodeId((oldFocusedNodeId) => {\n if (\n oldFocusedNodeId === id &&\n treeRef.current &&\n treeRef.current ===\n (treeRef.current.ownerDocument || document).activeElement\n ) {\n return getChildrenIds(null)[0];\n }\n return oldFocusedNodeId;\n });\n }, []);\n\n const mapFirstChar = useCallback((id, firstChar) => {\n firstCharMap.current[id] = firstChar;\n }, []);\n\n const unMapFirstChar = useCallback((id) => {\n const newMap = { ...firstCharMap.current };\n delete newMap[id];\n firstCharMap.current = newMap;\n }, []);\n\n /**\n * Event handlers and Navigation\n */\n const handleNextArrow = (event) => {\n if (isExpandable(focusedNodeId)) {\n if (isExpanded(focusedNodeId)) {\n focusNextNode(event, focusedNodeId);\n } else if (!isDisabled(focusedNodeId)) {\n toggleExpansion(event);\n }\n }\n return true;\n };\n\n const handlePreviousArrow = (event) => {\n if (isExpanded(focusedNodeId) && !isDisabled(focusedNodeId)) {\n toggleExpansion(event, focusedNodeId);\n return true;\n }\n\n const parent = getParent(focusedNodeId);\n if (parent) {\n focus(event, parent);\n return true;\n }\n return false;\n };\n\n const handleKeyDown = (event) => {\n let flag = false;\n const { key } = event;\n\n // If the tree is empty there will be no focused node\n if (\n event.altKey ||\n event.currentTarget !== event.target ||\n !focusedNodeId\n ) {\n return;\n }\n\n const ctrlPressed = event.ctrlKey || event.metaKey;\n switch (key) {\n case \" \":\n if (isSelectable(focusedNodeId) && !isDisabled(focusedNodeId)) {\n if (multiSelect && event.shiftKey) {\n selectRange(event, { end: focusedNodeId });\n flag = true;\n } else if (multiSelect) {\n flag = selectNode(event, focusedNodeId, true);\n } else {\n flag = selectNode(event, focusedNodeId);\n }\n }\n event.stopPropagation();\n break;\n case \"Enter\":\n if (!isDisabled(focusedNodeId)) {\n if (isExpandable(focusedNodeId)) {\n toggleExpansion(event);\n flag = true;\n } else if (isSelectable(focusedNodeId)) {\n if (multiSelect && event.shiftKey) {\n selectRange(event, { end: focusedNodeId });\n flag = true;\n } else if (multiSelect) {\n flag = selectNode(event, focusedNodeId, true);\n } else {\n flag = selectNode(event, focusedNodeId);\n }\n }\n }\n event.stopPropagation();\n break;\n case \"ArrowDown\":\n if (multiSelect && event.shiftKey) {\n selectNextNode(event, focusedNodeId);\n }\n focusNextNode(event, focusedNodeId);\n flag = true;\n break;\n case \"ArrowUp\":\n if (multiSelect && event.shiftKey) {\n selectPreviousNode(event, focusedNodeId);\n }\n focusPreviousNode(event, focusedNodeId);\n flag = true;\n break;\n case \"ArrowRight\":\n flag = handleNextArrow(event);\n break;\n case \"ArrowLeft\":\n flag = handlePreviousArrow(event);\n break;\n case \"Home\":\n if (\n multiSelect &&\n ctrlPressed &&\n event.shiftKey &&\n !isDisabled(focusedNodeId)\n ) {\n rangeSelectToFirst(event, focusedNodeId);\n }\n focusFirstNode(event);\n flag = true;\n break;\n case \"End\":\n if (\n multiSelect &&\n ctrlPressed &&\n event.shiftKey &&\n !isDisabled(focusedNodeId)\n ) {\n rangeSelectToLast(event, focusedNodeId);\n }\n focusLastNode(event);\n flag = true;\n break;\n default:\n if (key === \"*\") {\n expandAllSiblings(event, focusedNodeId);\n flag = true;\n } else if (multiSelect && ctrlPressed && key.toLowerCase() === \"a\") {\n selectAllNodes(event);\n flag = true;\n } else if (\n !ctrlPressed &&\n !event.shiftKey &&\n isPrintableCharacter(key)\n ) {\n focusByFirstCharacter(event, focusedNodeId, key);\n flag = true;\n }\n }\n\n if (flag) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n if (onKeyDown) {\n onKeyDown(event);\n }\n };\n\n const handleFocus = (event) => {\n // if the event bubbled (which is React specific) we don't want to steal focus\n if (event.target === event.currentTarget) {\n const firstSelected = Array.isArray(selected) ? selected[0] : selected;\n focus(event, firstSelected || getNavigableChildrenIds(null)[0]);\n }\n\n if (onFocus) {\n onFocus(event);\n }\n };\n\n const handleBlur = (event) => {\n setFocusedNodeId(null);\n\n if (onBlur) {\n onBlur(event);\n }\n };\n\n const activeDescendant =\n focusedNodeId && nodeMap.current[focusedNodeId]\n ? nodeMap.current[focusedNodeId].idAttribute\n : null;\n\n const treeControlContext = useMemo(\n () => ({\n treeId,\n mode,\n collapsible,\n toggleExpansion,\n multiSelect,\n selectNode: selectable ? selectNode : noopSelection,\n selectRange: selectable ? selectRange : noopSelection,\n disabledItemsFocusable,\n registerNode,\n unregisterNode,\n mapFirstChar,\n unMapFirstChar,\n focus,\n }),\n [\n registerNode,\n unregisterNode,\n mapFirstChar,\n unMapFirstChar,\n toggleExpansion,\n selectable,\n selectNode,\n selectRange,\n mode,\n collapsible,\n multiSelect,\n disabledItemsFocusable,\n treeId,\n ]\n );\n\n const treeStateContext = useMemo(\n () => ({\n isExpanded,\n isSelected,\n isFocused,\n isDisabled,\n isChildSelected,\n }),\n [isDisabled, isExpanded, isFocused, isSelected, isChildSelected]\n );\n\n return (\n <TreeViewControlContext.Provider value={treeControlContext}>\n <TreeViewStateContext.Provider value={treeStateContext}>\n <DescendantProvider>\n <ul\n ref={handleRef}\n id={idProp}\n className={cx(classes.root, className)}\n {...(treeviewMode && {\n id: treeId,\n role: \"tree\",\n \"aria-multiselectable\": multiSelect,\n \"aria-activedescendant\": activeDescendant,\n tabIndex: 0,\n onFocus: handleFocus,\n onBlur: handleBlur,\n onKeyDown: handleKeyDown,\n })}\n {...others}\n >\n {children}\n </ul>\n </DescendantProvider>\n </TreeViewStateContext.Provider>\n </TreeViewControlContext.Provider>\n );\n }\n);\n"],"names":["isPrintableCharacter","string","length","match","findNextFirstChar","firstChars","startIndex","char","i","noopSelection","HvVerticalNavigationTreeView","forwardRef","props","ref","id","idProp","className","classes","classesProp","mode","collapsible","expanded","expandedProp","defaultExpanded","onToggle","selectable","multiSelect","multiSelectProp","selected","selectedProp","defaultSelected","onChange","disabledItemsFocusable","onFocus","onBlur","onKeyDown","children","others","cx","useClasses","treeviewMode","treeId","useUniqueId","treeRef","useRef","handleRef","useForkRef","setExpandedState","useControlled","setSelectedState","focusedNodeId","setFocusedNodeId","useState","nodeMap","firstCharMap","isExpanded","useCallback","Array","isArray","indexOf","isExpandable","current","expandable","isSelected","isSelectable","isDisabled","node","disabled","parentId","isFocused","isChildSelected","startsWith","includes","getChildrenIds","Object","keys","map","key","filter","sort","a","b","index","child","getNavigableChildrenIds","childrenIds","getNextNode","siblings","nextSibling","getPreviousNode","nodeIndex","currentNode","pop","getLastNode","lastNode","getFirstNode","getParent","findOrderInTremauxTree","nodeAId","nodeBId","nodeA","nodeB","aFamily","bFamily","aAncestor","bAncestor","aAncestorIsCommon","bAncestorIsCommon","continueA","continueB","push","commonAncestor","ancestorFamily","aSide","bSide","getNodesInRange","first","last","nodes","focus","event","focusNextNode","focusPreviousNode","focusFirstNode","focusLastNode","focusByFirstCharacter","start","lowercaseChar","toLowerCase","firstCharIds","forEach","nodeId","firstChar","visible","shouldBeSkipped","toggleExpansion","value","newExpanded","concat","expandAllSiblings","diff","lastSelectedNode","lastSelectionWasRange","currentRangeSelection","isDivElement","element","nodeType","handleRangeArrowSelect","base","slice","next","payload","handleRangeSelect","end","range","newSelected","handleMultipleSelect","handleSingleSelect","nodeValue","selectNode","multiple","selectRange","stacked","rangeSelectToFirst","rangeSelectToLast","selectNextNode","selectPreviousNode","selectAllNodes","registerNode","idAttribute","nodeSelectable","nodeOnFocus","unregisterNode","newMap","oldFocusedNodeId","ownerDocument","document","activeElement","mapFirstChar","unMapFirstChar","handleNextArrow","handlePreviousArrow","parent","handleKeyDown","flag","altKey","currentTarget","target","ctrlPressed","ctrlKey","metaKey","shiftKey","stopPropagation","preventDefault","handleFocus","firstSelected","handleBlur","activeDescendant","treeControlContext","useMemo","treeStateContext","root","role","tabIndex"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TreeView.js","sources":["../../../../../src/components/VerticalNavigation/TreeView/TreeView.tsx"],"sourcesContent":["import { forwardRef, useCallback, useMemo, useRef, useState } from \"react\";\n\nimport { useControlled } from \"@core/hooks/useControlled\";\nimport { useUniqueId } from \"@core/hooks/useUniqueId\";\nimport { useForkRef } from \"@core/hooks/useForkRef\";\n\nimport { ExtractNames } from \"@core/utils/classes\";\n\nimport {\n NavigationMode,\n TreeViewControlContext,\n TreeViewStateContext,\n} from \"./TreeViewContext\";\nimport { DescendantProvider } from \"./descendants\";\nimport { staticClasses, useClasses } from \"./TreeView.styles\";\n\nexport { staticClasses as treeViewClasses };\n\nexport type HvVerticalNavigationTreeViewClasses = ExtractNames<\n typeof useClasses\n>;\n\nexport interface HvVerticalNavigationTreeViewProps {\n /**\n * Id to be applied to the root node.\n */\n id?: string;\n /**\n * Class names to be applied.\n */\n className?: string;\n /**\n * A Jss Object used to override or extend the styles applied to the component.\n */\n classes?: HvVerticalNavigationTreeViewClasses;\n /**\n * Modus operandi (role) of the widget instance.\n */\n mode?: NavigationMode;\n /**\n * Enables selection.\n * @default false\n */\n selectable?: boolean;\n /**\n * Enables the simultaneous selection of multiple items.\n * @default false\n */\n multiSelect?: boolean;\n /**\n * The selected nodes' ids.\n *\n * When `multiSelect` is true this takes an array of strings; when false (default) a string.\n */\n selected?: string[] | string;\n /**\n * When uncontrolled, defines the initial selected nodes' ids.\n *\n * When `multiSelect` is true this takes an array of strings; when false (default) a string.\n * @default []\n */\n defaultSelected?: string[] | string;\n /**\n * Can non-leaf nodes be collapsed / expanded.\n */\n collapsible?: boolean;\n /**\n * Callback fired when a tree item is selected.\n *\n * @param {object} event The event source of the callback.\n * @param {string} nodeId The id of the selected node.\n */\n onChange?: any;\n /**\n * Expanded nodes' ids.\n */\n expanded?: string[];\n /**\n * When uncontrolled, defines the initial expanded nodes' ids.\n * @default []\n */\n defaultExpanded?: string[];\n /**\n * Callback fired when tree items are expanded/collapsed.\n *\n * @param {object} event The event source of the callback.\n * @param {array} nodeIds The ids of the expanded nodes (old and new).\n */\n onToggle?: (event, nodeIds) => void;\n /**\n * If `true`, will allow focus on disabled items.\n * @default false\n */\n disabledItemsFocusable?: boolean;\n /**\n * @ignore\n */\n onFocus?: (event: React.FocusEvent<any>) => void;\n /**\n * @ignore\n */\n onBlur?: (event: any) => void;\n /**\n * @ignore\n */\n onKeyDown?: (event: KeyboardEvent) => void;\n /**\n * The content of the component.\n */\n children?: React.ReactNode;\n}\n\nfunction isPrintableCharacter(string) {\n return string && string.length === 1 && string.match(/\\S/);\n}\n\nfunction findNextFirstChar(firstChars, startIndex, char) {\n for (let i = startIndex; i < firstChars.length; i += 1) {\n if (char === firstChars[i]) {\n return i;\n }\n }\n return -1;\n}\n\nfunction noopSelection() {\n return false;\n}\n\nexport const HvVerticalNavigationTreeView = forwardRef(\n (props: HvVerticalNavigationTreeViewProps, ref) => {\n const {\n id: idProp,\n className,\n classes: classesProp,\n\n mode = \"treeview\",\n\n collapsible = false,\n expanded: expandedProp,\n defaultExpanded = [],\n onToggle,\n\n selectable = false,\n multiSelect: multiSelectProp = false,\n selected: selectedProp,\n defaultSelected = [],\n onChange,\n\n disabledItemsFocusable = false,\n\n onFocus,\n onBlur,\n onKeyDown,\n\n children,\n\n ...others\n } = props;\n\n const { classes, cx } = useClasses(classesProp);\n\n const treeviewMode = mode === \"treeview\";\n const multiSelect = selectable && multiSelectProp;\n\n const treeId = useUniqueId(idProp, \"hvtreeview\");\n const treeRef = useRef<HTMLDivElement>(null);\n const handleRef = useForkRef(treeRef, ref);\n\n const [expanded, setExpandedState] = useControlled(\n expandedProp,\n defaultExpanded\n );\n\n const [selected, setSelectedState] = useControlled(\n selectedProp,\n defaultSelected\n );\n\n const [focusedNodeId, setFocusedNodeId] = useState<string | null>(null);\n\n const nodeMap = useRef({});\n\n const firstCharMap = useRef({});\n\n /*\n * Status Helpers\n */\n const isExpanded = useCallback(\n (id) =>\n !collapsible ||\n (Array.isArray(expanded) ? expanded.indexOf(id) !== -1 : false),\n [collapsible, expanded]\n );\n\n const isExpandable = useCallback(\n (id) =>\n collapsible && nodeMap.current[id] && nodeMap.current[id].expandable,\n [collapsible]\n );\n\n const isSelected = useCallback(\n (id) =>\n selectable &&\n (Array.isArray(selected)\n ? selected.indexOf(id) !== -1\n : selected === id),\n [selectable, selected]\n );\n\n const isSelectable = useCallback(\n (id) =>\n selectable && nodeMap.current[id] && nodeMap.current[id].selectable,\n [selectable]\n );\n\n const isDisabled = useCallback((id) => {\n let node = nodeMap.current[id];\n\n // This can be called before the node has been added to the node map.\n if (!node) {\n return false;\n }\n\n if (node.disabled) {\n return true;\n }\n\n while (node.parentId != null) {\n node = nodeMap.current[node.parentId];\n if (node.disabled) {\n return true;\n }\n }\n\n return false;\n }, []);\n\n const isFocused = useCallback(\n (id) => focusedNodeId === id,\n [focusedNodeId]\n );\n\n const isChildSelected = useCallback(\n // the second part of the condition is to ensure that the id we're\n // looking at is actually of a child (ie, there's at least one \"-\")\n (id) => selected.startsWith(id) && selected.includes(\"-\"),\n [selected]\n );\n\n /*\n * Child Helpers\n */\n const getChildrenIds = (id: string | null) =>\n Object.keys(nodeMap.current)\n .map((key) => {\n return nodeMap.current[key];\n })\n .filter((node) => node.parentId === id)\n .sort((a, b) => a.index - b.index)\n .map((child) => child.id);\n\n const getNavigableChildrenIds = useCallback(\n (id: string | null) => {\n let childrenIds = getChildrenIds(id);\n\n if (!disabledItemsFocusable) {\n childrenIds = childrenIds.filter((node) => !isDisabled(node));\n }\n return childrenIds;\n },\n [disabledItemsFocusable, isDisabled]\n );\n\n /*\n * Node Helpers\n */\n const getNextNode = useCallback(\n (id: string) => {\n // If expanded get first child\n if (isExpanded(id) && getNavigableChildrenIds(id).length > 0) {\n return getNavigableChildrenIds(id)[0];\n }\n\n let node = nodeMap.current[id];\n while (node != null) {\n // Try to get next sibling\n const siblings = getNavigableChildrenIds(node.parentId);\n const nextSibling = siblings[siblings.indexOf(node.id) + 1];\n\n if (nextSibling) {\n return nextSibling;\n }\n\n // If the sibling does not exist, go up a level to the parent and try again.\n node = nodeMap.current[node.parentId];\n }\n\n return null;\n },\n [getNavigableChildrenIds, isExpanded]\n );\n\n const getPreviousNode = (id: string) => {\n const node = nodeMap.current[id];\n const siblings = getNavigableChildrenIds(node.parentId);\n const nodeIndex = siblings.indexOf(id);\n\n if (nodeIndex === 0) {\n return node.parentId;\n }\n\n let currentNode = siblings[nodeIndex - 1];\n while (\n isExpanded(currentNode) &&\n getNavigableChildrenIds(currentNode).length > 0\n ) {\n currentNode = getNavigableChildrenIds(currentNode).pop();\n }\n\n return currentNode;\n };\n\n const getLastNode = () => {\n let lastNode = getNavigableChildrenIds(null).pop();\n\n while (isExpanded(lastNode)) {\n lastNode = getNavigableChildrenIds(lastNode).pop();\n }\n return lastNode;\n };\n const getFirstNode = () => getNavigableChildrenIds(null)[0];\n const getParent = (id) => nodeMap.current[id].parentId;\n\n /**\n * This is used to determine the start and end of a selection range so\n * we can get the nodes between the two border nodes.\n *\n * It finds the nodes' common ancestor using\n * a naive implementation of a lowest common ancestor algorithm\n * (https://en.wikipedia.org/wiki/Lowest_common_ancestor).\n * Then compares the ancestor's 2 children that are ancestors of nodeA and NodeB\n * so we can compare their indexes to work out which node comes first in a depth first search.\n * (https://en.wikipedia.org/wiki/Depth-first_search)\n *\n * Another way to put it is which node is shallower in a trémaux tree\n * https://en.wikipedia.org/wiki/Tr%C3%A9maux_tree\n */\n const findOrderInTremauxTree = useCallback(\n (nodeAId: string, nodeBId: string) => {\n if (nodeAId === nodeBId) {\n return [nodeAId, nodeBId];\n }\n\n const nodeA = nodeMap.current[nodeAId];\n const nodeB = nodeMap.current[nodeBId];\n\n if (nodeA.parentId === nodeB.id || nodeB.parentId === nodeA.id) {\n return nodeB.parentId === nodeA.id\n ? [nodeA.id, nodeB.id]\n : [nodeB.id, nodeA.id];\n }\n\n const aFamily = [nodeA.id];\n const bFamily = [nodeB.id];\n\n let aAncestor = nodeA.parentId;\n let bAncestor = nodeB.parentId;\n\n let aAncestorIsCommon = bFamily.indexOf(aAncestor) !== -1;\n let bAncestorIsCommon = aFamily.indexOf(bAncestor) !== -1;\n\n let continueA = true;\n let continueB = true;\n\n while (!bAncestorIsCommon && !aAncestorIsCommon) {\n if (continueA) {\n aFamily.push(aAncestor);\n aAncestorIsCommon = bFamily.indexOf(aAncestor) !== -1;\n continueA = aAncestor !== null;\n if (!aAncestorIsCommon && continueA) {\n aAncestor = nodeMap.current[aAncestor].parentId;\n }\n }\n\n if (continueB && !aAncestorIsCommon) {\n bFamily.push(bAncestor);\n bAncestorIsCommon = aFamily.indexOf(bAncestor) !== -1;\n continueB = bAncestor !== null;\n if (!bAncestorIsCommon && continueB) {\n bAncestor = nodeMap.current[bAncestor].parentId;\n }\n }\n }\n\n const commonAncestor = aAncestorIsCommon ? aAncestor : bAncestor;\n const ancestorFamily = getChildrenIds(commonAncestor);\n\n const aSide = aFamily[aFamily.indexOf(commonAncestor) - 1];\n const bSide = bFamily[bFamily.indexOf(commonAncestor) - 1];\n\n return ancestorFamily.indexOf(aSide) < ancestorFamily.indexOf(bSide)\n ? [nodeAId, nodeBId]\n : [nodeBId, nodeAId];\n },\n []\n );\n\n const getNodesInRange = useCallback(\n (nodeA, nodeB) => {\n if (nodeA && nodeB) {\n const [first, last] = findOrderInTremauxTree(nodeA, nodeB);\n const nodes = [first];\n\n let current = first;\n\n while (current !== last) {\n current = getNextNode(current);\n nodes.push(current);\n }\n\n return nodes;\n }\n return [];\n },\n [findOrderInTremauxTree, getNextNode]\n );\n\n /*\n * Focus Helpers\n */\n const focus = (event, id) => {\n if (id) {\n setFocusedNodeId(id);\n\n if (nodeMap.current[id]?.onFocus) {\n nodeMap.current[id].onFocus(event);\n }\n }\n };\n\n const focusNextNode = (event, id) => focus(event, getNextNode(id));\n const focusPreviousNode = (event, id) => focus(event, getPreviousNode(id));\n const focusFirstNode = (event) => focus(event, getFirstNode());\n const focusLastNode = (event) => focus(event, getLastNode());\n\n const focusByFirstCharacter = (event, id, char) => {\n let start;\n let index;\n const lowercaseChar = char.toLowerCase();\n\n const firstCharIds: string[] = [];\n const firstChars: string[] = [];\n // This really only works since the ids are strings\n Object.keys(firstCharMap.current).forEach((nodeId) => {\n const firstChar = firstCharMap.current[nodeId];\n const map = nodeMap.current[nodeId];\n const visible = map.parentId ? isExpanded(map.parentId) : true;\n const shouldBeSkipped = disabledItemsFocusable\n ? false\n : isDisabled(nodeId);\n\n if (visible && !shouldBeSkipped) {\n firstCharIds.push(nodeId);\n firstChars.push(firstChar);\n }\n });\n\n // Get start index for search based on position of currentItem\n start = firstCharIds.indexOf(id) + 1;\n if (start >= firstCharIds.length) {\n start = 0;\n }\n\n // Check remaining slots in the menu\n index = findNextFirstChar(firstChars, start, lowercaseChar);\n\n // If not found in remaining slots, check from beginning\n if (index === -1) {\n index = findNextFirstChar(firstChars, 0, lowercaseChar);\n }\n\n // If match was found...\n if (index > -1) {\n focus(event, firstCharIds[index]);\n }\n };\n\n /*\n * Expansion Helpers\n */\n const toggleExpansion = useCallback(\n (event, value = focusedNodeId) => {\n let newExpanded;\n\n if (expanded.indexOf(value) !== -1) {\n newExpanded = expanded.filter((id) => id !== value);\n } else {\n newExpanded = [value].concat(expanded);\n }\n\n if (onToggle) {\n onToggle(event, newExpanded);\n }\n\n setExpandedState(newExpanded);\n },\n [expanded, focusedNodeId, onToggle, setExpandedState]\n );\n\n const expandAllSiblings = (event, id) => {\n const map = nodeMap.current[id];\n const siblings = getChildrenIds(map.parentId);\n\n const diff = siblings.filter(\n (child) => isExpandable(child) && !isExpanded(child)\n );\n\n const newExpanded = expanded.concat(diff);\n\n if (diff.length > 0) {\n setExpandedState(newExpanded);\n\n if (onToggle) {\n onToggle(event, newExpanded);\n }\n }\n };\n\n /*\n * Selection Helpers\n */\n const lastSelectedNode = useRef<HTMLDivElement | null>(null);\n const lastSelectionWasRange = useRef(false);\n const currentRangeSelection = useRef<HTMLDivElement[]>([]);\n\n const isDivElement = (element): element is HTMLDivElement => {\n return (element as HTMLDivElement).nodeType === 1;\n };\n\n const handleRangeArrowSelect = useCallback(\n (event, nodes: { start?; next?; current? }) => {\n let base = selected.slice();\n const { start, next, current } = nodes;\n\n if (!next || !current) {\n return;\n }\n\n if (\n isDivElement(current) &&\n currentRangeSelection.current.indexOf(current) === -1\n ) {\n currentRangeSelection.current = [];\n }\n\n if (lastSelectionWasRange.current) {\n if (\n isDivElement(next) &&\n currentRangeSelection.current.indexOf(next) !== -1\n ) {\n base = base.filter((id) => id === start || id !== current);\n currentRangeSelection.current =\n currentRangeSelection.current.filter(\n (id) => id === start || id !== current\n );\n } else {\n base.push(next);\n currentRangeSelection.current.push(next);\n }\n } else {\n base.push(next);\n currentRangeSelection.current.push(current, next);\n }\n\n if (onChange) {\n onChange(\n event,\n base,\n base.map((id) => nodeMap.current[id]?.payload)\n );\n }\n\n setSelectedState(base);\n },\n [onChange, selected, setSelectedState]\n );\n\n const handleRangeSelect = useCallback(\n (event, nodes: { start?; end?; current? }) => {\n let base = selected.slice();\n const { start, end } = nodes;\n // If last selection was a range selection ignore nodes that were selected.\n if (lastSelectionWasRange.current) {\n base = base.filter(\n (id) => currentRangeSelection.current.indexOf(id) === -1\n );\n }\n\n let range = getNodesInRange(start, end);\n range = range.filter((node) => !isDisabled(node));\n currentRangeSelection.current = range;\n let newSelected = base.concat(range);\n newSelected = newSelected.filter(\n (id, i) => newSelected.indexOf(id) === i\n );\n\n if (onChange) {\n onChange(\n event,\n newSelected,\n newSelected.map((id) => nodeMap.current[id]?.payload)\n );\n }\n\n setSelectedState(newSelected);\n },\n [getNodesInRange, isDisabled, onChange, selected, setSelectedState]\n );\n\n const handleMultipleSelect = useCallback(\n (event, value) => {\n let newSelected;\n if (selected.indexOf(value) !== -1) {\n newSelected = selected.filter((id) => id !== value);\n } else {\n newSelected = [value].concat(selected);\n }\n\n if (onChange) {\n onChange(\n event,\n newSelected,\n newSelected.map((id) => nodeMap.current[id]?.payload)\n );\n }\n\n setSelectedState(newSelected);\n },\n [onChange, selected, setSelectedState]\n );\n\n const handleSingleSelect = useCallback(\n (event, value) => {\n const newSelected = multiSelect ? [value] : value;\n if (onChange) {\n const nodeValue = nodeMap.current[newSelected]?.payload;\n onChange(event, newSelected, multiSelect ? [nodeValue] : nodeValue);\n }\n\n setSelectedState(newSelected);\n },\n [multiSelect, onChange, setSelectedState]\n );\n\n const selectNode = useCallback(\n (event, id, multiple = false) => {\n if (id && isSelectable(id)) {\n if (multiple) {\n handleMultipleSelect(event, id);\n } else {\n handleSingleSelect(event, id);\n }\n lastSelectedNode.current = id;\n lastSelectionWasRange.current = false;\n currentRangeSelection.current = [];\n\n return true;\n }\n return false;\n },\n [handleMultipleSelect, handleSingleSelect, isSelectable]\n );\n\n const selectRange = useCallback(\n (\n event,\n nodes: { start?; end?; current?: HTMLDivElement | null },\n stacked = false\n ) => {\n const { start = lastSelectedNode.current, end, current } = nodes;\n if (stacked) {\n handleRangeArrowSelect(event, { start, next: end, current });\n } else if (start != null && end != null) {\n handleRangeSelect(event, { start, end });\n }\n lastSelectionWasRange.current = true;\n },\n [handleRangeArrowSelect, handleRangeSelect]\n );\n\n const rangeSelectToFirst = (event, id) => {\n if (!lastSelectedNode.current) {\n lastSelectedNode.current = id;\n }\n\n const start = lastSelectionWasRange.current\n ? lastSelectedNode.current\n : id;\n\n selectRange(event, {\n start,\n end: getFirstNode(),\n });\n };\n\n const rangeSelectToLast = (event: any, id) => {\n if (!lastSelectedNode.current) {\n lastSelectedNode.current = id;\n }\n\n const start = lastSelectionWasRange.current\n ? lastSelectedNode.current\n : id;\n\n selectRange(event, {\n start,\n end: getLastNode(),\n });\n };\n\n const selectNextNode = (event, id) => {\n if (!isDisabled(getNextNode(id))) {\n selectRange(\n event,\n {\n end: getNextNode(id),\n current: id,\n },\n true\n );\n }\n };\n\n const selectPreviousNode = (event, id) => {\n if (!isDisabled(getPreviousNode(id))) {\n selectRange(\n event,\n {\n end: getPreviousNode(id),\n current: id,\n },\n true\n );\n }\n };\n\n const selectAllNodes = (event) => {\n selectRange(event, { start: getFirstNode(), end: getLastNode() });\n };\n\n /*\n * Mapping Helpers\n */\n const registerNode = useCallback((node) => {\n const {\n id,\n index,\n parentId,\n expandable,\n idAttribute,\n disabled,\n selectable: nodeSelectable,\n onFocus: nodeOnFocus,\n payload,\n } = node;\n\n nodeMap.current[id] = {\n id,\n index,\n parentId,\n expandable,\n idAttribute,\n disabled,\n selectable: nodeSelectable,\n onFocus: nodeOnFocus,\n payload,\n };\n }, []);\n\n const unregisterNode = useCallback((id) => {\n const newMap = { ...nodeMap.current };\n delete newMap[id];\n nodeMap.current = newMap;\n\n setFocusedNodeId((oldFocusedNodeId) => {\n if (\n oldFocusedNodeId === id &&\n treeRef.current &&\n treeRef.current ===\n (treeRef.current.ownerDocument || document).activeElement\n ) {\n return getChildrenIds(null)[0];\n }\n return oldFocusedNodeId;\n });\n }, []);\n\n const mapFirstChar = useCallback((id, firstChar) => {\n firstCharMap.current[id] = firstChar;\n }, []);\n\n const unMapFirstChar = useCallback((id) => {\n const newMap = { ...firstCharMap.current };\n delete newMap[id];\n firstCharMap.current = newMap;\n }, []);\n\n /**\n * Event handlers and Navigation\n */\n const handleNextArrow = (event) => {\n if (isExpandable(focusedNodeId)) {\n if (isExpanded(focusedNodeId)) {\n focusNextNode(event, focusedNodeId);\n } else if (!isDisabled(focusedNodeId)) {\n toggleExpansion(event);\n }\n }\n return true;\n };\n\n const handlePreviousArrow = (event) => {\n if (isExpanded(focusedNodeId) && !isDisabled(focusedNodeId)) {\n toggleExpansion(event, focusedNodeId);\n return true;\n }\n\n const parent = getParent(focusedNodeId);\n if (parent) {\n focus(event, parent);\n return true;\n }\n return false;\n };\n\n const handleKeyDown = (event) => {\n let flag = false;\n const { key } = event;\n\n // If the tree is empty there will be no focused node\n if (\n event.altKey ||\n event.currentTarget !== event.target ||\n !focusedNodeId\n ) {\n return;\n }\n\n const ctrlPressed = event.ctrlKey || event.metaKey;\n switch (key) {\n case \" \":\n if (isSelectable(focusedNodeId) && !isDisabled(focusedNodeId)) {\n if (multiSelect && event.shiftKey) {\n selectRange(event, { end: focusedNodeId });\n flag = true;\n } else if (multiSelect) {\n flag = selectNode(event, focusedNodeId, true);\n } else {\n flag = selectNode(event, focusedNodeId);\n }\n }\n event.stopPropagation();\n break;\n case \"Enter\":\n if (!isDisabled(focusedNodeId)) {\n if (isExpandable(focusedNodeId)) {\n toggleExpansion(event);\n flag = true;\n } else if (isSelectable(focusedNodeId)) {\n if (multiSelect && event.shiftKey) {\n selectRange(event, { end: focusedNodeId });\n flag = true;\n } else if (multiSelect) {\n flag = selectNode(event, focusedNodeId, true);\n } else {\n flag = selectNode(event, focusedNodeId);\n }\n }\n }\n event.stopPropagation();\n break;\n case \"ArrowDown\":\n if (multiSelect && event.shiftKey) {\n selectNextNode(event, focusedNodeId);\n }\n focusNextNode(event, focusedNodeId);\n flag = true;\n break;\n case \"ArrowUp\":\n if (multiSelect && event.shiftKey) {\n selectPreviousNode(event, focusedNodeId);\n }\n focusPreviousNode(event, focusedNodeId);\n flag = true;\n break;\n case \"ArrowRight\":\n flag = handleNextArrow(event);\n break;\n case \"ArrowLeft\":\n flag = handlePreviousArrow(event);\n break;\n case \"Home\":\n if (\n multiSelect &&\n ctrlPressed &&\n event.shiftKey &&\n !isDisabled(focusedNodeId)\n ) {\n rangeSelectToFirst(event, focusedNodeId);\n }\n focusFirstNode(event);\n flag = true;\n break;\n case \"End\":\n if (\n multiSelect &&\n ctrlPressed &&\n event.shiftKey &&\n !isDisabled(focusedNodeId)\n ) {\n rangeSelectToLast(event, focusedNodeId);\n }\n focusLastNode(event);\n flag = true;\n break;\n default:\n if (key === \"*\") {\n expandAllSiblings(event, focusedNodeId);\n flag = true;\n } else if (multiSelect && ctrlPressed && key.toLowerCase() === \"a\") {\n selectAllNodes(event);\n flag = true;\n } else if (\n !ctrlPressed &&\n !event.shiftKey &&\n isPrintableCharacter(key)\n ) {\n focusByFirstCharacter(event, focusedNodeId, key);\n flag = true;\n }\n }\n\n if (flag) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n if (onKeyDown) {\n onKeyDown(event);\n }\n };\n\n const handleFocus = (event) => {\n // if the event bubbled (which is React specific) we don't want to steal focus\n if (event.target === event.currentTarget) {\n const firstSelected = Array.isArray(selected) ? selected[0] : selected;\n focus(event, firstSelected || getNavigableChildrenIds(null)[0]);\n }\n\n if (onFocus) {\n onFocus(event);\n }\n };\n\n const handleBlur = (event) => {\n setFocusedNodeId(null);\n\n if (onBlur) {\n onBlur(event);\n }\n };\n\n const activeDescendant =\n focusedNodeId && nodeMap.current[focusedNodeId]\n ? nodeMap.current[focusedNodeId].idAttribute\n : null;\n\n const treeControlContext = useMemo(\n () => ({\n treeId,\n mode,\n collapsible,\n toggleExpansion,\n multiSelect,\n selectNode: selectable ? selectNode : noopSelection,\n selectRange: selectable ? selectRange : noopSelection,\n disabledItemsFocusable,\n registerNode,\n unregisterNode,\n mapFirstChar,\n unMapFirstChar,\n focus,\n }),\n [\n registerNode,\n unregisterNode,\n mapFirstChar,\n unMapFirstChar,\n toggleExpansion,\n selectable,\n selectNode,\n selectRange,\n mode,\n collapsible,\n multiSelect,\n disabledItemsFocusable,\n treeId,\n ]\n );\n\n const treeStateContext = useMemo(\n () => ({\n isExpanded,\n isSelected,\n isFocused,\n isDisabled,\n isChildSelected,\n }),\n [isDisabled, isExpanded, isFocused, isSelected, isChildSelected]\n );\n\n return (\n <TreeViewControlContext.Provider value={treeControlContext}>\n <TreeViewStateContext.Provider value={treeStateContext}>\n <DescendantProvider>\n <ul\n ref={handleRef}\n id={idProp}\n className={cx(classes.root, className)}\n {...(treeviewMode && {\n id: treeId,\n role: \"tree\",\n \"aria-multiselectable\": multiSelect,\n \"aria-activedescendant\": activeDescendant,\n tabIndex: 0,\n onFocus: handleFocus,\n onBlur: handleBlur,\n onKeyDown: handleKeyDown,\n })}\n {...others}\n >\n {children}\n </ul>\n </DescendantProvider>\n </TreeViewStateContext.Provider>\n </TreeViewControlContext.Provider>\n );\n }\n);\n"],"names":["isPrintableCharacter","string","length","match","findNextFirstChar","firstChars","startIndex","char","i","noopSelection","HvVerticalNavigationTreeView","forwardRef","props","ref","id","idProp","className","classes","classesProp","mode","collapsible","expanded","expandedProp","defaultExpanded","onToggle","selectable","multiSelect","multiSelectProp","selected","selectedProp","defaultSelected","onChange","disabledItemsFocusable","onFocus","onBlur","onKeyDown","children","others","cx","useClasses","treeviewMode","treeId","useUniqueId","treeRef","useRef","handleRef","useForkRef","setExpandedState","useControlled","setSelectedState","focusedNodeId","setFocusedNodeId","useState","nodeMap","firstCharMap","isExpanded","useCallback","Array","isArray","indexOf","isExpandable","current","expandable","isSelected","isSelectable","isDisabled","node","disabled","parentId","isFocused","isChildSelected","startsWith","includes","getChildrenIds","Object","keys","map","key","filter","sort","a","b","index","child","getNavigableChildrenIds","childrenIds","getNextNode","siblings","nextSibling","getPreviousNode","nodeIndex","currentNode","pop","getLastNode","lastNode","getFirstNode","getParent","findOrderInTremauxTree","nodeAId","nodeBId","nodeA","nodeB","aFamily","bFamily","aAncestor","bAncestor","aAncestorIsCommon","bAncestorIsCommon","continueA","continueB","push","commonAncestor","ancestorFamily","aSide","bSide","getNodesInRange","first","last","nodes","focus","event","focusNextNode","focusPreviousNode","focusFirstNode","focusLastNode","focusByFirstCharacter","start","lowercaseChar","toLowerCase","firstCharIds","forEach","nodeId","firstChar","visible","shouldBeSkipped","toggleExpansion","value","newExpanded","concat","expandAllSiblings","diff","lastSelectedNode","lastSelectionWasRange","currentRangeSelection","isDivElement","element","nodeType","handleRangeArrowSelect","base","slice","next","payload","handleRangeSelect","end","range","newSelected","handleMultipleSelect","handleSingleSelect","nodeValue","selectNode","multiple","selectRange","stacked","rangeSelectToFirst","rangeSelectToLast","selectNextNode","selectPreviousNode","selectAllNodes","registerNode","idAttribute","nodeSelectable","nodeOnFocus","unregisterNode","newMap","oldFocusedNodeId","ownerDocument","document","activeElement","mapFirstChar","unMapFirstChar","handleNextArrow","handlePreviousArrow","parent","handleKeyDown","flag","altKey","currentTarget","target","ctrlPressed","ctrlKey","metaKey","shiftKey","stopPropagation","preventDefault","handleFocus","firstSelected","handleBlur","activeDescendant","treeControlContext","useMemo","treeStateContext","root","role","tabIndex"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TreeView.styles.js","sources":["../../../../../src/components/VerticalNavigation/TreeView/TreeView.styles.tsx"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"TreeView.styles.js","sources":["../../../../../src/components/VerticalNavigation/TreeView/TreeView.styles.tsx"],"sourcesContent":["import { theme } from \"@hitachivantara/uikit-styles\";\n\nimport { createClasses } from \"@core/utils/classes\";\n\nexport const { staticClasses, useClasses } = createClasses(\n \"HvVerticalNavigationTreeView\",\n {\n root: {\n display: \"block\",\n background: theme.colors.atmo1,\n padding: `0px`,\n margin: \"0\",\n listStyle: \"none\",\n\n outline: \"none\",\n },\n }\n);\n"],"names":["staticClasses","useClasses","createClasses","root","display","background","theme","colors","atmo1","padding","margin","listStyle","outline"],"mappings":";;AAIa,MAAA;AAAA,EAAEA;AAAAA,EAAeC;AAAW,IAAIC,cAC3C,gCACA;AAAA,EACEC,MAAM;AAAA,IACJC,SAAS;AAAA,IACTC,YAAYC,MAAMC,OAAOC;AAAAA,IACzBC,SAAU;AAAA,IACVC,QAAQ;AAAA,IACRC,WAAW;AAAA,IAEXC,SAAS;AAAA,EACX;AACF,CACF;"}
|
|
@@ -112,9 +112,8 @@ const HvVerticalNavigationTreeViewItem = forwardRef((props, ref) => {
|
|
|
112
112
|
return void 0;
|
|
113
113
|
}, [registerNode, unregisterNode, parentId, index, nodeId, expandable, disabledProp, id, selectable, onFocus, payload]);
|
|
114
114
|
useEffect(() => {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
mapFirstChar(nodeId, (_b = contentRef.current) == null ? void 0 : _b.textContent.substring(0, 1).toLowerCase());
|
|
115
|
+
if (mapFirstChar && unMapFirstChar && label && contentRef.current?.textContent) {
|
|
116
|
+
mapFirstChar(nodeId, contentRef.current?.textContent.substring(0, 1).toLowerCase());
|
|
118
117
|
return () => {
|
|
119
118
|
unMapFirstChar(nodeId);
|
|
120
119
|
};
|
|
@@ -228,20 +227,20 @@ const HvVerticalNavigationTreeViewItem = forwardRef((props, ref) => {
|
|
|
228
227
|
} : {
|
|
229
228
|
tabIndex: selectable || expandable ? 0 : -1,
|
|
230
229
|
onKeyDown: handleKeyDown,
|
|
231
|
-
"aria-current": selectable && selected || !isOpen &&
|
|
230
|
+
"aria-current": selectable && selected || !isOpen && isChildSelected?.(nodeId) ? href ? "page" : true : void 0,
|
|
232
231
|
"aria-expanded": expandable ? expanded : void 0,
|
|
233
232
|
"aria-controls": isOpen && expandable ? setId(id, "group") : void 0,
|
|
234
|
-
"aria-label": payload
|
|
233
|
+
"aria-label": payload?.label
|
|
235
234
|
}, children: [
|
|
236
|
-
/* @__PURE__ */ jsx(IconWrapper, { icon: useIcons && icon, label: payload
|
|
235
|
+
/* @__PURE__ */ jsx(IconWrapper, { icon: useIcons && icon, label: payload?.label, hasChildren: Boolean(children), showAvatar: !icon && useIcons, isOpen, disableTooltip }),
|
|
237
236
|
isOpen && /* @__PURE__ */ jsx("div", { className: cx(classes.label, {
|
|
238
237
|
[classes.labelIcon]: useIcons,
|
|
239
238
|
[classes.labelExpandable]: !!expandable
|
|
240
239
|
}), children: label }),
|
|
241
240
|
isOpen && expandable && (expanded ? /* @__PURE__ */ jsx(DropUpXS, {}) : /* @__PURE__ */ jsx(DropDownXS, {}))
|
|
242
241
|
] });
|
|
243
|
-
}, [id, href, target, cx, classes.content, classes.link, classes.minimized, classes.label, classes.labelIcon, classes.labelExpandable, disabled, handleClick, handleMouseDown, expandable, icon, level, collapsible, treeviewMode, handleFocus, selectable, handleKeyDown, selected, expanded, label, disableTooltip, payload
|
|
244
|
-
const renderedChildren = useMemo(() => children && /* @__PURE__ */ jsx("ul", { id: setId(id, "group"), className: classes.group, role: treeviewMode ? "group" : void 0, children }), [children, classes
|
|
242
|
+
}, [id, href, target, cx, classes.content, classes.link, classes.minimized, classes.label, classes.labelIcon, classes.labelExpandable, disabled, handleClick, handleMouseDown, expandable, icon, level, collapsible, treeviewMode, handleFocus, selectable, handleKeyDown, selected, expanded, label, disableTooltip, payload?.label, children, isOpen, useIcons, isChildSelected, nodeId]);
|
|
243
|
+
const renderedChildren = useMemo(() => children && /* @__PURE__ */ jsx("ul", { id: setId(id, "group"), className: classes.group, role: treeviewMode ? "group" : void 0, children }), [children, classes?.group, id, treeviewMode]);
|
|
245
244
|
return /* @__PURE__ */ jsxs("li", { ref: handleRef, id: id ?? void 0, className: cx(classes.node, {
|
|
246
245
|
[classes.disabled]: disabled,
|
|
247
246
|
[classes.expandable]: expandable,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TreeViewItem.js","sources":["../../../../../src/components/VerticalNavigation/TreeView/TreeViewItem.tsx"],"sourcesContent":["import {\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport { DropDownXS, DropUpXS } from \"@hitachivantara/uikit-react-icons\";\n\nimport { useForkRef } from \"@core/hooks/useForkRef\";\nimport { setId } from \"@core/utils/setId\";\n\nimport { ExtractNames } from \"@core/utils/classes\";\nimport { HvTypography } from \"@core/components/Typography\";\nimport { useDefaultProps } from \"@core/hooks\";\nimport { staticClasses, useClasses } from \"./TreeViewItem.styles\";\nimport { DescendantProvider, useDescendant } from \"./descendants\";\nimport {\n TreeViewControlContext,\n TreeViewStateContext,\n} from \"./TreeViewContext\";\nimport { VerticalNavigationContext } from \"../VerticalNavigationContext\";\nimport { IconWrapper } from \"./IconWrapper\";\n\nexport { staticClasses as treeViewItemClasses };\n\nexport type HvVerticalNavigationTreeViewItemClasses = ExtractNames<\n typeof useClasses\n>;\n\nexport interface HvVerticalNavigationTreeViewItemProps {\n /**\n * Id to be applied to the root node.\n */\n id?: string;\n /**\n * Class names to be applied.\n */\n className?: string;\n /**\n * A Jss Object used to override or extend the styles applied to the Radio button.\n */\n classes?: HvVerticalNavigationTreeViewItemClasses;\n /**\n * Is the node disabled.\n */\n disabled?: boolean;\n /**\n * Can the node be selected.\n */\n selectable?: boolean;\n /**\n * The id of the node.\n */\n nodeId?: string;\n /**\n * The icon to display next to the node's label.\n */\n icon?: React.ReactNode;\n /**\n * The item label.\n */\n label?: React.ReactNode;\n /**\n * The url for the link.\n */\n href?: string;\n /**\n * The behavior when opening a link.\n */\n target?: string;\n /**\n * The node payload.\n */\n payload?: any;\n /**\n * @ignore\n */\n onClick?: any;\n /**\n * @ignore\n */\n onMouseDown?: any;\n /**\n * @ignore\n */\n onFocus?: any;\n /**\n * The content of the component.\n */\n children?: React.ReactNode;\n /**\n * @ignore\n */\n onMouseEnter?: any;\n /**\n * Disables the appearence of a tooltip on hovering an element ( Only applicable when the in collapsed mode)\n */\n disableTooltip?: boolean;\n}\n\nconst preventSelection = (event, disabled) => {\n if (event.shiftKey || event.ctrlKey || event.metaKey || disabled) {\n // Prevent text selection\n event.preventDefault();\n }\n};\n\nexport const HvVerticalNavigationTreeViewItem = forwardRef(\n (props: HvVerticalNavigationTreeViewItemProps, ref) => {\n const {\n id: idProp,\n className,\n classes: classesProp,\n\n disabled: disabledProp = false,\n\n selectable: selectableProp,\n\n nodeId,\n icon = null,\n label,\n href,\n target,\n payload,\n\n onClick,\n onMouseDown,\n onFocus,\n\n children,\n\n disableTooltip,\n\n ...others\n } = useDefaultProps(\"HvVerticalNavigationTreeViewItem\", props);\n\n const { classes, cx } = useClasses(classesProp);\n\n const treeViewControlContext = useContext(TreeViewControlContext);\n const { isExpanded, isSelected, isFocused, isDisabled, isChildSelected } =\n useContext(TreeViewStateContext);\n\n const {\n treeId,\n mode,\n collapsible,\n toggleExpansion,\n multiSelect,\n selectNode,\n selectRange,\n disabledItemsFocusable,\n registerNode,\n unregisterNode,\n mapFirstChar,\n unMapFirstChar,\n focus,\n } = treeViewControlContext;\n\n const treeviewMode = mode === \"treeview\";\n\n let id: string | null = null;\n\n if (idProp != null) {\n id = idProp;\n } else if (treeId && nodeId) {\n id = `${treeId}-${nodeId}`;\n }\n\n const [treeitemElement, setTreeitemElement] = useState(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const handleRef = useForkRef(setTreeitemElement, ref);\n\n const descendant = useMemo(\n () => ({\n element: treeitemElement,\n id: nodeId,\n }),\n [nodeId, treeitemElement]\n );\n\n const { isOpen, useIcons } = useContext(VerticalNavigationContext);\n\n const { index, parentId, level } = useDescendant(descendant);\n\n const expandable = collapsible && Array.isArray(children);\n const expanded = isExpanded ? isExpanded(nodeId) : false;\n const focused = isFocused ? isFocused(nodeId) : false;\n const selected = isSelected ? isSelected(nodeId) : false;\n const disabled = isDisabled ? isDisabled(nodeId) : false;\n\n const selectable =\n selectableProp != null\n ? selectableProp\n : !collapsible || !expandable || !isOpen;\n\n useEffect(() => {\n // On the first render a node's index will be -1. We want to wait for the real index.\n if (registerNode && unregisterNode && index !== -1) {\n registerNode({\n id: nodeId,\n idAttribute: id,\n index,\n parentId,\n selectable,\n expandable,\n disabled: disabledProp,\n onFocus,\n payload,\n });\n\n return () => {\n unregisterNode(nodeId);\n };\n }\n\n return undefined;\n }, [\n registerNode,\n unregisterNode,\n parentId,\n index,\n nodeId,\n expandable,\n disabledProp,\n id,\n selectable,\n onFocus,\n payload,\n ]);\n\n useEffect(() => {\n if (\n mapFirstChar &&\n unMapFirstChar &&\n label &&\n contentRef.current?.textContent\n ) {\n mapFirstChar(\n nodeId,\n contentRef.current?.textContent.substring(0, 1).toLowerCase()\n );\n\n return () => {\n unMapFirstChar(nodeId);\n };\n }\n return undefined;\n }, [mapFirstChar, unMapFirstChar, nodeId, label]);\n\n let ariaSelected;\n if (multiSelect) {\n ariaSelected = selected;\n } else if (selected) {\n /* single-selection trees unset aria-selected on un-selected items.\n *\n * If the tree does not support multiple selection, aria-selected\n * is set to true for the selected node and it is not present on any other node in the tree.\n * Source: https://www.w3.org/TR/wai-aria-practices/#TreeView\n */\n ariaSelected = true;\n }\n\n const handleFocus = useCallback(\n (event) => {\n // DOM focus stays on the tree which manages focus with aria-activedescendant\n if (event.target === event.currentTarget) {\n (event.target.ownerDocument || document)\n .getElementById(treeId)\n .focus({ preventScroll: true });\n }\n\n const unfocusable = !disabledItemsFocusable && disabled;\n if (\n !focused &&\n event.currentTarget === event.target &&\n !unfocusable &&\n focus\n ) {\n focus(event, nodeId);\n }\n },\n [disabled, disabledItemsFocusable, focus, focused, nodeId, treeId]\n );\n\n const handleExpansion = useCallback(\n (event) => {\n if (!disabled) {\n if (treeviewMode && !focused && focus) {\n focus(event, nodeId);\n }\n\n const multiple =\n multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);\n\n // If already expanded and trying to toggle selection don't close\n if (\n expandable &&\n isOpen &&\n !(multiple && isExpanded && isExpanded(nodeId))\n ) {\n if (toggleExpansion) toggleExpansion(event, nodeId);\n }\n }\n },\n [\n disabled,\n expandable,\n focus,\n focused,\n isExpanded,\n multiSelect,\n nodeId,\n toggleExpansion,\n treeviewMode,\n isOpen,\n ]\n );\n\n const handleSelection = useCallback(\n (event) => {\n if (selectable && !disabled) {\n if (treeviewMode && !focused && focus) {\n focus(event, nodeId);\n }\n\n const multiple =\n multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);\n\n if (multiple) {\n if (event.shiftKey) {\n if (selectRange) return selectRange(event, { end: nodeId });\n } else if (selectNode) return selectNode(event, nodeId, true);\n } else if (selectNode) return selectNode(event, nodeId);\n } else {\n return false;\n }\n },\n [\n disabled,\n focus,\n focused,\n multiSelect,\n nodeId,\n selectNode,\n selectRange,\n selectable,\n treeviewMode,\n ]\n );\n\n const handleMouseDown = useCallback(\n (event) => {\n preventSelection(event, disabled);\n\n if (onMouseDown) {\n onMouseDown(event);\n }\n },\n [disabled, onMouseDown]\n );\n\n const handleClick = useCallback(\n (event) => {\n if (!disabled) {\n if (expandable && isOpen) {\n handleExpansion(event);\n }\n\n if (selectable) {\n handleSelection(event);\n }\n }\n\n if (onClick) {\n onClick(event);\n }\n },\n [\n disabled,\n expandable,\n handleExpansion,\n handleSelection,\n onClick,\n selectable,\n isOpen,\n ]\n );\n\n const handleKeyDown = useCallback(\n (event) => {\n let isEventHandled = false;\n const { key } = event;\n\n if (\n event.altKey ||\n event.ctrlKey ||\n event.metaKey ||\n event.currentTarget !== event.target\n ) {\n return;\n }\n if (contentRef.current === event.currentTarget) {\n if (key === \"Enter\" || key === \" \") {\n if (expandable && isOpen) {\n isEventHandled = handleExpansion(event) as unknown as boolean;\n }\n\n if (selectable) {\n isEventHandled = handleSelection(event) as boolean;\n }\n }\n\n if (isEventHandled) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n },\n [expandable, handleExpansion, handleSelection, selectable, isOpen]\n );\n\n const renderedContent = useMemo(() => {\n const buttonLinkProps = {\n href,\n target,\n };\n\n return (\n <HvTypography\n id={setId(id, \"button\")}\n component={href ? \"a\" : \"div\"}\n {...(href ? buttonLinkProps : null)}\n ref={contentRef}\n className={cx(classes.content, {\n [classes.link]: href != null,\n [classes.minimized]: !isOpen,\n })}\n variant=\"body\"\n disabled={disabled}\n onClick={handleClick}\n onMouseDown={handleMouseDown}\n style={{\n paddingLeft:\n (useIcons || !isOpen ? 0 : 10) + level * (collapsible ? 16 : 10),\n }}\n role={href ? undefined : \"button\"}\n {...(treeviewMode\n ? {\n tabIndex: -1,\n onFocus: handleFocus,\n }\n : {\n tabIndex: selectable || expandable ? 0 : -1,\n onKeyDown: handleKeyDown,\n \"aria-current\":\n (selectable && selected) ||\n (!isOpen && isChildSelected?.(nodeId))\n ? href\n ? \"page\"\n : true\n : undefined,\n \"aria-expanded\": expandable ? expanded : undefined,\n \"aria-controls\":\n isOpen && expandable ? setId(id, \"group\") : undefined,\n \"aria-label\": payload?.label,\n })}\n >\n <IconWrapper\n icon={useIcons && icon}\n label={payload?.label}\n hasChildren={Boolean(children)}\n showAvatar={!icon && useIcons}\n isOpen={isOpen}\n disableTooltip={disableTooltip}\n />\n\n {isOpen && (\n <div\n className={cx(classes.label, {\n [classes.labelIcon]: useIcons,\n [classes.labelExpandable]: !!expandable,\n })}\n >\n {label}\n </div>\n )}\n\n {isOpen && expandable && (expanded ? <DropUpXS /> : <DropDownXS />)}\n </HvTypography>\n );\n }, [\n id,\n href,\n target,\n cx,\n classes.content,\n classes.link,\n classes.minimized,\n classes.label,\n classes.labelIcon,\n classes.labelExpandable,\n disabled,\n handleClick,\n handleMouseDown,\n expandable,\n icon,\n level,\n collapsible,\n treeviewMode,\n handleFocus,\n selectable,\n handleKeyDown,\n selected,\n expanded,\n label,\n disableTooltip,\n payload?.label,\n children,\n isOpen,\n useIcons,\n isChildSelected,\n nodeId,\n ]);\n\n const renderedChildren = useMemo(\n () =>\n children && (\n <ul\n id={setId(id, \"group\")}\n className={classes.group}\n role={treeviewMode ? \"group\" : undefined}\n >\n {children}\n </ul>\n ),\n [children, classes?.group, id, treeviewMode]\n );\n\n return (\n <li\n ref={handleRef}\n id={id ?? undefined}\n className={cx(classes.node, {\n [classes.disabled]: disabled,\n [classes.expandable]: expandable,\n [classes.collapsed]: expandable && !expanded,\n [classes.expanded]: expandable && expanded,\n [classes.selectable]: selectable && !disabled,\n [classes.unselectable]: !disabled && !selectable,\n [classes.selected]:\n (!disabled && selectable && selected) ||\n (!isOpen && useIcons && isChildSelected && isChildSelected(nodeId)),\n [classes.unselected]: !disabled && selectable && !selected,\n [classes.focused]: focused,\n [classes.hide]: !isOpen && !useIcons,\n className,\n })}\n data-hasicon={icon != null ? true : undefined}\n {...(mode === \"treeview\" && {\n role: \"treeitem\",\n \"aria-selected\": ariaSelected,\n \"aria-expanded\": expandable ? expanded : undefined,\n \"aria-disabled\": disabled ? true : undefined,\n })}\n {...others}\n >\n {renderedContent}\n {isOpen && (\n <DescendantProvider id={nodeId} level={level + 1}>\n {renderedChildren}\n </DescendantProvider>\n )}\n </li>\n );\n }\n);\n"],"names":["preventSelection","event","disabled","shiftKey","ctrlKey","metaKey","preventDefault","HvVerticalNavigationTreeViewItem","forwardRef","props","ref","id","idProp","className","classes","classesProp","disabledProp","selectable","selectableProp","nodeId","icon","label","href","target","payload","onClick","onMouseDown","onFocus","children","disableTooltip","others","useDefaultProps","cx","useClasses","treeViewControlContext","useContext","TreeViewControlContext","isExpanded","isSelected","isFocused","isDisabled","isChildSelected","TreeViewStateContext","treeId","mode","collapsible","toggleExpansion","multiSelect","selectNode","selectRange","disabledItemsFocusable","registerNode","unregisterNode","mapFirstChar","unMapFirstChar","focus","treeviewMode","treeitemElement","setTreeitemElement","useState","contentRef","useRef","handleRef","useForkRef","descendant","useMemo","element","isOpen","useIcons","VerticalNavigationContext","index","parentId","level","useDescendant","expandable","Array","isArray","expanded","focused","selected","useEffect","idAttribute","undefined","current","textContent","substring","toLowerCase","ariaSelected","handleFocus","useCallback","currentTarget","ownerDocument","document","getElementById","preventScroll","unfocusable","handleExpansion","multiple","handleSelection","end","handleMouseDown","handleClick","handleKeyDown","isEventHandled","key","altKey","stopPropagation","renderedContent","buttonLinkProps","setId","content","link","minimized","paddingLeft","tabIndex","onKeyDown","Boolean","labelIcon","labelExpandable","renderedChildren","group","node","collapsed","unselectable","unselected","hide","role"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TreeViewItem.js","sources":["../../../../../src/components/VerticalNavigation/TreeView/TreeViewItem.tsx"],"sourcesContent":["import {\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport { DropDownXS, DropUpXS } from \"@hitachivantara/uikit-react-icons\";\n\nimport { useForkRef } from \"@core/hooks/useForkRef\";\nimport { setId } from \"@core/utils/setId\";\n\nimport { ExtractNames } from \"@core/utils/classes\";\nimport { HvTypography } from \"@core/components/Typography\";\nimport { useDefaultProps } from \"@core/hooks\";\n\nimport { staticClasses, useClasses } from \"./TreeViewItem.styles\";\nimport { DescendantProvider, useDescendant } from \"./descendants\";\nimport {\n TreeViewControlContext,\n TreeViewStateContext,\n} from \"./TreeViewContext\";\nimport { VerticalNavigationContext } from \"../VerticalNavigationContext\";\nimport { IconWrapper } from \"./IconWrapper\";\n\nexport { staticClasses as treeViewItemClasses };\n\nexport type HvVerticalNavigationTreeViewItemClasses = ExtractNames<\n typeof useClasses\n>;\n\nexport interface HvVerticalNavigationTreeViewItemProps {\n /**\n * Id to be applied to the root node.\n */\n id?: string;\n /**\n * Class names to be applied.\n */\n className?: string;\n /**\n * A Jss Object used to override or extend the styles applied to the Radio button.\n */\n classes?: HvVerticalNavigationTreeViewItemClasses;\n /**\n * Is the node disabled.\n */\n disabled?: boolean;\n /**\n * Can the node be selected.\n */\n selectable?: boolean;\n /**\n * The id of the node.\n */\n nodeId?: string;\n /**\n * The icon to display next to the node's label.\n */\n icon?: React.ReactNode;\n /**\n * The item label.\n */\n label?: React.ReactNode;\n /**\n * The url for the link.\n */\n href?: string;\n /**\n * The behavior when opening a link.\n */\n target?: string;\n /**\n * The node payload.\n */\n payload?: any;\n /**\n * @ignore\n */\n onClick?: any;\n /**\n * @ignore\n */\n onMouseDown?: any;\n /**\n * @ignore\n */\n onFocus?: any;\n /**\n * The content of the component.\n */\n children?: React.ReactNode;\n /**\n * @ignore\n */\n onMouseEnter?: any;\n /**\n * Disables the appearence of a tooltip on hovering an element ( Only applicable when the in collapsed mode)\n */\n disableTooltip?: boolean;\n}\n\nconst preventSelection = (event, disabled) => {\n if (event.shiftKey || event.ctrlKey || event.metaKey || disabled) {\n // Prevent text selection\n event.preventDefault();\n }\n};\n\nexport const HvVerticalNavigationTreeViewItem = forwardRef(\n (props: HvVerticalNavigationTreeViewItemProps, ref) => {\n const {\n id: idProp,\n className,\n classes: classesProp,\n\n disabled: disabledProp = false,\n\n selectable: selectableProp,\n\n nodeId,\n icon = null,\n label,\n href,\n target,\n payload,\n\n onClick,\n onMouseDown,\n onFocus,\n\n children,\n\n disableTooltip,\n\n ...others\n } = useDefaultProps(\"HvVerticalNavigationTreeViewItem\", props);\n\n const { classes, cx } = useClasses(classesProp);\n\n const treeViewControlContext = useContext(TreeViewControlContext);\n const { isExpanded, isSelected, isFocused, isDisabled, isChildSelected } =\n useContext(TreeViewStateContext);\n\n const {\n treeId,\n mode,\n collapsible,\n toggleExpansion,\n multiSelect,\n selectNode,\n selectRange,\n disabledItemsFocusable,\n registerNode,\n unregisterNode,\n mapFirstChar,\n unMapFirstChar,\n focus,\n } = treeViewControlContext;\n\n const treeviewMode = mode === \"treeview\";\n\n let id: string | null = null;\n\n if (idProp != null) {\n id = idProp;\n } else if (treeId && nodeId) {\n id = `${treeId}-${nodeId}`;\n }\n\n const [treeitemElement, setTreeitemElement] = useState(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const handleRef = useForkRef(setTreeitemElement, ref);\n\n const descendant = useMemo(\n () => ({\n element: treeitemElement,\n id: nodeId,\n }),\n [nodeId, treeitemElement]\n );\n\n const { isOpen, useIcons } = useContext(VerticalNavigationContext);\n\n const { index, parentId, level } = useDescendant(descendant);\n\n const expandable = collapsible && Array.isArray(children);\n const expanded = isExpanded ? isExpanded(nodeId) : false;\n const focused = isFocused ? isFocused(nodeId) : false;\n const selected = isSelected ? isSelected(nodeId) : false;\n const disabled = isDisabled ? isDisabled(nodeId) : false;\n\n const selectable =\n selectableProp != null\n ? selectableProp\n : !collapsible || !expandable || !isOpen;\n\n useEffect(() => {\n // On the first render a node's index will be -1. We want to wait for the real index.\n if (registerNode && unregisterNode && index !== -1) {\n registerNode({\n id: nodeId,\n idAttribute: id,\n index,\n parentId,\n selectable,\n expandable,\n disabled: disabledProp,\n onFocus,\n payload,\n });\n\n return () => {\n unregisterNode(nodeId);\n };\n }\n\n return undefined;\n }, [\n registerNode,\n unregisterNode,\n parentId,\n index,\n nodeId,\n expandable,\n disabledProp,\n id,\n selectable,\n onFocus,\n payload,\n ]);\n\n useEffect(() => {\n if (\n mapFirstChar &&\n unMapFirstChar &&\n label &&\n contentRef.current?.textContent\n ) {\n mapFirstChar(\n nodeId,\n contentRef.current?.textContent.substring(0, 1).toLowerCase()\n );\n\n return () => {\n unMapFirstChar(nodeId);\n };\n }\n return undefined;\n }, [mapFirstChar, unMapFirstChar, nodeId, label]);\n\n let ariaSelected;\n if (multiSelect) {\n ariaSelected = selected;\n } else if (selected) {\n /* single-selection trees unset aria-selected on un-selected items.\n *\n * If the tree does not support multiple selection, aria-selected\n * is set to true for the selected node and it is not present on any other node in the tree.\n * Source: https://www.w3.org/TR/wai-aria-practices/#TreeView\n */\n ariaSelected = true;\n }\n\n const handleFocus = useCallback(\n (event) => {\n // DOM focus stays on the tree which manages focus with aria-activedescendant\n if (event.target === event.currentTarget) {\n (event.target.ownerDocument || document)\n .getElementById(treeId)\n .focus({ preventScroll: true });\n }\n\n const unfocusable = !disabledItemsFocusable && disabled;\n if (\n !focused &&\n event.currentTarget === event.target &&\n !unfocusable &&\n focus\n ) {\n focus(event, nodeId);\n }\n },\n [disabled, disabledItemsFocusable, focus, focused, nodeId, treeId]\n );\n\n const handleExpansion = useCallback(\n (event) => {\n if (!disabled) {\n if (treeviewMode && !focused && focus) {\n focus(event, nodeId);\n }\n\n const multiple =\n multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);\n\n // If already expanded and trying to toggle selection don't close\n if (\n expandable &&\n isOpen &&\n !(multiple && isExpanded && isExpanded(nodeId))\n ) {\n if (toggleExpansion) toggleExpansion(event, nodeId);\n }\n }\n },\n [\n disabled,\n expandable,\n focus,\n focused,\n isExpanded,\n multiSelect,\n nodeId,\n toggleExpansion,\n treeviewMode,\n isOpen,\n ]\n );\n\n const handleSelection = useCallback(\n (event) => {\n if (selectable && !disabled) {\n if (treeviewMode && !focused && focus) {\n focus(event, nodeId);\n }\n\n const multiple =\n multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);\n\n if (multiple) {\n if (event.shiftKey) {\n if (selectRange) return selectRange(event, { end: nodeId });\n } else if (selectNode) return selectNode(event, nodeId, true);\n } else if (selectNode) return selectNode(event, nodeId);\n } else {\n return false;\n }\n },\n [\n disabled,\n focus,\n focused,\n multiSelect,\n nodeId,\n selectNode,\n selectRange,\n selectable,\n treeviewMode,\n ]\n );\n\n const handleMouseDown = useCallback(\n (event) => {\n preventSelection(event, disabled);\n\n if (onMouseDown) {\n onMouseDown(event);\n }\n },\n [disabled, onMouseDown]\n );\n\n const handleClick = useCallback(\n (event) => {\n if (!disabled) {\n if (expandable && isOpen) {\n handleExpansion(event);\n }\n\n if (selectable) {\n handleSelection(event);\n }\n }\n\n if (onClick) {\n onClick(event);\n }\n },\n [\n disabled,\n expandable,\n handleExpansion,\n handleSelection,\n onClick,\n selectable,\n isOpen,\n ]\n );\n\n const handleKeyDown = useCallback(\n (event) => {\n let isEventHandled = false;\n const { key } = event;\n\n if (\n event.altKey ||\n event.ctrlKey ||\n event.metaKey ||\n event.currentTarget !== event.target\n ) {\n return;\n }\n if (contentRef.current === event.currentTarget) {\n if (key === \"Enter\" || key === \" \") {\n if (expandable && isOpen) {\n isEventHandled = handleExpansion(event) as unknown as boolean;\n }\n\n if (selectable) {\n isEventHandled = handleSelection(event) as boolean;\n }\n }\n\n if (isEventHandled) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n },\n [expandable, handleExpansion, handleSelection, selectable, isOpen]\n );\n\n const renderedContent = useMemo(() => {\n const buttonLinkProps = {\n href,\n target,\n };\n\n return (\n <HvTypography\n id={setId(id, \"button\")}\n component={href ? \"a\" : \"div\"}\n {...(href ? buttonLinkProps : null)}\n ref={contentRef}\n className={cx(classes.content, {\n [classes.link]: href != null,\n [classes.minimized]: !isOpen,\n })}\n variant=\"body\"\n disabled={disabled}\n onClick={handleClick}\n onMouseDown={handleMouseDown}\n style={{\n paddingLeft:\n (useIcons || !isOpen ? 0 : 10) + level * (collapsible ? 16 : 10),\n }}\n role={href ? undefined : \"button\"}\n {...(treeviewMode\n ? {\n tabIndex: -1,\n onFocus: handleFocus,\n }\n : {\n tabIndex: selectable || expandable ? 0 : -1,\n onKeyDown: handleKeyDown,\n \"aria-current\":\n (selectable && selected) ||\n (!isOpen && isChildSelected?.(nodeId))\n ? href\n ? \"page\"\n : true\n : undefined,\n \"aria-expanded\": expandable ? expanded : undefined,\n \"aria-controls\":\n isOpen && expandable ? setId(id, \"group\") : undefined,\n \"aria-label\": payload?.label,\n })}\n >\n <IconWrapper\n icon={useIcons && icon}\n label={payload?.label}\n hasChildren={Boolean(children)}\n showAvatar={!icon && useIcons}\n isOpen={isOpen}\n disableTooltip={disableTooltip}\n />\n\n {isOpen && (\n <div\n className={cx(classes.label, {\n [classes.labelIcon]: useIcons,\n [classes.labelExpandable]: !!expandable,\n })}\n >\n {label}\n </div>\n )}\n\n {isOpen && expandable && (expanded ? <DropUpXS /> : <DropDownXS />)}\n </HvTypography>\n );\n }, [\n id,\n href,\n target,\n cx,\n classes.content,\n classes.link,\n classes.minimized,\n classes.label,\n classes.labelIcon,\n classes.labelExpandable,\n disabled,\n handleClick,\n handleMouseDown,\n expandable,\n icon,\n level,\n collapsible,\n treeviewMode,\n handleFocus,\n selectable,\n handleKeyDown,\n selected,\n expanded,\n label,\n disableTooltip,\n payload?.label,\n children,\n isOpen,\n useIcons,\n isChildSelected,\n nodeId,\n ]);\n\n const renderedChildren = useMemo(\n () =>\n children && (\n <ul\n id={setId(id, \"group\")}\n className={classes.group}\n role={treeviewMode ? \"group\" : undefined}\n >\n {children}\n </ul>\n ),\n [children, classes?.group, id, treeviewMode]\n );\n\n return (\n <li\n ref={handleRef}\n id={id ?? undefined}\n className={cx(classes.node, {\n [classes.disabled]: disabled,\n [classes.expandable]: expandable,\n [classes.collapsed]: expandable && !expanded,\n [classes.expanded]: expandable && expanded,\n [classes.selectable]: selectable && !disabled,\n [classes.unselectable]: !disabled && !selectable,\n [classes.selected]:\n (!disabled && selectable && selected) ||\n (!isOpen && useIcons && isChildSelected && isChildSelected(nodeId)),\n [classes.unselected]: !disabled && selectable && !selected,\n [classes.focused]: focused,\n [classes.hide]: !isOpen && !useIcons,\n className,\n })}\n data-hasicon={icon != null ? true : undefined}\n {...(mode === \"treeview\" && {\n role: \"treeitem\",\n \"aria-selected\": ariaSelected,\n \"aria-expanded\": expandable ? expanded : undefined,\n \"aria-disabled\": disabled ? true : undefined,\n })}\n {...others}\n >\n {renderedContent}\n {isOpen && (\n <DescendantProvider id={nodeId} level={level + 1}>\n {renderedChildren}\n </DescendantProvider>\n )}\n </li>\n );\n }\n);\n"],"names":["preventSelection","event","disabled","shiftKey","ctrlKey","metaKey","preventDefault","HvVerticalNavigationTreeViewItem","forwardRef","props","ref","id","idProp","className","classes","classesProp","disabledProp","selectable","selectableProp","nodeId","icon","label","href","target","payload","onClick","onMouseDown","onFocus","children","disableTooltip","others","useDefaultProps","cx","useClasses","treeViewControlContext","useContext","TreeViewControlContext","isExpanded","isSelected","isFocused","isDisabled","isChildSelected","TreeViewStateContext","treeId","mode","collapsible","toggleExpansion","multiSelect","selectNode","selectRange","disabledItemsFocusable","registerNode","unregisterNode","mapFirstChar","unMapFirstChar","focus","treeviewMode","treeitemElement","setTreeitemElement","useState","contentRef","useRef","handleRef","useForkRef","descendant","useMemo","element","isOpen","useIcons","VerticalNavigationContext","index","parentId","level","useDescendant","expandable","Array","isArray","expanded","focused","selected","useEffect","idAttribute","undefined","current","textContent","substring","toLowerCase","ariaSelected","handleFocus","useCallback","currentTarget","ownerDocument","document","getElementById","preventScroll","unfocusable","handleExpansion","multiple","handleSelection","end","handleMouseDown","handleClick","handleKeyDown","isEventHandled","key","altKey","stopPropagation","renderedContent","buttonLinkProps","setId","content","link","minimized","paddingLeft","tabIndex","onKeyDown","Boolean","labelIcon","labelExpandable","renderedChildren","group","node","collapsed","unselectable","unselected","hide","role"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"descendants.js","sources":["../../../../../src/components/VerticalNavigation/TreeView/descendants.tsx"],"sourcesContent":["/**\n * Copied from https://github.com/mui-org/material-ui/blob/8763de1633d80295e7b83d8c21040dad333e6699/packages/material-ui-lab/src/TreeView/descendants.js\n * Credit: https://github.com/reach/reach-ui/blob/86a046f54d53b6420e392b3fa56dd991d9d4e458/packages/descendants/README.md\n *\n * - Added level (depth) property.\n * - Use local copy of useEnhancedEffect.\n */\n\nimport { useEnhancedEffect } from \"@core/hooks\";\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\ntype Item = {\n element?;\n index?;\n [key: string]: unknown;\n};\n\nfunction binaryFindElement(array, element) {\n let start = 0;\n let end = array.length - 1;\n\n while (start <= end) {\n const middle = Math.floor((start + end) / 2);\n\n if (array[middle].element === element) {\n return middle;\n }\n\n if (\n array[middle].element.compareDocumentPosition(element) &&\n Node.DOCUMENT_POSITION_PRECEDING\n ) {\n end = middle - 1;\n } else {\n start = middle + 1;\n }\n }\n\n return start;\n}\n\nconst DescendantContext = createContext<DescendantContextValue>({\n level: 0,\n descendants: [],\n});\n\ninterface DescendantContextValue {\n level?: number;\n registerDescendant?;\n unregisterDescendant?;\n descendants: Item[];\n parentId?;\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n DescendantContext.displayName = \"DescendantContext\";\n}\n\nfunction usePrevious(value) {\n const ref = useRef(null);\n useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref.current;\n}\n\nconst noop = () => {};\n\n/**\n * This hook registers our descendant by passing it into an array. We can then\n * search that array by to find its index when registering it in the component.\n * We use this for focus management, keyboard navigation, and typeahead\n * functionality for some components.\n *\n * The hook accepts the element node\n *\n * Our main goals with this are:\n * 1) maximum composability,\n * 2) minimal API friction\n * 3) SSR compatibility*\n * 4) concurrent safe\n * 5) index always up-to-date with the tree despite changes\n * 6) works with memoization of any component in the tree (hopefully)\n *\n * * As for SSR, the good news is that we don't actually need the index on the\n * server for most use-cases, as we are only using it to determine the order of\n * composed descendants for keyboard navigation.\n */\nexport function useDescendant(descendant) {\n const [, forceUpdate] = useState<{} | null>();\n const {\n registerDescendant = noop,\n unregisterDescendant = noop,\n descendants = [],\n parentId = null,\n level = 0,\n } = useContext(DescendantContext);\n\n // This will initially return -1 because we haven't registered the descendant\n // on the first render. After we register, this will then return the correct\n // index on the following render and we will re-register descendants\n // so that everything is up-to-date before the user interacts with a\n // collection.\n const index = descendants.findIndex(\n (item) => item.element === descendant.element\n );\n\n const previousDescendants: Item[] | null = usePrevious(descendants);\n\n // We also need to re-register descendants any time ANY of the other\n // descendants have changed. My brain was melting when I wrote this and it\n // feels a little off, but checking in render and using the result in the\n // effect's dependency array works well enough.\n const someDescendantsHaveChanged = descendants.some(\n (newDescendant, position) => {\n return (\n previousDescendants && previousDescendants[position]\n // previousDescendants[position].element !== newDescendant.element\n // was not able to type check this, did not any difference\n );\n }\n );\n\n // Prevent any flashing\n useEnhancedEffect(() => {\n if (descendant.element) {\n registerDescendant({\n ...descendant,\n index,\n });\n return () => {\n unregisterDescendant(descendant.element);\n };\n }\n forceUpdate({});\n\n return undefined;\n }, [\n registerDescendant,\n unregisterDescendant,\n index,\n someDescendantsHaveChanged,\n descendant,\n ]);\n\n return { parentId, index, level };\n}\n\nexport const DescendantProvider = (props: DescendantProviderProps) => {\n const { children, id, level } = props;\n\n const [items, set] = useState<Item[]>([]);\n\n const registerDescendant = useCallback(({ element, ...other }) => {\n set((oldItems) => {\n let newItems;\n if (oldItems.length === 0) {\n // If there are no items, register at index 0 and bail.\n return [\n {\n ...other,\n element,\n index: 0,\n },\n ];\n }\n\n const index = binaryFindElement(oldItems, element);\n\n if (oldItems[index] && oldItems[index].element === element) {\n // If the element is already registered, just use the same array\n newItems = oldItems;\n } else {\n // When registering a descendant, we need to make sure we insert in\n // into the array in the same order that it appears in the DOM. So as\n // new descendants are added or maybe some are removed, we always know\n // that the array is up-to-date and correct.\n //\n // So here we look at our registered descendants and see if the new\n // element we are adding appears earlier than an existing descendant's\n // DOM node via `node.compareDocumentPosition`. If it does, we insert\n // the new element at this index. Because `registerDescendant` will be\n // called in an effect every time the descendants state value changes,\n // we should be sure that this index is accurate when descendent\n // elements come or go from our component.\n\n const newItem = {\n ...other,\n element,\n index,\n };\n\n // If an index is not found we will push the element to the end.\n newItems = oldItems.slice();\n newItems.splice(index, 0, newItem);\n }\n newItems.forEach((item, position) => {\n item.index = position;\n });\n return newItems;\n });\n }, []);\n\n const unregisterDescendant = useCallback((element: Item) => {\n set((oldItems) =>\n oldItems.filter((item: Item) => element !== item.element)\n );\n }, []);\n\n const value = useMemo(\n () => ({\n descendants: items,\n registerDescendant,\n unregisterDescendant,\n parentId: id,\n level,\n }),\n [items, registerDescendant, unregisterDescendant, id, level]\n );\n\n return (\n <DescendantContext.Provider value={value}>\n {children}\n </DescendantContext.Provider>\n );\n};\n\nexport type DescendantProviderProps = {\n children?: React.ReactNode;\n id?: string;\n level?: number;\n};\n"],"names":["binaryFindElement","array","element","start","end","length","middle","Math","floor","compareDocumentPosition","Node","DOCUMENT_POSITION_PRECEDING","DescendantContext","createContext","level","descendants","process","env","NODE_ENV","displayName","usePrevious","value","ref","useRef","useEffect","current","noop","useDescendant","descendant","forceUpdate","useState","registerDescendant","unregisterDescendant","parentId","useContext","index","findIndex","item","previousDescendants","someDescendantsHaveChanged","some","newDescendant","position","useEnhancedEffect","undefined","DescendantProvider","props","children","id","items","set","useCallback","other","oldItems","newItems","newItem","slice","splice","forEach","filter","useMemo"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"descendants.js","sources":["../../../../../src/components/VerticalNavigation/TreeView/descendants.tsx"],"sourcesContent":["/**\n * Copied from https://github.com/mui-org/material-ui/blob/8763de1633d80295e7b83d8c21040dad333e6699/packages/material-ui-lab/src/TreeView/descendants.js\n * Credit: https://github.com/reach/reach-ui/blob/86a046f54d53b6420e392b3fa56dd991d9d4e458/packages/descendants/README.md\n *\n * - Added level (depth) property.\n * - Use local copy of useEnhancedEffect.\n */\n\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport { useEnhancedEffect } from \"@core/hooks\";\n\ntype Item = {\n element?;\n index?;\n [key: string]: unknown;\n};\n\nfunction binaryFindElement(array, element) {\n let start = 0;\n let end = array.length - 1;\n\n while (start <= end) {\n const middle = Math.floor((start + end) / 2);\n\n if (array[middle].element === element) {\n return middle;\n }\n\n if (\n array[middle].element.compareDocumentPosition(element) &&\n Node.DOCUMENT_POSITION_PRECEDING\n ) {\n end = middle - 1;\n } else {\n start = middle + 1;\n }\n }\n\n return start;\n}\n\nconst DescendantContext = createContext<DescendantContextValue>({\n level: 0,\n descendants: [],\n});\n\ninterface DescendantContextValue {\n level?: number;\n registerDescendant?;\n unregisterDescendant?;\n descendants: Item[];\n parentId?;\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n DescendantContext.displayName = \"DescendantContext\";\n}\n\nfunction usePrevious(value) {\n const ref = useRef(null);\n useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref.current;\n}\n\nconst noop = () => {};\n\n/**\n * This hook registers our descendant by passing it into an array. We can then\n * search that array by to find its index when registering it in the component.\n * We use this for focus management, keyboard navigation, and typeahead\n * functionality for some components.\n *\n * The hook accepts the element node\n *\n * Our main goals with this are:\n * 1) maximum composability,\n * 2) minimal API friction\n * 3) SSR compatibility*\n * 4) concurrent safe\n * 5) index always up-to-date with the tree despite changes\n * 6) works with memoization of any component in the tree (hopefully)\n *\n * * As for SSR, the good news is that we don't actually need the index on the\n * server for most use-cases, as we are only using it to determine the order of\n * composed descendants for keyboard navigation.\n */\nexport function useDescendant(descendant) {\n const [, forceUpdate] = useState<{} | null>();\n const {\n registerDescendant = noop,\n unregisterDescendant = noop,\n descendants = [],\n parentId = null,\n level = 0,\n } = useContext(DescendantContext);\n\n // This will initially return -1 because we haven't registered the descendant\n // on the first render. After we register, this will then return the correct\n // index on the following render and we will re-register descendants\n // so that everything is up-to-date before the user interacts with a\n // collection.\n const index = descendants.findIndex(\n (item) => item.element === descendant.element\n );\n\n const previousDescendants: Item[] | null = usePrevious(descendants);\n\n // We also need to re-register descendants any time ANY of the other\n // descendants have changed. My brain was melting when I wrote this and it\n // feels a little off, but checking in render and using the result in the\n // effect's dependency array works well enough.\n const someDescendantsHaveChanged = descendants.some(\n (newDescendant, position) => {\n return (\n previousDescendants && previousDescendants[position]\n // previousDescendants[position].element !== newDescendant.element\n // was not able to type check this, did not any difference\n );\n }\n );\n\n // Prevent any flashing\n useEnhancedEffect(() => {\n if (descendant.element) {\n registerDescendant({\n ...descendant,\n index,\n });\n return () => {\n unregisterDescendant(descendant.element);\n };\n }\n forceUpdate({});\n\n return undefined;\n }, [\n registerDescendant,\n unregisterDescendant,\n index,\n someDescendantsHaveChanged,\n descendant,\n ]);\n\n return { parentId, index, level };\n}\n\nexport const DescendantProvider = (props: DescendantProviderProps) => {\n const { children, id, level } = props;\n\n const [items, set] = useState<Item[]>([]);\n\n const registerDescendant = useCallback(({ element, ...other }) => {\n set((oldItems) => {\n let newItems;\n if (oldItems.length === 0) {\n // If there are no items, register at index 0 and bail.\n return [\n {\n ...other,\n element,\n index: 0,\n },\n ];\n }\n\n const index = binaryFindElement(oldItems, element);\n\n if (oldItems[index] && oldItems[index].element === element) {\n // If the element is already registered, just use the same array\n newItems = oldItems;\n } else {\n // When registering a descendant, we need to make sure we insert in\n // into the array in the same order that it appears in the DOM. So as\n // new descendants are added or maybe some are removed, we always know\n // that the array is up-to-date and correct.\n //\n // So here we look at our registered descendants and see if the new\n // element we are adding appears earlier than an existing descendant's\n // DOM node via `node.compareDocumentPosition`. If it does, we insert\n // the new element at this index. Because `registerDescendant` will be\n // called in an effect every time the descendants state value changes,\n // we should be sure that this index is accurate when descendent\n // elements come or go from our component.\n\n const newItem = {\n ...other,\n element,\n index,\n };\n\n // If an index is not found we will push the element to the end.\n newItems = oldItems.slice();\n newItems.splice(index, 0, newItem);\n }\n newItems.forEach((item, position) => {\n item.index = position;\n });\n return newItems;\n });\n }, []);\n\n const unregisterDescendant = useCallback((element: Item) => {\n set((oldItems) =>\n oldItems.filter((item: Item) => element !== item.element)\n );\n }, []);\n\n const value = useMemo(\n () => ({\n descendants: items,\n registerDescendant,\n unregisterDescendant,\n parentId: id,\n level,\n }),\n [items, registerDescendant, unregisterDescendant, id, level]\n );\n\n return (\n <DescendantContext.Provider value={value}>\n {children}\n </DescendantContext.Provider>\n );\n};\n\nexport type DescendantProviderProps = {\n children?: React.ReactNode;\n id?: string;\n level?: number;\n};\n"],"names":["binaryFindElement","array","element","start","end","length","middle","Math","floor","compareDocumentPosition","Node","DOCUMENT_POSITION_PRECEDING","DescendantContext","createContext","level","descendants","process","env","NODE_ENV","displayName","usePrevious","value","ref","useRef","useEffect","current","noop","useDescendant","descendant","forceUpdate","useState","registerDescendant","unregisterDescendant","parentId","useContext","index","findIndex","item","previousDescendants","someDescendantsHaveChanged","some","newDescendant","position","useEnhancedEffect","undefined","DescendantProvider","props","children","id","items","set","useCallback","other","oldItems","newItems","newItem","slice","splice","forEach","filter","useMemo"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx } from "@emotion/react/jsx-runtime";
|
|
2
|
-
import { useDefaultProps } from "../../hooks/useDefaultProps.js";
|
|
3
2
|
import { useState, useMemo, useEffect, useCallback } from "react";
|
|
3
|
+
import { useDefaultProps } from "../../hooks/useDefaultProps.js";
|
|
4
4
|
import { VerticalNavigationContext } from "./VerticalNavigationContext.js";
|
|
5
5
|
import { hasChildNavigationItems } from "./utils/VerticalNavigation.utils.js";
|
|
6
6
|
import { useClasses } from "./VerticalNavigation.styles.js";
|
|
@@ -28,7 +28,7 @@ const HvVerticalNavigation = (props) => {
|
|
|
28
28
|
const initialParentItem = useMemo(() => getParentItemById(withParentData, parentSelected), [withParentData, parentSelected]);
|
|
29
29
|
const [parentItem, setParentItem] = useState(initialParentItem);
|
|
30
30
|
const hasAnyChildWithData = useMemo(() => hasChildNavigationItems(parentData), [parentData]);
|
|
31
|
-
useEffect(() => setHeaderTitle(parentItem
|
|
31
|
+
useEffect(() => setHeaderTitle(parentItem?.label), [parentItem, setParentItem]);
|
|
32
32
|
const navigateToParentHandler = useCallback(() => {
|
|
33
33
|
setParentItem(getParentItemById(withParentData, parentItem.id));
|
|
34
34
|
}, [parentItem, setParentItem, withParentData]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VerticalNavigation.js","sources":["../../../../src/components/VerticalNavigation/VerticalNavigation.tsx"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"VerticalNavigation.js","sources":["../../../../src/components/VerticalNavigation/VerticalNavigation.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useState } from \"react\";\n\nimport { useDefaultProps } from \"@core/hooks/useDefaultProps\";\n\nimport { ExtractNames } from \"@core/utils/classes\";\n\nimport {\n VerticalNavigationContext,\n NavigationData,\n} from \"./VerticalNavigationContext\";\nimport {\n fillDataWithParentId,\n getNavigationItemById,\n getParentItemById,\n} from \"./NavigationSlider/utils\";\nimport { hasChildNavigationItems } from \"./utils/VerticalNavigation.utils\";\n\nimport { staticClasses, useClasses } from \"./VerticalNavigation.styles\";\n\nexport { staticClasses as verticalNavigationClasses };\n\nexport type HvVerticalNavigationClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvVerticalNavigationProps {\n /**\n * Id to be applied to the root node.\n */\n id?: string;\n /**\n * Class names to be applied.\n */\n className?: string;\n /**\n * A Jss Object used to override or extend the styles applied to the component.\n */\n classes?: HvVerticalNavigationClasses;\n /**\n * Current State of the Vertical Navigation Collapse\n */\n open?: boolean;\n /**\n * Collpased Mode for the Vertical Navigation, the default value is \"simple\".\n *\n * @deprecated - `useIcons` property should be used instead.\n */\n collapsedMode?: HvVerticalNavigationMode;\n /**\n * Boolean to determine if treeview is in slider mode (for mobile navigation), the default value is false.\n */\n slider?: boolean;\n /**\n * The content inside the actions container.\n */\n children?: React.ReactNode;\n /**\n * Boolean to determine if icons should be displayed in the navigation menu.\n * When `true` a icon will always be displayed, if no icon is provided the first letter of the label will be\n * displayed inside an Avatar component.\n * When `false` no icons will be shown, even if an icon is provided.\n */\n useIcons?: boolean;\n}\n\n/**\n * Navigation enables users to move through an app to complete tasks.\n *\n * It is recommended to use vertical navigation when your application requires global navigation that is displayed on the left.\n * While vertical navigation menus generally consume more space than their horizontal counterparts, they have become more popular as desktop monitors move to wide-screen formats.\n *\n * Although both the hierarchically organized data and the visual style resemble a treeview-like structure, the [Treeview Design Pattern](https://w3c.github.io/aria-practices/#TreeView)\n * isn't necessarily the most appropriate.\n *\n * The tree role provides complex functionality that is not needed for typical site navigation, and changes the most common keyboard navigation using TAB.\n *\n * The [Disclosure Design Pattern](https://w3c.github.io/aria-practices/#disclosure) is more suited for typical site navigation, with expandable groups of links.\n * However it can be tedious to TAB through all navigation items to reach the actions panel.\n *\n * Both modes are available via the `mode` property and each app should choose the most appropriate.\n */\nexport const HvVerticalNavigation = (props: HvVerticalNavigationProps) => {\n const {\n id,\n className,\n classes: classesProp,\n\n children,\n\n open = true,\n\n slider = false,\n\n useIcons = false,\n\n ...others\n } = useDefaultProps(\"HvVerticalNavigation\", props);\n const { classes, cx } = useClasses(classesProp);\n\n const [parentData, setParentData] = useState<NavigationData[]>([]);\n\n const [parentSelected, setParentSelected] = useState();\n\n const [headerTitle, setHeaderTitle] = useState<string | undefined>();\n\n // navigationSlider\n const withParentData = useMemo(\n () => fillDataWithParentId(parentData),\n [parentData]\n );\n\n const initialParentItem = useMemo(\n () => getParentItemById(withParentData, parentSelected),\n [withParentData, parentSelected]\n );\n\n const [parentItem, setParentItem] = useState(initialParentItem);\n\n const hasAnyChildWithData = useMemo(\n () => hasChildNavigationItems(parentData),\n [parentData]\n );\n\n useEffect(\n () => setHeaderTitle(parentItem?.label),\n [parentItem, setParentItem]\n );\n\n const navigateToParentHandler = useCallback(() => {\n setParentItem(getParentItemById(withParentData, parentItem.id));\n }, [parentItem, setParentItem, withParentData]);\n\n const navigateToChildHandler = useCallback(\n (event, item) => {\n setParentItem(getNavigationItemById(withParentData, item.id));\n event.stopPropagation();\n },\n [setParentItem, withParentData]\n );\n\n const value = useMemo(\n () => ({\n isOpen: open,\n useIcons,\n slider,\n headerTitle,\n setHeaderTitle,\n\n parentItem,\n setParentItem,\n withParentData,\n navigateToChildHandler,\n navigateToParentHandler,\n\n parentData,\n setParentData,\n parentSelected,\n setParentSelected,\n hasAnyChildWithData,\n }),\n [\n open,\n useIcons,\n slider,\n headerTitle,\n setHeaderTitle,\n parentItem,\n setParentItem,\n withParentData,\n navigateToChildHandler,\n navigateToParentHandler,\n hasAnyChildWithData,\n parentData,\n parentSelected,\n ]\n );\n\n const content = (\n <VerticalNavigationContext.Provider value={value}>\n <div\n id={id}\n className={cx(\n classes.root,\n {\n [classes.collapsed]: !open,\n [classes.slider]: slider,\n [classes.childData]: hasAnyChildWithData,\n },\n className\n )}\n {...others}\n >\n {children}\n </div>\n </VerticalNavigationContext.Provider>\n );\n\n return content;\n};\n\nexport type HvVerticalNavigationMode = \"icon\" | \"simple\";\n\nexport type HvVerticalNavigationPosition =\n | \"static\"\n | \"relative\"\n | \"fixed\"\n | \"absolute\";\n"],"names":["HvVerticalNavigation","props","id","className","classes","classesProp","children","open","slider","useIcons","others","useDefaultProps","cx","useClasses","parentData","setParentData","useState","parentSelected","setParentSelected","headerTitle","setHeaderTitle","withParentData","useMemo","fillDataWithParentId","initialParentItem","getParentItemById","parentItem","setParentItem","hasAnyChildWithData","hasChildNavigationItems","label","navigateToParentHandler","useCallback","navigateToChildHandler","event","item","getNavigationItemById","stopPropagation","value","isOpen","content","root","collapsed","childData"],"mappings":";;;;;;;;AA+EaA,MAAAA,uBAAuBA,CAACC,UAAqC;AAClE,QAAA;AAAA,IACJC;AAAAA,IACAC;AAAAA,IACAC,SAASC;AAAAA,IAETC;AAAAA,IAEAC,OAAO;AAAA,IAEPC,SAAS;AAAA,IAETC,WAAW;AAAA,IAEX,GAAGC;AAAAA,EAAAA,IACDC,gBAAgB,wBAAwBV,KAAK;AAC3C,QAAA;AAAA,IAAEG;AAAAA,IAASQ;AAAAA,EAAAA,IAAOC,WAAWR,WAAW;AAE9C,QAAM,CAACS,YAAYC,aAAa,IAAIC,SAA2B,CAAE,CAAA;AAEjE,QAAM,CAACC,gBAAgBC,iBAAiB,IAAIF,SAAS;AAErD,QAAM,CAACG,aAAaC,cAAc,IAAIJ,SAA6B;AAG7DK,QAAAA,iBAAiBC,QACrB,MAAMC,qBAAqBT,UAAU,GACrC,CAACA,UAAU,CACb;AAEMU,QAAAA,oBAAoBF,QACxB,MAAMG,kBAAkBJ,gBAAgBJ,cAAc,GACtD,CAACI,gBAAgBJ,cAAc,CACjC;AAEA,QAAM,CAACS,YAAYC,aAAa,IAAIX,SAASQ,iBAAiB;AAExDI,QAAAA,sBAAsBN,QAC1B,MAAMO,wBAAwBf,UAAU,GACxC,CAACA,UAAU,CACb;AAGE,YAAA,MAAMM,eAAeM,YAAYI,KAAK,GACtC,CAACJ,YAAYC,aAAa,CAC5B;AAEMI,QAAAA,0BAA0BC,YAAY,MAAM;AAChDL,kBAAcF,kBAAkBJ,gBAAgBK,WAAWxB,EAAE,CAAC;AAAA,EAC7D,GAAA,CAACwB,YAAYC,eAAeN,cAAc,CAAC;AAE9C,QAAMY,yBAAyBD,YAC7B,CAACE,OAAOC,SAAS;AACfR,kBAAcS,sBAAsBf,gBAAgBc,KAAKjC,EAAE,CAAC;AAC5DgC,UAAMG,gBAAgB;AAAA,EAAA,GAExB,CAACV,eAAeN,cAAc,CAChC;AAEMiB,QAAAA,QAAQhB,QACZ,OAAO;AAAA,IACLiB,QAAQhC;AAAAA,IACRE;AAAAA,IACAD;AAAAA,IACAW;AAAAA,IACAC;AAAAA,IAEAM;AAAAA,IACAC;AAAAA,IACAN;AAAAA,IACAY;AAAAA,IACAF;AAAAA,IAEAjB;AAAAA,IACAC;AAAAA,IACAE;AAAAA,IACAC;AAAAA,IACAU;AAAAA,EAAAA,IAEF,CACErB,MACAE,UACAD,QACAW,aACAC,gBACAM,YACAC,eACAN,gBACAY,wBACAF,yBACAH,qBACAd,YACAG,cAAc,CAElB;AAEA,QAAMuB,UACJ,oBAAC,0BAA0B,UAA1B,EAAmC,OAClC,UAAC,oBAAA,OAAA,EACC,IACA,WAAW5B,GACTR,QAAQqC,MACR;AAAA,IACE,CAACrC,QAAQsC,SAAS,GAAG,CAACnC;AAAAA,IACtB,CAACH,QAAQI,MAAM,GAAGA;AAAAA,IAClB,CAACJ,QAAQuC,SAAS,GAAGf;AAAAA,EAAAA,GAEvBzB,SACF,GACA,GAAIO,QAEHJ,SACH,CAAA,EACF,CAAA;AAGKkC,SAAAA;AACT;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VerticalNavigation.styles.js","sources":["../../../../src/components/VerticalNavigation/VerticalNavigation.styles.tsx"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"VerticalNavigation.styles.js","sources":["../../../../src/components/VerticalNavigation/VerticalNavigation.styles.tsx"],"sourcesContent":["import { theme } from \"@hitachivantara/uikit-styles\";\n\nimport { createClasses } from \"@core/utils/classes\";\n\nexport const { staticClasses, useClasses } = createClasses(\n \"HvVerticalNavigation\",\n {\n root: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flex-start\",\n\n width: \"220px\",\n\n background: theme.colors.atmo1,\n boxShadow: theme.colors.shadow,\n clipPath: \"inset(0px -12px 0px 0px)\",\n\n \"& > :only-child\": {\n padding: theme.space.sm,\n },\n \"& > :not(nav:first-of-type)\": {\n borderTop: `3px solid ${theme.colors.atmo2}`,\n padding: theme.spacing(\"xs\", \"sm\", \"sm\", \"sm\"),\n },\n\n \"& > :first-of-type:not(:last-child)\": {\n borderTop: \"none\",\n padding: theme.spacing(\"sm\", \"sm\", \"xs\", \"sm\"),\n },\n },\n collapsed: {\n width: \"56px\",\n \"&$childData\": {\n width: \"66px\",\n },\n \"& > :first-of-type:not(:last-child)\": {\n padding: theme.spacing(\"sm\", \"xs\", \"xs\", \"xs\"),\n },\n\n \"& > :not(nav:first-of-type)\": {\n padding: theme.spacing(\"xs\", \"xs\", \"sm\", \"xs\"),\n },\n },\n\n slider: {\n \"& > div:first-of-type\": {\n borderBottom: `3px solid ${theme.colors.atmo2}`,\n },\n },\n\n childData: {},\n }\n);\n"],"names":["staticClasses","useClasses","createClasses","root","display","flexDirection","justifyContent","width","background","theme","colors","atmo1","boxShadow","shadow","clipPath","padding","space","sm","borderTop","atmo2","spacing","collapsed","slider","borderBottom","childData"],"mappings":";;AAIa,MAAA;AAAA,EAAEA;AAAAA,EAAeC;AAAW,IAAIC,cAC3C,wBACA;AAAA,EACEC,MAAM;AAAA,IACJC,SAAS;AAAA,IACTC,eAAe;AAAA,IACfC,gBAAgB;AAAA,IAEhBC,OAAO;AAAA,IAEPC,YAAYC,MAAMC,OAAOC;AAAAA,IACzBC,WAAWH,MAAMC,OAAOG;AAAAA,IACxBC,UAAU;AAAA,IAEV,mBAAmB;AAAA,MACjBC,SAASN,MAAMO,MAAMC;AAAAA,IACvB;AAAA,IACA,+BAA+B;AAAA,MAC7BC,WAAY,aAAYT,MAAMC,OAAOS,KAAM;AAAA,MAC3CJ,SAASN,MAAMW,QAAQ,MAAM,MAAM,MAAM,IAAI;AAAA,IAC/C;AAAA,IAEA,uCAAuC;AAAA,MACrCF,WAAW;AAAA,MACXH,SAASN,MAAMW,QAAQ,MAAM,MAAM,MAAM,IAAI;AAAA,IAC/C;AAAA,EACF;AAAA,EACAC,WAAW;AAAA,IACTd,OAAO;AAAA,IACP,eAAe;AAAA,MACbA,OAAO;AAAA,IACT;AAAA,IACA,uCAAuC;AAAA,MACrCQ,SAASN,MAAMW,QAAQ,MAAM,MAAM,MAAM,IAAI;AAAA,IAC/C;AAAA,IAEA,+BAA+B;AAAA,MAC7BL,SAASN,MAAMW,QAAQ,MAAM,MAAM,MAAM,IAAI;AAAA,IAC/C;AAAA,EACF;AAAA,EAEAE,QAAQ;AAAA,IACN,yBAAyB;AAAA,MACvBC,cAAe,aAAYd,MAAMC,OAAOS,KAAM;AAAA,IAChD;AAAA,EACF;AAAA,EAEAK,WAAW,CAAC;AACd,CACF;"}
|
|
@@ -14,7 +14,7 @@ const withTooltip = (Component, label = "", placement, hideTooltip, tooltipProps
|
|
|
14
14
|
const [open, setOpen] = useState(false);
|
|
15
15
|
const title = /* @__PURE__ */ jsx(HvTypography, { children: label });
|
|
16
16
|
const handleMouseEnter = (event) => {
|
|
17
|
-
const isHidden = hideTooltip
|
|
17
|
+
const isHidden = hideTooltip?.(event);
|
|
18
18
|
setIsHoverDisabled(isHidden);
|
|
19
19
|
setOpen(!isHidden);
|
|
20
20
|
};
|