@patternfly/react-core 6.0.0-alpha.50 → 6.0.0-alpha.52
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 +334 -0
- package/README.md +1 -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/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/Text/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/Tile/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/ApplicationLauncher/package.json +1 -1
- package/dist/dynamic/deprecated/components/Chip/package.json +1 -1
- package/dist/dynamic/deprecated/components/ContextSelector/package.json +1 -1
- package/dist/dynamic/deprecated/components/DragDrop/package.json +1 -1
- package/dist/dynamic/deprecated/components/Dropdown/package.json +1 -1
- package/dist/dynamic/deprecated/components/OptionsMenu/package.json +1 -1
- package/dist/dynamic/deprecated/components/PageHeader/package.json +1 -1
- package/dist/dynamic/deprecated/components/Select/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/favorites/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/next/components/DualListSelector/package.json +1 -1
- package/dist/dynamic/next/components/Modal/package.json +1 -1
- package/dist/dynamic/next/components/package.json +1 -1
- package/dist/dynamic/styles/package.json +1 -1
- package/dist/esm/components/CalendarMonth/CalendarMonth.d.ts.map +1 -1
- package/dist/esm/components/CalendarMonth/CalendarMonth.js +30 -12
- package/dist/esm/components/CalendarMonth/CalendarMonth.js.map +1 -1
- package/dist/esm/components/ClipboardCopy/ClipboardCopy.d.ts +3 -3
- package/dist/esm/components/ClipboardCopy/ClipboardCopy.d.ts.map +1 -1
- package/dist/esm/components/ClipboardCopy/ClipboardCopy.js +10 -2
- package/dist/esm/components/ClipboardCopy/ClipboardCopy.js.map +1 -1
- package/dist/esm/components/Dropdown/Dropdown.d.ts +4 -0
- package/dist/esm/components/Dropdown/Dropdown.d.ts.map +1 -1
- package/dist/esm/components/Dropdown/Dropdown.js +6 -5
- package/dist/esm/components/Dropdown/Dropdown.js.map +1 -1
- package/dist/esm/components/Label/Label.d.ts +2 -0
- package/dist/esm/components/Label/Label.d.ts.map +1 -1
- package/dist/esm/components/Label/Label.js +9 -15
- package/dist/esm/components/Label/Label.js.map +1 -1
- package/dist/esm/components/Menu/Menu.d.ts.map +1 -1
- package/dist/esm/components/Menu/Menu.js +5 -1
- package/dist/esm/components/Menu/Menu.js.map +1 -1
- package/dist/esm/components/Menu/MenuContainer.js +2 -2
- package/dist/esm/components/Menu/MenuContainer.js.map +1 -1
- package/dist/esm/components/MenuToggle/MenuToggle.d.ts +11 -3
- package/dist/esm/components/MenuToggle/MenuToggle.d.ts.map +1 -1
- package/dist/esm/components/MenuToggle/MenuToggle.js +29 -3
- package/dist/esm/components/MenuToggle/MenuToggle.js.map +1 -1
- package/dist/esm/components/MenuToggle/MenuToggleCheckbox.js +2 -2
- package/dist/esm/components/MenuToggle/MenuToggleCheckbox.js.map +1 -1
- package/dist/esm/components/Pagination/PaginationOptionsMenu.d.ts.map +1 -1
- package/dist/esm/components/Pagination/PaginationOptionsMenu.js +2 -4
- package/dist/esm/components/Pagination/PaginationOptionsMenu.js.map +1 -1
- package/dist/esm/components/Select/Select.js +2 -2
- package/dist/esm/components/Select/Select.js.map +1 -1
- package/dist/esm/components/TextArea/TextArea.d.ts +0 -4
- package/dist/esm/components/TextArea/TextArea.d.ts.map +1 -1
- package/dist/esm/components/TextArea/TextArea.js.map +1 -1
- package/dist/esm/components/ToggleGroup/ToggleGroupItem.d.ts +2 -0
- package/dist/esm/components/ToggleGroup/ToggleGroupItem.d.ts.map +1 -1
- package/dist/esm/components/ToggleGroup/ToggleGroupItem.js +5 -3
- package/dist/esm/components/ToggleGroup/ToggleGroupItem.js.map +1 -1
- package/dist/esm/helpers/GenerateId/GenerateId.d.ts +5 -1
- package/dist/esm/helpers/GenerateId/GenerateId.d.ts.map +1 -1
- package/dist/esm/helpers/GenerateId/GenerateId.js +14 -2
- package/dist/esm/helpers/GenerateId/GenerateId.js.map +1 -1
- package/dist/js/components/CalendarMonth/CalendarMonth.d.ts.map +1 -1
- package/dist/js/components/CalendarMonth/CalendarMonth.js +30 -12
- package/dist/js/components/CalendarMonth/CalendarMonth.js.map +1 -1
- package/dist/js/components/ClipboardCopy/ClipboardCopy.d.ts +3 -3
- package/dist/js/components/ClipboardCopy/ClipboardCopy.d.ts.map +1 -1
- package/dist/js/components/ClipboardCopy/ClipboardCopy.js +10 -2
- package/dist/js/components/ClipboardCopy/ClipboardCopy.js.map +1 -1
- package/dist/js/components/Dropdown/Dropdown.d.ts +4 -0
- package/dist/js/components/Dropdown/Dropdown.d.ts.map +1 -1
- package/dist/js/components/Dropdown/Dropdown.js +6 -5
- package/dist/js/components/Dropdown/Dropdown.js.map +1 -1
- package/dist/js/components/Label/Label.d.ts +2 -0
- package/dist/js/components/Label/Label.d.ts.map +1 -1
- package/dist/js/components/Label/Label.js +9 -15
- package/dist/js/components/Label/Label.js.map +1 -1
- package/dist/js/components/Menu/Menu.d.ts.map +1 -1
- package/dist/js/components/Menu/Menu.js +5 -1
- package/dist/js/components/Menu/Menu.js.map +1 -1
- package/dist/js/components/Menu/MenuContainer.js +2 -2
- package/dist/js/components/Menu/MenuContainer.js.map +1 -1
- package/dist/js/components/MenuToggle/MenuToggle.d.ts +11 -3
- package/dist/js/components/MenuToggle/MenuToggle.d.ts.map +1 -1
- package/dist/js/components/MenuToggle/MenuToggle.js +30 -4
- package/dist/js/components/MenuToggle/MenuToggle.js.map +1 -1
- package/dist/js/components/MenuToggle/MenuToggleCheckbox.js +2 -2
- package/dist/js/components/MenuToggle/MenuToggleCheckbox.js.map +1 -1
- package/dist/js/components/Pagination/PaginationOptionsMenu.d.ts.map +1 -1
- package/dist/js/components/Pagination/PaginationOptionsMenu.js +2 -4
- package/dist/js/components/Pagination/PaginationOptionsMenu.js.map +1 -1
- package/dist/js/components/Select/Select.js +2 -2
- package/dist/js/components/Select/Select.js.map +1 -1
- package/dist/js/components/TextArea/TextArea.d.ts +0 -4
- package/dist/js/components/TextArea/TextArea.d.ts.map +1 -1
- package/dist/js/components/TextArea/TextArea.js.map +1 -1
- package/dist/js/components/ToggleGroup/ToggleGroupItem.d.ts +2 -0
- package/dist/js/components/ToggleGroup/ToggleGroupItem.d.ts.map +1 -1
- package/dist/js/components/ToggleGroup/ToggleGroupItem.js +5 -3
- package/dist/js/components/ToggleGroup/ToggleGroupItem.js.map +1 -1
- package/dist/js/helpers/GenerateId/GenerateId.d.ts +5 -1
- package/dist/js/helpers/GenerateId/GenerateId.d.ts.map +1 -1
- package/dist/js/helpers/GenerateId/GenerateId.js +14 -2
- package/dist/js/helpers/GenerateId/GenerateId.js.map +1 -1
- package/dist/umd/react-core.min.js +2 -2
- package/helpers/package.json +1 -1
- package/layouts/package.json +1 -1
- package/next/package.json +1 -1
- package/package.json +5 -5
- package/src/components/Accordion/__tests__/AccordionToggle.test.tsx +28 -0
- package/src/components/CalendarMonth/CalendarMonth.tsx +38 -13
- package/src/components/ClipboardCopy/ClipboardCopy.tsx +18 -4
- package/src/components/ClipboardCopy/__tests__/ClipboardCopy.test.tsx +2 -0
- package/src/components/ClipboardCopy/__tests__/__snapshots__/ClipboardCopy.test.tsx.snap +1 -1
- package/src/components/DataList/examples/DataList.md +1 -1
- package/src/components/Drawer/__tests__/Drawer.test.tsx +2 -0
- package/src/components/Drawer/__tests__/DrawerPanelContent.test.tsx +2 -0
- package/src/components/Drawer/__tests__/Generated/DrawerPanelContent.test.tsx +2 -0
- package/src/components/Drawer/__tests__/Generated/__snapshots__/DrawerPanelContent.test.tsx.snap +1 -1
- package/src/components/Drawer/__tests__/__snapshots__/Drawer.test.tsx.snap +8 -8
- package/src/components/Dropdown/Dropdown.tsx +14 -4
- package/src/components/DualListSelector/examples/DualListSelector.md +1 -1
- package/src/components/Form/__tests__/FormFieldGroup.test.tsx +2 -0
- package/src/components/Form/__tests__/FormSection.test.tsx +2 -0
- package/src/components/Form/__tests__/__snapshots__/FormFieldGroup.test.tsx.snap +2 -2
- package/src/components/Form/__tests__/__snapshots__/FormSection.test.tsx.snap +2 -2
- package/src/components/Label/Label.tsx +17 -13
- package/src/components/Label/__tests__/LabelGroup.test.tsx +2 -0
- package/src/components/Label/__tests__/__snapshots__/LabelGroup.test.tsx.snap +8 -8
- package/src/components/Label/examples/LabelCompact.tsx +19 -6
- package/src/components/Label/examples/LabelFilled.tsx +107 -17
- package/src/components/Label/examples/LabelOutline.tsx +142 -10
- package/src/components/Menu/Menu.tsx +5 -3
- package/src/components/Menu/MenuContainer.tsx +2 -2
- package/src/components/MenuToggle/MenuToggle.tsx +37 -3
- package/src/components/MenuToggle/MenuToggleCheckbox.tsx +2 -2
- package/src/components/MenuToggle/__tests__/MenuToggle.test.tsx +15 -0
- package/src/components/MenuToggle/examples/MenuToggle.md +23 -3
- package/src/components/MenuToggle/examples/MenuToggleSplitButtonCheckboxWithToggleText.tsx +51 -0
- package/src/components/MenuToggle/examples/MenuToggleStatus.tsx +20 -0
- package/src/components/MultipleFileUpload/__tests__/MultipleFileUpload.test.tsx +2 -0
- package/src/components/MultipleFileUpload/__tests__/MultipleFileUploadStatus.test.tsx +2 -0
- package/src/components/MultipleFileUpload/__tests__/__snapshots__/MultipleFileUploadStatus.test.tsx.snap +16 -16
- package/src/components/Pagination/PaginationOptionsMenu.tsx +2 -4
- package/src/components/SearchInput/__tests__/SearchInput.test.tsx +1 -0
- package/src/components/SearchInput/__tests__/__snapshots__/SearchInput.test.tsx.snap +2 -2
- package/src/components/Select/Select.tsx +2 -2
- package/src/components/Select/examples/Select.md +33 -9
- package/src/components/Select/examples/SelectMultiTypeaheadCheckbox.tsx +6 -1
- package/src/components/Select/examples/SelectValidated.tsx +74 -0
- package/src/components/Tabs/__tests__/Tabs.test.tsx +2 -0
- package/src/components/Tabs/__tests__/__snapshots__/Tabs.test.tsx.snap +3 -3
- package/src/components/TextArea/TextArea.tsx +0 -4
- package/src/components/ToggleGroup/ToggleGroupItem.tsx +7 -1
- package/src/components/ToggleGroup/examples/ToggleGroupTextIcon.tsx +52 -23
- package/src/components/Toolbar/__tests__/Toolbar.test.tsx +2 -0
- package/src/components/Toolbar/__tests__/__snapshots__/Toolbar.test.tsx.snap +4 -4
- package/src/demos/AlertGroup.md +1 -0
- package/src/demos/BackToTop.md +1 -0
- package/src/demos/Banner.md +5 -4
- package/src/demos/CardView/CardView.md +2 -0
- package/src/demos/CardView/examples/CardView.tsx +1 -1
- package/src/demos/DataList/examples/DataListBasic.tsx +6 -4
- package/src/demos/DataListDemo.md +1 -0
- package/src/demos/Filters/examples/FilterAttributeSearch.tsx +1 -1
- package/src/demos/Filters/examples/FilterCheckboxSelect.tsx +1 -1
- package/src/demos/Filters/examples/FilterFaceted.tsx +1 -1
- package/src/demos/Filters/examples/FilterMixedSelectGroup.tsx +1 -1
- package/src/demos/Filters/examples/FilterSameSelectGroup.tsx +1 -1
- package/src/demos/Filters/examples/FilterSearchInput.tsx +1 -1
- package/src/demos/Filters/examples/FilterSingleSelect.tsx +1 -1
- package/src/demos/JumpLinks.md +2 -1
- package/src/demos/PrimaryDetail.md +1 -0
- package/src/demos/RTL/RTL.md +1 -1
- package/src/demos/RTL/examples/PaginatedTable.tsx +533 -0
- package/src/demos/Tabs.md +5 -2
- package/src/demos/Toolbar.md +1 -0
- package/src/demos/Wizard/WizardDemo.md +1 -0
- package/src/demos/examples/AlertGroup/AlertGroupToastWithNotificationDrawer.tsx +1 -1
- package/src/demos/examples/BackToTop/BackToTopNameDemo.tsx +1 -1
- package/src/demos/examples/Card/CardStatus.tsx +1 -1
- package/src/demos/examples/JumpLinks/JumpLinksWithDrawer.js +1 -1
- package/src/demos/examples/Nav/NavDefault.tsx +1 -1
- package/src/demos/examples/Nav/NavExpandable.tsx +1 -1
- package/src/demos/examples/Nav/NavWithSubnav.tsx +1 -1
- package/src/demos/examples/PrimaryDetail/PrimaryDetailContentPadding.tsx +1 -1
- package/src/demos/examples/PrimaryDetail/PrimaryDetailFullPage.tsx +1 -1
- package/src/demos/examples/PrimaryDetail/PrimaryDetailInlineModifier.tsx +1 -1
- package/src/demos/examples/Tabs/ModalTabs.tsx +1 -1
- package/src/demos/examples/Tabs/NestedTabs.tsx +1 -1
- package/src/demos/examples/Tabs/NestedUnindentedTabs.tsx +1 -1
- package/src/demos/examples/Tabs/TabsAndTable.tsx +1 -1
- package/src/demos/examples/Toolbar/ConsoleLogViewerToolbar.tsx +1 -1
- package/src/demos/examples/Wizard/InModal.tsx +1 -1
- package/src/deprecated/components/Chip/__tests__/ChipGroup.test.tsx +4 -2
- package/src/deprecated/components/Select/__tests__/Select.test.tsx +2 -0
- package/src/deprecated/components/Select/__tests__/__snapshots__/Select.test.tsx.snap +19 -19
- package/src/helpers/GenerateId/GenerateId.ts +17 -3
- package/src/helpers/GenerateId/__mocks__/GenerateId.ts +11 -0
- package/src/helpers/GenerateId/__tests__/GenerateId.test.tsx +3 -1
package/helpers/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@patternfly/react-core-helpers","main":"../dist/js/helpers/index.js","module":"../dist/esm/helpers/index.js","typings":"../dist/esm/helpers/index.d.ts","version":"6.0.0-alpha.
|
|
1
|
+
{"name":"@patternfly/react-core-helpers","main":"../dist/js/helpers/index.js","module":"../dist/esm/helpers/index.js","typings":"../dist/esm/helpers/index.d.ts","version":"6.0.0-alpha.51","private":true}
|
package/layouts/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@patternfly/react-core-layouts","main":"../dist/js/layouts/index.js","module":"../dist/esm/layouts/index.js","typings":"../dist/esm/layouts/index.d.ts","version":"6.0.0-alpha.
|
|
1
|
+
{"name":"@patternfly/react-core-layouts","main":"../dist/js/layouts/index.js","module":"../dist/esm/layouts/index.js","typings":"../dist/esm/layouts/index.d.ts","version":"6.0.0-alpha.51","private":true}
|
package/next/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@patternfly/react-core-next","main":"../dist/js/next/index.js","module":"../dist/esm/next/index.js","typings":"../dist/esm/next/index.d.ts","version":"6.0.0-alpha.
|
|
1
|
+
{"name":"@patternfly/react-core-next","main":"../dist/js/next/index.js","module":"../dist/esm/next/index.js","typings":"../dist/esm/next/index.d.ts","version":"6.0.0-alpha.51","private":true}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@patternfly/react-core",
|
|
3
|
-
"version": "6.0.0-alpha.
|
|
3
|
+
"version": "6.0.0-alpha.52",
|
|
4
4
|
"description": "This library provides a set of common React components for use with the PatternFly reference implementation.",
|
|
5
5
|
"main": "dist/js/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -47,9 +47,9 @@
|
|
|
47
47
|
"clean:exports": "node scripts/cleanDistExports.js"
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@patternfly/react-icons": "^6.0.0-alpha.
|
|
51
|
-
"@patternfly/react-styles": "^6.0.0-alpha.
|
|
52
|
-
"@patternfly/react-tokens": "^6.0.0-alpha.
|
|
50
|
+
"@patternfly/react-icons": "^6.0.0-alpha.20",
|
|
51
|
+
"@patternfly/react-styles": "^6.0.0-alpha.20",
|
|
52
|
+
"@patternfly/react-tokens": "^6.0.0-alpha.20",
|
|
53
53
|
"focus-trap": "7.5.2",
|
|
54
54
|
"react-dropzone": "^14.2.3",
|
|
55
55
|
"tslib": "^2.5.0"
|
|
@@ -74,5 +74,5 @@
|
|
|
74
74
|
"react": "^17 || ^18",
|
|
75
75
|
"react-dom": "^17 || ^18"
|
|
76
76
|
},
|
|
77
|
-
"gitHead": "
|
|
77
|
+
"gitHead": "eb609385b2e7b294e5e46d021d615cd63fa92fc6"
|
|
78
78
|
}
|
|
@@ -211,6 +211,34 @@ test('Renders toggle icon before toggle text when togglePosition from context =
|
|
|
211
211
|
expect(toggle.firstChild).toHaveClass(styles.accordionToggleIcon);
|
|
212
212
|
});
|
|
213
213
|
|
|
214
|
+
test('Renders toggle text before toggle icon by default', () => {
|
|
215
|
+
render(
|
|
216
|
+
<AccordionContext.Provider value={{ ToggleContainer: 'h3' }}>
|
|
217
|
+
<AccordionToggle id="accordion-toggle" isExpanded>
|
|
218
|
+
Test
|
|
219
|
+
</AccordionToggle>
|
|
220
|
+
</AccordionContext.Provider>
|
|
221
|
+
);
|
|
222
|
+
|
|
223
|
+
const toggle = screen.getByRole('button');
|
|
224
|
+
|
|
225
|
+
expect(toggle.firstChild).toHaveClass(styles.accordionToggleText);
|
|
226
|
+
});
|
|
227
|
+
|
|
228
|
+
test('Renders toggle icon before toggle text when togglePosition from context = "start"', () => {
|
|
229
|
+
render(
|
|
230
|
+
<AccordionContext.Provider value={{ ToggleContainer: 'h3', togglePosition: 'start' }}>
|
|
231
|
+
<AccordionToggle id="accordion-toggle" isExpanded>
|
|
232
|
+
Test
|
|
233
|
+
</AccordionToggle>
|
|
234
|
+
</AccordionContext.Provider>
|
|
235
|
+
);
|
|
236
|
+
|
|
237
|
+
const toggle = screen.getByRole('button');
|
|
238
|
+
|
|
239
|
+
expect(toggle.firstChild).toHaveClass(styles.accordionToggleIcon);
|
|
240
|
+
});
|
|
241
|
+
|
|
214
242
|
test('Matches the snapshot', () => {
|
|
215
243
|
const { asFragment } = render(
|
|
216
244
|
<AccordionContext.Provider value={{ ToggleContainer: 'h3' }}>
|
|
@@ -83,9 +83,6 @@ export interface CalendarProps extends CalendarFormat, Omit<React.HTMLProps<HTML
|
|
|
83
83
|
validators?: ((date: Date) => boolean)[];
|
|
84
84
|
}
|
|
85
85
|
|
|
86
|
-
// Must be numeric given current header design
|
|
87
|
-
const yearFormat = (date: Date) => date.getFullYear();
|
|
88
|
-
|
|
89
86
|
const buildCalendar = (year: number, month: number, weekStart: number, validators: ((date: Date) => boolean)[]) => {
|
|
90
87
|
const defaultDate = new Date(year, month);
|
|
91
88
|
|
|
@@ -164,6 +161,13 @@ export const CalendarMonth = ({
|
|
|
164
161
|
};
|
|
165
162
|
const initialDate = getInitialDate();
|
|
166
163
|
const [focusedDate, setFocusedDate] = React.useState(initialDate);
|
|
164
|
+
|
|
165
|
+
// Must be numeric given current header design
|
|
166
|
+
const yearFormat = (date: Date) => date.getFullYear();
|
|
167
|
+
//
|
|
168
|
+
const yearFormatted = yearFormat(focusedDate);
|
|
169
|
+
const [yearInput, setYearInput] = React.useState(yearFormatted.toString());
|
|
170
|
+
|
|
167
171
|
const [hoveredDate, setHoveredDate] = React.useState(new Date(focusedDate));
|
|
168
172
|
const focusRef = React.useRef<HTMLButtonElement>();
|
|
169
173
|
const [hiddenMonthId] = React.useState(getUniqueId('hidden-month-span'));
|
|
@@ -191,6 +195,7 @@ export const CalendarMonth = ({
|
|
|
191
195
|
setHoveredDate(newDate);
|
|
192
196
|
setShouldFocus(false);
|
|
193
197
|
onMonthChange(ev, newDate);
|
|
198
|
+
setYearInput(yearFormat(newDate).toString());
|
|
194
199
|
};
|
|
195
200
|
|
|
196
201
|
const onKeyDown = (ev: React.KeyboardEvent<HTMLTableSectionElement>) => {
|
|
@@ -217,6 +222,34 @@ export const CalendarMonth = ({
|
|
|
217
222
|
const changeMonth = (newMonth: number, newYear?: number) =>
|
|
218
223
|
new Date(newYear ?? focusedDate.getFullYear(), newMonth, 1);
|
|
219
224
|
|
|
225
|
+
const MIN_YEAR = 1900;
|
|
226
|
+
const MAX_YEAR = 2100;
|
|
227
|
+
|
|
228
|
+
const handleYearInputChange = (event: React.FormEvent<HTMLInputElement>, yearStr: string) => {
|
|
229
|
+
if (!/^\d{0,4}$/.test(yearStr)) {
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
setYearInput(yearStr);
|
|
234
|
+
|
|
235
|
+
if (yearStr.length === 4) {
|
|
236
|
+
const yearNum = Number(yearStr);
|
|
237
|
+
|
|
238
|
+
if (yearNum >= MIN_YEAR && yearNum <= MAX_YEAR) {
|
|
239
|
+
const newDate = changeYear(yearNum);
|
|
240
|
+
setFocusedDate(newDate);
|
|
241
|
+
setHoveredDate(newDate);
|
|
242
|
+
setShouldFocus(false);
|
|
243
|
+
|
|
244
|
+
// We need to manually focus the year input in FireFox when the scroll buttons are clicked, as FireFox doesn't place focus automatically
|
|
245
|
+
(event.target as HTMLElement).focus();
|
|
246
|
+
onMonthChange(event, newDate);
|
|
247
|
+
} else {
|
|
248
|
+
setYearInput(yearFormatted.toString());
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
};
|
|
252
|
+
|
|
220
253
|
const addMonth = (toAdd: -1 | 1) => {
|
|
221
254
|
let newMonth = focusedDate.getMonth() + toAdd;
|
|
222
255
|
let newYear = focusedDate.getFullYear();
|
|
@@ -254,7 +287,6 @@ export const CalendarMonth = ({
|
|
|
254
287
|
}
|
|
255
288
|
const isHoveredDateValid = isValidated(hoveredDate);
|
|
256
289
|
const monthFormatted = monthFormat(focusedDate);
|
|
257
|
-
const yearFormatted = yearFormat(focusedDate);
|
|
258
290
|
|
|
259
291
|
const calendarToRender = (
|
|
260
292
|
<div className={css(styles.calendarMonth, className)} {...props}>
|
|
@@ -321,15 +353,8 @@ export const CalendarMonth = ({
|
|
|
321
353
|
<TextInput
|
|
322
354
|
aria-label={yearInputAriaLabel}
|
|
323
355
|
type="number"
|
|
324
|
-
value={
|
|
325
|
-
onChange={
|
|
326
|
-
const newDate = changeYear(Number(year));
|
|
327
|
-
setFocusedDate(newDate);
|
|
328
|
-
setHoveredDate(newDate);
|
|
329
|
-
setShouldFocus(false);
|
|
330
|
-
focusRef.current?.blur(); // will unfocus a date when changing year via up/down arrows
|
|
331
|
-
onMonthChange(ev, newDate);
|
|
332
|
-
}}
|
|
356
|
+
value={yearInput}
|
|
357
|
+
onChange={handleYearInputChange}
|
|
333
358
|
/>
|
|
334
359
|
</div>
|
|
335
360
|
</InputGroupItem>
|
|
@@ -10,8 +10,22 @@ import { ClipboardCopyToggle } from './ClipboardCopyToggle';
|
|
|
10
10
|
import { ClipboardCopyExpanded } from './ClipboardCopyExpanded';
|
|
11
11
|
import { getOUIAProps, OUIAProps } from '../../helpers';
|
|
12
12
|
|
|
13
|
-
export const clipboardCopyFunc = (
|
|
14
|
-
|
|
13
|
+
export const clipboardCopyFunc = (_event: React.ClipboardEvent<HTMLDivElement>, text?: React.ReactNode) => {
|
|
14
|
+
try {
|
|
15
|
+
navigator.clipboard.writeText(text.toString());
|
|
16
|
+
} catch (error) {
|
|
17
|
+
// eslint-disable-next-line no-console
|
|
18
|
+
console.warn(
|
|
19
|
+
"Clipboard API not found, this copy function will not work. This is likely because you're using an",
|
|
20
|
+
"unsupported browser or you're not using HTTPS. \n\nIf you're a developer building an application which needs",
|
|
21
|
+
"to support copying to the clipboard without the clipboard API, you'll have to create your own copy",
|
|
22
|
+
'function and pass it to the ClipboardCopy component as the onCopy prop. For more information see',
|
|
23
|
+
'https://developer.mozilla.org/en-US/docs/Web/API/Navigator/clipboard'
|
|
24
|
+
);
|
|
25
|
+
|
|
26
|
+
// eslint-disable-next-line no-console
|
|
27
|
+
console.error(error);
|
|
28
|
+
}
|
|
15
29
|
};
|
|
16
30
|
|
|
17
31
|
export enum ClipboardCopyVariant {
|
|
@@ -70,8 +84,8 @@ export interface ClipboardCopyProps extends Omit<React.HTMLProps<HTMLDivElement>
|
|
|
70
84
|
exitDelay?: number;
|
|
71
85
|
/** Delay in ms before the tooltip appears. */
|
|
72
86
|
entryDelay?: number;
|
|
73
|
-
/** A function that is triggered on clicking the copy button. */
|
|
74
|
-
onCopy?: (event: React.ClipboardEvent<HTMLDivElement>, text?:
|
|
87
|
+
/** A function that is triggered on clicking the copy button. This will replace the existing clipboard copy functionality entirely. */
|
|
88
|
+
onCopy?: (event: React.ClipboardEvent<HTMLDivElement>, text?: React.ReactNode) => void;
|
|
75
89
|
/** A function that is triggered on changing the text. */
|
|
76
90
|
onChange?: (event: React.FormEvent, text?: string) => void;
|
|
77
91
|
/** The text which is copied. */
|
|
@@ -4,6 +4,8 @@ import { ClipboardCopy } from '../ClipboardCopy';
|
|
|
4
4
|
import styles from '@patternfly/react-styles/css/components/ClipboardCopy/clipboard-copy';
|
|
5
5
|
import userEvent from '@testing-library/user-event';
|
|
6
6
|
|
|
7
|
+
jest.mock('../../../helpers/GenerateId/GenerateId');
|
|
8
|
+
|
|
7
9
|
jest.mock('../ClipboardCopyButton', () => ({
|
|
8
10
|
ClipboardCopyButton: ({ 'aria-label': ariaLabel, children, entryDelay, exitDelay, maxWidth, position, onClick }) => (
|
|
9
11
|
<div data-testid="clipboardCopyButton-mock">
|
|
@@ -21,7 +21,7 @@ exports[`Matches snapshot 1`] = `
|
|
|
21
21
|
data-ouia-component-id="OUIA-Generated-TextInputBase-26"
|
|
22
22
|
data-ouia-component-type="PF5/TextInput"
|
|
23
23
|
data-ouia-safe="true"
|
|
24
|
-
id="text-input-
|
|
24
|
+
id="text-input-generated-id"
|
|
25
25
|
type="text"
|
|
26
26
|
value="Copyable text"
|
|
27
27
|
/>
|
|
@@ -83,7 +83,7 @@ import { DragDrop, Draggable, Droppable } from '@patternfly/react-core/deprecate
|
|
|
83
83
|
|
|
84
84
|
### Draggable
|
|
85
85
|
|
|
86
|
-
Note: There is a new recommended drag and drop implementation with full keyboard functionality, which replaces this implementation. To adhere to our new recommendations, refer to the [drag and drop demos](/components/drag-and-drop/react-
|
|
86
|
+
Note: There is a new recommended drag and drop implementation with full keyboard functionality, which replaces this implementation. To adhere to our new recommendations, refer to the [drag and drop demos](/components/drag-and-drop/react-demos).
|
|
87
87
|
|
|
88
88
|
Previously, draggable data lists had their own API for the [drag and drop component](/components/drag-and-drop), which wasn't flexible enough to allow custom styling for items as they are dragged. To address this disparity, `<DragDrop>`, `<Draggable>`, and `<Droppable>` components were added to replace our now deprecated HTML5-based API. Keyboard and screen reader accessibility for the `<DragDrop>` component is still in development.
|
|
89
89
|
|
|
@@ -14,6 +14,8 @@ import { render } from '@testing-library/react';
|
|
|
14
14
|
import userEvent from '@testing-library/user-event';
|
|
15
15
|
import { KeyTypes } from '../../../helpers';
|
|
16
16
|
|
|
17
|
+
jest.mock('../../../helpers/GenerateId/GenerateId');
|
|
18
|
+
|
|
17
19
|
Object.values([
|
|
18
20
|
{ isExpanded: true, isInline: false, isStatic: false },
|
|
19
21
|
{ isExpanded: false, isInline: false, isStatic: false },
|
|
@@ -34,6 +34,8 @@ test(`Renders with class ${styles.modifiers.secondary} when colorVariant="second
|
|
|
34
34
|
expect(screen.getByText('Drawer panel content')).toHaveClass(styles.modifiers.secondary);
|
|
35
35
|
});
|
|
36
36
|
|
|
37
|
+
jest.mock('../../../helpers/GenerateId/GenerateId');
|
|
38
|
+
|
|
37
39
|
test('Does not render with aria-labelledby by default', () => {
|
|
38
40
|
render(
|
|
39
41
|
<Drawer isExpanded>
|
|
@@ -7,6 +7,8 @@ import { DrawerPanelContent } from '../../DrawerPanelContent';
|
|
|
7
7
|
// any missing imports can usually be resolved by adding them here
|
|
8
8
|
import {} from '../..';
|
|
9
9
|
|
|
10
|
+
jest.mock('../../../../helpers/GenerateId/GenerateId');
|
|
11
|
+
|
|
10
12
|
it('DrawerPanelContent should match snapshot (auto-generated)', () => {
|
|
11
13
|
const { asFragment } = render(<DrawerPanelContent className={"''"} children={<div>ReactNode</div>} />);
|
|
12
14
|
expect(asFragment()).toMatchSnapshot();
|
|
@@ -19,7 +19,7 @@ exports[`Drawer expands from bottom 1`] = `
|
|
|
19
19
|
</div>
|
|
20
20
|
<div
|
|
21
21
|
class="pf-v6-c-drawer__panel"
|
|
22
|
-
id="
|
|
22
|
+
id="generated-id"
|
|
23
23
|
>
|
|
24
24
|
<div
|
|
25
25
|
class="pf-v6-c-drawer__head"
|
|
@@ -179,11 +179,11 @@ exports[`Drawer has resizable css and color variants 1`] = `
|
|
|
179
179
|
</div>
|
|
180
180
|
<div
|
|
181
181
|
class="pf-v6-c-drawer__panel pf-m-resizable pf-m-secondary"
|
|
182
|
-
id="
|
|
182
|
+
id="generated-id"
|
|
183
183
|
style="--pf-v6-c-drawer__panel--md--FlexBasis: 300px; --pf-v6-c-drawer__panel--md--FlexBasis--min: 200px; --pf-v6-c-drawer__panel--md--FlexBasis--max: 400px;"
|
|
184
184
|
>
|
|
185
185
|
<div
|
|
186
|
-
aria-controls="
|
|
186
|
+
aria-controls="generated-id"
|
|
187
187
|
aria-label="Resize"
|
|
188
188
|
aria-orientation="vertical"
|
|
189
189
|
aria-valuemax="100"
|
|
@@ -271,7 +271,7 @@ exports[`Drawer isExpanded = false and isInline = false and isStatic = false 1`]
|
|
|
271
271
|
<div
|
|
272
272
|
class="pf-v6-c-drawer__panel"
|
|
273
273
|
hidden=""
|
|
274
|
-
id="
|
|
274
|
+
id="generated-id"
|
|
275
275
|
/>
|
|
276
276
|
</div>
|
|
277
277
|
</div>
|
|
@@ -298,7 +298,7 @@ exports[`Drawer isExpanded = false and isInline = true and isStatic = false 1`]
|
|
|
298
298
|
<div
|
|
299
299
|
class="pf-v6-c-drawer__panel"
|
|
300
300
|
hidden=""
|
|
301
|
-
id="
|
|
301
|
+
id="generated-id"
|
|
302
302
|
/>
|
|
303
303
|
</div>
|
|
304
304
|
</div>
|
|
@@ -324,7 +324,7 @@ exports[`Drawer isExpanded = true and isInline = false and isStatic = false 1`]
|
|
|
324
324
|
</div>
|
|
325
325
|
<div
|
|
326
326
|
class="pf-v6-c-drawer__panel"
|
|
327
|
-
id="
|
|
327
|
+
id="generated-id"
|
|
328
328
|
>
|
|
329
329
|
<div
|
|
330
330
|
class="pf-v6-c-drawer__head"
|
|
@@ -394,7 +394,7 @@ exports[`Drawer isExpanded = true and isInline = false and isStatic = true 1`] =
|
|
|
394
394
|
</div>
|
|
395
395
|
<div
|
|
396
396
|
class="pf-v6-c-drawer__panel"
|
|
397
|
-
id="
|
|
397
|
+
id="generated-id"
|
|
398
398
|
>
|
|
399
399
|
<div
|
|
400
400
|
class="pf-v6-c-drawer__head"
|
|
@@ -464,7 +464,7 @@ exports[`Drawer isExpanded = true and isInline = true and isStatic = false 1`] =
|
|
|
464
464
|
</div>
|
|
465
465
|
<div
|
|
466
466
|
class="pf-v6-c-drawer__panel"
|
|
467
|
-
id="
|
|
467
|
+
id="generated-id"
|
|
468
468
|
>
|
|
469
469
|
<div
|
|
470
470
|
class="pf-v6-c-drawer__head"
|
|
@@ -65,6 +65,10 @@ export interface DropdownProps extends MenuProps, OUIAProps {
|
|
|
65
65
|
zIndex?: number;
|
|
66
66
|
/** Additional properties to pass to the Popper */
|
|
67
67
|
popperProps?: DropdownPopperProps;
|
|
68
|
+
/** Height of the dropdown menu */
|
|
69
|
+
menuHeight?: string;
|
|
70
|
+
/** Maximum height of dropdown menu */
|
|
71
|
+
maxMenuHeight?: string;
|
|
68
72
|
}
|
|
69
73
|
|
|
70
74
|
const DropdownBase: React.FunctionComponent<DropdownProps> = ({
|
|
@@ -83,6 +87,8 @@ const DropdownBase: React.FunctionComponent<DropdownProps> = ({
|
|
|
83
87
|
zIndex = 9999,
|
|
84
88
|
popperProps,
|
|
85
89
|
onOpenChangeKeys = ['Escape', 'Tab'],
|
|
90
|
+
menuHeight,
|
|
91
|
+
maxMenuHeight,
|
|
86
92
|
...props
|
|
87
93
|
}: DropdownProps) => {
|
|
88
94
|
const localMenuRef = React.useRef<HTMLDivElement>();
|
|
@@ -111,8 +117,8 @@ const DropdownBase: React.FunctionComponent<DropdownProps> = ({
|
|
|
111
117
|
};
|
|
112
118
|
|
|
113
119
|
const handleClick = (event: MouseEvent) => {
|
|
114
|
-
// toggle was
|
|
115
|
-
if (isOpen && toggleRef.current?.contains(event.target as Node)
|
|
120
|
+
// toggle was opened, focus on first menu item
|
|
121
|
+
if (isOpen && toggleRef.current?.contains(event.target as Node)) {
|
|
116
122
|
setTimeout(() => {
|
|
117
123
|
const firstElement = menuRef?.current?.querySelector(
|
|
118
124
|
'li button:not(:disabled),li input:not(:disabled),li a:not([aria-disabled="true"])'
|
|
@@ -138,6 +144,8 @@ const DropdownBase: React.FunctionComponent<DropdownProps> = ({
|
|
|
138
144
|
};
|
|
139
145
|
}, [isOpen, menuRef, toggleRef, onOpenChange, onOpenChangeKeys]);
|
|
140
146
|
|
|
147
|
+
const scrollable = maxMenuHeight !== undefined || menuHeight !== undefined || isScrollable;
|
|
148
|
+
|
|
141
149
|
const menu = (
|
|
142
150
|
<Menu
|
|
143
151
|
className={css(className)}
|
|
@@ -147,11 +155,13 @@ const DropdownBase: React.FunctionComponent<DropdownProps> = ({
|
|
|
147
155
|
shouldFocusToggleOnSelect && toggleRef.current.focus();
|
|
148
156
|
}}
|
|
149
157
|
isPlain={isPlain}
|
|
150
|
-
isScrollable={
|
|
158
|
+
isScrollable={scrollable}
|
|
151
159
|
{...props}
|
|
152
160
|
{...ouiaProps}
|
|
153
161
|
>
|
|
154
|
-
<MenuContent
|
|
162
|
+
<MenuContent menuHeight={menuHeight} maxMenuHeight={maxMenuHeight}>
|
|
163
|
+
{children}
|
|
164
|
+
</MenuContent>
|
|
155
165
|
</Menu>
|
|
156
166
|
);
|
|
157
167
|
return (
|
|
@@ -88,7 +88,7 @@ The dual list selector can also be built in a composable manner to make customiz
|
|
|
88
88
|
|
|
89
89
|
### Composable with drag and drop
|
|
90
90
|
|
|
91
|
-
Note: There is a new recommended drag and drop implementation with full keyboard functionality, which replaces this implementation. To adhere to our new recommendations, refer to the [drag and drop demos](/components/drag-and-drop/react-
|
|
91
|
+
Note: There is a new recommended drag and drop implementation with full keyboard functionality, which replaces this implementation. To adhere to our new recommendations, refer to the [drag and drop demos](/components/drag-and-drop/react-demos).
|
|
92
92
|
|
|
93
93
|
This example only allows reordering the contents of the "chosen" pane with drag and drop. To make a pane able to be reordered:
|
|
94
94
|
|
|
@@ -7,6 +7,8 @@ import { FormFieldGroupExpandable } from '../FormFieldGroupExpandable';
|
|
|
7
7
|
import { FormFieldGroupHeader } from '../FormFieldGroupHeader';
|
|
8
8
|
import { Button } from '../../Button';
|
|
9
9
|
|
|
10
|
+
jest.mock('../../../helpers/GenerateId/GenerateId');
|
|
11
|
+
|
|
10
12
|
test('Check form field group example against snapshot', () => {
|
|
11
13
|
const FieldGroup = (
|
|
12
14
|
<FormFieldGroup
|
|
@@ -2,6 +2,8 @@ import * as React from 'react';
|
|
|
2
2
|
import { FormSection } from '../FormSection';
|
|
3
3
|
import { render, screen } from '@testing-library/react';
|
|
4
4
|
|
|
5
|
+
jest.mock('../../../helpers/GenerateId/GenerateId');
|
|
6
|
+
|
|
5
7
|
test('Check form section example against snapshot', () => {
|
|
6
8
|
const Section = <FormSection />;
|
|
7
9
|
const { asFragment } = render(Section);
|
|
@@ -17,12 +17,12 @@ exports[`Check expandable form field group example against snapshot 1`] = `
|
|
|
17
17
|
aria-disabled="false"
|
|
18
18
|
aria-expanded="true"
|
|
19
19
|
aria-label="toggle"
|
|
20
|
-
aria-labelledby="title-text-id2
|
|
20
|
+
aria-labelledby="title-text-id2 generated-id"
|
|
21
21
|
class="pf-v6-c-button pf-m-plain"
|
|
22
22
|
data-ouia-component-id="OUIA-Generated-Button-plain-1"
|
|
23
23
|
data-ouia-component-type="PF5/Button"
|
|
24
24
|
data-ouia-safe="true"
|
|
25
|
-
id="
|
|
25
|
+
id="generated-id"
|
|
26
26
|
type="button"
|
|
27
27
|
>
|
|
28
28
|
<span
|
|
@@ -12,13 +12,13 @@ exports[`Check form section example against snapshot 1`] = `
|
|
|
12
12
|
exports[`Check form section example with title 1`] = `
|
|
13
13
|
<DocumentFragment>
|
|
14
14
|
<section
|
|
15
|
-
aria-labelledby="
|
|
15
|
+
aria-labelledby="generated-id"
|
|
16
16
|
class="pf-v6-c-form__section"
|
|
17
17
|
role="group"
|
|
18
18
|
>
|
|
19
19
|
<h4
|
|
20
20
|
class="pf-v6-c-form__section-title"
|
|
21
|
-
id="
|
|
21
|
+
id="generated-id"
|
|
22
22
|
>
|
|
23
23
|
Title
|
|
24
24
|
</h4>
|
|
@@ -27,6 +27,8 @@ export interface LabelProps extends React.HTMLProps<HTMLSpanElement> {
|
|
|
27
27
|
status?: 'success' | 'warning' | 'danger' | 'info' | 'custom';
|
|
28
28
|
/** Flag indicating the label is compact. */
|
|
29
29
|
isCompact?: boolean;
|
|
30
|
+
/** Flag indicating the label is disabled. Works only on clickable labels, so either href or onClick props must be passed in. */
|
|
31
|
+
isDisabled?: boolean;
|
|
30
32
|
/** @beta Flag indicating the label is editable. */
|
|
31
33
|
isEditable?: boolean;
|
|
32
34
|
/** @beta Additional props passed to the editable label text div. Optionally passing onInput and onBlur callbacks will allow finer custom text input control. */
|
|
@@ -106,6 +108,7 @@ export const Label: React.FunctionComponent<LabelProps> = ({
|
|
|
106
108
|
variant = 'filled',
|
|
107
109
|
status,
|
|
108
110
|
isCompact = false,
|
|
111
|
+
isDisabled = false,
|
|
109
112
|
isEditable = false,
|
|
110
113
|
editableProps,
|
|
111
114
|
textMaxWidth,
|
|
@@ -224,29 +227,23 @@ export const Label: React.FunctionComponent<LabelProps> = ({
|
|
|
224
227
|
}
|
|
225
228
|
};
|
|
226
229
|
|
|
227
|
-
const
|
|
230
|
+
const isClickableDisabled = (href || onLabelClick) && isDisabled;
|
|
228
231
|
|
|
229
|
-
|
|
230
|
-
if (closeBtnAriaLabel) {
|
|
231
|
-
_closeBtnAriaLabel = closeBtnAriaLabel;
|
|
232
|
-
} else if (typeof children === 'string') {
|
|
233
|
-
_closeBtnAriaLabel = `Close ${children}`;
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
const defaultButton = (
|
|
232
|
+
const defaultCloseButton = (
|
|
237
233
|
<Button
|
|
238
234
|
type="button"
|
|
239
235
|
variant="plain"
|
|
240
236
|
hasNoPadding
|
|
241
237
|
onClick={onClose}
|
|
242
|
-
aria-label={
|
|
238
|
+
aria-label={closeBtnAriaLabel || `Close ${children}`}
|
|
239
|
+
{...(isClickableDisabled && { isDisabled: true })}
|
|
243
240
|
{...closeBtnProps}
|
|
244
241
|
>
|
|
245
242
|
<TimesIcon />
|
|
246
243
|
</Button>
|
|
247
244
|
);
|
|
248
245
|
|
|
249
|
-
const
|
|
246
|
+
const closeButton = <span className={css(styles.labelActions)}>{closeBtn || defaultCloseButton}</span>;
|
|
250
247
|
const textRef = React.createRef<any>();
|
|
251
248
|
// ref to apply tooltip when rendered is used
|
|
252
249
|
const componentRef = React.useRef();
|
|
@@ -302,6 +299,8 @@ export const Label: React.FunctionComponent<LabelProps> = ({
|
|
|
302
299
|
className: css(styles.labelContent, isClickable && styles.modifiers.clickable),
|
|
303
300
|
...(isTooltipVisible && { tabIndex: 0 }),
|
|
304
301
|
...(href && { href }),
|
|
302
|
+
// Need to prevent onClick since aria-disabled won't prevent AT from triggering the link
|
|
303
|
+
...(href && isDisabled && { onClick: (event: MouseEvent) => event.preventDefault() }),
|
|
305
304
|
...(isButton && clickableLabelProps),
|
|
306
305
|
...(isEditable && {
|
|
307
306
|
ref: editableButtonRef,
|
|
@@ -310,7 +309,9 @@ export const Label: React.FunctionComponent<LabelProps> = ({
|
|
|
310
309
|
e.stopPropagation();
|
|
311
310
|
},
|
|
312
311
|
...editableProps
|
|
313
|
-
})
|
|
312
|
+
}),
|
|
313
|
+
...(isClickableDisabled && isButton && { disabled: true }),
|
|
314
|
+
...(isClickableDisabled && href && { tabindex: -1, 'aria-disabled': true })
|
|
314
315
|
};
|
|
315
316
|
|
|
316
317
|
let labelComponentChild = (
|
|
@@ -336,11 +337,14 @@ export const Label: React.FunctionComponent<LabelProps> = ({
|
|
|
336
337
|
);
|
|
337
338
|
}
|
|
338
339
|
|
|
340
|
+
const LabelComponent = (isOverflowLabel ? 'button' : 'span') as any;
|
|
341
|
+
|
|
339
342
|
return (
|
|
340
343
|
<LabelComponent
|
|
341
344
|
{...props}
|
|
342
345
|
className={css(
|
|
343
346
|
styles.label,
|
|
347
|
+
isClickableDisabled && styles.modifiers.disabled,
|
|
344
348
|
colorStyles[color],
|
|
345
349
|
variant === 'filled' && styles.modifiers.filled,
|
|
346
350
|
variant === 'outline' && styles.modifiers.outline,
|
|
@@ -356,7 +360,7 @@ export const Label: React.FunctionComponent<LabelProps> = ({
|
|
|
356
360
|
onClick={isOverflowLabel || isAddLabel ? onLabelClick : undefined}
|
|
357
361
|
>
|
|
358
362
|
{!isEditableActive && labelComponentChild}
|
|
359
|
-
{!isEditableActive && onClose &&
|
|
363
|
+
{!isEditableActive && onClose && closeButton}
|
|
360
364
|
{isEditableActive && (
|
|
361
365
|
<input
|
|
362
366
|
className={css(styles.labelContent)}
|
|
@@ -6,6 +6,8 @@ import userEvent from '@testing-library/user-event';
|
|
|
6
6
|
import { Label } from '../../Label';
|
|
7
7
|
import { LabelGroup } from '../index';
|
|
8
8
|
|
|
9
|
+
jest.mock('../../../helpers/GenerateId/GenerateId');
|
|
10
|
+
|
|
9
11
|
describe('LabelGroup', () => {
|
|
10
12
|
test('label group default', () => {
|
|
11
13
|
const { asFragment } = render(
|
|
@@ -134,12 +134,12 @@ exports[`LabelGroup label group with category 1`] = `
|
|
|
134
134
|
<span
|
|
135
135
|
aria-hidden="true"
|
|
136
136
|
class="pf-v6-c-label-group__label"
|
|
137
|
-
id="
|
|
137
|
+
id="generated-id"
|
|
138
138
|
>
|
|
139
139
|
category
|
|
140
140
|
</span>
|
|
141
141
|
<ul
|
|
142
|
-
aria-labelledby="
|
|
142
|
+
aria-labelledby="generated-id"
|
|
143
143
|
class="pf-v6-c-label-group__list"
|
|
144
144
|
role="list"
|
|
145
145
|
>
|
|
@@ -177,12 +177,12 @@ exports[`LabelGroup label group with category and tooltip 1`] = `
|
|
|
177
177
|
<span
|
|
178
178
|
aria-hidden="true"
|
|
179
179
|
class="pf-v6-c-label-group__label"
|
|
180
|
-
id="
|
|
180
|
+
id="generated-id"
|
|
181
181
|
>
|
|
182
182
|
A very long category name
|
|
183
183
|
</span>
|
|
184
184
|
<ul
|
|
185
|
-
aria-labelledby="
|
|
185
|
+
aria-labelledby="generated-id"
|
|
186
186
|
class="pf-v6-c-label-group__list"
|
|
187
187
|
role="list"
|
|
188
188
|
>
|
|
@@ -220,12 +220,12 @@ exports[`LabelGroup label group with closable category 1`] = `
|
|
|
220
220
|
<span
|
|
221
221
|
aria-hidden="true"
|
|
222
222
|
class="pf-v6-c-label-group__label"
|
|
223
|
-
id="
|
|
223
|
+
id="generated-id"
|
|
224
224
|
>
|
|
225
225
|
category
|
|
226
226
|
</span>
|
|
227
227
|
<ul
|
|
228
|
-
aria-labelledby="
|
|
228
|
+
aria-labelledby="generated-id"
|
|
229
229
|
class="pf-v6-c-label-group__list"
|
|
230
230
|
role="list"
|
|
231
231
|
>
|
|
@@ -254,12 +254,12 @@ exports[`LabelGroup label group with closable category 1`] = `
|
|
|
254
254
|
<button
|
|
255
255
|
aria-disabled="false"
|
|
256
256
|
aria-label="Close label group"
|
|
257
|
-
aria-labelledby="
|
|
257
|
+
aria-labelledby="remove_group_generated-id generated-id"
|
|
258
258
|
class="pf-v6-c-button pf-m-plain pf-m-no-padding"
|
|
259
259
|
data-ouia-component-id="OUIA-Generated-Button-plain-1"
|
|
260
260
|
data-ouia-component-type="PF5/Button"
|
|
261
261
|
data-ouia-safe="true"
|
|
262
|
-
id="
|
|
262
|
+
id="remove_group_generated-id"
|
|
263
263
|
type="button"
|
|
264
264
|
>
|
|
265
265
|
<svg
|