@patternfly/react-core 6.3.0-prerelease.9 → 6.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +147 -0
- package/CONTRIBUTING.md +3 -5
- package/components/package.json +1 -1
- package/deprecated/package.json +1 -1
- package/dist/dynamic/components/AboutModal/package.json +1 -1
- package/dist/dynamic/components/Accordion/package.json +1 -1
- package/dist/dynamic/components/ActionList/package.json +1 -1
- package/dist/dynamic/components/Alert/package.json +1 -1
- package/dist/dynamic/components/Avatar/package.json +1 -1
- package/dist/dynamic/components/BackToTop/package.json +1 -1
- package/dist/dynamic/components/Backdrop/package.json +1 -1
- package/dist/dynamic/components/BackgroundImage/package.json +1 -1
- package/dist/dynamic/components/Badge/package.json +1 -1
- package/dist/dynamic/components/Banner/package.json +1 -1
- package/dist/dynamic/components/Brand/package.json +1 -1
- package/dist/dynamic/components/Breadcrumb/package.json +1 -1
- package/dist/dynamic/components/Button/package.json +1 -1
- package/dist/dynamic/components/CalendarMonth/package.json +1 -1
- package/dist/dynamic/components/Card/package.json +1 -1
- package/dist/dynamic/components/Checkbox/package.json +1 -1
- package/dist/dynamic/components/ClipboardCopy/package.json +1 -1
- package/dist/dynamic/components/CodeBlock/package.json +1 -1
- package/dist/dynamic/components/Content/package.json +1 -1
- package/dist/dynamic/components/DataList/package.json +1 -1
- package/dist/dynamic/components/DatePicker/package.json +1 -1
- package/dist/dynamic/components/DescriptionList/package.json +1 -1
- package/dist/dynamic/components/Divider/package.json +1 -1
- package/dist/dynamic/components/Drawer/package.json +1 -1
- package/dist/dynamic/components/Dropdown/package.json +1 -1
- package/dist/dynamic/components/DualListSelector/package.json +1 -1
- package/dist/dynamic/components/EmptyState/package.json +1 -1
- package/dist/dynamic/components/ExpandableSection/package.json +1 -1
- package/dist/dynamic/components/FileUpload/package.json +1 -1
- package/dist/dynamic/components/Form/package.json +1 -1
- package/dist/dynamic/components/FormSelect/package.json +1 -1
- package/dist/dynamic/components/HelperText/package.json +1 -1
- package/dist/dynamic/components/Hint/package.json +1 -1
- package/dist/dynamic/components/Icon/package.json +1 -1
- package/dist/dynamic/components/InputGroup/package.json +1 -1
- package/dist/dynamic/components/JumpLinks/package.json +1 -1
- package/dist/dynamic/components/Label/package.json +1 -1
- package/dist/dynamic/components/List/package.json +1 -1
- package/dist/dynamic/components/LoginPage/package.json +1 -1
- package/dist/dynamic/components/Masthead/package.json +1 -1
- package/dist/dynamic/components/Menu/package.json +1 -1
- package/dist/dynamic/components/MenuToggle/package.json +1 -1
- package/dist/dynamic/components/Modal/package.json +1 -1
- package/dist/dynamic/components/MultipleFileUpload/package.json +1 -1
- package/dist/dynamic/components/Nav/package.json +1 -1
- package/dist/dynamic/components/NotificationBadge/package.json +1 -1
- package/dist/dynamic/components/NotificationDrawer/package.json +1 -1
- package/dist/dynamic/components/NumberInput/package.json +1 -1
- package/dist/dynamic/components/OverflowMenu/package.json +1 -1
- package/dist/dynamic/components/Page/package.json +1 -1
- package/dist/dynamic/components/Pagination/package.json +1 -1
- package/dist/dynamic/components/Panel/package.json +1 -1
- package/dist/dynamic/components/Popover/package.json +1 -1
- package/dist/dynamic/components/Progress/package.json +1 -1
- package/dist/dynamic/components/ProgressStepper/package.json +1 -1
- package/dist/dynamic/components/Radio/package.json +1 -1
- package/dist/dynamic/components/SearchInput/package.json +1 -1
- package/dist/dynamic/components/Select/package.json +1 -1
- package/dist/dynamic/components/Sidebar/package.json +1 -1
- package/dist/dynamic/components/SimpleList/package.json +1 -1
- package/dist/dynamic/components/Skeleton/package.json +1 -1
- package/dist/dynamic/components/SkipToContent/package.json +1 -1
- package/dist/dynamic/components/Slider/package.json +1 -1
- package/dist/dynamic/components/Spinner/package.json +1 -1
- package/dist/dynamic/components/Switch/package.json +1 -1
- package/dist/dynamic/components/Tabs/package.json +1 -1
- package/dist/dynamic/components/TextArea/package.json +1 -1
- package/dist/dynamic/components/TextInput/package.json +1 -1
- package/dist/dynamic/components/TextInputGroup/package.json +1 -1
- package/dist/dynamic/components/TimePicker/package.json +1 -1
- package/dist/dynamic/components/Timestamp/package.json +1 -1
- package/dist/dynamic/components/Title/package.json +1 -1
- package/dist/dynamic/components/ToggleGroup/package.json +1 -1
- package/dist/dynamic/components/Toolbar/package.json +1 -1
- package/dist/dynamic/components/Tooltip/package.json +1 -1
- package/dist/dynamic/components/TreeView/package.json +1 -1
- package/dist/dynamic/components/Truncate/package.json +1 -1
- package/dist/dynamic/components/Wizard/hooks/package.json +1 -1
- package/dist/dynamic/components/Wizard/package.json +1 -1
- package/dist/dynamic/deprecated/components/Chip/package.json +1 -1
- package/dist/dynamic/deprecated/components/DragDrop/package.json +1 -1
- package/dist/dynamic/deprecated/components/DualListSelector/package.json +1 -1
- package/dist/dynamic/deprecated/components/Modal/package.json +1 -1
- package/dist/dynamic/deprecated/components/Tile/package.json +1 -1
- package/dist/dynamic/deprecated/components/Wizard/package.json +1 -1
- package/dist/dynamic/deprecated/components/package.json +1 -1
- package/dist/dynamic/helpers/FocusTrap/FocusTrap/package.json +1 -1
- package/dist/dynamic/helpers/GenerateId/GenerateId/package.json +1 -1
- package/dist/dynamic/helpers/KeyboardHandler/package.json +1 -1
- package/dist/dynamic/helpers/OUIA/ouia/package.json +1 -1
- package/dist/dynamic/helpers/Popper/Popper/package.json +1 -1
- package/dist/dynamic/helpers/constants/package.json +1 -1
- package/dist/dynamic/helpers/datetimeUtils/package.json +1 -1
- package/dist/dynamic/helpers/fileUtils/package.json +1 -1
- package/dist/dynamic/helpers/htmlConstants/package.json +1 -1
- package/dist/dynamic/helpers/package.json +1 -1
- package/dist/dynamic/helpers/resizeObserver/package.json +1 -1
- package/dist/dynamic/helpers/typeUtils/package.json +1 -1
- package/dist/dynamic/helpers/useInterval/package.json +1 -1
- package/dist/dynamic/helpers/useIsomorphicLayout/package.json +1 -1
- package/dist/dynamic/helpers/useUnmountEffect/package.json +1 -1
- package/dist/dynamic/helpers/util/package.json +1 -1
- package/dist/dynamic/layouts/Bullseye/package.json +1 -1
- package/dist/dynamic/layouts/Flex/package.json +1 -1
- package/dist/dynamic/layouts/Gallery/package.json +1 -1
- package/dist/dynamic/layouts/Grid/package.json +1 -1
- package/dist/dynamic/layouts/Level/package.json +1 -1
- package/dist/dynamic/layouts/Split/package.json +1 -1
- package/dist/dynamic/layouts/Stack/package.json +1 -1
- package/dist/dynamic/styles/package.json +1 -1
- package/dist/dynamic-modules.json +2 -0
- package/dist/esm/components/Alert/AlertGroupInline.d.ts.map +1 -1
- package/dist/esm/components/Alert/AlertGroupInline.js +7 -1
- package/dist/esm/components/Alert/AlertGroupInline.js.map +1 -1
- package/dist/esm/components/Button/Button.d.ts +12 -0
- package/dist/esm/components/Button/Button.d.ts.map +1 -1
- package/dist/esm/components/Button/Button.js +33 -3
- package/dist/esm/components/Button/Button.js.map +1 -1
- package/dist/esm/components/Button/hamburgerIcon.d.ts +2 -0
- package/dist/esm/components/Button/hamburgerIcon.d.ts.map +1 -0
- package/dist/esm/components/Button/hamburgerIcon.js +7 -0
- package/dist/esm/components/Button/hamburgerIcon.js.map +1 -0
- package/dist/esm/components/ClipboardCopy/ClipboardCopy.d.ts.map +1 -1
- package/dist/esm/components/ClipboardCopy/ClipboardCopy.js +2 -2
- package/dist/esm/components/ClipboardCopy/ClipboardCopy.js.map +1 -1
- package/dist/esm/components/ClipboardCopy/ClipboardCopyToggle.js +1 -1
- package/dist/esm/components/ClipboardCopy/ClipboardCopyToggle.js.map +1 -1
- package/dist/esm/components/DualListSelector/DualListSelector.d.ts +5 -0
- package/dist/esm/components/DualListSelector/DualListSelector.d.ts.map +1 -1
- package/dist/esm/components/DualListSelector/DualListSelector.js +4 -3
- package/dist/esm/components/DualListSelector/DualListSelector.js.map +1 -1
- package/dist/esm/components/DualListSelector/DualListSelectorContext.d.ts +1 -0
- package/dist/esm/components/DualListSelector/DualListSelectorContext.d.ts.map +1 -1
- package/dist/esm/components/DualListSelector/DualListSelectorContext.js +1 -1
- package/dist/esm/components/DualListSelector/DualListSelectorContext.js.map +1 -1
- package/dist/esm/components/DualListSelector/DualListSelectorListWrapper.d.ts.map +1 -1
- package/dist/esm/components/DualListSelector/DualListSelectorListWrapper.js +1 -1
- package/dist/esm/components/DualListSelector/DualListSelectorListWrapper.js.map +1 -1
- package/dist/esm/components/DualListSelector/DualListSelectorTree.d.ts.map +1 -1
- package/dist/esm/components/DualListSelector/DualListSelectorTree.js +4 -1
- package/dist/esm/components/DualListSelector/DualListSelectorTree.js.map +1 -1
- package/dist/esm/components/DualListSelector/DualListSelectorTreeItem.d.ts +5 -0
- package/dist/esm/components/DualListSelector/DualListSelectorTreeItem.d.ts.map +1 -1
- package/dist/esm/components/DualListSelector/DualListSelectorTreeItem.js +8 -4
- package/dist/esm/components/DualListSelector/DualListSelectorTreeItem.js.map +1 -1
- package/dist/esm/components/ExpandableSection/ExpandableSection.d.ts +5 -1
- package/dist/esm/components/ExpandableSection/ExpandableSection.d.ts.map +1 -1
- package/dist/esm/components/ExpandableSection/ExpandableSection.js +6 -2
- package/dist/esm/components/ExpandableSection/ExpandableSection.js.map +1 -1
- package/dist/esm/components/ExpandableSection/ExpandableSectionToggle.d.ts +2 -0
- package/dist/esm/components/ExpandableSection/ExpandableSectionToggle.d.ts.map +1 -1
- package/dist/esm/components/ExpandableSection/ExpandableSectionToggle.js +4 -3
- package/dist/esm/components/ExpandableSection/ExpandableSectionToggle.js.map +1 -1
- package/dist/esm/components/Form/FormFieldGroupExpandable.d.ts +5 -0
- package/dist/esm/components/Form/FormFieldGroupExpandable.d.ts.map +1 -1
- package/dist/esm/components/Form/FormFieldGroupExpandable.js +2 -2
- package/dist/esm/components/Form/FormFieldGroupExpandable.js.map +1 -1
- package/dist/esm/components/Form/InternalFormFieldGroup.d.ts +5 -0
- package/dist/esm/components/Form/InternalFormFieldGroup.d.ts.map +1 -1
- package/dist/esm/components/Form/InternalFormFieldGroup.js +2 -2
- package/dist/esm/components/Form/InternalFormFieldGroup.js.map +1 -1
- package/dist/esm/components/Label/Label.js +57 -57
- package/dist/esm/components/Label/Label.js.map +1 -1
- package/dist/esm/components/Menu/Menu.js +3 -3
- package/dist/esm/components/Menu/Menu.js.map +1 -1
- package/dist/esm/components/MenuToggle/MenuToggle.d.ts +2 -0
- package/dist/esm/components/MenuToggle/MenuToggle.d.ts.map +1 -1
- package/dist/esm/components/MenuToggle/MenuToggle.js +4 -3
- package/dist/esm/components/MenuToggle/MenuToggle.js.map +1 -1
- package/dist/esm/components/Page/PageToggleButton.d.ts +4 -0
- package/dist/esm/components/Page/PageToggleButton.d.ts.map +1 -1
- package/dist/esm/components/Page/PageToggleButton.js +2 -2
- package/dist/esm/components/Page/PageToggleButton.js.map +1 -1
- package/dist/esm/components/Popover/Popover.d.ts.map +1 -1
- package/dist/esm/components/Popover/Popover.js +11 -1
- package/dist/esm/components/Popover/Popover.js.map +1 -1
- package/dist/esm/components/SearchInput/AdvancedSearchMenu.d.ts.map +1 -1
- package/dist/esm/components/SearchInput/AdvancedSearchMenu.js +13 -19
- package/dist/esm/components/SearchInput/AdvancedSearchMenu.js.map +1 -1
- package/dist/esm/components/SearchInput/SearchInput.d.ts +4 -0
- package/dist/esm/components/SearchInput/SearchInput.d.ts.map +1 -1
- package/dist/esm/components/SearchInput/SearchInput.js +37 -13
- package/dist/esm/components/SearchInput/SearchInput.js.map +1 -1
- package/dist/esm/components/Tabs/OverflowTab.d.ts +26 -0
- package/dist/esm/components/Tabs/OverflowTab.d.ts.map +1 -1
- package/dist/esm/components/Tabs/OverflowTab.js +2 -2
- package/dist/esm/components/Tabs/OverflowTab.js.map +1 -1
- package/dist/esm/components/Tabs/Tab.d.ts.map +1 -1
- package/dist/esm/components/Tabs/Tab.js +5 -2
- package/dist/esm/components/Tabs/Tab.js.map +1 -1
- package/dist/esm/components/Tabs/Tabs.d.ts +10 -0
- package/dist/esm/components/Tabs/Tabs.d.ts.map +1 -1
- package/dist/esm/components/Tabs/Tabs.js +46 -12
- package/dist/esm/components/Tabs/Tabs.js.map +1 -1
- package/dist/esm/components/Tabs/TabsContext.d.ts +1 -0
- package/dist/esm/components/Tabs/TabsContext.d.ts.map +1 -1
- package/dist/esm/components/Tabs/TabsContext.js +1 -0
- package/dist/esm/components/Tabs/TabsContext.js.map +1 -1
- package/dist/esm/components/TreeView/TreeView.d.ts +5 -0
- package/dist/esm/components/TreeView/TreeView.d.ts.map +1 -1
- package/dist/esm/components/TreeView/TreeView.js +5 -5
- package/dist/esm/components/TreeView/TreeView.js.map +1 -1
- package/dist/esm/components/TreeView/TreeViewListItem.d.ts +5 -0
- package/dist/esm/components/TreeView/TreeViewListItem.d.ts.map +1 -1
- package/dist/esm/components/TreeView/TreeViewListItem.js +8 -4
- package/dist/esm/components/TreeView/TreeViewListItem.js.map +1 -1
- package/dist/esm/components/TreeView/TreeViewRoot.d.ts.map +1 -1
- package/dist/esm/components/TreeView/TreeViewRoot.js +2 -2
- package/dist/esm/components/TreeView/TreeViewRoot.js.map +1 -1
- package/dist/esm/components/Truncate/Truncate.d.ts +11 -8
- package/dist/esm/components/Truncate/Truncate.d.ts.map +1 -1
- package/dist/esm/components/Truncate/Truncate.js +16 -9
- package/dist/esm/components/Truncate/Truncate.js.map +1 -1
- package/dist/esm/demos/DashboardHeader.d.ts.map +1 -1
- package/dist/esm/demos/DashboardHeader.js +1 -2
- package/dist/esm/demos/DashboardHeader.js.map +1 -1
- package/dist/esm/demos/sampleData.d.ts.map +1 -1
- package/dist/esm/demos/sampleData.js +225 -226
- package/dist/esm/demos/sampleData.js.map +1 -1
- package/dist/esm/demos/sampleDataRTL.d.ts +7 -0
- package/dist/esm/demos/sampleDataRTL.d.ts.map +1 -0
- package/dist/esm/demos/sampleDataRTL.js +128 -0
- package/dist/esm/demos/sampleDataRTL.js.map +1 -0
- package/dist/esm/helpers/KeyboardHandler.js +3 -2
- package/dist/esm/helpers/KeyboardHandler.js.map +1 -1
- package/dist/esm/helpers/Popper/Popper.d.ts.map +1 -1
- package/dist/esm/helpers/Popper/Popper.js +1 -0
- package/dist/esm/helpers/Popper/Popper.js.map +1 -1
- package/dist/esm/helpers/util.d.ts +17 -0
- package/dist/esm/helpers/util.d.ts.map +1 -1
- package/dist/esm/helpers/util.js +36 -0
- package/dist/esm/helpers/util.js.map +1 -1
- package/dist/js/components/Alert/AlertGroupInline.d.ts.map +1 -1
- package/dist/js/components/Alert/AlertGroupInline.js +6 -0
- package/dist/js/components/Alert/AlertGroupInline.js.map +1 -1
- package/dist/js/components/Button/Button.d.ts +12 -0
- package/dist/js/components/Button/Button.d.ts.map +1 -1
- package/dist/js/components/Button/Button.js +33 -3
- package/dist/js/components/Button/Button.js.map +1 -1
- package/dist/js/components/Button/hamburgerIcon.d.ts +2 -0
- package/dist/js/components/Button/hamburgerIcon.d.ts.map +1 -0
- package/dist/js/components/Button/hamburgerIcon.js +11 -0
- package/dist/js/components/Button/hamburgerIcon.js.map +1 -0
- package/dist/js/components/ClipboardCopy/ClipboardCopy.d.ts.map +1 -1
- package/dist/js/components/ClipboardCopy/ClipboardCopy.js +2 -2
- package/dist/js/components/ClipboardCopy/ClipboardCopy.js.map +1 -1
- package/dist/js/components/ClipboardCopy/ClipboardCopyToggle.js +1 -1
- package/dist/js/components/ClipboardCopy/ClipboardCopyToggle.js.map +1 -1
- package/dist/js/components/DualListSelector/DualListSelector.d.ts +5 -0
- package/dist/js/components/DualListSelector/DualListSelector.d.ts.map +1 -1
- package/dist/js/components/DualListSelector/DualListSelector.js +4 -3
- package/dist/js/components/DualListSelector/DualListSelector.js.map +1 -1
- package/dist/js/components/DualListSelector/DualListSelectorContext.d.ts +1 -0
- package/dist/js/components/DualListSelector/DualListSelectorContext.d.ts.map +1 -1
- package/dist/js/components/DualListSelector/DualListSelectorContext.js +1 -1
- package/dist/js/components/DualListSelector/DualListSelectorContext.js.map +1 -1
- package/dist/js/components/DualListSelector/DualListSelectorListWrapper.d.ts.map +1 -1
- package/dist/js/components/DualListSelector/DualListSelectorListWrapper.js +1 -1
- package/dist/js/components/DualListSelector/DualListSelectorListWrapper.js.map +1 -1
- package/dist/js/components/DualListSelector/DualListSelectorTree.d.ts.map +1 -1
- package/dist/js/components/DualListSelector/DualListSelectorTree.js +4 -1
- package/dist/js/components/DualListSelector/DualListSelectorTree.js.map +1 -1
- package/dist/js/components/DualListSelector/DualListSelectorTreeItem.d.ts +5 -0
- package/dist/js/components/DualListSelector/DualListSelectorTreeItem.d.ts.map +1 -1
- package/dist/js/components/DualListSelector/DualListSelectorTreeItem.js +7 -3
- package/dist/js/components/DualListSelector/DualListSelectorTreeItem.js.map +1 -1
- package/dist/js/components/ExpandableSection/ExpandableSection.d.ts +5 -1
- package/dist/js/components/ExpandableSection/ExpandableSection.d.ts.map +1 -1
- package/dist/js/components/ExpandableSection/ExpandableSection.js +6 -2
- package/dist/js/components/ExpandableSection/ExpandableSection.js.map +1 -1
- package/dist/js/components/ExpandableSection/ExpandableSectionToggle.d.ts +2 -0
- package/dist/js/components/ExpandableSection/ExpandableSectionToggle.d.ts.map +1 -1
- package/dist/js/components/ExpandableSection/ExpandableSectionToggle.js +4 -3
- package/dist/js/components/ExpandableSection/ExpandableSectionToggle.js.map +1 -1
- package/dist/js/components/Form/FormFieldGroupExpandable.d.ts +5 -0
- package/dist/js/components/Form/FormFieldGroupExpandable.d.ts.map +1 -1
- package/dist/js/components/Form/FormFieldGroupExpandable.js +2 -2
- package/dist/js/components/Form/FormFieldGroupExpandable.js.map +1 -1
- package/dist/js/components/Form/InternalFormFieldGroup.d.ts +5 -0
- package/dist/js/components/Form/InternalFormFieldGroup.d.ts.map +1 -1
- package/dist/js/components/Form/InternalFormFieldGroup.js +2 -2
- package/dist/js/components/Form/InternalFormFieldGroup.js.map +1 -1
- package/dist/js/components/Label/Label.js +57 -57
- package/dist/js/components/Label/Label.js.map +1 -1
- package/dist/js/components/Menu/Menu.js +3 -3
- package/dist/js/components/Menu/Menu.js.map +1 -1
- package/dist/js/components/MenuToggle/MenuToggle.d.ts +2 -0
- package/dist/js/components/MenuToggle/MenuToggle.d.ts.map +1 -1
- package/dist/js/components/MenuToggle/MenuToggle.js +4 -3
- package/dist/js/components/MenuToggle/MenuToggle.js.map +1 -1
- package/dist/js/components/Page/PageToggleButton.d.ts +4 -0
- package/dist/js/components/Page/PageToggleButton.d.ts.map +1 -1
- package/dist/js/components/Page/PageToggleButton.js +2 -2
- package/dist/js/components/Page/PageToggleButton.js.map +1 -1
- package/dist/js/components/Popover/Popover.d.ts.map +1 -1
- package/dist/js/components/Popover/Popover.js +11 -1
- package/dist/js/components/Popover/Popover.js.map +1 -1
- package/dist/js/components/SearchInput/AdvancedSearchMenu.d.ts.map +1 -1
- package/dist/js/components/SearchInput/AdvancedSearchMenu.js +12 -18
- package/dist/js/components/SearchInput/AdvancedSearchMenu.js.map +1 -1
- package/dist/js/components/SearchInput/SearchInput.d.ts +4 -0
- package/dist/js/components/SearchInput/SearchInput.d.ts.map +1 -1
- package/dist/js/components/SearchInput/SearchInput.js +36 -12
- package/dist/js/components/SearchInput/SearchInput.js.map +1 -1
- package/dist/js/components/Tabs/OverflowTab.d.ts +26 -0
- package/dist/js/components/Tabs/OverflowTab.d.ts.map +1 -1
- package/dist/js/components/Tabs/OverflowTab.js +2 -2
- package/dist/js/components/Tabs/OverflowTab.js.map +1 -1
- package/dist/js/components/Tabs/Tab.d.ts.map +1 -1
- package/dist/js/components/Tabs/Tab.js +4 -1
- package/dist/js/components/Tabs/Tab.js.map +1 -1
- package/dist/js/components/Tabs/Tabs.d.ts +10 -0
- package/dist/js/components/Tabs/Tabs.d.ts.map +1 -1
- package/dist/js/components/Tabs/Tabs.js +45 -11
- package/dist/js/components/Tabs/Tabs.js.map +1 -1
- package/dist/js/components/Tabs/TabsContext.d.ts +1 -0
- package/dist/js/components/Tabs/TabsContext.d.ts.map +1 -1
- package/dist/js/components/Tabs/TabsContext.js +1 -0
- package/dist/js/components/Tabs/TabsContext.js.map +1 -1
- package/dist/js/components/TreeView/TreeView.d.ts +5 -0
- package/dist/js/components/TreeView/TreeView.d.ts.map +1 -1
- package/dist/js/components/TreeView/TreeView.js +5 -5
- package/dist/js/components/TreeView/TreeView.js.map +1 -1
- package/dist/js/components/TreeView/TreeViewListItem.d.ts +5 -0
- package/dist/js/components/TreeView/TreeViewListItem.d.ts.map +1 -1
- package/dist/js/components/TreeView/TreeViewListItem.js +7 -3
- package/dist/js/components/TreeView/TreeViewListItem.js.map +1 -1
- package/dist/js/components/TreeView/TreeViewRoot.d.ts.map +1 -1
- package/dist/js/components/TreeView/TreeViewRoot.js +2 -2
- package/dist/js/components/TreeView/TreeViewRoot.js.map +1 -1
- package/dist/js/components/Truncate/Truncate.d.ts +11 -8
- package/dist/js/components/Truncate/Truncate.d.ts.map +1 -1
- package/dist/js/components/Truncate/Truncate.js +15 -9
- package/dist/js/components/Truncate/Truncate.js.map +1 -1
- package/dist/js/demos/DashboardHeader.d.ts.map +1 -1
- package/dist/js/demos/DashboardHeader.js +1 -2
- package/dist/js/demos/DashboardHeader.js.map +1 -1
- package/dist/js/demos/sampleData.d.ts.map +1 -1
- package/dist/js/demos/sampleData.js +225 -226
- package/dist/js/demos/sampleData.js.map +1 -1
- package/dist/js/demos/sampleDataRTL.d.ts +7 -0
- package/dist/js/demos/sampleDataRTL.d.ts.map +1 -0
- package/dist/js/demos/sampleDataRTL.js +131 -0
- package/dist/js/demos/sampleDataRTL.js.map +1 -0
- package/dist/js/helpers/KeyboardHandler.js +3 -2
- package/dist/js/helpers/KeyboardHandler.js.map +1 -1
- package/dist/js/helpers/Popper/Popper.d.ts.map +1 -1
- package/dist/js/helpers/Popper/Popper.js +1 -0
- package/dist/js/helpers/Popper/Popper.js.map +1 -1
- package/dist/js/helpers/util.d.ts +17 -0
- package/dist/js/helpers/util.d.ts.map +1 -1
- package/dist/js/helpers/util.js +39 -1
- package/dist/js/helpers/util.js.map +1 -1
- package/dist/styles/assets/images/icon-help.hbs +3 -0
- package/dist/styles/assets/images/icon-outlined-star.hbs +3 -0
- package/dist/styles/assets/images/icon-star.hbs +3 -0
- package/dist/styles/base-no-reset.css +52 -11
- package/dist/styles/base.css +52 -11
- package/dist/umd/assets/{output-iWrWEXUG.css → output-BvTy70LD.css} +16824 -16082
- package/dist/umd/react-core.min.js +3 -3
- package/helpers/package.json +1 -1
- package/layouts/package.json +1 -1
- package/next/package.json +1 -1
- package/package.json +6 -6
- package/src/components/Alert/AlertGroupInline.tsx +13 -2
- package/src/components/Button/Button.tsx +78 -5
- package/src/components/Button/__tests__/Button.test.tsx +380 -74
- package/src/components/Button/__tests__/__snapshots__/Button.test.tsx.snap +1 -1
- package/src/components/Button/examples/Button.md +57 -14
- package/src/components/Button/examples/ButtonFavorite.tsx +18 -0
- package/src/components/Button/examples/ButtonHamburger.tsx +9 -0
- package/src/components/Button/examples/ButtonSettings.tsx +10 -0
- package/src/components/Button/hamburgerIcon.tsx +13 -0
- package/src/components/Card/examples/Card.md +1 -1
- package/src/components/Card/examples/CardSelectable.tsx +73 -60
- package/src/components/Card/examples/CardSingleSelectable.tsx +65 -48
- package/src/components/ClipboardCopy/ClipboardCopy.tsx +2 -1
- package/src/components/ClipboardCopy/ClipboardCopyToggle.tsx +1 -1
- package/src/components/ClipboardCopy/__tests__/ClipboardCopyToggle.test.tsx +7 -1
- package/src/components/ClipboardCopy/__tests__/__snapshots__/ClipboardCopyToggle.test.tsx.snap +0 -1
- package/src/components/DualListSelector/DualListSelector.tsx +18 -4
- package/src/components/DualListSelector/DualListSelectorContext.ts +2 -1
- package/src/components/DualListSelector/DualListSelectorListWrapper.tsx +8 -5
- package/src/components/DualListSelector/DualListSelectorTree.tsx +4 -0
- package/src/components/DualListSelector/DualListSelectorTreeItem.tsx +17 -2
- package/src/components/DualListSelector/__tests__/DualListSelector.test.tsx +32 -1
- package/src/components/DualListSelector/__tests__/DualListSelectorTreeItem.test.tsx +55 -0
- package/src/components/DualListSelector/examples/DualListSelectorTree.tsx +1 -1
- package/src/components/ExpandableSection/ExpandableSection.tsx +13 -1
- package/src/components/ExpandableSection/ExpandableSectionToggle.tsx +5 -1
- package/src/components/ExpandableSection/__tests__/ExpandableSection.test.tsx +85 -23
- package/src/components/ExpandableSection/__tests__/ExpandableSectionToggle.test.tsx +32 -0
- package/src/components/ExpandableSection/__tests__/__snapshots__/ExpandableSection.test.tsx.snap +1 -63
- package/src/components/ExpandableSection/examples/ExpandableSection.md +2 -0
- package/src/components/ExpandableSection/examples/ExpandableSectionDetached.tsx +1 -1
- package/src/components/Form/FormFieldGroupExpandable.tsx +7 -0
- package/src/components/Form/InternalFormFieldGroup.tsx +19 -3
- package/src/components/Form/__tests__/FormFieldGroupExpandable.test.tsx +55 -0
- package/src/components/Form/examples/FormFieldGroups.tsx +7 -1
- package/src/components/Label/Label.tsx +63 -63
- package/src/components/Masthead/examples/MastheadBasic.tsx +1 -2
- package/src/components/Masthead/examples/MastheadBasicMixedContent.tsx +1 -2
- package/src/components/Masthead/examples/MastheadDisplayInline.tsx +1 -2
- package/src/components/Masthead/examples/MastheadDisplayStack.tsx +1 -2
- package/src/components/Masthead/examples/MastheadDisplayStackInlineResponsive.tsx +1 -2
- package/src/components/Masthead/examples/MastheadInsets.tsx +1 -2
- package/src/components/Masthead/examples/MastheadLogoCustomComponent.tsx +1 -2
- package/src/components/Menu/Menu.tsx +3 -3
- package/src/components/MenuToggle/MenuToggle.tsx +6 -1
- package/src/components/MenuToggle/__tests__/MenuToggle.test.tsx +59 -45
- package/src/components/MenuToggle/__tests__/__snapshots__/MenuToggle.test.tsx.snap +9 -9
- package/src/components/MenuToggle/examples/MenuToggle.md +14 -30
- package/src/components/MenuToggle/examples/MenuToggleCustomIcon.tsx +17 -0
- package/src/components/MenuToggle/examples/MenuToggleSettings.tsx +8 -0
- package/src/components/Page/PageToggleButton.tsx +9 -2
- package/src/components/Page/examples/Page.md +1 -1
- package/src/components/Page/examples/PageCenteredSection.tsx +4 -8
- package/src/components/Page/examples/PageGroupSection.tsx +2 -5
- package/src/components/Page/examples/PageMainSectionPadding.tsx +2 -5
- package/src/components/Page/examples/PageMainSectionVariations.tsx +2 -5
- package/src/components/Page/examples/PageMultipleSidebarBody.tsx +2 -5
- package/src/components/Page/examples/PageUncontrolledNav.tsx +1 -4
- package/src/components/Page/examples/PageVerticalNav.tsx +2 -5
- package/src/components/Page/examples/PageWithOrWithoutFill.tsx +2 -5
- package/src/components/Popover/Popover.tsx +13 -1
- package/src/components/SearchInput/AdvancedSearchMenu.tsx +15 -23
- package/src/components/SearchInput/SearchInput.tsx +111 -15
- package/src/components/SearchInput/__tests__/SearchInput.test.tsx +84 -0
- package/src/components/SearchInput/examples/SearchInput.md +11 -2
- package/src/components/SearchInput/examples/SearchInputWithExpandable.tsx +6 -1
- package/src/components/Skeleton/examples/SkeletonText.tsx +0 -1
- package/src/components/Tabs/OverflowTab.tsx +29 -0
- package/src/components/Tabs/Tab.tsx +6 -2
- package/src/components/Tabs/Tabs.tsx +76 -11
- package/src/components/Tabs/TabsContext.ts +2 -0
- package/src/components/Tabs/__tests__/Tabs.test.tsx +65 -1
- package/src/components/Tabs/__tests__/__snapshots__/Tabs.test.tsx.snap +39 -26
- package/src/components/Tabs/examples/Tabs.md +1 -1
- package/src/components/Timestamp/examples/TimestampBasicFormats.tsx +1 -1
- package/src/components/Timestamp/examples/TimestampDefaultTooltip.tsx +1 -1
- package/src/components/TreeView/TreeView.tsx +9 -0
- package/src/components/TreeView/TreeViewListItem.tsx +18 -5
- package/src/components/TreeView/TreeViewRoot.tsx +4 -2
- package/src/components/TreeView/__tests__/TreeView.test.tsx +8 -1
- package/src/components/TreeView/__tests__/TreeViewList.test.tsx +39 -0
- package/src/components/TreeView/__tests__/TreeViewListItem.test.tsx +17 -3
- package/src/components/TreeView/__tests__/__snapshots__/TreeView.test.tsx.snap +3 -0
- package/src/components/TreeView/examples/TreeViewCompact.tsx +1 -1
- package/src/components/TreeView/examples/TreeViewCompactNoBackground.tsx +8 -1
- package/src/components/TreeView/examples/TreeViewGuides.tsx +1 -1
- package/src/components/TreeView/examples/TreeViewMultiselectable.tsx +1 -0
- package/src/components/TreeView/examples/TreeViewSelectionExpansion.tsx +1 -0
- package/src/components/TreeView/examples/TreeViewSingleSelectable.tsx +1 -0
- package/src/components/TreeView/examples/TreeViewWithActionItems.tsx +1 -0
- package/src/components/TreeView/examples/TreeViewWithBadges.tsx +1 -0
- package/src/components/TreeView/examples/TreeViewWithCheckboxes.tsx +9 -1
- package/src/components/TreeView/examples/TreeViewWithCustomBadges.tsx +1 -0
- package/src/components/TreeView/examples/TreeViewWithIconPerItem.tsx +1 -0
- package/src/components/TreeView/examples/TreeViewWithIcons.tsx +1 -0
- package/src/components/TreeView/examples/TreeViewWithMemoization.tsx +1 -0
- package/src/components/TreeView/examples/TreeViewWithSearch.tsx +1 -0
- package/src/components/Truncate/Truncate.tsx +40 -19
- package/src/components/Truncate/__tests__/Truncate.test.tsx +24 -0
- package/src/components/Truncate/examples/Truncate.md +8 -0
- package/src/components/Truncate/examples/TruncateLinks.tsx +22 -0
- package/src/demos/CardDemos.md +1 -1
- package/src/demos/DashboardHeader.tsx +2 -5
- package/src/demos/NotificationDrawer/examples/NotificationDrawerBasic.tsx +2 -5
- package/src/demos/NotificationDrawer/examples/NotificationDrawerGrouped.tsx +2 -5
- package/src/demos/RTL/RTL.md +1 -0
- package/src/demos/RTL/examples/PaginatedTable.tsx +18 -53
- package/src/demos/examples/Card/CardAggregateStatus.tsx +2 -6
- package/src/demos/examples/Card/CardDetails.tsx +2 -3
- package/src/demos/examples/Card/CardEventsView.tsx +2 -3
- package/src/demos/examples/Card/CardLogView.tsx +2 -3
- package/src/demos/examples/Card/CardStatus.tsx +0 -1
- package/src/demos/examples/Card/CardUtilizationDemo3.tsx +0 -1
- package/src/demos/examples/Masthead/MastheadWithHorizontalNav.tsx +1 -1
- package/src/demos/examples/Masthead/MastheadWithUtilitiesAndUserDropdownMenu.tsx +2 -5
- package/src/demos/examples/Nav/NavFlyout.tsx +3 -6
- package/src/demos/examples/Nav/NavHorizontal.tsx +1 -1
- package/src/demos/examples/Nav/NavHorizontalWithSubnav.tsx +2 -5
- package/src/demos/examples/Nav/NavManual.tsx +3 -6
- package/src/demos/examples/Page/PageContextSelector.tsx +3 -6
- package/src/demos/examples/Page/PageStickySectionBreadcrumb.tsx +2 -5
- package/src/demos/examples/Page/PageStickySectionGroup.tsx +2 -5
- package/src/demos/examples/Page/PageStickySectionGroupAlternate.tsx +2 -5
- package/src/demos/examples/Toolbar/ConsoleLogViewerToolbar.tsx +2 -3
- package/src/demos/examples/Wizard/InPageWithDrawer.tsx +1 -4
- package/src/demos/examples/Wizard/InPageWithDrawerInformationalStep.tsx +1 -4
- package/src/demos/sampleData.tsx +225 -227
- package/src/demos/sampleDataRTL.tsx +133 -0
- package/src/helpers/KeyboardHandler.tsx +2 -2
- package/src/helpers/Popper/Popper.tsx +1 -0
- package/src/helpers/util.ts +45 -0
- package/src/demos/RTL/examples/PaginatedTable.jsx +0 -504
|
@@ -5,20 +5,27 @@ import { PickOptional } from '../../helpers/typeUtils';
|
|
|
5
5
|
import AngleLeftIcon from '@patternfly/react-icons/dist/esm/icons/angle-left-icon';
|
|
6
6
|
import AngleRightIcon from '@patternfly/react-icons/dist/esm/icons/angle-right-icon';
|
|
7
7
|
import PlusIcon from '@patternfly/react-icons/dist/esm/icons/plus-icon';
|
|
8
|
-
import {
|
|
8
|
+
import {
|
|
9
|
+
getUniqueId,
|
|
10
|
+
isElementInView,
|
|
11
|
+
formatBreakpointMods,
|
|
12
|
+
getLanguageDirection,
|
|
13
|
+
getInlineStartProperty
|
|
14
|
+
} from '../../helpers/util';
|
|
9
15
|
import { TabContent } from './TabContent';
|
|
10
16
|
import { TabProps } from './Tab';
|
|
11
17
|
import { TabsContextProvider } from './TabsContext';
|
|
12
|
-
import { OverflowTab } from './OverflowTab';
|
|
18
|
+
import { OverflowTab, HorizontalOverflowPopperProps } from './OverflowTab';
|
|
13
19
|
import { Button } from '../Button';
|
|
14
20
|
import { getOUIAProps, OUIAProps, getDefaultOUIAId, canUseDOM } from '../../helpers';
|
|
15
21
|
import { GenerateId } from '../../helpers/GenerateId/GenerateId';
|
|
22
|
+
import linkAccentLength from '@patternfly/react-tokens/dist/esm/c_tabs_link_accent_length';
|
|
23
|
+
import linkAccentStart from '@patternfly/react-tokens/dist/esm/c_tabs_link_accent_start';
|
|
16
24
|
|
|
17
25
|
export enum TabsComponent {
|
|
18
26
|
div = 'div',
|
|
19
27
|
nav = 'nav'
|
|
20
28
|
}
|
|
21
|
-
|
|
22
29
|
export interface HorizontalOverflowObject {
|
|
23
30
|
/** Flag which shows the count of overflowing tabs when enabled */
|
|
24
31
|
showTabCount?: boolean;
|
|
@@ -26,6 +33,8 @@ export interface HorizontalOverflowObject {
|
|
|
26
33
|
defaultTitleText?: string;
|
|
27
34
|
/** The aria label applied to the button which toggles the tab overflow menu */
|
|
28
35
|
toggleAriaLabel?: string;
|
|
36
|
+
/** Additional props to spread to the popper menu. */
|
|
37
|
+
popperProps?: HorizontalOverflowPopperProps;
|
|
29
38
|
}
|
|
30
39
|
|
|
31
40
|
type TabElement = React.ReactElement<TabProps, React.JSXElementConstructor<TabProps>>;
|
|
@@ -54,6 +63,8 @@ export interface TabsProps
|
|
|
54
63
|
addButtonAriaLabel?: string;
|
|
55
64
|
/** Uniquely identifies the tabs */
|
|
56
65
|
id?: string;
|
|
66
|
+
/** Flag indicating that the add button is disabled when onAdd is passed in */
|
|
67
|
+
isAddButtonDisabled?: boolean;
|
|
57
68
|
/** Enables the filled tab list layout */
|
|
58
69
|
isFilled?: boolean;
|
|
59
70
|
/** Enables subtab tab styling */
|
|
@@ -139,6 +150,9 @@ interface TabsState {
|
|
|
139
150
|
uncontrolledIsExpandedLocal: boolean;
|
|
140
151
|
ouiaStateId: string;
|
|
141
152
|
overflowingTabCount: number;
|
|
153
|
+
isInitializingAccent: boolean;
|
|
154
|
+
currentLinkAccentLength: string;
|
|
155
|
+
currentLinkAccentStart: string;
|
|
142
156
|
}
|
|
143
157
|
|
|
144
158
|
class Tabs extends Component<TabsProps, TabsState> {
|
|
@@ -158,7 +172,10 @@ class Tabs extends Component<TabsProps, TabsState> {
|
|
|
158
172
|
uncontrolledActiveKey: this.props.defaultActiveKey,
|
|
159
173
|
uncontrolledIsExpandedLocal: this.props.defaultIsExpanded,
|
|
160
174
|
ouiaStateId: getDefaultOUIAId(Tabs.displayName),
|
|
161
|
-
overflowingTabCount: 0
|
|
175
|
+
overflowingTabCount: 0,
|
|
176
|
+
isInitializingAccent: true,
|
|
177
|
+
currentLinkAccentLength: linkAccentLength.value,
|
|
178
|
+
currentLinkAccentStart: linkAccentStart.value
|
|
162
179
|
};
|
|
163
180
|
|
|
164
181
|
if (this.props.isVertical && this.props.expandable !== undefined) {
|
|
@@ -328,21 +345,49 @@ class Tabs extends Component<TabsProps, TabsState> {
|
|
|
328
345
|
}
|
|
329
346
|
};
|
|
330
347
|
|
|
348
|
+
setAccentStyles = (shouldInitializeStyle?: boolean) => {
|
|
349
|
+
const currentItem = this.tabList.current.querySelector('li.pf-m-current') as HTMLElement;
|
|
350
|
+
if (!currentItem) {
|
|
351
|
+
return;
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
const { isVertical } = this.props;
|
|
355
|
+
const { offsetWidth, offsetHeight, offsetTop } = currentItem;
|
|
356
|
+
const lengthValue = isVertical ? offsetHeight : offsetWidth;
|
|
357
|
+
const startValue = isVertical ? offsetTop : getInlineStartProperty(currentItem, this.tabList.current);
|
|
358
|
+
this.setState({
|
|
359
|
+
currentLinkAccentLength: `${lengthValue}px`,
|
|
360
|
+
currentLinkAccentStart: `${startValue}px`,
|
|
361
|
+
...(shouldInitializeStyle && { isInitializingAccent: true })
|
|
362
|
+
});
|
|
363
|
+
|
|
364
|
+
setTimeout(() => {
|
|
365
|
+
this.setState({ isInitializingAccent: false });
|
|
366
|
+
}, 0);
|
|
367
|
+
};
|
|
368
|
+
|
|
369
|
+
handleResize = () => {
|
|
370
|
+
this.handleScrollButtons();
|
|
371
|
+
this.setAccentStyles();
|
|
372
|
+
};
|
|
373
|
+
|
|
331
374
|
componentDidMount() {
|
|
332
375
|
if (!this.props.isVertical) {
|
|
333
376
|
if (canUseDOM) {
|
|
334
|
-
window.addEventListener('resize', this.
|
|
377
|
+
window.addEventListener('resize', this.handleResize, false);
|
|
335
378
|
}
|
|
336
379
|
this.direction = getLanguageDirection(this.tabList.current);
|
|
337
380
|
// call the handle resize function to check if scroll buttons should be shown
|
|
338
381
|
this.handleScrollButtons();
|
|
339
382
|
}
|
|
383
|
+
|
|
384
|
+
this.setAccentStyles(true);
|
|
340
385
|
}
|
|
341
386
|
|
|
342
387
|
componentWillUnmount() {
|
|
343
388
|
if (!this.props.isVertical) {
|
|
344
389
|
if (canUseDOM) {
|
|
345
|
-
window.removeEventListener('resize', this.
|
|
390
|
+
window.removeEventListener('resize', this.handleResize, false);
|
|
346
391
|
}
|
|
347
392
|
}
|
|
348
393
|
clearTimeout(this.scrollTimeout);
|
|
@@ -350,8 +395,18 @@ class Tabs extends Component<TabsProps, TabsState> {
|
|
|
350
395
|
}
|
|
351
396
|
|
|
352
397
|
componentDidUpdate(prevProps: TabsProps, prevState: TabsState) {
|
|
353
|
-
|
|
354
|
-
const {
|
|
398
|
+
this.direction = getLanguageDirection(this.tabList.current);
|
|
399
|
+
const { activeKey, mountOnEnter, isOverflowHorizontal, children, defaultActiveKey } = this.props;
|
|
400
|
+
const { shownKeys, overflowingTabCount, enableScrollButtons, uncontrolledActiveKey } = this.state;
|
|
401
|
+
const isOnCloseUpdate = !!prevProps.onClose !== !!this.props.onClose;
|
|
402
|
+
if (
|
|
403
|
+
(defaultActiveKey !== undefined && prevState.uncontrolledActiveKey !== uncontrolledActiveKey) ||
|
|
404
|
+
(defaultActiveKey === undefined && prevProps.activeKey !== activeKey) ||
|
|
405
|
+
isOnCloseUpdate
|
|
406
|
+
) {
|
|
407
|
+
this.setAccentStyles(isOnCloseUpdate);
|
|
408
|
+
}
|
|
409
|
+
|
|
355
410
|
if (prevProps.activeKey !== activeKey && mountOnEnter && shownKeys.indexOf(activeKey) < 0) {
|
|
356
411
|
this.setState({
|
|
357
412
|
shownKeys: shownKeys.concat(activeKey)
|
|
@@ -364,6 +419,7 @@ class Tabs extends Component<TabsProps, TabsState> {
|
|
|
364
419
|
Children.toArray(prevProps.children).length !== Children.toArray(children).length
|
|
365
420
|
) {
|
|
366
421
|
this.handleScrollButtons();
|
|
422
|
+
this.setAccentStyles(true);
|
|
367
423
|
}
|
|
368
424
|
|
|
369
425
|
const currentOverflowingTabCount = this.countOverflowingElements(this.tabList.current);
|
|
@@ -374,14 +430,14 @@ class Tabs extends Component<TabsProps, TabsState> {
|
|
|
374
430
|
if (!prevState.enableScrollButtons && enableScrollButtons) {
|
|
375
431
|
this.setState({ renderScrollButtons: true });
|
|
376
432
|
setTimeout(() => {
|
|
433
|
+
// Remove any existing listener before adding a new one to prevent accumulation
|
|
434
|
+
this.leftScrollButtonRef.current?.removeEventListener('transitionend', this.hideScrollButtons);
|
|
377
435
|
this.leftScrollButtonRef.current?.addEventListener('transitionend', this.hideScrollButtons);
|
|
378
436
|
this.setState({ showScrollButtons: true });
|
|
379
437
|
}, 100);
|
|
380
438
|
} else if (prevState.enableScrollButtons && !enableScrollButtons) {
|
|
381
439
|
this.setState({ showScrollButtons: false });
|
|
382
440
|
}
|
|
383
|
-
|
|
384
|
-
this.direction = getLanguageDirection(this.tabList.current);
|
|
385
441
|
}
|
|
386
442
|
|
|
387
443
|
static getDerivedStateFromProps(nextProps: TabsProps, prevState: TabsState) {
|
|
@@ -412,6 +468,7 @@ class Tabs extends Component<TabsProps, TabsState> {
|
|
|
412
468
|
activeKey,
|
|
413
469
|
defaultActiveKey,
|
|
414
470
|
id,
|
|
471
|
+
isAddButtonDisabled,
|
|
415
472
|
isFilled,
|
|
416
473
|
isSubtab,
|
|
417
474
|
isVertical,
|
|
@@ -450,7 +507,10 @@ class Tabs extends Component<TabsProps, TabsState> {
|
|
|
450
507
|
shownKeys,
|
|
451
508
|
uncontrolledActiveKey,
|
|
452
509
|
uncontrolledIsExpandedLocal,
|
|
453
|
-
overflowingTabCount
|
|
510
|
+
overflowingTabCount,
|
|
511
|
+
isInitializingAccent,
|
|
512
|
+
currentLinkAccentLength,
|
|
513
|
+
currentLinkAccentStart
|
|
454
514
|
} = this.state;
|
|
455
515
|
const filteredChildren = Children.toArray(children)
|
|
456
516
|
.filter((child): child is TabElement => isValidElement(child))
|
|
@@ -485,6 +545,7 @@ class Tabs extends Component<TabsProps, TabsState> {
|
|
|
485
545
|
unmountOnExit,
|
|
486
546
|
localActiveKey,
|
|
487
547
|
uniqueId,
|
|
548
|
+
setAccentStyles: this.setAccentStyles,
|
|
488
549
|
handleTabClick: (...args) => this.handleTabClick(...args),
|
|
489
550
|
handleTabClose: onClose
|
|
490
551
|
}}
|
|
@@ -493,6 +554,7 @@ class Tabs extends Component<TabsProps, TabsState> {
|
|
|
493
554
|
aria-label={ariaLabel}
|
|
494
555
|
className={css(
|
|
495
556
|
styles.tabs,
|
|
557
|
+
styles.modifiers.animateCurrent,
|
|
496
558
|
isFilled && styles.modifiers.fill,
|
|
497
559
|
isSubtab && styles.modifiers.subtab,
|
|
498
560
|
isVertical && styles.modifiers.vertical,
|
|
@@ -505,10 +567,12 @@ class Tabs extends Component<TabsProps, TabsState> {
|
|
|
505
567
|
formatBreakpointMods(inset, styles),
|
|
506
568
|
variantStyle[variant],
|
|
507
569
|
hasOverflowTab && styles.modifiers.overflow,
|
|
570
|
+
isInitializingAccent && styles.modifiers.initializingAccent,
|
|
508
571
|
className
|
|
509
572
|
)}
|
|
510
573
|
{...getOUIAProps(Tabs.displayName, ouiaId !== undefined ? ouiaId : this.state.ouiaStateId, ouiaSafe)}
|
|
511
574
|
id={id && id}
|
|
575
|
+
style={{ [linkAccentLength.name]: currentLinkAccentLength, [linkAccentStart.name]: currentLinkAccentStart }}
|
|
512
576
|
{...props}
|
|
513
577
|
>
|
|
514
578
|
{expandable && isVertical && (
|
|
@@ -572,6 +636,7 @@ class Tabs extends Component<TabsProps, TabsState> {
|
|
|
572
636
|
aria-label={addButtonAriaLabel || 'Add tab'}
|
|
573
637
|
onClick={onAdd}
|
|
574
638
|
icon={<PlusIcon />}
|
|
639
|
+
isDisabled={isAddButtonDisabled}
|
|
575
640
|
/>
|
|
576
641
|
</span>
|
|
577
642
|
)}
|
|
@@ -6,6 +6,7 @@ export interface TabsContextProps {
|
|
|
6
6
|
unmountOnExit: boolean;
|
|
7
7
|
localActiveKey: string | number;
|
|
8
8
|
uniqueId: string;
|
|
9
|
+
setAccentStyles?: (shouldInitializeStyles?: boolean) => void;
|
|
9
10
|
handleTabClick: (
|
|
10
11
|
event: React.MouseEvent<HTMLElement, MouseEvent>,
|
|
11
12
|
eventKey: number | string,
|
|
@@ -24,6 +25,7 @@ export const TabsContext = createContext<TabsContextProps>({
|
|
|
24
25
|
unmountOnExit: false,
|
|
25
26
|
localActiveKey: '',
|
|
26
27
|
uniqueId: '',
|
|
28
|
+
setAccentStyles: () => null,
|
|
27
29
|
handleTabClick: () => null,
|
|
28
30
|
handleTabClose: undefined
|
|
29
31
|
});
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { render, screen } from '@testing-library/react';
|
|
1
|
+
import { render, screen, act } from '@testing-library/react';
|
|
2
2
|
import { Tabs } from '../Tabs';
|
|
3
|
+
import styles from '@patternfly/react-styles/css/components/Tabs/tabs';
|
|
3
4
|
import { Tab } from '../Tab';
|
|
4
5
|
import { TabTitleText } from '../TabTitleText';
|
|
5
6
|
import { TabTitleIcon } from '../TabTitleIcon';
|
|
@@ -8,6 +9,47 @@ import { TabContentBody } from '../TabContentBody';
|
|
|
8
9
|
|
|
9
10
|
jest.mock('../../../helpers/GenerateId/GenerateId');
|
|
10
11
|
|
|
12
|
+
test(`Renders with classes ${styles.tabs} and ${styles.modifiers.animateCurrent} by default`, () => {
|
|
13
|
+
render(
|
|
14
|
+
<Tabs role="region">
|
|
15
|
+
<Tab title="Test title" eventKey={0}>
|
|
16
|
+
Tab Content
|
|
17
|
+
</Tab>
|
|
18
|
+
</Tabs>
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
expect(screen.getByRole('region')).toHaveClass(`${styles.tabs} ${styles.modifiers.animateCurrent}`);
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
test(`Renders with class ${styles.modifiers.initializingAccent} when component initially mounts`, () => {
|
|
25
|
+
render(
|
|
26
|
+
<Tabs role="region">
|
|
27
|
+
<Tab title="Test title" eventKey={0}>
|
|
28
|
+
Tab Content
|
|
29
|
+
</Tab>
|
|
30
|
+
</Tabs>
|
|
31
|
+
);
|
|
32
|
+
|
|
33
|
+
expect(screen.getByRole('region')).toHaveClass(styles.modifiers.initializingAccent);
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
test(`Does not render with class ${styles.modifiers.initializingAccent} when component is finished mounting`, () => {
|
|
37
|
+
jest.useFakeTimers();
|
|
38
|
+
render(
|
|
39
|
+
<Tabs role="region">
|
|
40
|
+
<Tab title="Test title" eventKey={0}>
|
|
41
|
+
Tab Content
|
|
42
|
+
</Tab>
|
|
43
|
+
</Tabs>
|
|
44
|
+
);
|
|
45
|
+
|
|
46
|
+
act(() => {
|
|
47
|
+
jest.advanceTimersByTime(500);
|
|
48
|
+
});
|
|
49
|
+
expect(screen.getByRole('region')).not.toHaveClass(styles.modifiers.initializingAccent);
|
|
50
|
+
jest.useRealTimers();
|
|
51
|
+
});
|
|
52
|
+
|
|
11
53
|
test('should render simple tabs', () => {
|
|
12
54
|
const { asFragment } = render(
|
|
13
55
|
<Tabs id="simpleTabs">
|
|
@@ -450,3 +492,25 @@ test('should not render scroll buttons when isVertical is true', () => {
|
|
|
450
492
|
expect(screen.queryByLabelText('Scroll left')).not.toBeInTheDocument();
|
|
451
493
|
expect(screen.queryByLabelText('Scroll right')).not.toBeInTheDocument();
|
|
452
494
|
});
|
|
495
|
+
|
|
496
|
+
test('should render a disabled add button', () => {
|
|
497
|
+
render(
|
|
498
|
+
<Tabs onAdd={jest.fn()} addButtonAriaLabel="add-label" isAddButtonDisabled={true}>
|
|
499
|
+
<div>Tab content</div>
|
|
500
|
+
</Tabs>
|
|
501
|
+
);
|
|
502
|
+
|
|
503
|
+
const addButton = screen.getByLabelText('add-label');
|
|
504
|
+
expect(addButton).toBeDisabled();
|
|
505
|
+
});
|
|
506
|
+
|
|
507
|
+
test('should render an enabled add button', () => {
|
|
508
|
+
render(
|
|
509
|
+
<Tabs onAdd={jest.fn()} addButtonAriaLabel="add-label" isAddButtonDisabled={false}>
|
|
510
|
+
<div>Tab content</div>
|
|
511
|
+
</Tabs>
|
|
512
|
+
);
|
|
513
|
+
|
|
514
|
+
const addButton = screen.getByLabelText('add-label');
|
|
515
|
+
expect(addButton).not.toBeDisabled();
|
|
516
|
+
});
|
|
@@ -4,11 +4,12 @@ exports[`should render accessible tabs 1`] = `
|
|
|
4
4
|
<DocumentFragment>
|
|
5
5
|
<nav
|
|
6
6
|
aria-label="accessible Tabs example"
|
|
7
|
-
class="pf-v6-c-tabs"
|
|
8
|
-
data-ouia-component-id="OUIA-Generated-Tabs-
|
|
7
|
+
class="pf-v6-c-tabs pf-m-animate-current pf-m-initializing-accent"
|
|
8
|
+
data-ouia-component-id="OUIA-Generated-Tabs-12"
|
|
9
9
|
data-ouia-component-type="PF6/Tabs"
|
|
10
10
|
data-ouia-safe="true"
|
|
11
11
|
id="accessibleTabs"
|
|
12
|
+
style="--pf-v6-c-tabs--link-accent--length: 0px; --pf-v6-c-tabs--link-accent--start: 0px;"
|
|
12
13
|
>
|
|
13
14
|
<ul
|
|
14
15
|
class="pf-v6-c-tabs__list"
|
|
@@ -120,11 +121,12 @@ exports[`should render accessible tabs 1`] = `
|
|
|
120
121
|
exports[`should render box tabs 1`] = `
|
|
121
122
|
<DocumentFragment>
|
|
122
123
|
<div
|
|
123
|
-
class="pf-v6-c-tabs pf-m-box"
|
|
124
|
-
data-ouia-component-id="OUIA-Generated-Tabs-
|
|
124
|
+
class="pf-v6-c-tabs pf-m-animate-current pf-m-box pf-m-initializing-accent"
|
|
125
|
+
data-ouia-component-id="OUIA-Generated-Tabs-11"
|
|
125
126
|
data-ouia-component-type="PF6/Tabs"
|
|
126
127
|
data-ouia-safe="true"
|
|
127
128
|
id="boxTabs"
|
|
129
|
+
style="--pf-v6-c-tabs--link-accent--length: 0px; --pf-v6-c-tabs--link-accent--start: 0px;"
|
|
128
130
|
>
|
|
129
131
|
<ul
|
|
130
132
|
class="pf-v6-c-tabs__list"
|
|
@@ -278,11 +280,12 @@ exports[`should render box tabs 1`] = `
|
|
|
278
280
|
exports[`should render box tabs of secondary variant 1`] = `
|
|
279
281
|
<DocumentFragment>
|
|
280
282
|
<div
|
|
281
|
-
class="pf-v6-c-tabs pf-m-box pf-m-secondary"
|
|
282
|
-
data-ouia-component-id="OUIA-Generated-Tabs-
|
|
283
|
+
class="pf-v6-c-tabs pf-m-animate-current pf-m-box pf-m-secondary pf-m-initializing-accent"
|
|
284
|
+
data-ouia-component-id="OUIA-Generated-Tabs-18"
|
|
283
285
|
data-ouia-component-type="PF6/Tabs"
|
|
284
286
|
data-ouia-safe="true"
|
|
285
287
|
id="boxSecondaryVariantTabs"
|
|
288
|
+
style="--pf-v6-c-tabs--link-accent--length: 0px; --pf-v6-c-tabs--link-accent--start: 0px;"
|
|
286
289
|
>
|
|
287
290
|
<ul
|
|
288
291
|
class="pf-v6-c-tabs__list"
|
|
@@ -394,11 +397,12 @@ exports[`should render box tabs of secondary variant 1`] = `
|
|
|
394
397
|
exports[`should render expandable vertical tabs 1`] = `
|
|
395
398
|
<DocumentFragment>
|
|
396
399
|
<div
|
|
397
|
-
class="pf-v6-c-tabs pf-m-vertical pf-m-expandable"
|
|
398
|
-
data-ouia-component-id="OUIA-Generated-Tabs-
|
|
400
|
+
class="pf-v6-c-tabs pf-m-animate-current pf-m-vertical pf-m-expandable pf-m-initializing-accent"
|
|
401
|
+
data-ouia-component-id="OUIA-Generated-Tabs-9"
|
|
399
402
|
data-ouia-component-type="PF6/Tabs"
|
|
400
403
|
data-ouia-safe="true"
|
|
401
404
|
id="verticalTabs"
|
|
405
|
+
style="--pf-v6-c-tabs--link-accent--length: 0px; --pf-v6-c-tabs--link-accent--start: 0px;"
|
|
402
406
|
>
|
|
403
407
|
<div
|
|
404
408
|
class="pf-v6-c-tabs__toggle"
|
|
@@ -600,11 +604,12 @@ exports[`should render expandable vertical tabs 1`] = `
|
|
|
600
604
|
exports[`should render filled tabs 1`] = `
|
|
601
605
|
<DocumentFragment>
|
|
602
606
|
<div
|
|
603
|
-
class="pf-v6-c-tabs pf-m-fill"
|
|
604
|
-
data-ouia-component-id="OUIA-Generated-Tabs-
|
|
607
|
+
class="pf-v6-c-tabs pf-m-animate-current pf-m-fill pf-m-initializing-accent"
|
|
608
|
+
data-ouia-component-id="OUIA-Generated-Tabs-13"
|
|
605
609
|
data-ouia-component-type="PF6/Tabs"
|
|
606
610
|
data-ouia-safe="true"
|
|
607
611
|
id="filledTabs"
|
|
612
|
+
style="--pf-v6-c-tabs--link-accent--length: 0px; --pf-v6-c-tabs--link-accent--start: 0px;"
|
|
608
613
|
>
|
|
609
614
|
<ul
|
|
610
615
|
class="pf-v6-c-tabs__list"
|
|
@@ -716,11 +721,12 @@ exports[`should render filled tabs 1`] = `
|
|
|
716
721
|
exports[`should render simple tabs 1`] = `
|
|
717
722
|
<DocumentFragment>
|
|
718
723
|
<div
|
|
719
|
-
class="pf-v6-c-tabs"
|
|
720
|
-
data-ouia-component-id="OUIA-Generated-Tabs-
|
|
724
|
+
class="pf-v6-c-tabs pf-m-animate-current pf-m-initializing-accent"
|
|
725
|
+
data-ouia-component-id="OUIA-Generated-Tabs-4"
|
|
721
726
|
data-ouia-component-type="PF6/Tabs"
|
|
722
727
|
data-ouia-safe="true"
|
|
723
728
|
id="simpleTabs"
|
|
729
|
+
style="--pf-v6-c-tabs--link-accent--length: 0px; --pf-v6-c-tabs--link-accent--start: 0px;"
|
|
724
730
|
>
|
|
725
731
|
<ul
|
|
726
732
|
class="pf-v6-c-tabs__list"
|
|
@@ -874,11 +880,12 @@ exports[`should render simple tabs 1`] = `
|
|
|
874
880
|
exports[`should render subtabs 1`] = `
|
|
875
881
|
<DocumentFragment>
|
|
876
882
|
<div
|
|
877
|
-
class="pf-v6-c-tabs"
|
|
878
|
-
data-ouia-component-id="OUIA-Generated-Tabs-
|
|
883
|
+
class="pf-v6-c-tabs pf-m-animate-current pf-m-initializing-accent"
|
|
884
|
+
data-ouia-component-id="OUIA-Generated-Tabs-14"
|
|
879
885
|
data-ouia-component-type="PF6/Tabs"
|
|
880
886
|
data-ouia-safe="true"
|
|
881
887
|
id="primarieTabs"
|
|
888
|
+
style="--pf-v6-c-tabs--link-accent--length: 0px; --pf-v6-c-tabs--link-accent--start: 0px;"
|
|
882
889
|
>
|
|
883
890
|
<ul
|
|
884
891
|
class="pf-v6-c-tabs__list"
|
|
@@ -959,11 +966,12 @@ exports[`should render subtabs 1`] = `
|
|
|
959
966
|
tabindex="0"
|
|
960
967
|
>
|
|
961
968
|
<div
|
|
962
|
-
class="pf-v6-c-tabs pf-m-subtab"
|
|
963
|
-
data-ouia-component-id="OUIA-Generated-Tabs-
|
|
969
|
+
class="pf-v6-c-tabs pf-m-animate-current pf-m-subtab pf-m-initializing-accent"
|
|
970
|
+
data-ouia-component-id="OUIA-Generated-Tabs-15"
|
|
964
971
|
data-ouia-component-type="PF6/Tabs"
|
|
965
972
|
data-ouia-safe="true"
|
|
966
973
|
id="subtabs"
|
|
974
|
+
style="--pf-v6-c-tabs--link-accent--length: 0; --pf-v6-c-tabs--link-accent--start: 0;"
|
|
967
975
|
>
|
|
968
976
|
<ul
|
|
969
977
|
class="pf-v6-c-tabs__list"
|
|
@@ -1101,11 +1109,12 @@ exports[`should render subtabs 1`] = `
|
|
|
1101
1109
|
exports[`should render tabs with eventKey Strings 1`] = `
|
|
1102
1110
|
<DocumentFragment>
|
|
1103
1111
|
<div
|
|
1104
|
-
class="pf-v6-c-tabs"
|
|
1105
|
-
data-ouia-component-id="OUIA-Generated-Tabs-
|
|
1112
|
+
class="pf-v6-c-tabs pf-m-animate-current pf-m-initializing-accent"
|
|
1113
|
+
data-ouia-component-id="OUIA-Generated-Tabs-16"
|
|
1106
1114
|
data-ouia-component-type="PF6/Tabs"
|
|
1107
1115
|
data-ouia-safe="true"
|
|
1108
1116
|
id="eventKeyTabs"
|
|
1117
|
+
style="--pf-v6-c-tabs--link-accent--length: 0; --pf-v6-c-tabs--link-accent--start: 0;"
|
|
1109
1118
|
>
|
|
1110
1119
|
<ul
|
|
1111
1120
|
class="pf-v6-c-tabs__list"
|
|
@@ -1218,11 +1227,12 @@ exports[`should render tabs with eventKey Strings 1`] = `
|
|
|
1218
1227
|
exports[`should render tabs with no bottom border 1`] = `
|
|
1219
1228
|
<DocumentFragment>
|
|
1220
1229
|
<div
|
|
1221
|
-
class="pf-v6-c-tabs pf-m-no-border-bottom"
|
|
1222
|
-
data-ouia-component-id="OUIA-Generated-Tabs-
|
|
1230
|
+
class="pf-v6-c-tabs pf-m-animate-current pf-m-no-border-bottom pf-m-initializing-accent"
|
|
1231
|
+
data-ouia-component-id="OUIA-Generated-Tabs-19"
|
|
1223
1232
|
data-ouia-component-type="PF6/Tabs"
|
|
1224
1233
|
data-ouia-safe="true"
|
|
1225
1234
|
id="noBottomBorderTabs"
|
|
1235
|
+
style="--pf-v6-c-tabs--link-accent--length: 0px; --pf-v6-c-tabs--link-accent--start: 0px;"
|
|
1226
1236
|
>
|
|
1227
1237
|
<ul
|
|
1228
1238
|
class="pf-v6-c-tabs__list"
|
|
@@ -1334,11 +1344,12 @@ exports[`should render tabs with no bottom border 1`] = `
|
|
|
1334
1344
|
exports[`should render tabs with separate content 1`] = `
|
|
1335
1345
|
<DocumentFragment>
|
|
1336
1346
|
<div
|
|
1337
|
-
class="pf-v6-c-tabs"
|
|
1338
|
-
data-ouia-component-id="OUIA-Generated-Tabs-
|
|
1347
|
+
class="pf-v6-c-tabs pf-m-animate-current pf-m-initializing-accent"
|
|
1348
|
+
data-ouia-component-id="OUIA-Generated-Tabs-17"
|
|
1339
1349
|
data-ouia-component-type="PF6/Tabs"
|
|
1340
1350
|
data-ouia-safe="true"
|
|
1341
1351
|
id="separateTabs"
|
|
1352
|
+
style="--pf-v6-c-tabs--link-accent--length: 0px; --pf-v6-c-tabs--link-accent--start: 0px;"
|
|
1342
1353
|
>
|
|
1343
1354
|
<ul
|
|
1344
1355
|
class="pf-v6-c-tabs__list"
|
|
@@ -1460,10 +1471,11 @@ exports[`should render tabs with separate content 1`] = `
|
|
|
1460
1471
|
exports[`should render uncontrolled tabs 1`] = `
|
|
1461
1472
|
<DocumentFragment>
|
|
1462
1473
|
<div
|
|
1463
|
-
class="pf-v6-c-tabs"
|
|
1464
|
-
data-ouia-component-id="OUIA-Generated-Tabs-
|
|
1474
|
+
class="pf-v6-c-tabs pf-m-animate-current pf-m-initializing-accent"
|
|
1475
|
+
data-ouia-component-id="OUIA-Generated-Tabs-7"
|
|
1465
1476
|
data-ouia-component-type="PF6/Tabs"
|
|
1466
1477
|
data-ouia-safe="true"
|
|
1478
|
+
style="--pf-v6-c-tabs--link-accent--length: 0px; --pf-v6-c-tabs--link-accent--start: 0px;"
|
|
1467
1479
|
>
|
|
1468
1480
|
<ul
|
|
1469
1481
|
class="pf-v6-c-tabs__list"
|
|
@@ -1617,11 +1629,12 @@ exports[`should render uncontrolled tabs 1`] = `
|
|
|
1617
1629
|
exports[`should render vertical tabs 1`] = `
|
|
1618
1630
|
<DocumentFragment>
|
|
1619
1631
|
<div
|
|
1620
|
-
class="pf-v6-c-tabs pf-m-vertical"
|
|
1621
|
-
data-ouia-component-id="OUIA-Generated-Tabs-
|
|
1632
|
+
class="pf-v6-c-tabs pf-m-animate-current pf-m-vertical pf-m-initializing-accent"
|
|
1633
|
+
data-ouia-component-id="OUIA-Generated-Tabs-8"
|
|
1622
1634
|
data-ouia-component-type="PF6/Tabs"
|
|
1623
1635
|
data-ouia-safe="true"
|
|
1624
1636
|
id="verticalTabs"
|
|
1637
|
+
style="--pf-v6-c-tabs--link-accent--length: 0px; --pf-v6-c-tabs--link-accent--start: 0px;"
|
|
1625
1638
|
>
|
|
1626
1639
|
<ul
|
|
1627
1640
|
class="pf-v6-c-tabs__list"
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
id: Tabs
|
|
3
3
|
section: components
|
|
4
4
|
cssPrefix: pf-v6-c-tabs
|
|
5
|
-
propComponents: ['Tabs', 'Tab', 'TabContent', 'TabContentBody', 'TabTitleText', 'TabTitleIcon', '
|
|
5
|
+
propComponents: ['Tabs', 'Tab', 'TabContent', 'TabContentBody', 'TabTitleText', 'TabTitleIcon', 'HorizontalOverflowObject', 'HorizontalOverflowPopperProps', 'TabAction']
|
|
6
6
|
ouia: true
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -103,6 +103,11 @@ export interface TreeViewProps {
|
|
|
103
103
|
useMemo?: boolean;
|
|
104
104
|
/** Variant presentation styles for the tree view. */
|
|
105
105
|
variant?: 'default' | 'compact' | 'compactNoBackground';
|
|
106
|
+
/** Flag indicating whether a tree view has animations. This will always render
|
|
107
|
+
* nested tree view items rather than dynamically rendering them. This prop will be removed in
|
|
108
|
+
* the next breaking change release in favor of defaulting to always-rendered items.
|
|
109
|
+
*/
|
|
110
|
+
hasAnimations?: boolean;
|
|
106
111
|
}
|
|
107
112
|
|
|
108
113
|
export const TreeView: React.FunctionComponent<TreeViewProps> = ({
|
|
@@ -130,6 +135,7 @@ export const TreeView: React.FunctionComponent<TreeViewProps> = ({
|
|
|
130
135
|
useMemo,
|
|
131
136
|
'aria-label': ariaLabel,
|
|
132
137
|
'aria-labelledby': ariaLabelledby,
|
|
138
|
+
hasAnimations,
|
|
133
139
|
...props
|
|
134
140
|
}: TreeViewProps) => {
|
|
135
141
|
const treeViewList = (
|
|
@@ -139,11 +145,13 @@ export const TreeView: React.FunctionComponent<TreeViewProps> = ({
|
|
|
139
145
|
isMultiSelectable={isMultiSelectable}
|
|
140
146
|
aria-label={ariaLabel}
|
|
141
147
|
aria-labelledby={ariaLabelledby}
|
|
148
|
+
{...props}
|
|
142
149
|
>
|
|
143
150
|
{data.map((item) => (
|
|
144
151
|
<TreeViewListItem
|
|
145
152
|
key={item.id?.toString() || item.name?.toString()}
|
|
146
153
|
name={item.name}
|
|
154
|
+
hasAnimations={hasAnimations}
|
|
147
155
|
title={item.title}
|
|
148
156
|
id={item.id}
|
|
149
157
|
isExpanded={allExpanded}
|
|
@@ -172,6 +180,7 @@ export const TreeView: React.FunctionComponent<TreeViewProps> = ({
|
|
|
172
180
|
<TreeView
|
|
173
181
|
data={item.children}
|
|
174
182
|
isNested
|
|
183
|
+
hasAnimations={hasAnimations}
|
|
175
184
|
parentItem={item}
|
|
176
185
|
hasCheckboxes={hasCheckboxes}
|
|
177
186
|
hasBadges={hasBadges}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { memo, useState, useEffect } from 'react';
|
|
1
|
+
import { memo, useState, useEffect, Children, isValidElement, cloneElement } from 'react';
|
|
2
2
|
import { css } from '@patternfly/react-styles';
|
|
3
3
|
import styles from '@patternfly/react-styles/css/components/TreeView/tree-view';
|
|
4
4
|
import AngleRightIcon from '@patternfly/react-icons/dist/esm/icons/angle-right-icon';
|
|
@@ -68,6 +68,11 @@ export interface TreeViewListItemProps {
|
|
|
68
68
|
* every node in the selected item's path.
|
|
69
69
|
*/
|
|
70
70
|
useMemo?: boolean;
|
|
71
|
+
/** Flag indicating whether a tree view has animations. This will always render
|
|
72
|
+
* nested tree view items rather than dynamically rendering them. This prop will be removed in
|
|
73
|
+
* the next breaking change release in favor of defaulting to always-rendered items.
|
|
74
|
+
*/
|
|
75
|
+
hasAnimations?: boolean;
|
|
71
76
|
}
|
|
72
77
|
|
|
73
78
|
const TreeViewListItemBase: React.FunctionComponent<TreeViewListItemProps> = ({
|
|
@@ -97,6 +102,7 @@ const TreeViewListItemBase: React.FunctionComponent<TreeViewListItemProps> = ({
|
|
|
97
102
|
expandedIcon,
|
|
98
103
|
action,
|
|
99
104
|
compareItems,
|
|
105
|
+
hasAnimations,
|
|
100
106
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
101
107
|
useMemo
|
|
102
108
|
}: TreeViewListItemProps) => {
|
|
@@ -186,9 +192,7 @@ const TreeViewListItemBase: React.FunctionComponent<TreeViewListItemProps> = ({
|
|
|
186
192
|
<>
|
|
187
193
|
{hasBadge && children && (
|
|
188
194
|
<span className={css(styles.treeViewNodeCount)}>
|
|
189
|
-
<Badge {...badgeProps}>
|
|
190
|
-
{customBadgeContent ? customBadgeContent : (children as React.ReactElement<any>).props.data.length}
|
|
191
|
-
</Badge>
|
|
195
|
+
<Badge {...badgeProps}>{customBadgeContent ?? (children as React.ReactElement<any>).props.data.length}</Badge>
|
|
192
196
|
</span>
|
|
193
197
|
)}
|
|
194
198
|
{hasBadge && !children && customBadgeContent !== undefined && (
|
|
@@ -205,6 +209,15 @@ const TreeViewListItemBase: React.FunctionComponent<TreeViewListItemProps> = ({
|
|
|
205
209
|
activeItems.length > 0 &&
|
|
206
210
|
activeItems.some((item) => compareItems && item && compareItems(item, itemData));
|
|
207
211
|
|
|
212
|
+
const clonedChildren = Children.map(
|
|
213
|
+
children,
|
|
214
|
+
(child) =>
|
|
215
|
+
isValidElement(child) &&
|
|
216
|
+
cloneElement(child as React.ReactElement<any>, {
|
|
217
|
+
inert: internalIsExpanded ? undefined : ''
|
|
218
|
+
})
|
|
219
|
+
);
|
|
220
|
+
|
|
208
221
|
return (
|
|
209
222
|
<li
|
|
210
223
|
id={id}
|
|
@@ -249,7 +262,7 @@ const TreeViewListItemBase: React.FunctionComponent<TreeViewListItemProps> = ({
|
|
|
249
262
|
</GenerateId>
|
|
250
263
|
{action && <div className={css(styles.treeViewAction)}>{action}</div>}
|
|
251
264
|
</div>
|
|
252
|
-
{internalIsExpanded &&
|
|
265
|
+
{(internalIsExpanded || hasAnimations) && clonedChildren}
|
|
253
266
|
</li>
|
|
254
267
|
);
|
|
255
268
|
};
|
|
@@ -72,7 +72,7 @@ class TreeViewRoot extends Component<TreeViewRootProps> {
|
|
|
72
72
|
const activeElement = document.activeElement;
|
|
73
73
|
const key = event.key;
|
|
74
74
|
const treeItems = Array.from(this.treeRef.current?.getElementsByClassName(styles.treeViewNode)).filter(
|
|
75
|
-
(el) => !el.classList.contains('pf-m-disabled')
|
|
75
|
+
(el) => !el.classList.contains('pf-m-disabled') && !el.closest(`.${styles.treeViewList}[inert]`)
|
|
76
76
|
);
|
|
77
77
|
|
|
78
78
|
if (key === KeyTypes.Space) {
|
|
@@ -138,7 +138,9 @@ class TreeViewRoot extends Component<TreeViewRootProps> {
|
|
|
138
138
|
event.preventDefault();
|
|
139
139
|
}
|
|
140
140
|
|
|
141
|
-
const treeNodes = Array.from(this.treeRef.current?.getElementsByClassName(styles.treeViewNode))
|
|
141
|
+
const treeNodes = Array.from(this.treeRef.current?.getElementsByClassName(styles.treeViewNode)).filter(
|
|
142
|
+
(el) => !el.closest(`.${styles.treeViewList}[inert]`)
|
|
143
|
+
);
|
|
142
144
|
|
|
143
145
|
handleArrows(
|
|
144
146
|
event,
|