@patternfly/react-core 6.3.1-prerelease.9 → 6.4.0-prerelease.1
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 +82 -0
- 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/AnimationsProvider/AnimationsProvider/package.json +1 -0
- package/dist/dynamic/helpers/AnimationsProvider/package.json +1 -0
- 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 +6 -0
- package/dist/esm/components/Alert/AlertGroup.d.ts +2 -13
- package/dist/esm/components/Alert/AlertGroup.d.ts.map +1 -1
- package/dist/esm/components/Alert/AlertGroup.js +33 -38
- package/dist/esm/components/Alert/AlertGroup.js.map +1 -1
- package/dist/esm/components/Alert/AlertGroupInline.d.ts.map +1 -1
- package/dist/esm/components/Alert/AlertGroupInline.js +3 -1
- package/dist/esm/components/Alert/AlertGroupInline.js.map +1 -1
- package/dist/esm/components/DataList/DataListItem.d.ts.map +1 -1
- package/dist/esm/components/DataList/DataListItem.js +8 -0
- package/dist/esm/components/DataList/DataListItem.js.map +1 -1
- package/dist/esm/components/Dropdown/Dropdown.d.ts +6 -20
- package/dist/esm/components/Dropdown/Dropdown.d.ts.map +1 -1
- package/dist/esm/components/Dropdown/Dropdown.js.map +1 -1
- package/dist/esm/components/DualListSelector/DualListSelector.d.ts +2 -9
- package/dist/esm/components/DualListSelector/DualListSelector.d.ts.map +1 -1
- package/dist/esm/components/DualListSelector/DualListSelector.js +6 -16
- package/dist/esm/components/DualListSelector/DualListSelector.js.map +1 -1
- package/dist/esm/components/DualListSelector/DualListSelectorTreeItem.d.ts.map +1 -1
- package/dist/esm/components/DualListSelector/DualListSelectorTreeItem.js +3 -1
- package/dist/esm/components/DualListSelector/DualListSelectorTreeItem.js.map +1 -1
- package/dist/esm/components/Form/FormFieldGroupExpandable.d.ts.map +1 -1
- package/dist/esm/components/Form/FormFieldGroupExpandable.js +3 -1
- package/dist/esm/components/Form/FormFieldGroupExpandable.js.map +1 -1
- package/dist/esm/components/Form/InternalFormFieldGroup.d.ts.map +1 -1
- package/dist/esm/components/Form/InternalFormFieldGroup.js +3 -1
- package/dist/esm/components/Form/InternalFormFieldGroup.js.map +1 -1
- package/dist/esm/components/Menu/Menu.d.ts +2 -1
- package/dist/esm/components/Menu/Menu.d.ts.map +1 -1
- package/dist/esm/components/Menu/Menu.js +0 -1
- package/dist/esm/components/Menu/Menu.js.map +1 -1
- package/dist/esm/components/Menu/MenuContainer.d.ts +4 -17
- package/dist/esm/components/Menu/MenuContainer.d.ts.map +1 -1
- package/dist/esm/components/Menu/MenuContainer.js.map +1 -1
- package/dist/esm/components/Menu/MenuGroup.d.ts.map +1 -1
- package/dist/esm/components/Menu/MenuGroup.js +3 -2
- package/dist/esm/components/Menu/MenuGroup.js.map +1 -1
- package/dist/esm/components/Menu/MenuItem.js +3 -2
- package/dist/esm/components/Menu/MenuItem.js.map +1 -1
- package/dist/esm/components/Menu/MenuItemAction.d.ts.map +1 -1
- package/dist/esm/components/Menu/MenuItemAction.js +1 -2
- package/dist/esm/components/Menu/MenuItemAction.js.map +1 -1
- package/dist/esm/components/MultipleFileUpload/MultipleFileUploadStatusItem.d.ts +2 -0
- package/dist/esm/components/MultipleFileUpload/MultipleFileUploadStatusItem.d.ts.map +1 -1
- package/dist/esm/components/MultipleFileUpload/MultipleFileUploadStatusItem.js +2 -2
- package/dist/esm/components/MultipleFileUpload/MultipleFileUploadStatusItem.js.map +1 -1
- package/dist/esm/components/Progress/Progress.d.ts +2 -0
- package/dist/esm/components/Progress/Progress.d.ts.map +1 -1
- package/dist/esm/components/Progress/Progress.js +6 -2
- package/dist/esm/components/Progress/Progress.js.map +1 -1
- package/dist/esm/components/Progress/ProgressBar.d.ts +1 -0
- package/dist/esm/components/Progress/ProgressBar.d.ts.map +1 -1
- package/dist/esm/components/Progress/ProgressBar.js +1 -1
- package/dist/esm/components/Progress/ProgressBar.js.map +1 -1
- package/dist/esm/components/Progress/ProgressContainer.js +1 -1
- package/dist/esm/components/Progress/ProgressContainer.js.map +1 -1
- package/dist/esm/components/SearchInput/SearchInput.d.ts.map +1 -1
- package/dist/esm/components/SearchInput/SearchInput.js +3 -1
- package/dist/esm/components/SearchInput/SearchInput.js.map +1 -1
- package/dist/esm/components/Select/Select.d.ts +6 -26
- package/dist/esm/components/Select/Select.d.ts.map +1 -1
- package/dist/esm/components/Select/Select.js.map +1 -1
- package/dist/esm/components/Tabs/OverflowTab.d.ts +4 -25
- package/dist/esm/components/Tabs/OverflowTab.d.ts.map +1 -1
- package/dist/esm/components/Tabs/OverflowTab.js.map +1 -1
- package/dist/esm/components/Tabs/Tabs.d.ts +2 -2
- package/dist/esm/components/Tabs/Tabs.d.ts.map +1 -1
- package/dist/esm/components/Tabs/Tabs.js +1 -1
- package/dist/esm/components/Tabs/Tabs.js.map +1 -1
- package/dist/esm/components/TreeView/TreeView.d.ts.map +1 -1
- package/dist/esm/components/TreeView/TreeView.js +3 -1
- package/dist/esm/components/TreeView/TreeView.js.map +1 -1
- package/dist/esm/components/TreeView/TreeViewListItem.d.ts.map +1 -1
- package/dist/esm/components/TreeView/TreeViewListItem.js +3 -1
- package/dist/esm/components/TreeView/TreeViewListItem.js.map +1 -1
- package/dist/esm/components/Truncate/Truncate.d.ts.map +1 -1
- package/dist/esm/components/Truncate/Truncate.js +3 -2
- package/dist/esm/components/Truncate/Truncate.js.map +1 -1
- package/dist/esm/helpers/AnimationsProvider/AnimationsProvider.d.ts +76 -0
- package/dist/esm/helpers/AnimationsProvider/AnimationsProvider.d.ts.map +1 -0
- package/dist/esm/helpers/AnimationsProvider/AnimationsProvider.js +83 -0
- package/dist/esm/helpers/AnimationsProvider/AnimationsProvider.js.map +1 -0
- package/dist/esm/helpers/AnimationsProvider/index.d.ts +2 -0
- package/dist/esm/helpers/AnimationsProvider/index.d.ts.map +1 -0
- package/dist/esm/helpers/AnimationsProvider/index.js +2 -0
- package/dist/esm/helpers/AnimationsProvider/index.js.map +1 -0
- package/dist/esm/helpers/Popper/Popper.d.ts +28 -21
- package/dist/esm/helpers/Popper/Popper.d.ts.map +1 -1
- package/dist/esm/helpers/Popper/Popper.js +2 -2
- package/dist/esm/helpers/Popper/Popper.js.map +1 -1
- package/dist/esm/helpers/index.d.ts +1 -0
- package/dist/esm/helpers/index.d.ts.map +1 -1
- package/dist/esm/helpers/index.js +1 -0
- package/dist/esm/helpers/index.js.map +1 -1
- package/dist/js/components/Alert/AlertGroup.d.ts +2 -13
- package/dist/js/components/Alert/AlertGroup.d.ts.map +1 -1
- package/dist/js/components/Alert/AlertGroup.js +33 -37
- package/dist/js/components/Alert/AlertGroup.js.map +1 -1
- package/dist/js/components/Alert/AlertGroupInline.d.ts.map +1 -1
- package/dist/js/components/Alert/AlertGroupInline.js +3 -1
- package/dist/js/components/Alert/AlertGroupInline.js.map +1 -1
- package/dist/js/components/DataList/DataListItem.d.ts.map +1 -1
- package/dist/js/components/DataList/DataListItem.js +8 -0
- package/dist/js/components/DataList/DataListItem.js.map +1 -1
- package/dist/js/components/Dropdown/Dropdown.d.ts +6 -20
- package/dist/js/components/Dropdown/Dropdown.d.ts.map +1 -1
- package/dist/js/components/Dropdown/Dropdown.js.map +1 -1
- package/dist/js/components/DualListSelector/DualListSelector.d.ts +2 -9
- package/dist/js/components/DualListSelector/DualListSelector.d.ts.map +1 -1
- package/dist/js/components/DualListSelector/DualListSelector.js +7 -16
- package/dist/js/components/DualListSelector/DualListSelector.js.map +1 -1
- package/dist/js/components/DualListSelector/DualListSelectorTreeItem.d.ts.map +1 -1
- package/dist/js/components/DualListSelector/DualListSelectorTreeItem.js +3 -1
- package/dist/js/components/DualListSelector/DualListSelectorTreeItem.js.map +1 -1
- package/dist/js/components/Form/FormFieldGroupExpandable.d.ts.map +1 -1
- package/dist/js/components/Form/FormFieldGroupExpandable.js +3 -1
- package/dist/js/components/Form/FormFieldGroupExpandable.js.map +1 -1
- package/dist/js/components/Form/InternalFormFieldGroup.d.ts.map +1 -1
- package/dist/js/components/Form/InternalFormFieldGroup.js +3 -1
- package/dist/js/components/Form/InternalFormFieldGroup.js.map +1 -1
- package/dist/js/components/Menu/Menu.d.ts +2 -1
- package/dist/js/components/Menu/Menu.d.ts.map +1 -1
- package/dist/js/components/Menu/Menu.js +0 -1
- package/dist/js/components/Menu/Menu.js.map +1 -1
- package/dist/js/components/Menu/MenuContainer.d.ts +4 -17
- package/dist/js/components/Menu/MenuContainer.d.ts.map +1 -1
- package/dist/js/components/Menu/MenuContainer.js.map +1 -1
- package/dist/js/components/Menu/MenuGroup.d.ts.map +1 -1
- package/dist/js/components/Menu/MenuGroup.js +3 -2
- package/dist/js/components/Menu/MenuGroup.js.map +1 -1
- package/dist/js/components/Menu/MenuItem.js +3 -2
- package/dist/js/components/Menu/MenuItem.js.map +1 -1
- package/dist/js/components/Menu/MenuItemAction.d.ts.map +1 -1
- package/dist/js/components/Menu/MenuItemAction.js +1 -2
- package/dist/js/components/Menu/MenuItemAction.js.map +1 -1
- package/dist/js/components/MultipleFileUpload/MultipleFileUploadStatusItem.d.ts +2 -0
- package/dist/js/components/MultipleFileUpload/MultipleFileUploadStatusItem.d.ts.map +1 -1
- package/dist/js/components/MultipleFileUpload/MultipleFileUploadStatusItem.js +2 -2
- package/dist/js/components/MultipleFileUpload/MultipleFileUploadStatusItem.js.map +1 -1
- package/dist/js/components/Progress/Progress.d.ts +2 -0
- package/dist/js/components/Progress/Progress.d.ts.map +1 -1
- package/dist/js/components/Progress/Progress.js +6 -2
- package/dist/js/components/Progress/Progress.js.map +1 -1
- package/dist/js/components/Progress/ProgressBar.d.ts +1 -0
- package/dist/js/components/Progress/ProgressBar.d.ts.map +1 -1
- package/dist/js/components/Progress/ProgressBar.js +1 -1
- package/dist/js/components/Progress/ProgressBar.js.map +1 -1
- package/dist/js/components/Progress/ProgressContainer.js +1 -1
- package/dist/js/components/Progress/ProgressContainer.js.map +1 -1
- package/dist/js/components/SearchInput/SearchInput.d.ts.map +1 -1
- package/dist/js/components/SearchInput/SearchInput.js +3 -1
- package/dist/js/components/SearchInput/SearchInput.js.map +1 -1
- package/dist/js/components/Select/Select.d.ts +6 -26
- package/dist/js/components/Select/Select.d.ts.map +1 -1
- package/dist/js/components/Select/Select.js.map +1 -1
- package/dist/js/components/Tabs/OverflowTab.d.ts +4 -25
- package/dist/js/components/Tabs/OverflowTab.d.ts.map +1 -1
- package/dist/js/components/Tabs/OverflowTab.js.map +1 -1
- package/dist/js/components/Tabs/Tabs.d.ts +2 -2
- package/dist/js/components/Tabs/Tabs.d.ts.map +1 -1
- package/dist/js/components/Tabs/Tabs.js +1 -1
- package/dist/js/components/Tabs/Tabs.js.map +1 -1
- package/dist/js/components/TreeView/TreeView.d.ts.map +1 -1
- package/dist/js/components/TreeView/TreeView.js +3 -1
- package/dist/js/components/TreeView/TreeView.js.map +1 -1
- package/dist/js/components/TreeView/TreeViewListItem.d.ts.map +1 -1
- package/dist/js/components/TreeView/TreeViewListItem.js +3 -1
- package/dist/js/components/TreeView/TreeViewListItem.js.map +1 -1
- package/dist/js/components/Truncate/Truncate.d.ts.map +1 -1
- package/dist/js/components/Truncate/Truncate.js +2 -1
- package/dist/js/components/Truncate/Truncate.js.map +1 -1
- package/dist/js/helpers/AnimationsProvider/AnimationsProvider.d.ts +76 -0
- package/dist/js/helpers/AnimationsProvider/AnimationsProvider.d.ts.map +1 -0
- package/dist/js/helpers/AnimationsProvider/AnimationsProvider.js +89 -0
- package/dist/js/helpers/AnimationsProvider/AnimationsProvider.js.map +1 -0
- package/dist/js/helpers/AnimationsProvider/index.d.ts +2 -0
- package/dist/js/helpers/AnimationsProvider/index.d.ts.map +1 -0
- package/dist/js/helpers/AnimationsProvider/index.js +5 -0
- package/dist/js/helpers/AnimationsProvider/index.js.map +1 -0
- package/dist/js/helpers/Popper/Popper.d.ts +28 -21
- package/dist/js/helpers/Popper/Popper.d.ts.map +1 -1
- package/dist/js/helpers/Popper/Popper.js +2 -2
- package/dist/js/helpers/Popper/Popper.js.map +1 -1
- package/dist/js/helpers/index.d.ts +1 -0
- package/dist/js/helpers/index.d.ts.map +1 -1
- package/dist/js/helpers/index.js +1 -0
- package/dist/js/helpers/index.js.map +1 -1
- package/dist/styles/base-no-reset.css +8 -45
- package/dist/styles/base.css +8 -45
- package/dist/umd/assets/{output-D8x_lwPB.css → output-NiN4FQqb.css} +20230 -20103
- 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/AlertGroup.tsx +59 -63
- package/src/components/Alert/AlertGroupInline.tsx +3 -1
- package/src/components/Alert/__tests__/AlertGroup.test.tsx +55 -4
- package/src/components/DataList/DataListItem.tsx +12 -0
- package/src/components/Dropdown/Dropdown.tsx +6 -21
- package/src/components/Dropdown/examples/Dropdown.md +2 -2
- package/src/components/DualListSelector/DualListSelector.tsx +32 -39
- package/src/components/DualListSelector/DualListSelectorTreeItem.tsx +3 -1
- package/src/components/DualListSelector/__tests__/DualListSelector.test.tsx +28 -0
- package/src/components/Form/FormFieldGroupExpandable.tsx +3 -1
- package/src/components/Form/InternalFormFieldGroup.tsx +3 -1
- package/src/components/Form/__tests__/FormFieldGroupExpandable.test.tsx +30 -0
- package/src/components/Menu/Menu.tsx +2 -2
- package/src/components/Menu/MenuContainer.tsx +4 -17
- package/src/components/Menu/MenuGroup.tsx +13 -7
- package/src/components/Menu/MenuItem.tsx +2 -2
- package/src/components/Menu/MenuItemAction.tsx +3 -2
- package/src/components/Menu/__tests__/Menu.test.tsx +39 -1
- package/src/components/Menu/examples/Menu.md +3 -3
- package/src/components/MultipleFileUpload/MultipleFileUploadStatusItem.tsx +4 -0
- package/src/components/MultipleFileUpload/examples/MultipleFileUploadBasic.tsx +5 -4
- package/src/components/Progress/Progress.tsx +9 -1
- package/src/components/Progress/ProgressBar.tsx +2 -1
- package/src/components/Progress/ProgressContainer.tsx +1 -1
- package/src/components/Progress/__tests__/Generated/__snapshots__/ProgressBar.test.tsx.snap +1 -0
- package/src/components/Progress/__tests__/ProgressBar.test.tsx +19 -0
- package/src/components/Progress/examples/Progress.md +67 -23
- package/src/components/Progress/examples/ProgressHelperText.tsx +8 -2
- package/src/components/SearchInput/SearchInput.tsx +3 -1
- package/src/components/SearchInput/__tests__/SearchInput.test.tsx +52 -0
- package/src/components/Select/Select.tsx +6 -27
- package/src/components/Select/examples/Select.md +1 -1
- package/src/components/Tabs/OverflowTab.tsx +4 -26
- package/src/components/Tabs/Tabs.tsx +7 -3
- package/src/components/Tabs/__tests__/Tabs.test.tsx +12 -0
- package/src/components/Tabs/examples/Tabs.md +27 -27
- package/src/components/TreeView/TreeView.tsx +3 -1
- package/src/components/TreeView/TreeViewListItem.tsx +3 -1
- package/src/components/TreeView/__tests__/TreeView.test.tsx +28 -0
- package/src/components/TreeView/__tests__/__snapshots__/TreeView.test.tsx.snap +1 -1
- package/src/components/Truncate/Truncate.tsx +3 -1
- package/src/components/Truncate/examples/TruncateExamples.css +2 -2
- package/src/helpers/AnimationsProvider/AnimationsProvider.tsx +104 -0
- package/src/helpers/AnimationsProvider/__tests__/AnimationsProvider.test.tsx +157 -0
- package/src/helpers/AnimationsProvider/index.ts +1 -0
- package/src/helpers/Popper/Popper.tsx +31 -22
- package/src/helpers/index.ts +1 -0
|
@@ -4,6 +4,7 @@ import breadcrumbStyles from '@patternfly/react-styles/css/components/Breadcrumb
|
|
|
4
4
|
import { css } from '@patternfly/react-styles';
|
|
5
5
|
import { getOUIAProps, OUIAProps, getDefaultOUIAId } from '../../helpers';
|
|
6
6
|
import { MenuContext } from './MenuContext';
|
|
7
|
+
import type { MenuItemProps } from './MenuItem';
|
|
7
8
|
import { canUseDOM } from '../../helpers/util';
|
|
8
9
|
import { KeyboardHandler } from '../../helpers';
|
|
9
10
|
export interface MenuProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'ref' | 'onSelect'>, OUIAProps {
|
|
@@ -14,7 +15,7 @@ export interface MenuProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'r
|
|
|
14
15
|
/** ID of the menu */
|
|
15
16
|
id?: string;
|
|
16
17
|
/** Callback for updating when item selection changes. You can also specify onClick on the MenuItem. */
|
|
17
|
-
onSelect?: (event?: React.MouseEvent, itemId?:
|
|
18
|
+
onSelect?: (event?: React.MouseEvent, itemId?: MenuItemProps['itemId']) => void;
|
|
18
19
|
/** Single itemId for single select menus, or array of itemIds for multi select. You can also specify isSelected on the MenuItem. */
|
|
19
20
|
selected?: any | any[];
|
|
20
21
|
/** Callback called when an MenuItems's action button is clicked. You can also specify it within a MenuItemAction. */
|
|
@@ -183,7 +184,6 @@ class MenuBase extends Component<MenuProps, MenuState> {
|
|
|
183
184
|
!(event.target as HTMLElement).classList.contains(breadcrumbStyles.breadcrumbLink)
|
|
184
185
|
) {
|
|
185
186
|
this.activeMenu = (event.target as HTMLElement).closest(`.${styles.menu}`);
|
|
186
|
-
this.setState({ disableHover: true });
|
|
187
187
|
}
|
|
188
188
|
|
|
189
189
|
if ((event.target as HTMLElement).tagName === 'INPUT') {
|
|
@@ -1,22 +1,9 @@
|
|
|
1
1
|
import { useEffect, useRef } from 'react';
|
|
2
2
|
import { onToggleArrowKeydownDefault, Popper } from '../../helpers';
|
|
3
|
+
import type { PopperOptions } from '../../helpers/Popper/Popper';
|
|
3
4
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
direction?: 'up' | 'down';
|
|
7
|
-
/** Horizontal position of the popper */
|
|
8
|
-
position?: 'right' | 'left' | 'center' | 'start' | 'end';
|
|
9
|
-
/** Custom width of the popper. If the value is "trigger", it will set the width to the dropdown toggle's width */
|
|
10
|
-
width?: string | 'trigger';
|
|
11
|
-
/** Minimum width of the popper. If the value is "trigger", it will set the min width to the dropdown toggle's width */
|
|
12
|
-
minWidth?: string | 'trigger';
|
|
13
|
-
/** Maximum width of the popper. If the value is "trigger", it will set the max width to the dropdown toggle's width */
|
|
14
|
-
maxWidth?: string | 'trigger';
|
|
15
|
-
/** Enable to flip the popper when it reaches the boundary */
|
|
16
|
-
enableFlip?: boolean;
|
|
17
|
-
/** Flag to prevent the popper from overflowing its container and becoming partially obscured. */
|
|
18
|
-
preventOverflow?: boolean;
|
|
19
|
-
}
|
|
5
|
+
/** @deprecated Use PopperOptions instead */
|
|
6
|
+
export type MenuPopperProps = PopperOptions;
|
|
20
7
|
|
|
21
8
|
export interface MenuContainerProps {
|
|
22
9
|
/** Menu to be rendered */
|
|
@@ -39,7 +26,7 @@ export interface MenuContainerProps {
|
|
|
39
26
|
/** z-index of the dropdown menu */
|
|
40
27
|
zIndex?: number;
|
|
41
28
|
/** Additional properties to pass to the Popper */
|
|
42
|
-
popperProps?:
|
|
29
|
+
popperProps?: PopperOptions;
|
|
43
30
|
/** @beta Flag indicating the first menu item should be focused after opening the dropdown. */
|
|
44
31
|
shouldFocusFirstItemOnOpen?: boolean;
|
|
45
32
|
/** Flag indicating if scroll on focus of the first menu item should occur. */
|
|
@@ -20,22 +20,28 @@ export interface MenuGroupProps extends Omit<React.HTMLProps<HTMLElement>, 'labe
|
|
|
20
20
|
const MenuGroupBase: React.FunctionComponent<MenuGroupProps> = ({
|
|
21
21
|
children,
|
|
22
22
|
className = '',
|
|
23
|
-
label
|
|
23
|
+
label,
|
|
24
24
|
titleId,
|
|
25
25
|
innerRef,
|
|
26
26
|
labelHeadingLevel: HeadingLevel = 'h1',
|
|
27
27
|
...props
|
|
28
28
|
}: MenuGroupProps) => {
|
|
29
29
|
const Wrapper = typeof label === 'function' ? label : HeadingLevel;
|
|
30
|
+
const hasLabel = label !== undefined && label !== null && label !== '';
|
|
31
|
+
|
|
30
32
|
return (
|
|
31
33
|
<section {...props} className={css(styles.menuGroup, className)} ref={innerRef}>
|
|
32
34
|
<>
|
|
33
|
-
{
|
|
34
|
-
|
|
35
|
-
{label
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
35
|
+
{hasLabel && (
|
|
36
|
+
<>
|
|
37
|
+
{['function', 'string'].includes(typeof label) ? (
|
|
38
|
+
<Wrapper className={css(styles.menuGroupTitle)} id={titleId}>
|
|
39
|
+
{label}
|
|
40
|
+
</Wrapper>
|
|
41
|
+
) : (
|
|
42
|
+
label
|
|
43
|
+
)}
|
|
44
|
+
</>
|
|
39
45
|
)}
|
|
40
46
|
{children}
|
|
41
47
|
</>
|
|
@@ -210,10 +210,10 @@ const MenuItemBase: React.FunctionComponent<MenuItemProps> = ({
|
|
|
210
210
|
if (flyoutTarget) {
|
|
211
211
|
if (flyoutVisible) {
|
|
212
212
|
const flyoutMenu = (flyoutTarget as HTMLElement).nextElementSibling;
|
|
213
|
-
const flyoutItems = Array.from(flyoutMenu
|
|
213
|
+
const flyoutItems = Array.from(flyoutMenu?.getElementsByTagName('UL')[0]?.children || []).filter(
|
|
214
214
|
(el) => !(el.classList.contains('pf-m-disabled') || el.classList.contains(styles.divider))
|
|
215
215
|
);
|
|
216
|
-
(flyoutItems[0]
|
|
216
|
+
(flyoutItems[0]?.firstChild as HTMLElement)?.focus();
|
|
217
217
|
} else {
|
|
218
218
|
flyoutTarget.focus();
|
|
219
219
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { forwardRef } from 'react';
|
|
2
2
|
import styles from '@patternfly/react-styles/css/components/Menu/menu';
|
|
3
3
|
import { css } from '@patternfly/react-styles';
|
|
4
|
-
import StarIcon from '@patternfly/react-icons/dist/esm/icons/star-icon';
|
|
5
4
|
import { MenuContext, MenuItemContext } from './MenuContext';
|
|
6
5
|
import { Button } from '../Button';
|
|
7
6
|
export interface MenuItemActionProps extends React.HTMLProps<HTMLDivElement> {
|
|
@@ -60,9 +59,11 @@ const MenuItemActionBase: React.FunctionComponent<MenuItemActionProps> = ({
|
|
|
60
59
|
ref={innerRef}
|
|
61
60
|
role="menuitem"
|
|
62
61
|
variant="plain"
|
|
62
|
+
isFavorite={isFavorited !== null}
|
|
63
|
+
isFavorited={isFavorited ?? false}
|
|
63
64
|
tabIndex={-1}
|
|
64
65
|
isDisabled={isDisabled || isDisabledContext}
|
|
65
|
-
icon={
|
|
66
|
+
icon={isFavorited === null ? icon : undefined}
|
|
66
67
|
/>
|
|
67
68
|
</div>
|
|
68
69
|
);
|
|
@@ -2,7 +2,7 @@ import { render, screen } from '@testing-library/react';
|
|
|
2
2
|
import '@testing-library/jest-dom';
|
|
3
3
|
|
|
4
4
|
import { Menu } from '../Menu';
|
|
5
|
-
import { MenuItem } from '../MenuItem';
|
|
5
|
+
import { MenuItem, MenuItemProps } from '../MenuItem';
|
|
6
6
|
import { MenuList } from '../MenuList';
|
|
7
7
|
import { MenuContent } from '../MenuContent';
|
|
8
8
|
|
|
@@ -16,6 +16,44 @@ describe('Menu', () => {
|
|
|
16
16
|
expect(asFragment()).toMatchSnapshot();
|
|
17
17
|
});
|
|
18
18
|
|
|
19
|
+
test('should accept onSelect with various types', () => {
|
|
20
|
+
const onSelectMock = jest.fn();
|
|
21
|
+
|
|
22
|
+
const items: MenuItemProps[] = [
|
|
23
|
+
{ itemId: 1, children: 'Item 1', key: 'item1' },
|
|
24
|
+
{ itemId: new Date(1), children: 'Item 2', key: 'item2' },
|
|
25
|
+
{ itemId: 'item3', children: 'Item 3', key: 'item3' },
|
|
26
|
+
{ itemId: { some: 'object' }, children: 'Item 4', key: 'item4' },
|
|
27
|
+
{ itemId: NaN, children: 'Item 5', key: 'item5' },
|
|
28
|
+
{ itemId: null, children: 'Item 6', key: 'item6' },
|
|
29
|
+
{ itemId: 0n, children: 'Item 7', key: 'item7' },
|
|
30
|
+
{ itemId: true, children: 'Item 8', key: 'item8' },
|
|
31
|
+
{ itemId: false, children: 'Item 9', key: 'item9' },
|
|
32
|
+
{ itemId: -0, children: 'Item 10', key: 'item10' },
|
|
33
|
+
{ itemId: '', children: 'Item 11', key: 'item11' }
|
|
34
|
+
];
|
|
35
|
+
|
|
36
|
+
render(
|
|
37
|
+
<Menu activeItemId={0} onSelect={onSelectMock}>
|
|
38
|
+
<MenuContent>
|
|
39
|
+
<MenuList>
|
|
40
|
+
{items.map((item) => (
|
|
41
|
+
<MenuItem key={item.key} itemId={item.itemId}>
|
|
42
|
+
{item.children}
|
|
43
|
+
</MenuItem>
|
|
44
|
+
))}
|
|
45
|
+
</MenuList>
|
|
46
|
+
</MenuContent>
|
|
47
|
+
</Menu>
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
for (const item of items) {
|
|
51
|
+
const menuItem = screen.getByText(item.children as string);
|
|
52
|
+
menuItem.click();
|
|
53
|
+
expect(onSelectMock).toHaveBeenCalledWith(expect.anything(), item.itemId);
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
|
|
19
57
|
describe('with isPlain', () => {
|
|
20
58
|
test('should render Menu with plain styles applied', () => {
|
|
21
59
|
render(
|
|
@@ -14,8 +14,8 @@ propComponents:
|
|
|
14
14
|
'MenuSearchInput',
|
|
15
15
|
'MenuGroup',
|
|
16
16
|
'MenuContainer',
|
|
17
|
-
'
|
|
18
|
-
'
|
|
17
|
+
'TooltipProps',
|
|
18
|
+
'PopperOptions'
|
|
19
19
|
]
|
|
20
20
|
ouia: true
|
|
21
21
|
---
|
|
@@ -241,4 +241,4 @@ Router links can be used for in-app linking in React environments to prevent pag
|
|
|
241
241
|
>
|
|
242
242
|
{...Link Content}
|
|
243
243
|
</MenuItem>
|
|
244
|
-
```
|
|
244
|
+
```
|
|
@@ -50,6 +50,8 @@ export interface MultipleFileUploadStatusItemProps extends React.HTMLProps<HTMLL
|
|
|
50
50
|
progressAriaLabel?: string;
|
|
51
51
|
/** Associates the progress bar with it's label for accessibility purposes. Required when title not used */
|
|
52
52
|
progressAriaLabelledBy?: string;
|
|
53
|
+
/** Adds an accessible description to the ProgressBar via space separated list of ids. Required when helperText is passed in. */
|
|
54
|
+
progressAriaDescribedBy?: string;
|
|
53
55
|
/** Modifies the text announced by assistive technologies when the progress bar updates. */
|
|
54
56
|
progressAriaLiveMessage?: string | ((loadPercentage: number) => string);
|
|
55
57
|
/** Unique identifier for progress. Generated if not specified. */
|
|
@@ -74,6 +76,7 @@ export const MultipleFileUploadStatusItem: React.FunctionComponent<MultipleFileU
|
|
|
74
76
|
progressVariant,
|
|
75
77
|
progressAriaLabel,
|
|
76
78
|
progressAriaLabelledBy,
|
|
79
|
+
progressAriaDescribedBy,
|
|
77
80
|
progressId,
|
|
78
81
|
progressAriaLiveMessage,
|
|
79
82
|
buttonAriaLabel = 'Remove from list',
|
|
@@ -161,6 +164,7 @@ export const MultipleFileUploadStatusItem: React.FunctionComponent<MultipleFileU
|
|
|
161
164
|
variant={variant}
|
|
162
165
|
aria-label={progressAriaLabel}
|
|
163
166
|
aria-labelledby={progressAriaLabelledBy}
|
|
167
|
+
aria-describedby={progressAriaDescribedBy}
|
|
164
168
|
id={progressId}
|
|
165
169
|
helperText={progressHelperText}
|
|
166
170
|
/>
|
|
@@ -96,11 +96,11 @@ export const MultipleFileUploadBasic: React.FunctionComponent = () => {
|
|
|
96
96
|
};
|
|
97
97
|
|
|
98
98
|
// add helper text to a status item showing any error encountered during the file reading process
|
|
99
|
-
const createHelperText = (file: File) => {
|
|
99
|
+
const createHelperText = (file: File, fileIndex: number) => {
|
|
100
100
|
const fileResult = readFileData.find((readFile) => readFile.fileName === file.name);
|
|
101
101
|
if (fileResult?.loadError) {
|
|
102
102
|
return (
|
|
103
|
-
<HelperText isLiveRegion>
|
|
103
|
+
<HelperText id={`multiple-file-upload-basic-example-help-text-${fileIndex}`} isLiveRegion>
|
|
104
104
|
<HelperTextItem variant="error">{fileResult.loadError.toString()}</HelperTextItem>
|
|
105
105
|
</HelperText>
|
|
106
106
|
);
|
|
@@ -135,14 +135,15 @@ export const MultipleFileUploadBasic: React.FunctionComponent = () => {
|
|
|
135
135
|
statusToggleIcon={statusIcon}
|
|
136
136
|
aria-label="Current uploads"
|
|
137
137
|
>
|
|
138
|
-
{currentFiles.map((file) => (
|
|
138
|
+
{currentFiles.map((file, index) => (
|
|
139
139
|
<MultipleFileUploadStatusItem
|
|
140
140
|
file={file}
|
|
141
141
|
key={file.name}
|
|
142
142
|
onClearClick={() => removeFiles([file.name])}
|
|
143
143
|
onReadSuccess={handleReadSuccess}
|
|
144
144
|
onReadFail={handleReadFail}
|
|
145
|
-
progressHelperText={createHelperText(file)}
|
|
145
|
+
progressHelperText={createHelperText(file, index)}
|
|
146
|
+
progressAriaDescribedBy={`multiple-file-upload-basic-example-help-text-${index}`}
|
|
146
147
|
/>
|
|
147
148
|
))}
|
|
148
149
|
</MultipleFileUploadStatus>
|
|
@@ -42,6 +42,8 @@ export interface ProgressProps extends Omit<React.HTMLProps<HTMLDivElement>, 'si
|
|
|
42
42
|
'aria-label'?: string;
|
|
43
43
|
/** Associates the ProgressBar with it's label for accessibility purposes. Required when title not used */
|
|
44
44
|
'aria-labelledby'?: string;
|
|
45
|
+
/** Adds an accessible description to the ProgressBar via space separated list of ids. Required when helperText is passed in. */
|
|
46
|
+
'aria-describedby'?: string;
|
|
45
47
|
/** Content which can be used to convey additional information about the progress component.
|
|
46
48
|
* We recommend the helper text component as it was designed for this purpose.
|
|
47
49
|
*/
|
|
@@ -65,7 +67,8 @@ class Progress extends Component<ProgressProps> {
|
|
|
65
67
|
isTitleTruncated: false,
|
|
66
68
|
tooltipPosition: 'top' as 'auto' | 'top' | 'bottom' | 'left' | 'right',
|
|
67
69
|
'aria-label': null as string,
|
|
68
|
-
'aria-labelledby': null as string
|
|
70
|
+
'aria-labelledby': null as string,
|
|
71
|
+
'aria-describedby': null as string
|
|
69
72
|
};
|
|
70
73
|
|
|
71
74
|
id = this.props.id || getUniqueId();
|
|
@@ -89,6 +92,7 @@ class Progress extends Component<ProgressProps> {
|
|
|
89
92
|
tooltipPosition,
|
|
90
93
|
'aria-label': ariaLabel,
|
|
91
94
|
'aria-labelledby': ariaLabelledBy,
|
|
95
|
+
'aria-describedby': ariaDescribedBy,
|
|
92
96
|
helperText,
|
|
93
97
|
...props
|
|
94
98
|
} = this.props;
|
|
@@ -107,6 +111,10 @@ class Progress extends Component<ProgressProps> {
|
|
|
107
111
|
progressBarAriaProps['aria-label'] = ariaLabel;
|
|
108
112
|
}
|
|
109
113
|
|
|
114
|
+
if (ariaDescribedBy) {
|
|
115
|
+
progressBarAriaProps['aria-describedby'] = ariaDescribedBy;
|
|
116
|
+
}
|
|
117
|
+
|
|
110
118
|
if (valueText) {
|
|
111
119
|
progressBarAriaProps['aria-valuetext'] = valueText;
|
|
112
120
|
}
|
|
@@ -4,6 +4,7 @@ import { css } from '@patternfly/react-styles';
|
|
|
4
4
|
export interface AriaProps {
|
|
5
5
|
'aria-labelledby'?: string;
|
|
6
6
|
'aria-label'?: string;
|
|
7
|
+
'aria-describedby'?: string;
|
|
7
8
|
'aria-valuemin'?: number;
|
|
8
9
|
'aria-valuenow'?: number;
|
|
9
10
|
'aria-valuemax'?: number;
|
|
@@ -28,7 +29,7 @@ export const ProgressBar: React.FunctionComponent<ProgressBarProps> = ({
|
|
|
28
29
|
value,
|
|
29
30
|
...props
|
|
30
31
|
}: ProgressBarProps) => (
|
|
31
|
-
<div {...props} className={css(styles.progressBar, className)} {...progressBarAriaProps}>
|
|
32
|
+
<div role="progressbar" {...props} className={css(styles.progressBar, className)} {...progressBarAriaProps}>
|
|
32
33
|
<div className={css(styles.progressIndicator)} style={{ width: `${value}%` }}>
|
|
33
34
|
<span className={css(styles.progressMeasure)}>{children}</span>
|
|
34
35
|
</div>
|
|
@@ -130,7 +130,7 @@ export const ProgressContainer: React.FunctionComponent<ProgressContainerProps>
|
|
|
130
130
|
)}
|
|
131
131
|
</div>
|
|
132
132
|
)}
|
|
133
|
-
<ProgressBar
|
|
133
|
+
<ProgressBar progressBarAriaProps={progressBarAriaProps} value={value}>
|
|
134
134
|
{measureLocation === ProgressMeasureLocation.inside && `${value}%`}
|
|
135
135
|
</ProgressBar>
|
|
136
136
|
{helperText && <ProgressHelperText>{helperText}</ProgressHelperText>}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { render, screen } from '@testing-library/react';
|
|
2
|
+
import { ProgressBar } from '../ProgressBar';
|
|
3
|
+
|
|
4
|
+
test('Does not render with aria-describedby by default', () => {
|
|
5
|
+
render(<ProgressBar value={33} />);
|
|
6
|
+
|
|
7
|
+
expect(screen.getByRole('progressbar')).not.toHaveAccessibleDescription();
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
test('Renders with aria-describedby when progressBarAriaProps is passed in', () => {
|
|
11
|
+
render(
|
|
12
|
+
<>
|
|
13
|
+
<div id="test-id">Test description</div>
|
|
14
|
+
<ProgressBar value={33} progressBarAriaProps={{ 'aria-describedby': 'test-id' }} />
|
|
15
|
+
</>
|
|
16
|
+
);
|
|
17
|
+
|
|
18
|
+
expect(screen.getByRole('progressbar')).toHaveAccessibleDescription('Test description');
|
|
19
|
+
});
|
|
@@ -8,75 +8,119 @@ propComponents: ['Progress']
|
|
|
8
8
|
import { useState } from 'react';
|
|
9
9
|
|
|
10
10
|
## Examples
|
|
11
|
+
|
|
11
12
|
### Basic
|
|
13
|
+
|
|
12
14
|
```ts file="./ProgressBasic.tsx"
|
|
15
|
+
|
|
13
16
|
```
|
|
14
17
|
|
|
15
18
|
### Small
|
|
19
|
+
|
|
16
20
|
```ts file="./ProgressSmall.tsx"
|
|
21
|
+
|
|
17
22
|
```
|
|
18
23
|
|
|
19
24
|
### Large
|
|
25
|
+
|
|
20
26
|
```ts file="./ProgressLarge.tsx"
|
|
21
|
-
```
|
|
22
27
|
|
|
23
|
-
### Outside
|
|
24
|
-
```ts file="./ProgressOutside.tsx"
|
|
25
28
|
```
|
|
26
29
|
|
|
27
|
-
###
|
|
28
|
-
```ts file="./ProgressInside.tsx"
|
|
29
|
-
```
|
|
30
|
+
### Outside
|
|
30
31
|
|
|
31
|
-
|
|
32
|
-
```ts file="./ProgressSuccess.tsx"
|
|
33
|
-
```
|
|
32
|
+
```ts file="./ProgressOutside.tsx"
|
|
34
33
|
|
|
35
|
-
### Failure
|
|
36
|
-
```ts file="./ProgressFailure.tsx"
|
|
37
34
|
```
|
|
38
35
|
|
|
39
|
-
###
|
|
40
|
-
```ts file="./ProgressWarning.tsx"
|
|
41
|
-
```
|
|
36
|
+
### Inside
|
|
42
37
|
|
|
43
|
-
|
|
44
|
-
```ts file="./ProgressInsideSuccess.tsx"
|
|
45
|
-
```
|
|
38
|
+
```ts file="./ProgressInside.tsx"
|
|
46
39
|
|
|
47
|
-
### Outside failure
|
|
48
|
-
```ts file="./ProgressOutsideFailure.tsx"
|
|
49
40
|
```
|
|
50
41
|
|
|
51
42
|
### Single line
|
|
43
|
+
|
|
52
44
|
```ts file="./ProgressSingleLine.tsx"
|
|
45
|
+
|
|
53
46
|
```
|
|
54
47
|
|
|
55
48
|
### Without measure
|
|
49
|
+
|
|
56
50
|
```ts file="./ProgressWithoutMeasure.tsx"
|
|
57
|
-
```
|
|
58
51
|
|
|
59
|
-
### Failure without measure
|
|
60
|
-
```ts file="./ProgressFailureWithoutMeasure.tsx"
|
|
61
52
|
```
|
|
62
53
|
|
|
63
|
-
|
|
64
54
|
### Finite step
|
|
55
|
+
|
|
65
56
|
```ts file="./ProgressFiniteStep.tsx"
|
|
57
|
+
|
|
66
58
|
```
|
|
67
59
|
|
|
68
60
|
### Progress with step instructions
|
|
61
|
+
|
|
69
62
|
```ts file="./ProgressStepInstruction.tsx"
|
|
63
|
+
|
|
70
64
|
```
|
|
71
65
|
|
|
72
66
|
### Truncate title
|
|
67
|
+
|
|
73
68
|
```ts file="./ProgressTruncateTitle.tsx"
|
|
69
|
+
|
|
74
70
|
```
|
|
75
71
|
|
|
76
72
|
### Title outside of progress bar
|
|
73
|
+
|
|
77
74
|
```ts file="./ProgressTitleOutsideOfProgressBar.tsx"
|
|
75
|
+
|
|
78
76
|
```
|
|
79
77
|
|
|
80
78
|
### Helper text
|
|
79
|
+
|
|
81
80
|
```ts file="./ProgressHelperText.tsx"
|
|
81
|
+
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Status examples
|
|
85
|
+
|
|
86
|
+
When conveying status, you should ensure:
|
|
87
|
+
|
|
88
|
+
- There is visible helper text that explains the status.
|
|
89
|
+
- The helper text includes the status icon, as seen in our [basic helper text example](/components/helper-text#basic).
|
|
90
|
+
- The helper text is linked to the `<Progress>` component via the `aria-describedby` property, as seen in the [progress helper text example](#helper-text).
|
|
91
|
+
|
|
92
|
+
### Success
|
|
93
|
+
|
|
94
|
+
```ts file="./ProgressSuccess.tsx"
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Failure
|
|
99
|
+
|
|
100
|
+
```ts file="./ProgressFailure.tsx"
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Warning
|
|
105
|
+
|
|
106
|
+
```ts file="./ProgressWarning.tsx"
|
|
107
|
+
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### Inside success
|
|
111
|
+
|
|
112
|
+
```ts file="./ProgressInsideSuccess.tsx"
|
|
113
|
+
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### Outside failure
|
|
117
|
+
|
|
118
|
+
```ts file="./ProgressOutsideFailure.tsx"
|
|
119
|
+
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### Failure without measure
|
|
123
|
+
|
|
124
|
+
```ts file="./ProgressFailureWithoutMeasure.tsx"
|
|
125
|
+
|
|
82
126
|
```
|
|
@@ -25,7 +25,7 @@ export const ProgressHelperText: React.FunctionComponent = () => {
|
|
|
25
25
|
const helperTextVariant = selectedVariant === 'danger' ? 'error' : selectedVariant;
|
|
26
26
|
|
|
27
27
|
const helperText = (
|
|
28
|
-
<HelperText>
|
|
28
|
+
<HelperText id="progress-helper-text-example-help-text">
|
|
29
29
|
<HelperTextItem variant={helperTextVariant}>
|
|
30
30
|
{`${formatVariantName(selectedVariant)} variant is being displayed`}
|
|
31
31
|
</HelperTextItem>
|
|
@@ -36,7 +36,13 @@ export const ProgressHelperText: React.FunctionComponent = () => {
|
|
|
36
36
|
<>
|
|
37
37
|
{variantOptions}
|
|
38
38
|
<br />
|
|
39
|
-
<Progress
|
|
39
|
+
<Progress
|
|
40
|
+
aria-describedby="progress-helper-text-example-help-text"
|
|
41
|
+
value={33}
|
|
42
|
+
title="Title"
|
|
43
|
+
helperText={helperText}
|
|
44
|
+
variant={selectedVariant}
|
|
45
|
+
/>
|
|
40
46
|
</>
|
|
41
47
|
);
|
|
42
48
|
};
|
|
@@ -13,6 +13,7 @@ import { AdvancedSearchMenu } from './AdvancedSearchMenu';
|
|
|
13
13
|
import { TextInputGroup, TextInputGroupMain, TextInputGroupUtilities } from '../TextInputGroup';
|
|
14
14
|
import { InputGroup, InputGroupItem } from '../InputGroup';
|
|
15
15
|
import { Popper } from '../../helpers';
|
|
16
|
+
import { useHasAnimations } from '../../helpers';
|
|
16
17
|
import textInputGroupStyles from '@patternfly/react-styles/css/components/TextInputGroup/text-input-group';
|
|
17
18
|
import inputGroupStyles from '@patternfly/react-styles/css/components/InputGroup/input-group';
|
|
18
19
|
|
|
@@ -180,7 +181,8 @@ const SearchInputBase: React.FunctionComponent<SearchInputProps> = ({
|
|
|
180
181
|
const popperRef = useRef(null);
|
|
181
182
|
const [focusAfterExpandChange, setFocusAfterExpandChange] = useState(false);
|
|
182
183
|
|
|
183
|
-
const { isExpanded, onToggleExpand, toggleAriaLabel, hasAnimations } = expandableInput || {};
|
|
184
|
+
const { isExpanded, onToggleExpand, toggleAriaLabel, hasAnimations: hasAnimationsProp } = expandableInput || {};
|
|
185
|
+
const hasAnimations = useHasAnimations(hasAnimationsProp);
|
|
184
186
|
|
|
185
187
|
useEffect(() => {
|
|
186
188
|
// this effect and the focusAfterExpandChange variable are needed to focus the input/toggle as needed when the
|
|
@@ -5,6 +5,7 @@ import userEvent from '@testing-library/user-event';
|
|
|
5
5
|
import { SearchInput } from '../SearchInput';
|
|
6
6
|
import { FormGroup } from '../../Form';
|
|
7
7
|
import { Button } from '../../Button';
|
|
8
|
+
import { AnimationsProvider } from '../../../helpers/AnimationsProvider';
|
|
8
9
|
import ExternalLinkSquareAltIcon from '@patternfly/react-icons/dist/esm/icons/external-link-square-alt-icon';
|
|
9
10
|
import badgeStyles from '@patternfly/react-styles/css/components/Badge/badge';
|
|
10
11
|
import textInputGroupStyles from '@patternfly/react-styles/css/components/TextInputGroup/text-input-group';
|
|
@@ -363,3 +364,54 @@ test('Additional props are spread when inputProps prop is passed', () => {
|
|
|
363
364
|
render(<SearchInput aria-label="Test input" inputProps={{ autofocus: 'true' }} />);
|
|
364
365
|
expect(screen.getByLabelText('Test input')).toHaveAttribute('autofocus', 'true');
|
|
365
366
|
});
|
|
367
|
+
|
|
368
|
+
// Animation context tests
|
|
369
|
+
test('respects AnimationsProvider context when no local hasAnimations prop for expandable input', () => {
|
|
370
|
+
render(
|
|
371
|
+
<AnimationsProvider config={{ hasAnimations: true }}>
|
|
372
|
+
<SearchInput
|
|
373
|
+
data-testid="test-id"
|
|
374
|
+
expandableInput={{
|
|
375
|
+
isExpanded: false,
|
|
376
|
+
onToggleExpand: () => {},
|
|
377
|
+
toggleAriaLabel: 'Test label'
|
|
378
|
+
}}
|
|
379
|
+
/>
|
|
380
|
+
</AnimationsProvider>
|
|
381
|
+
);
|
|
382
|
+
|
|
383
|
+
expect(screen.getByTestId('test-id')).toHaveClass(`${inputGroupStyles.modifiers.searchExpandable}`);
|
|
384
|
+
});
|
|
385
|
+
|
|
386
|
+
test('local hasAnimations prop takes precedence over context for expandable input', () => {
|
|
387
|
+
render(
|
|
388
|
+
<AnimationsProvider config={{ hasAnimations: true }}>
|
|
389
|
+
<SearchInput
|
|
390
|
+
data-testid="test-id"
|
|
391
|
+
expandableInput={{
|
|
392
|
+
hasAnimations: false,
|
|
393
|
+
isExpanded: false,
|
|
394
|
+
onToggleExpand: () => {},
|
|
395
|
+
toggleAriaLabel: 'Test label'
|
|
396
|
+
}}
|
|
397
|
+
/>
|
|
398
|
+
</AnimationsProvider>
|
|
399
|
+
);
|
|
400
|
+
|
|
401
|
+
expect(screen.getByTestId('test-id')).not.toHaveClass(`${inputGroupStyles.modifiers.searchExpandable}`);
|
|
402
|
+
});
|
|
403
|
+
|
|
404
|
+
test('works without AnimationsProvider for expandable input (backward compatibility)', () => {
|
|
405
|
+
render(
|
|
406
|
+
<SearchInput
|
|
407
|
+
data-testid="test-id"
|
|
408
|
+
expandableInput={{
|
|
409
|
+
isExpanded: false,
|
|
410
|
+
onToggleExpand: () => {},
|
|
411
|
+
toggleAriaLabel: 'Test label'
|
|
412
|
+
}}
|
|
413
|
+
/>
|
|
414
|
+
);
|
|
415
|
+
|
|
416
|
+
expect(screen.getByTestId('test-id')).not.toHaveClass(`${inputGroupStyles.modifiers.searchExpandable}`);
|
|
417
|
+
});
|
|
@@ -1,33 +1,12 @@
|
|
|
1
1
|
import { forwardRef, useEffect, useRef } from 'react';
|
|
2
2
|
import { css } from '@patternfly/react-styles';
|
|
3
3
|
import { Menu, MenuContent, MenuProps } from '../Menu';
|
|
4
|
-
import { Popper } from '../../helpers/Popper/Popper';
|
|
4
|
+
import { Popper, PopperOptions } from '../../helpers/Popper/Popper';
|
|
5
5
|
import { getOUIAProps, OUIAProps, getDefaultOUIAId, onToggleArrowKeydownDefault } from '../../helpers';
|
|
6
|
+
import type { SelectOptionProps } from './SelectOption';
|
|
6
7
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
direction?: 'up' | 'down';
|
|
10
|
-
/** Horizontal position of the popper */
|
|
11
|
-
position?: 'right' | 'left' | 'center' | 'start' | 'end';
|
|
12
|
-
/** Custom width of the popper. If the value is "trigger", it will set the width to the select toggle's width */
|
|
13
|
-
width?: string | 'trigger';
|
|
14
|
-
/** Minimum width of the popper. If the value is "trigger", it will set the min width to the select toggle's width */
|
|
15
|
-
minWidth?: string | 'trigger';
|
|
16
|
-
/** Maximum width of the popper. If the value is "trigger", it will set the max width to the select toggle's width */
|
|
17
|
-
maxWidth?: string | 'trigger';
|
|
18
|
-
/** Enable to flip the popper when it reaches the boundary */
|
|
19
|
-
enableFlip?: boolean;
|
|
20
|
-
/** The container to append the select to. Defaults to document.body.
|
|
21
|
-
* If your select is being cut off you can append it to an element higher up the DOM tree.
|
|
22
|
-
* Some examples:
|
|
23
|
-
* appendTo="inline"
|
|
24
|
-
* appendTo={() => document.body}
|
|
25
|
-
* appendTo={document.getElementById('target')}
|
|
26
|
-
*/
|
|
27
|
-
appendTo?: HTMLElement | (() => HTMLElement) | 'inline';
|
|
28
|
-
/** Flag to prevent the popper from overflowing its container and becoming partially obscured. */
|
|
29
|
-
preventOverflow?: boolean;
|
|
30
|
-
}
|
|
8
|
+
/** @deprecated Use PopperOptions instead */
|
|
9
|
+
export type SelectPopperProps = PopperOptions;
|
|
31
10
|
|
|
32
11
|
export interface SelectToggleProps {
|
|
33
12
|
/** Select toggle node. */
|
|
@@ -56,7 +35,7 @@ export interface SelectProps extends MenuProps, OUIAProps {
|
|
|
56
35
|
/** @beta Flag indicating the first menu item should be focused after opening the menu. */
|
|
57
36
|
shouldFocusFirstItemOnOpen?: boolean;
|
|
58
37
|
/** Function callback when user selects an option. */
|
|
59
|
-
onSelect?: (event?: React.MouseEvent<Element, MouseEvent>, value?:
|
|
38
|
+
onSelect?: (event?: React.MouseEvent<Element, MouseEvent>, value?: SelectOptionProps['value']) => void;
|
|
60
39
|
/** Callback to allow the select component to change the open state of the menu.
|
|
61
40
|
* Triggered by clicking outside of the menu, or by pressing any keys specified in onOpenChangeKeys. */
|
|
62
41
|
onOpenChange?: (isOpen: boolean) => void;
|
|
@@ -75,7 +54,7 @@ export interface SelectProps extends MenuProps, OUIAProps {
|
|
|
75
54
|
/** Determines the accessible role of the select. For a checkbox select pass in "menu". */
|
|
76
55
|
role?: string;
|
|
77
56
|
/** Additional properties to pass to the popper */
|
|
78
|
-
popperProps?:
|
|
57
|
+
popperProps?: PopperOptions;
|
|
79
58
|
/** Height of the select menu */
|
|
80
59
|
menuHeight?: string;
|
|
81
60
|
/** Maximum height of select menu */
|