@patternfly/react-core 6.0.0-alpha.99 → 6.0.0-prerelease.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +53 -0
- package/components/package.json +1 -1
- package/deprecated/package.json +1 -1
- package/dist/dynamic/components/AboutModal/package.json +1 -1
- package/dist/dynamic/components/Accordion/package.json +1 -1
- package/dist/dynamic/components/ActionList/package.json +1 -1
- package/dist/dynamic/components/Alert/package.json +1 -1
- package/dist/dynamic/components/Avatar/package.json +1 -1
- package/dist/dynamic/components/BackToTop/package.json +1 -1
- package/dist/dynamic/components/Backdrop/package.json +1 -1
- package/dist/dynamic/components/BackgroundImage/package.json +1 -1
- package/dist/dynamic/components/Badge/package.json +1 -1
- package/dist/dynamic/components/Banner/package.json +1 -1
- package/dist/dynamic/components/Brand/package.json +1 -1
- package/dist/dynamic/components/Breadcrumb/package.json +1 -1
- package/dist/dynamic/components/Button/package.json +1 -1
- package/dist/dynamic/components/CalendarMonth/package.json +1 -1
- package/dist/dynamic/components/Card/package.json +1 -1
- package/dist/dynamic/components/Checkbox/package.json +1 -1
- package/dist/dynamic/components/ClipboardCopy/package.json +1 -1
- package/dist/dynamic/components/CodeBlock/package.json +1 -1
- package/dist/dynamic/components/Content/package.json +1 -1
- package/dist/dynamic/components/DataList/package.json +1 -1
- package/dist/dynamic/components/DatePicker/package.json +1 -1
- package/dist/dynamic/components/DescriptionList/package.json +1 -1
- package/dist/dynamic/components/Divider/package.json +1 -1
- package/dist/dynamic/components/Drawer/package.json +1 -1
- package/dist/dynamic/components/Dropdown/package.json +1 -1
- package/dist/dynamic/components/DualListSelector/package.json +1 -1
- package/dist/dynamic/components/EmptyState/package.json +1 -1
- package/dist/dynamic/components/ExpandableSection/package.json +1 -1
- package/dist/dynamic/components/FileUpload/package.json +1 -1
- package/dist/dynamic/components/Form/package.json +1 -1
- package/dist/dynamic/components/FormSelect/package.json +1 -1
- package/dist/dynamic/components/HelperText/package.json +1 -1
- package/dist/dynamic/components/Hint/package.json +1 -1
- package/dist/dynamic/components/Icon/package.json +1 -1
- package/dist/dynamic/components/InputGroup/package.json +1 -1
- package/dist/dynamic/components/JumpLinks/package.json +1 -1
- package/dist/dynamic/components/Label/package.json +1 -1
- package/dist/dynamic/components/List/package.json +1 -1
- package/dist/dynamic/components/LoginPage/package.json +1 -1
- package/dist/dynamic/components/Masthead/package.json +1 -1
- package/dist/dynamic/components/Menu/package.json +1 -1
- package/dist/dynamic/components/MenuToggle/package.json +1 -1
- package/dist/dynamic/components/Modal/package.json +1 -1
- package/dist/dynamic/components/MultipleFileUpload/package.json +1 -1
- package/dist/dynamic/components/Nav/package.json +1 -1
- package/dist/dynamic/components/NotificationBadge/package.json +1 -1
- package/dist/dynamic/components/NotificationDrawer/package.json +1 -1
- package/dist/dynamic/components/NumberInput/package.json +1 -1
- package/dist/dynamic/components/OverflowMenu/package.json +1 -1
- package/dist/dynamic/components/Page/package.json +1 -1
- package/dist/dynamic/components/Pagination/package.json +1 -1
- package/dist/dynamic/components/Panel/package.json +1 -1
- package/dist/dynamic/components/Popover/package.json +1 -1
- package/dist/dynamic/components/Progress/package.json +1 -1
- package/dist/dynamic/components/ProgressStepper/package.json +1 -1
- package/dist/dynamic/components/Radio/package.json +1 -1
- package/dist/dynamic/components/SearchInput/package.json +1 -1
- package/dist/dynamic/components/Select/package.json +1 -1
- package/dist/dynamic/components/Sidebar/package.json +1 -1
- package/dist/dynamic/components/SimpleList/package.json +1 -1
- package/dist/dynamic/components/Skeleton/package.json +1 -1
- package/dist/dynamic/components/SkipToContent/package.json +1 -1
- package/dist/dynamic/components/Slider/package.json +1 -1
- package/dist/dynamic/components/Spinner/package.json +1 -1
- package/dist/dynamic/components/Switch/package.json +1 -1
- package/dist/dynamic/components/Tabs/package.json +1 -1
- package/dist/dynamic/components/TextArea/package.json +1 -1
- package/dist/dynamic/components/TextInput/package.json +1 -1
- package/dist/dynamic/components/TextInputGroup/package.json +1 -1
- package/dist/dynamic/components/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/Chip/package.json +1 -1
- package/dist/dynamic/deprecated/components/DragDrop/package.json +1 -1
- package/dist/dynamic/deprecated/components/DualListSelector/package.json +1 -1
- package/dist/dynamic/deprecated/components/Modal/package.json +1 -1
- package/dist/dynamic/deprecated/components/Wizard/package.json +1 -1
- package/dist/dynamic/deprecated/components/package.json +1 -1
- package/dist/dynamic/helpers/FocusTrap/FocusTrap/package.json +1 -1
- package/dist/dynamic/helpers/GenerateId/GenerateId/package.json +1 -1
- package/dist/dynamic/helpers/KeyboardHandler/package.json +1 -1
- package/dist/dynamic/helpers/OUIA/ouia/package.json +1 -1
- package/dist/dynamic/helpers/Popper/Popper/package.json +1 -1
- package/dist/dynamic/helpers/constants/package.json +1 -1
- package/dist/dynamic/helpers/datetimeUtils/package.json +1 -1
- package/dist/dynamic/helpers/fileUtils/package.json +1 -1
- package/dist/dynamic/helpers/htmlConstants/package.json +1 -1
- package/dist/dynamic/helpers/package.json +1 -1
- package/dist/dynamic/helpers/resizeObserver/package.json +1 -1
- package/dist/dynamic/helpers/typeUtils/package.json +1 -1
- package/dist/dynamic/helpers/useInterval/package.json +1 -1
- package/dist/dynamic/helpers/useIsomorphicLayout/package.json +1 -1
- package/dist/dynamic/helpers/useUnmountEffect/package.json +1 -1
- package/dist/dynamic/helpers/util/package.json +1 -1
- package/dist/dynamic/layouts/Bullseye/package.json +1 -1
- package/dist/dynamic/layouts/Flex/package.json +1 -1
- package/dist/dynamic/layouts/Gallery/package.json +1 -1
- package/dist/dynamic/layouts/Grid/package.json +1 -1
- package/dist/dynamic/layouts/Level/package.json +1 -1
- package/dist/dynamic/layouts/Split/package.json +1 -1
- package/dist/dynamic/layouts/Stack/package.json +1 -1
- package/dist/dynamic/styles/package.json +1 -1
- package/dist/esm/components/Button/Button.d.ts +1 -1
- package/dist/esm/components/Button/Button.d.ts.map +1 -1
- package/dist/esm/components/Button/Button.js +8 -3
- package/dist/esm/components/Button/Button.js.map +1 -1
- package/dist/esm/components/Card/CardHeader.d.ts +16 -10
- package/dist/esm/components/Card/CardHeader.d.ts.map +1 -1
- package/dist/esm/components/Card/CardHeader.js +25 -29
- package/dist/esm/components/Card/CardHeader.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/ClipboardCopyButton.d.ts +2 -0
- package/dist/esm/components/ClipboardCopy/ClipboardCopyButton.d.ts.map +1 -1
- package/dist/esm/components/ClipboardCopy/ClipboardCopyButton.js +2 -2
- package/dist/esm/components/ClipboardCopy/ClipboardCopyButton.js.map +1 -1
- package/dist/esm/components/DatePicker/DatePicker.d.ts.map +1 -1
- package/dist/esm/components/DatePicker/DatePicker.js +2 -5
- package/dist/esm/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/esm/components/Drawer/DrawerCloseButton.d.ts.map +1 -1
- package/dist/esm/components/Drawer/DrawerCloseButton.js +1 -2
- package/dist/esm/components/Drawer/DrawerCloseButton.js.map +1 -1
- package/dist/esm/components/ExpandableSection/ExpandableSection.d.ts.map +1 -1
- package/dist/esm/components/ExpandableSection/ExpandableSection.js +6 -4
- package/dist/esm/components/ExpandableSection/ExpandableSection.js.map +1 -1
- package/dist/esm/components/ExpandableSection/ExpandableSectionToggle.d.ts.map +1 -1
- package/dist/esm/components/ExpandableSection/ExpandableSectionToggle.js +6 -4
- package/dist/esm/components/ExpandableSection/ExpandableSectionToggle.js.map +1 -1
- package/dist/esm/components/LoginPage/LoginMainHeader.js +1 -1
- package/dist/esm/components/LoginPage/LoginMainHeader.js.map +1 -1
- package/dist/esm/components/NotificationDrawer/NotificationDrawerListItemHeader.d.ts +2 -0
- package/dist/esm/components/NotificationDrawer/NotificationDrawerListItemHeader.d.ts.map +1 -1
- package/dist/esm/components/NotificationDrawer/NotificationDrawerListItemHeader.js +2 -2
- package/dist/esm/components/NotificationDrawer/NotificationDrawerListItemHeader.js.map +1 -1
- package/dist/esm/components/NumberInput/NumberInput.d.ts.map +1 -1
- package/dist/esm/components/NumberInput/NumberInput.js +4 -6
- package/dist/esm/components/NumberInput/NumberInput.js.map +1 -1
- package/dist/esm/components/Page/Page.d.ts +3 -0
- package/dist/esm/components/Page/Page.d.ts.map +1 -1
- package/dist/esm/components/Page/Page.js +4 -2
- package/dist/esm/components/Page/Page.js.map +1 -1
- package/dist/esm/components/Tabs/TabAction.d.ts.map +1 -1
- package/dist/esm/components/Tabs/TabAction.js +1 -2
- package/dist/esm/components/Tabs/TabAction.js.map +1 -1
- package/dist/esm/demos/DashboardHeader.d.ts.map +1 -1
- package/dist/esm/demos/DashboardHeader.js +2 -2
- package/dist/esm/demos/DashboardHeader.js.map +1 -1
- package/dist/esm/demos/DashboardWrapper.d.ts.map +1 -1
- package/dist/esm/demos/DashboardWrapper.js +2 -2
- package/dist/esm/demos/DashboardWrapper.js.map +1 -1
- package/dist/js/components/Button/Button.d.ts +1 -1
- package/dist/js/components/Button/Button.d.ts.map +1 -1
- package/dist/js/components/Button/Button.js +8 -3
- package/dist/js/components/Button/Button.js.map +1 -1
- package/dist/js/components/Card/CardHeader.d.ts +16 -10
- package/dist/js/components/Card/CardHeader.d.ts.map +1 -1
- package/dist/js/components/Card/CardHeader.js +25 -29
- package/dist/js/components/Card/CardHeader.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/ClipboardCopyButton.d.ts +2 -0
- package/dist/js/components/ClipboardCopy/ClipboardCopyButton.d.ts.map +1 -1
- package/dist/js/components/ClipboardCopy/ClipboardCopyButton.js +2 -2
- package/dist/js/components/ClipboardCopy/ClipboardCopyButton.js.map +1 -1
- package/dist/js/components/DatePicker/DatePicker.d.ts.map +1 -1
- package/dist/js/components/DatePicker/DatePicker.js +2 -5
- package/dist/js/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/js/components/Drawer/DrawerCloseButton.d.ts.map +1 -1
- package/dist/js/components/Drawer/DrawerCloseButton.js +1 -2
- package/dist/js/components/Drawer/DrawerCloseButton.js.map +1 -1
- package/dist/js/components/ExpandableSection/ExpandableSection.d.ts.map +1 -1
- package/dist/js/components/ExpandableSection/ExpandableSection.js +6 -4
- package/dist/js/components/ExpandableSection/ExpandableSection.js.map +1 -1
- package/dist/js/components/ExpandableSection/ExpandableSectionToggle.d.ts.map +1 -1
- package/dist/js/components/ExpandableSection/ExpandableSectionToggle.js +6 -4
- package/dist/js/components/ExpandableSection/ExpandableSectionToggle.js.map +1 -1
- package/dist/js/components/LoginPage/LoginMainHeader.js +1 -1
- package/dist/js/components/LoginPage/LoginMainHeader.js.map +1 -1
- package/dist/js/components/NotificationDrawer/NotificationDrawerListItemHeader.d.ts +2 -0
- package/dist/js/components/NotificationDrawer/NotificationDrawerListItemHeader.d.ts.map +1 -1
- package/dist/js/components/NotificationDrawer/NotificationDrawerListItemHeader.js +2 -2
- package/dist/js/components/NotificationDrawer/NotificationDrawerListItemHeader.js.map +1 -1
- package/dist/js/components/NumberInput/NumberInput.d.ts.map +1 -1
- package/dist/js/components/NumberInput/NumberInput.js +4 -6
- package/dist/js/components/NumberInput/NumberInput.js.map +1 -1
- package/dist/js/components/Page/Page.d.ts +3 -0
- package/dist/js/components/Page/Page.d.ts.map +1 -1
- package/dist/js/components/Page/Page.js +4 -2
- package/dist/js/components/Page/Page.js.map +1 -1
- package/dist/js/components/Tabs/TabAction.d.ts.map +1 -1
- package/dist/js/components/Tabs/TabAction.js +1 -2
- package/dist/js/components/Tabs/TabAction.js.map +1 -1
- package/dist/js/demos/DashboardHeader.d.ts.map +1 -1
- package/dist/js/demos/DashboardHeader.js +2 -2
- package/dist/js/demos/DashboardHeader.js.map +1 -1
- package/dist/js/demos/DashboardWrapper.d.ts.map +1 -1
- package/dist/js/demos/DashboardWrapper.js +2 -2
- package/dist/js/demos/DashboardWrapper.js.map +1 -1
- package/dist/styles/assets/images/pf_logo_white.svg +16 -17
- package/dist/styles/base-no-reset.css +14 -13
- package/dist/styles/base.css +14 -13
- package/dist/umd/assets/{output-CIrjpuGJ.css → output-BBI9yTrj.css} +11073 -11075
- 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 +10 -11
- package/scripts/{copyStyles.js → copyStyles.mjs} +7 -4
- package/src/components/AboutModal/__tests__/__snapshots__/AboutModalBoxCloseButton.test.tsx.snap +3 -3
- package/src/components/Alert/__tests__/Generated/__snapshots__/AlertActionCloseButton.test.tsx.snap +1 -1
- package/src/components/Button/Button.tsx +19 -7
- package/src/components/Card/CardHeader.tsx +115 -93
- package/src/components/Card/__tests__/CardHeader.test.tsx +330 -1
- package/src/components/Card/__tests__/__snapshots__/CardHeader.test.tsx.snap +1 -1
- package/src/components/Card/examples/CardClickable.tsx +11 -21
- package/src/components/Card/examples/CardClickableSelectable.tsx +6 -3
- package/src/components/Card/examples/CardSelectable.tsx +6 -3
- package/src/components/Card/examples/CardSingleSelectable.tsx +6 -3
- package/src/components/ClipboardCopy/ClipboardCopy.tsx +1 -0
- package/src/components/ClipboardCopy/ClipboardCopyButton.tsx +4 -0
- package/src/components/ClipboardCopy/__tests__/ClipboardCopyButton.test.tsx +8 -0
- package/src/components/ClipboardCopy/__tests__/__snapshots__/ClipboardCopyButton.test.tsx.snap +1 -1
- package/src/components/ClipboardCopy/__tests__/__snapshots__/ClipboardCopyToggle.test.tsx.snap +1 -1
- package/src/components/ClipboardCopy/examples/ClipboardCopyInlineCompactWithAdditionalAction.tsx +1 -1
- package/src/components/DataList/__tests__/Generated/__snapshots__/DataListToggle.test.tsx.snap +1 -1
- package/src/components/DataList/__tests__/__snapshots__/DataListToggle.test.tsx.snap +1 -1
- package/src/components/DatePicker/DatePicker.tsx +7 -9
- package/src/components/DatePicker/__tests__/__snapshots__/DatePicker.test.tsx.snap +44 -26
- package/src/components/Drawer/DrawerCloseButton.tsx +1 -3
- package/src/components/Drawer/__tests__/__snapshots__/Drawer.test.tsx.snap +6 -6
- package/src/components/DualListSelector/examples/DualListSelector.md +0 -1
- package/src/components/ExpandableSection/ExpandableSection.tsx +20 -15
- package/src/components/ExpandableSection/ExpandableSectionToggle.tsx +25 -20
- package/src/components/ExpandableSection/__tests__/__snapshots__/ExpandableSection.test.tsx.snap +205 -145
- package/src/components/Form/__tests__/__snapshots__/FormFieldGroup.test.tsx.snap +1 -1
- package/src/components/Form/examples/FormFieldGroups.tsx +3 -15
- package/src/components/Label/__tests__/__snapshots__/Label.test.tsx.snap +3 -3
- package/src/components/Label/__tests__/__snapshots__/LabelGroup.test.tsx.snap +1 -1
- package/src/components/LoginPage/LoginMainHeader.tsx +2 -2
- package/src/components/LoginPage/__tests__/__snapshots__/LoginForm.test.tsx.snap +1 -1
- package/src/components/LoginPage/__tests__/__snapshots__/LoginMainHeader.test.tsx.snap +4 -4
- package/src/components/LoginPage/__tests__/__snapshots__/LoginPage.test.tsx.snap +2 -2
- package/src/components/Modal/__tests__/__snapshots__/ModalContent.test.tsx.snap +1 -1
- package/src/components/Modal/examples/Modal.md +0 -1
- package/src/components/Modal/examples/ModalWithHelp.tsx +1 -3
- package/src/components/MultipleFileUpload/__tests__/__snapshots__/MultipleFileUploadStatus.test.tsx.snap +183 -135
- package/src/components/MultipleFileUpload/__tests__/__snapshots__/MultipleFileUploadStatusItem.test.tsx.snap +8 -8
- package/src/components/NotificationDrawer/NotificationDrawerListItemHeader.tsx +8 -1
- package/src/components/NotificationDrawer/__tests__/NotificationDrawerListItemHeader.test.tsx +24 -0
- package/src/components/NotificationDrawer/examples/NotificationDrawerBasic.tsx +14 -21
- package/src/components/NotificationDrawer/examples/NotificationDrawerGroups.tsx +18 -27
- package/src/components/NumberInput/NumberInput.tsx +12 -10
- package/src/components/NumberInput/__tests__/__snapshots__/NumberInput.test.tsx.snap +26 -26
- package/src/components/Page/Page.tsx +6 -0
- package/src/components/Pagination/__tests__/Generated/__snapshots__/Navigation.test.tsx.snap +4 -4
- package/src/components/Pagination/__tests__/__snapshots__/Pagination.test.tsx.snap +84 -84
- package/src/components/Popover/__tests__/Generated/__snapshots__/PopoverCloseButton.test.tsx.snap +1 -1
- package/src/components/SearchInput/__tests__/__snapshots__/SearchInput.test.tsx.snap +17 -17
- package/src/components/Tabs/TabAction.tsx +2 -3
- package/src/components/Tabs/__tests__/__snapshots__/Tab.test.tsx.snap +1 -1
- package/src/components/Toolbar/__tests__/__snapshots__/Toolbar.test.tsx.snap +4 -4
- package/src/demos/Banner.md +18 -15
- package/src/demos/CardDemos.md +1 -1
- package/src/demos/CustomMenus/examples/ContextSelectorDemo.tsx +2 -3
- package/src/demos/DashboardHeader.tsx +2 -3
- package/src/demos/DashboardWrapper.tsx +2 -0
- package/src/demos/JumpLinks.md +28 -17
- package/src/demos/NotificationDrawer/examples/NotificationDrawerBasic.tsx +2 -3
- package/src/demos/NotificationDrawer/examples/NotificationDrawerGrouped.tsx +2 -3
- package/src/demos/RTL/examples/PaginatedTable.jsx +2 -3
- package/src/demos/RTL/examples/PaginatedTable.tsx +2 -3
- package/src/demos/examples/Card/CardUtilizationDemo3.tsx +3 -3
- package/src/demos/examples/Masthead/MastheadWithHorizontalNav.tsx +2 -3
- package/src/demos/examples/Masthead/MastheadWithUtilitiesAndUserDropdownMenu.tsx +2 -3
- package/src/demos/examples/Nav/NavFlyout.tsx +2 -3
- package/src/demos/examples/Nav/NavHorizontal.tsx +2 -3
- package/src/demos/examples/Nav/NavHorizontalWithSubnav.tsx +2 -3
- package/src/demos/examples/Nav/NavManual.tsx +2 -3
- package/src/demos/examples/Page/PageContextSelector.tsx +2 -3
- package/src/demos/examples/Page/PageStickySectionBreadcrumb.tsx +2 -3
- package/src/demos/examples/Page/PageStickySectionGroup.tsx +2 -3
- package/src/demos/examples/Page/PageStickySectionGroupAlternate.tsx +2 -3
- package/src/demos/examples/Tabs/ModalTabs.tsx +58 -48
- package/src/demos/examples/Tabs/NestedTabs.tsx +0 -2
- package/src/demos/examples/Tabs/NestedUnindentedTabs.tsx +0 -2
- package/src/deprecated/components/Chip/__tests__/__snapshots__/Chip.test.tsx.snap +1 -1
- package/src/deprecated/components/Modal/__tests__/__snapshots__/ModalContent.test.tsx.snap +8 -8
- package/src/deprecated/components/Modal/examples/ModalWithHelp.tsx +1 -3
- package/src/deprecated/components/Wizard/__tests__/__snapshots__/Wizard.test.tsx.snap +2 -2
- package/dist/styles/assets/images/pf-logo-small.svg +0 -23
- package/dist/styles/assets/images/pf_logo_white.hbs +0 -35
- package/dist/styles/assets/images/pfbg-icon.svg +0 -1
- package/dist/styles/assets/pficon/pf-v5-pficon.woff2 +0 -0
- package/scripts/cleanDistExports.js +0 -14
- package/src/helpers/safeHTMLElement.js +0 -4
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { render } from '@testing-library/react';
|
|
2
|
+
import { render, screen } from '@testing-library/react';
|
|
3
|
+
import userEvent from '@testing-library/user-event';
|
|
3
4
|
import { CardHeader } from '../CardHeader';
|
|
5
|
+
import { CardContext } from '../Card';
|
|
4
6
|
|
|
5
7
|
describe('CardHeader', () => {
|
|
6
8
|
test('onExpand adds the toggle button', () => {
|
|
@@ -13,3 +15,330 @@ describe('CardHeader', () => {
|
|
|
13
15
|
expect(asFragment()).toMatchSnapshot();
|
|
14
16
|
});
|
|
15
17
|
});
|
|
18
|
+
|
|
19
|
+
// TODO: check if hasNoOffset for actions/selectableActions and className for selectableActions render
|
|
20
|
+
describe('Card with actions and selectableActions', () => {
|
|
21
|
+
test('Does not render selectable or clickable actions by default', () => {
|
|
22
|
+
render(<CardHeader>Test</CardHeader>);
|
|
23
|
+
|
|
24
|
+
expect(screen.queryByRole('checkbox')).not.toBeInTheDocument();
|
|
25
|
+
expect(screen.queryByRole('button')).not.toBeInTheDocument();
|
|
26
|
+
expect(screen.queryByRole('link')).not.toBeInTheDocument();
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
test('Renders checkbox input when Card has isSelectable and selectableActions.variant = "multiple"', () => {
|
|
30
|
+
render(
|
|
31
|
+
<CardContext.Provider value={{ isSelectable: true }}>
|
|
32
|
+
<CardHeader selectableActions={{ variant: 'multiple' }}>Test</CardHeader>
|
|
33
|
+
</CardContext.Provider>
|
|
34
|
+
);
|
|
35
|
+
|
|
36
|
+
expect(screen.getByRole('checkbox')).toBeInTheDocument();
|
|
37
|
+
});
|
|
38
|
+
test('Renders checkbox input by default when Card has isSelectable and selectableActions is passed with any props', () => {
|
|
39
|
+
render(
|
|
40
|
+
<CardContext.Provider value={{ isSelectable: true }}>
|
|
41
|
+
<CardHeader selectableActions={{ className: 'test' }}>Test</CardHeader>
|
|
42
|
+
</CardContext.Provider>
|
|
43
|
+
);
|
|
44
|
+
|
|
45
|
+
expect(screen.getByRole('checkbox')).toBeInTheDocument();
|
|
46
|
+
});
|
|
47
|
+
test('Renders radio input when Card has isSelectable and selectableActions.variant = "single"', () => {
|
|
48
|
+
render(
|
|
49
|
+
<CardContext.Provider value={{ isSelectable: true }}>
|
|
50
|
+
<CardHeader selectableActions={{ variant: 'single' }}>Test</CardHeader>
|
|
51
|
+
</CardContext.Provider>
|
|
52
|
+
);
|
|
53
|
+
|
|
54
|
+
expect(screen.getByRole('radio')).toBeInTheDocument();
|
|
55
|
+
});
|
|
56
|
+
test('Renders default ID for selectable card input when selectableActions.selectableActionId is not passed', () => {
|
|
57
|
+
render(
|
|
58
|
+
<CardContext.Provider value={{ isSelectable: true }}>
|
|
59
|
+
<CardHeader selectableActions={{ variant: 'multiple' }}>Test</CardHeader>
|
|
60
|
+
</CardContext.Provider>
|
|
61
|
+
);
|
|
62
|
+
|
|
63
|
+
expect(screen.getByRole('checkbox').getAttribute('id')).toMatch(/^card-selectable/);
|
|
64
|
+
});
|
|
65
|
+
test('Renders custom ID for selectable card input when selectableActions.selectableActionId is passed', () => {
|
|
66
|
+
render(
|
|
67
|
+
<CardContext.Provider value={{ isSelectable: true }}>
|
|
68
|
+
<CardHeader selectableActions={{ variant: 'multiple', selectableActionId: 'custom-id' }}>Test</CardHeader>
|
|
69
|
+
</CardContext.Provider>
|
|
70
|
+
);
|
|
71
|
+
|
|
72
|
+
expect(screen.getByRole('checkbox')).toHaveAttribute('id', 'custom-id');
|
|
73
|
+
});
|
|
74
|
+
test('Renders name on a selectable card input', () => {
|
|
75
|
+
render(
|
|
76
|
+
<CardContext.Provider value={{ isSelectable: true }}>
|
|
77
|
+
<CardHeader selectableActions={{ variant: 'single', name: 'test' }}>Test</CardHeader>
|
|
78
|
+
</CardContext.Provider>
|
|
79
|
+
);
|
|
80
|
+
|
|
81
|
+
expect(screen.getByRole('radio')).toHaveAttribute('name', 'test');
|
|
82
|
+
});
|
|
83
|
+
test('Renders a selectable card input as not checked by default', () => {
|
|
84
|
+
render(
|
|
85
|
+
<CardContext.Provider value={{ isSelectable: true }}>
|
|
86
|
+
<CardHeader selectableActions={{ variant: 'multiple' }}>Test</CardHeader>
|
|
87
|
+
</CardContext.Provider>
|
|
88
|
+
);
|
|
89
|
+
|
|
90
|
+
expect(screen.getByRole('checkbox')).not.toBeChecked();
|
|
91
|
+
});
|
|
92
|
+
test('Renders a selectable card input as checked when Card has isSelected = true', () => {
|
|
93
|
+
render(
|
|
94
|
+
<CardContext.Provider value={{ isSelectable: true, isSelected: true }}>
|
|
95
|
+
<CardHeader selectableActions={{ variant: 'multiple' }}>Test</CardHeader>
|
|
96
|
+
</CardContext.Provider>
|
|
97
|
+
);
|
|
98
|
+
|
|
99
|
+
expect(screen.getByRole('checkbox')).toBeChecked();
|
|
100
|
+
});
|
|
101
|
+
test('Renders a selectable card input as checked when deprecated selectableActions.isChecked is true', () => {
|
|
102
|
+
render(
|
|
103
|
+
<CardContext.Provider value={{ isSelectable: true }}>
|
|
104
|
+
<CardHeader selectableActions={{ variant: 'multiple', isChecked: true }}>Test</CardHeader>
|
|
105
|
+
</CardContext.Provider>
|
|
106
|
+
);
|
|
107
|
+
|
|
108
|
+
expect(screen.getByRole('checkbox')).toBeChecked();
|
|
109
|
+
});
|
|
110
|
+
test('Renders additional props on selectable card input when selectableActions.selectableActionProps is passed', () => {
|
|
111
|
+
render(
|
|
112
|
+
<CardContext.Provider value={{ isSelectable: true }}>
|
|
113
|
+
<CardHeader selectableActions={{ variant: 'multiple', selectableActionProps: { style: { color: 'red' } } }}>
|
|
114
|
+
Test
|
|
115
|
+
</CardHeader>
|
|
116
|
+
</CardContext.Provider>
|
|
117
|
+
);
|
|
118
|
+
|
|
119
|
+
expect(screen.getByRole('checkbox')).toHaveAttribute('style');
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
test('Does not call onChange for selectable card when card is not clicked', async () => {
|
|
123
|
+
const user = userEvent.setup();
|
|
124
|
+
const onChangeMock = jest.fn();
|
|
125
|
+
|
|
126
|
+
render(
|
|
127
|
+
<>
|
|
128
|
+
<button>Test click</button>
|
|
129
|
+
<CardContext.Provider value={{ isSelectable: true }}>
|
|
130
|
+
<CardHeader selectableActions={{ variant: 'multiple', onChange: onChangeMock }}>Test</CardHeader>
|
|
131
|
+
</CardContext.Provider>
|
|
132
|
+
</>
|
|
133
|
+
);
|
|
134
|
+
|
|
135
|
+
await user.click(screen.getByRole('button', { name: 'Test click' }));
|
|
136
|
+
expect(onChangeMock).not.toHaveBeenCalled();
|
|
137
|
+
});
|
|
138
|
+
test('Calls onChange for selectable card when card is clicked', async () => {
|
|
139
|
+
const user = userEvent.setup();
|
|
140
|
+
const onChangeMock = jest.fn();
|
|
141
|
+
|
|
142
|
+
render(
|
|
143
|
+
<CardContext.Provider value={{ isSelectable: true }}>
|
|
144
|
+
<CardHeader selectableActions={{ variant: 'multiple', onChange: onChangeMock }}>Test</CardHeader>
|
|
145
|
+
</CardContext.Provider>
|
|
146
|
+
);
|
|
147
|
+
|
|
148
|
+
const labelElement = document.querySelector('label');
|
|
149
|
+
await user.click(labelElement as HTMLElement);
|
|
150
|
+
expect(onChangeMock).toHaveBeenCalled();
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
test('Renders button element when Card has isClickable and selectableActions.onClickAction is passed"', () => {
|
|
154
|
+
render(
|
|
155
|
+
<CardContext.Provider value={{ isClickable: true }}>
|
|
156
|
+
<CardHeader selectableActions={{ onClickAction: () => {} }}>Test</CardHeader>
|
|
157
|
+
</CardContext.Provider>
|
|
158
|
+
);
|
|
159
|
+
|
|
160
|
+
expect(screen.getByRole('button')).toBeInTheDocument();
|
|
161
|
+
});
|
|
162
|
+
test('Renders anchor element when Card has isClickable and selectableActions.to is passed"', () => {
|
|
163
|
+
render(
|
|
164
|
+
<CardContext.Provider value={{ isClickable: true }}>
|
|
165
|
+
<CardHeader selectableActions={{ to: '#' }}>Test</CardHeader>
|
|
166
|
+
</CardContext.Provider>
|
|
167
|
+
);
|
|
168
|
+
|
|
169
|
+
expect(screen.getByRole('link')).toBeInTheDocument();
|
|
170
|
+
});
|
|
171
|
+
test('Renders href when Card has isClickable and selectableActions.to is passed"', () => {
|
|
172
|
+
render(
|
|
173
|
+
<CardContext.Provider value={{ isClickable: true }}>
|
|
174
|
+
<CardHeader selectableActions={{ to: '#some-id' }}>Test</CardHeader>
|
|
175
|
+
</CardContext.Provider>
|
|
176
|
+
);
|
|
177
|
+
|
|
178
|
+
expect(screen.getByRole('link')).toHaveAttribute('href', '#some-id');
|
|
179
|
+
});
|
|
180
|
+
test('Does not render ID on clickable element when selectableActions.selectableActionId is not passed"', () => {
|
|
181
|
+
render(
|
|
182
|
+
<CardContext.Provider value={{ isClickable: true }}>
|
|
183
|
+
<CardHeader selectableActions={{ to: '#' }}>Test</CardHeader>
|
|
184
|
+
</CardContext.Provider>
|
|
185
|
+
);
|
|
186
|
+
|
|
187
|
+
expect(screen.getByRole('link')).not.toHaveAttribute('id');
|
|
188
|
+
});
|
|
189
|
+
test('Renders ID on clickable element when selectableActions.selectableActionId is passed"', () => {
|
|
190
|
+
render(
|
|
191
|
+
<CardContext.Provider value={{ isClickable: true }}>
|
|
192
|
+
<CardHeader selectableActions={{ to: '#', selectableActionId: 'custom-id' }}>Test</CardHeader>
|
|
193
|
+
</CardContext.Provider>
|
|
194
|
+
);
|
|
195
|
+
|
|
196
|
+
expect(screen.getByRole('link')).toHaveAttribute('id', 'custom-id');
|
|
197
|
+
});
|
|
198
|
+
test('Renders additional props on clickable element when selectableActions.selectableActionProps is passed', () => {
|
|
199
|
+
render(
|
|
200
|
+
<CardContext.Provider value={{ isClickable: true }}>
|
|
201
|
+
<CardHeader selectableActions={{ to: '#', selectableActionProps: { style: { color: 'red' } } }}>
|
|
202
|
+
Test
|
|
203
|
+
</CardHeader>
|
|
204
|
+
</CardContext.Provider>
|
|
205
|
+
);
|
|
206
|
+
|
|
207
|
+
expect(screen.getByRole('link')).toHaveAttribute('style');
|
|
208
|
+
});
|
|
209
|
+
test('Does not render target="_blank" on clickable card anchor element by default"', () => {
|
|
210
|
+
render(
|
|
211
|
+
<CardContext.Provider value={{ isClickable: true }}>
|
|
212
|
+
<CardHeader selectableActions={{ to: '#' }}>Test</CardHeader>
|
|
213
|
+
</CardContext.Provider>
|
|
214
|
+
);
|
|
215
|
+
|
|
216
|
+
expect(screen.getByRole('link')).not.toHaveAttribute('target');
|
|
217
|
+
});
|
|
218
|
+
test('Renders target="_blank" on clickable card anchor element when selectableActions.isExternalLink is true"', () => {
|
|
219
|
+
render(
|
|
220
|
+
<CardContext.Provider value={{ isClickable: true }}>
|
|
221
|
+
<CardHeader selectableActions={{ to: '#', isExternalLink: true }}>Test</CardHeader>
|
|
222
|
+
</CardContext.Provider>
|
|
223
|
+
);
|
|
224
|
+
|
|
225
|
+
expect(screen.getByRole('link')).toHaveAttribute('target', '_blank');
|
|
226
|
+
});
|
|
227
|
+
test('Calls onClickAction for clickable card when card is clicked', async () => {
|
|
228
|
+
const user = userEvent.setup();
|
|
229
|
+
const onClickMock = jest.fn();
|
|
230
|
+
|
|
231
|
+
render(
|
|
232
|
+
<CardContext.Provider value={{ isClickable: true }}>
|
|
233
|
+
<CardHeader selectableActions={{ onClickAction: onClickMock }}>Test</CardHeader>
|
|
234
|
+
</CardContext.Provider>
|
|
235
|
+
);
|
|
236
|
+
|
|
237
|
+
await user.click(screen.getByRole('button'));
|
|
238
|
+
expect(onClickMock).toHaveBeenCalled();
|
|
239
|
+
});
|
|
240
|
+
|
|
241
|
+
test('Throws error when Card is either clickable or selectable only and has actions prop passed"', () => {
|
|
242
|
+
const errorMock = jest.fn() as any;
|
|
243
|
+
global.console = { error: errorMock } as any;
|
|
244
|
+
render(
|
|
245
|
+
<CardContext.Provider value={{ isClickable: true }}>
|
|
246
|
+
<CardHeader
|
|
247
|
+
actions={{ actions: <button>Toggle</button> }}
|
|
248
|
+
selectableActions={{ to: '#', selectableActionAriaLabel: 'Link' }}
|
|
249
|
+
>
|
|
250
|
+
Test
|
|
251
|
+
</CardHeader>
|
|
252
|
+
</CardContext.Provider>
|
|
253
|
+
);
|
|
254
|
+
|
|
255
|
+
expect(errorMock).toHaveBeenCalled();
|
|
256
|
+
});
|
|
257
|
+
test('Does not throw error when Card is both clickable and selectable and has actions prop passed"', () => {
|
|
258
|
+
const errorMock = jest.fn() as any;
|
|
259
|
+
global.console = { error: errorMock } as any;
|
|
260
|
+
render(
|
|
261
|
+
<CardContext.Provider value={{ isClickable: true, isSelectable: true }}>
|
|
262
|
+
<CardHeader
|
|
263
|
+
actions={{ actions: <button>Toggle</button> }}
|
|
264
|
+
selectableActions={{ to: '#', selectableActionAriaLabel: 'Link' }}
|
|
265
|
+
>
|
|
266
|
+
Test
|
|
267
|
+
</CardHeader>
|
|
268
|
+
</CardContext.Provider>
|
|
269
|
+
);
|
|
270
|
+
|
|
271
|
+
expect(errorMock).not.toHaveBeenCalled();
|
|
272
|
+
});
|
|
273
|
+
test('Throws error when Card has isClickable and selectableActions.selectableActionAriaLabel or selectableActions.selectableActionAriaLabelledby is not passed"', () => {
|
|
274
|
+
const errorMock = jest.fn() as any;
|
|
275
|
+
global.console = { error: errorMock } as any;
|
|
276
|
+
render(
|
|
277
|
+
<CardContext.Provider value={{ isClickable: true }}>
|
|
278
|
+
<CardHeader selectableActions={{ to: '#' }}>Test</CardHeader>
|
|
279
|
+
</CardContext.Provider>
|
|
280
|
+
);
|
|
281
|
+
|
|
282
|
+
expect(errorMock).toHaveBeenCalled();
|
|
283
|
+
});
|
|
284
|
+
test('Throws error when Card has isSelectable and selectableActions.selectableActionAriaLabel or selectableActions.selectableActionAriaLabelledby is not passed"', () => {
|
|
285
|
+
const errorMock = jest.fn() as any;
|
|
286
|
+
global.console = { error: errorMock } as any;
|
|
287
|
+
render(
|
|
288
|
+
<CardContext.Provider value={{ isSelectable: true }}>
|
|
289
|
+
<CardHeader selectableActions={{ variant: 'multiple' }}>Test</CardHeader>
|
|
290
|
+
</CardContext.Provider>
|
|
291
|
+
);
|
|
292
|
+
|
|
293
|
+
expect(errorMock).toHaveBeenCalled();
|
|
294
|
+
});
|
|
295
|
+
|
|
296
|
+
test('Renders accessible name on selectable card input when selectableActions.selectableActionAriaLabel is passed', () => {
|
|
297
|
+
const accessibleName = 'Accessible name';
|
|
298
|
+
render(
|
|
299
|
+
<CardContext.Provider value={{ isSelectable: true }}>
|
|
300
|
+
<CardHeader selectableActions={{ variant: 'multiple', selectableActionAriaLabel: accessibleName }}>
|
|
301
|
+
Test
|
|
302
|
+
</CardHeader>
|
|
303
|
+
</CardContext.Provider>
|
|
304
|
+
);
|
|
305
|
+
|
|
306
|
+
expect(screen.getByRole('checkbox')).toHaveAccessibleName(accessibleName);
|
|
307
|
+
});
|
|
308
|
+
test('Renders accessible name on selectable card input when selectableActions.selectableActionAriaLabelledby is passed', () => {
|
|
309
|
+
const labelingId = 'labelling-id';
|
|
310
|
+
const accessibleName = 'Accessible name';
|
|
311
|
+
render(
|
|
312
|
+
<CardContext.Provider value={{ isSelectable: true }}>
|
|
313
|
+
<CardHeader selectableActions={{ variant: 'multiple', selectableActionAriaLabelledby: labelingId }}>
|
|
314
|
+
<div id={labelingId}>{accessibleName}</div>
|
|
315
|
+
</CardHeader>
|
|
316
|
+
</CardContext.Provider>
|
|
317
|
+
);
|
|
318
|
+
|
|
319
|
+
expect(screen.getByRole('checkbox')).toHaveAccessibleName(accessibleName);
|
|
320
|
+
});
|
|
321
|
+
test('Renders accessible name on clickable card clickable element when selectableActions.selectableActionAriaLabel is passed', () => {
|
|
322
|
+
const accessibleName = 'Accessible name';
|
|
323
|
+
render(
|
|
324
|
+
<CardContext.Provider value={{ isClickable: true }}>
|
|
325
|
+
<CardHeader selectableActions={{ to: '#', selectableActionAriaLabel: accessibleName }}>Test</CardHeader>
|
|
326
|
+
</CardContext.Provider>
|
|
327
|
+
);
|
|
328
|
+
|
|
329
|
+
expect(screen.getByRole('link')).toHaveAccessibleName(accessibleName);
|
|
330
|
+
});
|
|
331
|
+
test('Renders accessible name on clickable card clickable element when selectableActions.selectableActionAriaLabelledby is passed', () => {
|
|
332
|
+
const labelingId = 'labelling-id';
|
|
333
|
+
const accessibleName = 'Accessible name';
|
|
334
|
+
render(
|
|
335
|
+
<CardContext.Provider value={{ isClickable: true }}>
|
|
336
|
+
<CardHeader selectableActions={{ to: '#', selectableActionAriaLabelledby: labelingId }}>
|
|
337
|
+
<div id={labelingId}>{accessibleName}</div>
|
|
338
|
+
</CardHeader>
|
|
339
|
+
</CardContext.Provider>
|
|
340
|
+
);
|
|
341
|
+
|
|
342
|
+
expect(screen.getByRole('link')).toHaveAccessibleName(accessibleName);
|
|
343
|
+
});
|
|
344
|
+
});
|
|
@@ -4,10 +4,6 @@ import { Card, CardHeader, CardTitle, CardBody, Checkbox, Gallery } from '@patte
|
|
|
4
4
|
export const CardClickable: React.FunctionComponent = () => {
|
|
5
5
|
const [isSecondary, setIsSecondary] = React.useState<boolean>(false);
|
|
6
6
|
|
|
7
|
-
const id1 = 'clickable-card-input-1';
|
|
8
|
-
const id2 = 'clickable-card-input-2';
|
|
9
|
-
const id3 = 'clickable-card-input-3';
|
|
10
|
-
|
|
11
7
|
const toggleVariant = (checked: boolean) => {
|
|
12
8
|
setIsSecondary(checked);
|
|
13
9
|
};
|
|
@@ -24,44 +20,38 @@ export const CardClickable: React.FunctionComponent = () => {
|
|
|
24
20
|
/>
|
|
25
21
|
<div style={{ marginTop: '15px' }}>
|
|
26
22
|
<Gallery hasGutter>
|
|
27
|
-
<Card
|
|
23
|
+
<Card isClickable variant={isSecondary ? 'secondary' : 'default'}>
|
|
28
24
|
<CardHeader
|
|
29
25
|
selectableActions={{
|
|
30
26
|
// eslint-disable-next-line no-console
|
|
31
|
-
onClickAction: () => console.log(
|
|
32
|
-
|
|
33
|
-
selectableActionAriaLabelledby: 'clickable-card-example-1',
|
|
34
|
-
name: 'clickable-card-example'
|
|
27
|
+
onClickAction: () => console.log(`First card in actionable example clicked`),
|
|
28
|
+
selectableActionAriaLabelledby: 'clickable-card-example-title-1'
|
|
35
29
|
}}
|
|
36
30
|
>
|
|
37
|
-
<CardTitle>First card</CardTitle>
|
|
31
|
+
<CardTitle id="clickable-card-example-title-1">First card in the actionable example</CardTitle>
|
|
38
32
|
</CardHeader>
|
|
39
33
|
<CardBody>This card performs an action on click.</CardBody>
|
|
40
34
|
</Card>
|
|
41
|
-
<Card
|
|
35
|
+
<Card isClickable variant={isSecondary ? 'secondary' : 'default'}>
|
|
42
36
|
<CardHeader
|
|
43
37
|
selectableActions={{
|
|
44
38
|
to: '#',
|
|
45
|
-
|
|
46
|
-
selectableActionAriaLabelledby: 'clickable-card-example-2',
|
|
47
|
-
name: 'clickable-card-example'
|
|
39
|
+
selectableActionAriaLabelledby: 'clickable-card-example-title-2'
|
|
48
40
|
}}
|
|
49
41
|
>
|
|
50
|
-
<CardTitle>Second card</CardTitle>
|
|
42
|
+
<CardTitle id="clickable-card-example-title-2">Second card in the actionable example</CardTitle>
|
|
51
43
|
</CardHeader>
|
|
52
44
|
<CardBody>This card can navigate to a link on click.</CardBody>
|
|
53
45
|
</Card>
|
|
54
|
-
<Card
|
|
46
|
+
<Card isClickable isDisabled variant={isSecondary ? 'secondary' : 'default'}>
|
|
55
47
|
<CardHeader
|
|
56
48
|
selectableActions={{
|
|
57
49
|
// eslint-disable-next-line no-console
|
|
58
|
-
onClickAction: () => console.log(
|
|
59
|
-
|
|
60
|
-
selectableActionAriaLabelledby: 'clickable-card-example-3',
|
|
61
|
-
name: 'clickable-card-example'
|
|
50
|
+
onClickAction: () => console.log(`Third card in actionable example clicked`),
|
|
51
|
+
selectableActionAriaLabelledby: 'clickable-card-example-title-3'
|
|
62
52
|
}}
|
|
63
53
|
>
|
|
64
|
-
<CardTitle>Third card</CardTitle>
|
|
54
|
+
<CardTitle id="clickable-card-example-title-3">Third card in the actionable example</CardTitle>
|
|
65
55
|
</CardHeader>
|
|
66
56
|
<CardBody>This card is clickable but disabled.</CardBody>
|
|
67
57
|
</Card>
|
|
@@ -61,7 +61,8 @@ export const CardClickable: React.FunctionComponent = () => {
|
|
|
61
61
|
selectableActionId: id1,
|
|
62
62
|
selectableActionAriaLabelledby: 'clickable-selectable-card-example-1',
|
|
63
63
|
name: id1,
|
|
64
|
-
onChange
|
|
64
|
+
onChange,
|
|
65
|
+
hasNoOffset: true
|
|
65
66
|
}}
|
|
66
67
|
>
|
|
67
68
|
<CardTitle>
|
|
@@ -84,7 +85,8 @@ export const CardClickable: React.FunctionComponent = () => {
|
|
|
84
85
|
selectableActionId: id2,
|
|
85
86
|
selectableActionAriaLabelledby: 'clickable-selectable-card-example-2',
|
|
86
87
|
name: id2,
|
|
87
|
-
onChange
|
|
88
|
+
onChange,
|
|
89
|
+
hasNoOffset: true
|
|
88
90
|
}}
|
|
89
91
|
>
|
|
90
92
|
<CardTitle>Second Card</CardTitle>
|
|
@@ -110,7 +112,8 @@ export const CardClickable: React.FunctionComponent = () => {
|
|
|
110
112
|
selectableActionId: id3,
|
|
111
113
|
selectableActionAriaLabelledby: 'clickable-selectable-card-example-3',
|
|
112
114
|
name: id3,
|
|
113
|
-
onChange
|
|
115
|
+
onChange,
|
|
116
|
+
hasNoOffset: true
|
|
114
117
|
}}
|
|
115
118
|
>
|
|
116
119
|
<CardTitle>
|
|
@@ -53,7 +53,8 @@ export const SelectableCard: React.FunctionComponent = () => {
|
|
|
53
53
|
selectableActionId: id1,
|
|
54
54
|
selectableActionAriaLabelledby: 'selectable-card-example-1',
|
|
55
55
|
name: id1,
|
|
56
|
-
onChange
|
|
56
|
+
onChange,
|
|
57
|
+
hasNoOffset: true
|
|
57
58
|
}}
|
|
58
59
|
>
|
|
59
60
|
<CardTitle>First card</CardTitle>
|
|
@@ -71,7 +72,8 @@ export const SelectableCard: React.FunctionComponent = () => {
|
|
|
71
72
|
selectableActionId: id2,
|
|
72
73
|
selectableActionAriaLabelledby: 'selectable-card-example-2',
|
|
73
74
|
name: id2,
|
|
74
|
-
onChange
|
|
75
|
+
onChange,
|
|
76
|
+
hasNoOffset: true
|
|
75
77
|
}}
|
|
76
78
|
>
|
|
77
79
|
<CardTitle>Second card</CardTitle>
|
|
@@ -90,7 +92,8 @@ export const SelectableCard: React.FunctionComponent = () => {
|
|
|
90
92
|
selectableActionId: id3,
|
|
91
93
|
selectableActionAriaLabelledby: 'selectable-card-example-3',
|
|
92
94
|
name: id3,
|
|
93
|
-
onChange
|
|
95
|
+
onChange,
|
|
96
|
+
hasNoOffset: true
|
|
94
97
|
}}
|
|
95
98
|
>
|
|
96
99
|
<CardTitle>Third card</CardTitle>
|
|
@@ -20,7 +20,8 @@ export const SingleSelectableCard: React.FunctionComponent = () => {
|
|
|
20
20
|
selectableActionAriaLabelledby: 'single-selectable-card-example-1',
|
|
21
21
|
name: 'single-selectable-card-example',
|
|
22
22
|
variant: 'single',
|
|
23
|
-
onChange
|
|
23
|
+
onChange,
|
|
24
|
+
hasNoOffset: true
|
|
24
25
|
}}
|
|
25
26
|
>
|
|
26
27
|
<CardTitle>First card</CardTitle>
|
|
@@ -34,7 +35,8 @@ export const SingleSelectableCard: React.FunctionComponent = () => {
|
|
|
34
35
|
selectableActionAriaLabelledby: 'single-selectable-card-example-2',
|
|
35
36
|
name: 'single-selectable-card-example',
|
|
36
37
|
variant: 'single',
|
|
37
|
-
onChange
|
|
38
|
+
onChange,
|
|
39
|
+
hasNoOffset: true
|
|
38
40
|
}}
|
|
39
41
|
>
|
|
40
42
|
<CardTitle>Second card</CardTitle>
|
|
@@ -48,7 +50,8 @@ export const SingleSelectableCard: React.FunctionComponent = () => {
|
|
|
48
50
|
selectableActionAriaLabelledby: 'single-selectable-card-example-3',
|
|
49
51
|
name: 'single-selectable-card-example',
|
|
50
52
|
variant: 'single',
|
|
51
|
-
onChange
|
|
53
|
+
onChange,
|
|
54
|
+
hasNoOffset: true
|
|
52
55
|
}}
|
|
53
56
|
>
|
|
54
57
|
<CardTitle>Third card</CardTitle>
|
|
@@ -231,6 +231,7 @@ class ClipboardCopy extends React.Component<ClipboardCopyProps, ClipboardCopySta
|
|
|
231
231
|
this.setState({ copied: true });
|
|
232
232
|
}}
|
|
233
233
|
onTooltipHidden={() => this.setState({ copied: false })}
|
|
234
|
+
hasNoPadding
|
|
234
235
|
>
|
|
235
236
|
{this.state.copied ? clickTip : hoverTip}
|
|
236
237
|
</ClipboardCopyButton>
|
|
@@ -43,6 +43,8 @@ export interface ClipboardCopyButtonProps
|
|
|
43
43
|
variant?: 'control' | 'plain';
|
|
44
44
|
/** Callback when tooltip's hide transition has finished executing */
|
|
45
45
|
onTooltipHidden?: () => void;
|
|
46
|
+
/** Removes padding from clipboard copy button. This is used for inline-compact variant */
|
|
47
|
+
hasNoPadding?: boolean;
|
|
46
48
|
}
|
|
47
49
|
|
|
48
50
|
export const ClipboardCopyButton: React.FunctionComponent<ClipboardCopyButtonProps> = ({
|
|
@@ -58,6 +60,7 @@ export const ClipboardCopyButton: React.FunctionComponent<ClipboardCopyButtonPro
|
|
|
58
60
|
variant = 'control',
|
|
59
61
|
onTooltipHidden = () => {},
|
|
60
62
|
className,
|
|
63
|
+
hasNoPadding = false,
|
|
61
64
|
...props
|
|
62
65
|
}: ClipboardCopyButtonProps) => {
|
|
63
66
|
const triggerRef = React.createRef<HTMLButtonElement>();
|
|
@@ -78,6 +81,7 @@ export const ClipboardCopyButton: React.FunctionComponent<ClipboardCopyButtonPro
|
|
|
78
81
|
<Button
|
|
79
82
|
type="button"
|
|
80
83
|
variant={variant}
|
|
84
|
+
hasNoPadding={hasNoPadding}
|
|
81
85
|
onClick={onClick}
|
|
82
86
|
aria-label={ariaLabel}
|
|
83
87
|
className={className}
|
|
@@ -4,6 +4,7 @@ import { render, screen } from '@testing-library/react';
|
|
|
4
4
|
import userEvent from '@testing-library/user-event';
|
|
5
5
|
import { ClipboardCopyButton } from '../ClipboardCopyButton';
|
|
6
6
|
import buttonStyles from '@patternfly/react-styles/css/components/Button/button';
|
|
7
|
+
import '@testing-library/jest-dom';
|
|
7
8
|
|
|
8
9
|
jest.mock('../../Tooltip', () => ({
|
|
9
10
|
Tooltip: ({ content, children, exitDelay, entryDelay, maxWidth, position, onTooltipHidden }) => (
|
|
@@ -89,6 +90,13 @@ test('Passes variant to Button when variant is passed', () => {
|
|
|
89
90
|
expect(screen.getByRole('button')).toHaveClass(buttonStyles.modifiers.plain);
|
|
90
91
|
});
|
|
91
92
|
|
|
93
|
+
test('Removes padding when hasNoPadding prop passed', () => {
|
|
94
|
+
render(<ClipboardCopyButton variant="plain" hasNoPadding {...requiredProps} />);
|
|
95
|
+
|
|
96
|
+
expect(screen.getByRole('button')).toHaveClass(buttonStyles.modifiers.plain);
|
|
97
|
+
expect(screen.getByRole('button')).toHaveClass(buttonStyles.modifiers.noPadding);
|
|
98
|
+
});
|
|
99
|
+
|
|
92
100
|
test('Calls onClick when ClipboardCopyButton is clicked', async () => {
|
|
93
101
|
const user = userEvent.setup();
|
|
94
102
|
|
package/src/components/ClipboardCopy/examples/ClipboardCopyInlineCompactWithAdditionalAction.tsx
CHANGED
|
@@ -9,7 +9,7 @@ export const ClipboardCopyInlineCompactWithAdditionalAction: React.FunctionCompo
|
|
|
9
9
|
variant="inline-compact"
|
|
10
10
|
additionalActions={
|
|
11
11
|
<ClipboardCopyAction>
|
|
12
|
-
<Button variant="plain" aria-label="Run in web terminal" icon={<PlayIcon aria-hidden />} />
|
|
12
|
+
<Button variant="plain" hasNoPadding aria-label="Run in web terminal" icon={<PlayIcon aria-hidden />} />
|
|
13
13
|
</ClipboardCopyAction>
|
|
14
14
|
}
|
|
15
15
|
>
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { css } from '@patternfly/react-styles';
|
|
3
3
|
import styles from '@patternfly/react-styles/css/components/DatePicker/date-picker';
|
|
4
|
-
import buttonStyles from '@patternfly/react-styles/css/components/Button/button';
|
|
5
4
|
import calendarMonthStyles from '@patternfly/react-styles/css/components/CalendarMonth/calendar-month';
|
|
6
5
|
import { TextInput, TextInputProps } from '../TextInput/TextInput';
|
|
6
|
+
import { Button } from '../Button';
|
|
7
7
|
import { Popover, PopoverProps } from '../Popover/Popover';
|
|
8
8
|
import { InputGroup, InputGroupItem } from '../InputGroup';
|
|
9
9
|
import OutlinedCalendarAltIcon from '@patternfly/react-icons/dist/esm/icons/outlined-calendar-alt-icon';
|
|
@@ -325,17 +325,15 @@ const DatePickerBase = (
|
|
|
325
325
|
/>
|
|
326
326
|
</InputGroupItem>
|
|
327
327
|
<InputGroupItem>
|
|
328
|
-
<
|
|
328
|
+
<Button
|
|
329
329
|
ref={buttonRef}
|
|
330
|
-
|
|
331
|
-
className={css(buttonStyles.button, buttonStyles.modifiers.control)}
|
|
330
|
+
variant="control"
|
|
332
331
|
aria-label={buttonAriaLabel}
|
|
333
|
-
type="button"
|
|
334
332
|
onClick={() => setPopoverOpen(!popoverOpen)}
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
333
|
+
isDisabled={isDisabled}
|
|
334
|
+
icon={<OutlinedCalendarAltIcon />}
|
|
335
|
+
aria-haspopup="dialog"
|
|
336
|
+
/>
|
|
339
337
|
</InputGroupItem>
|
|
340
338
|
</InputGroup>
|
|
341
339
|
</div>
|