@patternfly/react-core 5.1.1-prerelease.8 → 6.0.0-alpha.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 +103 -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/Chip/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/DragDrop/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/ContextSelector/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/package.json +1 -1
- package/dist/esm/components/BackToTop/BackToTop.js +1 -1
- package/dist/esm/components/BackToTop/BackToTop.js.map +1 -1
- package/dist/esm/components/Button/Button.d.ts +2 -2
- package/dist/esm/components/Button/Button.d.ts.map +1 -1
- package/dist/esm/components/Button/Button.js +3 -3
- package/dist/esm/components/Button/Button.js.map +1 -1
- package/dist/esm/components/ClipboardCopy/ClipboardCopy.d.ts.map +1 -1
- package/dist/esm/components/ClipboardCopy/ClipboardCopy.js +1 -1
- package/dist/esm/components/ClipboardCopy/ClipboardCopy.js.map +1 -1
- package/dist/esm/components/ClipboardCopy/ClipboardCopyExpanded.js +1 -1
- package/dist/esm/components/ClipboardCopy/ClipboardCopyExpanded.js.map +1 -1
- package/dist/esm/components/ClipboardCopy/ClipboardCopyToggle.d.ts.map +1 -1
- package/dist/esm/components/ClipboardCopy/ClipboardCopyToggle.js +5 -2
- package/dist/esm/components/ClipboardCopy/ClipboardCopyToggle.js.map +1 -1
- package/dist/esm/components/DragDrop/Draggable.d.ts.map +1 -1
- package/dist/esm/components/DragDrop/Draggable.js +1 -0
- package/dist/esm/components/DragDrop/Draggable.js.map +1 -1
- package/dist/esm/components/Drawer/Drawer.d.ts +3 -3
- package/dist/esm/components/Drawer/Drawer.d.ts.map +1 -1
- package/dist/esm/components/Drawer/Drawer.js +3 -3
- package/dist/esm/components/Drawer/Drawer.js.map +1 -1
- package/dist/esm/components/Drawer/DrawerPanelContent.d.ts.map +1 -1
- package/dist/esm/components/Drawer/DrawerPanelContent.js +77 -26
- package/dist/esm/components/Drawer/DrawerPanelContent.js.map +1 -1
- package/dist/esm/components/Dropdown/Dropdown.d.ts +3 -1
- 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/Icon/Icon.d.ts +4 -0
- package/dist/esm/components/Icon/Icon.d.ts.map +1 -1
- package/dist/esm/components/Icon/Icon.js +2 -2
- package/dist/esm/components/Icon/Icon.js.map +1 -1
- package/dist/esm/components/Label/Label.d.ts +4 -2
- package/dist/esm/components/Label/Label.d.ts.map +1 -1
- package/dist/esm/components/Label/Label.js +19 -4
- package/dist/esm/components/Label/Label.js.map +1 -1
- package/dist/esm/components/Menu/MenuContainer.d.ts +1 -1
- package/dist/esm/components/Menu/MenuContainer.d.ts.map +1 -1
- package/dist/esm/components/Modal/ModalContent.d.ts.map +1 -1
- package/dist/esm/components/Modal/ModalContent.js +3 -1
- package/dist/esm/components/Modal/ModalContent.js.map +1 -1
- package/dist/esm/components/Nav/NavItem.d.ts +1 -1
- package/dist/esm/components/Nav/NavItem.d.ts.map +1 -1
- package/dist/esm/components/Nav/NavList.d.ts +10 -4
- package/dist/esm/components/Nav/NavList.d.ts.map +1 -1
- package/dist/esm/components/Nav/NavList.js +29 -8
- package/dist/esm/components/Nav/NavList.js.map +1 -1
- package/dist/esm/components/SearchInput/SearchInput.d.ts.map +1 -1
- package/dist/esm/components/SearchInput/SearchInput.js +4 -2
- package/dist/esm/components/SearchInput/SearchInput.js.map +1 -1
- package/dist/esm/components/Select/Select.d.ts +9 -1
- 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/Slider/Slider.d.ts +8 -4
- package/dist/esm/components/Slider/Slider.d.ts.map +1 -1
- package/dist/esm/components/Slider/Slider.js +62 -16
- package/dist/esm/components/Slider/Slider.js.map +1 -1
- package/dist/esm/components/Slider/SliderStep.d.ts.map +1 -1
- package/dist/esm/components/Slider/SliderStep.js +2 -1
- package/dist/esm/components/Slider/SliderStep.js.map +1 -1
- package/dist/esm/components/Tabs/Tabs.d.ts +11 -6
- package/dist/esm/components/Tabs/Tabs.d.ts.map +1 -1
- package/dist/esm/components/Tabs/Tabs.js +35 -16
- package/dist/esm/components/Tabs/Tabs.js.map +1 -1
- package/dist/esm/components/TextInput/TextInput.d.ts +3 -1
- package/dist/esm/components/TextInput/TextInput.d.ts.map +1 -1
- package/dist/esm/components/TextInput/TextInput.js +8 -7
- package/dist/esm/components/TextInput/TextInput.js.map +1 -1
- package/dist/esm/components/Timestamp/Timestamp.d.ts +4 -0
- package/dist/esm/components/Timestamp/Timestamp.d.ts.map +1 -1
- package/dist/esm/components/Timestamp/Timestamp.js +7 -4
- package/dist/esm/components/Timestamp/Timestamp.js.map +1 -1
- package/dist/esm/helpers/Popper/Popper.d.ts +2 -1
- package/dist/esm/helpers/Popper/Popper.d.ts.map +1 -1
- package/dist/esm/helpers/Popper/Popper.js +27 -5
- package/dist/esm/helpers/Popper/Popper.js.map +1 -1
- package/dist/js/components/BackToTop/BackToTop.js +1 -1
- package/dist/js/components/BackToTop/BackToTop.js.map +1 -1
- package/dist/js/components/Button/Button.d.ts +2 -2
- package/dist/js/components/Button/Button.d.ts.map +1 -1
- package/dist/js/components/Button/Button.js +3 -3
- package/dist/js/components/Button/Button.js.map +1 -1
- package/dist/js/components/ClipboardCopy/ClipboardCopy.d.ts.map +1 -1
- package/dist/js/components/ClipboardCopy/ClipboardCopy.js +1 -1
- package/dist/js/components/ClipboardCopy/ClipboardCopy.js.map +1 -1
- package/dist/js/components/ClipboardCopy/ClipboardCopyExpanded.js +1 -1
- package/dist/js/components/ClipboardCopy/ClipboardCopyExpanded.js.map +1 -1
- package/dist/js/components/ClipboardCopy/ClipboardCopyToggle.d.ts.map +1 -1
- package/dist/js/components/ClipboardCopy/ClipboardCopyToggle.js +5 -2
- package/dist/js/components/ClipboardCopy/ClipboardCopyToggle.js.map +1 -1
- package/dist/js/components/DragDrop/Draggable.d.ts.map +1 -1
- package/dist/js/components/DragDrop/Draggable.js +1 -0
- package/dist/js/components/DragDrop/Draggable.js.map +1 -1
- package/dist/js/components/Drawer/Drawer.d.ts +3 -3
- package/dist/js/components/Drawer/Drawer.d.ts.map +1 -1
- package/dist/js/components/Drawer/Drawer.js +3 -3
- package/dist/js/components/Drawer/Drawer.js.map +1 -1
- package/dist/js/components/Drawer/DrawerPanelContent.d.ts.map +1 -1
- package/dist/js/components/Drawer/DrawerPanelContent.js +77 -26
- package/dist/js/components/Drawer/DrawerPanelContent.js.map +1 -1
- package/dist/js/components/Dropdown/Dropdown.d.ts +3 -1
- 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/Icon/Icon.d.ts +4 -0
- package/dist/js/components/Icon/Icon.d.ts.map +1 -1
- package/dist/js/components/Icon/Icon.js +2 -2
- package/dist/js/components/Icon/Icon.js.map +1 -1
- package/dist/js/components/Label/Label.d.ts +4 -2
- package/dist/js/components/Label/Label.d.ts.map +1 -1
- package/dist/js/components/Label/Label.js +19 -4
- package/dist/js/components/Label/Label.js.map +1 -1
- package/dist/js/components/Menu/MenuContainer.d.ts +1 -1
- package/dist/js/components/Menu/MenuContainer.d.ts.map +1 -1
- package/dist/js/components/Modal/ModalContent.d.ts.map +1 -1
- package/dist/js/components/Modal/ModalContent.js +3 -1
- package/dist/js/components/Modal/ModalContent.js.map +1 -1
- package/dist/js/components/Nav/NavItem.d.ts +1 -1
- package/dist/js/components/Nav/NavItem.d.ts.map +1 -1
- package/dist/js/components/Nav/NavList.d.ts +10 -4
- package/dist/js/components/Nav/NavList.d.ts.map +1 -1
- package/dist/js/components/Nav/NavList.js +29 -8
- package/dist/js/components/Nav/NavList.js.map +1 -1
- package/dist/js/components/SearchInput/SearchInput.d.ts.map +1 -1
- package/dist/js/components/SearchInput/SearchInput.js +4 -2
- package/dist/js/components/SearchInput/SearchInput.js.map +1 -1
- package/dist/js/components/Select/Select.d.ts +9 -1
- 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/Slider/Slider.d.ts +8 -4
- package/dist/js/components/Slider/Slider.d.ts.map +1 -1
- package/dist/js/components/Slider/Slider.js +62 -16
- package/dist/js/components/Slider/Slider.js.map +1 -1
- package/dist/js/components/Slider/SliderStep.d.ts.map +1 -1
- package/dist/js/components/Slider/SliderStep.js +2 -1
- package/dist/js/components/Slider/SliderStep.js.map +1 -1
- package/dist/js/components/Tabs/Tabs.d.ts +11 -6
- package/dist/js/components/Tabs/Tabs.d.ts.map +1 -1
- package/dist/js/components/Tabs/Tabs.js +35 -16
- package/dist/js/components/Tabs/Tabs.js.map +1 -1
- package/dist/js/components/TextInput/TextInput.d.ts +3 -1
- package/dist/js/components/TextInput/TextInput.d.ts.map +1 -1
- package/dist/js/components/TextInput/TextInput.js +8 -7
- package/dist/js/components/TextInput/TextInput.js.map +1 -1
- package/dist/js/components/Timestamp/Timestamp.d.ts +4 -0
- package/dist/js/components/Timestamp/Timestamp.d.ts.map +1 -1
- package/dist/js/components/Timestamp/Timestamp.js +7 -4
- package/dist/js/components/Timestamp/Timestamp.js.map +1 -1
- package/dist/js/helpers/Popper/Popper.d.ts +2 -1
- package/dist/js/helpers/Popper/Popper.d.ts.map +1 -1
- package/dist/js/helpers/Popper/Popper.js +29 -6
- package/dist/js/helpers/Popper/Popper.js.map +1 -1
- 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 +8 -7
- package/src/components/BackToTop/BackToTop.tsx +1 -1
- package/src/components/BackToTop/__tests__/BackToTop.test.tsx +1 -1
- package/src/components/BackToTop/__tests__/__snapshots__/BackToTop.test.tsx.snap +1 -1
- package/src/components/BackgroundImage/__tests__/BackgroundImage.test.tsx +21 -7
- package/src/components/BackgroundImage/__tests__/__snapshots__/BackgroundImage.test.tsx.snap +11 -0
- package/src/components/Brand/__tests__/Brand.test.tsx +105 -30
- package/src/components/Breadcrumb/examples/BreadcrumbDropdown.tsx +25 -3
- package/src/components/Button/Button.tsx +5 -5
- package/src/components/Button/examples/ButtonVariations.tsx +1 -1
- package/src/components/Checkbox/examples/Checkbox.md +8 -2
- package/src/components/Checkbox/examples/CheckboxControlled.tsx +18 -16
- package/src/components/ClipboardCopy/ClipboardCopy.tsx +1 -0
- package/src/components/ClipboardCopy/ClipboardCopyExpanded.tsx +1 -1
- package/src/components/ClipboardCopy/ClipboardCopyToggle.tsx +5 -2
- package/src/components/ClipboardCopy/__tests__/__snapshots__/ClipboardCopyExpanded.test.tsx.snap +3 -1
- package/src/components/ClipboardCopy/__tests__/__snapshots__/ClipboardCopyToggle.test.tsx.snap +16 -12
- package/src/components/DragDrop/Draggable.tsx +1 -0
- package/src/components/Drawer/Drawer.tsx +6 -6
- package/src/components/Drawer/DrawerPanelContent.tsx +72 -26
- package/src/components/Drawer/examples/Drawer.md +12 -12
- package/src/components/Drawer/examples/{DrawerInlinePanelRight.tsx → DrawerInlinePanelEnd.tsx} +1 -1
- package/src/components/Drawer/examples/{DrawerInlinePanelLeft.tsx → DrawerInlinePanelStart.tsx} +2 -2
- package/src/components/Drawer/examples/{DrawerPanelLeft.tsx → DrawerPanelEnd.tsx} +2 -2
- package/src/components/Drawer/examples/{DrawerPanelRight.tsx → DrawerPanelStart.tsx} +2 -2
- package/src/components/Drawer/examples/{DrawerResizableOnRight.tsx → DrawerResizableAtEnd.tsx} +3 -3
- package/src/components/Drawer/examples/{DrawerResizableOnLeft.tsx → DrawerResizableAtStart.tsx} +2 -2
- package/src/components/Dropdown/Dropdown.tsx +3 -1
- package/src/components/Icon/Icon.tsx +15 -1
- package/src/components/Icon/__tests__/Icon.test.tsx +16 -0
- package/src/components/Label/Label.tsx +29 -3
- package/src/components/Label/__tests__/Label.test.tsx +35 -0
- package/src/components/Label/__tests__/__snapshots__/Label.test.tsx.snap +1 -0
- package/src/components/Label/examples/LabelFilled.tsx +220 -168
- package/src/components/Label/examples/LabelOutline.tsx +280 -226
- package/src/components/Menu/MenuContainer.tsx +1 -1
- package/src/components/Menu/examples/MenuWithDrilldownBreadcrumbs.tsx +32 -15
- package/src/components/Modal/ModalContent.tsx +4 -6
- package/src/components/Nav/NavItem.tsx +1 -1
- package/src/components/Nav/NavList.tsx +44 -12
- package/src/components/Nav/__tests__/__snapshots__/Nav.test.tsx.snap +10 -10
- package/src/components/Page/__tests__/__snapshots__/Page.test.tsx.snap +6 -6
- package/src/components/SearchInput/SearchInput.tsx +5 -2
- package/src/components/SearchInput/__tests__/__snapshots__/SearchInput.test.tsx.snap +105 -65
- package/src/components/SearchInput/examples/SearchInputAdvanced.tsx +1 -1
- package/src/components/Select/Select.tsx +9 -1
- package/src/components/Slider/Slider.tsx +69 -20
- package/src/components/Slider/SliderStep.tsx +2 -1
- package/src/components/Slider/_tests_/Slider.test.tsx +3 -3
- package/src/components/Slider/examples/SliderActions.tsx +3 -3
- package/src/components/Tabs/Tabs.tsx +50 -26
- package/src/components/Tabs/examples/Tabs.md +1 -3
- package/src/components/TextInput/TextInput.tsx +11 -7
- package/src/components/TextInput/__tests__/TextInput.test.tsx +16 -1
- package/src/components/TextInput/__tests__/__snapshots__/TextInput.test.tsx.snap +2 -1
- package/src/components/TextInput/examples/TextInput.md +2 -2
- package/src/components/TextInput/examples/{TextInputLeftTruncated.tsx → TextInputStartTruncated.tsx} +3 -3
- package/src/components/Timestamp/Timestamp.tsx +12 -3
- package/src/components/Timestamp/__tests__/Timestamp.test.tsx +6 -0
- package/src/components/Timestamp/examples/Timestamp.md +8 -0
- package/src/components/Timestamp/examples/TimestampDefault.tsx +7 -1
- package/src/components/Timestamp/examples/TimestampDefaultTooltip.tsx +1 -1
- package/src/components/Toolbar/examples/Toolbar.md +0 -6
- package/src/demos/Card/Card.md +3 -664
- package/src/demos/Card/examples/CardView.tsx +575 -0
- package/src/demos/CardDemos.md +4 -4
- package/src/demos/CustomMenus/examples/ApplicationLauncherDemo.tsx +1 -1
- package/src/demos/DataListDemo.md +7 -4
- package/src/demos/PrimaryDetail.md +3 -4
- package/src/deprecated/components/ContextSelector/__tests__/__snapshots__/ContextSelector.test.tsx.snap +42 -26
- package/src/helpers/Popper/Popper.tsx +43 -6
- package/src/components/Brand/__tests__/__snapshots__/Brand.test.tsx.snap +0 -11
- package/src/components/Checkbox/examples/checkbox.css +0 -3
- package/src/components/Toolbar/examples/Test.tsx +0 -258
- /package/src/demos/Card/{CardData.jsx → examples/CardData.jsx} +0 -0
|
@@ -87,8 +87,8 @@ export const DrawerPanelContent: React.FunctionComponent<DrawerPanelContentProps
|
|
|
87
87
|
const previouslyFocusedElement = React.useRef(null);
|
|
88
88
|
let currWidth: number = 0;
|
|
89
89
|
let panelRect: DOMRect;
|
|
90
|
-
let
|
|
91
|
-
let
|
|
90
|
+
let end: number;
|
|
91
|
+
let start: number;
|
|
92
92
|
let bottom: number;
|
|
93
93
|
let setInitialVals: boolean = true;
|
|
94
94
|
|
|
@@ -108,23 +108,52 @@ export const DrawerPanelContent: React.FunctionComponent<DrawerPanelContentProps
|
|
|
108
108
|
const calcValueNow = () => {
|
|
109
109
|
let splitterPos;
|
|
110
110
|
let drawerSize;
|
|
111
|
+
const isRTL = window.getComputedStyle(panel.current).getPropertyValue('direction') === 'rtl';
|
|
111
112
|
|
|
112
|
-
if (isInline && position === 'right') {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
splitterRef.current.getBoundingClientRect().right -
|
|
126
|
-
|
|
127
|
-
|
|
113
|
+
if (isInline && (position === 'end' || position === 'right')) {
|
|
114
|
+
if (isRTL) {
|
|
115
|
+
splitterPos = panel.current.getBoundingClientRect().left - splitterRef.current.getBoundingClientRect().right;
|
|
116
|
+
drawerSize = drawerRef.current.getBoundingClientRect().left - drawerRef.current.getBoundingClientRect().right;
|
|
117
|
+
} else {
|
|
118
|
+
splitterPos = panel.current.getBoundingClientRect().right - splitterRef.current.getBoundingClientRect().left;
|
|
119
|
+
drawerSize = drawerRef.current.getBoundingClientRect().right - drawerRef.current.getBoundingClientRect().left;
|
|
120
|
+
}
|
|
121
|
+
} else if (isInline && (position === 'start' || position === 'left')) {
|
|
122
|
+
if (isRTL) {
|
|
123
|
+
splitterPos = splitterRef.current.getBoundingClientRect().left - panel.current.getBoundingClientRect().right;
|
|
124
|
+
drawerSize = drawerRef.current.getBoundingClientRect().left - drawerRef.current.getBoundingClientRect().right;
|
|
125
|
+
} else {
|
|
126
|
+
splitterPos = splitterRef.current.getBoundingClientRect().right - panel.current.getBoundingClientRect().left;
|
|
127
|
+
drawerSize = drawerRef.current.getBoundingClientRect().right - drawerRef.current.getBoundingClientRect().left;
|
|
128
|
+
}
|
|
129
|
+
} else if (position === 'end' || position === 'right') {
|
|
130
|
+
if (isRTL) {
|
|
131
|
+
splitterPos =
|
|
132
|
+
drawerContentRef.current.getBoundingClientRect().left - splitterRef.current.getBoundingClientRect().right;
|
|
133
|
+
drawerSize =
|
|
134
|
+
drawerContentRef.current.getBoundingClientRect().left -
|
|
135
|
+
drawerContentRef.current.getBoundingClientRect().right;
|
|
136
|
+
} else {
|
|
137
|
+
splitterPos =
|
|
138
|
+
drawerContentRef.current.getBoundingClientRect().right - splitterRef.current.getBoundingClientRect().left;
|
|
139
|
+
drawerSize =
|
|
140
|
+
drawerContentRef.current.getBoundingClientRect().right -
|
|
141
|
+
drawerContentRef.current.getBoundingClientRect().left;
|
|
142
|
+
}
|
|
143
|
+
} else if (position === 'start' || position === 'left') {
|
|
144
|
+
if (isRTL) {
|
|
145
|
+
splitterPos =
|
|
146
|
+
splitterRef.current.getBoundingClientRect().left - drawerContentRef.current.getBoundingClientRect().right;
|
|
147
|
+
drawerSize =
|
|
148
|
+
drawerContentRef.current.getBoundingClientRect().left -
|
|
149
|
+
drawerContentRef.current.getBoundingClientRect().right;
|
|
150
|
+
} else {
|
|
151
|
+
splitterPos =
|
|
152
|
+
splitterRef.current.getBoundingClientRect().right - drawerContentRef.current.getBoundingClientRect().left;
|
|
153
|
+
drawerSize =
|
|
154
|
+
drawerContentRef.current.getBoundingClientRect().right -
|
|
155
|
+
drawerContentRef.current.getBoundingClientRect().left;
|
|
156
|
+
}
|
|
128
157
|
} else if (position === 'bottom') {
|
|
129
158
|
splitterPos =
|
|
130
159
|
drawerContentRef.current.getBoundingClientRect().bottom - splitterRef.current.getBoundingClientRect().top;
|
|
@@ -166,6 +195,8 @@ export const DrawerPanelContent: React.FunctionComponent<DrawerPanelContentProps
|
|
|
166
195
|
};
|
|
167
196
|
|
|
168
197
|
const handleControlMove = (e: MouseEvent | TouchEvent, controlPosition: number) => {
|
|
198
|
+
const isRTL = window.getComputedStyle(panel.current).getPropertyValue('direction') === 'rtl';
|
|
199
|
+
|
|
169
200
|
e.stopPropagation();
|
|
170
201
|
if (!isResizing) {
|
|
171
202
|
return;
|
|
@@ -173,17 +204,22 @@ export const DrawerPanelContent: React.FunctionComponent<DrawerPanelContentProps
|
|
|
173
204
|
|
|
174
205
|
if (setInitialVals) {
|
|
175
206
|
panelRect = panel.current.getBoundingClientRect();
|
|
176
|
-
|
|
177
|
-
|
|
207
|
+
if (isRTL) {
|
|
208
|
+
start = panelRect.right;
|
|
209
|
+
end = panelRect.left;
|
|
210
|
+
} else {
|
|
211
|
+
end = panelRect.right;
|
|
212
|
+
start = panelRect.left;
|
|
213
|
+
}
|
|
178
214
|
bottom = panelRect.bottom;
|
|
179
215
|
setInitialVals = false;
|
|
180
216
|
}
|
|
181
217
|
const mousePos = controlPosition;
|
|
182
218
|
let newSize = 0;
|
|
183
|
-
if (position === 'right') {
|
|
184
|
-
newSize =
|
|
185
|
-
} else if (position === 'left') {
|
|
186
|
-
newSize = mousePos -
|
|
219
|
+
if (position === 'end' || position === 'right') {
|
|
220
|
+
newSize = isRTL ? mousePos - end : end - mousePos;
|
|
221
|
+
} else if (position === 'start' || position === 'left') {
|
|
222
|
+
newSize = isRTL ? start - mousePos : mousePos - start;
|
|
187
223
|
} else {
|
|
188
224
|
newSize = bottom - mousePos;
|
|
189
225
|
}
|
|
@@ -225,6 +261,8 @@ export const DrawerPanelContent: React.FunctionComponent<DrawerPanelContentProps
|
|
|
225
261
|
const callbackMouseUp = React.useCallback(handleMouseup, []);
|
|
226
262
|
|
|
227
263
|
const handleKeys = (e: React.KeyboardEvent) => {
|
|
264
|
+
const isRTL = window.getComputedStyle(panel.current).getPropertyValue('direction') === 'rtl';
|
|
265
|
+
|
|
228
266
|
const key = e.key;
|
|
229
267
|
if (
|
|
230
268
|
key !== 'Escape' &&
|
|
@@ -248,9 +286,17 @@ export const DrawerPanelContent: React.FunctionComponent<DrawerPanelContentProps
|
|
|
248
286
|
newSize = position === 'bottom' ? panelRect.height : panelRect.width;
|
|
249
287
|
let delta = 0;
|
|
250
288
|
if (key === 'ArrowRight') {
|
|
251
|
-
|
|
289
|
+
if (isRTL) {
|
|
290
|
+
delta = position === 'left' || position === 'start' ? -increment : increment;
|
|
291
|
+
} else {
|
|
292
|
+
delta = position === 'left' || position === 'start' ? increment : -increment;
|
|
293
|
+
}
|
|
252
294
|
} else if (key === 'ArrowLeft') {
|
|
253
|
-
|
|
295
|
+
if (isRTL) {
|
|
296
|
+
delta = position === 'left' || position === 'start' ? increment : -increment;
|
|
297
|
+
} else {
|
|
298
|
+
delta = position === 'left' || position === 'start' ? -increment : increment;
|
|
299
|
+
}
|
|
254
300
|
} else if (key === 'ArrowUp') {
|
|
255
301
|
delta = increment;
|
|
256
302
|
} else if (key === 'ArrowDown') {
|
|
@@ -26,15 +26,15 @@ section: components
|
|
|
26
26
|
|
|
27
27
|
```
|
|
28
28
|
|
|
29
|
-
### Panel
|
|
29
|
+
### Panel at end
|
|
30
30
|
|
|
31
|
-
```ts file="./
|
|
31
|
+
```ts file="./DrawerPanelEnd.tsx"
|
|
32
32
|
|
|
33
33
|
```
|
|
34
34
|
|
|
35
|
-
### Panel
|
|
35
|
+
### Panel at start
|
|
36
36
|
|
|
37
|
-
```ts file="./
|
|
37
|
+
```ts file="./DrawerPanelStart.tsx"
|
|
38
38
|
|
|
39
39
|
```
|
|
40
40
|
|
|
@@ -50,15 +50,15 @@ section: components
|
|
|
50
50
|
|
|
51
51
|
```
|
|
52
52
|
|
|
53
|
-
### Inline panel
|
|
53
|
+
### Inline panel at end
|
|
54
54
|
|
|
55
|
-
```ts file="./
|
|
55
|
+
```ts file="./DrawerInlinePanelEnd.tsx"
|
|
56
56
|
|
|
57
57
|
```
|
|
58
58
|
|
|
59
|
-
### Inline panel
|
|
59
|
+
### Inline panel at start
|
|
60
60
|
|
|
61
|
-
```ts file="./
|
|
61
|
+
```ts file="./DrawerInlinePanelStart.tsx"
|
|
62
62
|
|
|
63
63
|
```
|
|
64
64
|
|
|
@@ -100,15 +100,15 @@ section: components
|
|
|
100
100
|
|
|
101
101
|
```
|
|
102
102
|
|
|
103
|
-
### Resizable
|
|
103
|
+
### Resizable at end
|
|
104
104
|
|
|
105
|
-
```ts file="
|
|
105
|
+
```ts file="DrawerResizableAtEnd.tsx"
|
|
106
106
|
|
|
107
107
|
```
|
|
108
108
|
|
|
109
|
-
### Resizable
|
|
109
|
+
### Resizable at start
|
|
110
110
|
|
|
111
|
-
```ts file="
|
|
111
|
+
```ts file="DrawerResizableAtStart.tsx"
|
|
112
112
|
|
|
113
113
|
```
|
|
114
114
|
|
package/src/components/Drawer/examples/{DrawerInlinePanelRight.tsx → DrawerInlinePanelEnd.tsx}
RENAMED
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
Button
|
|
11
11
|
} from '@patternfly/react-core';
|
|
12
12
|
|
|
13
|
-
export const
|
|
13
|
+
export const DrawerInlinePanelEnd: React.FunctionComponent = () => {
|
|
14
14
|
const [isExpanded, setIsExpanded] = React.useState(false);
|
|
15
15
|
const drawerRef = React.useRef<HTMLDivElement>();
|
|
16
16
|
|
package/src/components/Drawer/examples/{DrawerInlinePanelLeft.tsx → DrawerInlinePanelStart.tsx}
RENAMED
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
Button
|
|
11
11
|
} from '@patternfly/react-core';
|
|
12
12
|
|
|
13
|
-
export const
|
|
13
|
+
export const DrawerInlinePanelStart: React.FunctionComponent = () => {
|
|
14
14
|
const [isExpanded, setIsExpanded] = React.useState(false);
|
|
15
15
|
const drawerRef = React.useRef<HTMLDivElement>();
|
|
16
16
|
|
|
@@ -47,7 +47,7 @@ export const DrawerInlinePanelLeft: React.FunctionComponent = () => {
|
|
|
47
47
|
<Button aria-expanded={isExpanded} onClick={onClick}>
|
|
48
48
|
Toggle drawer
|
|
49
49
|
</Button>
|
|
50
|
-
<Drawer isExpanded={isExpanded} isInline position="
|
|
50
|
+
<Drawer isExpanded={isExpanded} isInline position="start" onExpand={onExpand}>
|
|
51
51
|
<DrawerContent panelContent={panelContent}>
|
|
52
52
|
<DrawerContentBody>{drawerContent}</DrawerContentBody>
|
|
53
53
|
</DrawerContent>
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
Button
|
|
11
11
|
} from '@patternfly/react-core';
|
|
12
12
|
|
|
13
|
-
export const
|
|
13
|
+
export const DrawerPanelEnd: React.FunctionComponent = () => {
|
|
14
14
|
const [isExpanded, setIsExpanded] = React.useState(false);
|
|
15
15
|
const drawerRef = React.useRef<HTMLDivElement>();
|
|
16
16
|
|
|
@@ -47,7 +47,7 @@ export const DrawerPanelLeft: React.FunctionComponent = () => {
|
|
|
47
47
|
<Button aria-expanded={isExpanded} onClick={onClick}>
|
|
48
48
|
Toggle drawer
|
|
49
49
|
</Button>
|
|
50
|
-
<Drawer isExpanded={isExpanded} position="
|
|
50
|
+
<Drawer isExpanded={isExpanded} position="end" onExpand={onExpand}>
|
|
51
51
|
<DrawerContent panelContent={panelContent}>
|
|
52
52
|
<DrawerContentBody>{drawerContent}</DrawerContentBody>
|
|
53
53
|
</DrawerContent>
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
Button
|
|
11
11
|
} from '@patternfly/react-core';
|
|
12
12
|
|
|
13
|
-
export const
|
|
13
|
+
export const DrawerPanelStart: React.FunctionComponent = () => {
|
|
14
14
|
const [isExpanded, setIsExpanded] = React.useState(false);
|
|
15
15
|
const drawerRef = React.useRef<HTMLDivElement>();
|
|
16
16
|
|
|
@@ -47,7 +47,7 @@ export const DrawerPanelRight: React.FunctionComponent = () => {
|
|
|
47
47
|
<Button aria-expanded={isExpanded} onClick={onClick}>
|
|
48
48
|
Toggle drawer
|
|
49
49
|
</Button>
|
|
50
|
-
<Drawer isExpanded={isExpanded} position="
|
|
50
|
+
<Drawer isExpanded={isExpanded} position="start" onExpand={onExpand}>
|
|
51
51
|
<DrawerContent panelContent={panelContent}>
|
|
52
52
|
<DrawerContentBody>{drawerContent}</DrawerContentBody>
|
|
53
53
|
</DrawerContent>
|
package/src/components/Drawer/examples/{DrawerResizableOnRight.tsx → DrawerResizableAtEnd.tsx}
RENAMED
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
Button
|
|
11
11
|
} from '@patternfly/react-core';
|
|
12
12
|
|
|
13
|
-
export const
|
|
13
|
+
export const DrawerResizableAtEnd: React.FunctionComponent = () => {
|
|
14
14
|
const [isExpanded, setIsExpanded] = React.useState(false);
|
|
15
15
|
const drawerRef = React.useRef<HTMLDivElement>();
|
|
16
16
|
|
|
@@ -32,7 +32,7 @@ export const DrawerResizableOnRight: React.FunctionComponent = () => {
|
|
|
32
32
|
};
|
|
33
33
|
|
|
34
34
|
const panelContent = (
|
|
35
|
-
<DrawerPanelContent isResizable onResize={onResize} id="
|
|
35
|
+
<DrawerPanelContent isResizable onResize={onResize} id="end-resize-panel" defaultSize={'500px'} minSize={'150px'}>
|
|
36
36
|
<DrawerHead>
|
|
37
37
|
<span tabIndex={isExpanded ? 0 : -1} ref={drawerRef}>
|
|
38
38
|
drawer-panel
|
|
@@ -52,7 +52,7 @@ export const DrawerResizableOnRight: React.FunctionComponent = () => {
|
|
|
52
52
|
<Button aria-expanded={isExpanded} onClick={onClick}>
|
|
53
53
|
Toggle drawer
|
|
54
54
|
</Button>
|
|
55
|
-
<Drawer isExpanded={isExpanded} onExpand={onExpand} position="
|
|
55
|
+
<Drawer isExpanded={isExpanded} onExpand={onExpand} position="end">
|
|
56
56
|
<DrawerContent panelContent={panelContent}>
|
|
57
57
|
<DrawerContentBody>{drawerContent}</DrawerContentBody>
|
|
58
58
|
</DrawerContent>
|
package/src/components/Drawer/examples/{DrawerResizableOnLeft.tsx → DrawerResizableAtStart.tsx}
RENAMED
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
Button
|
|
11
11
|
} from '@patternfly/react-core';
|
|
12
12
|
|
|
13
|
-
export const
|
|
13
|
+
export const DrawerResizableAtStart: React.FunctionComponent = () => {
|
|
14
14
|
const [isExpanded, setIsExpanded] = React.useState(false);
|
|
15
15
|
const drawerRef = React.useRef<HTMLDivElement>();
|
|
16
16
|
|
|
@@ -47,7 +47,7 @@ export const DrawerResizableOnLeft: React.FunctionComponent = () => {
|
|
|
47
47
|
<Button aria-expanded={isExpanded} onClick={onClick}>
|
|
48
48
|
Toggle drawer
|
|
49
49
|
</Button>
|
|
50
|
-
<Drawer isExpanded={isExpanded} onExpand={onExpand} position="
|
|
50
|
+
<Drawer isExpanded={isExpanded} onExpand={onExpand} position="start">
|
|
51
51
|
<DrawerContent panelContent={panelContent}>
|
|
52
52
|
<DrawerContentBody>{drawerContent}</DrawerContentBody>
|
|
53
53
|
</DrawerContent>
|
|
@@ -8,7 +8,7 @@ export interface DropdownPopperProps {
|
|
|
8
8
|
/** Vertical direction of the popper. If enableFlip is set to true, this will set the initial direction before the popper flips. */
|
|
9
9
|
direction?: 'up' | 'down';
|
|
10
10
|
/** Horizontal position of the popper */
|
|
11
|
-
position?: 'right' | 'left' | 'center';
|
|
11
|
+
position?: 'right' | 'left' | 'center' | 'start' | 'end';
|
|
12
12
|
/** Custom width of the popper. If the value is "trigger", it will set the width to the dropdown toggle's width */
|
|
13
13
|
width?: string | 'trigger';
|
|
14
14
|
/** Minimum width of the popper. If the value is "trigger", it will set the min width to the dropdown toggle's width */
|
|
@@ -17,6 +17,8 @@ export interface DropdownPopperProps {
|
|
|
17
17
|
maxWidth?: string | 'trigger';
|
|
18
18
|
/** Enable to flip the popper when it reaches the boundary */
|
|
19
19
|
enableFlip?: boolean;
|
|
20
|
+
/** The container to append the popper to. Defaults to 'inline'. */
|
|
21
|
+
appendTo?: HTMLElement | (() => HTMLElement) | 'inline';
|
|
20
22
|
}
|
|
21
23
|
|
|
22
24
|
export interface DropdownToggleProps {
|
|
@@ -24,6 +24,10 @@ export interface IconComponentProps extends Omit<React.HTMLProps<HTMLSpanElement
|
|
|
24
24
|
isInProgress?: boolean;
|
|
25
25
|
/** Aria-label for the default progress icon */
|
|
26
26
|
defaultProgressArialabel?: string;
|
|
27
|
+
/** @beta Flag indicating whether the icon passed as children should be mirrored for
|
|
28
|
+
* right to left (RTL) languages. This will not mirror the icon passed to progressIcon.
|
|
29
|
+
*/
|
|
30
|
+
shouldMirrorRTL?: boolean;
|
|
27
31
|
}
|
|
28
32
|
|
|
29
33
|
export const Icon: React.FunctionComponent<IconComponentProps> = ({
|
|
@@ -37,6 +41,7 @@ export const Icon: React.FunctionComponent<IconComponentProps> = ({
|
|
|
37
41
|
isInline = false,
|
|
38
42
|
isInProgress = false,
|
|
39
43
|
defaultProgressArialabel = 'Loading...',
|
|
44
|
+
shouldMirrorRTL = false,
|
|
40
45
|
...props
|
|
41
46
|
}: IconComponentProps) => {
|
|
42
47
|
const _progressIcon = progressIcon ?? <Spinner diameter="1em" aria-label={defaultProgressArialabel} />;
|
|
@@ -52,7 +57,16 @@ export const Icon: React.FunctionComponent<IconComponentProps> = ({
|
|
|
52
57
|
)}
|
|
53
58
|
{...props}
|
|
54
59
|
>
|
|
55
|
-
<span
|
|
60
|
+
<span
|
|
61
|
+
className={css(
|
|
62
|
+
styles.iconContent,
|
|
63
|
+
styles.modifiers[iconSize],
|
|
64
|
+
styles.modifiers[status],
|
|
65
|
+
shouldMirrorRTL && 'pf-v5-m-mirror-inline-rtl'
|
|
66
|
+
)}
|
|
67
|
+
>
|
|
68
|
+
{children}
|
|
69
|
+
</span>
|
|
56
70
|
{isInProgress && (
|
|
57
71
|
<span className={css(styles.iconProgress, styles.modifiers[progressIconSize], className)}>{_progressIcon}</span>
|
|
58
72
|
)}
|
|
@@ -194,3 +194,19 @@ test('renders progress icon successfully', () => {
|
|
|
194
194
|
);
|
|
195
195
|
expect(asFragment()).toMatchSnapshot();
|
|
196
196
|
});
|
|
197
|
+
|
|
198
|
+
test('Renders with class pf-v5-m-mirror-inline-rtl on icon passed as children when shouldMirrorRTL is true', () => {
|
|
199
|
+
render(<Icon shouldMirrorRTL>Icon content</Icon>);
|
|
200
|
+
|
|
201
|
+
expect(screen.getByText('Icon content')).toHaveClass('pf-v5-m-mirror-inline-rtl');
|
|
202
|
+
});
|
|
203
|
+
|
|
204
|
+
test('Does not render with class pf-v5-m-mirror-inline-rtl on progressIcon when shouldMirrorRTL is true', () => {
|
|
205
|
+
render(
|
|
206
|
+
<Icon shouldMirrorRTL isInProgress progressIcon="Progress icon">
|
|
207
|
+
Icon content
|
|
208
|
+
</Icon>
|
|
209
|
+
);
|
|
210
|
+
|
|
211
|
+
expect(screen.getByText('Progress icon')).not.toHaveClass('pf-v5-m-mirror-inline-rtl');
|
|
212
|
+
});
|
|
@@ -55,10 +55,12 @@ export interface LabelProps extends React.HTMLProps<HTMLSpanElement> {
|
|
|
55
55
|
closeBtnAriaLabel?: string;
|
|
56
56
|
/** Additional properties for the default close button. */
|
|
57
57
|
closeBtnProps?: any;
|
|
58
|
-
/** Href for a label that is a link. If present, the label will change to an anchor element. */
|
|
58
|
+
/** Href for a label that is a link. If present, the label will change to an anchor element. This should not be passed in if the onClick prop is also passed in. */
|
|
59
59
|
href?: string;
|
|
60
|
-
/** Flag indicating if the label is an overflow label */
|
|
60
|
+
/** Flag indicating if the label is an overflow label. */
|
|
61
61
|
isOverflowLabel?: boolean;
|
|
62
|
+
/** Callback for when the label is clicked. This should not be passed in if the href or isEditable props are also passed in. */
|
|
63
|
+
onClick?: (event: React.MouseEvent) => void;
|
|
62
64
|
/** Forwards the label content and className to rendered function. Use this prop for react router support.*/
|
|
63
65
|
render?: ({
|
|
64
66
|
className,
|
|
@@ -94,6 +96,7 @@ export const Label: React.FunctionComponent<LabelProps> = ({
|
|
|
94
96
|
tooltipPosition,
|
|
95
97
|
icon,
|
|
96
98
|
onClose,
|
|
99
|
+
onClick: onLabelClick,
|
|
97
100
|
onEditCancel,
|
|
98
101
|
onEditComplete,
|
|
99
102
|
closeBtn,
|
|
@@ -118,6 +121,20 @@ export const Label: React.FunctionComponent<LabelProps> = ({
|
|
|
118
121
|
};
|
|
119
122
|
});
|
|
120
123
|
|
|
124
|
+
React.useEffect(() => {
|
|
125
|
+
if (onLabelClick && href) {
|
|
126
|
+
// eslint-disable-next-line no-console
|
|
127
|
+
console.warn(
|
|
128
|
+
'Link labels cannot have onClick passed, this results in invalid HTML. Please remove either the href or onClick prop.'
|
|
129
|
+
);
|
|
130
|
+
} else if (onLabelClick && isEditable) {
|
|
131
|
+
// eslint-disable-next-line no-console
|
|
132
|
+
console.warn(
|
|
133
|
+
'Editable labels cannot have onClick passed, clicking starts the label edit process. Please remove either the isEditable or onClick prop.'
|
|
134
|
+
);
|
|
135
|
+
}
|
|
136
|
+
}, [onLabelClick, href, isEditable]);
|
|
137
|
+
|
|
121
138
|
const onDocMouseDown = (event: MouseEvent) => {
|
|
122
139
|
if (
|
|
123
140
|
isEditableActive &&
|
|
@@ -235,14 +252,22 @@ export const Label: React.FunctionComponent<LabelProps> = ({
|
|
|
235
252
|
let LabelComponentChildElement = 'span';
|
|
236
253
|
if (href) {
|
|
237
254
|
LabelComponentChildElement = 'a';
|
|
238
|
-
} else if (isEditable) {
|
|
255
|
+
} else if (isEditable || (onLabelClick && !isOverflowLabel)) {
|
|
239
256
|
LabelComponentChildElement = 'button';
|
|
240
257
|
}
|
|
241
258
|
|
|
259
|
+
const clickableLabelProps = {
|
|
260
|
+
type: 'button',
|
|
261
|
+
onClick: onLabelClick
|
|
262
|
+
};
|
|
263
|
+
|
|
264
|
+
const isButton = LabelComponentChildElement === 'button';
|
|
265
|
+
|
|
242
266
|
const labelComponentChildProps = {
|
|
243
267
|
className: css(styles.labelContent),
|
|
244
268
|
...(isTooltipVisible && { tabIndex: 0 }),
|
|
245
269
|
...(href && { href }),
|
|
270
|
+
...(isButton && clickableLabelProps),
|
|
246
271
|
...(isEditable && {
|
|
247
272
|
ref: editableButtonRef,
|
|
248
273
|
onClick: (e: React.MouseEvent) => {
|
|
@@ -289,6 +314,7 @@ export const Label: React.FunctionComponent<LabelProps> = ({
|
|
|
289
314
|
isEditableActive && styles.modifiers.editableActive,
|
|
290
315
|
className
|
|
291
316
|
)}
|
|
317
|
+
onClick={isOverflowLabel ? onLabelClick : undefined}
|
|
292
318
|
>
|
|
293
319
|
{!isEditableActive && labelComponentChild}
|
|
294
320
|
{!isEditableActive && onClose && button}
|
|
@@ -109,4 +109,39 @@ describe('Label', () => {
|
|
|
109
109
|
expect(screen.queryByRole('button', { name: 'Something' })).toBeNull();
|
|
110
110
|
expect(asFragment()).toMatchSnapshot();
|
|
111
111
|
});
|
|
112
|
+
|
|
113
|
+
test('a button is not rendered when onClick is not passed', () => {
|
|
114
|
+
render(<Label>Click me</Label>);
|
|
115
|
+
|
|
116
|
+
expect(screen.queryByRole(`button`)).not.toBeInTheDocument();
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
test('a button is rendered when onClick is passed', () => {
|
|
120
|
+
const fn = jest.fn();
|
|
121
|
+
|
|
122
|
+
render(<Label onClick={fn}>Click me</Label>);
|
|
123
|
+
|
|
124
|
+
expect(screen.getByRole(`button`)).toBeVisible();
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
test('clickable label does not call the passed callback when it is not clicked', async () => {
|
|
128
|
+
const mockCallback = jest.fn();
|
|
129
|
+
|
|
130
|
+
render(<Label onClick={mockCallback}>Click me</Label>);
|
|
131
|
+
|
|
132
|
+
expect(mockCallback).not.toHaveBeenCalled();
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
test('clickable label calls passed callback on click', async () => {
|
|
136
|
+
const mockCallback = jest.fn();
|
|
137
|
+
const user = userEvent.setup();
|
|
138
|
+
|
|
139
|
+
render(<Label onClick={mockCallback}>Click me</Label>);
|
|
140
|
+
|
|
141
|
+
const label = screen.getByRole('button');
|
|
142
|
+
|
|
143
|
+
await user.click(label);
|
|
144
|
+
|
|
145
|
+
expect(mockCallback).toBeCalledTimes(1);
|
|
146
|
+
});
|
|
112
147
|
});
|