@patternfly/react-core 6.7.0-prerelease.2 → 6.7.0-prerelease.3
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 +6 -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/Compass/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/Hero/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/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/Tile/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/AnimationsProvider/AnimationsProvider/package.json +1 -1
- package/dist/dynamic/helpers/AnimationsProvider/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/SSRSafeIds/SSRSafeIds/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/inert/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/useSSRSafeId/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 -3
- package/dist/esm/components/Button/Button.d.ts.map +1 -1
- package/dist/esm/components/Button/Button.js +2 -2
- package/dist/esm/components/Button/Button.js.map +1 -1
- package/dist/esm/components/Compass/Compass.d.ts +3 -7
- package/dist/esm/components/Compass/Compass.d.ts.map +1 -1
- package/dist/esm/components/Compass/Compass.js +2 -2
- package/dist/esm/components/Compass/Compass.js.map +1 -1
- package/dist/esm/components/MenuToggle/MenuToggle.d.ts +0 -2
- package/dist/esm/components/MenuToggle/MenuToggle.d.ts.map +1 -1
- package/dist/esm/components/MenuToggle/MenuToggle.js +2 -3
- package/dist/esm/components/MenuToggle/MenuToggle.js.map +1 -1
- package/dist/esm/components/Nav/Nav.d.ts +1 -1
- package/dist/esm/components/Nav/Nav.d.ts.map +1 -1
- package/dist/esm/components/Nav/Nav.js +2 -2
- package/dist/esm/components/Nav/Nav.js.map +1 -1
- package/dist/esm/components/Page/Page.d.ts +3 -7
- package/dist/esm/components/Page/Page.d.ts.map +1 -1
- package/dist/esm/components/Page/Page.js +3 -4
- package/dist/esm/components/Page/Page.js.map +1 -1
- package/dist/js/components/Button/Button.d.ts +1 -3
- package/dist/js/components/Button/Button.d.ts.map +1 -1
- package/dist/js/components/Button/Button.js +2 -2
- package/dist/js/components/Button/Button.js.map +1 -1
- package/dist/js/components/Compass/Compass.d.ts +3 -7
- package/dist/js/components/Compass/Compass.d.ts.map +1 -1
- package/dist/js/components/Compass/Compass.js +2 -2
- package/dist/js/components/Compass/Compass.js.map +1 -1
- package/dist/js/components/MenuToggle/MenuToggle.d.ts +0 -2
- package/dist/js/components/MenuToggle/MenuToggle.d.ts.map +1 -1
- package/dist/js/components/MenuToggle/MenuToggle.js +2 -3
- package/dist/js/components/MenuToggle/MenuToggle.js.map +1 -1
- package/dist/js/components/Nav/Nav.d.ts +1 -1
- package/dist/js/components/Nav/Nav.d.ts.map +1 -1
- package/dist/js/components/Nav/Nav.js +2 -2
- package/dist/js/components/Nav/Nav.js.map +1 -1
- package/dist/js/components/Page/Page.d.ts +3 -7
- package/dist/js/components/Page/Page.d.ts.map +1 -1
- package/dist/js/components/Page/Page.js +3 -4
- package/dist/js/components/Page/Page.js.map +1 -1
- package/dist/umd/assets/{output-BPcxNyfB.css → output-DjqlL2o3.css} +18487 -18494
- package/dist/umd/react-core.min.js +3 -3
- package/helpers/package.json +1 -1
- package/layouts/package.json +1 -1
- package/next/package.json +1 -1
- package/package.json +6 -6
- package/src/components/Button/Button.tsx +2 -5
- package/src/components/Button/__tests__/Button.test.tsx +8 -19
- package/src/components/Button/__tests__/__snapshots__/Button.test.tsx.snap +1 -1
- package/src/components/Compass/Compass.tsx +5 -11
- package/src/components/Compass/__tests__/Compass.test.tsx +3 -23
- package/src/components/MenuToggle/MenuToggle.tsx +0 -5
- package/src/components/MenuToggle/__tests__/MenuToggle.test.tsx +8 -19
- package/src/components/Nav/Nav.tsx +3 -3
- package/src/components/Nav/__tests__/Nav.test.tsx +8 -8
- package/src/components/Nav/examples/Nav.md +1 -1
- package/src/components/Page/Page.tsx +5 -12
- package/src/components/Page/__tests__/Page.test.tsx +4 -30
- package/src/demos/Compass/examples/CompassDockDemo.tsx +25 -43
- package/src/demos/Nav.md +3 -3
- package/src/demos/examples/Nav/NavDockedNav.tsx +25 -43
|
@@ -51,8 +51,7 @@ export const CompassDockDemo: React.FunctionComponent = () => {
|
|
|
51
51
|
const [activeItem, setActiveItem] = useState<number>(0);
|
|
52
52
|
const [isNavGroupExpanded, setIsNavGroupExpanded] = useState(false);
|
|
53
53
|
const [isDockExpanded, setIsDockExpanded] = useState(false);
|
|
54
|
-
const [
|
|
55
|
-
const [isDockExpandableExpanded, setIsDockExpandableExpanded] = useState(false);
|
|
54
|
+
const [isDockOverlay, setIsDockOverlay] = useState(false);
|
|
56
55
|
const [isMobile, setIsMobile] = useState(false);
|
|
57
56
|
|
|
58
57
|
useEffect(() => {
|
|
@@ -69,7 +68,7 @@ export const CompassDockDemo: React.FunctionComponent = () => {
|
|
|
69
68
|
}, []);
|
|
70
69
|
|
|
71
70
|
const handleDockClickOutside = (event: MouseEvent) => {
|
|
72
|
-
if (
|
|
71
|
+
if (!isDockExpanded) {
|
|
73
72
|
return;
|
|
74
73
|
}
|
|
75
74
|
|
|
@@ -80,21 +79,22 @@ export const CompassDockDemo: React.FunctionComponent = () => {
|
|
|
80
79
|
dockedMastheadElement &&
|
|
81
80
|
!dockedMastheadElement.contains(event.target as Node) &&
|
|
82
81
|
!dockedMobileMastheadToggle?.contains(event.target as Node) &&
|
|
83
|
-
|
|
82
|
+
isDockExpanded &&
|
|
83
|
+
(isDockOverlay || isMobile)
|
|
84
84
|
) {
|
|
85
|
-
setIsDockExpandableExpanded(false);
|
|
86
85
|
setIsDockExpanded(false);
|
|
86
|
+
setIsDockOverlay(false);
|
|
87
87
|
}
|
|
88
88
|
};
|
|
89
89
|
|
|
90
90
|
const handleDockKeydown = (_event: KeyboardEvent) => {
|
|
91
|
-
if (
|
|
91
|
+
if (!isDockExpanded) {
|
|
92
92
|
return;
|
|
93
93
|
}
|
|
94
94
|
|
|
95
95
|
if (_event.key === 'Escape') {
|
|
96
|
-
setIsDockExpandableExpanded(false);
|
|
97
96
|
setIsDockExpanded(false);
|
|
97
|
+
setIsDockOverlay(false);
|
|
98
98
|
}
|
|
99
99
|
};
|
|
100
100
|
|
|
@@ -106,18 +106,17 @@ export const CompassDockDemo: React.FunctionComponent = () => {
|
|
|
106
106
|
window.removeEventListener('click', handleDockClickOutside);
|
|
107
107
|
window.removeEventListener('keydown', handleDockKeydown);
|
|
108
108
|
};
|
|
109
|
-
}, [
|
|
109
|
+
}, [isDockOverlay, isDockExpanded, isMobile]);
|
|
110
110
|
|
|
111
111
|
const onNavSelect = (_event: React.FormEvent<HTMLInputElement>, selectedItem: NavOnSelectProps) => {
|
|
112
112
|
typeof selectedItem.itemId === 'number' && setActiveItem(selectedItem.itemId);
|
|
113
113
|
|
|
114
|
-
if (!
|
|
114
|
+
if (isDockExpanded && !isDockOverlay && !isMobile) {
|
|
115
115
|
return;
|
|
116
116
|
}
|
|
117
117
|
|
|
118
|
-
setIsDockExpandableExpanded(false);
|
|
119
|
-
setIsDockTextExpanded(false);
|
|
120
118
|
setIsDockExpanded(false);
|
|
119
|
+
setIsDockOverlay(false);
|
|
121
120
|
};
|
|
122
121
|
|
|
123
122
|
const navItem1Ref = useRef<HTMLAnchorElement>(null);
|
|
@@ -141,45 +140,29 @@ export const CompassDockDemo: React.FunctionComponent = () => {
|
|
|
141
140
|
};
|
|
142
141
|
|
|
143
142
|
const onToggleDock = () => {
|
|
144
|
-
|
|
145
|
-
|
|
143
|
+
const nextState = !isDockExpanded;
|
|
144
|
+
if (!nextState) {
|
|
145
|
+
setIsDockOverlay(false);
|
|
146
|
+
}
|
|
147
|
+
setIsDockExpanded(nextState);
|
|
146
148
|
|
|
149
|
+
if (isMobile) {
|
|
147
150
|
if (isDockExpanded) {
|
|
148
151
|
setTimeout(() => {
|
|
149
152
|
mobileToggleRef.current?.focus();
|
|
150
153
|
}, 200);
|
|
151
154
|
}
|
|
152
|
-
} else {
|
|
153
|
-
const nextDockTextExpanded = !isDockTextExpanded;
|
|
154
|
-
setIsDockTextExpanded(nextDockTextExpanded);
|
|
155
|
-
|
|
156
|
-
if (!nextDockTextExpanded) {
|
|
157
|
-
setIsDockExpandableExpanded(false);
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
if (isDockExpandableExpanded) {
|
|
161
|
-
setIsDockExpandableExpanded(false);
|
|
162
|
-
setIsDockTextExpanded(false);
|
|
163
|
-
}
|
|
164
155
|
}
|
|
165
156
|
};
|
|
166
157
|
|
|
167
158
|
const onToggleNavGroup = (_event: React.MouseEvent<HTMLButtonElement>, isExpanded: boolean) => {
|
|
168
|
-
if (!
|
|
159
|
+
if (!isDockExpanded) {
|
|
169
160
|
setIsNavGroupExpanded(true);
|
|
161
|
+
setIsDockOverlay(true);
|
|
162
|
+
setIsDockExpanded(true);
|
|
170
163
|
} else {
|
|
171
164
|
setIsNavGroupExpanded(isExpanded);
|
|
172
165
|
}
|
|
173
|
-
|
|
174
|
-
if (!isMobile) {
|
|
175
|
-
if (!isDockExpandableExpanded && !isDockTextExpanded) {
|
|
176
|
-
setIsDockExpandableExpanded(true);
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
if (!isDockTextExpanded) {
|
|
180
|
-
setIsDockTextExpanded(false);
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
166
|
};
|
|
184
167
|
|
|
185
168
|
const mobileTextLogo = (
|
|
@@ -315,7 +298,7 @@ export const CompassDockDemo: React.FunctionComponent = () => {
|
|
|
315
298
|
isHamburger
|
|
316
299
|
onClick={onToggleDock}
|
|
317
300
|
aria-label="Global navigation"
|
|
318
|
-
isExpanded={
|
|
301
|
+
isExpanded={isDockExpanded}
|
|
319
302
|
/>
|
|
320
303
|
</MastheadToggle>
|
|
321
304
|
<MastheadBrand>
|
|
@@ -409,7 +392,7 @@ export const CompassDockDemo: React.FunctionComponent = () => {
|
|
|
409
392
|
</NavItem>
|
|
410
393
|
</NavList>
|
|
411
394
|
</Nav>
|
|
412
|
-
{!
|
|
395
|
+
{!isDockExpanded && (
|
|
413
396
|
<>
|
|
414
397
|
<Tooltip aria="none" aria-live="off" triggerRef={navItem1Ref} content="System panel"></Tooltip>
|
|
415
398
|
<Tooltip aria="none" aria-live="off" triggerRef={navItem2Ref} content="Policy"></Tooltip>
|
|
@@ -426,7 +409,7 @@ export const CompassDockDemo: React.FunctionComponent = () => {
|
|
|
426
409
|
gap={{ default: 'gapNone', md: 'gapMd' }}
|
|
427
410
|
>
|
|
428
411
|
<ToolbarItem>
|
|
429
|
-
{
|
|
412
|
+
{isDockExpanded ? (
|
|
430
413
|
<MenuToggle
|
|
431
414
|
ref={appsRef}
|
|
432
415
|
variant="plain"
|
|
@@ -451,7 +434,7 @@ export const CompassDockDemo: React.FunctionComponent = () => {
|
|
|
451
434
|
)}
|
|
452
435
|
</ToolbarItem>
|
|
453
436
|
<ToolbarItem>
|
|
454
|
-
{
|
|
437
|
+
{isDockExpanded ? (
|
|
455
438
|
<Button ref={settingsRef} aria-label="Settings" isSettings variant="plain" isDocked>
|
|
456
439
|
Settings
|
|
457
440
|
</Button>
|
|
@@ -464,7 +447,7 @@ export const CompassDockDemo: React.FunctionComponent = () => {
|
|
|
464
447
|
)}
|
|
465
448
|
</ToolbarItem>
|
|
466
449
|
<ToolbarItem>
|
|
467
|
-
{
|
|
450
|
+
{isDockExpanded ? (
|
|
468
451
|
<MenuToggle
|
|
469
452
|
ref={helpRef}
|
|
470
453
|
variant="plain"
|
|
@@ -514,8 +497,7 @@ export const CompassDockDemo: React.FunctionComponent = () => {
|
|
|
514
497
|
masthead={mobileMasthead}
|
|
515
498
|
dock={dockContent}
|
|
516
499
|
isDockExpanded={isDockExpanded}
|
|
517
|
-
|
|
518
|
-
isDockTextExpanded={isDockTextExpanded}
|
|
500
|
+
isDockOverlay={isDockOverlay}
|
|
519
501
|
main={mainContent}
|
|
520
502
|
backgroundSrcDark="/assets/images/pf-background.svg"
|
|
521
503
|
backgroundSrcLight="/assets/images/pf-background.svg"
|
package/src/demos/Nav.md
CHANGED
|
@@ -87,15 +87,15 @@ To save space in the UI, you can use docked navigation to replace text-labeled n
|
|
|
87
87
|
|
|
88
88
|
This demo includes the following features:
|
|
89
89
|
|
|
90
|
-
1. A [page](/components/page) component with a docked layout, enabled via `variant="docked"`. Control the
|
|
90
|
+
1. A [page](/components/page) component with a docked layout, enabled via `variant="docked"`. Control the expanded state of the dock with `isDockExpanded` and the set whether the dock is an overlay with `isDockOverlay`. The expanded docked nav is automatically an overlay in mobile.
|
|
91
91
|
|
|
92
92
|
2. Two separate [masthead](/components/masthead) components:
|
|
93
93
|
- **Horizontal mobile masthead**: Shown on small viewports using `display={{ default: 'inline' }}`, with a hamburger menu toggle button, brand logo, and action buttons that should be immediately visible to users.
|
|
94
94
|
- **Vertical docked masthead**: Uses `variant="docked"` to create a thinner navigation sidebar with a hamburger menu toggle button, nav items, and action buttons.
|
|
95
95
|
|
|
96
|
-
3. A [navigation](/components/navigation) component with `variant="docked"` and multiple `<NavItem>` components that must include both icons and text labels. To control text visibility, `
|
|
96
|
+
3. A [navigation](/components/navigation) component with `variant="docked"` and multiple `<NavItem>` components that must include both icons and text labels. To control text visibility, `isExpanded={isDockExpanded}` is passed to the `<Nav>` component.
|
|
97
97
|
|
|
98
|
-
4. [Button](/components/button) and [menu toggle](/components/menus/menu-toggle) components, which use `isDocked` and `
|
|
98
|
+
4. [Button](/components/button) and [menu toggle](/components/menus/menu-toggle) components, which use `isDocked` and `isExpanded` to toggle between icon-only and text+icon styles. When the nav is docked, and only icons are shown, [tooltips](/components/tooltip) must provide full text labels for the navigation items, buttons, and menu toggles.
|
|
99
99
|
|
|
100
100
|
5. A `<MastheadLogo>` component that uses `isCompact` to show an icon-only logo when the dock is collapsed, and a full logo with text when expanded.
|
|
101
101
|
|
|
@@ -54,8 +54,7 @@ export const NavDockedNav: React.FunctionComponent = () => {
|
|
|
54
54
|
const [activeItem, setActiveItem] = useState(1);
|
|
55
55
|
const [isNavGroupExpanded, setIsNavGroupExpanded] = useState(false);
|
|
56
56
|
const [isDockExpanded, setIsDockExpanded] = useState(false);
|
|
57
|
-
const [
|
|
58
|
-
const [isDockExpandableExpanded, setIsDockExpandableExpanded] = useState(false);
|
|
57
|
+
const [isDockOverlay, setIsDockOverlay] = useState(false);
|
|
59
58
|
const [isMobile, setIsMobile] = useState(false);
|
|
60
59
|
|
|
61
60
|
useEffect(() => {
|
|
@@ -72,7 +71,7 @@ export const NavDockedNav: React.FunctionComponent = () => {
|
|
|
72
71
|
}, []);
|
|
73
72
|
|
|
74
73
|
const handleDockClickOutside = (event: MouseEvent) => {
|
|
75
|
-
if (
|
|
74
|
+
if (!isDockExpanded) {
|
|
76
75
|
return;
|
|
77
76
|
}
|
|
78
77
|
|
|
@@ -83,21 +82,22 @@ export const NavDockedNav: React.FunctionComponent = () => {
|
|
|
83
82
|
dockedMastheadElement &&
|
|
84
83
|
!dockedMastheadElement.contains(event.target as Node) &&
|
|
85
84
|
!dockedMobileMastheadToggle?.contains(event.target as Node) &&
|
|
86
|
-
|
|
85
|
+
isDockExpanded &&
|
|
86
|
+
(isDockOverlay || isMobile)
|
|
87
87
|
) {
|
|
88
|
-
setIsDockExpandableExpanded(false);
|
|
89
88
|
setIsDockExpanded(false);
|
|
89
|
+
setIsDockOverlay(false);
|
|
90
90
|
}
|
|
91
91
|
};
|
|
92
92
|
|
|
93
93
|
const handleDockKeydown = (_event: KeyboardEvent) => {
|
|
94
|
-
if (
|
|
94
|
+
if (!isDockExpanded) {
|
|
95
95
|
return;
|
|
96
96
|
}
|
|
97
97
|
|
|
98
98
|
if (_event.key === 'Escape') {
|
|
99
|
-
setIsDockExpandableExpanded(false);
|
|
100
99
|
setIsDockExpanded(false);
|
|
100
|
+
setIsDockOverlay(false);
|
|
101
101
|
}
|
|
102
102
|
};
|
|
103
103
|
|
|
@@ -109,18 +109,17 @@ export const NavDockedNav: React.FunctionComponent = () => {
|
|
|
109
109
|
window.removeEventListener('click', handleDockClickOutside);
|
|
110
110
|
window.removeEventListener('keydown', handleDockKeydown);
|
|
111
111
|
};
|
|
112
|
-
}, [
|
|
112
|
+
}, [isDockOverlay, isDockExpanded, isMobile]);
|
|
113
113
|
|
|
114
114
|
const onNavSelect = (_event: React.FormEvent<HTMLInputElement>, selectedItem: NavOnSelectProps) => {
|
|
115
115
|
typeof selectedItem.itemId === 'number' && setActiveItem(selectedItem.itemId);
|
|
116
116
|
|
|
117
|
-
if (!
|
|
117
|
+
if (isDockExpanded && !isDockOverlay && !isMobile) {
|
|
118
118
|
return;
|
|
119
119
|
}
|
|
120
120
|
|
|
121
|
-
setIsDockExpandableExpanded(false);
|
|
122
|
-
setIsDockTextExpanded(false);
|
|
123
121
|
setIsDockExpanded(false);
|
|
122
|
+
setIsDockOverlay(false);
|
|
124
123
|
};
|
|
125
124
|
|
|
126
125
|
const mobileTextLogo = (
|
|
@@ -251,45 +250,29 @@ export const NavDockedNav: React.FunctionComponent = () => {
|
|
|
251
250
|
};
|
|
252
251
|
|
|
253
252
|
const onToggleDock = () => {
|
|
254
|
-
|
|
255
|
-
|
|
253
|
+
const nextState = !isDockExpanded;
|
|
254
|
+
if (!nextState) {
|
|
255
|
+
setIsDockOverlay(false);
|
|
256
|
+
}
|
|
257
|
+
setIsDockExpanded(nextState);
|
|
256
258
|
|
|
259
|
+
if (isMobile) {
|
|
257
260
|
if (isDockExpanded) {
|
|
258
261
|
setTimeout(() => {
|
|
259
262
|
mobileToggleRef.current?.focus();
|
|
260
263
|
}, 200);
|
|
261
264
|
}
|
|
262
|
-
} else {
|
|
263
|
-
const nextDockTextExpanded = !isDockTextExpanded;
|
|
264
|
-
setIsDockTextExpanded(nextDockTextExpanded);
|
|
265
|
-
|
|
266
|
-
if (!nextDockTextExpanded) {
|
|
267
|
-
setIsDockExpandableExpanded(false);
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
if (isDockExpandableExpanded) {
|
|
271
|
-
setIsDockExpandableExpanded(false);
|
|
272
|
-
setIsDockTextExpanded(false);
|
|
273
|
-
}
|
|
274
265
|
}
|
|
275
266
|
};
|
|
276
267
|
|
|
277
268
|
const onToggleNavGroup = (_event: React.MouseEvent<HTMLButtonElement>, isExpanded: boolean) => {
|
|
278
|
-
if (!
|
|
269
|
+
if (!isDockExpanded) {
|
|
279
270
|
setIsNavGroupExpanded(true);
|
|
271
|
+
setIsDockOverlay(true);
|
|
272
|
+
setIsDockExpanded(true);
|
|
280
273
|
} else {
|
|
281
274
|
setIsNavGroupExpanded(isExpanded);
|
|
282
275
|
}
|
|
283
|
-
|
|
284
|
-
if (!isMobile) {
|
|
285
|
-
if (!isDockExpandableExpanded && !isDockTextExpanded) {
|
|
286
|
-
setIsDockExpandableExpanded(true);
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
if (!isDockTextExpanded) {
|
|
290
|
-
setIsDockTextExpanded(false);
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
276
|
};
|
|
294
277
|
|
|
295
278
|
// Mobile masthead - shown on mobile viewports only, hidden on desktop
|
|
@@ -339,7 +322,7 @@ export const NavDockedNav: React.FunctionComponent = () => {
|
|
|
339
322
|
isHamburger
|
|
340
323
|
onClick={onToggleDock}
|
|
341
324
|
aria-label="Global navigation"
|
|
342
|
-
isExpanded={
|
|
325
|
+
isExpanded={isDockExpanded}
|
|
343
326
|
/>
|
|
344
327
|
</MastheadToggle>
|
|
345
328
|
<MastheadBrand>
|
|
@@ -429,7 +412,7 @@ export const NavDockedNav: React.FunctionComponent = () => {
|
|
|
429
412
|
</NavItem>
|
|
430
413
|
</NavList>
|
|
431
414
|
</Nav>
|
|
432
|
-
{!
|
|
415
|
+
{!isDockExpanded && (
|
|
433
416
|
<>
|
|
434
417
|
<Tooltip aria="none" aria-live="off" triggerRef={navItem1Ref} content="System panel"></Tooltip>
|
|
435
418
|
<Tooltip aria="none" aria-live="off" triggerRef={navItem2Ref} content="Policy"></Tooltip>
|
|
@@ -446,7 +429,7 @@ export const NavDockedNav: React.FunctionComponent = () => {
|
|
|
446
429
|
gap={{ default: 'gapNone', md: 'gapMd' }}
|
|
447
430
|
>
|
|
448
431
|
<ToolbarItem>
|
|
449
|
-
{
|
|
432
|
+
{isDockExpanded ? (
|
|
450
433
|
<MenuToggle
|
|
451
434
|
ref={appsRef}
|
|
452
435
|
variant="plain"
|
|
@@ -471,7 +454,7 @@ export const NavDockedNav: React.FunctionComponent = () => {
|
|
|
471
454
|
)}
|
|
472
455
|
</ToolbarItem>
|
|
473
456
|
<ToolbarItem>
|
|
474
|
-
{
|
|
457
|
+
{isDockExpanded ? (
|
|
475
458
|
<Button ref={settingsRef} aria-label="Settings" isSettings variant="plain" isDocked>
|
|
476
459
|
Settings
|
|
477
460
|
</Button>
|
|
@@ -484,7 +467,7 @@ export const NavDockedNav: React.FunctionComponent = () => {
|
|
|
484
467
|
)}
|
|
485
468
|
</ToolbarItem>
|
|
486
469
|
<ToolbarItem>
|
|
487
|
-
{
|
|
470
|
+
{isDockExpanded ? (
|
|
488
471
|
<MenuToggle
|
|
489
472
|
ref={helpRef}
|
|
490
473
|
variant="plain"
|
|
@@ -537,8 +520,7 @@ export const NavDockedNav: React.FunctionComponent = () => {
|
|
|
537
520
|
<Page
|
|
538
521
|
variant="docked"
|
|
539
522
|
isDockExpanded={isDockExpanded}
|
|
540
|
-
|
|
541
|
-
isDockTextExpanded={isDockTextExpanded}
|
|
523
|
+
isDockOverlay={isDockOverlay}
|
|
542
524
|
masthead={mobileMasthead}
|
|
543
525
|
dockContent={dockedMasthead}
|
|
544
526
|
skipToContent={pageSkipToContent}
|