@hitachivantara/uikit-react-core 5.0.0-next.20 → 5.0.0-next.22
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 +5 -2
- package/dist/cjs/components/Accordion/Accordion.cjs.map +1 -1
- package/dist/cjs/components/Accordion/Accordion.styles.cjs +4 -4
- package/dist/cjs/components/Accordion/Accordion.styles.cjs.map +1 -1
- package/dist/cjs/components/ActionsGeneric/ActionsGeneric.cjs +2 -2
- package/dist/cjs/components/ActionsGeneric/ActionsGeneric.cjs.map +1 -1
- package/dist/cjs/components/AppSwitcher/Action/Action.cjs +1 -1
- package/dist/cjs/components/AppSwitcher/Action/Action.cjs.map +1 -1
- package/dist/cjs/components/AppSwitcher/Action/Action.styles.cjs +6 -6
- package/dist/cjs/components/AppSwitcher/Action/Action.styles.cjs.map +1 -1
- package/dist/cjs/components/AppSwitcher/AppSwitcher.styles.cjs +6 -6
- package/dist/cjs/components/AppSwitcher/AppSwitcher.styles.cjs.map +1 -1
- package/dist/cjs/components/Avatar/Avatar.cjs +4 -4
- package/dist/cjs/components/Avatar/Avatar.cjs.map +1 -1
- package/dist/cjs/components/Badge/Badge.styles.cjs +4 -4
- package/dist/cjs/components/Badge/Badge.styles.cjs.map +1 -1
- package/dist/cjs/components/Banner/BannerContent/ActionContainer/ActionContainer.cjs +2 -2
- package/dist/cjs/components/Banner/BannerContent/ActionContainer/ActionContainer.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/Banner/BannerContent/BannerContent.styles.cjs +6 -6
- package/dist/cjs/components/Banner/BannerContent/BannerContent.styles.cjs.map +1 -1
- package/dist/cjs/components/Banner/BannerContent/MessageContainer/MessageContainer.styles.cjs +4 -4
- package/dist/cjs/components/Banner/BannerContent/MessageContainer/MessageContainer.styles.cjs.map +1 -1
- package/dist/cjs/components/BaseCheckBox/BaseCheckBox.cjs +2 -2
- package/dist/cjs/components/BaseCheckBox/BaseCheckBox.cjs.map +1 -1
- package/dist/cjs/components/BaseCheckBox/BaseCheckBox.styles.cjs +2 -2
- package/dist/cjs/components/BaseCheckBox/BaseCheckBox.styles.cjs.map +1 -1
- package/dist/cjs/components/BaseDropdown/BaseDropdown.styles.cjs +12 -12
- 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/BaseInput.styles.cjs +9 -9
- package/dist/cjs/components/BaseInput/BaseInput.styles.cjs.map +1 -1
- package/dist/cjs/components/BaseRadio/BaseRadio.cjs +2 -2
- package/dist/cjs/components/BaseRadio/BaseRadio.cjs.map +1 -1
- package/dist/cjs/components/BaseRadio/BaseRadio.styles.cjs +2 -2
- package/dist/cjs/components/BaseRadio/BaseRadio.styles.cjs.map +1 -1
- package/dist/cjs/components/BreadCrumb/BreadCrumb.styles.cjs +3 -3
- package/dist/cjs/components/BreadCrumb/BreadCrumb.styles.cjs.map +1 -1
- package/dist/cjs/components/BreadCrumb/Page/Page.cjs +3 -2
- package/dist/cjs/components/BreadCrumb/Page/Page.cjs.map +1 -1
- package/dist/cjs/components/BreadCrumb/Page/Page.styles.cjs +2 -3
- package/dist/cjs/components/BreadCrumb/Page/Page.styles.cjs.map +1 -1
- package/dist/cjs/components/BreadCrumb/PathElement/PathElement.cjs +1 -1
- package/dist/cjs/components/BreadCrumb/PathElement/PathElement.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 +5 -3
- package/dist/cjs/components/BulkActions/BulkActions.cjs.map +1 -1
- package/dist/cjs/components/BulkActions/BulkActions.styles.cjs +6 -6
- package/dist/cjs/components/BulkActions/BulkActions.styles.cjs.map +1 -1
- package/dist/cjs/components/Button/Button.cjs +15 -9
- package/dist/cjs/components/Button/Button.cjs.map +1 -1
- package/dist/cjs/components/Button/Button.styles.cjs +20 -20
- package/dist/cjs/components/Button/Button.styles.cjs.map +1 -1
- package/dist/cjs/components/Calendar/CalendarHeader/CalendarHeader.cjs +1 -1
- package/dist/cjs/components/Calendar/CalendarHeader/CalendarHeader.cjs.map +1 -1
- package/dist/cjs/components/Calendar/CalendarHeader/CalendarHeader.styles.cjs +7 -7
- package/dist/cjs/components/Calendar/CalendarHeader/CalendarHeader.styles.cjs.map +1 -1
- package/dist/cjs/components/Calendar/CalendarNavigation/MonthSelector/MonthSelector.styles.cjs +5 -5
- package/dist/cjs/components/Calendar/CalendarNavigation/MonthSelector/MonthSelector.styles.cjs.map +1 -1
- package/dist/cjs/components/Calendar/SingleCalendar/CalendarCell.styles.cjs +8 -8
- package/dist/cjs/components/Calendar/SingleCalendar/CalendarCell.styles.cjs.map +1 -1
- package/dist/cjs/components/Calendar/SingleCalendar/SingleCalendar.styles.cjs +7 -7
- package/dist/cjs/components/Calendar/SingleCalendar/SingleCalendar.styles.cjs.map +1 -1
- package/dist/cjs/components/Card/Card.cjs +23 -19
- package/dist/cjs/components/Card/Card.cjs.map +1 -1
- package/dist/cjs/components/Card/Card.styles.cjs +15 -16
- package/dist/cjs/components/Card/Card.styles.cjs.map +1 -1
- package/dist/cjs/components/Card/Content/Content.cjs +11 -6
- package/dist/cjs/components/Card/Content/Content.cjs.map +1 -1
- package/dist/cjs/components/Card/Content/Content.styles.cjs +2 -3
- package/dist/cjs/components/Card/Content/Content.styles.cjs.map +1 -1
- package/dist/cjs/components/Card/Header/Header.cjs +25 -21
- package/dist/cjs/components/Card/Header/Header.cjs.map +1 -1
- package/dist/cjs/components/Card/Header/Header.styles.cjs +10 -11
- package/dist/cjs/components/Card/Header/Header.styles.cjs.map +1 -1
- package/dist/cjs/components/Card/Media/Media.cjs +17 -12
- package/dist/cjs/components/Card/Media/Media.cjs.map +1 -1
- package/dist/cjs/components/Card/Media/Media.styles.cjs +2 -3
- package/dist/cjs/components/Card/Media/Media.styles.cjs.map +1 -1
- package/dist/cjs/components/CheckBox/CheckBox.styles.cjs +7 -7
- package/dist/cjs/components/CheckBox/CheckBox.styles.cjs.map +1 -1
- package/dist/cjs/components/CheckBoxGroup/CheckBoxGroup.styles.cjs +4 -4
- package/dist/cjs/components/CheckBoxGroup/CheckBoxGroup.styles.cjs.map +1 -1
- package/dist/cjs/components/Controls/Controls.cjs +11 -5
- package/dist/cjs/components/Controls/Controls.cjs.map +1 -1
- package/dist/cjs/components/Dialog/Dialog.cjs +64 -59
- package/dist/cjs/components/Dialog/Dialog.cjs.map +1 -1
- package/dist/cjs/components/Dialog/Dialog.styles.cjs +15 -9
- package/dist/cjs/components/Dialog/Dialog.styles.cjs.map +1 -1
- package/dist/cjs/components/DotPagination/DotPagination.styles.cjs +5 -5
- package/dist/cjs/components/DotPagination/DotPagination.styles.cjs.map +1 -1
- package/dist/cjs/components/DropDownMenu/DropDownMenu.cjs +1 -1
- package/dist/cjs/components/DropDownMenu/DropDownMenu.cjs.map +1 -1
- package/dist/cjs/components/DropDownMenu/DropDownMenu.styles.cjs +6 -6
- package/dist/cjs/components/DropDownMenu/DropDownMenu.styles.cjs.map +1 -1
- package/dist/cjs/components/Dropdown/Dropdown.styles.cjs +6 -6
- package/dist/cjs/components/Dropdown/Dropdown.styles.cjs.map +1 -1
- package/dist/cjs/components/EmptyState/EmptyState.styles.cjs +5 -5
- package/dist/cjs/components/EmptyState/EmptyState.styles.cjs.map +1 -1
- package/dist/cjs/components/FileUploader/DropZone/DropZone.cjs +4 -3
- package/dist/cjs/components/FileUploader/DropZone/DropZone.cjs.map +1 -1
- package/dist/cjs/components/FileUploader/DropZone/DropZone.styles.cjs +17 -17
- package/dist/cjs/components/FileUploader/DropZone/DropZone.styles.cjs.map +1 -1
- package/dist/cjs/components/FileUploader/File/File.cjs +2 -2
- package/dist/cjs/components/FileUploader/File/File.cjs.map +1 -1
- package/dist/cjs/components/FileUploader/File/File.styles.cjs +13 -13
- package/dist/cjs/components/FileUploader/File/File.styles.cjs.map +1 -1
- package/dist/cjs/components/Focus/Focus.cjs +4 -3
- package/dist/cjs/components/Focus/Focus.cjs.map +1 -1
- package/dist/cjs/components/Footer/Footer.styles.cjs +6 -6
- package/dist/cjs/components/Footer/Footer.styles.cjs.map +1 -1
- package/dist/cjs/components/Forms/CharCounter/CharCounter.styles.cjs +5 -5
- package/dist/cjs/components/Forms/CharCounter/CharCounter.styles.cjs.map +1 -1
- package/dist/cjs/components/Forms/InfoMessage/InfoMessage.styles.cjs +2 -2
- package/dist/cjs/components/Forms/InfoMessage/InfoMessage.styles.cjs.map +1 -1
- package/dist/cjs/components/Forms/Label/Label.styles.cjs +2 -2
- package/dist/cjs/components/Forms/Label/Label.styles.cjs.map +1 -1
- package/dist/cjs/components/Forms/Suggestions/Suggestions.styles.cjs +4 -4
- package/dist/cjs/components/Forms/Suggestions/Suggestions.styles.cjs.map +1 -1
- package/dist/cjs/components/Forms/WarningText/WarningText.cjs +1 -1
- package/dist/cjs/components/Forms/WarningText/WarningText.cjs.map +1 -1
- package/dist/cjs/components/Forms/WarningText/WarningText.styles.cjs +5 -5
- package/dist/cjs/components/Forms/WarningText/WarningText.styles.cjs.map +1 -1
- package/dist/cjs/components/GlobalActions/GlobalActions.cjs +3 -2
- package/dist/cjs/components/GlobalActions/GlobalActions.cjs.map +1 -1
- package/dist/cjs/components/Grid/Grid.cjs +4 -2
- package/dist/cjs/components/Grid/Grid.cjs.map +1 -1
- package/dist/cjs/components/Header/Brand/Brand.styles.cjs +15 -15
- package/dist/cjs/components/Header/Brand/Brand.styles.cjs.map +1 -1
- package/dist/cjs/components/Input/Input.cjs +1 -1
- package/dist/cjs/components/Input/Input.cjs.map +1 -1
- package/dist/cjs/components/Link/Link.styles.cjs +2 -2
- package/dist/cjs/components/Link/Link.styles.cjs.map +1 -1
- package/dist/cjs/components/ListContainer/ListItem/ListItem.styles.cjs +5 -5
- package/dist/cjs/components/ListContainer/ListItem/ListItem.styles.cjs.map +1 -1
- package/dist/cjs/components/Loading/Loading.cjs +1 -1
- package/dist/cjs/components/Loading/Loading.cjs.map +1 -1
- package/dist/cjs/components/Loading/Loading.styles.cjs +6 -6
- package/dist/cjs/components/Loading/Loading.styles.cjs.map +1 -1
- package/dist/cjs/components/MultiButton/MultiButton.styles.cjs +10 -10
- package/dist/cjs/components/MultiButton/MultiButton.styles.cjs.map +1 -1
- package/dist/cjs/components/Pagination/utils.cjs +1 -1
- package/dist/cjs/components/Pagination/utils.cjs.map +1 -1
- package/dist/cjs/components/ProgressBar/ProgressBar.styles.cjs +7 -7
- package/dist/cjs/components/ProgressBar/ProgressBar.styles.cjs.map +1 -1
- package/dist/cjs/components/Radio/Radio.styles.cjs +7 -7
- package/dist/cjs/components/Radio/Radio.styles.cjs.map +1 -1
- package/dist/cjs/components/RadioGroup/RadioGroup.styles.cjs +4 -4
- package/dist/cjs/components/RadioGroup/RadioGroup.styles.cjs.map +1 -1
- package/dist/cjs/components/SelectionList/SelectionList.styles.cjs +6 -6
- package/dist/cjs/components/SelectionList/SelectionList.styles.cjs.map +1 -1
- package/dist/cjs/components/Snackbar/Snackbar.cjs +3 -2
- package/dist/cjs/components/Snackbar/Snackbar.cjs.map +1 -1
- package/dist/cjs/components/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.cjs +1 -1
- package/dist/cjs/components/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.cjs.map +1 -1
- package/dist/cjs/components/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.styles.cjs +9 -9
- package/dist/cjs/components/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.styles.cjs.map +1 -1
- package/dist/cjs/components/Switch/Switch.styles.cjs +4 -4
- package/dist/cjs/components/Switch/Switch.styles.cjs.map +1 -1
- package/dist/cjs/components/Tab/Tab.styles.cjs +3 -3
- package/dist/cjs/components/Tab/Tab.styles.cjs.map +1 -1
- package/dist/cjs/components/Table/Table.cjs +1 -1
- package/dist/cjs/components/Table/Table.cjs.map +1 -1
- package/dist/cjs/components/Table/TableBody/TableBody.cjs +1 -1
- package/dist/cjs/components/Table/TableBody/TableBody.cjs.map +1 -1
- package/dist/cjs/components/Table/TableCell/TableCell.cjs +5 -4
- package/dist/cjs/components/Table/TableCell/TableCell.cjs.map +1 -1
- package/dist/cjs/components/Table/TableContainer/TableContainer.cjs +1 -1
- package/dist/cjs/components/Table/TableContainer/TableContainer.cjs.map +1 -1
- package/dist/cjs/components/Table/TableHead/TableHead.cjs +1 -1
- package/dist/cjs/components/Table/TableHead/TableHead.cjs.map +1 -1
- package/dist/cjs/components/Table/TableHeader/TableHeader.cjs +7 -6
- package/dist/cjs/components/Table/TableHeader/TableHeader.cjs.map +1 -1
- package/dist/cjs/components/Table/TableRow/TableRow.cjs +2 -2
- package/dist/cjs/components/Table/TableRow/TableRow.cjs.map +1 -1
- package/dist/cjs/components/Table/hooks/useFilters.cjs.map +1 -1
- package/dist/cjs/components/Table/hooks/useGlobalFilter.cjs.map +1 -1
- package/dist/cjs/components/Table/hooks/useRowSelection.cjs +5 -4
- package/dist/cjs/components/Table/hooks/useRowSelection.cjs.map +1 -1
- package/dist/cjs/components/Table/hooks/useTable.cjs +2 -2
- package/dist/cjs/components/Table/hooks/useTable.cjs.map +1 -1
- package/dist/cjs/components/Table/renderers/ProgressColumnCell/ProgressColumnCell.styles.cjs +5 -5
- package/dist/cjs/components/Table/renderers/ProgressColumnCell/ProgressColumnCell.styles.cjs.map +1 -1
- package/dist/cjs/components/Table/renderers/renderers.cjs.map +1 -1
- package/dist/cjs/components/Tabs/Tabs.styles.cjs +2 -2
- package/dist/cjs/components/Tabs/Tabs.styles.cjs.map +1 -1
- package/dist/cjs/components/Tag/Tag.cjs +6 -6
- package/dist/cjs/components/Tag/Tag.cjs.map +1 -1
- package/dist/cjs/components/Tag/Tag.styles.cjs +13 -12
- package/dist/cjs/components/Tag/Tag.styles.cjs.map +1 -1
- package/dist/cjs/components/TagsInput/TagsInput.styles.cjs +14 -14
- package/dist/cjs/components/TagsInput/TagsInput.styles.cjs.map +1 -1
- package/dist/cjs/components/TextArea/TextArea.cjs +3 -2
- package/dist/cjs/components/TextArea/TextArea.cjs.map +1 -1
- package/dist/cjs/components/Tooltip/Tooltip.styles.cjs +4 -4
- package/dist/cjs/components/Tooltip/Tooltip.styles.cjs.map +1 -1
- package/dist/cjs/components/Typography/Typography.cjs +8 -4
- package/dist/cjs/components/Typography/Typography.cjs.map +1 -1
- package/dist/cjs/components/Typography/utils.cjs +9 -7
- package/dist/cjs/components/Typography/utils.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/Actions/Action.cjs +2 -2
- package/dist/cjs/components/VerticalNavigation/Actions/Action.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/Actions/Action.styles.cjs +2 -2
- package/dist/cjs/components/VerticalNavigation/Actions/Action.styles.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/Actions/Actions.cjs +2 -2
- package/dist/cjs/components/VerticalNavigation/Actions/Actions.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/Header/Header.cjs +31 -12
- package/dist/cjs/components/VerticalNavigation/Header/Header.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/Header/Header.styles.cjs +17 -4
- package/dist/cjs/components/VerticalNavigation/Header/Header.styles.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/Navigation/Navigation.cjs +27 -4
- package/dist/cjs/components/VerticalNavigation/Navigation/Navigation.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/NavigationSlider/NavigationSlider.cjs +50 -0
- package/dist/cjs/components/VerticalNavigation/NavigationSlider/NavigationSlider.cjs.map +1 -0
- package/dist/cjs/components/VerticalNavigation/NavigationSlider/NavigationSlider.styles.cjs +38 -0
- package/dist/cjs/components/VerticalNavigation/NavigationSlider/NavigationSlider.styles.cjs.map +1 -0
- package/dist/cjs/components/VerticalNavigation/NavigationSlider/navigationSliderClasses.cjs +8 -0
- package/dist/cjs/components/VerticalNavigation/NavigationSlider/navigationSliderClasses.cjs.map +1 -0
- package/dist/cjs/components/VerticalNavigation/NavigationSlider/utils/NavigationSlider.utils.cjs +41 -0
- package/dist/cjs/components/VerticalNavigation/NavigationSlider/utils/NavigationSlider.utils.cjs.map +1 -0
- package/dist/cjs/components/VerticalNavigation/TreeView/TreeView.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/TreeView/TreeViewItem.cjs +3 -3
- package/dist/cjs/components/VerticalNavigation/TreeView/TreeViewItem.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/VerticalNavigation.cjs +32 -9
- package/dist/cjs/components/VerticalNavigation/VerticalNavigation.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/VerticalNavigation.styles.cjs +7 -2
- package/dist/cjs/components/VerticalNavigation/VerticalNavigation.styles.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/VerticalNavigationContext.cjs +10 -0
- package/dist/cjs/components/VerticalNavigation/VerticalNavigationContext.cjs.map +1 -0
- package/dist/cjs/components/VerticalNavigation/verticalNavigationClasses.cjs +1 -1
- package/dist/cjs/components/VerticalNavigation/verticalNavigationClasses.cjs.map +1 -1
- package/dist/cjs/index.cjs +6 -1
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/providers/Provider.cjs +39 -7
- package/dist/cjs/providers/Provider.cjs.map +1 -1
- package/dist/cjs/providers/ThemeProvider.cjs +3 -3
- package/dist/cjs/providers/ThemeProvider.cjs.map +1 -1
- package/dist/cjs/utils/iconVariant.cjs +3 -3
- package/dist/cjs/utils/iconVariant.cjs.map +1 -1
- package/dist/cjs/utils/theme.cjs +28 -19
- package/dist/cjs/utils/theme.cjs.map +1 -1
- package/dist/esm/components/Accordion/Accordion.js +5 -2
- package/dist/esm/components/Accordion/Accordion.js.map +1 -1
- package/dist/esm/components/Accordion/Accordion.styles.js +4 -4
- package/dist/esm/components/Accordion/Accordion.styles.js.map +1 -1
- package/dist/esm/components/ActionsGeneric/ActionsGeneric.js +2 -2
- package/dist/esm/components/ActionsGeneric/ActionsGeneric.js.map +1 -1
- package/dist/esm/components/AppSwitcher/Action/Action.js +1 -1
- package/dist/esm/components/AppSwitcher/Action/Action.js.map +1 -1
- package/dist/esm/components/AppSwitcher/Action/Action.styles.js +6 -6
- package/dist/esm/components/AppSwitcher/Action/Action.styles.js.map +1 -1
- package/dist/esm/components/AppSwitcher/AppSwitcher.styles.js +6 -6
- package/dist/esm/components/AppSwitcher/AppSwitcher.styles.js.map +1 -1
- package/dist/esm/components/Avatar/Avatar.js +4 -4
- package/dist/esm/components/Avatar/Avatar.js.map +1 -1
- package/dist/esm/components/Badge/Badge.styles.js +4 -4
- package/dist/esm/components/Badge/Badge.styles.js.map +1 -1
- package/dist/esm/components/Banner/BannerContent/ActionContainer/ActionContainer.js +2 -2
- package/dist/esm/components/Banner/BannerContent/ActionContainer/ActionContainer.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/Banner/BannerContent/BannerContent.styles.js +6 -6
- package/dist/esm/components/Banner/BannerContent/BannerContent.styles.js.map +1 -1
- package/dist/esm/components/Banner/BannerContent/MessageContainer/MessageContainer.styles.js +4 -4
- package/dist/esm/components/Banner/BannerContent/MessageContainer/MessageContainer.styles.js.map +1 -1
- package/dist/esm/components/BaseCheckBox/BaseCheckBox.js +2 -2
- package/dist/esm/components/BaseCheckBox/BaseCheckBox.js.map +1 -1
- package/dist/esm/components/BaseCheckBox/BaseCheckBox.styles.js +2 -2
- package/dist/esm/components/BaseCheckBox/BaseCheckBox.styles.js.map +1 -1
- package/dist/esm/components/BaseDropdown/BaseDropdown.styles.js +12 -12
- 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/BaseInput.styles.js +9 -9
- package/dist/esm/components/BaseInput/BaseInput.styles.js.map +1 -1
- package/dist/esm/components/BaseRadio/BaseRadio.js +2 -2
- package/dist/esm/components/BaseRadio/BaseRadio.js.map +1 -1
- package/dist/esm/components/BaseRadio/BaseRadio.styles.js +2 -2
- package/dist/esm/components/BaseRadio/BaseRadio.styles.js.map +1 -1
- package/dist/esm/components/BreadCrumb/BreadCrumb.styles.js +3 -3
- package/dist/esm/components/BreadCrumb/BreadCrumb.styles.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/Page/Page.styles.js +2 -3
- package/dist/esm/components/BreadCrumb/Page/Page.styles.js.map +1 -1
- package/dist/esm/components/BreadCrumb/PathElement/PathElement.js +1 -1
- package/dist/esm/components/BreadCrumb/PathElement/PathElement.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 +5 -3
- package/dist/esm/components/BulkActions/BulkActions.js.map +1 -1
- package/dist/esm/components/BulkActions/BulkActions.styles.js +6 -6
- package/dist/esm/components/BulkActions/BulkActions.styles.js.map +1 -1
- package/dist/esm/components/Button/Button.js +15 -9
- package/dist/esm/components/Button/Button.js.map +1 -1
- package/dist/esm/components/Button/Button.styles.js +20 -20
- package/dist/esm/components/Button/Button.styles.js.map +1 -1
- package/dist/esm/components/Calendar/CalendarHeader/CalendarHeader.js +1 -1
- package/dist/esm/components/Calendar/CalendarHeader/CalendarHeader.js.map +1 -1
- package/dist/esm/components/Calendar/CalendarHeader/CalendarHeader.styles.js +7 -7
- package/dist/esm/components/Calendar/CalendarHeader/CalendarHeader.styles.js.map +1 -1
- package/dist/esm/components/Calendar/CalendarNavigation/MonthSelector/MonthSelector.styles.js +5 -5
- package/dist/esm/components/Calendar/CalendarNavigation/MonthSelector/MonthSelector.styles.js.map +1 -1
- package/dist/esm/components/Calendar/SingleCalendar/CalendarCell.styles.js +8 -8
- package/dist/esm/components/Calendar/SingleCalendar/CalendarCell.styles.js.map +1 -1
- package/dist/esm/components/Calendar/SingleCalendar/SingleCalendar.styles.js +7 -7
- package/dist/esm/components/Calendar/SingleCalendar/SingleCalendar.styles.js.map +1 -1
- package/dist/esm/components/Card/Card.js +24 -20
- package/dist/esm/components/Card/Card.js.map +1 -1
- package/dist/esm/components/Card/Card.styles.js +15 -16
- package/dist/esm/components/Card/Card.styles.js.map +1 -1
- package/dist/esm/components/Card/Content/Content.js +11 -6
- package/dist/esm/components/Card/Content/Content.js.map +1 -1
- package/dist/esm/components/Card/Content/Content.styles.js +2 -3
- package/dist/esm/components/Card/Content/Content.styles.js.map +1 -1
- package/dist/esm/components/Card/Header/Header.js +25 -21
- package/dist/esm/components/Card/Header/Header.js.map +1 -1
- package/dist/esm/components/Card/Header/Header.styles.js +10 -11
- package/dist/esm/components/Card/Header/Header.styles.js.map +1 -1
- package/dist/esm/components/Card/Media/Media.js +17 -12
- package/dist/esm/components/Card/Media/Media.js.map +1 -1
- package/dist/esm/components/Card/Media/Media.styles.js +2 -3
- package/dist/esm/components/Card/Media/Media.styles.js.map +1 -1
- package/dist/esm/components/CheckBox/CheckBox.styles.js +7 -7
- package/dist/esm/components/CheckBox/CheckBox.styles.js.map +1 -1
- package/dist/esm/components/CheckBoxGroup/CheckBoxGroup.styles.js +4 -4
- package/dist/esm/components/CheckBoxGroup/CheckBoxGroup.styles.js.map +1 -1
- package/dist/esm/components/Controls/Controls.js +11 -5
- package/dist/esm/components/Controls/Controls.js.map +1 -1
- package/dist/esm/components/Dialog/Dialog.js +62 -58
- package/dist/esm/components/Dialog/Dialog.js.map +1 -1
- package/dist/esm/components/Dialog/Dialog.styles.js +16 -10
- package/dist/esm/components/Dialog/Dialog.styles.js.map +1 -1
- package/dist/esm/components/DotPagination/DotPagination.styles.js +5 -5
- package/dist/esm/components/DotPagination/DotPagination.styles.js.map +1 -1
- package/dist/esm/components/DropDownMenu/DropDownMenu.js +1 -1
- package/dist/esm/components/DropDownMenu/DropDownMenu.js.map +1 -1
- package/dist/esm/components/DropDownMenu/DropDownMenu.styles.js +6 -6
- package/dist/esm/components/DropDownMenu/DropDownMenu.styles.js.map +1 -1
- package/dist/esm/components/Dropdown/Dropdown.styles.js +6 -6
- package/dist/esm/components/Dropdown/Dropdown.styles.js.map +1 -1
- package/dist/esm/components/EmptyState/EmptyState.styles.js +5 -5
- package/dist/esm/components/EmptyState/EmptyState.styles.js.map +1 -1
- package/dist/esm/components/FileUploader/DropZone/DropZone.js +2 -2
- package/dist/esm/components/FileUploader/DropZone/DropZone.js.map +1 -1
- package/dist/esm/components/FileUploader/DropZone/DropZone.styles.js +17 -17
- package/dist/esm/components/FileUploader/DropZone/DropZone.styles.js.map +1 -1
- package/dist/esm/components/FileUploader/File/File.js +2 -2
- package/dist/esm/components/FileUploader/File/File.js.map +1 -1
- package/dist/esm/components/FileUploader/File/File.styles.js +13 -13
- package/dist/esm/components/FileUploader/File/File.styles.js.map +1 -1
- package/dist/esm/components/Focus/Focus.js +2 -2
- package/dist/esm/components/Focus/Focus.js.map +1 -1
- package/dist/esm/components/Footer/Footer.styles.js +6 -6
- package/dist/esm/components/Footer/Footer.styles.js.map +1 -1
- package/dist/esm/components/Forms/CharCounter/CharCounter.styles.js +5 -5
- package/dist/esm/components/Forms/CharCounter/CharCounter.styles.js.map +1 -1
- package/dist/esm/components/Forms/InfoMessage/InfoMessage.styles.js +2 -2
- package/dist/esm/components/Forms/InfoMessage/InfoMessage.styles.js.map +1 -1
- package/dist/esm/components/Forms/Label/Label.styles.js +2 -2
- package/dist/esm/components/Forms/Label/Label.styles.js.map +1 -1
- package/dist/esm/components/Forms/Suggestions/Suggestions.styles.js +4 -4
- package/dist/esm/components/Forms/Suggestions/Suggestions.styles.js.map +1 -1
- package/dist/esm/components/Forms/WarningText/WarningText.js +1 -1
- package/dist/esm/components/Forms/WarningText/WarningText.js.map +1 -1
- package/dist/esm/components/Forms/WarningText/WarningText.styles.js +5 -5
- 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/Grid/Grid.js +1 -1
- package/dist/esm/components/Grid/Grid.js.map +1 -1
- package/dist/esm/components/Header/Brand/Brand.styles.js +15 -15
- package/dist/esm/components/Header/Brand/Brand.styles.js.map +1 -1
- package/dist/esm/components/Input/Input.js +1 -1
- package/dist/esm/components/Input/Input.js.map +1 -1
- package/dist/esm/components/Link/Link.styles.js +2 -2
- package/dist/esm/components/Link/Link.styles.js.map +1 -1
- package/dist/esm/components/ListContainer/ListItem/ListItem.styles.js +5 -5
- package/dist/esm/components/ListContainer/ListItem/ListItem.styles.js.map +1 -1
- package/dist/esm/components/Loading/Loading.js +1 -1
- package/dist/esm/components/Loading/Loading.js.map +1 -1
- package/dist/esm/components/Loading/Loading.styles.js +6 -6
- package/dist/esm/components/Loading/Loading.styles.js.map +1 -1
- package/dist/esm/components/MultiButton/MultiButton.styles.js +10 -10
- package/dist/esm/components/MultiButton/MultiButton.styles.js.map +1 -1
- package/dist/esm/components/Pagination/utils.js +1 -1
- package/dist/esm/components/Pagination/utils.js.map +1 -1
- package/dist/esm/components/ProgressBar/ProgressBar.styles.js +7 -7
- package/dist/esm/components/ProgressBar/ProgressBar.styles.js.map +1 -1
- package/dist/esm/components/Radio/Radio.styles.js +7 -7
- package/dist/esm/components/Radio/Radio.styles.js.map +1 -1
- package/dist/esm/components/RadioGroup/RadioGroup.styles.js +4 -4
- package/dist/esm/components/RadioGroup/RadioGroup.styles.js.map +1 -1
- package/dist/esm/components/SelectionList/SelectionList.styles.js +6 -6
- package/dist/esm/components/SelectionList/SelectionList.styles.js.map +1 -1
- package/dist/esm/components/Snackbar/Snackbar.js +1 -1
- package/dist/esm/components/Snackbar/Snackbar.js.map +1 -1
- package/dist/esm/components/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.js +1 -1
- package/dist/esm/components/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.js.map +1 -1
- package/dist/esm/components/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.styles.js +9 -9
- package/dist/esm/components/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.styles.js.map +1 -1
- package/dist/esm/components/Switch/Switch.styles.js +4 -4
- package/dist/esm/components/Switch/Switch.styles.js.map +1 -1
- package/dist/esm/components/Tab/Tab.styles.js +3 -3
- package/dist/esm/components/Tab/Tab.styles.js.map +1 -1
- package/dist/esm/components/Table/Table.js +1 -1
- package/dist/esm/components/Table/Table.js.map +1 -1
- package/dist/esm/components/Table/TableBody/TableBody.js +1 -1
- package/dist/esm/components/Table/TableBody/TableBody.js.map +1 -1
- package/dist/esm/components/Table/TableCell/TableCell.js +3 -3
- package/dist/esm/components/Table/TableCell/TableCell.js.map +1 -1
- package/dist/esm/components/Table/TableContainer/TableContainer.js +1 -1
- package/dist/esm/components/Table/TableContainer/TableContainer.js.map +1 -1
- package/dist/esm/components/Table/TableHead/TableHead.js +1 -1
- package/dist/esm/components/Table/TableHead/TableHead.js.map +1 -1
- package/dist/esm/components/Table/TableHeader/TableHeader.js +4 -4
- package/dist/esm/components/Table/TableHeader/TableHeader.js.map +1 -1
- package/dist/esm/components/Table/TableRow/TableRow.js +2 -2
- package/dist/esm/components/Table/TableRow/TableRow.js.map +1 -1
- package/dist/esm/components/Table/hooks/useFilters.js.map +1 -1
- package/dist/esm/components/Table/hooks/useGlobalFilter.js.map +1 -1
- package/dist/esm/components/Table/hooks/useRowSelection.js +5 -4
- package/dist/esm/components/Table/hooks/useRowSelection.js.map +1 -1
- package/dist/esm/components/Table/hooks/useTable.js +2 -2
- package/dist/esm/components/Table/hooks/useTable.js.map +1 -1
- package/dist/esm/components/Table/renderers/ProgressColumnCell/ProgressColumnCell.styles.js +5 -5
- package/dist/esm/components/Table/renderers/ProgressColumnCell/ProgressColumnCell.styles.js.map +1 -1
- package/dist/esm/components/Table/renderers/renderers.js.map +1 -1
- package/dist/esm/components/Tabs/Tabs.styles.js +2 -2
- package/dist/esm/components/Tabs/Tabs.styles.js.map +1 -1
- package/dist/esm/components/Tag/Tag.js +6 -6
- package/dist/esm/components/Tag/Tag.js.map +1 -1
- package/dist/esm/components/Tag/Tag.styles.js +13 -12
- package/dist/esm/components/Tag/Tag.styles.js.map +1 -1
- package/dist/esm/components/TagsInput/TagsInput.styles.js +14 -14
- package/dist/esm/components/TagsInput/TagsInput.styles.js.map +1 -1
- package/dist/esm/components/TextArea/TextArea.js +1 -1
- package/dist/esm/components/TextArea/TextArea.js.map +1 -1
- package/dist/esm/components/Tooltip/Tooltip.styles.js +4 -4
- package/dist/esm/components/Tooltip/Tooltip.styles.js.map +1 -1
- package/dist/esm/components/Typography/Typography.js +8 -4
- package/dist/esm/components/Typography/Typography.js.map +1 -1
- package/dist/esm/components/Typography/utils.js +9 -7
- package/dist/esm/components/Typography/utils.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/Actions/Action.js +1 -1
- package/dist/esm/components/VerticalNavigation/Actions/Action.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/Actions/Action.styles.js +2 -2
- package/dist/esm/components/VerticalNavigation/Actions/Action.styles.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/Actions/Actions.js +1 -1
- package/dist/esm/components/VerticalNavigation/Actions/Actions.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/Header/Header.js +32 -13
- package/dist/esm/components/VerticalNavigation/Header/Header.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/Header/Header.styles.js +17 -4
- package/dist/esm/components/VerticalNavigation/Header/Header.styles.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/Navigation/Navigation.js +27 -4
- package/dist/esm/components/VerticalNavigation/Navigation/Navigation.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/NavigationSlider/NavigationSlider.js +48 -0
- package/dist/esm/components/VerticalNavigation/NavigationSlider/NavigationSlider.js.map +1 -0
- package/dist/esm/components/VerticalNavigation/NavigationSlider/NavigationSlider.styles.js +36 -0
- package/dist/esm/components/VerticalNavigation/NavigationSlider/NavigationSlider.styles.js.map +1 -0
- package/dist/esm/components/VerticalNavigation/NavigationSlider/navigationSliderClasses.js +8 -0
- package/dist/esm/components/VerticalNavigation/NavigationSlider/navigationSliderClasses.js.map +1 -0
- package/dist/esm/components/VerticalNavigation/NavigationSlider/utils/NavigationSlider.utils.js +41 -0
- package/dist/esm/components/VerticalNavigation/NavigationSlider/utils/NavigationSlider.utils.js.map +1 -0
- package/dist/esm/components/VerticalNavigation/TreeView/TreeView.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/TreeView/TreeViewItem.js +2 -2
- package/dist/esm/components/VerticalNavigation/TreeView/TreeViewItem.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/VerticalNavigation.js +33 -10
- package/dist/esm/components/VerticalNavigation/VerticalNavigation.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/VerticalNavigation.styles.js +7 -2
- package/dist/esm/components/VerticalNavigation/VerticalNavigation.styles.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/VerticalNavigationContext.js +10 -0
- package/dist/esm/components/VerticalNavigation/VerticalNavigationContext.js.map +1 -0
- package/dist/esm/components/VerticalNavigation/verticalNavigationClasses.js +1 -1
- package/dist/esm/components/VerticalNavigation/verticalNavigationClasses.js.map +1 -1
- package/dist/esm/index.js +28 -23
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/providers/Provider.js +38 -8
- package/dist/esm/providers/Provider.js.map +1 -1
- package/dist/esm/providers/ThemeProvider.js +3 -3
- package/dist/esm/providers/ThemeProvider.js.map +1 -1
- package/dist/esm/utils/iconVariant.js +3 -3
- package/dist/esm/utils/iconVariant.js.map +1 -1
- package/dist/esm/utils/theme.js +29 -20
- package/dist/esm/utils/theme.js.map +1 -1
- package/dist/types/index.d.ts +182 -67
- package/package.json +6 -6
- package/dist/cjs/utils/emotion.cjs +0 -39
- package/dist/cjs/utils/emotion.cjs.map +0 -1
- package/dist/esm/utils/emotion.js +0 -36
- package/dist/esm/utils/emotion.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\";\nimport clsx from \"clsx\";\nimport { useControlled, useForkRef, useUniqueId } from \"hooks\";\nimport { HvVerticalNavigationTreeClasses } from \"../Navigation/navigationClasses\";\nimport {\n TreeViewControlContext,\n TreeViewStateContext,\n} from \"./TreeViewContext\";\nimport { DescendantProvider } from \"./descendants\";\nimport { StyledRoot } from \"./TreeView.styles\";\nimport { NavigationMode } from \"../Navigation\";\nimport treeViewClasses from \"./treeViewClasses\";\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,\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 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 (id) => selected.startsWith(id),\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 <StyledRoot\n ref={handleRef}\n id={idProp}\n className={clsx(treeViewClasses.root, 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 </StyledRoot>\n </DescendantProvider>\n </TreeViewStateContext.Provider>\n </TreeViewControlContext.Provider>\n );\n }\n);\n\nexport type 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 Radio button.\n */\n classes?: HvVerticalNavigationTreeClasses;\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"],"names":["isPrintableCharacter","string","length","match","findNextFirstChar","firstChars","startIndex","char","i","noopSelection","HvVerticalNavigationTreeView","forwardRef","props","ref","id","idProp","className","classes","mode","collapsible","expanded","expandedProp","defaultExpanded","onToggle","selectable","multiSelect","multiSelectProp","selected","selectedProp","defaultSelected","onChange","disabledItemsFocusable","onFocus","onBlur","onKeyDown","children","others","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","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","_jsx","TreeViewControlContext","Provider","TreeViewStateContext","DescendantProvider","StyledRoot","clsx","treeViewClasses","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\";\nimport clsx from \"clsx\";\nimport { useControlled, useForkRef, useUniqueId } from \"hooks\";\nimport { HvVerticalNavigationTreeClasses } from \"../Navigation/navigationClasses\";\nimport {\n TreeViewControlContext,\n TreeViewStateContext,\n} from \"./TreeViewContext\";\nimport { DescendantProvider } from \"./descendants\";\nimport { StyledRoot } from \"./TreeView.styles\";\nimport { NavigationMode } from \"../Navigation\";\nimport treeViewClasses from \"./treeViewClasses\";\n\nexport type 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 Radio button.\n */\n classes?: HvVerticalNavigationTreeClasses;\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,\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 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 (id) => selected.startsWith(id),\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 <StyledRoot\n ref={handleRef}\n id={idProp}\n className={clsx(treeViewClasses.root, 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 </StyledRoot>\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","mode","collapsible","expanded","expandedProp","defaultExpanded","onToggle","selectable","multiSelect","multiSelectProp","selected","selectedProp","defaultSelected","onChange","disabledItemsFocusable","onFocus","onBlur","onKeyDown","children","others","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","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","_jsx","TreeViewControlContext","Provider","TreeViewStateContext","DescendantProvider","StyledRoot","clsx","treeViewClasses","root","role","tabIndex"],"mappings":"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"}
|
|
@@ -5,9 +5,9 @@ import treeViewItemClasses from "./treeViewItemClasses.js";
|
|
|
5
5
|
import { StyledContent, StyledGroup, StyledNode } from "./TreeViewItem.styles.js";
|
|
6
6
|
import { useDescendant, DescendantProvider } from "./descendants.js";
|
|
7
7
|
import { TreeViewControlContext, TreeViewStateContext } from "./TreeViewContext.js";
|
|
8
|
-
import { VerticalNavigationContext } from "../VerticalNavigation.js";
|
|
9
8
|
import { jsxs, jsx } from "@emotion/react/jsx-runtime";
|
|
10
9
|
import useForkRef from "../../../hooks/useForkRef.js";
|
|
10
|
+
import { VerticalNavigationContext } from "../VerticalNavigationContext.js";
|
|
11
11
|
import { setId } from "../../../utils/setId.js";
|
|
12
12
|
import { HvAvatar } from "../../Avatar/Avatar.js";
|
|
13
13
|
const preventSelection = (event, disabled) => {
|
|
@@ -241,7 +241,7 @@ const HvVerticalNavigationTreeViewItem = forwardRef((props, ref) => {
|
|
|
241
241
|
children: [isOpen && expandable && (expanded ? /* @__PURE__ */ jsx(DropUpXS, {}) : /* @__PURE__ */ jsx(DropDownXS, {})), !icon && level === 0 && !isOpen && collapsedMode === "icon" && ((_a2 = contentRef.current) == null ? void 0 : _a2.textContent) ? /* @__PURE__ */ jsx(HvAvatar, {
|
|
242
242
|
variant: "square",
|
|
243
243
|
size: "xs",
|
|
244
|
-
backgroundColor: "
|
|
244
|
+
backgroundColor: "secondary_80",
|
|
245
245
|
style: {
|
|
246
246
|
fontSize: "15px"
|
|
247
247
|
},
|
|
@@ -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\";\nimport clsx from \"clsx\";\nimport { DropDownXS, DropUpXS } from \"@hitachivantara/uikit-react-icons\";\nimport { useForkRef } from \"hooks\";\nimport { setId } from \"utils\";\nimport treeViewItemClasses, {\n HvVerticalNavigationTreeViewItemClasses,\n} from \"./treeViewItemClasses\";\nimport { StyledContent, StyledGroup, StyledNode } from \"./TreeViewItem.styles\";\nimport { DescendantProvider, useDescendant } from \"./descendants\";\nimport {\n TreeViewControlContext,\n TreeViewStateContext,\n} from \"./TreeViewContext\";\nimport { VerticalNavigationContext } from \"../VerticalNavigation\";\nimport { HvAvatar } from \"components\";\n\nconst preventSelection = (event, disabled) => {\n if (event.shiftKey || event.ctrlKey || event.metaKey || disabled) {\n // Prevent text selection\n event.preventDefault();\n }\n};\n\nexport const HvVerticalNavigationTreeViewItem = forwardRef(\n (props: HvVerticalNavigationTreeViewItemProps, ref) => {\n const {\n id: idProp,\n className,\n classes,\n\n disabled: disabledProp = false,\n\n selectable: selectableProp,\n\n nodeId,\n icon = null,\n label,\n href,\n target,\n payload,\n\n onClick,\n onMouseDown,\n onFocus,\n\n children,\n\n ...others\n } = props;\n\n const treeViewControlContext = useContext(TreeViewControlContext);\n const { isExpanded, isSelected, isFocused, isDisabled, isChildSelected } =\n useContext(TreeViewStateContext);\n\n const {\n treeId,\n mode,\n collapsible,\n toggleExpansion,\n multiSelect,\n selectNode,\n selectRange,\n disabledItemsFocusable,\n registerNode,\n unregisterNode,\n mapFirstChar,\n unMapFirstChar,\n focus,\n } = treeViewControlContext;\n\n const treeviewMode = mode === \"treeview\";\n\n let id: string | null = null;\n\n if (idProp != null) {\n id = idProp;\n } else if (treeId && nodeId) {\n id = `${treeId}-${nodeId}`;\n }\n\n const [treeitemElement, setTreeitemElement] = useState(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const handleRef = useForkRef(setTreeitemElement, ref);\n\n const descendant = useMemo(\n () => ({\n element: treeitemElement,\n id: nodeId,\n }),\n [nodeId, treeitemElement]\n );\n\n const { isOpen, collapsedMode } = useContext(VerticalNavigationContext);\n\n const { index, parentId, level } = useDescendant(descendant);\n\n const expandable = collapsible && Array.isArray(children);\n const expanded = isExpanded ? isExpanded(nodeId) : false;\n const focused = isFocused ? isFocused(nodeId) : false;\n const selected = isSelected ? isSelected(nodeId) : false;\n const disabled = isDisabled ? isDisabled(nodeId) : false;\n\n const selectable =\n selectableProp != null ? selectableProp : !collapsible || !expandable;\n\n useEffect(() => {\n // On the first render a node's index will be -1. We want to wait for the real index.\n if (registerNode && unregisterNode && index !== -1) {\n registerNode({\n id: nodeId,\n idAttribute: id,\n index,\n parentId,\n selectable,\n expandable,\n disabled: disabledProp,\n onFocus,\n payload,\n });\n\n return () => {\n unregisterNode(nodeId);\n };\n }\n\n return undefined;\n }, [\n registerNode,\n unregisterNode,\n parentId,\n index,\n nodeId,\n expandable,\n disabledProp,\n id,\n selectable,\n onFocus,\n payload,\n ]);\n\n useEffect(() => {\n if (\n mapFirstChar &&\n unMapFirstChar &&\n label &&\n contentRef.current?.textContent\n ) {\n mapFirstChar(\n nodeId,\n contentRef.current?.textContent.substring(0, 1).toLowerCase()\n );\n\n return () => {\n unMapFirstChar(nodeId);\n };\n }\n return undefined;\n }, [mapFirstChar, unMapFirstChar, nodeId, label]);\n\n let ariaSelected;\n if (multiSelect) {\n ariaSelected = selected;\n } else if (selected) {\n /* single-selection trees unset aria-selected on un-selected items.\n *\n * If the tree does not support multiple selection, aria-selected\n * is set to true for the selected node and it is not present on any other node in the tree.\n * Source: https://www.w3.org/TR/wai-aria-practices/#TreeView\n */\n ariaSelected = true;\n }\n\n const handleFocus = useCallback(\n (event) => {\n // DOM focus stays on the tree which manages focus with aria-activedescendant\n if (event.target === event.currentTarget) {\n (event.target.ownerDocument || document)\n .getElementById(treeId)\n .focus({ preventScroll: true });\n }\n\n const unfocusable = !disabledItemsFocusable && disabled;\n if (\n !focused &&\n event.currentTarget === event.target &&\n !unfocusable &&\n focus\n ) {\n focus(event, nodeId);\n }\n },\n [disabled, disabledItemsFocusable, focus, focused, nodeId, treeId]\n );\n\n const handleExpansion = useCallback(\n (event) => {\n if (!disabled) {\n if (treeviewMode && !focused && focus) {\n focus(event, nodeId);\n }\n\n const multiple =\n multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);\n\n // If already expanded and trying to toggle selection don't close\n if (expandable && !(multiple && isExpanded && isExpanded(nodeId))) {\n if (toggleExpansion) toggleExpansion(event, nodeId);\n }\n }\n },\n [\n disabled,\n expandable,\n focus,\n focused,\n isExpanded,\n multiSelect,\n nodeId,\n toggleExpansion,\n treeviewMode,\n ]\n );\n\n const handleSelection = useCallback(\n (event) => {\n if (selectable && !disabled) {\n if (treeviewMode && !focused && focus) {\n focus(event, nodeId);\n }\n\n const multiple =\n multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);\n\n if (multiple) {\n if (event.shiftKey) {\n if (selectRange) return selectRange(event, { end: nodeId });\n } else {\n if (selectNode) return selectNode(event, nodeId, true);\n }\n } else {\n if (selectNode) return selectNode(event, nodeId);\n }\n } else {\n return false;\n }\n },\n [\n disabled,\n focus,\n focused,\n multiSelect,\n nodeId,\n selectNode,\n selectRange,\n selectable,\n treeviewMode,\n ]\n );\n\n const handleMouseDown = useCallback(\n (event) => {\n preventSelection(event, disabled);\n\n if (onMouseDown) {\n onMouseDown(event);\n }\n },\n [disabled, onMouseDown]\n );\n\n const handleClick = useCallback(\n (event) => {\n if (!disabled) {\n if (expandable) {\n handleExpansion(event);\n }\n\n if (selectable) {\n handleSelection(event);\n }\n }\n\n if (onClick) {\n onClick(event);\n }\n },\n [\n disabled,\n expandable,\n handleExpansion,\n handleSelection,\n onClick,\n selectable,\n ]\n );\n\n const handleKeyDown = useCallback(\n (event) => {\n let isEventHandled = false;\n const { key } = event;\n\n if (\n event.altKey ||\n event.ctrlKey ||\n event.metaKey ||\n event.currentTarget !== event.target\n ) {\n return;\n }\n if (contentRef.current === event.currentTarget) {\n if (key === \"Enter\" || key === \" \") {\n if (expandable) {\n isEventHandled = handleExpansion(event) as unknown as boolean;\n }\n\n if (selectable) {\n isEventHandled = handleSelection(event) as boolean;\n }\n }\n\n if (isEventHandled) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n },\n [expandable, handleExpansion, handleSelection, selectable]\n );\n\n const renderedContent = useMemo(\n () => (\n <StyledContent\n id={setId(id, \"button\")}\n component={href ? \"a\" : \"div\"}\n href={href}\n target={target}\n ref={contentRef}\n className={clsx(\n treeViewItemClasses.content,\n classes?.content,\n href != null && clsx(treeViewItemClasses.link, classes?.link),\n !isOpen && clsx(treeViewItemClasses.minimized, classes?.minimized)\n )}\n variant={disabled ? \"placeholderText\" : \"body\"}\n onClick={handleClick}\n onMouseDown={handleMouseDown}\n style={{\n paddingLeft:\n (expandable || icon != null ? 0 : 10) +\n level * (collapsible ? 32 : 10),\n }}\n {...(treeviewMode\n ? {\n role: \"button\",\n tabIndex: -1,\n onFocus: handleFocus,\n }\n : {\n role: \"button\",\n tabIndex: selectable || expandable ? 0 : -1,\n onKeyDown: handleKeyDown,\n \"aria-current\": selectable && selected ? \"page\" : undefined,\n \"aria-expanded\": expandable ? expanded : undefined,\n \"aria-controls\": expandable ? setId(id, \"group\") : undefined,\n })}\n >\n {isOpen && expandable && (expanded ? <DropUpXS /> : <DropDownXS />)}\n {!icon &&\n level === 0 &&\n !isOpen &&\n collapsedMode === \"icon\" &&\n contentRef.current?.textContent ? (\n <HvAvatar\n variant=\"square\"\n size=\"xs\"\n backgroundColor=\"acce4\"\n style={{ fontSize: \"15px\" }}\n >\n {contentRef.current?.textContent.substring(0, 1)}\n </HvAvatar>\n ) : (\n icon\n )}\n {isOpen && label}\n </StyledContent>\n ),\n [\n id,\n href,\n target,\n classes?.content,\n treeViewItemClasses.content,\n classes?.link,\n treeViewItemClasses.link,\n classes?.minimized,\n treeViewItemClasses.minimized,\n disabled,\n handleClick,\n handleMouseDown,\n expandable,\n icon,\n level,\n collapsible,\n treeviewMode,\n handleFocus,\n selectable,\n handleKeyDown,\n selected,\n expanded,\n label,\n ]\n );\n\n const renderedChildren = useMemo(\n () =>\n children && (\n <StyledGroup\n id={setId(id, \"group\")}\n className={clsx(treeViewItemClasses.group, classes?.group)}\n role={treeviewMode ? \"group\" : undefined}\n >\n {children}\n </StyledGroup>\n ),\n [children, treeViewItemClasses.group, classes?.group, id, treeviewMode]\n );\n\n return (\n <StyledNode\n ref={handleRef}\n id={id as string}\n className={clsx(\n treeViewItemClasses?.node,\n classes?.node,\n className,\n disabled && clsx(treeViewItemClasses.disabled, classes?.disabled),\n expandable &&\n clsx(treeViewItemClasses.expandable, classes?.expandable),\n expandable &&\n !expanded &&\n clsx(treeViewItemClasses.collapsed, classes?.collapsed),\n expandable &&\n expanded &&\n clsx(treeViewItemClasses.expanded, classes?.expanded),\n selectable &&\n !disabled &&\n clsx(treeViewItemClasses.selectable, classes?.selectable),\n !disabled &&\n !selectable &&\n clsx(treeViewItemClasses.unselectable, classes?.unselectable),\n !disabled &&\n selectable &&\n selected &&\n clsx(treeViewItemClasses.selected, classes?.selected),\n !disabled &&\n selectable &&\n !selected &&\n clsx(treeViewItemClasses.unselected, classes?.unselected),\n focused && clsx(treeViewItemClasses.focused, classes?.focused),\n !isOpen &&\n collapsedMode == \"simple\" &&\n clsx(treeViewItemClasses.hide, classes?.hide),\n !isOpen &&\n collapsedMode == \"icon\" &&\n isChildSelected &&\n isChildSelected(nodeId) &&\n clsx(treeViewItemClasses.selected, classes?.selected)\n )}\n data-hasicon={icon != null ? true : undefined}\n {...(mode === \"treeview\" && {\n role: \"treeitem\",\n \"aria-selected\": ariaSelected,\n \"aria-expanded\": expandable ? expanded : undefined,\n \"aria-disabled\": disabled ? true : undefined,\n })}\n {...others}\n >\n {renderedContent}\n {isOpen && (\n <DescendantProvider id={nodeId} level={level + 1}>\n {renderedChildren}\n </DescendantProvider>\n )}\n </StyledNode>\n );\n }\n);\n\nexport type HvVerticalNavigationTreeViewItemProps = {\n /**\n * Id to be applied to the root node.\n */\n id?: string;\n /**\n * Class names to be applied.\n */\n className?: string;\n /**\n * A Jss Object used to override or extend the styles applied to the Radio button.\n */\n classes?: HvVerticalNavigationTreeViewItemClasses;\n /**\n * Is the node disabled.\n */\n disabled?: boolean;\n /**\n * Can the node be selected.\n */\n selectable?: boolean;\n /**\n * The id of the node.\n */\n nodeId?: string;\n /**\n * The icon to display next to the node's label.\n */\n icon?: React.ReactNode;\n /**\n * The item label.\n */\n label?: React.ReactNode;\n /**\n * The url for the link.\n */\n href?: string;\n /**\n * The behavior when opening a link.\n */\n target?: string;\n /**\n * The node payload.\n */\n payload?: any;\n /**\n * @ignore\n */\n onClick?: any;\n /**\n * @ignore\n */\n onMouseDown?: any;\n /**\n * @ignore\n */\n onFocus?: any;\n /**\n * The content of the component.\n */\n children?: React.ReactNode;\n};\n"],"names":["preventSelection","event","disabled","shiftKey","ctrlKey","metaKey","preventDefault","HvVerticalNavigationTreeViewItem","forwardRef","props","ref","id","idProp","className","classes","disabledProp","selectable","selectableProp","nodeId","icon","label","href","target","payload","onClick","onMouseDown","onFocus","children","others","treeViewControlContext","useContext","TreeViewControlContext","isExpanded","isSelected","isFocused","isDisabled","isChildSelected","TreeViewStateContext","treeId","mode","collapsible","toggleExpansion","multiSelect","selectNode","selectRange","disabledItemsFocusable","registerNode","unregisterNode","mapFirstChar","unMapFirstChar","focus","treeviewMode","treeitemElement","setTreeitemElement","useState","contentRef","useRef","handleRef","useForkRef","descendant","useMemo","element","isOpen","collapsedMode","VerticalNavigationContext","index","parentId","level","useDescendant","expandable","Array","isArray","expanded","focused","selected","useEffect","idAttribute","undefined","current","textContent","substring","toLowerCase","ariaSelected","handleFocus","useCallback","currentTarget","ownerDocument","document","getElementById","preventScroll","unfocusable","handleExpansion","multiple","handleSelection","end","handleMouseDown","handleClick","handleKeyDown","isEventHandled","key","altKey","stopPropagation","renderedContent","_jsxs","StyledContent","setId","component","clsx","treeViewItemClasses","content","link","minimized","variant","style","paddingLeft","role","tabIndex","onKeyDown","DropUpXS","_jsx","DropDownXS","HvAvatar","size","backgroundColor","fontSize","renderedChildren","StyledGroup","group","StyledNode","node","collapsed","unselectable","unselected","hide","DescendantProvider"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TreeViewItem.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\";\nimport clsx from \"clsx\";\nimport { DropDownXS, DropUpXS } from \"@hitachivantara/uikit-react-icons\";\nimport { useForkRef } from \"hooks\";\nimport { setId } from \"utils\";\nimport treeViewItemClasses, {\n HvVerticalNavigationTreeViewItemClasses,\n} from \"./treeViewItemClasses\";\nimport { StyledContent, StyledGroup, StyledNode } from \"./TreeViewItem.styles\";\nimport { DescendantProvider, useDescendant } from \"./descendants\";\nimport {\n TreeViewControlContext,\n TreeViewStateContext,\n} from \"./TreeViewContext\";\nimport { HvAvatar } from \"components\";\nimport { VerticalNavigationContext } from \"../\";\n\nexport type HvVerticalNavigationTreeViewItemProps = {\n /**\n * Id to be applied to the root node.\n */\n id?: string;\n /**\n * Class names to be applied.\n */\n className?: string;\n /**\n * A Jss Object used to override or extend the styles applied to the Radio button.\n */\n classes?: HvVerticalNavigationTreeViewItemClasses;\n /**\n * Is the node disabled.\n */\n disabled?: boolean;\n /**\n * Can the node be selected.\n */\n selectable?: boolean;\n /**\n * The id of the node.\n */\n nodeId?: string;\n /**\n * The icon to display next to the node's label.\n */\n icon?: React.ReactNode;\n /**\n * The item label.\n */\n label?: React.ReactNode;\n /**\n * The url for the link.\n */\n href?: string;\n /**\n * The behavior when opening a link.\n */\n target?: string;\n /**\n * The node payload.\n */\n payload?: any;\n /**\n * @ignore\n */\n onClick?: any;\n /**\n * @ignore\n */\n onMouseDown?: any;\n /**\n * @ignore\n */\n onFocus?: any;\n /**\n * The content of the component.\n */\n children?: React.ReactNode;\n};\n\nconst preventSelection = (event, disabled) => {\n if (event.shiftKey || event.ctrlKey || event.metaKey || disabled) {\n // Prevent text selection\n event.preventDefault();\n }\n};\n\nexport const HvVerticalNavigationTreeViewItem = forwardRef(\n (props: HvVerticalNavigationTreeViewItemProps, ref) => {\n const {\n id: idProp,\n className,\n classes,\n\n disabled: disabledProp = false,\n\n selectable: selectableProp,\n\n nodeId,\n icon = null,\n label,\n href,\n target,\n payload,\n\n onClick,\n onMouseDown,\n onFocus,\n\n children,\n\n ...others\n } = props;\n\n const treeViewControlContext = useContext(TreeViewControlContext);\n const { isExpanded, isSelected, isFocused, isDisabled, isChildSelected } =\n useContext(TreeViewStateContext);\n\n const {\n treeId,\n mode,\n collapsible,\n toggleExpansion,\n multiSelect,\n selectNode,\n selectRange,\n disabledItemsFocusable,\n registerNode,\n unregisterNode,\n mapFirstChar,\n unMapFirstChar,\n focus,\n } = treeViewControlContext;\n\n const treeviewMode = mode === \"treeview\";\n\n let id: string | null = null;\n\n if (idProp != null) {\n id = idProp;\n } else if (treeId && nodeId) {\n id = `${treeId}-${nodeId}`;\n }\n\n const [treeitemElement, setTreeitemElement] = useState(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const handleRef = useForkRef(setTreeitemElement, ref);\n\n const descendant = useMemo(\n () => ({\n element: treeitemElement,\n id: nodeId,\n }),\n [nodeId, treeitemElement]\n );\n\n const { isOpen, collapsedMode } = useContext(VerticalNavigationContext);\n\n const { index, parentId, level } = useDescendant(descendant);\n\n const expandable = collapsible && Array.isArray(children);\n const expanded = isExpanded ? isExpanded(nodeId) : false;\n const focused = isFocused ? isFocused(nodeId) : false;\n const selected = isSelected ? isSelected(nodeId) : false;\n const disabled = isDisabled ? isDisabled(nodeId) : false;\n\n const selectable =\n selectableProp != null ? selectableProp : !collapsible || !expandable;\n\n useEffect(() => {\n // On the first render a node's index will be -1. We want to wait for the real index.\n if (registerNode && unregisterNode && index !== -1) {\n registerNode({\n id: nodeId,\n idAttribute: id,\n index,\n parentId,\n selectable,\n expandable,\n disabled: disabledProp,\n onFocus,\n payload,\n });\n\n return () => {\n unregisterNode(nodeId);\n };\n }\n\n return undefined;\n }, [\n registerNode,\n unregisterNode,\n parentId,\n index,\n nodeId,\n expandable,\n disabledProp,\n id,\n selectable,\n onFocus,\n payload,\n ]);\n\n useEffect(() => {\n if (\n mapFirstChar &&\n unMapFirstChar &&\n label &&\n contentRef.current?.textContent\n ) {\n mapFirstChar(\n nodeId,\n contentRef.current?.textContent.substring(0, 1).toLowerCase()\n );\n\n return () => {\n unMapFirstChar(nodeId);\n };\n }\n return undefined;\n }, [mapFirstChar, unMapFirstChar, nodeId, label]);\n\n let ariaSelected;\n if (multiSelect) {\n ariaSelected = selected;\n } else if (selected) {\n /* single-selection trees unset aria-selected on un-selected items.\n *\n * If the tree does not support multiple selection, aria-selected\n * is set to true for the selected node and it is not present on any other node in the tree.\n * Source: https://www.w3.org/TR/wai-aria-practices/#TreeView\n */\n ariaSelected = true;\n }\n\n const handleFocus = useCallback(\n (event) => {\n // DOM focus stays on the tree which manages focus with aria-activedescendant\n if (event.target === event.currentTarget) {\n (event.target.ownerDocument || document)\n .getElementById(treeId)\n .focus({ preventScroll: true });\n }\n\n const unfocusable = !disabledItemsFocusable && disabled;\n if (\n !focused &&\n event.currentTarget === event.target &&\n !unfocusable &&\n focus\n ) {\n focus(event, nodeId);\n }\n },\n [disabled, disabledItemsFocusable, focus, focused, nodeId, treeId]\n );\n\n const handleExpansion = useCallback(\n (event) => {\n if (!disabled) {\n if (treeviewMode && !focused && focus) {\n focus(event, nodeId);\n }\n\n const multiple =\n multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);\n\n // If already expanded and trying to toggle selection don't close\n if (expandable && !(multiple && isExpanded && isExpanded(nodeId))) {\n if (toggleExpansion) toggleExpansion(event, nodeId);\n }\n }\n },\n [\n disabled,\n expandable,\n focus,\n focused,\n isExpanded,\n multiSelect,\n nodeId,\n toggleExpansion,\n treeviewMode,\n ]\n );\n\n const handleSelection = useCallback(\n (event) => {\n if (selectable && !disabled) {\n if (treeviewMode && !focused && focus) {\n focus(event, nodeId);\n }\n\n const multiple =\n multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);\n\n if (multiple) {\n if (event.shiftKey) {\n if (selectRange) return selectRange(event, { end: nodeId });\n } else {\n if (selectNode) return selectNode(event, nodeId, true);\n }\n } else {\n if (selectNode) return selectNode(event, nodeId);\n }\n } else {\n return false;\n }\n },\n [\n disabled,\n focus,\n focused,\n multiSelect,\n nodeId,\n selectNode,\n selectRange,\n selectable,\n treeviewMode,\n ]\n );\n\n const handleMouseDown = useCallback(\n (event) => {\n preventSelection(event, disabled);\n\n if (onMouseDown) {\n onMouseDown(event);\n }\n },\n [disabled, onMouseDown]\n );\n\n const handleClick = useCallback(\n (event) => {\n if (!disabled) {\n if (expandable) {\n handleExpansion(event);\n }\n\n if (selectable) {\n handleSelection(event);\n }\n }\n\n if (onClick) {\n onClick(event);\n }\n },\n [\n disabled,\n expandable,\n handleExpansion,\n handleSelection,\n onClick,\n selectable,\n ]\n );\n\n const handleKeyDown = useCallback(\n (event) => {\n let isEventHandled = false;\n const { key } = event;\n\n if (\n event.altKey ||\n event.ctrlKey ||\n event.metaKey ||\n event.currentTarget !== event.target\n ) {\n return;\n }\n if (contentRef.current === event.currentTarget) {\n if (key === \"Enter\" || key === \" \") {\n if (expandable) {\n isEventHandled = handleExpansion(event) as unknown as boolean;\n }\n\n if (selectable) {\n isEventHandled = handleSelection(event) as boolean;\n }\n }\n\n if (isEventHandled) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n },\n [expandable, handleExpansion, handleSelection, selectable]\n );\n\n const renderedContent = useMemo(\n () => (\n <StyledContent\n id={setId(id, \"button\")}\n component={href ? \"a\" : \"div\"}\n href={href}\n target={target}\n ref={contentRef}\n className={clsx(\n treeViewItemClasses.content,\n classes?.content,\n href != null && clsx(treeViewItemClasses.link, classes?.link),\n !isOpen && clsx(treeViewItemClasses.minimized, classes?.minimized)\n )}\n variant={disabled ? \"placeholderText\" : \"body\"}\n onClick={handleClick}\n onMouseDown={handleMouseDown}\n style={{\n paddingLeft:\n (expandable || icon != null ? 0 : 10) +\n level * (collapsible ? 32 : 10),\n }}\n {...(treeviewMode\n ? {\n role: \"button\",\n tabIndex: -1,\n onFocus: handleFocus,\n }\n : {\n role: \"button\",\n tabIndex: selectable || expandable ? 0 : -1,\n onKeyDown: handleKeyDown,\n \"aria-current\": selectable && selected ? \"page\" : undefined,\n \"aria-expanded\": expandable ? expanded : undefined,\n \"aria-controls\": expandable ? setId(id, \"group\") : undefined,\n })}\n >\n {isOpen && expandable && (expanded ? <DropUpXS /> : <DropDownXS />)}\n {!icon &&\n level === 0 &&\n !isOpen &&\n collapsedMode === \"icon\" &&\n contentRef.current?.textContent ? (\n <HvAvatar\n variant=\"square\"\n size=\"xs\"\n backgroundColor=\"secondary_80\"\n style={{ fontSize: \"15px\" }}\n >\n {contentRef.current?.textContent.substring(0, 1)}\n </HvAvatar>\n ) : (\n icon\n )}\n {isOpen && label}\n </StyledContent>\n ),\n [\n id,\n href,\n target,\n classes?.content,\n treeViewItemClasses.content,\n classes?.link,\n treeViewItemClasses.link,\n classes?.minimized,\n treeViewItemClasses.minimized,\n disabled,\n handleClick,\n handleMouseDown,\n expandable,\n icon,\n level,\n collapsible,\n treeviewMode,\n handleFocus,\n selectable,\n handleKeyDown,\n selected,\n expanded,\n label,\n ]\n );\n\n const renderedChildren = useMemo(\n () =>\n children && (\n <StyledGroup\n id={setId(id, \"group\")}\n className={clsx(treeViewItemClasses.group, classes?.group)}\n role={treeviewMode ? \"group\" : undefined}\n >\n {children}\n </StyledGroup>\n ),\n [children, treeViewItemClasses.group, classes?.group, id, treeviewMode]\n );\n\n return (\n <StyledNode\n ref={handleRef}\n id={id as string}\n className={clsx(\n treeViewItemClasses?.node,\n classes?.node,\n className,\n disabled && clsx(treeViewItemClasses.disabled, classes?.disabled),\n expandable &&\n clsx(treeViewItemClasses.expandable, classes?.expandable),\n expandable &&\n !expanded &&\n clsx(treeViewItemClasses.collapsed, classes?.collapsed),\n expandable &&\n expanded &&\n clsx(treeViewItemClasses.expanded, classes?.expanded),\n selectable &&\n !disabled &&\n clsx(treeViewItemClasses.selectable, classes?.selectable),\n !disabled &&\n !selectable &&\n clsx(treeViewItemClasses.unselectable, classes?.unselectable),\n !disabled &&\n selectable &&\n selected &&\n clsx(treeViewItemClasses.selected, classes?.selected),\n !disabled &&\n selectable &&\n !selected &&\n clsx(treeViewItemClasses.unselected, classes?.unselected),\n focused && clsx(treeViewItemClasses.focused, classes?.focused),\n !isOpen &&\n collapsedMode == \"simple\" &&\n clsx(treeViewItemClasses.hide, classes?.hide),\n !isOpen &&\n collapsedMode == \"icon\" &&\n isChildSelected &&\n isChildSelected(nodeId) &&\n clsx(treeViewItemClasses.selected, classes?.selected)\n )}\n data-hasicon={icon != null ? true : undefined}\n {...(mode === \"treeview\" && {\n role: \"treeitem\",\n \"aria-selected\": ariaSelected,\n \"aria-expanded\": expandable ? expanded : undefined,\n \"aria-disabled\": disabled ? true : undefined,\n })}\n {...others}\n >\n {renderedContent}\n {isOpen && (\n <DescendantProvider id={nodeId} level={level + 1}>\n {renderedChildren}\n </DescendantProvider>\n )}\n </StyledNode>\n );\n }\n);\n"],"names":["preventSelection","event","disabled","shiftKey","ctrlKey","metaKey","preventDefault","HvVerticalNavigationTreeViewItem","forwardRef","props","ref","id","idProp","className","classes","disabledProp","selectable","selectableProp","nodeId","icon","label","href","target","payload","onClick","onMouseDown","onFocus","children","others","treeViewControlContext","useContext","TreeViewControlContext","isExpanded","isSelected","isFocused","isDisabled","isChildSelected","TreeViewStateContext","treeId","mode","collapsible","toggleExpansion","multiSelect","selectNode","selectRange","disabledItemsFocusable","registerNode","unregisterNode","mapFirstChar","unMapFirstChar","focus","treeviewMode","treeitemElement","setTreeitemElement","useState","contentRef","useRef","handleRef","useForkRef","descendant","useMemo","element","isOpen","collapsedMode","VerticalNavigationContext","index","parentId","level","useDescendant","expandable","Array","isArray","expanded","focused","selected","useEffect","idAttribute","undefined","current","textContent","substring","toLowerCase","ariaSelected","handleFocus","useCallback","currentTarget","ownerDocument","document","getElementById","preventScroll","unfocusable","handleExpansion","multiple","handleSelection","end","handleMouseDown","handleClick","handleKeyDown","isEventHandled","key","altKey","stopPropagation","renderedContent","_jsxs","StyledContent","setId","component","clsx","treeViewItemClasses","content","link","minimized","variant","style","paddingLeft","role","tabIndex","onKeyDown","DropUpXS","_jsx","DropDownXS","HvAvatar","size","backgroundColor","fontSize","renderedChildren","StyledGroup","group","StyledNode","node","collapsed","unselectable","unselected","hide","DescendantProvider"],"mappings":"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"}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import clsx from "clsx";
|
|
2
|
-
import {
|
|
2
|
+
import { useState, useMemo, useEffect } from "react";
|
|
3
3
|
import { StyledRoot } from "./VerticalNavigation.styles.js";
|
|
4
4
|
import verticalNavigationClasses from "./verticalNavigationClasses.js";
|
|
5
5
|
import { jsx } from "@emotion/react/jsx-runtime";
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
collapsedMode: "simple"
|
|
9
|
-
});
|
|
6
|
+
import { fillDataWithParentId, getParentItemById, getNavigationItemById } from "./NavigationSlider/utils/NavigationSlider.utils.js";
|
|
7
|
+
import { VerticalNavigationContext } from "./VerticalNavigationContext.js";
|
|
10
8
|
const HvVerticalNavigation = ({
|
|
11
9
|
id,
|
|
12
10
|
className,
|
|
@@ -14,17 +12,43 @@ const HvVerticalNavigation = ({
|
|
|
14
12
|
children,
|
|
15
13
|
open = true,
|
|
16
14
|
collapsedMode = "simple",
|
|
15
|
+
slider = false,
|
|
17
16
|
...others
|
|
18
17
|
}) => {
|
|
18
|
+
const [parentData, setParentData] = useState([]);
|
|
19
|
+
const [parentSelected, setParentSelected] = useState();
|
|
20
|
+
const [headerTitle, setHeaderTitle] = useState();
|
|
21
|
+
const withParentData = useMemo(() => fillDataWithParentId(parentData), [parentData]);
|
|
22
|
+
const initialParentItem = useMemo(() => getParentItemById(withParentData, parentSelected), [withParentData, parentSelected]);
|
|
23
|
+
const [parentItem, setParentItem] = useState(initialParentItem);
|
|
24
|
+
useEffect(() => setHeaderTitle(parentItem == null ? void 0 : parentItem.label), [parentItem, setParentItem]);
|
|
25
|
+
const navigateToParentHandler = () => {
|
|
26
|
+
setParentItem(getParentItemById(withParentData, parentItem.id));
|
|
27
|
+
};
|
|
28
|
+
const navigateToChildHandler = (event, item) => {
|
|
29
|
+
setParentItem(getNavigationItemById(withParentData, item.id));
|
|
30
|
+
event.stopPropagation();
|
|
31
|
+
};
|
|
19
32
|
const value = useMemo(() => ({
|
|
20
33
|
isOpen: open,
|
|
21
|
-
collapsedMode
|
|
22
|
-
|
|
34
|
+
collapsedMode,
|
|
35
|
+
slider,
|
|
36
|
+
headerTitle,
|
|
37
|
+
setHeaderTitle,
|
|
38
|
+
parentItem,
|
|
39
|
+
withParentData,
|
|
40
|
+
navigateToChildHandler,
|
|
41
|
+
navigateToParentHandler,
|
|
42
|
+
parentData,
|
|
43
|
+
setParentData,
|
|
44
|
+
parentSelected,
|
|
45
|
+
setParentSelected
|
|
46
|
+
}), [open, collapsedMode, slider, headerTitle, setHeaderTitle, parentItem, withParentData, navigateToChildHandler, navigateToParentHandler]);
|
|
23
47
|
const content = /* @__PURE__ */ jsx(VerticalNavigationContext.Provider, {
|
|
24
48
|
value,
|
|
25
49
|
children: /* @__PURE__ */ jsx(StyledRoot, {
|
|
26
50
|
id,
|
|
27
|
-
className: clsx(className, verticalNavigationClasses.root, classes == null ? void 0 : classes.root, !open && verticalNavigationClasses.collapsed, classes == null ? void 0 : classes.collapsed),
|
|
51
|
+
className: clsx(className, verticalNavigationClasses.root, classes == null ? void 0 : classes.root, !open && verticalNavigationClasses.collapsed, slider && verticalNavigationClasses.slider, classes == null ? void 0 : classes.collapsed),
|
|
28
52
|
...others,
|
|
29
53
|
children
|
|
30
54
|
})
|
|
@@ -32,7 +56,6 @@ const HvVerticalNavigation = ({
|
|
|
32
56
|
return content;
|
|
33
57
|
};
|
|
34
58
|
export {
|
|
35
|
-
HvVerticalNavigation
|
|
36
|
-
VerticalNavigationContext
|
|
59
|
+
HvVerticalNavigation
|
|
37
60
|
};
|
|
38
61
|
//# sourceMappingURL=VerticalNavigation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VerticalNavigation.js","sources":["../../../../src/components/VerticalNavigation/VerticalNavigation.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport {
|
|
1
|
+
{"version":3,"file":"VerticalNavigation.js","sources":["../../../../src/components/VerticalNavigation/VerticalNavigation.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { StyledRoot } from \"./VerticalNavigation.styles\";\nimport verticalNavigationClasses, {\n HvVerticalNavigationClasses,\n} from \"./verticalNavigationClasses\";\nimport { NavigationData, VerticalNavigationContext } from \"./\";\nimport {\n fillDataWithParentId,\n getNavigationItemById,\n getParentItemById,\n} from \"./NavigationSlider/utils\";\n\nexport type HvVerticalNavigationProps = {\n /**\n * Id to be applied to the root node.\n */\n id?: string;\n /**\n * Class names to be applied.\n */\n className?: string;\n /**\n * A Jss Object used to override or extend the styles applied to the component.\n */\n classes?: HvVerticalNavigationClasses;\n /**\n * Current State of the Vertical Navigation Collapse\n */\n open?: boolean;\n /**\n * Collpased Mode for the Vertical Navigation, the default value is \"simple\".\n */\n collapsedMode?: HvVerticalNavigationMode;\n /**\n * Boolean to determine if treeview is in slider mode (for mobile navigation), the default value is false.\n */\n slider?: boolean;\n /**\n * The content inside the actions container.\n */\n children?: React.ReactNode;\n};\n\n/**\n * Navigation enables users to move through an app to complete tasks.\n *\n * It is recommended to use vertical navigation when your application requires global navigation that is displayed on the left.\n * While vertical navigation menus generally consume more space than their horizontal counterparts, they have become more popular as desktop monitors move to wide-screen formats.\n *\n * Even thou both the hierarchically organized data and the visual style ressemble a treeview-like structure, the [Treeview Design Pattern](https://w3c.github.io/aria-practices/#TreeView)\n * isn't necessarily the most appropriate.\n *\n * The tree role provides complex functionality that is not needed for typical site navigation, and changes the most common keyboard navigation using TAB.\n *\n * The [Disclosure Design Pattern](https://w3c.github.io/aria-practices/#disclosure) is more suited for typical site navigation, with expandable groups of links.\n * However it can be tedious to TAB through all navigation items to reach the actions panel.\n *\n * Both modes are available via the `mode` property and each app should choose the most appropriate.\n */\nexport const HvVerticalNavigation = ({\n id,\n className,\n classes,\n\n children,\n\n open = true,\n\n collapsedMode = \"simple\",\n\n slider = false,\n\n ...others\n}: HvVerticalNavigationProps) => {\n const [parentData, setParentData] = useState<NavigationData[]>([]);\n\n const [parentSelected, setParentSelected] = useState();\n\n const [headerTitle, setHeaderTitle] = useState<string | undefined>();\n\n // navigationSlider\n const withParentData = useMemo(\n () => fillDataWithParentId(parentData),\n [parentData]\n );\n\n const initialParentItem = useMemo(\n () => getParentItemById(withParentData, parentSelected),\n [withParentData, parentSelected]\n );\n\n const [parentItem, setParentItem] = useState(initialParentItem);\n\n useEffect(\n () => setHeaderTitle(parentItem?.label),\n [parentItem, setParentItem]\n );\n\n const navigateToParentHandler = () => {\n setParentItem(getParentItemById(withParentData, parentItem.id));\n };\n\n const navigateToChildHandler = (event, item) => {\n setParentItem(getNavigationItemById(withParentData, item.id));\n event.stopPropagation();\n };\n\n const value = useMemo(\n () => ({\n isOpen: open,\n collapsedMode,\n slider,\n headerTitle,\n setHeaderTitle,\n\n parentItem,\n withParentData,\n navigateToChildHandler,\n navigateToParentHandler,\n\n parentData,\n setParentData,\n parentSelected,\n setParentSelected,\n }),\n [\n open,\n collapsedMode,\n slider,\n headerTitle,\n setHeaderTitle,\n parentItem,\n withParentData,\n navigateToChildHandler,\n navigateToParentHandler,\n ]\n );\n\n const content = (\n <VerticalNavigationContext.Provider value={value}>\n <StyledRoot\n id={id}\n className={clsx(\n className,\n verticalNavigationClasses.root,\n classes?.root,\n !open && verticalNavigationClasses.collapsed,\n slider && verticalNavigationClasses.slider,\n classes?.collapsed\n )}\n {...others}\n >\n {children}\n </StyledRoot>\n </VerticalNavigationContext.Provider>\n );\n\n return content;\n};\n\nexport type HvVerticalNavigationMode = \"icon\" | \"simple\";\n\nexport type HvVerticalNavigationPosition =\n | \"static\"\n | \"relative\"\n | \"fixed\"\n | \"absolute\";\n"],"names":["HvVerticalNavigation","id","className","classes","children","open","collapsedMode","slider","others","parentData","setParentData","useState","parentSelected","setParentSelected","headerTitle","setHeaderTitle","withParentData","useMemo","fillDataWithParentId","initialParentItem","getParentItemById","parentItem","setParentItem","label","navigateToParentHandler","navigateToChildHandler","event","item","getNavigationItemById","stopPropagation","value","isOpen","content","VerticalNavigationContext","Provider","StyledRoot","clsx","verticalNavigationClasses","root","collapsed"],"mappings":";;;;;;;AA4DO,MAAMA,uBAAuBA,CAAC;AAAA,EACnCC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EAEAC;AAAAA,EAEAC,OAAO;AAAA,EAEPC,gBAAgB;AAAA,EAEhBC,SAAS;AAAA,EAET,GAAGC;AACsB,MAAM;AAC/B,QAAM,CAACC,YAAYC,aAAa,IAAIC,SAA2B,CAAE,CAAA;AAEjE,QAAM,CAACC,gBAAgBC,iBAAiB,IAAIF,SAAU;AAEtD,QAAM,CAACG,aAAaC,cAAc,IAAIJ,SAA8B;AAG9DK,QAAAA,iBAAiBC,QACrB,MAAMC,qBAAqBT,UAAU,GACrC,CAACA,UAAU,CAAC;AAGRU,QAAAA,oBAAoBF,QACxB,MAAMG,kBAAkBJ,gBAAgBJ,cAAc,GACtD,CAACI,gBAAgBJ,cAAc,CAAC;AAGlC,QAAM,CAACS,YAAYC,aAAa,IAAIX,SAASQ,iBAAiB;AAG5D,YAAA,MAAMJ,eAAeM,yCAAYE,KAAK,GACtC,CAACF,YAAYC,aAAa,CAAC;AAG7B,QAAME,0BAA0BA,MAAM;AACpCF,kBAAcF,kBAAkBJ,gBAAgBK,WAAWpB,EAAE,CAAC;AAAA,EAAA;AAG1DwB,QAAAA,yBAAyBA,CAACC,OAAOC,SAAS;AAC9CL,kBAAcM,sBAAsBZ,gBAAgBW,KAAK1B,EAAE,CAAC;AAC5DyB,UAAMG,gBAAiB;AAAA,EAAA;AAGnBC,QAAAA,QAAQb,QACZ,OAAO;AAAA,IACLc,QAAQ1B;AAAAA,IACRC;AAAAA,IACAC;AAAAA,IACAO;AAAAA,IACAC;AAAAA,IAEAM;AAAAA,IACAL;AAAAA,IACAS;AAAAA,IACAD;AAAAA,IAEAf;AAAAA,IACAC;AAAAA,IACAE;AAAAA,IACAC;AAAAA,EACF,IACA,CACER,MACAC,eACAC,QACAO,aACAC,gBACAM,YACAL,gBACAS,wBACAD,uBAAuB,CACxB;AAGGQ,QAAAA,UACHC,oBAAAA,0BAA0BC,UAAQ;AAAA,IAACJ;AAAAA,IAAa1B,8BAC9C+B,YAAU;AAAA,MACTlC;AAAAA,MACAC,WAAWkC,KACTlC,WACAmC,0BAA0BC,MAC1BnC,mCAASmC,MACT,CAACjC,QAAQgC,0BAA0BE,WACnChC,UAAU8B,0BAA0B9B,QACpCJ,mCAASoC,SAAS;AAAA,MAClB,GACE/B;AAAAA,MAAMJ;AAAAA,IAAAA,CAED;AAAA,EAAA,CAGd;AAEM4B,SAAAA;AACT;"}
|
|
@@ -12,7 +12,7 @@ const StyledRoot = /* @__PURE__ */ _styled("div", process.env.NODE_ENV === "prod
|
|
|
12
12
|
justifyContent: theme.verticalNavigation.justifyContent,
|
|
13
13
|
width: "100%",
|
|
14
14
|
background: theme.colors.atmo1,
|
|
15
|
-
boxShadow: theme.
|
|
15
|
+
boxShadow: theme.colors.shadow,
|
|
16
16
|
clipPath: "inset(0px -12px 0px 0px)",
|
|
17
17
|
[`&.${verticalNavigationClasses.collapsed}`]: {
|
|
18
18
|
width: "56px",
|
|
@@ -33,8 +33,13 @@ const StyledRoot = /* @__PURE__ */ _styled("div", process.env.NODE_ENV === "prod
|
|
|
33
33
|
"& > :first-of-type:not(:last-child)": {
|
|
34
34
|
borderTop: "none",
|
|
35
35
|
padding: theme.spacing(["sm", "sm", "xs", "sm"])
|
|
36
|
+
},
|
|
37
|
+
[`&.${verticalNavigationClasses.slider}`]: {
|
|
38
|
+
"& > div:first-of-type": {
|
|
39
|
+
borderBottom: `3px solid ${theme.colors.atmo2}`
|
|
40
|
+
}
|
|
36
41
|
}
|
|
37
|
-
}, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
42
|
+
}, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2h2LXVpa2l0LXJlYWN0L2h2LXVpa2l0LXJlYWN0L3BhY2thZ2VzL2NvcmUvc3JjL2NvbXBvbmVudHMvVmVydGljYWxOYXZpZ2F0aW9uL1ZlcnRpY2FsTmF2aWdhdGlvbi5zdHlsZXMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUkwQiIsImZpbGUiOiIvaG9tZS9ydW5uZXIvd29yay9odi11aWtpdC1yZWFjdC9odi11aWtpdC1yZWFjdC9wYWNrYWdlcy9jb3JlL3NyYy9jb21wb25lbnRzL1ZlcnRpY2FsTmF2aWdhdGlvbi9WZXJ0aWNhbE5hdmlnYXRpb24uc3R5bGVzLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZFwiO1xuaW1wb3J0IHsgdGhlbWUgfSBmcm9tIFwiQGhpdGFjaGl2YW50YXJhL3Vpa2l0LXN0eWxlc1wiO1xuaW1wb3J0IHZlcnRpY2FsTmF2aWdhdGlvbkNsYXNzZXMgZnJvbSBcIi4vdmVydGljYWxOYXZpZ2F0aW9uQ2xhc3Nlc1wiO1xuXG5leHBvcnQgY29uc3QgU3R5bGVkUm9vdCA9IHN0eWxlZChcImRpdlwiKSh7XG4gIGRpc3BsYXk6IFwiZmxleFwiLFxuICBmbGV4RGlyZWN0aW9uOiBcImNvbHVtblwiLFxuICBqdXN0aWZ5Q29udGVudDogdGhlbWUudmVydGljYWxOYXZpZ2F0aW9uLmp1c3RpZnlDb250ZW50LFxuXG4gIHdpZHRoOiBcIjEwMCVcIixcblxuICBiYWNrZ3JvdW5kOiB0aGVtZS5jb2xvcnMuYXRtbzEsXG4gIGJveFNoYWRvdzogdGhlbWUuY29sb3JzLnNoYWRvdyxcbiAgY2xpcFBhdGg6IFwiaW5zZXQoMHB4IC0xMnB4IDBweCAwcHgpXCIsXG5cbiAgW2AmLiR7dmVydGljYWxOYXZpZ2F0aW9uQ2xhc3Nlcy5jb2xsYXBzZWR9YF06IHtcbiAgICB3aWR0aDogXCI1NnB4XCIsXG5cbiAgICBcIiYgPiA6Zmlyc3Qtb2YtdHlwZTpub3QoOmxhc3QtY2hpbGQpXCI6IHtcbiAgICAgIHBhZGRpbmc6IHRoZW1lLnNwYWNpbmcoW1wic21cIiwgXCJ4c1wiLCBcInhzXCIsIFwieHNcIl0pLFxuICAgIH0sXG5cbiAgICBcIiYgPiA6bm90KG5hdjpmaXJzdC1vZi10eXBlKVwiOiB7XG4gICAgICBwYWRkaW5nOiB0aGVtZS5zcGFjaW5nKFtcInhzXCIsIFwieHNcIiwgXCJzbVwiLCBcInhzXCJdKSxcbiAgICB9LFxuICB9LFxuXG4gIFwiJiA+IDpvbmx5LWNoaWxkXCI6IHtcbiAgICBwYWRkaW5nOiB0aGVtZS5zcGFjZS5zbSxcbiAgfSxcbiAgXCImID4gOm5vdChuYXY6Zmlyc3Qtb2YtdHlwZSlcIjoge1xuICAgIGJvcmRlclRvcDogYDNweCBzb2xpZCAke3RoZW1lLmNvbG9ycy5hdG1vMn1gLFxuICAgIHBhZGRpbmc6IHRoZW1lLnNwYWNpbmcoW1wieHNcIiwgXCJzbVwiLCBcInNtXCIsIFwic21cIl0pLFxuICB9LFxuXG4gIFwiJiA+IDpmaXJzdC1vZi10eXBlOm5vdCg6bGFzdC1jaGlsZClcIjoge1xuICAgIGJvcmRlclRvcDogXCJub25lXCIsXG4gICAgcGFkZGluZzogdGhlbWUuc3BhY2luZyhbXCJzbVwiLCBcInNtXCIsIFwieHNcIiwgXCJzbVwiXSksXG4gIH0sXG5cbiAgW2AmLiR7dmVydGljYWxOYXZpZ2F0aW9uQ2xhc3Nlcy5zbGlkZXJ9YF06IHtcbiAgICBcIiYgPiBkaXY6Zmlyc3Qtb2YtdHlwZVwiOiB7XG4gICAgICBib3JkZXJCb3R0b206IGAzcHggc29saWQgJHt0aGVtZS5jb2xvcnMuYXRtbzJ9YCxcbiAgICB9LFxuICB9LFxufSk7XG4iXX0= */");
|
|
38
43
|
export {
|
|
39
44
|
StyledRoot
|
|
40
45
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VerticalNavigation.styles.js","sources":["../../../../src/components/VerticalNavigation/VerticalNavigation.styles.tsx"],"sourcesContent":["import styled from \"@emotion/styled\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\nimport verticalNavigationClasses from \"./verticalNavigationClasses\";\n\nexport const StyledRoot = styled(\"div\")({\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: theme.verticalNavigation.justifyContent,\n\n width: \"100%\",\n\n background: theme.colors.atmo1,\n boxShadow: theme.
|
|
1
|
+
{"version":3,"file":"VerticalNavigation.styles.js","sources":["../../../../src/components/VerticalNavigation/VerticalNavigation.styles.tsx"],"sourcesContent":["import styled from \"@emotion/styled\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\nimport verticalNavigationClasses from \"./verticalNavigationClasses\";\n\nexport const StyledRoot = styled(\"div\")({\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: theme.verticalNavigation.justifyContent,\n\n width: \"100%\",\n\n background: theme.colors.atmo1,\n boxShadow: theme.colors.shadow,\n clipPath: \"inset(0px -12px 0px 0px)\",\n\n [`&.${verticalNavigationClasses.collapsed}`]: {\n width: \"56px\",\n\n \"& > :first-of-type:not(:last-child)\": {\n padding: theme.spacing([\"sm\", \"xs\", \"xs\", \"xs\"]),\n },\n\n \"& > :not(nav:first-of-type)\": {\n padding: theme.spacing([\"xs\", \"xs\", \"sm\", \"xs\"]),\n },\n },\n\n \"& > :only-child\": {\n padding: theme.space.sm,\n },\n \"& > :not(nav:first-of-type)\": {\n borderTop: `3px solid ${theme.colors.atmo2}`,\n padding: theme.spacing([\"xs\", \"sm\", \"sm\", \"sm\"]),\n },\n\n \"& > :first-of-type:not(:last-child)\": {\n borderTop: \"none\",\n padding: theme.spacing([\"sm\", \"sm\", \"xs\", \"sm\"]),\n },\n\n [`&.${verticalNavigationClasses.slider}`]: {\n \"& > div:first-of-type\": {\n borderBottom: `3px solid ${theme.colors.atmo2}`,\n },\n },\n});\n"],"names":["StyledRoot","process","env","NODE_ENV","target","label","display","flexDirection","justifyContent","theme","verticalNavigation","width","background","colors","atmo1","boxShadow","shadow","clipPath","verticalNavigationClasses","collapsed","padding","spacing","space","sm","borderTop","atmo2","slider","borderBottom"],"mappings":";;;AAIO,MAAMA,aAAoB,wBAAA,OAAKC,QAAAC,IAAAC,aAAA,eAAA;AAAA,EAAAC,QAAA;AAAA,IAAA;AAAA,EAAAA,QAAA;AAAA,EAAAC,OAAA;AAAA,CAAA,EAAE;AAAA,EACtCC,SAAS;AAAA,EACTC,eAAe;AAAA,EACfC,gBAAgBC,MAAMC,mBAAmBF;AAAAA,EAEzCG,OAAO;AAAA,EAEPC,YAAYH,MAAMI,OAAOC;AAAAA,EACzBC,WAAWN,MAAMI,OAAOG;AAAAA,EACxBC,UAAU;AAAA,EAEV,CAAE,KAAIC,0BAA0BC,WAAW,GAAG;AAAA,IAC5CR,OAAO;AAAA,IAEP,uCAAuC;AAAA,MACrCS,SAASX,MAAMY,QAAQ,CAAC,MAAM,MAAM,MAAM,IAAI,CAAC;AAAA,IACjD;AAAA,IAEA,+BAA+B;AAAA,MAC7BD,SAASX,MAAMY,QAAQ,CAAC,MAAM,MAAM,MAAM,IAAI,CAAC;AAAA,IACjD;AAAA,EACF;AAAA,EAEA,mBAAmB;AAAA,IACjBD,SAASX,MAAMa,MAAMC;AAAAA,EACvB;AAAA,EACA,+BAA+B;AAAA,IAC7BC,WAAY,aAAYf,MAAMI,OAAOY;AAAAA,IACrCL,SAASX,MAAMY,QAAQ,CAAC,MAAM,MAAM,MAAM,IAAI,CAAC;AAAA,EACjD;AAAA,EAEA,uCAAuC;AAAA,IACrCG,WAAW;AAAA,IACXJ,SAASX,MAAMY,QAAQ,CAAC,MAAM,MAAM,MAAM,IAAI,CAAC;AAAA,EACjD;AAAA,EAEA,CAAE,KAAIH,0BAA0BQ,QAAQ,GAAG;AAAA,IACzC,yBAAyB;AAAA,MACvBC,cAAe,aAAYlB,MAAMI,OAAOY;AAAAA,IAC1C;AAAA,EACF;AACF,GAACxB,QAAAC,IAAAC,aAAC,eAAA,KAAA,6tEAAA;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VerticalNavigationContext.js","sources":["../../../../src/components/VerticalNavigation/VerticalNavigationContext.tsx"],"sourcesContent":["import { createContext } from \"react\";\nimport { NavigationData, HvVerticalNavigationMode } from \"./\";\n\ninterface VerticalNavigationContextValue {\n isOpen: boolean;\n collapsedMode: HvVerticalNavigationMode;\n slider?: boolean;\n headerTitle?: string;\n setHeaderTitle?: React.Dispatch<React.SetStateAction<string | undefined>>;\n\n parentItem?;\n withParentData?;\n navigateToChildHandler?: (event, item) => void;\n navigateToParentHandler?: () => void;\n\n parentData?: NavigationData[];\n setParentData?: React.Dispatch<React.SetStateAction<any>>;\n parentSelected?;\n setParentSelected?: React.Dispatch<React.SetStateAction<any>>;\n}\n\nconst VerticalNavigationContext = createContext<VerticalNavigationContextValue>(\n {\n isOpen: true,\n collapsedMode: \"simple\",\n slider: false,\n }\n);\n\nexport { VerticalNavigationContext };\n"],"names":["VerticalNavigationContext","createContext","isOpen","collapsedMode","slider"],"mappings":";AAqBA,MAAMA,4BAA4BC,cAChC;AAAA,EACEC,QAAQ;AAAA,EACRC,eAAe;AAAA,EACfC,QAAQ;AACV,CAAC;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getClasses } from "../../utils/classes.js";
|
|
2
|
-
const classKeys = ["root", "collapsed"];
|
|
2
|
+
const classKeys = ["root", "collapsed", "slider"];
|
|
3
3
|
const verticalNavigationClasses = getClasses(classKeys, "HvVerticalNavigation");
|
|
4
4
|
const verticalNavigationClasses$1 = verticalNavigationClasses;
|
|
5
5
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verticalNavigationClasses.js","sources":["../../../../src/components/VerticalNavigation/verticalNavigationClasses.tsx"],"sourcesContent":["import { getClasses } from \"utils\";\n\nexport type HvVerticalNavigationClasses = {\n /** Style applied to the root of the component. */\n root?: string;\n /** Style applied to the root of the component when its collapsed. */\n collapsed?: string;\n};\n\nconst classKeys: string[] = [\"root\", \"collapsed\"];\n\nconst verticalNavigationClasses = getClasses<HvVerticalNavigationClasses>(\n classKeys,\n \"HvVerticalNavigation\"\n);\n\nexport default verticalNavigationClasses;\n"],"names":["classKeys","verticalNavigationClasses","getClasses"],"mappings":";
|
|
1
|
+
{"version":3,"file":"verticalNavigationClasses.js","sources":["../../../../src/components/VerticalNavigation/verticalNavigationClasses.tsx"],"sourcesContent":["import { getClasses } from \"utils\";\n\nexport type HvVerticalNavigationClasses = {\n /** Style applied to the root of the component. */\n root?: string;\n /** Style applied to the root of the component when its collapsed. */\n collapsed?: string;\n /** Style applied to the root of the component when its in slider mode. */\n slider?;\n};\n\nconst classKeys: string[] = [\"root\", \"collapsed\", \"slider\"];\n\nconst verticalNavigationClasses = getClasses<HvVerticalNavigationClasses>(\n classKeys,\n \"HvVerticalNavigation\"\n);\n\nexport default verticalNavigationClasses;\n"],"names":["classKeys","verticalNavigationClasses","getClasses"],"mappings":";AAWA,MAAMA,YAAsB,CAAC,QAAQ,aAAa,QAAQ;AAE1D,MAAMC,4BAA4BC,WAChCF,WACA,sBAAsB;AAGxB,MAAA,8BAAeC;"}
|