@patternfly/react-core 6.0.0-alpha.10 → 6.0.0-alpha.12
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 +11 -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/Button/Button.d.ts +14 -4
- package/dist/esm/components/Button/Button.d.ts.map +1 -1
- package/dist/esm/components/Button/Button.js +9 -8
- package/dist/esm/components/Button/Button.js.map +1 -1
- package/dist/esm/components/ExpandableSection/ExpandableSection.js +1 -1
- package/dist/esm/components/ExpandableSection/ExpandableSection.js.map +1 -1
- package/dist/esm/components/ExpandableSection/ExpandableSectionToggle.js +1 -1
- package/dist/esm/components/ExpandableSection/ExpandableSectionToggle.js.map +1 -1
- package/dist/esm/components/Nav/Nav.d.ts +1 -3
- package/dist/esm/components/Nav/Nav.d.ts.map +1 -1
- package/dist/esm/components/Nav/Nav.js +4 -5
- package/dist/esm/components/Nav/Nav.js.map +1 -1
- package/dist/esm/components/Nav/NavExpandable.d.ts.map +1 -1
- package/dist/esm/components/Nav/NavExpandable.js +1 -1
- package/dist/esm/components/Nav/NavExpandable.js.map +1 -1
- package/dist/esm/components/Nav/NavItem.d.ts.map +1 -1
- package/dist/esm/components/Nav/NavItem.js +4 -2
- package/dist/esm/components/Nav/NavItem.js.map +1 -1
- package/dist/esm/components/Nav/NavList.d.ts.map +1 -1
- package/dist/esm/components/Nav/NavList.js +9 -4
- package/dist/esm/components/Nav/NavList.js.map +1 -1
- package/dist/esm/components/Page/Page.d.ts +6 -6
- package/dist/esm/components/Page/Page.d.ts.map +1 -1
- package/dist/esm/components/Page/Page.js +9 -9
- package/dist/esm/components/Page/Page.js.map +1 -1
- package/dist/js/components/Button/Button.d.ts +14 -4
- package/dist/js/components/Button/Button.d.ts.map +1 -1
- package/dist/js/components/Button/Button.js +10 -9
- package/dist/js/components/Button/Button.js.map +1 -1
- package/dist/js/components/ExpandableSection/ExpandableSection.js +1 -1
- package/dist/js/components/ExpandableSection/ExpandableSection.js.map +1 -1
- package/dist/js/components/ExpandableSection/ExpandableSectionToggle.js +1 -1
- package/dist/js/components/ExpandableSection/ExpandableSectionToggle.js.map +1 -1
- package/dist/js/components/Nav/Nav.d.ts +1 -3
- package/dist/js/components/Nav/Nav.d.ts.map +1 -1
- package/dist/js/components/Nav/Nav.js +4 -5
- package/dist/js/components/Nav/Nav.js.map +1 -1
- package/dist/js/components/Nav/NavExpandable.d.ts.map +1 -1
- package/dist/js/components/Nav/NavExpandable.js +1 -1
- package/dist/js/components/Nav/NavExpandable.js.map +1 -1
- package/dist/js/components/Nav/NavItem.d.ts.map +1 -1
- package/dist/js/components/Nav/NavItem.js +4 -2
- package/dist/js/components/Nav/NavItem.js.map +1 -1
- package/dist/js/components/Nav/NavList.d.ts.map +1 -1
- package/dist/js/components/Nav/NavList.js +9 -4
- package/dist/js/components/Nav/NavList.js.map +1 -1
- package/dist/js/components/Page/Page.d.ts +6 -6
- package/dist/js/components/Page/Page.d.ts.map +1 -1
- package/dist/js/components/Page/Page.js +9 -9
- package/dist/js/components/Page/Page.js.map +1 -1
- package/dist/umd/react-core.min.js +1 -1
- package/helpers/package.json +1 -1
- package/layouts/package.json +1 -1
- package/next/package.json +1 -1
- package/package.json +6 -6
- package/src/components/Button/Button.tsx +21 -9
- package/src/components/Button/__tests__/Button.test.tsx +20 -5
- package/src/components/Button/__tests__/__snapshots__/Button.test.tsx.snap +1 -1
- package/src/components/Button/examples/Button.md +17 -0
- package/src/components/Button/examples/ButtonAriaDisabled.tsx +21 -45
- package/src/components/Button/examples/ButtonCallToAction.tsx +8 -10
- package/src/components/Button/examples/ButtonDisabled.tsx +44 -31
- package/src/components/Button/examples/ButtonLinks.tsx +14 -14
- package/src/components/Button/examples/ButtonPlainHasNoPadding.tsx +13 -0
- package/src/components/Button/examples/ButtonProgress.tsx +22 -17
- package/src/components/Button/examples/ButtonSmall.tsx +7 -9
- package/src/components/Button/examples/ButtonStateful.tsx +32 -0
- package/src/components/Button/examples/ButtonTypes.tsx +6 -4
- package/src/components/Button/examples/ButtonVariations.tsx +58 -43
- package/src/components/Button/examples/ButtonWithCount.tsx +75 -68
- package/src/components/ExpandableSection/ExpandableSection.tsx +1 -1
- package/src/components/ExpandableSection/ExpandableSectionToggle.tsx +1 -1
- package/src/components/ExpandableSection/examples/ExpandableSection.md +5 -1
- package/src/components/ExpandableSection/examples/ExpandableSectionIndented.tsx +24 -11
- package/src/components/Nav/Nav.tsx +5 -11
- package/src/components/Nav/NavExpandable.tsx +0 -1
- package/src/components/Nav/NavItem.tsx +4 -2
- package/src/components/Nav/NavList.tsx +27 -18
- package/src/components/Nav/__tests__/Generated/__snapshots__/NavExpandable.test.tsx.snap +1 -1
- package/src/components/Nav/__tests__/Nav.test.tsx +2 -32
- package/src/components/Nav/__tests__/__snapshots__/Nav.test.tsx.snap +156 -362
- package/src/components/Nav/examples/Nav.md +0 -6
- package/src/components/Nav/examples/NavExpandable.tsx +1 -2
- package/src/components/Nav/examples/nav.css +0 -14
- package/src/components/Page/Page.tsx +16 -16
- package/src/components/Page/__tests__/Page.test.tsx +5 -5
- package/src/components/Page/__tests__/__snapshots__/Page.test.tsx.snap +178 -106
- package/src/components/Page/examples/Page.md +1 -11
- package/src/components/Page/examples/PageGroupSection.tsx +1 -1
- package/src/demos/Nav.md +0 -10
- package/src/demos/examples/Masthead/MastheadWithUtilitiesAndUserDropdownMenu.tsx +1 -2
- package/src/components/Nav/examples/NavLegacyTertiary.tsx +0 -32
- package/src/components/Page/examples/PageTertiaryNav.tsx +0 -41
- package/src/demos/examples/Nav/deprecated/NavLight.tsx +0 -95
- package/src/demos/examples/Nav/deprecated/NavTertiary.tsx +0 -91
|
@@ -1,54 +1,69 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { Button } from '@patternfly/react-core';
|
|
2
|
+
import { Button, Flex } from '@patternfly/react-core';
|
|
3
3
|
import TimesIcon from '@patternfly/react-icons/dist/esm/icons/times-icon';
|
|
4
4
|
import PlusCircleIcon from '@patternfly/react-icons/dist/esm/icons/plus-circle-icon';
|
|
5
5
|
import ExternalLinkSquareAltIcon from '@patternfly/react-icons/dist/esm/icons/external-link-square-alt-icon';
|
|
6
6
|
import CopyIcon from '@patternfly/react-icons/dist/esm/icons/copy-icon';
|
|
7
|
+
import BellIcon from '@patternfly/react-icons/dist/esm/icons/bell-icon';
|
|
7
8
|
|
|
8
9
|
export const ButtonVariations: React.FunctionComponent = () => (
|
|
9
|
-
|
|
10
|
-
<
|
|
11
|
-
Primary
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
Secondary
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
Tertiary
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
Danger
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
Warning
|
|
27
|
-
|
|
10
|
+
<>
|
|
11
|
+
<Flex columnGap={{ default: 'columnGapSm' }}>
|
|
12
|
+
<Button variant="primary" ouiaId="Primary">
|
|
13
|
+
Primary
|
|
14
|
+
</Button>
|
|
15
|
+
<Button variant="secondary" ouiaId="Secondary">
|
|
16
|
+
Secondary
|
|
17
|
+
</Button>
|
|
18
|
+
<Button variant="secondary" ouiaId="DangerSecondary" isDanger>
|
|
19
|
+
Danger Secondary
|
|
20
|
+
</Button>
|
|
21
|
+
<Button variant="tertiary" ouiaId="Tertiary">
|
|
22
|
+
Tertiary
|
|
23
|
+
</Button>
|
|
24
|
+
<Button variant="danger" ouiaId="Danger">
|
|
25
|
+
Danger
|
|
26
|
+
</Button>
|
|
27
|
+
<Button variant="warning" ouiaId="Warning">
|
|
28
|
+
Warning
|
|
29
|
+
</Button>
|
|
30
|
+
</Flex>
|
|
28
31
|
<br />
|
|
32
|
+
<Flex columnGap={{ default: 'columnGapSm' }}>
|
|
33
|
+
<Button variant="link" icon={<PlusCircleIcon />}>
|
|
34
|
+
Link
|
|
35
|
+
</Button>
|
|
36
|
+
<Button variant="link" icon={<ExternalLinkSquareAltIcon />} iconPosition="end">
|
|
37
|
+
Link
|
|
38
|
+
</Button>
|
|
39
|
+
<Button variant="link" isInline>
|
|
40
|
+
Inline link
|
|
41
|
+
</Button>
|
|
42
|
+
<Button variant="link" isDanger>
|
|
43
|
+
Danger link
|
|
44
|
+
</Button>
|
|
45
|
+
<Button variant="plain" aria-label="Action">
|
|
46
|
+
<TimesIcon />
|
|
47
|
+
</Button>
|
|
48
|
+
</Flex>
|
|
29
49
|
<br />
|
|
30
|
-
<
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
</
|
|
36
|
-
<Button variant="link" isInline>
|
|
37
|
-
Inline link
|
|
38
|
-
</Button>{' '}
|
|
39
|
-
<Button variant="link" isDanger>
|
|
40
|
-
Danger link
|
|
41
|
-
</Button>
|
|
50
|
+
<Flex columnGap={{ default: 'columnGapSm' }}>
|
|
51
|
+
<Button variant="control">Control</Button>
|
|
52
|
+
<Button variant="control" aria-label="Copy">
|
|
53
|
+
<CopyIcon />
|
|
54
|
+
</Button>
|
|
55
|
+
</Flex>
|
|
42
56
|
<br />
|
|
43
|
-
<
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
57
|
+
<Flex columnGap={{ default: 'columnGapSm' }}>
|
|
58
|
+
<Button variant="stateful" icon={<BellIcon />} state="read">
|
|
59
|
+
Stateful read
|
|
60
|
+
</Button>
|
|
61
|
+
<Button variant="stateful" icon={<BellIcon />} state="unread">
|
|
62
|
+
Stateful unread
|
|
63
|
+
</Button>
|
|
64
|
+
<Button variant="stateful" icon={<BellIcon />} state="attention">
|
|
65
|
+
Stateful attention
|
|
66
|
+
</Button>
|
|
67
|
+
</Flex>
|
|
68
|
+
</>
|
|
54
69
|
);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { BadgeCountObject, Button } from '@patternfly/react-core';
|
|
2
|
+
import { BadgeCountObject, Button, Flex } from '@patternfly/react-core';
|
|
3
3
|
|
|
4
4
|
export const ButtonWithCount: React.FunctionComponent = () => {
|
|
5
5
|
const badgeCountObjectNotRead: BadgeCountObject = {
|
|
@@ -15,75 +15,82 @@ export const ButtonWithCount: React.FunctionComponent = () => {
|
|
|
15
15
|
};
|
|
16
16
|
|
|
17
17
|
return (
|
|
18
|
-
|
|
19
|
-
<
|
|
20
|
-
<
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
18
|
+
<>
|
|
19
|
+
<div>Unread:</div>
|
|
20
|
+
<Flex columnGap={{ default: 'columnGapSm' }}>
|
|
21
|
+
<Button variant="primary" countOptions={badgeCountObjectNotRead}>
|
|
22
|
+
Issues
|
|
23
|
+
</Button>
|
|
24
|
+
<Button variant="secondary" countOptions={badgeCountObjectNotRead}>
|
|
25
|
+
Issues
|
|
26
|
+
</Button>
|
|
27
|
+
<Button variant="tertiary" countOptions={badgeCountObjectNotRead}>
|
|
28
|
+
Issues
|
|
29
|
+
</Button>
|
|
30
|
+
<Button variant="control" countOptions={badgeCountObjectNotRead}>
|
|
31
|
+
Issues
|
|
32
|
+
</Button>
|
|
33
|
+
<Button variant="link" countOptions={badgeCountObjectNotRead}>
|
|
34
|
+
Issues
|
|
35
|
+
</Button>
|
|
36
|
+
</Flex>
|
|
35
37
|
<br />
|
|
36
|
-
<
|
|
37
|
-
<
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
38
|
+
<div>Unread disabled:</div>
|
|
39
|
+
<Flex columnGap={{ default: 'columnGapSm' }}>
|
|
40
|
+
<Button variant="primary" isDisabled countOptions={badgeCountObjectNotRead}>
|
|
41
|
+
Issues
|
|
42
|
+
</Button>
|
|
43
|
+
<Button variant="secondary" isDisabled countOptions={badgeCountObjectNotRead}>
|
|
44
|
+
Issues
|
|
45
|
+
</Button>
|
|
46
|
+
<Button variant="tertiary" isDisabled countOptions={badgeCountObjectNotRead}>
|
|
47
|
+
Issues
|
|
48
|
+
</Button>
|
|
49
|
+
<Button variant="control" isDisabled countOptions={badgeCountObjectNotRead}>
|
|
50
|
+
Issues
|
|
51
|
+
</Button>
|
|
52
|
+
<Button variant="link" isDisabled countOptions={badgeCountObjectNotRead}>
|
|
53
|
+
Issues
|
|
54
|
+
</Button>
|
|
55
|
+
</Flex>
|
|
52
56
|
<br />
|
|
53
|
-
<
|
|
54
|
-
<
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
57
|
+
<div>Read:</div>
|
|
58
|
+
<Flex columnGap={{ default: 'columnGapSm' }}>
|
|
59
|
+
<Button variant="primary" countOptions={badgeCountObjectRead}>
|
|
60
|
+
Issues
|
|
61
|
+
</Button>
|
|
62
|
+
<Button variant="secondary" countOptions={badgeCountObjectRead}>
|
|
63
|
+
Issues
|
|
64
|
+
</Button>
|
|
65
|
+
<Button variant="tertiary" countOptions={badgeCountObjectRead}>
|
|
66
|
+
Issues
|
|
67
|
+
</Button>
|
|
68
|
+
<Button variant="control" countOptions={badgeCountObjectRead}>
|
|
69
|
+
Issues
|
|
70
|
+
</Button>
|
|
71
|
+
<Button variant="link" countOptions={badgeCountObjectRead}>
|
|
72
|
+
Issues
|
|
73
|
+
</Button>
|
|
74
|
+
</Flex>
|
|
69
75
|
<br />
|
|
70
|
-
<
|
|
71
|
-
<
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
76
|
+
<div>Read disabled:</div>
|
|
77
|
+
<Flex columnGap={{ default: 'columnGapSm' }}>
|
|
78
|
+
<Button variant="primary" isDisabled countOptions={badgeCountObjectRead}>
|
|
79
|
+
Issues
|
|
80
|
+
</Button>
|
|
81
|
+
<Button variant="secondary" isDisabled countOptions={badgeCountObjectRead}>
|
|
82
|
+
Issues
|
|
83
|
+
</Button>
|
|
84
|
+
<Button variant="tertiary" isDisabled countOptions={badgeCountObjectRead}>
|
|
85
|
+
Issues
|
|
86
|
+
</Button>
|
|
87
|
+
<Button variant="control" isDisabled countOptions={badgeCountObjectRead}>
|
|
88
|
+
Issues
|
|
89
|
+
</Button>
|
|
90
|
+
<Button variant="link" isDisabled countOptions={badgeCountObjectRead}>
|
|
91
|
+
Issues
|
|
92
|
+
</Button>
|
|
93
|
+
</Flex>
|
|
94
|
+
</>
|
|
88
95
|
);
|
|
89
96
|
};
|
|
@@ -239,7 +239,7 @@ class ExpandableSection extends React.Component<ExpandableSectionProps, Expandab
|
|
|
239
239
|
<AngleRightIcon aria-hidden />
|
|
240
240
|
</span>
|
|
241
241
|
)}
|
|
242
|
-
<span className={css(
|
|
242
|
+
<span className={css(styles.expandableSectionToggleText)}>{toggleContent || computedToggleText}</span>
|
|
243
243
|
</button>
|
|
244
244
|
);
|
|
245
245
|
|
|
@@ -68,7 +68,7 @@ export const ExpandableSectionToggle: React.FunctionComponent<ExpandableSectionT
|
|
|
68
68
|
<AngleRightIcon aria-hidden />
|
|
69
69
|
</span>
|
|
70
70
|
)}
|
|
71
|
-
<span className={css(
|
|
71
|
+
<span className={css(styles.expandableSectionToggleText)}>{children}</span>
|
|
72
72
|
</button>
|
|
73
73
|
</div>
|
|
74
74
|
);
|
|
@@ -37,11 +37,15 @@ When passing the `isDetached` property into `<ExpandableSection>`, you must also
|
|
|
37
37
|
|
|
38
38
|
### Disclosure variation
|
|
39
39
|
|
|
40
|
+
You can pass in the `displaySize="lg"` property for a disclosure variation styling.
|
|
41
|
+
|
|
40
42
|
```ts file="ExpandableSectionDisclosure.tsx"
|
|
41
43
|
|
|
42
44
|
```
|
|
43
45
|
|
|
44
|
-
### Indented
|
|
46
|
+
### Indented expandable content
|
|
47
|
+
|
|
48
|
+
You can indent the expandable content by passing in the `isIndented` property. This will not affect the expandable toggle.
|
|
45
49
|
|
|
46
50
|
```ts file="ExpandableSectionIndented.tsx"
|
|
47
51
|
|
|
@@ -1,21 +1,34 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { ExpandableSection } from '@patternfly/react-core';
|
|
1
|
+
import React, { FormEvent } from 'react';
|
|
2
|
+
import { ExpandableSection, Checkbox } from '@patternfly/react-core';
|
|
3
3
|
|
|
4
4
|
export const ExpandableSectionIndented: React.FunctionComponent = () => {
|
|
5
|
-
const [isExpanded, setIsExpanded] = React.useState(
|
|
5
|
+
const [isExpanded, setIsExpanded] = React.useState(true);
|
|
6
|
+
const [isDisplayLgChecked, setIsDisplayLgChecked] = React.useState(false);
|
|
6
7
|
|
|
7
8
|
const onToggle = (_event: React.MouseEvent, isExpanded: boolean) => {
|
|
8
9
|
setIsExpanded(isExpanded);
|
|
9
10
|
};
|
|
10
11
|
|
|
12
|
+
const onDisplaySizeCheck = (_event: FormEvent<HTMLInputElement>, checked: boolean) => setIsDisplayLgChecked(checked);
|
|
13
|
+
|
|
11
14
|
return (
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
15
|
+
<>
|
|
16
|
+
<Checkbox
|
|
17
|
+
id="displaySize-checkbox"
|
|
18
|
+
isChecked={isDisplayLgChecked}
|
|
19
|
+
label='displaySize="lg"'
|
|
20
|
+
onChange={onDisplaySizeCheck}
|
|
21
|
+
/>
|
|
22
|
+
<br />
|
|
23
|
+
<ExpandableSection
|
|
24
|
+
toggleText={isExpanded ? 'Show less' : 'Show more'}
|
|
25
|
+
onToggle={onToggle}
|
|
26
|
+
isExpanded={isExpanded}
|
|
27
|
+
isIndented
|
|
28
|
+
displaySize={isDisplayLgChecked ? 'lg' : 'default'}
|
|
29
|
+
>
|
|
30
|
+
This content is visible only when the component is expanded.
|
|
31
|
+
</ExpandableSection>
|
|
32
|
+
</>
|
|
20
33
|
);
|
|
21
34
|
};
|
|
@@ -35,10 +35,8 @@ export interface NavProps
|
|
|
35
35
|
) => void;
|
|
36
36
|
/** Accessible label for the nav when there are multiple navs on the page */
|
|
37
37
|
'aria-label'?: string;
|
|
38
|
-
/** Indicates which theme color to use */
|
|
39
|
-
theme?: 'dark' | 'light';
|
|
40
38
|
/** For horizontal navs */
|
|
41
|
-
variant?: 'default' | 'horizontal' | '
|
|
39
|
+
variant?: 'default' | 'horizontal' | 'horizontal-subnav';
|
|
42
40
|
/** Value to overwrite the randomly generated data-ouia-component-id.*/
|
|
43
41
|
ouiaId?: number | string;
|
|
44
42
|
/** Set the value of data-ouia-safe. Only set to true when the component is in a static state, i.e. no animations are occurring. At all other times, this value must be false. */
|
|
@@ -72,7 +70,6 @@ class Nav extends React.Component<
|
|
|
72
70
|
static defaultProps: NavProps = {
|
|
73
71
|
onSelect: () => undefined,
|
|
74
72
|
onToggle: () => undefined,
|
|
75
|
-
theme: 'dark',
|
|
76
73
|
ouiaSafe: true
|
|
77
74
|
};
|
|
78
75
|
|
|
@@ -121,13 +118,12 @@ class Nav extends React.Component<
|
|
|
121
118
|
onSelect,
|
|
122
119
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
123
120
|
onToggle,
|
|
124
|
-
theme,
|
|
125
121
|
ouiaId,
|
|
126
122
|
ouiaSafe,
|
|
127
123
|
variant,
|
|
128
124
|
...props
|
|
129
125
|
} = this.props;
|
|
130
|
-
const isHorizontal = ['horizontal', '
|
|
126
|
+
const isHorizontal = ['horizontal', 'horizontal-subnav'].includes(variant);
|
|
131
127
|
|
|
132
128
|
return (
|
|
133
129
|
<NavContext.Provider
|
|
@@ -148,7 +144,7 @@ class Nav extends React.Component<
|
|
|
148
144
|
onToggle: (event: React.MouseEvent<HTMLButtonElement>, groupId: number | string, expanded: boolean) =>
|
|
149
145
|
this.onToggle(event, groupId, expanded),
|
|
150
146
|
updateIsScrollable: (isScrollable: boolean) => this.setState({ isScrollable }),
|
|
151
|
-
isHorizontal: ['horizontal', '
|
|
147
|
+
isHorizontal: ['horizontal', 'horizontal-subnav'].includes(variant),
|
|
152
148
|
flyoutRef: this.state.flyoutRef,
|
|
153
149
|
setFlyoutRef: (flyoutRef) => this.setState({ flyoutRef }),
|
|
154
150
|
navRef: this.navRef
|
|
@@ -157,14 +153,12 @@ class Nav extends React.Component<
|
|
|
157
153
|
<nav
|
|
158
154
|
className={css(
|
|
159
155
|
styles.nav,
|
|
160
|
-
theme === 'light' && styles.modifiers.light,
|
|
161
156
|
isHorizontal && styles.modifiers.horizontal,
|
|
162
|
-
variant === '
|
|
163
|
-
variant === 'horizontal-subnav' && styles.modifiers.horizontalSubnav,
|
|
157
|
+
variant === 'horizontal-subnav' && styles.modifiers.subnav,
|
|
164
158
|
this.state.isScrollable && styles.modifiers.scrollable,
|
|
165
159
|
className
|
|
166
160
|
)}
|
|
167
|
-
aria-label={ariaLabel || (
|
|
161
|
+
aria-label={ariaLabel || (variant === 'horizontal-subnav' ? 'Local' : 'Global')}
|
|
168
162
|
ref={this.navRef}
|
|
169
163
|
{...getOUIAProps(Nav.displayName, ouiaId !== undefined ? ouiaId : this.state.ouiaStateId, ouiaSafe)}
|
|
170
164
|
{...props}
|
|
@@ -115,7 +115,6 @@ class NavExpandable extends React.Component<NavExpandableProps, NavExpandableSta
|
|
|
115
115
|
<li
|
|
116
116
|
className={css(
|
|
117
117
|
styles.navItem,
|
|
118
|
-
styles.modifiers.expandable,
|
|
119
118
|
expandedState && styles.modifiers.expanded,
|
|
120
119
|
isActive && styles.modifiers.current,
|
|
121
120
|
className
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import styles from '@patternfly/react-styles/css/components/Nav/nav';
|
|
3
|
+
import menuStyles from '@patternfly/react-styles/css/components/Menu/menu';
|
|
4
|
+
import dividerStyles from '@patternfly/react-styles/css/components/Divider/divider';
|
|
3
5
|
import { css } from '@patternfly/react-styles';
|
|
4
6
|
import { NavContext, NavSelectClickHandler } from './Nav';
|
|
5
7
|
import { PageSidebarContext } from '../Page/PageSidebar';
|
|
@@ -125,7 +127,7 @@ export const NavItem: React.FunctionComponent<NavItemProps> = ({
|
|
|
125
127
|
// Otherwise, MenuItem should handle closing its flyouts
|
|
126
128
|
if (
|
|
127
129
|
(key === 'Escape' || key === 'ArrowLeft') &&
|
|
128
|
-
popperRef?.current?.querySelectorAll(`.${
|
|
130
|
+
popperRef?.current?.querySelectorAll(`.${menuStyles.menu}`).length === 1
|
|
129
131
|
) {
|
|
130
132
|
if (flyoutVisible) {
|
|
131
133
|
event.stopPropagation();
|
|
@@ -151,7 +153,7 @@ export const NavItem: React.FunctionComponent<NavItemProps> = ({
|
|
|
151
153
|
if (flyoutVisible) {
|
|
152
154
|
const flyoutItems = Array.from(
|
|
153
155
|
(popperRef.current as HTMLElement).getElementsByTagName('UL')[0].children
|
|
154
|
-
).filter((el) => !(el.classList.contains('pf-m-disabled') || el.classList.contains(
|
|
156
|
+
).filter((el) => !(el.classList.contains('pf-m-disabled') || el.classList.contains(dividerStyles.divider)));
|
|
155
157
|
(flyoutItems[0].firstChild as HTMLElement).focus();
|
|
156
158
|
} else {
|
|
157
159
|
flyoutTarget.focus();
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import styles from '@patternfly/react-styles/css/components/Nav/nav';
|
|
3
3
|
import { css } from '@patternfly/react-styles';
|
|
4
|
+
import { Button } from '../Button';
|
|
4
5
|
import AngleLeftIcon from '@patternfly/react-icons/dist/esm/icons/angle-left-icon';
|
|
5
6
|
import AngleRightIcon from '@patternfly/react-icons/dist/esm/icons/angle-right-icon';
|
|
6
7
|
import { getLanguageDirection, isElementInView } from '../../helpers/util';
|
|
@@ -143,15 +144,19 @@ class NavList extends React.Component<NavListProps> {
|
|
|
143
144
|
{({ isSidebarOpen }) => (
|
|
144
145
|
<React.Fragment>
|
|
145
146
|
{isHorizontal && (
|
|
146
|
-
<
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
147
|
+
<div className={css(styles.navScrollButton)}>
|
|
148
|
+
<Button
|
|
149
|
+
variant="plain"
|
|
150
|
+
aria-label={backScrollAriaLabel || ariaLeftScroll}
|
|
151
|
+
onClick={this.scrollBack}
|
|
152
|
+
disabled={scrollViewAtStart}
|
|
153
|
+
tabIndex={isSidebarOpen ? null : -1}
|
|
154
|
+
>
|
|
155
|
+
<span className={css(styles.buttonIcon)}>
|
|
156
|
+
<AngleLeftIcon />
|
|
157
|
+
</span>
|
|
158
|
+
</Button>
|
|
159
|
+
</div>
|
|
155
160
|
)}
|
|
156
161
|
<ul
|
|
157
162
|
ref={this.navList}
|
|
@@ -163,15 +168,19 @@ class NavList extends React.Component<NavListProps> {
|
|
|
163
168
|
{children}
|
|
164
169
|
</ul>
|
|
165
170
|
{isHorizontal && (
|
|
166
|
-
<
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
171
|
+
<div className={css(styles.navScrollButton)}>
|
|
172
|
+
<Button
|
|
173
|
+
variant="plain"
|
|
174
|
+
aria-label={forwardScrollAriaLabel || ariaRightScroll}
|
|
175
|
+
onClick={this.scrollForward}
|
|
176
|
+
disabled={scrollViewAtEnd}
|
|
177
|
+
tabIndex={isSidebarOpen ? null : -1}
|
|
178
|
+
>
|
|
179
|
+
<span className={css(styles.buttonIcon)}>
|
|
180
|
+
<AngleRightIcon />
|
|
181
|
+
</span>
|
|
182
|
+
</Button>
|
|
183
|
+
</div>
|
|
175
184
|
)}
|
|
176
185
|
</React.Fragment>
|
|
177
186
|
)}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
exports[`NavExpandable should match snapshot (auto-generated) 1`] = `
|
|
4
4
|
<DocumentFragment>
|
|
5
5
|
<li
|
|
6
|
-
class="pf-v5-c-nav__item
|
|
6
|
+
class="pf-v5-c-nav__item ''"
|
|
7
7
|
data-ouia-component-id="OUIA-Generated-NavExpandable-1"
|
|
8
8
|
data-ouia-component-type="PF5/NavExpandable"
|
|
9
9
|
data-ouia-safe="true"
|
|
@@ -60,21 +60,6 @@ describe('Nav', () => {
|
|
|
60
60
|
expect(asFragment()).toMatchSnapshot();
|
|
61
61
|
});
|
|
62
62
|
|
|
63
|
-
test('Dark Nav List', () => {
|
|
64
|
-
const { asFragment } = renderNav(
|
|
65
|
-
<Nav className="test=nav-class" theme="dark">
|
|
66
|
-
<NavList className="test-nav-list-class">
|
|
67
|
-
{props.items.map((item) => (
|
|
68
|
-
<NavItem to={item.to} key={item.to} className="test-nav-item-class">
|
|
69
|
-
{item.label}
|
|
70
|
-
</NavItem>
|
|
71
|
-
))}
|
|
72
|
-
</NavList>
|
|
73
|
-
</Nav>
|
|
74
|
-
);
|
|
75
|
-
expect(asFragment()).toMatchSnapshot();
|
|
76
|
-
});
|
|
77
|
-
|
|
78
63
|
test('Default Nav List - Trigger item active update', async () => {
|
|
79
64
|
const user = userEvent.setup();
|
|
80
65
|
|
|
@@ -228,24 +213,9 @@ describe('Nav', () => {
|
|
|
228
213
|
expect(asFragment()).toMatchSnapshot();
|
|
229
214
|
});
|
|
230
215
|
|
|
231
|
-
test('Tertiary Nav List', () => {
|
|
232
|
-
const { asFragment } = renderNav(
|
|
233
|
-
<Nav variant="tertiary">
|
|
234
|
-
<NavList>
|
|
235
|
-
{props.items.map((item) => (
|
|
236
|
-
<NavItem to={item.to} key={item.to}>
|
|
237
|
-
{item.label}
|
|
238
|
-
</NavItem>
|
|
239
|
-
))}
|
|
240
|
-
</NavList>
|
|
241
|
-
</Nav>
|
|
242
|
-
);
|
|
243
|
-
expect(asFragment()).toMatchSnapshot();
|
|
244
|
-
});
|
|
245
|
-
|
|
246
216
|
test('Nav List with custom item nodes', () => {
|
|
247
217
|
const { asFragment } = renderNav(
|
|
248
|
-
<Nav
|
|
218
|
+
<Nav>
|
|
249
219
|
<NavList>
|
|
250
220
|
<NavItem to="/components/nav#link1" className="test-nav-item-class">
|
|
251
221
|
<div className="my-custom-node">My custom node</div>
|
|
@@ -260,7 +230,7 @@ describe('Nav', () => {
|
|
|
260
230
|
const user = userEvent.setup();
|
|
261
231
|
|
|
262
232
|
const { asFragment } = renderNav(
|
|
263
|
-
<Nav
|
|
233
|
+
<Nav>
|
|
264
234
|
<NavList>
|
|
265
235
|
<NavItem className="test-nav-item-class" flyout={<div>Flyout test</div>}>
|
|
266
236
|
<div className="my-custom-node">My custom node</div>
|