@patternfly/react-core 6.3.0-prerelease.8 → 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 +151 -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/Nav/NavExpandable.d.ts.map +1 -1
- package/dist/esm/components/Nav/NavExpandable.js +1 -1
- package/dist/esm/components/Nav/NavExpandable.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/Nav/NavExpandable.d.ts.map +1 -1
- package/dist/js/components/Nav/NavExpandable.js +1 -1
- package/dist/js/components/Nav/NavExpandable.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-B5tbNQwm.css → output-BvTy70LD.css} +15500 -14758
- 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/Nav/NavExpandable.tsx +6 -1
- package/src/components/Nav/__tests__/Generated/__snapshots__/NavExpandable.test.tsx.snap +1 -0
- package/src/components/Nav/__tests__/NavExpandable.test.tsx +15 -0
- package/src/components/Nav/__tests__/__snapshots__/Nav.test.tsx.snap +3 -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
|
@@ -56,14 +56,17 @@ export const DualListSelectorListWrapperBase: React.FunctionComponent<DualListSe
|
|
|
56
56
|
}
|
|
57
57
|
event.stopImmediatePropagation();
|
|
58
58
|
const validOptions = isTree
|
|
59
|
-
? (
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
59
|
+
? (
|
|
60
|
+
Array.from(
|
|
61
|
+
menuRef.current.querySelectorAll(
|
|
62
|
+
`.${styles.dualListSelectorItemToggle}, .${styles.dualListSelectorItemCheck} > input`
|
|
63
|
+
)
|
|
64
|
+
) as Element[]
|
|
65
|
+
).filter((item) => !item.closest(`.${styles.dualListSelectorList}[inert]`))
|
|
64
66
|
: (Array.from(menuRef.current.getElementsByTagName('LI')) as Element[]).filter(
|
|
65
67
|
(el) => !el.classList.contains('pf-m-disabled')
|
|
66
68
|
);
|
|
69
|
+
|
|
67
70
|
const activeElement = document.activeElement;
|
|
68
71
|
handleArrows(
|
|
69
72
|
event,
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { useContext } from 'react';
|
|
1
2
|
import { css } from '@patternfly/react-styles';
|
|
2
3
|
import styles from '@patternfly/react-styles/css/components/DualListSelector/dual-list-selector';
|
|
4
|
+
import { DualListSelectorContext } from './DualListSelectorContext';
|
|
3
5
|
import { DualListSelectorTreeItem } from './DualListSelectorTreeItem';
|
|
4
6
|
|
|
5
7
|
export interface DualListSelectorTreeItemData {
|
|
@@ -68,11 +70,13 @@ export const DualListSelectorTree: React.FunctionComponent<DualListSelectorTreeP
|
|
|
68
70
|
isDisabled = false,
|
|
69
71
|
...props
|
|
70
72
|
}: DualListSelectorTreeProps) => {
|
|
73
|
+
const { hasAnimations } = useContext(DualListSelectorContext);
|
|
71
74
|
const dataToRender = typeof data === 'function' ? data() : data;
|
|
72
75
|
const tree = dataToRender.map((item) => (
|
|
73
76
|
<DualListSelectorTreeItem
|
|
74
77
|
key={item.id}
|
|
75
78
|
text={item.text}
|
|
79
|
+
hasAnimations={hasAnimations}
|
|
76
80
|
id={item.id}
|
|
77
81
|
defaultExpanded={item.defaultExpanded !== undefined ? item.defaultExpanded : defaultAllExpanded}
|
|
78
82
|
onOptionCheck={onOptionCheck}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { memo, useContext, useEffect, useRef, useState } from 'react';
|
|
1
|
+
import { memo, useContext, useEffect, useRef, useState, cloneElement, Children, isValidElement } from 'react';
|
|
2
2
|
import styles from '@patternfly/react-styles/css/components/DualListSelector/dual-list-selector';
|
|
3
3
|
import { css } from '@patternfly/react-styles';
|
|
4
4
|
import { DualListSelectorTreeItemData } from './DualListSelectorTree';
|
|
@@ -38,6 +38,11 @@ export interface DualListSelectorTreeItemProps extends React.HTMLProps<HTMLLIEle
|
|
|
38
38
|
isDisabled?: boolean;
|
|
39
39
|
/** Flag indicating the DualListSelector tree should utilize memoization to help render large data sets. */
|
|
40
40
|
useMemo?: boolean;
|
|
41
|
+
/** Flag indicating whether a tree dual list selector has animations. This will always render
|
|
42
|
+
* nested dual list selector items rather than dynamically rendering them. This prop will be removed in
|
|
43
|
+
* the next breaking change release in favor of defaulting to always-rendered items.
|
|
44
|
+
*/
|
|
45
|
+
hasAnimations?: boolean;
|
|
41
46
|
}
|
|
42
47
|
|
|
43
48
|
const DualListSelectorTreeItemBase: React.FunctionComponent<DualListSelectorTreeItemProps> = ({
|
|
@@ -53,6 +58,7 @@ const DualListSelectorTreeItemBase: React.FunctionComponent<DualListSelectorTree
|
|
|
53
58
|
badgeProps,
|
|
54
59
|
itemData,
|
|
55
60
|
isDisabled = false,
|
|
61
|
+
hasAnimations,
|
|
56
62
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
57
63
|
useMemo,
|
|
58
64
|
...props
|
|
@@ -65,6 +71,15 @@ const DualListSelectorTreeItemBase: React.FunctionComponent<DualListSelectorTree
|
|
|
65
71
|
setIsExpanded(defaultExpanded);
|
|
66
72
|
}, [defaultExpanded]);
|
|
67
73
|
|
|
74
|
+
const clonedChildren = Children.map(
|
|
75
|
+
children,
|
|
76
|
+
(child) =>
|
|
77
|
+
isValidElement(child) &&
|
|
78
|
+
cloneElement(child as React.ReactElement<any>, {
|
|
79
|
+
inert: isExpanded ? undefined : ''
|
|
80
|
+
})
|
|
81
|
+
);
|
|
82
|
+
|
|
68
83
|
return (
|
|
69
84
|
<li
|
|
70
85
|
className={css(
|
|
@@ -156,7 +171,7 @@ const DualListSelectorTreeItemBase: React.FunctionComponent<DualListSelectorTree
|
|
|
156
171
|
</span>
|
|
157
172
|
</div>
|
|
158
173
|
</div>
|
|
159
|
-
{isExpanded &&
|
|
174
|
+
{(isExpanded || hasAnimations) && clonedChildren}
|
|
160
175
|
</li>
|
|
161
176
|
);
|
|
162
177
|
};
|
|
@@ -1,6 +1,37 @@
|
|
|
1
|
-
import { render } from '@testing-library/react';
|
|
1
|
+
import { render, screen } from '@testing-library/react';
|
|
2
|
+
import styles from '@patternfly/react-styles/css/components/DualListSelector/dual-list-selector';
|
|
3
|
+
import { DualListSelector } from '../DualListSelector';
|
|
2
4
|
import { DualListSelectorPane } from '../DualListSelectorPane';
|
|
3
5
|
import { SearchInput } from '../../SearchInput';
|
|
6
|
+
|
|
7
|
+
// The following tests can be removed as part of https://github.com/patternfly/patternfly-react/issues/11838
|
|
8
|
+
describe('Opt-in animations', () => {
|
|
9
|
+
test(`Does not render with class ${styles.modifiers.animateExpand} by default`, () => {
|
|
10
|
+
render(<DualListSelector data-testid="test-id" />);
|
|
11
|
+
|
|
12
|
+
expect(screen.getByTestId('test-id')).not.toHaveClass(styles.modifiers.animateExpand);
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
test(`Does not render with class ${styles.modifiers.animateExpand} when hasAnimations is true and isTree is false`, () => {
|
|
16
|
+
render(<DualListSelector hasAnimations data-testid="test-id" />);
|
|
17
|
+
|
|
18
|
+
expect(screen.getByTestId('test-id')).not.toHaveClass(styles.modifiers.animateExpand);
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
test(`Does not render with class ${styles.modifiers.animateExpand} by default when isTree is true`, () => {
|
|
22
|
+
render(<DualListSelector isTree data-testid="test-id" />);
|
|
23
|
+
|
|
24
|
+
expect(screen.getByTestId('test-id')).not.toHaveClass(styles.modifiers.animateExpand);
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
test(`Renders with class ${styles.modifiers.animateExpand} when both isTree and hasAnimations are true`, () => {
|
|
28
|
+
render(<DualListSelector isTree hasAnimations data-testid="test-id" />);
|
|
29
|
+
|
|
30
|
+
expect(screen.getByTestId('test-id')).toHaveClass(styles.modifiers.animateExpand);
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
// Following tests should be moved to a separate DualListSelectorPane test file
|
|
4
35
|
describe('DualListSelector', () => {
|
|
5
36
|
test('basic', () => {
|
|
6
37
|
const { asFragment } = render(<DualListSelectorPane id="basicTest" />);
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { render, screen } from '@testing-library/react';
|
|
2
|
+
import styles from '@patternfly/react-styles/css/components/DualListSelector/dual-list-selector';
|
|
3
|
+
import { DualListSelectorTreeItem } from '../DualListSelectorTreeItem';
|
|
4
|
+
|
|
5
|
+
// The following tests checking for children to not be/to be rendered will need to be refactored
|
|
6
|
+
// as part of https://github.com/patternfly/patternfly-react/issues/11838
|
|
7
|
+
test('Does not render children by default', () => {
|
|
8
|
+
render(
|
|
9
|
+
<DualListSelectorTreeItem id="item-id" text="Test text">
|
|
10
|
+
<div>Children content</div>
|
|
11
|
+
</DualListSelectorTreeItem>
|
|
12
|
+
);
|
|
13
|
+
|
|
14
|
+
expect(screen.queryByText('Children content')).not.toBeInTheDocument();
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
test('Renders children when defaultExpanded is true', () => {
|
|
18
|
+
render(
|
|
19
|
+
<DualListSelectorTreeItem defaultExpanded id="item-id" text="Test text">
|
|
20
|
+
<div>Children content</div>
|
|
21
|
+
</DualListSelectorTreeItem>
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
expect(screen.getByText('Children content')).toBeVisible();
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
test('Renders children when hasAnimations is true', () => {
|
|
28
|
+
render(
|
|
29
|
+
<DualListSelectorTreeItem hasAnimations id="item-id" text="Test text">
|
|
30
|
+
<div>Children content</div>
|
|
31
|
+
</DualListSelectorTreeItem>
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
expect(screen.getByText('Children content')).toBeVisible();
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
test('Renders children with inert attribute by default when hasAnimations is true', () => {
|
|
38
|
+
render(
|
|
39
|
+
<DualListSelectorTreeItem hasAnimations id="item-id" text="Test text">
|
|
40
|
+
<div>Children content</div>
|
|
41
|
+
</DualListSelectorTreeItem>
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
expect(screen.getByText('Children content')).toHaveAttribute('inert', '');
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
test('Does not render children with inert attribute when hasAnimations and defaultExpanded are true', () => {
|
|
48
|
+
render(
|
|
49
|
+
<DualListSelectorTreeItem hasAnimations defaultExpanded id="item-id" text="Test text">
|
|
50
|
+
<div>Children content</div>
|
|
51
|
+
</DualListSelectorTreeItem>
|
|
52
|
+
);
|
|
53
|
+
|
|
54
|
+
expect(screen.getByText('Children content')).not.toHaveAttribute('inert');
|
|
55
|
+
});
|
|
@@ -283,7 +283,7 @@ export const DualListSelectorComposableTree: React.FunctionComponent<ExampleProp
|
|
|
283
283
|
};
|
|
284
284
|
|
|
285
285
|
return (
|
|
286
|
-
<DualListSelector isTree>
|
|
286
|
+
<DualListSelector hasAnimations isTree>
|
|
287
287
|
{buildPane(false)}
|
|
288
288
|
<DualListSelectorControlsWrapper>
|
|
289
289
|
<DualListSelectorControl
|
|
@@ -32,7 +32,7 @@ export interface ExpandableSectionProps extends Omit<React.HTMLProps<HTMLDivElem
|
|
|
32
32
|
toggleId?: string;
|
|
33
33
|
/** Display size variant. Set to "lg" for disclosure styling. */
|
|
34
34
|
displaySize?: 'default' | 'lg';
|
|
35
|
-
/**
|
|
35
|
+
/** Flag indicating that the expandable section and expandable toggle are detached from one another. */
|
|
36
36
|
isDetached?: boolean;
|
|
37
37
|
/** Flag to indicate if the content is expanded. */
|
|
38
38
|
isExpanded?: boolean;
|
|
@@ -64,6 +64,10 @@ export interface ExpandableSectionProps extends Omit<React.HTMLProps<HTMLDivElem
|
|
|
64
64
|
* variant, the expandable content will be truncated after 3 lines by default.
|
|
65
65
|
*/
|
|
66
66
|
variant?: 'default' | 'truncate';
|
|
67
|
+
/** Sets the direction of the expandable animation when isDetached is true. If this prop is not passed,
|
|
68
|
+
* animation will not occur.
|
|
69
|
+
*/
|
|
70
|
+
direction?: 'up' | 'down';
|
|
67
71
|
}
|
|
68
72
|
|
|
69
73
|
interface ExpandableSectionState {
|
|
@@ -72,6 +76,11 @@ interface ExpandableSectionState {
|
|
|
72
76
|
previousWidth: number;
|
|
73
77
|
}
|
|
74
78
|
|
|
79
|
+
const directionClassMap = {
|
|
80
|
+
up: styles.modifiers.expandTop,
|
|
81
|
+
down: styles.modifiers.expandBottom
|
|
82
|
+
};
|
|
83
|
+
|
|
75
84
|
const setLineClamp = (lines: number, element: HTMLDivElement) => {
|
|
76
85
|
if (!element || lines < 1) {
|
|
77
86
|
return;
|
|
@@ -198,6 +207,7 @@ class ExpandableSection extends Component<ExpandableSectionProps, ExpandableSect
|
|
|
198
207
|
variant,
|
|
199
208
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
200
209
|
truncateMaxLines,
|
|
210
|
+
direction,
|
|
201
211
|
...props
|
|
202
212
|
} = this.props;
|
|
203
213
|
|
|
@@ -258,6 +268,8 @@ class ExpandableSection extends Component<ExpandableSectionProps, ExpandableSect
|
|
|
258
268
|
displaySize === 'lg' && styles.modifiers.displayLg,
|
|
259
269
|
isWidthLimited && styles.modifiers.limitWidth,
|
|
260
270
|
isIndented && styles.modifiers.indented,
|
|
271
|
+
isDetached && direction && directionClassMap[direction],
|
|
272
|
+
isDetached && direction && 'pf-m-detached',
|
|
261
273
|
variant === ExpandableSectionVariant.truncate && styles.modifiers.truncate,
|
|
262
274
|
className
|
|
263
275
|
)}
|
|
@@ -28,6 +28,8 @@ export interface ExpandableSectionToggleProps extends Omit<React.HTMLProps<HTMLD
|
|
|
28
28
|
isExpanded?: boolean;
|
|
29
29
|
/** Callback function to toggle the expandable content. */
|
|
30
30
|
onToggle?: (isExpanded: boolean) => void;
|
|
31
|
+
/** Flag indicating that the expandable section and expandable toggle are detached from one another. */
|
|
32
|
+
isDetached?: boolean;
|
|
31
33
|
}
|
|
32
34
|
|
|
33
35
|
export const ExpandableSectionToggle: React.FunctionComponent<ExpandableSectionToggleProps> = ({
|
|
@@ -39,6 +41,7 @@ export const ExpandableSectionToggle: React.FunctionComponent<ExpandableSectionT
|
|
|
39
41
|
toggleId,
|
|
40
42
|
direction = 'down',
|
|
41
43
|
hasTruncatedContent = false,
|
|
44
|
+
isDetached,
|
|
42
45
|
...props
|
|
43
46
|
}: ExpandableSectionToggleProps) => (
|
|
44
47
|
<div
|
|
@@ -46,6 +49,7 @@ export const ExpandableSectionToggle: React.FunctionComponent<ExpandableSectionT
|
|
|
46
49
|
styles.expandableSection,
|
|
47
50
|
isExpanded && styles.modifiers.expanded,
|
|
48
51
|
hasTruncatedContent && styles.modifiers.truncate,
|
|
52
|
+
isDetached && 'pf-m-detached',
|
|
49
53
|
className
|
|
50
54
|
)}
|
|
51
55
|
{...props}
|
|
@@ -63,7 +67,7 @@ export const ExpandableSectionToggle: React.FunctionComponent<ExpandableSectionT
|
|
|
63
67
|
<span
|
|
64
68
|
className={css(
|
|
65
69
|
styles.expandableSectionToggleIcon,
|
|
66
|
-
isExpanded && direction === 'up' && styles.modifiers.expandTop
|
|
70
|
+
isExpanded && direction === 'up' && styles.modifiers.expandTop // TODO: next breaking change move this class to the outer styles.expandableSection wrapper
|
|
67
71
|
)}
|
|
68
72
|
>
|
|
69
73
|
<AngleRightIcon />
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { Fragment } from 'react';
|
|
2
1
|
import { render, screen } from '@testing-library/react';
|
|
3
2
|
import userEvent from '@testing-library/user-event';
|
|
4
3
|
|
|
5
4
|
import { ExpandableSection, ExpandableSectionVariant } from '../ExpandableSection';
|
|
6
|
-
import
|
|
5
|
+
import styles from '@patternfly/react-styles/css/components/ExpandableSection/expandable-section';
|
|
7
6
|
|
|
8
7
|
const props = { contentId: 'content-id', toggleId: 'toggle-id' };
|
|
9
8
|
|
|
@@ -22,7 +21,7 @@ test('Renders ExpandableSection expanded', () => {
|
|
|
22
21
|
expect(asFragment()).toMatchSnapshot();
|
|
23
22
|
});
|
|
24
23
|
|
|
25
|
-
test('
|
|
24
|
+
test('Calls onToggle when clicked', async () => {
|
|
26
25
|
const mockfn = jest.fn();
|
|
27
26
|
const user = userEvent.setup();
|
|
28
27
|
|
|
@@ -32,6 +31,21 @@ test('ExpandableSection onToggle called', async () => {
|
|
|
32
31
|
expect(mockfn.mock.calls).toHaveLength(1);
|
|
33
32
|
});
|
|
34
33
|
|
|
34
|
+
test('Does not call onToggle when not clicked', async () => {
|
|
35
|
+
const mockfn = jest.fn();
|
|
36
|
+
const user = userEvent.setup();
|
|
37
|
+
|
|
38
|
+
render(
|
|
39
|
+
<>
|
|
40
|
+
<ExpandableSection onToggle={mockfn}> test </ExpandableSection>
|
|
41
|
+
<button onClick={() => {}}>Test clicker</button>
|
|
42
|
+
</>
|
|
43
|
+
);
|
|
44
|
+
|
|
45
|
+
await user.click(screen.getByRole('button', { name: 'Test clicker' }));
|
|
46
|
+
expect(mockfn).not.toHaveBeenCalled();
|
|
47
|
+
});
|
|
48
|
+
|
|
35
49
|
test('Renders Uncontrolled ExpandableSection', () => {
|
|
36
50
|
const { asFragment } = render(
|
|
37
51
|
<ExpandableSection {...props} toggleText="Show More">
|
|
@@ -42,20 +56,6 @@ test('Renders Uncontrolled ExpandableSection', () => {
|
|
|
42
56
|
expect(asFragment()).toMatchSnapshot();
|
|
43
57
|
});
|
|
44
58
|
|
|
45
|
-
test('Detached ExpandableSection renders successfully', () => {
|
|
46
|
-
const { asFragment } = render(
|
|
47
|
-
<Fragment>
|
|
48
|
-
<ExpandableSection isExpanded isDetached {...props}>
|
|
49
|
-
test
|
|
50
|
-
</ExpandableSection>
|
|
51
|
-
<ExpandableSectionToggle isExpanded direction="up" {...props}>
|
|
52
|
-
Toggle text
|
|
53
|
-
</ExpandableSectionToggle>
|
|
54
|
-
</Fragment>
|
|
55
|
-
);
|
|
56
|
-
expect(asFragment()).toMatchSnapshot();
|
|
57
|
-
});
|
|
58
|
-
|
|
59
59
|
test('Disclosure ExpandableSection', () => {
|
|
60
60
|
const { asFragment } = render(
|
|
61
61
|
<ExpandableSection {...props} displaySize="lg" isWidthLimited>
|
|
@@ -75,22 +75,22 @@ test('Renders ExpandableSection indented', () => {
|
|
|
75
75
|
expect(asFragment()).toMatchSnapshot();
|
|
76
76
|
});
|
|
77
77
|
|
|
78
|
-
test(
|
|
78
|
+
test(`Does not render with ${styles.modifiers.truncate} class when variant is not passed`, () => {
|
|
79
79
|
render(<ExpandableSection>test</ExpandableSection>);
|
|
80
80
|
|
|
81
|
-
expect(screen.getByText('test').parentElement).not.toHaveClass(
|
|
81
|
+
expect(screen.getByText('test').parentElement).not.toHaveClass(styles.modifiers.truncate);
|
|
82
82
|
});
|
|
83
83
|
|
|
84
|
-
test(
|
|
84
|
+
test(`Does not render with ${styles.modifiers.truncate} class when variant is not truncate`, () => {
|
|
85
85
|
render(<ExpandableSection variant={ExpandableSectionVariant.default}>test</ExpandableSection>);
|
|
86
86
|
|
|
87
|
-
expect(screen.getByText('test').parentElement).not.toHaveClass(
|
|
87
|
+
expect(screen.getByText('test').parentElement).not.toHaveClass(styles.modifiers.truncate);
|
|
88
88
|
});
|
|
89
89
|
|
|
90
|
-
test(
|
|
90
|
+
test(`Renders with ${styles.modifiers.truncate} class when variant is truncate`, () => {
|
|
91
91
|
render(<ExpandableSection variant={ExpandableSectionVariant.truncate}>test</ExpandableSection>);
|
|
92
92
|
|
|
93
|
-
expect(screen.getByText('test').parentElement).toHaveClass(
|
|
93
|
+
expect(screen.getByText('test').parentElement).toHaveClass(styles.modifiers.truncate);
|
|
94
94
|
});
|
|
95
95
|
|
|
96
96
|
test('Renders with value passed to contentId', () => {
|
|
@@ -129,3 +129,65 @@ test('Renders with ARIA attributes when contentId and toggleId are passed', () =
|
|
|
129
129
|
expect(wrapper).toContainHTML('aria-labelledby="toggle-id"');
|
|
130
130
|
expect(wrapper).toContainHTML('aria-controls="content-id"');
|
|
131
131
|
});
|
|
132
|
+
|
|
133
|
+
test(`Does not render with classes ${styles.modifiers.expandTop} nor ${styles.modifiers.expandBottom} by default`, () => {
|
|
134
|
+
render(<ExpandableSection>Test content</ExpandableSection>);
|
|
135
|
+
|
|
136
|
+
expect(screen.getByText('Test content').parentElement).not.toHaveClass('pf-m-expand-top');
|
|
137
|
+
expect(screen.getByText('Test content').parentElement).not.toHaveClass('pf-m-expand-bottom');
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
test(`Does not render with classes ${styles.modifiers.expandTop} nor ${styles.modifiers.expandBottom} when only isDetached is true`, () => {
|
|
141
|
+
render(<ExpandableSection isDetached>Test content</ExpandableSection>);
|
|
142
|
+
|
|
143
|
+
expect(screen.getByText('Test content').parentElement).not.toHaveClass('pf-m-expand-top');
|
|
144
|
+
expect(screen.getByText('Test content').parentElement).not.toHaveClass('pf-m-expand-bottom');
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
test(`Does not render with class ${styles.modifiers.expandTop} when direction="up" and isDetached is false`, () => {
|
|
148
|
+
render(<ExpandableSection direction="up">Test content</ExpandableSection>);
|
|
149
|
+
|
|
150
|
+
expect(screen.getByText('Test content').parentElement).not.toHaveClass('pf-m-expand-top');
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
test(`Does not render with class ${styles.modifiers.expandBottom} when direction="down" and isDetached is false`, () => {
|
|
154
|
+
render(<ExpandableSection direction="down">Test content</ExpandableSection>);
|
|
155
|
+
|
|
156
|
+
expect(screen.getByText('Test content').parentElement).not.toHaveClass('pf-m-expand-bottom');
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
test(`Renders with class ${styles.modifiers.expandTop} when isDetached is true and direction="up"`, () => {
|
|
160
|
+
render(
|
|
161
|
+
<ExpandableSection isDetached direction="up">
|
|
162
|
+
Test content
|
|
163
|
+
</ExpandableSection>
|
|
164
|
+
);
|
|
165
|
+
|
|
166
|
+
expect(screen.getByText('Test content').parentElement).toHaveClass('pf-m-expand-top');
|
|
167
|
+
});
|
|
168
|
+
|
|
169
|
+
test(`Renders with class ${styles.modifiers.expandBottom} when isDetached is true and direction="down"`, () => {
|
|
170
|
+
render(
|
|
171
|
+
<ExpandableSection isDetached direction="down">
|
|
172
|
+
Test content
|
|
173
|
+
</ExpandableSection>
|
|
174
|
+
);
|
|
175
|
+
|
|
176
|
+
expect(screen.getByText('Test content').parentElement).toHaveClass('pf-m-expand-bottom');
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
test('Does not render with class pf-m-detached when isDetached is true and direction is not passed', () => {
|
|
180
|
+
render(<ExpandableSection isDetached>Test content</ExpandableSection>);
|
|
181
|
+
|
|
182
|
+
expect(screen.getByText('Test content').parentElement).not.toHaveClass('pf-m-detached');
|
|
183
|
+
});
|
|
184
|
+
|
|
185
|
+
test('Renders with class pf-m-detached when isDetached is true and direction is passed', () => {
|
|
186
|
+
render(
|
|
187
|
+
<ExpandableSection isDetached direction="up">
|
|
188
|
+
Test content
|
|
189
|
+
</ExpandableSection>
|
|
190
|
+
);
|
|
191
|
+
|
|
192
|
+
expect(screen.getByText('Test content').parentElement).toHaveClass('pf-m-detached');
|
|
193
|
+
});
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { render, screen } from '@testing-library/react';
|
|
2
|
+
import userEvent from '@testing-library/user-event';
|
|
3
|
+
import { ExpandableSectionToggle } from '../ExpandableSectionToggle';
|
|
4
|
+
import styles from '@patternfly/react-styles/css/components/ExpandableSection/expandable-section';
|
|
5
|
+
|
|
6
|
+
test('Renders without children', () => {
|
|
7
|
+
render(<ExpandableSectionToggle></ExpandableSectionToggle>);
|
|
8
|
+
|
|
9
|
+
expect(screen.getByRole('button')).toBeInTheDocument();
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
test('Renders with children', () => {
|
|
13
|
+
render(<ExpandableSectionToggle>Toggle test</ExpandableSectionToggle>);
|
|
14
|
+
|
|
15
|
+
expect(screen.getByRole('button')).toHaveTextContent('Toggle test');
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
test('Does not render with class pf-m-detached by default', () => {
|
|
19
|
+
render(<ExpandableSectionToggle data-testid="test-id">Toggle test</ExpandableSectionToggle>);
|
|
20
|
+
|
|
21
|
+
expect(screen.getByTestId('test-id')).not.toHaveClass('pf-m-detached');
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
test('Renders with class pf-m-detached when isDetached is true', () => {
|
|
25
|
+
render(
|
|
26
|
+
<ExpandableSectionToggle data-testid="test-id" isDetached>
|
|
27
|
+
Toggle test
|
|
28
|
+
</ExpandableSectionToggle>
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
expect(screen.getByTestId('test-id')).toHaveClass('pf-m-detached');
|
|
32
|
+
});
|
package/src/components/ExpandableSection/__tests__/__snapshots__/ExpandableSection.test.tsx.snap
CHANGED
|
@@ -1,67 +1,5 @@
|
|
|
1
1
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
2
|
|
|
3
|
-
exports[`Detached ExpandableSection renders successfully 1`] = `
|
|
4
|
-
<DocumentFragment>
|
|
5
|
-
<div
|
|
6
|
-
class="pf-v6-c-expandable-section pf-m-expanded"
|
|
7
|
-
>
|
|
8
|
-
<div
|
|
9
|
-
aria-labelledby="toggle-id"
|
|
10
|
-
class="pf-v6-c-expandable-section__content"
|
|
11
|
-
id="content-id"
|
|
12
|
-
role="region"
|
|
13
|
-
>
|
|
14
|
-
test
|
|
15
|
-
</div>
|
|
16
|
-
</div>
|
|
17
|
-
<div
|
|
18
|
-
class="pf-v6-c-expandable-section pf-m-expanded"
|
|
19
|
-
>
|
|
20
|
-
<div
|
|
21
|
-
class="pf-v6-c-expandable-section__toggle"
|
|
22
|
-
>
|
|
23
|
-
<button
|
|
24
|
-
aria-controls="content-id"
|
|
25
|
-
aria-expanded="true"
|
|
26
|
-
class="pf-v6-c-button pf-m-link"
|
|
27
|
-
data-ouia-component-id="OUIA-Generated-Button-link-5"
|
|
28
|
-
data-ouia-component-type="PF6/Button"
|
|
29
|
-
data-ouia-safe="true"
|
|
30
|
-
id="toggle-id"
|
|
31
|
-
type="button"
|
|
32
|
-
>
|
|
33
|
-
<span
|
|
34
|
-
class="pf-v6-c-button__icon pf-m-start"
|
|
35
|
-
>
|
|
36
|
-
<span
|
|
37
|
-
class="pf-v6-c-expandable-section__toggle-icon pf-m-expand-top"
|
|
38
|
-
>
|
|
39
|
-
<svg
|
|
40
|
-
aria-hidden="true"
|
|
41
|
-
class="pf-v6-svg"
|
|
42
|
-
fill="currentColor"
|
|
43
|
-
height="1em"
|
|
44
|
-
role="img"
|
|
45
|
-
viewBox="0 0 256 512"
|
|
46
|
-
width="1em"
|
|
47
|
-
>
|
|
48
|
-
<path
|
|
49
|
-
d="M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z"
|
|
50
|
-
/>
|
|
51
|
-
</svg>
|
|
52
|
-
</span>
|
|
53
|
-
</span>
|
|
54
|
-
<span
|
|
55
|
-
class="pf-v6-c-button__text"
|
|
56
|
-
>
|
|
57
|
-
Toggle text
|
|
58
|
-
</span>
|
|
59
|
-
</button>
|
|
60
|
-
</div>
|
|
61
|
-
</div>
|
|
62
|
-
</DocumentFragment>
|
|
63
|
-
`;
|
|
64
|
-
|
|
65
3
|
exports[`Disclosure ExpandableSection 1`] = `
|
|
66
4
|
<DocumentFragment>
|
|
67
5
|
<div
|
|
@@ -285,7 +223,7 @@ exports[`Renders Uncontrolled ExpandableSection 1`] = `
|
|
|
285
223
|
<button
|
|
286
224
|
aria-controls="content-id"
|
|
287
225
|
class="pf-v6-c-button pf-m-link"
|
|
288
|
-
data-ouia-component-id="OUIA-Generated-Button-link-
|
|
226
|
+
data-ouia-component-id="OUIA-Generated-Button-link-5"
|
|
289
227
|
data-ouia-component-type="PF6/Button"
|
|
290
228
|
data-ouia-safe="true"
|
|
291
229
|
id="toggle-id"
|
|
@@ -32,6 +32,8 @@ import CheckCircleIcon from '@patternfly/react-icons/dist/esm/icons/check-circle
|
|
|
32
32
|
|
|
33
33
|
When passing the `isDetached` property into `<ExpandableSection>`, you must also manually pass in the same `toggleId` and `contentId` properties to both `<ExpandableSection>` and `<ExpandableSectionToggle>`. This will link the content to the toggle via ARIA attributes.
|
|
34
34
|
|
|
35
|
+
By default animations will not be enabled for a detached `<ExpandableSection>`. You must manually pass the `direction` property with an appropriate value based on where the expandable content is rendered. If the expandable content is above the expandable toggle, `direction="up"` must be passed like in this example.
|
|
36
|
+
|
|
35
37
|
```ts file="ExpandableSectionDetached.tsx"
|
|
36
38
|
|
|
37
39
|
```
|
|
@@ -13,7 +13,7 @@ export const ExpandableSectionDetached: React.FunctionComponent = () => {
|
|
|
13
13
|
return (
|
|
14
14
|
<Stack hasGutter>
|
|
15
15
|
<StackItem>
|
|
16
|
-
<ExpandableSection isExpanded={isExpanded} isDetached toggleId={toggleId} contentId={contentId}>
|
|
16
|
+
<ExpandableSection isExpanded={isExpanded} isDetached direction="up" toggleId={toggleId} contentId={contentId}>
|
|
17
17
|
This content is visible only when the component is expanded.
|
|
18
18
|
</ExpandableSection>
|
|
19
19
|
</StackItem>
|
|
@@ -12,6 +12,11 @@ export interface FormFieldGroupExpandableProps extends Omit<React.HTMLProps<HTML
|
|
|
12
12
|
isExpanded?: boolean;
|
|
13
13
|
/** Aria-label to use on the form field group toggle button */
|
|
14
14
|
toggleAriaLabel?: string;
|
|
15
|
+
/** Flag indicating whether an expandable form field group has animations. This will always render
|
|
16
|
+
* nested field group content rather than dynamically rendering them. This prop will be removed in
|
|
17
|
+
* the next breaking change release in favor of defaulting to always-rendered items.
|
|
18
|
+
*/
|
|
19
|
+
hasAnimations?: boolean;
|
|
15
20
|
}
|
|
16
21
|
|
|
17
22
|
export const FormFieldGroupExpandable: React.FunctionComponent<FormFieldGroupExpandableProps> = ({
|
|
@@ -20,6 +25,7 @@ export const FormFieldGroupExpandable: React.FunctionComponent<FormFieldGroupExp
|
|
|
20
25
|
header,
|
|
21
26
|
isExpanded = false,
|
|
22
27
|
toggleAriaLabel,
|
|
28
|
+
hasAnimations,
|
|
23
29
|
...props
|
|
24
30
|
}: FormFieldGroupExpandableProps) => {
|
|
25
31
|
const [localIsExpanded, setIsExpanded] = useState(isExpanded);
|
|
@@ -32,6 +38,7 @@ export const FormFieldGroupExpandable: React.FunctionComponent<FormFieldGroupExp
|
|
|
32
38
|
isExpanded={localIsExpanded}
|
|
33
39
|
toggleAriaLabel={toggleAriaLabel}
|
|
34
40
|
onToggle={() => setIsExpanded(!localIsExpanded)}
|
|
41
|
+
hasAnimations={hasAnimations}
|
|
35
42
|
{...props}
|
|
36
43
|
>
|
|
37
44
|
{children}
|
|
@@ -18,6 +18,11 @@ export interface InternalFormFieldGroupProps extends Omit<React.HTMLProps<HTMLDi
|
|
|
18
18
|
onToggle?: () => void;
|
|
19
19
|
/** Aria-label to use on the form field group toggle button */
|
|
20
20
|
toggleAriaLabel?: string;
|
|
21
|
+
/** Flag indicating whether an expandable form field group has animations. This will always render
|
|
22
|
+
* nested field group content rather than dynamically rendering them. This prop will be removed in
|
|
23
|
+
* the next breaking change release in favor of defaulting to always-rendered items.
|
|
24
|
+
*/
|
|
25
|
+
hasAnimations?: boolean;
|
|
21
26
|
}
|
|
22
27
|
|
|
23
28
|
export const InternalFormFieldGroup: React.FunctionComponent<InternalFormFieldGroupProps> = ({
|
|
@@ -28,6 +33,7 @@ export const InternalFormFieldGroup: React.FunctionComponent<InternalFormFieldGr
|
|
|
28
33
|
isExpanded,
|
|
29
34
|
onToggle,
|
|
30
35
|
toggleAriaLabel,
|
|
36
|
+
hasAnimations,
|
|
31
37
|
...props
|
|
32
38
|
}: InternalFormFieldGroupProps) => {
|
|
33
39
|
const headerTitleText = header ? header.props.titleText : null;
|
|
@@ -40,7 +46,12 @@ export const InternalFormFieldGroup: React.FunctionComponent<InternalFormFieldGr
|
|
|
40
46
|
}
|
|
41
47
|
return (
|
|
42
48
|
<div
|
|
43
|
-
className={css(
|
|
49
|
+
className={css(
|
|
50
|
+
styles.formFieldGroup,
|
|
51
|
+
isExpanded && isExpandable && styles.modifiers.expanded,
|
|
52
|
+
hasAnimations && isExpandable && styles.modifiers.expandable,
|
|
53
|
+
className
|
|
54
|
+
)}
|
|
44
55
|
role="group"
|
|
45
56
|
{...(headerTitleText && { 'aria-labelledby': `${header.props.titleText.id}` })}
|
|
46
57
|
{...props}
|
|
@@ -59,8 +70,13 @@ export const InternalFormFieldGroup: React.FunctionComponent<InternalFormFieldGr
|
|
|
59
70
|
</GenerateId>
|
|
60
71
|
)}
|
|
61
72
|
{header && header}
|
|
62
|
-
{(!isExpandable || (isExpandable && isExpanded)) && (
|
|
63
|
-
<div
|
|
73
|
+
{(!isExpandable || (isExpandable && isExpanded) || (hasAnimations && isExpandable)) && (
|
|
74
|
+
<div
|
|
75
|
+
className={css(styles.formFieldGroupBody)}
|
|
76
|
+
{...(hasAnimations && isExpandable && !isExpanded && { inert: '' })}
|
|
77
|
+
>
|
|
78
|
+
{children}
|
|
79
|
+
</div>
|
|
64
80
|
)}
|
|
65
81
|
</div>
|
|
66
82
|
);
|