@patternfly/react-core 4.232.7 → 4.232.10
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 +24 -0
- package/dist/esm/components/Page/Page.d.ts +1 -1
- package/dist/esm/components/Page/Page.d.ts.map +1 -1
- package/dist/esm/components/Page/PageBreadcrumb.d.ts +3 -1
- package/dist/esm/components/Page/PageBreadcrumb.d.ts.map +1 -1
- package/dist/esm/components/Page/PageBreadcrumb.js +8 -2
- package/dist/esm/components/Page/PageBreadcrumb.js.map +1 -1
- package/dist/esm/components/Page/PageGroup.d.ts +3 -1
- package/dist/esm/components/Page/PageGroup.d.ts.map +1 -1
- package/dist/esm/components/Page/PageGroup.js +8 -2
- package/dist/esm/components/Page/PageGroup.js.map +1 -1
- package/dist/esm/components/Page/PageNavigation.d.ts +3 -1
- package/dist/esm/components/Page/PageNavigation.d.ts.map +1 -1
- package/dist/esm/components/Page/PageNavigation.js +8 -2
- package/dist/esm/components/Page/PageNavigation.js.map +1 -1
- package/dist/esm/components/Page/PageSection.d.ts +4 -0
- package/dist/esm/components/Page/PageSection.d.ts.map +1 -1
- package/dist/esm/components/Page/PageSection.js +8 -2
- package/dist/esm/components/Page/PageSection.js.map +1 -1
- package/dist/js/components/Page/Page.d.ts +1 -1
- package/dist/js/components/Page/Page.d.ts.map +1 -1
- package/dist/js/components/Page/PageBreadcrumb.d.ts +3 -1
- package/dist/js/components/Page/PageBreadcrumb.d.ts.map +1 -1
- package/dist/js/components/Page/PageBreadcrumb.js +8 -2
- package/dist/js/components/Page/PageBreadcrumb.js.map +1 -1
- package/dist/js/components/Page/PageGroup.d.ts +3 -1
- package/dist/js/components/Page/PageGroup.d.ts.map +1 -1
- package/dist/js/components/Page/PageGroup.js +8 -2
- package/dist/js/components/Page/PageGroup.js.map +1 -1
- package/dist/js/components/Page/PageNavigation.d.ts +3 -1
- package/dist/js/components/Page/PageNavigation.d.ts.map +1 -1
- package/dist/js/components/Page/PageNavigation.js +8 -2
- package/dist/js/components/Page/PageNavigation.js.map +1 -1
- package/dist/js/components/Page/PageSection.d.ts +4 -0
- package/dist/js/components/Page/PageSection.d.ts.map +1 -1
- package/dist/js/components/Page/PageSection.js +8 -2
- package/dist/js/components/Page/PageSection.js.map +1 -1
- package/dist/styles/base-no-reset.css +1 -1
- package/dist/styles/base.css +1 -1
- package/dist/umd/react-core.css +669 -669
- package/dist/umd/react-core.js +444 -515
- package/dist/umd/react-core.min.js +5 -5
- package/package.json +12 -12
- package/src/components/Nav/examples/Nav.md +10 -626
- package/src/components/Nav/examples/NavDefault.tsx +29 -0
- package/src/components/Nav/examples/NavDrilldown.tsx +20 -15
- package/src/components/Nav/examples/NavExpandable.tsx +119 -0
- package/src/components/Nav/examples/NavExpandableThirdLevel.tsx +115 -0
- package/src/components/Nav/examples/NavFlyout.tsx +102 -0
- package/src/components/Nav/examples/NavGrouped.tsx +67 -0
- package/src/components/Nav/examples/NavHorizontalPageHeader.tsx +34 -0
- package/src/components/Nav/examples/NavHorizontalSubNav.tsx +32 -0
- package/src/components/Nav/examples/NavLegacyTertiary.tsx +32 -0
- package/src/components/Nav/examples/NavMixed.tsx +101 -0
- package/src/components/Page/Page.tsx +1 -1
- package/src/components/Page/PageBreadcrumb.tsx +11 -0
- package/src/components/Page/PageGroup.tsx +11 -0
- package/src/components/Page/PageNavigation.tsx +11 -0
- package/src/components/Page/PageSection.tsx +13 -0
- package/src/components/Page/__tests__/PageBreadcrumb.test.tsx +41 -1
- package/src/components/Page/__tests__/PageGroup.test.tsx +41 -1
- package/src/components/Page/__tests__/PageNavigation.test.tsx +41 -1
- package/src/components/Page/__tests__/PageSection.test.tsx +41 -1
- package/src/components/Popover/examples/Popover.md +10 -293
- package/src/components/Popover/examples/PopoverAdvanced.tsx +79 -0
- package/src/components/Popover/examples/PopoverAlert.tsx +47 -0
- package/src/components/Popover/examples/PopoverBasic.tsx +15 -0
- package/src/components/Popover/examples/PopoverCloseControlled.tsx +29 -0
- package/src/components/Popover/examples/PopoverCloseUncontrolled.tsx +25 -0
- package/src/components/Popover/examples/PopoverReactRef.tsx +23 -0
- package/src/components/Popover/examples/PopoverSelectorRef.tsx +19 -0
- package/src/components/Popover/examples/PopoverWidthAuto.tsx +14 -0
- package/src/components/Popover/examples/PopoverWithIconInTheTitle.tsx +17 -0
- package/src/components/Popover/examples/PopoverWithoutHeaderFooterCloseNoPadding.tsx +21 -0
- package/src/components/Progress/examples/Progress.md +18 -117
- package/src/components/Progress/examples/ProgressBasic.tsx +4 -0
- package/src/components/Progress/examples/ProgressFailure.tsx +6 -0
- package/src/components/Progress/examples/ProgressFailureWithoutMeasure.tsx +6 -0
- package/src/components/Progress/examples/ProgressFiniteStep.tsx +14 -0
- package/src/components/Progress/examples/ProgressInside.tsx +6 -0
- package/src/components/Progress/examples/ProgressInsideSuccess.tsx +11 -0
- package/src/components/Progress/examples/ProgressLarge.tsx +6 -0
- package/src/components/Progress/examples/ProgressOutside.tsx +6 -0
- package/src/components/Progress/examples/ProgressOutsideFailure.tsx +11 -0
- package/src/components/Progress/examples/ProgressSingleLine.tsx +6 -0
- package/src/components/Progress/examples/ProgressSmall.tsx +6 -0
- package/src/components/Progress/examples/ProgressStepInstruction.tsx +6 -0
- package/src/components/Progress/examples/ProgressSuccess.tsx +6 -0
- package/src/components/Progress/examples/ProgressTitleOutsideOfProgressBar.tsx +24 -0
- package/src/components/Progress/examples/ProgressTruncateTitle.tsx +10 -0
- package/src/components/Progress/examples/ProgressWarning.tsx +6 -0
- package/src/components/Progress/examples/ProgressWithoutMeasure.tsx +6 -0
- package/src/demos/JumpLinks.md +1 -0
- package/src/demos/examples/BackToTop/BackToTopNameDemo.tsx +6 -1
|
@@ -7,40 +7,45 @@ interface MenuHeights {
|
|
|
7
7
|
}
|
|
8
8
|
|
|
9
9
|
const subMenuTwo: JSX.Element = (
|
|
10
|
-
<DrilldownMenu id="subMenu-2">
|
|
11
|
-
<MenuItem itemId="subMenu-2-breadcrumb" direction="up">
|
|
10
|
+
<DrilldownMenu id="nav-drilldown-subMenu-2">
|
|
11
|
+
<MenuItem itemId="nav-drilldown-subMenu-2-breadcrumb" direction="up">
|
|
12
12
|
SubMenu 1 - Item 1
|
|
13
13
|
</MenuItem>
|
|
14
|
-
<MenuItem itemId="subMenu-2_item-1" to="#subMenu-2_item-1">
|
|
14
|
+
<MenuItem itemId="nav-drilldown-subMenu-2_item-1" to="#subMenu-2_item-1">
|
|
15
15
|
SubMenu 2 - Item 1
|
|
16
16
|
</MenuItem>
|
|
17
|
-
<MenuItem itemId="subMenu-2_item-2" to="#subMenu-2_item-2">
|
|
17
|
+
<MenuItem itemId="nav-drilldown-subMenu-2_item-2" to="#subMenu-2_item-2">
|
|
18
18
|
SubMenu 2 - Item 2
|
|
19
19
|
</MenuItem>
|
|
20
|
-
<MenuItem itemId="subMenu-2_item-3" to="#subMenu-2_item-3">
|
|
20
|
+
<MenuItem itemId="nav-drilldown-subMenu-2_item-3" to="#subMenu-2_item-3">
|
|
21
21
|
SubMenu 2 - Item 3
|
|
22
22
|
</MenuItem>
|
|
23
23
|
</DrilldownMenu>
|
|
24
24
|
);
|
|
25
25
|
|
|
26
26
|
const subMenuOne: JSX.Element = (
|
|
27
|
-
<DrilldownMenu id="subMenu-1">
|
|
28
|
-
<MenuItem itemId="subMenu-1-breadcrumb" direction="up">
|
|
27
|
+
<DrilldownMenu id="nav-drilldown-subMenu-1">
|
|
28
|
+
<MenuItem itemId="nav-drilldown-subMenu-1-breadcrumb" direction="up">
|
|
29
29
|
Item 1
|
|
30
30
|
</MenuItem>
|
|
31
|
-
<MenuItem
|
|
31
|
+
<MenuItem
|
|
32
|
+
itemId="nav-drilldown-subMenu-1_item-1"
|
|
33
|
+
description="SubMenu 2"
|
|
34
|
+
direction="down"
|
|
35
|
+
drilldownMenu={subMenuTwo}
|
|
36
|
+
>
|
|
32
37
|
SubMenu 1 - Item 1
|
|
33
38
|
</MenuItem>
|
|
34
|
-
<MenuItem itemId="subMenu-1_item-2" to="#subMenu-1_item-2">
|
|
39
|
+
<MenuItem itemId="nav-drilldown-subMenu-1_item-2" to="#subMenu-1_item-2">
|
|
35
40
|
SubMenu 1 - Item 2
|
|
36
41
|
</MenuItem>
|
|
37
|
-
<MenuItem itemId="subMenu-1_item-3" to="#subMenu-1_item-3">
|
|
42
|
+
<MenuItem itemId="nav-drilldown-subMenu-1_item-3" to="#subMenu-1_item-3">
|
|
38
43
|
SubMenu 1 - Item 3
|
|
39
44
|
</MenuItem>
|
|
40
45
|
</DrilldownMenu>
|
|
41
46
|
);
|
|
42
47
|
|
|
43
|
-
export const
|
|
48
|
+
export const NavigationDrilldown: React.FunctionComponent = () => {
|
|
44
49
|
const [menuDrilledIn, setMenuDrilledIn] = React.useState<string[]>([]);
|
|
45
50
|
const [drilldownPath, setDrilldownPath] = React.useState<string[]>([]);
|
|
46
51
|
const [menuHeights, setMenuHeights] = React.useState<MenuHeights>({});
|
|
@@ -67,7 +72,7 @@ export const NavLevelThreeDrill: React.FunctionComponent = () => {
|
|
|
67
72
|
return (
|
|
68
73
|
<Nav aria-label="Drilldown global nav">
|
|
69
74
|
<Menu
|
|
70
|
-
id="rootMenu"
|
|
75
|
+
id="nav-drilldown-rootMenu"
|
|
71
76
|
containsDrilldown
|
|
72
77
|
drilldownItemPath={drilldownPath}
|
|
73
78
|
drilledInMenus={menuDrilledIn}
|
|
@@ -78,13 +83,13 @@ export const NavLevelThreeDrill: React.FunctionComponent = () => {
|
|
|
78
83
|
>
|
|
79
84
|
<MenuContent menuHeight={`${menuHeights[activeMenu]}px`}>
|
|
80
85
|
<MenuList>
|
|
81
|
-
<MenuItem itemId="item-1" direction="down" description="SubMenu 1" drilldownMenu={subMenuOne}>
|
|
86
|
+
<MenuItem itemId="nav-drilldown-item-1" direction="down" description="SubMenu 1" drilldownMenu={subMenuOne}>
|
|
82
87
|
Item 1
|
|
83
88
|
</MenuItem>
|
|
84
|
-
<MenuItem itemId="item-2" to="#item-2">
|
|
89
|
+
<MenuItem itemId="nav-drilldown-item-2" to="#item-2">
|
|
85
90
|
Item 2
|
|
86
91
|
</MenuItem>
|
|
87
|
-
<MenuItem itemId="item-3" to="#item-3">
|
|
92
|
+
<MenuItem itemId="nav-drilldown-item-3" to="#item-3">
|
|
88
93
|
Item 3
|
|
89
94
|
</MenuItem>
|
|
90
95
|
</MenuList>
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Nav, NavExpandable, NavItem, NavItemSeparator, NavList } from '@patternfly/react-core';
|
|
3
|
+
|
|
4
|
+
export const NavExpandableExample: React.FunctionComponent = () => {
|
|
5
|
+
const [activeGroup, setActiveGroup] = React.useState('nav-expandable-group-1');
|
|
6
|
+
const [activeItem, setActiveItem] = React.useState('nav-expandable-group-1_item-1');
|
|
7
|
+
|
|
8
|
+
const onSelect = (result: { itemId: number | string; groupId: number | string }) => {
|
|
9
|
+
setActiveGroup(result.groupId as string);
|
|
10
|
+
setActiveItem(result.itemId as string);
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
const onToggle = (result: { groupId: number | string; isExpanded: boolean }) => {
|
|
14
|
+
// eslint-disable-next-line no-console
|
|
15
|
+
console.log(`Group ${result.groupId} expanded? ${result.isExpanded}`);
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
const onItemClick = (
|
|
19
|
+
_event: React.FormEvent<HTMLInputElement>,
|
|
20
|
+
itemId: number | string,
|
|
21
|
+
_groupId: number | string
|
|
22
|
+
) => {
|
|
23
|
+
// eslint-disable-next-line no-console
|
|
24
|
+
console.log(`Custom click handler on ${itemId}`);
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
return (
|
|
28
|
+
<Nav onSelect={onSelect} onToggle={onToggle} aria-label="Expandable global nav">
|
|
29
|
+
<NavList>
|
|
30
|
+
<NavExpandable
|
|
31
|
+
title="Expandable Group 1"
|
|
32
|
+
groupId="nav-expandable-group-1"
|
|
33
|
+
isActive={activeGroup === 'nav-expandable-group-1'}
|
|
34
|
+
isExpanded
|
|
35
|
+
>
|
|
36
|
+
<NavItem
|
|
37
|
+
preventDefault
|
|
38
|
+
id="expandable-1"
|
|
39
|
+
to="#expandable-1"
|
|
40
|
+
groupId="nav-expandable-group-1"
|
|
41
|
+
itemId="nav-expandable-group-1_item-1"
|
|
42
|
+
isActive={activeItem === 'nav-expandable-group-1_item-1'}
|
|
43
|
+
>
|
|
44
|
+
Subnav 1 Link 1
|
|
45
|
+
</NavItem>
|
|
46
|
+
<NavItemSeparator />
|
|
47
|
+
<NavItem
|
|
48
|
+
preventDefault
|
|
49
|
+
id="expandable-2"
|
|
50
|
+
to="#expandable-2"
|
|
51
|
+
groupId="nav-expandable-group-1"
|
|
52
|
+
itemId="nav-expandable-group-1_item-2"
|
|
53
|
+
isActive={activeItem === 'nav-expandable-group-1_item-2'}
|
|
54
|
+
>
|
|
55
|
+
Subnav 1 Link 2
|
|
56
|
+
</NavItem>
|
|
57
|
+
<NavItem
|
|
58
|
+
preventDefault
|
|
59
|
+
id="expandable-3"
|
|
60
|
+
to="#expandable-3"
|
|
61
|
+
groupId="nav-expandable-group-1"
|
|
62
|
+
itemId="nav-expandable-group-1_item-3"
|
|
63
|
+
isActive={activeItem === 'nav-expandable-group-1_item-3'}
|
|
64
|
+
>
|
|
65
|
+
Subnav 1 Link 3
|
|
66
|
+
</NavItem>
|
|
67
|
+
</NavExpandable>
|
|
68
|
+
<NavExpandable
|
|
69
|
+
title="Expandable Group 2"
|
|
70
|
+
groupId="nav-expandable-group-2"
|
|
71
|
+
isActive={activeGroup === 'nav-expandable-group-2'}
|
|
72
|
+
isExpanded
|
|
73
|
+
>
|
|
74
|
+
<NavItem
|
|
75
|
+
preventDefault
|
|
76
|
+
onClick={onItemClick}
|
|
77
|
+
id="expandable-custom-click"
|
|
78
|
+
to="#expandable-custom-click"
|
|
79
|
+
groupId="nav-expandable-group-2"
|
|
80
|
+
itemId="nav-expandable-group-2_custom-click"
|
|
81
|
+
isActive={activeItem === 'nav-expandable-group-2_custom-click'}
|
|
82
|
+
>
|
|
83
|
+
Custom onClick Link
|
|
84
|
+
</NavItem>
|
|
85
|
+
<NavItem
|
|
86
|
+
preventDefault
|
|
87
|
+
id="expandable-4"
|
|
88
|
+
to="#expandable-4"
|
|
89
|
+
groupId="nav-expandable-group-2"
|
|
90
|
+
itemId="nav-expandable-group-2_item-1"
|
|
91
|
+
isActive={activeItem === 'nav-expandable-group-2_item-1'}
|
|
92
|
+
>
|
|
93
|
+
Subnav 2 Link 1
|
|
94
|
+
</NavItem>
|
|
95
|
+
<NavItem
|
|
96
|
+
preventDefault
|
|
97
|
+
id="expandable-5"
|
|
98
|
+
to="#expandable-5"
|
|
99
|
+
groupId="nav-expandable-group-2"
|
|
100
|
+
itemId="nav-expandable-group-2_item-2"
|
|
101
|
+
isActive={activeItem === 'nav-expandable-group-2_item-2'}
|
|
102
|
+
>
|
|
103
|
+
Subnav 2 Link 2
|
|
104
|
+
</NavItem>
|
|
105
|
+
<NavItem
|
|
106
|
+
preventDefault
|
|
107
|
+
id="expandable-6"
|
|
108
|
+
to="#expandable-6"
|
|
109
|
+
groupId="nav-expandable-group-2"
|
|
110
|
+
itemId="nav-expandable-group-2_item-3"
|
|
111
|
+
isActive={activeItem === 'nav-expandable-group-2_item-3'}
|
|
112
|
+
>
|
|
113
|
+
Subnav 2 Link 3
|
|
114
|
+
</NavItem>
|
|
115
|
+
</NavExpandable>
|
|
116
|
+
</NavList>
|
|
117
|
+
</Nav>
|
|
118
|
+
);
|
|
119
|
+
};
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Nav, NavExpandable, NavItem, NavList } from '@patternfly/react-core';
|
|
3
|
+
|
|
4
|
+
export const NavExpandableThirdLevel: React.FunctionComponent = () => {
|
|
5
|
+
const [activeGroup, setActiveGroup] = React.useState('nav-expand3rd-group-1');
|
|
6
|
+
const [activeItem, setActiveItem] = React.useState('nav-expand3rd-group-1_item-1');
|
|
7
|
+
|
|
8
|
+
const onSelect = (result: { itemId: number | string; groupId: number | string }) => {
|
|
9
|
+
setActiveGroup(result.groupId as string);
|
|
10
|
+
setActiveItem(result.itemId as string);
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
const onToggle = (result: { groupId: number | string; isExpanded: boolean }) => {
|
|
14
|
+
// eslint-disable-next-line no-console
|
|
15
|
+
console.log(`Group ${result.groupId} expanded? ${result.isExpanded}`);
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
return (
|
|
19
|
+
<Nav onSelect={onSelect} onToggle={onToggle} aria-label="Expandable third level global nav">
|
|
20
|
+
<NavList>
|
|
21
|
+
<NavExpandable
|
|
22
|
+
title="Expandable section title 1"
|
|
23
|
+
groupId="nav-expand3rd-group-1"
|
|
24
|
+
isActive={activeGroup === 'nav-expand3rd-group-1'}
|
|
25
|
+
isExpanded
|
|
26
|
+
>
|
|
27
|
+
<NavItem
|
|
28
|
+
preventDefault
|
|
29
|
+
id="expandable3rd-1"
|
|
30
|
+
to="#expandable3rd-1"
|
|
31
|
+
groupId="nav-expand3rd-group-1"
|
|
32
|
+
itemId="nav-expand3rd-group-1_item-1"
|
|
33
|
+
isActive={activeItem === 'nav-expand3rd-group-1_item-1'}
|
|
34
|
+
>
|
|
35
|
+
With 3rd 1 Link 1
|
|
36
|
+
</NavItem>
|
|
37
|
+
<NavItem
|
|
38
|
+
preventDefault
|
|
39
|
+
id="expandable3rd-2"
|
|
40
|
+
to="#expandable3rd-2"
|
|
41
|
+
groupId="nav-expand3rd-group-1"
|
|
42
|
+
itemId="nav-expand3rd-group-1_item-2"
|
|
43
|
+
isActive={activeItem === 'nav-expand3rd-group-1_item-2'}
|
|
44
|
+
>
|
|
45
|
+
With 3rd 1 Link 2
|
|
46
|
+
</NavItem>
|
|
47
|
+
<NavItem
|
|
48
|
+
preventDefault
|
|
49
|
+
id="expandable3rd-3"
|
|
50
|
+
to="#expandable3rd-3"
|
|
51
|
+
groupId="nav-expand3rd-group-1"
|
|
52
|
+
itemId="nav-expand3rd-group-1_item-3"
|
|
53
|
+
isActive={activeItem === 'nav-expand3rd-group-1_item-3'}
|
|
54
|
+
>
|
|
55
|
+
With 3rd 1 Link 3
|
|
56
|
+
</NavItem>
|
|
57
|
+
</NavExpandable>
|
|
58
|
+
<NavExpandable
|
|
59
|
+
title="Expandable section title 2"
|
|
60
|
+
groupId="nav-expand3rd-group-2"
|
|
61
|
+
isActive={activeGroup === 'nav-expand3rd-group-2'}
|
|
62
|
+
isExpanded
|
|
63
|
+
>
|
|
64
|
+
<NavItem
|
|
65
|
+
preventDefault
|
|
66
|
+
id="expandable3rd-4"
|
|
67
|
+
to="#expandable3rd-4"
|
|
68
|
+
groupId="nav-expand3rd-group-2"
|
|
69
|
+
itemId="nav-expand3rd-group-2_item-1"
|
|
70
|
+
isActive={activeItem === 'nav-expand3rd-group-2_item-1'}
|
|
71
|
+
>
|
|
72
|
+
With 3rd 2 Link 1
|
|
73
|
+
</NavItem>
|
|
74
|
+
<NavExpandable
|
|
75
|
+
title="Expandable third level"
|
|
76
|
+
groupId="nav-expand3rd-group-3"
|
|
77
|
+
isActive={activeGroup === 'nav-expand3rd-group-3'}
|
|
78
|
+
isExpanded
|
|
79
|
+
>
|
|
80
|
+
<NavItem
|
|
81
|
+
preventDefault
|
|
82
|
+
id="expandable3rd-5"
|
|
83
|
+
to="#expandable3rd-5"
|
|
84
|
+
groupId="nav-expand3rd-group-3"
|
|
85
|
+
itemId="nav-expand3rd-group-3_item-1"
|
|
86
|
+
isActive={activeItem === 'nav-expand3rd-group-3_item-1'}
|
|
87
|
+
>
|
|
88
|
+
Third Level Link 1
|
|
89
|
+
</NavItem>
|
|
90
|
+
<NavItem
|
|
91
|
+
preventDefault
|
|
92
|
+
id="expandable3rd-6"
|
|
93
|
+
to="#expandable3rd-6"
|
|
94
|
+
groupId="nav-expand3rd-group-3"
|
|
95
|
+
itemId="nav-expand3rd-group-3_item-3"
|
|
96
|
+
isActive={activeItem === 'nav-expand3rd-group-3_item-2'}
|
|
97
|
+
>
|
|
98
|
+
Third Level Link 2
|
|
99
|
+
</NavItem>
|
|
100
|
+
</NavExpandable>
|
|
101
|
+
<NavItem
|
|
102
|
+
preventDefault
|
|
103
|
+
id="expandable3rd-7"
|
|
104
|
+
to="#expandable3rd-7"
|
|
105
|
+
groupId="nav-expand3rd-group-2"
|
|
106
|
+
itemId="nav-expand3rd-group-2_item-2"
|
|
107
|
+
isActive={activeItem === 'nav-expand3rd-group-2_item-2'}
|
|
108
|
+
>
|
|
109
|
+
With 3rd 2 Link 2
|
|
110
|
+
</NavItem>
|
|
111
|
+
</NavExpandable>
|
|
112
|
+
</NavList>
|
|
113
|
+
</Nav>
|
|
114
|
+
);
|
|
115
|
+
};
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Nav, NavItem, NavList, Menu, MenuContent, MenuList, MenuItem } from '@patternfly/react-core';
|
|
3
|
+
|
|
4
|
+
export const NavFlyout: React.FunctionComponent = () => {
|
|
5
|
+
const [activeItem, setActiveItem] = React.useState('nav-flyout-default-link-1');
|
|
6
|
+
|
|
7
|
+
const onSelect = (result: { itemId: number | string }) => {
|
|
8
|
+
setActiveItem(result.itemId as string);
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
const onMenuSelect = (_event: any, itemId: string | number | undefined) => setActiveItem(itemId as string);
|
|
12
|
+
|
|
13
|
+
const onMenuItemClick = (event: any) => {
|
|
14
|
+
event.preventDefault();
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
const numFlyouts = 5;
|
|
18
|
+
const FlyoutMenu = ({ depth, children }) => (
|
|
19
|
+
<Menu key={depth} containsFlyout isNavFlyout id={`nav-flyout-menu-${depth}`} onSelect={onMenuSelect}>
|
|
20
|
+
<MenuContent>
|
|
21
|
+
<MenuList>
|
|
22
|
+
<MenuItem
|
|
23
|
+
onClick={onMenuItemClick}
|
|
24
|
+
flyoutMenu={children}
|
|
25
|
+
itemId={`nav-flyout-next-menu-${depth}`}
|
|
26
|
+
to={`#next-menu-link-${depth}`}
|
|
27
|
+
>
|
|
28
|
+
Next menu
|
|
29
|
+
</MenuItem>
|
|
30
|
+
{Array.apply(0, Array(numFlyouts - depth)).map((_item, index: number) => (
|
|
31
|
+
<MenuItem
|
|
32
|
+
onClick={onMenuItemClick}
|
|
33
|
+
key={`${depth}-${index}`}
|
|
34
|
+
itemId={`nav-flyout-${depth}-${index}`}
|
|
35
|
+
to={`#menu-link-${depth}-${index}`}
|
|
36
|
+
isActive={activeItem === `nav-flyout-${depth}-${index}`}
|
|
37
|
+
>
|
|
38
|
+
Menu {depth} item {index}
|
|
39
|
+
</MenuItem>
|
|
40
|
+
))}
|
|
41
|
+
<MenuItem
|
|
42
|
+
onClick={onMenuItemClick}
|
|
43
|
+
flyoutMenu={children}
|
|
44
|
+
itemId={`nav-flyout-next-menu-2-${depth}`}
|
|
45
|
+
to={`#next-menu-2-link-${depth}`}
|
|
46
|
+
>
|
|
47
|
+
Next menu
|
|
48
|
+
</MenuItem>
|
|
49
|
+
</MenuList>
|
|
50
|
+
</MenuContent>
|
|
51
|
+
</Menu>
|
|
52
|
+
);
|
|
53
|
+
|
|
54
|
+
let curFlyout = <FlyoutMenu depth={1}>{null}</FlyoutMenu>;
|
|
55
|
+
for (let i = 2; i < numFlyouts - 1; i++) {
|
|
56
|
+
curFlyout = <FlyoutMenu depth={i}>{curFlyout}</FlyoutMenu>;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
return (
|
|
60
|
+
<Nav onSelect={onSelect} aria-label="Flyout global nav">
|
|
61
|
+
<NavList>
|
|
62
|
+
<NavItem
|
|
63
|
+
preventDefault
|
|
64
|
+
id="nav-flyout-default-link-1"
|
|
65
|
+
to="#nav-flyout-default-link-1"
|
|
66
|
+
itemId="nav-flyout-default-link-1"
|
|
67
|
+
isActive={activeItem === 'nav-flyout-default-link-1'}
|
|
68
|
+
>
|
|
69
|
+
Flyout Link 1
|
|
70
|
+
</NavItem>
|
|
71
|
+
<NavItem
|
|
72
|
+
preventDefault
|
|
73
|
+
id="nav-flyout-default-link-2"
|
|
74
|
+
to="#nav-flyout-default-link-2"
|
|
75
|
+
itemId="nav-flyout-default-link-2"
|
|
76
|
+
isActive={activeItem === 'nav-flyout-default-link-2'}
|
|
77
|
+
>
|
|
78
|
+
Flyout Link 2
|
|
79
|
+
</NavItem>
|
|
80
|
+
<NavItem
|
|
81
|
+
preventDefault
|
|
82
|
+
flyout={curFlyout}
|
|
83
|
+
id="nav-flyout-default-link-3"
|
|
84
|
+
to="#nav-flyout-default-link-3"
|
|
85
|
+
itemId="nav-flyout-default-link-3"
|
|
86
|
+
isActive={activeItem === 'nav-flyout-default-link-3'}
|
|
87
|
+
>
|
|
88
|
+
Flyout Link 3
|
|
89
|
+
</NavItem>
|
|
90
|
+
<NavItem
|
|
91
|
+
preventDefault
|
|
92
|
+
id="nav-flyout-default-link4"
|
|
93
|
+
to="#nav-flyout-default-link4"
|
|
94
|
+
itemId="nav-flyout-default-link-4"
|
|
95
|
+
isActive={activeItem === 'nav-flyout-default-link-4'}
|
|
96
|
+
>
|
|
97
|
+
Flyout Link 4
|
|
98
|
+
</NavItem>
|
|
99
|
+
</NavList>
|
|
100
|
+
</Nav>
|
|
101
|
+
);
|
|
102
|
+
};
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Nav, NavItem, NavGroup } from '@patternfly/react-core';
|
|
3
|
+
|
|
4
|
+
export const NavGrouped: React.FunctionComponent = () => {
|
|
5
|
+
const [activeItem, setActiveItem] = React.useState('group-1_item-1');
|
|
6
|
+
|
|
7
|
+
const onSelect = (result: { itemId: number | string }) => {
|
|
8
|
+
setActiveItem(result.itemId as string);
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
return (
|
|
12
|
+
<Nav onSelect={onSelect} aria-label="Grouped global nav">
|
|
13
|
+
<NavGroup title="Section title 1">
|
|
14
|
+
<NavItem
|
|
15
|
+
preventDefault
|
|
16
|
+
to="#nav-group1-item1"
|
|
17
|
+
itemId="group-1_item-1"
|
|
18
|
+
isActive={activeItem === 'group-1_item-1'}
|
|
19
|
+
>
|
|
20
|
+
Group 1 Link 1
|
|
21
|
+
</NavItem>
|
|
22
|
+
<NavItem
|
|
23
|
+
preventDefault
|
|
24
|
+
to="#nav-group1-item2"
|
|
25
|
+
itemId="group-1_item-2"
|
|
26
|
+
isActive={activeItem === 'group-1_item-2'}
|
|
27
|
+
>
|
|
28
|
+
Group 1 Link 2
|
|
29
|
+
</NavItem>
|
|
30
|
+
<NavItem
|
|
31
|
+
preventDefault
|
|
32
|
+
to="#nav-group1-item3"
|
|
33
|
+
itemId="group-1_item-3"
|
|
34
|
+
isActive={activeItem === 'group-1_item-3'}
|
|
35
|
+
>
|
|
36
|
+
Group 1 Link 3
|
|
37
|
+
</NavItem>
|
|
38
|
+
</NavGroup>
|
|
39
|
+
<NavGroup title="Section title 2">
|
|
40
|
+
<NavItem
|
|
41
|
+
preventDefault
|
|
42
|
+
to="#nav-group2-item1"
|
|
43
|
+
itemId="group-2_item-1"
|
|
44
|
+
isActive={activeItem === 'group-2_item-1'}
|
|
45
|
+
>
|
|
46
|
+
Group 2 Link 1
|
|
47
|
+
</NavItem>
|
|
48
|
+
<NavItem
|
|
49
|
+
preventDefault
|
|
50
|
+
to="#nav-group2-item2"
|
|
51
|
+
itemId="group-2_item-2"
|
|
52
|
+
isActive={activeItem === 'group-2_item-2'}
|
|
53
|
+
>
|
|
54
|
+
Group 2 Link 2
|
|
55
|
+
</NavItem>
|
|
56
|
+
<NavItem
|
|
57
|
+
preventDefault
|
|
58
|
+
to="#nav-group2-item3"
|
|
59
|
+
itemId="group-2_item-3"
|
|
60
|
+
isActive={activeItem === 'group-2_item-3'}
|
|
61
|
+
>
|
|
62
|
+
Group 2 Link 3
|
|
63
|
+
</NavItem>
|
|
64
|
+
</NavGroup>
|
|
65
|
+
</Nav>
|
|
66
|
+
);
|
|
67
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Nav, NavItem, NavList, PageHeader } from '@patternfly/react-core';
|
|
3
|
+
|
|
4
|
+
export const NavHorizontalPageHeader: React.FunctionComponent = () => {
|
|
5
|
+
const [activeItem, setActiveItem] = React.useState(0);
|
|
6
|
+
|
|
7
|
+
const onSelect = (result: { itemId: number | string }) => {
|
|
8
|
+
setActiveItem(result.itemId as number);
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
const nav = (
|
|
12
|
+
<Nav onSelect={onSelect} variant="horizontal" aria-label="Horizontal global nav">
|
|
13
|
+
<NavList>
|
|
14
|
+
{Array.apply(0, Array(10)).map(function(_item, index: number) {
|
|
15
|
+
const num = index + 1;
|
|
16
|
+
return (
|
|
17
|
+
<NavItem
|
|
18
|
+
preventDefault
|
|
19
|
+
key={num}
|
|
20
|
+
itemId={num}
|
|
21
|
+
isActive={activeItem === num}
|
|
22
|
+
id={`horizontal-pageHeader-${num}`}
|
|
23
|
+
to={`#horizontal-pageHeader-${num}`}
|
|
24
|
+
>
|
|
25
|
+
Horizontal nav item {num}
|
|
26
|
+
</NavItem>
|
|
27
|
+
);
|
|
28
|
+
})}
|
|
29
|
+
</NavList>
|
|
30
|
+
</Nav>
|
|
31
|
+
);
|
|
32
|
+
|
|
33
|
+
return <PageHeader topNav={nav} />;
|
|
34
|
+
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Nav, NavItem, NavList } from '@patternfly/react-core';
|
|
3
|
+
|
|
4
|
+
export const NavHorizontalSubNav: React.FunctionComponent = () => {
|
|
5
|
+
const [activeItem, setActiveItem] = React.useState(0);
|
|
6
|
+
|
|
7
|
+
const onSelect = (result: { itemId: number | string }) => {
|
|
8
|
+
setActiveItem(result.itemId as number);
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
return (
|
|
12
|
+
<Nav onSelect={onSelect} variant="horizontal-subnav" aria-label="Horizontal subnav global nav">
|
|
13
|
+
<NavList>
|
|
14
|
+
{Array.apply(0, Array(10)).map(function(_item, index: number) {
|
|
15
|
+
const num = index + 1;
|
|
16
|
+
return (
|
|
17
|
+
<NavItem
|
|
18
|
+
preventDefault
|
|
19
|
+
key={num}
|
|
20
|
+
itemId={num}
|
|
21
|
+
isActive={activeItem === num}
|
|
22
|
+
id={`horizontal-subnav-${num}`}
|
|
23
|
+
to={`#horizontal-subnav-${num}`}
|
|
24
|
+
>
|
|
25
|
+
Horizontal subnav item {num}
|
|
26
|
+
</NavItem>
|
|
27
|
+
);
|
|
28
|
+
})}
|
|
29
|
+
</NavList>
|
|
30
|
+
</Nav>
|
|
31
|
+
);
|
|
32
|
+
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Nav, NavItem, NavList } from '@patternfly/react-core';
|
|
3
|
+
|
|
4
|
+
export const NavLegacyTertiary: React.FunctionComponent = () => {
|
|
5
|
+
const [activeItem, setActiveItem] = React.useState(0);
|
|
6
|
+
|
|
7
|
+
const onSelect = (result: { itemId: number | string }) => {
|
|
8
|
+
setActiveItem(result.itemId as number);
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
return (
|
|
12
|
+
<Nav onSelect={onSelect} variant="tertiary" aria-label="Tertiary global nav">
|
|
13
|
+
<NavList>
|
|
14
|
+
{Array.apply(0, Array(10)).map(function(_item, index: number) {
|
|
15
|
+
const num = index + 1;
|
|
16
|
+
return (
|
|
17
|
+
<NavItem
|
|
18
|
+
preventDefault
|
|
19
|
+
key={num}
|
|
20
|
+
itemId={num}
|
|
21
|
+
isActive={activeItem === num}
|
|
22
|
+
id={`legacy-tertiary-${num}`}
|
|
23
|
+
to={`#legacy-tertiary-${num}`}
|
|
24
|
+
>
|
|
25
|
+
Tertiary nav item {num}
|
|
26
|
+
</NavItem>
|
|
27
|
+
);
|
|
28
|
+
})}
|
|
29
|
+
</NavList>
|
|
30
|
+
</Nav>
|
|
31
|
+
);
|
|
32
|
+
};
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Nav, NavExpandable, NavItem, NavItemSeparator, NavList } from '@patternfly/react-core';
|
|
3
|
+
|
|
4
|
+
export const NavMixed: React.FunctionComponent = () => {
|
|
5
|
+
const [activeGroup, setActiveGroup] = React.useState('');
|
|
6
|
+
const [activeItem, setActiveItem] = React.useState('ungrouped_item-1');
|
|
7
|
+
|
|
8
|
+
const onSelect = (result: { itemId: number | string; groupId: number | string | null }) => {
|
|
9
|
+
setActiveGroup(result.groupId as string);
|
|
10
|
+
setActiveItem(result.itemId as string);
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
return (
|
|
14
|
+
<Nav onSelect={onSelect} aria-label="Mixed global nav">
|
|
15
|
+
<NavList>
|
|
16
|
+
<NavItem
|
|
17
|
+
preventDefault
|
|
18
|
+
id="mixed-1"
|
|
19
|
+
to="#mixed-1"
|
|
20
|
+
itemId="ungrouped_item-1"
|
|
21
|
+
isActive={activeItem === 'ungrouped_item-1'}
|
|
22
|
+
>
|
|
23
|
+
Link 1 (not expandable)
|
|
24
|
+
</NavItem>
|
|
25
|
+
<NavExpandable
|
|
26
|
+
title="Expandable section title 1"
|
|
27
|
+
groupId="nav-mixed-group-1"
|
|
28
|
+
isActive={activeGroup === 'nav-mixed-group-1'}
|
|
29
|
+
>
|
|
30
|
+
<NavItem
|
|
31
|
+
preventDefault
|
|
32
|
+
id="mixed-2"
|
|
33
|
+
to="#mixed-2"
|
|
34
|
+
groupId="nav-mixed-group-1"
|
|
35
|
+
itemId="nav-mixed-group-1_item-1"
|
|
36
|
+
isActive={activeItem === 'nav-mixed-group-1_item-1'}
|
|
37
|
+
>
|
|
38
|
+
Mixed Link 1
|
|
39
|
+
</NavItem>
|
|
40
|
+
<NavItemSeparator />
|
|
41
|
+
<NavItem
|
|
42
|
+
preventDefault
|
|
43
|
+
id="mixed-3"
|
|
44
|
+
to="#mixed-3"
|
|
45
|
+
groupId="nav-mixed-group-1"
|
|
46
|
+
itemId="nav-mixed-group-1_item-2"
|
|
47
|
+
isActive={activeItem === 'nav-mixed-group-1_item-2'}
|
|
48
|
+
>
|
|
49
|
+
Mixed Link 2
|
|
50
|
+
</NavItem>
|
|
51
|
+
<NavItem
|
|
52
|
+
preventDefault
|
|
53
|
+
id="mixed-4"
|
|
54
|
+
to="#mixed-4"
|
|
55
|
+
groupId="nav-mixed-group-1"
|
|
56
|
+
itemId="nav-mixed-group-1_item-3"
|
|
57
|
+
isActive={activeItem === 'nav-mixed-group-1_item-3'}
|
|
58
|
+
>
|
|
59
|
+
Mixed Link 3
|
|
60
|
+
</NavItem>
|
|
61
|
+
</NavExpandable>
|
|
62
|
+
<NavExpandable
|
|
63
|
+
title="Expandable section title 2"
|
|
64
|
+
groupId="nav-mixed-group-2"
|
|
65
|
+
isActive={activeGroup === 'nav-mixed-group-2'}
|
|
66
|
+
>
|
|
67
|
+
<NavItem
|
|
68
|
+
preventDefault
|
|
69
|
+
id="mixed-5"
|
|
70
|
+
to="#mixed-5"
|
|
71
|
+
groupId="nav-mixed-group-2"
|
|
72
|
+
itemId="nav-mixed-group-2_item-1"
|
|
73
|
+
isActive={activeItem === 'nav-mixed-group-2_item-1'}
|
|
74
|
+
>
|
|
75
|
+
Mixed 2 Link 1
|
|
76
|
+
</NavItem>
|
|
77
|
+
<NavItem
|
|
78
|
+
preventDefault
|
|
79
|
+
id="mixed-6"
|
|
80
|
+
to="#mixed-6"
|
|
81
|
+
groupId="nav-mixed-group-2"
|
|
82
|
+
itemId="nav-mixed-group-2_item-2"
|
|
83
|
+
isActive={activeItem === 'nav-mixed-group-2_item-2'}
|
|
84
|
+
>
|
|
85
|
+
Mixed 2 Link 2
|
|
86
|
+
</NavItem>
|
|
87
|
+
<NavItem
|
|
88
|
+
preventDefault
|
|
89
|
+
id="mixed-7"
|
|
90
|
+
to="#mixed-7"
|
|
91
|
+
groupId="nav-mixed-group-2"
|
|
92
|
+
itemId="nav-mixed-group-2_item-3"
|
|
93
|
+
isActive={activeItem === 'nav-mixed-group-2_item-3'}
|
|
94
|
+
>
|
|
95
|
+
Mixed 2 Link 3
|
|
96
|
+
</NavItem>
|
|
97
|
+
</NavExpandable>
|
|
98
|
+
</NavList>
|
|
99
|
+
</Nav>
|
|
100
|
+
);
|
|
101
|
+
};
|