@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.
Files changed (94) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/esm/components/Page/Page.d.ts +1 -1
  3. package/dist/esm/components/Page/Page.d.ts.map +1 -1
  4. package/dist/esm/components/Page/PageBreadcrumb.d.ts +3 -1
  5. package/dist/esm/components/Page/PageBreadcrumb.d.ts.map +1 -1
  6. package/dist/esm/components/Page/PageBreadcrumb.js +8 -2
  7. package/dist/esm/components/Page/PageBreadcrumb.js.map +1 -1
  8. package/dist/esm/components/Page/PageGroup.d.ts +3 -1
  9. package/dist/esm/components/Page/PageGroup.d.ts.map +1 -1
  10. package/dist/esm/components/Page/PageGroup.js +8 -2
  11. package/dist/esm/components/Page/PageGroup.js.map +1 -1
  12. package/dist/esm/components/Page/PageNavigation.d.ts +3 -1
  13. package/dist/esm/components/Page/PageNavigation.d.ts.map +1 -1
  14. package/dist/esm/components/Page/PageNavigation.js +8 -2
  15. package/dist/esm/components/Page/PageNavigation.js.map +1 -1
  16. package/dist/esm/components/Page/PageSection.d.ts +4 -0
  17. package/dist/esm/components/Page/PageSection.d.ts.map +1 -1
  18. package/dist/esm/components/Page/PageSection.js +8 -2
  19. package/dist/esm/components/Page/PageSection.js.map +1 -1
  20. package/dist/js/components/Page/Page.d.ts +1 -1
  21. package/dist/js/components/Page/Page.d.ts.map +1 -1
  22. package/dist/js/components/Page/PageBreadcrumb.d.ts +3 -1
  23. package/dist/js/components/Page/PageBreadcrumb.d.ts.map +1 -1
  24. package/dist/js/components/Page/PageBreadcrumb.js +8 -2
  25. package/dist/js/components/Page/PageBreadcrumb.js.map +1 -1
  26. package/dist/js/components/Page/PageGroup.d.ts +3 -1
  27. package/dist/js/components/Page/PageGroup.d.ts.map +1 -1
  28. package/dist/js/components/Page/PageGroup.js +8 -2
  29. package/dist/js/components/Page/PageGroup.js.map +1 -1
  30. package/dist/js/components/Page/PageNavigation.d.ts +3 -1
  31. package/dist/js/components/Page/PageNavigation.d.ts.map +1 -1
  32. package/dist/js/components/Page/PageNavigation.js +8 -2
  33. package/dist/js/components/Page/PageNavigation.js.map +1 -1
  34. package/dist/js/components/Page/PageSection.d.ts +4 -0
  35. package/dist/js/components/Page/PageSection.d.ts.map +1 -1
  36. package/dist/js/components/Page/PageSection.js +8 -2
  37. package/dist/js/components/Page/PageSection.js.map +1 -1
  38. package/dist/styles/base-no-reset.css +1 -1
  39. package/dist/styles/base.css +1 -1
  40. package/dist/umd/react-core.css +669 -669
  41. package/dist/umd/react-core.js +444 -515
  42. package/dist/umd/react-core.min.js +5 -5
  43. package/package.json +12 -12
  44. package/src/components/Nav/examples/Nav.md +10 -626
  45. package/src/components/Nav/examples/NavDefault.tsx +29 -0
  46. package/src/components/Nav/examples/NavDrilldown.tsx +20 -15
  47. package/src/components/Nav/examples/NavExpandable.tsx +119 -0
  48. package/src/components/Nav/examples/NavExpandableThirdLevel.tsx +115 -0
  49. package/src/components/Nav/examples/NavFlyout.tsx +102 -0
  50. package/src/components/Nav/examples/NavGrouped.tsx +67 -0
  51. package/src/components/Nav/examples/NavHorizontalPageHeader.tsx +34 -0
  52. package/src/components/Nav/examples/NavHorizontalSubNav.tsx +32 -0
  53. package/src/components/Nav/examples/NavLegacyTertiary.tsx +32 -0
  54. package/src/components/Nav/examples/NavMixed.tsx +101 -0
  55. package/src/components/Page/Page.tsx +1 -1
  56. package/src/components/Page/PageBreadcrumb.tsx +11 -0
  57. package/src/components/Page/PageGroup.tsx +11 -0
  58. package/src/components/Page/PageNavigation.tsx +11 -0
  59. package/src/components/Page/PageSection.tsx +13 -0
  60. package/src/components/Page/__tests__/PageBreadcrumb.test.tsx +41 -1
  61. package/src/components/Page/__tests__/PageGroup.test.tsx +41 -1
  62. package/src/components/Page/__tests__/PageNavigation.test.tsx +41 -1
  63. package/src/components/Page/__tests__/PageSection.test.tsx +41 -1
  64. package/src/components/Popover/examples/Popover.md +10 -293
  65. package/src/components/Popover/examples/PopoverAdvanced.tsx +79 -0
  66. package/src/components/Popover/examples/PopoverAlert.tsx +47 -0
  67. package/src/components/Popover/examples/PopoverBasic.tsx +15 -0
  68. package/src/components/Popover/examples/PopoverCloseControlled.tsx +29 -0
  69. package/src/components/Popover/examples/PopoverCloseUncontrolled.tsx +25 -0
  70. package/src/components/Popover/examples/PopoverReactRef.tsx +23 -0
  71. package/src/components/Popover/examples/PopoverSelectorRef.tsx +19 -0
  72. package/src/components/Popover/examples/PopoverWidthAuto.tsx +14 -0
  73. package/src/components/Popover/examples/PopoverWithIconInTheTitle.tsx +17 -0
  74. package/src/components/Popover/examples/PopoverWithoutHeaderFooterCloseNoPadding.tsx +21 -0
  75. package/src/components/Progress/examples/Progress.md +18 -117
  76. package/src/components/Progress/examples/ProgressBasic.tsx +4 -0
  77. package/src/components/Progress/examples/ProgressFailure.tsx +6 -0
  78. package/src/components/Progress/examples/ProgressFailureWithoutMeasure.tsx +6 -0
  79. package/src/components/Progress/examples/ProgressFiniteStep.tsx +14 -0
  80. package/src/components/Progress/examples/ProgressInside.tsx +6 -0
  81. package/src/components/Progress/examples/ProgressInsideSuccess.tsx +11 -0
  82. package/src/components/Progress/examples/ProgressLarge.tsx +6 -0
  83. package/src/components/Progress/examples/ProgressOutside.tsx +6 -0
  84. package/src/components/Progress/examples/ProgressOutsideFailure.tsx +11 -0
  85. package/src/components/Progress/examples/ProgressSingleLine.tsx +6 -0
  86. package/src/components/Progress/examples/ProgressSmall.tsx +6 -0
  87. package/src/components/Progress/examples/ProgressStepInstruction.tsx +6 -0
  88. package/src/components/Progress/examples/ProgressSuccess.tsx +6 -0
  89. package/src/components/Progress/examples/ProgressTitleOutsideOfProgressBar.tsx +24 -0
  90. package/src/components/Progress/examples/ProgressTruncateTitle.tsx +10 -0
  91. package/src/components/Progress/examples/ProgressWarning.tsx +6 -0
  92. package/src/components/Progress/examples/ProgressWithoutMeasure.tsx +6 -0
  93. package/src/demos/JumpLinks.md +1 -0
  94. 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 itemId="subMenu-1_item-1" description="SubMenu 2" direction="down" drilldownMenu={subMenuTwo}>
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 NavLevelThreeDrill: React.FunctionComponent = () => {
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
+ };