@patternfly/react-core 5.0.0-prerelease.2 → 5.0.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/dist/esm/components/AboutModal/package.json +1 -1
- package/dist/esm/components/Accordion/package.json +1 -1
- package/dist/esm/components/ActionList/package.json +1 -1
- package/dist/esm/components/Alert/package.json +1 -1
- package/dist/esm/components/Avatar/package.json +1 -1
- package/dist/esm/components/BackToTop/package.json +1 -1
- package/dist/esm/components/Backdrop/package.json +1 -1
- package/dist/esm/components/BackgroundImage/package.json +1 -1
- package/dist/esm/components/Badge/package.json +1 -1
- package/dist/esm/components/Banner/package.json +1 -1
- package/dist/esm/components/Brand/package.json +1 -1
- package/dist/esm/components/Breadcrumb/package.json +1 -1
- package/dist/esm/components/Button/package.json +1 -1
- package/dist/esm/components/CalendarMonth/package.json +1 -1
- package/dist/esm/components/Card/package.json +1 -1
- package/dist/esm/components/Checkbox/package.json +1 -1
- package/dist/esm/components/Chip/package.json +1 -1
- package/dist/esm/components/ClipboardCopy/package.json +1 -1
- package/dist/esm/components/CodeBlock/package.json +1 -1
- package/dist/esm/components/DataList/package.json +1 -1
- package/dist/esm/components/DatePicker/package.json +1 -1
- package/dist/esm/components/DescriptionList/package.json +1 -1
- package/dist/esm/components/Divider/package.json +1 -1
- package/dist/esm/components/DragDrop/package.json +1 -1
- package/dist/esm/components/Drawer/package.json +1 -1
- package/dist/esm/components/Dropdown/package.json +1 -1
- package/dist/esm/components/DualListSelector/package.json +1 -1
- package/dist/esm/components/EmptyState/package.json +1 -1
- package/dist/esm/components/ExpandableSection/package.json +1 -1
- package/dist/esm/components/FileUpload/package.json +1 -1
- package/dist/esm/components/Form/package.json +1 -1
- package/dist/esm/components/FormSelect/package.json +1 -1
- package/dist/esm/components/HelperText/package.json +1 -1
- package/dist/esm/components/Hint/package.json +1 -1
- package/dist/esm/components/Icon/package.json +1 -1
- package/dist/esm/components/InputGroup/package.json +1 -1
- package/dist/esm/components/JumpLinks/package.json +1 -1
- package/dist/esm/components/Label/package.json +1 -1
- package/dist/esm/components/List/package.json +1 -1
- package/dist/esm/components/LoginPage/package.json +1 -1
- package/dist/esm/components/Masthead/package.json +1 -1
- package/dist/esm/components/Menu/package.json +1 -1
- package/dist/esm/components/MenuToggle/package.json +1 -1
- package/dist/esm/components/Modal/package.json +1 -1
- package/dist/esm/components/MultipleFileUpload/package.json +1 -1
- package/dist/esm/components/Nav/package.json +1 -1
- package/dist/esm/components/NotificationBadge/package.json +1 -1
- package/dist/esm/components/NotificationDrawer/package.json +1 -1
- package/dist/esm/components/NumberInput/package.json +1 -1
- package/dist/esm/components/OverflowMenu/package.json +1 -1
- package/dist/esm/components/Page/package.json +1 -1
- package/dist/esm/components/Pagination/Navigation.d.ts +1 -1
- package/dist/esm/components/Pagination/Navigation.d.ts.map +1 -1
- package/dist/esm/components/Pagination/Navigation.js +4 -3
- package/dist/esm/components/Pagination/Navigation.js.map +1 -1
- package/dist/esm/components/Pagination/package.json +1 -1
- package/dist/esm/components/Panel/package.json +1 -1
- package/dist/esm/components/Popover/package.json +1 -1
- package/dist/esm/components/Progress/package.json +1 -1
- package/dist/esm/components/ProgressStepper/package.json +1 -1
- package/dist/esm/components/Radio/package.json +1 -1
- package/dist/esm/components/SearchInput/package.json +1 -1
- package/dist/esm/components/Select/package.json +1 -1
- package/dist/esm/components/Sidebar/package.json +1 -1
- package/dist/esm/components/SimpleList/package.json +1 -1
- package/dist/esm/components/Skeleton/package.json +1 -1
- package/dist/esm/components/SkipToContent/package.json +1 -1
- package/dist/esm/components/Slider/package.json +1 -1
- package/dist/esm/components/Spinner/package.json +1 -1
- package/dist/esm/components/Switch/package.json +1 -1
- package/dist/esm/components/Tabs/package.json +1 -1
- package/dist/esm/components/Text/package.json +1 -1
- package/dist/esm/components/TextArea/package.json +1 -1
- package/dist/esm/components/TextInput/package.json +1 -1
- package/dist/esm/components/TextInputGroup/package.json +1 -1
- package/dist/esm/components/Tile/package.json +1 -1
- package/dist/esm/components/TimePicker/package.json +1 -1
- package/dist/esm/components/Timestamp/package.json +1 -1
- package/dist/esm/components/Title/package.json +1 -1
- package/dist/esm/components/ToggleGroup/package.json +1 -1
- package/dist/esm/components/Toolbar/ToolbarGroup.d.ts +2 -0
- package/dist/esm/components/Toolbar/ToolbarGroup.d.ts.map +1 -1
- package/dist/esm/components/Toolbar/ToolbarGroup.js +2 -2
- package/dist/esm/components/Toolbar/ToolbarGroup.js.map +1 -1
- package/dist/esm/components/Toolbar/ToolbarItem.d.ts +2 -0
- package/dist/esm/components/Toolbar/ToolbarItem.d.ts.map +1 -1
- package/dist/esm/components/Toolbar/ToolbarItem.js +2 -2
- package/dist/esm/components/Toolbar/ToolbarItem.js.map +1 -1
- package/dist/esm/components/Toolbar/package.json +1 -1
- package/dist/esm/components/Tooltip/package.json +1 -1
- package/dist/esm/components/TreeView/package.json +1 -1
- package/dist/esm/components/Truncate/package.json +1 -1
- package/dist/esm/components/Wizard/hooks/package.json +1 -1
- package/dist/esm/components/Wizard/package.json +1 -1
- package/dist/esm/components/package.json +1 -1
- package/dist/esm/deprecated/components/ApplicationLauncher/package.json +1 -1
- package/dist/esm/deprecated/components/ContextSelector/package.json +1 -1
- package/dist/esm/deprecated/components/Dropdown/package.json +1 -1
- package/dist/esm/deprecated/components/OptionsMenu/package.json +1 -1
- package/dist/esm/deprecated/components/PageHeader/package.json +1 -1
- package/dist/esm/deprecated/components/Select/package.json +1 -1
- package/dist/esm/deprecated/components/Wizard/package.json +1 -1
- package/dist/esm/deprecated/components/package.json +1 -1
- package/dist/esm/deprecated/package.json +1 -1
- package/dist/esm/helpers/Popper/thirdparty/popper-core/package.json +1 -1
- package/dist/esm/helpers/package.json +1 -1
- package/dist/esm/layouts/Bullseye/package.json +1 -1
- package/dist/esm/layouts/Flex/package.json +1 -1
- package/dist/esm/layouts/Gallery/package.json +1 -1
- package/dist/esm/layouts/Grid/package.json +1 -1
- package/dist/esm/layouts/Level/package.json +1 -1
- package/dist/esm/layouts/Split/package.json +1 -1
- package/dist/esm/layouts/Stack/package.json +1 -1
- package/dist/esm/layouts/package.json +1 -1
- package/dist/esm/next/components/package.json +1 -1
- package/dist/esm/next/package.json +1 -1
- package/dist/esm/package.json +1 -1
- package/dist/js/components/AboutModal/package.json +1 -1
- package/dist/js/components/Accordion/package.json +1 -1
- package/dist/js/components/ActionList/package.json +1 -1
- package/dist/js/components/Alert/package.json +1 -1
- package/dist/js/components/Avatar/package.json +1 -1
- package/dist/js/components/BackToTop/package.json +1 -1
- package/dist/js/components/Backdrop/package.json +1 -1
- package/dist/js/components/BackgroundImage/package.json +1 -1
- package/dist/js/components/Badge/package.json +1 -1
- package/dist/js/components/Banner/package.json +1 -1
- package/dist/js/components/Brand/package.json +1 -1
- package/dist/js/components/Breadcrumb/package.json +1 -1
- package/dist/js/components/Button/package.json +1 -1
- package/dist/js/components/CalendarMonth/package.json +1 -1
- package/dist/js/components/Card/package.json +1 -1
- package/dist/js/components/Checkbox/package.json +1 -1
- package/dist/js/components/Chip/package.json +1 -1
- package/dist/js/components/ClipboardCopy/package.json +1 -1
- package/dist/js/components/CodeBlock/package.json +1 -1
- package/dist/js/components/DataList/package.json +1 -1
- package/dist/js/components/DatePicker/package.json +1 -1
- package/dist/js/components/DescriptionList/package.json +1 -1
- package/dist/js/components/Divider/package.json +1 -1
- package/dist/js/components/DragDrop/package.json +1 -1
- package/dist/js/components/Drawer/package.json +1 -1
- package/dist/js/components/Dropdown/package.json +1 -1
- package/dist/js/components/DualListSelector/package.json +1 -1
- package/dist/js/components/EmptyState/package.json +1 -1
- package/dist/js/components/ExpandableSection/package.json +1 -1
- package/dist/js/components/FileUpload/package.json +1 -1
- package/dist/js/components/Form/package.json +1 -1
- package/dist/js/components/FormSelect/package.json +1 -1
- package/dist/js/components/HelperText/package.json +1 -1
- package/dist/js/components/Hint/package.json +1 -1
- package/dist/js/components/Icon/package.json +1 -1
- package/dist/js/components/InputGroup/package.json +1 -1
- package/dist/js/components/JumpLinks/package.json +1 -1
- package/dist/js/components/Label/package.json +1 -1
- package/dist/js/components/List/package.json +1 -1
- package/dist/js/components/LoginPage/package.json +1 -1
- package/dist/js/components/Masthead/package.json +1 -1
- package/dist/js/components/Menu/package.json +1 -1
- package/dist/js/components/MenuToggle/package.json +1 -1
- package/dist/js/components/Modal/package.json +1 -1
- package/dist/js/components/MultipleFileUpload/package.json +1 -1
- package/dist/js/components/Nav/package.json +1 -1
- package/dist/js/components/NotificationBadge/package.json +1 -1
- package/dist/js/components/NotificationDrawer/package.json +1 -1
- package/dist/js/components/NumberInput/package.json +1 -1
- package/dist/js/components/OverflowMenu/package.json +1 -1
- package/dist/js/components/Page/package.json +1 -1
- package/dist/js/components/Pagination/Navigation.d.ts +1 -1
- package/dist/js/components/Pagination/Navigation.d.ts.map +1 -1
- package/dist/js/components/Pagination/Navigation.js +4 -3
- package/dist/js/components/Pagination/Navigation.js.map +1 -1
- package/dist/js/components/Pagination/package.json +1 -1
- package/dist/js/components/Panel/package.json +1 -1
- package/dist/js/components/Popover/package.json +1 -1
- package/dist/js/components/Progress/package.json +1 -1
- package/dist/js/components/ProgressStepper/package.json +1 -1
- package/dist/js/components/Radio/package.json +1 -1
- package/dist/js/components/SearchInput/package.json +1 -1
- package/dist/js/components/Select/package.json +1 -1
- package/dist/js/components/Sidebar/package.json +1 -1
- package/dist/js/components/SimpleList/package.json +1 -1
- package/dist/js/components/Skeleton/package.json +1 -1
- package/dist/js/components/SkipToContent/package.json +1 -1
- package/dist/js/components/Slider/package.json +1 -1
- package/dist/js/components/Spinner/package.json +1 -1
- package/dist/js/components/Switch/package.json +1 -1
- package/dist/js/components/Tabs/package.json +1 -1
- package/dist/js/components/Text/package.json +1 -1
- package/dist/js/components/TextArea/package.json +1 -1
- package/dist/js/components/TextInput/package.json +1 -1
- package/dist/js/components/TextInputGroup/package.json +1 -1
- package/dist/js/components/Tile/package.json +1 -1
- package/dist/js/components/TimePicker/package.json +1 -1
- package/dist/js/components/Timestamp/package.json +1 -1
- package/dist/js/components/Title/package.json +1 -1
- package/dist/js/components/ToggleGroup/package.json +1 -1
- package/dist/js/components/Toolbar/ToolbarGroup.d.ts +2 -0
- package/dist/js/components/Toolbar/ToolbarGroup.d.ts.map +1 -1
- package/dist/js/components/Toolbar/ToolbarGroup.js +2 -2
- package/dist/js/components/Toolbar/ToolbarGroup.js.map +1 -1
- package/dist/js/components/Toolbar/ToolbarItem.d.ts +2 -0
- package/dist/js/components/Toolbar/ToolbarItem.d.ts.map +1 -1
- package/dist/js/components/Toolbar/ToolbarItem.js +2 -2
- package/dist/js/components/Toolbar/ToolbarItem.js.map +1 -1
- package/dist/js/components/Toolbar/package.json +1 -1
- package/dist/js/components/Tooltip/package.json +1 -1
- package/dist/js/components/TreeView/package.json +1 -1
- package/dist/js/components/Truncate/package.json +1 -1
- package/dist/js/components/Wizard/hooks/package.json +1 -1
- package/dist/js/components/Wizard/package.json +1 -1
- package/dist/js/components/package.json +1 -1
- package/dist/js/deprecated/components/ApplicationLauncher/package.json +1 -1
- package/dist/js/deprecated/components/ContextSelector/package.json +1 -1
- package/dist/js/deprecated/components/Dropdown/package.json +1 -1
- package/dist/js/deprecated/components/OptionsMenu/package.json +1 -1
- package/dist/js/deprecated/components/PageHeader/package.json +1 -1
- package/dist/js/deprecated/components/Select/package.json +1 -1
- package/dist/js/deprecated/components/Wizard/package.json +1 -1
- package/dist/js/deprecated/components/package.json +1 -1
- package/dist/js/deprecated/package.json +1 -1
- package/dist/js/helpers/Popper/thirdparty/popper-core/package.json +1 -1
- package/dist/js/helpers/package.json +1 -1
- package/dist/js/layouts/Bullseye/package.json +1 -1
- package/dist/js/layouts/Flex/package.json +1 -1
- package/dist/js/layouts/Gallery/package.json +1 -1
- package/dist/js/layouts/Grid/package.json +1 -1
- package/dist/js/layouts/Level/package.json +1 -1
- package/dist/js/layouts/Split/package.json +1 -1
- package/dist/js/layouts/Stack/package.json +1 -1
- package/dist/js/layouts/package.json +1 -1
- package/dist/js/next/components/package.json +1 -1
- package/dist/js/next/package.json +1 -1
- package/dist/js/package.json +1 -1
- package/dist/umd/react-core.min.js +1 -1
- package/package.json +2 -2
- package/src/components/Page/examples/Page.md +0 -4
- package/src/components/Pagination/Navigation.tsx +7 -7
- package/src/components/Pagination/__tests__/Generated/__snapshots__/Navigation.test.tsx.snap +14 -7
- package/src/components/Pagination/__tests__/__snapshots__/Pagination.test.tsx.snap +286 -146
- package/src/components/Toolbar/ToolbarGroup.tsx +4 -0
- package/src/components/Toolbar/ToolbarItem.tsx +4 -0
- package/src/components/Toolbar/__tests__/ToolbarGroup.test.tsx +10 -0
- package/src/components/Toolbar/__tests__/ToolbarItem.test.tsx +6 -1
- package/src/demos/Nav.md +381 -234
package/src/demos/Nav.md
CHANGED
|
@@ -3,20 +3,14 @@ id: Navigation
|
|
|
3
3
|
section: components
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
import {
|
|
7
|
-
PageHeader,
|
|
8
|
-
PageHeaderTools,
|
|
9
|
-
PageHeaderToolsGroup,
|
|
10
|
-
PageHeaderToolsItem
|
|
11
|
-
} from '@patternfly/react-core/deprecated';
|
|
12
|
-
|
|
13
6
|
import { DashboardBreadcrumb } from '@patternfly/react-core/src/demos/examples/DashboardWrapper';
|
|
14
7
|
import DashboardHeader from '@patternfly/react-core/src/demos/examples/DashboardHeader';
|
|
15
8
|
import CogIcon from '@patternfly/react-icons/dist/esm/icons/cog-icon';
|
|
16
9
|
import HelpIcon from '@patternfly/react-icons/dist/esm/icons/help-icon';
|
|
17
10
|
import QuestionCircleIcon from '@patternfly/react-icons/dist/esm/icons/question-circle-icon';
|
|
18
11
|
import EllipsisVIcon from '@patternfly/react-icons/dist/esm/icons/ellipsis-v-icon';
|
|
19
|
-
import
|
|
12
|
+
import BellIcon from '@patternfly/react-icons/dist/esm/icons/bell-icon';
|
|
13
|
+
import BarsIcon from '@patternfly/react-icons/dist/esm/icons/bars-icon';
|
|
20
14
|
import imgAvatar from '@patternfly/react-core/src/components/Avatar/examples/avatarImg.svg';
|
|
21
15
|
import imgColorBrand from '@patternfly/react-core/src/demos/examples/pfColorLogo.svg';
|
|
22
16
|
|
|
@@ -387,6 +381,10 @@ import {
|
|
|
387
381
|
DropdownList,
|
|
388
382
|
Gallery,
|
|
389
383
|
GalleryItem,
|
|
384
|
+
Masthead,
|
|
385
|
+
MastheadMain,
|
|
386
|
+
MastheadBrand,
|
|
387
|
+
MastheadContent,
|
|
390
388
|
MenuToggle,
|
|
391
389
|
Nav,
|
|
392
390
|
NavItem,
|
|
@@ -396,21 +394,19 @@ import {
|
|
|
396
394
|
PageSectionVariants,
|
|
397
395
|
SkipToContent,
|
|
398
396
|
TextContent,
|
|
399
|
-
Text
|
|
397
|
+
Text,
|
|
398
|
+
Toolbar,
|
|
399
|
+
ToolbarContent,
|
|
400
|
+
ToolbarGroup,
|
|
401
|
+
ToolbarItem
|
|
400
402
|
} from '@patternfly/react-core';
|
|
401
|
-
|
|
402
|
-
import {
|
|
403
|
-
PageHeader,
|
|
404
|
-
PageHeaderTools,
|
|
405
|
-
PageHeaderToolsGroup,
|
|
406
|
-
PageHeaderToolsItem
|
|
407
|
-
} from '@patternfly/react-core/deprecated';
|
|
408
403
|
import { DashboardBreadcrumb } from '@patternfly/react-core/src/demos/examples/DashboardWrapper';
|
|
409
404
|
import CogIcon from '@patternfly/react-icons/dist/esm/icons/cog-icon';
|
|
410
405
|
import HelpIcon from '@patternfly/react-icons/dist/esm/icons/help-icon';
|
|
411
406
|
import QuestionCircleIcon from '@patternfly/react-icons/dist/esm/icons/question-circle-icon';
|
|
412
407
|
import EllipsisVIcon from '@patternfly/react-icons/dist/esm/icons/ellipsis-v-icon';
|
|
413
|
-
import
|
|
408
|
+
import BellIcon from '@patternfly/react-icons/dist/esm/icons/bell-icon';
|
|
409
|
+
import imgColorBrand from '@patternfly/react-core/src/demos/examples/pfColorLogo.svg';
|
|
414
410
|
import imgAvatar from '@patternfly/react-core/src/components/Avatar/examples/avatarImg.svg';
|
|
415
411
|
|
|
416
412
|
class PageLayoutHorizontalNav extends React.Component {
|
|
@@ -419,6 +415,7 @@ class PageLayoutHorizontalNav extends React.Component {
|
|
|
419
415
|
this.state = {
|
|
420
416
|
isDropdownOpen: false,
|
|
421
417
|
isKebabDropdownOpen: false,
|
|
418
|
+
isFullKebabDropdownOpen: false,
|
|
422
419
|
activeItem: 0
|
|
423
420
|
};
|
|
424
421
|
|
|
@@ -446,6 +443,12 @@ class PageLayoutHorizontalNav extends React.Component {
|
|
|
446
443
|
});
|
|
447
444
|
};
|
|
448
445
|
|
|
446
|
+
this.onFullKebabToggle = () => {
|
|
447
|
+
this.setState((prevState) => ({
|
|
448
|
+
isFullKebabDropdownOpen: !prevState.isFullKebabDropdownOpen
|
|
449
|
+
}));
|
|
450
|
+
};
|
|
451
|
+
|
|
449
452
|
this.onNavSelect = (_event, result) => {
|
|
450
453
|
this.setState({
|
|
451
454
|
activeItem: result.itemId
|
|
@@ -454,7 +457,7 @@ class PageLayoutHorizontalNav extends React.Component {
|
|
|
454
457
|
}
|
|
455
458
|
|
|
456
459
|
render() {
|
|
457
|
-
const { isDropdownOpen, isKebabDropdownOpen, activeItem } = this.state;
|
|
460
|
+
const { isDropdownOpen, isKebabDropdownOpen, isFullKebabDropdownOpen, activeItem } = this.state;
|
|
458
461
|
|
|
459
462
|
const PageNav = (
|
|
460
463
|
<Nav onSelect={this.onNavSelect} aria-label="Nav" variant="horizontal">
|
|
@@ -494,54 +497,82 @@ class PageLayoutHorizontalNav extends React.Component {
|
|
|
494
497
|
<DropdownItem key="group 2 logout">Logout</DropdownItem>
|
|
495
498
|
</>
|
|
496
499
|
);
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
</Button>
|
|
509
|
-
</PageHeaderToolsItem>
|
|
510
|
-
<PageHeaderToolsItem>
|
|
511
|
-
<Button aria-label="Help actions" variant={ButtonVariant.plain}>
|
|
512
|
-
<QuestionCircleIcon />
|
|
513
|
-
</Button>
|
|
514
|
-
</PageHeaderToolsItem>
|
|
515
|
-
</PageHeaderToolsGroup>
|
|
516
|
-
<PageHeaderToolsGroup>
|
|
517
|
-
<PageHeaderToolsItem
|
|
518
|
-
visibility={{
|
|
519
|
-
lg: 'hidden'
|
|
520
|
-
}} /** this kebab dropdown replaces the icon buttons and is hidden for desktop sizes */
|
|
521
|
-
>
|
|
522
|
-
<Dropdown
|
|
523
|
-
isOpen={isKebabDropdownOpen}
|
|
524
|
-
onSelect={this.onKebabDropdownSelect}
|
|
525
|
-
onOpenChange={(isOpen) => this.setState({ isKebabDropdownOpen: isOpen })}
|
|
526
|
-
popperProps={{ position: 'right' }}
|
|
527
|
-
toggle={(toggleRef) => (
|
|
528
|
-
<MenuToggle
|
|
529
|
-
ref={toggleRef}
|
|
530
|
-
isExpanded={isKebabDropdownOpen}
|
|
531
|
-
onClick={this.onKebabDropdownToggle}
|
|
532
|
-
variant="plain"
|
|
533
|
-
aria-label="Settings and help"
|
|
534
|
-
>
|
|
535
|
-
<EllipsisVIcon aria-hidden="true" />
|
|
536
|
-
</MenuToggle>
|
|
537
|
-
)}
|
|
538
|
-
>
|
|
539
|
-
<DropdownList>{kebabDropdownItems}</DropdownList>
|
|
540
|
-
</Dropdown>
|
|
541
|
-
</PageHeaderToolsItem>
|
|
542
|
-
<PageHeaderToolsItem
|
|
543
|
-
visibility={{ default: 'hidden', md: 'visible' }} /** this user dropdown is hidden on mobile sizes */
|
|
500
|
+
|
|
501
|
+
const headerToolbar = (
|
|
502
|
+
<Toolbar id="toolbar" isFullHeight isStatic>
|
|
503
|
+
<ToolbarContent>
|
|
504
|
+
<ToolbarItem isOverflowContainer>
|
|
505
|
+
{PageNav}
|
|
506
|
+
</ToolbarItem>
|
|
507
|
+
<ToolbarGroup
|
|
508
|
+
variant="icon-button-group"
|
|
509
|
+
align={{ default: 'alignRight' }}
|
|
510
|
+
spacer={{ default: 'spacerNone', md: 'spacerMd' }}
|
|
544
511
|
>
|
|
512
|
+
<ToolbarItem>
|
|
513
|
+
<Button
|
|
514
|
+
aria-label="Notifications"
|
|
515
|
+
variant={ButtonVariant.plain}
|
|
516
|
+
icon={<BellIcon />}
|
|
517
|
+
onClick={() => {}}
|
|
518
|
+
/>
|
|
519
|
+
</ToolbarItem>
|
|
520
|
+
<ToolbarGroup variant="icon-button-group" visibility={{ default: 'hidden', lg: 'visible' }}>
|
|
521
|
+
<ToolbarItem>
|
|
522
|
+
<Button aria-label="Settings" variant={ButtonVariant.plain} icon={<CogIcon />} />
|
|
523
|
+
</ToolbarItem>
|
|
524
|
+
<ToolbarItem>
|
|
525
|
+
<Button aria-label="Help" variant={ButtonVariant.plain} icon={<QuestionCircleIcon />} />
|
|
526
|
+
</ToolbarItem>
|
|
527
|
+
</ToolbarGroup>
|
|
528
|
+
<ToolbarItem visibility={{ default: 'hidden', md: 'visible', lg: 'hidden' }}>
|
|
529
|
+
<Dropdown
|
|
530
|
+
isOpen={isKebabDropdownOpen}
|
|
531
|
+
onSelect={this.onKebabDropdownSelect}
|
|
532
|
+
onOpenChange={(isOpen) => this.setState({ isKebabDropdownOpen: isOpen })}
|
|
533
|
+
popperProps={{ position: 'right' }}
|
|
534
|
+
toggle={(toggleRef) => (
|
|
535
|
+
<MenuToggle
|
|
536
|
+
ref={toggleRef}
|
|
537
|
+
isExpanded={isKebabDropdownOpen}
|
|
538
|
+
onClick={this.onKebabDropdownToggle}
|
|
539
|
+
variant="plain"
|
|
540
|
+
aria-label="Settings and help"
|
|
541
|
+
>
|
|
542
|
+
<EllipsisVIcon aria-hidden="true" />
|
|
543
|
+
</MenuToggle>
|
|
544
|
+
)}
|
|
545
|
+
>
|
|
546
|
+
<DropdownList>{kebabDropdownItems}</DropdownList>
|
|
547
|
+
</Dropdown>
|
|
548
|
+
</ToolbarItem>
|
|
549
|
+
<ToolbarItem visibility={{ md: 'hidden' }}>
|
|
550
|
+
<Dropdown
|
|
551
|
+
isOpen={isFullKebabDropdownOpen}
|
|
552
|
+
onSelect={this.onFullKebabSelect}
|
|
553
|
+
onOpenChange={(isOpen) => this.setState({ isFullKebabDropdownOpen: isOpen })}
|
|
554
|
+
popperProps={{ position: 'right' }}
|
|
555
|
+
toggle={(toggleRef) => (
|
|
556
|
+
<MenuToggle
|
|
557
|
+
ref={toggleRef}
|
|
558
|
+
isExpanded={isFullKebabDropdownOpen}
|
|
559
|
+
onClick={this.onFullKebabToggle}
|
|
560
|
+
variant="plain"
|
|
561
|
+
aria-label="Toolbar menu"
|
|
562
|
+
>
|
|
563
|
+
<EllipsisVIcon aria-hidden="true" />
|
|
564
|
+
</MenuToggle>
|
|
565
|
+
)}
|
|
566
|
+
>
|
|
567
|
+
<DropdownGroup key="group 2" aria-label="User actions">
|
|
568
|
+
<DropdownList>{userDropdownItems}</DropdownList>
|
|
569
|
+
</DropdownGroup>
|
|
570
|
+
<Divider />
|
|
571
|
+
<DropdownList>{kebabDropdownItems}</DropdownList>
|
|
572
|
+
</Dropdown>
|
|
573
|
+
</ToolbarItem>
|
|
574
|
+
</ToolbarGroup>
|
|
575
|
+
<ToolbarItem visibility={{ default: 'hidden', md: 'visible' }}>
|
|
545
576
|
<Dropdown
|
|
546
577
|
isOpen={isDropdownOpen}
|
|
547
578
|
onSelect={this.onDropdownSelect}
|
|
@@ -555,19 +586,32 @@ class PageLayoutHorizontalNav extends React.Component {
|
|
|
555
586
|
icon={<Avatar src={imgAvatar} alt="" />}
|
|
556
587
|
isFullHeight
|
|
557
588
|
>
|
|
558
|
-
|
|
589
|
+
Ned Username
|
|
559
590
|
</MenuToggle>
|
|
560
591
|
)}
|
|
561
592
|
>
|
|
562
593
|
<DropdownList>{userDropdownItems}</DropdownList>
|
|
563
594
|
</Dropdown>
|
|
564
|
-
</
|
|
565
|
-
</
|
|
566
|
-
</
|
|
595
|
+
</ToolbarItem>
|
|
596
|
+
</ToolbarContent>
|
|
597
|
+
</Toolbar>
|
|
567
598
|
);
|
|
568
|
-
|
|
569
599
|
const Header = (
|
|
570
|
-
<
|
|
600
|
+
<Masthead>
|
|
601
|
+
<MastheadMain>
|
|
602
|
+
<MastheadBrand>
|
|
603
|
+
<Brand
|
|
604
|
+
widths={{ default: '180px', md: '180px', '2xl': '220px' }}
|
|
605
|
+
src={imgColorBrand}
|
|
606
|
+
alt="Fallback patternFly default logo"
|
|
607
|
+
>
|
|
608
|
+
<source media="(min-width: 768px)" srcSet={imgColorBrand} />
|
|
609
|
+
<source srcSet={imgColorBrand} />
|
|
610
|
+
</Brand>
|
|
611
|
+
</MastheadBrand>
|
|
612
|
+
</MastheadMain>
|
|
613
|
+
<MastheadContent>{headerToolbar}</MastheadContent>
|
|
614
|
+
</Masthead>
|
|
571
615
|
);
|
|
572
616
|
|
|
573
617
|
const pageId = 'main-content-page-layout-horizontal-nav';
|
|
@@ -773,6 +817,10 @@ import {
|
|
|
773
817
|
Gallery,
|
|
774
818
|
GalleryItem,
|
|
775
819
|
MenuToggle,
|
|
820
|
+
Masthead,
|
|
821
|
+
MastheadMain,
|
|
822
|
+
MastheadBrand,
|
|
823
|
+
MastheadContent,
|
|
776
824
|
Nav,
|
|
777
825
|
NavItem,
|
|
778
826
|
NavList,
|
|
@@ -782,18 +830,18 @@ import {
|
|
|
782
830
|
PageSectionTypes,
|
|
783
831
|
SkipToContent,
|
|
784
832
|
TextContent,
|
|
785
|
-
Text
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
PageHeaderToolsGroup
|
|
792
|
-
} from '@patternfly/react-core/deprecated';
|
|
833
|
+
Text,
|
|
834
|
+
Toolbar,
|
|
835
|
+
ToolbarContent,
|
|
836
|
+
ToolbarGroup,
|
|
837
|
+
ToolbarItem
|
|
838
|
+
} from '@patternfly/react-core';
|
|
793
839
|
import { DashboardBreadcrumb } from '@patternfly/react-core/src/demos/examples/DashboardWrapper';
|
|
794
840
|
import CogIcon from '@patternfly/react-icons/dist/esm/icons/cog-icon';
|
|
795
841
|
import HelpIcon from '@patternfly/react-icons/dist/esm/icons/help-icon';
|
|
796
842
|
import QuestionCircleIcon from '@patternfly/react-icons/dist/esm/icons/question-circle-icon';
|
|
843
|
+
import BellIcon from '@patternfly/react-icons/dist/esm/icons/bell-icon';
|
|
844
|
+
import BarsIcon from '@patternfly/react-icons/dist/esm/icons/bars-icon';
|
|
797
845
|
import EllipsisVIcon from '@patternfly/react-icons/dist/esm/icons/ellipsis-v-icon';
|
|
798
846
|
import imgColorBrand from '@patternfly/react-core/src/demos/examples/pfColorLogo.svg';
|
|
799
847
|
import imgAvatar from '@patternfly/react-core/src/components/Avatar/examples/avatarImg.svg';
|
|
@@ -804,6 +852,7 @@ class HorizontalNavWithSubnav extends React.Component {
|
|
|
804
852
|
this.state = {
|
|
805
853
|
isDropdownOpen: false,
|
|
806
854
|
isKebabDropdownOpen: false,
|
|
855
|
+
isFullKebabDropdownOpen: false,
|
|
807
856
|
activeItem: 0,
|
|
808
857
|
activeSubNavItem: 7
|
|
809
858
|
};
|
|
@@ -832,6 +881,12 @@ class HorizontalNavWithSubnav extends React.Component {
|
|
|
832
881
|
});
|
|
833
882
|
};
|
|
834
883
|
|
|
884
|
+
this.onFullKebabToggle = () => {
|
|
885
|
+
this.setState((prevState) => ({
|
|
886
|
+
isFullKebabDropdownOpen: !prevState.isFullKebabDropdownOpen
|
|
887
|
+
}));
|
|
888
|
+
};
|
|
889
|
+
|
|
835
890
|
this.onNavSelect = (_event, result) => {
|
|
836
891
|
this.setState({
|
|
837
892
|
activeItem: result.itemId
|
|
@@ -846,7 +901,7 @@ class HorizontalNavWithSubnav extends React.Component {
|
|
|
846
901
|
}
|
|
847
902
|
|
|
848
903
|
render() {
|
|
849
|
-
const { isDropdownOpen, isKebabDropdownOpen, activeItem, activeSubNavItem } = this.state;
|
|
904
|
+
const { isDropdownOpen, isKebabDropdownOpen, isFullKebabDropdownOpen, activeItem, activeSubNavItem } = this.state;
|
|
850
905
|
|
|
851
906
|
const PageNav = (
|
|
852
907
|
<Nav onSelect={this.onNavSelect} aria-label="Nav" variant="horizontal">
|
|
@@ -892,90 +947,8 @@ class HorizontalNavWithSubnav extends React.Component {
|
|
|
892
947
|
<DropdownItem key="group 2 logout">Logout</DropdownItem>
|
|
893
948
|
</>
|
|
894
949
|
);
|
|
895
|
-
const headerTools = (
|
|
896
|
-
<PageHeaderTools>
|
|
897
|
-
<PageHeaderToolsGroup
|
|
898
|
-
visibility={{
|
|
899
|
-
default: 'hidden',
|
|
900
|
-
lg: 'visible'
|
|
901
|
-
}} /** the settings and help icon buttons are only visible on desktop sizes and replaced by a kebab dropdown for other sizes */
|
|
902
|
-
>
|
|
903
|
-
<PageHeaderToolsItem>
|
|
904
|
-
<Button aria-label="Settings actions" variant={ButtonVariant.plain}>
|
|
905
|
-
<CogIcon />
|
|
906
|
-
</Button>
|
|
907
|
-
</PageHeaderToolsItem>
|
|
908
|
-
<PageHeaderToolsItem>
|
|
909
|
-
<Button aria-label="Help actions" variant={ButtonVariant.plain}>
|
|
910
|
-
<QuestionCircleIcon />
|
|
911
|
-
</Button>
|
|
912
|
-
</PageHeaderToolsItem>
|
|
913
|
-
</PageHeaderToolsGroup>
|
|
914
|
-
<PageHeaderToolsGroup>
|
|
915
|
-
<PageHeaderToolsItem
|
|
916
|
-
visibility={{
|
|
917
|
-
lg: 'hidden'
|
|
918
|
-
}} /** this kebab dropdown replaces the icon buttons and is hidden for desktop sizes */
|
|
919
|
-
>
|
|
920
|
-
<Dropdown
|
|
921
|
-
isOpen={isKebabDropdownOpen}
|
|
922
|
-
onSelect={this.onKebabDropdownSelect}
|
|
923
|
-
onOpenChange={(isOpen) => this.setState({ isKebabDropdownOpen: isOpen })}
|
|
924
|
-
popperProps={{ position: 'right' }}
|
|
925
|
-
toggle={(toggleRef) => (
|
|
926
|
-
<MenuToggle
|
|
927
|
-
ref={toggleRef}
|
|
928
|
-
isExpanded={isKebabDropdownOpen}
|
|
929
|
-
onClick={this.onKebabDropdownToggle}
|
|
930
|
-
variant="plain"
|
|
931
|
-
aria-label="Settings and help"
|
|
932
|
-
>
|
|
933
|
-
<EllipsisVIcon aria-hidden="true" />
|
|
934
|
-
</MenuToggle>
|
|
935
|
-
)}
|
|
936
|
-
>
|
|
937
|
-
<DropdownList>{kebabDropdownItems}</DropdownList>
|
|
938
|
-
</Dropdown>
|
|
939
|
-
</PageHeaderToolsItem>
|
|
940
|
-
<PageHeaderToolsItem
|
|
941
|
-
visibility={{ default: 'hidden', md: 'visible' }} /** this user dropdown is hidden on mobile sizes */
|
|
942
|
-
>
|
|
943
|
-
<Dropdown
|
|
944
|
-
isOpen={isDropdownOpen}
|
|
945
|
-
onSelect={this.onDropdownSelect}
|
|
946
|
-
onOpenChange={(isOpen) => this.setState({ isDropdownOpen: isOpen })}
|
|
947
|
-
popperProps={{ position: 'right' }}
|
|
948
|
-
toggle={(toggleRef) => (
|
|
949
|
-
<MenuToggle
|
|
950
|
-
ref={toggleRef}
|
|
951
|
-
isExpanded={isDropdownOpen}
|
|
952
|
-
onClick={this.onDropdownToggle}
|
|
953
|
-
icon={<Avatar src={imgAvatar} alt="" />}
|
|
954
|
-
isFullHeight
|
|
955
|
-
>
|
|
956
|
-
John Smith
|
|
957
|
-
</MenuToggle>
|
|
958
|
-
)}
|
|
959
|
-
>
|
|
960
|
-
<DropdownList>{userDropdownItems}</DropdownList>
|
|
961
|
-
</Dropdown>
|
|
962
|
-
</PageHeaderToolsItem>
|
|
963
|
-
</PageHeaderToolsGroup>
|
|
964
|
-
</PageHeaderTools>
|
|
965
|
-
);
|
|
966
|
-
|
|
967
|
-
const Header = (
|
|
968
|
-
<PageHeader
|
|
969
|
-
logo={<Brand src={imgColorBrand} alt="Patternfly Logo" />}
|
|
970
|
-
headerTools={headerTools}
|
|
971
|
-
topNav={PageNav}
|
|
972
|
-
/>
|
|
973
|
-
);
|
|
974
|
-
|
|
975
|
-
const pageId = 'main-content-page-layout-horizontal-nav';
|
|
976
|
-
const PageSkipToContent = <SkipToContent href={`#${pageId}`}>Skip to content</SkipToContent>;
|
|
977
950
|
|
|
978
|
-
|
|
951
|
+
const SubNav = (
|
|
979
952
|
<Nav onSelect={this.onSubNavSelect} aria-label="Nav" variant="horizontal-subnav">
|
|
980
953
|
<NavList>
|
|
981
954
|
<NavItem itemId={7} isActive={activeSubNavItem === 7} to="#">
|
|
@@ -1003,6 +976,131 @@ class HorizontalNavWithSubnav extends React.Component {
|
|
|
1003
976
|
</Nav>
|
|
1004
977
|
);
|
|
1005
978
|
|
|
979
|
+
const headerToolbar = (
|
|
980
|
+
<Toolbar id="toolbar" isFullHeight isStatic>
|
|
981
|
+
<ToolbarContent>
|
|
982
|
+
<ToolbarItem isOverflowContainer>
|
|
983
|
+
{PageNav}
|
|
984
|
+
</ToolbarItem>
|
|
985
|
+
<ToolbarGroup
|
|
986
|
+
variant="icon-button-group"
|
|
987
|
+
align={{ default: 'alignRight' }}
|
|
988
|
+
spacer={{ default: 'spacerNone', md: 'spacerMd' }}
|
|
989
|
+
>
|
|
990
|
+
<ToolbarItem>
|
|
991
|
+
<Button
|
|
992
|
+
aria-label="Notifications"
|
|
993
|
+
variant={ButtonVariant.plain}
|
|
994
|
+
icon={<BellIcon />}
|
|
995
|
+
onClick={() => {}}
|
|
996
|
+
/>
|
|
997
|
+
</ToolbarItem>
|
|
998
|
+
<ToolbarGroup variant="icon-button-group" visibility={{ default: 'hidden', lg: 'visible' }}>
|
|
999
|
+
<ToolbarItem>
|
|
1000
|
+
<Button aria-label="Settings" variant={ButtonVariant.plain} icon={<CogIcon />} />
|
|
1001
|
+
</ToolbarItem>
|
|
1002
|
+
<ToolbarItem>
|
|
1003
|
+
<Button aria-label="Help" variant={ButtonVariant.plain} icon={<QuestionCircleIcon />} />
|
|
1004
|
+
</ToolbarItem>
|
|
1005
|
+
</ToolbarGroup>
|
|
1006
|
+
<ToolbarItem visibility={{ default: 'hidden', md: 'visible', lg: 'hidden' }}>
|
|
1007
|
+
<Dropdown
|
|
1008
|
+
isOpen={isKebabDropdownOpen}
|
|
1009
|
+
onSelect={this.onKebabDropdownSelect}
|
|
1010
|
+
onOpenChange={(isOpen) => this.setState({ isKebabDropdownOpen: isOpen })}
|
|
1011
|
+
popperProps={{ position: 'right' }}
|
|
1012
|
+
toggle={(toggleRef) => (
|
|
1013
|
+
<MenuToggle
|
|
1014
|
+
ref={toggleRef}
|
|
1015
|
+
isExpanded={isKebabDropdownOpen}
|
|
1016
|
+
onClick={this.onKebabDropdownToggle}
|
|
1017
|
+
variant="plain"
|
|
1018
|
+
aria-label="Settings and help"
|
|
1019
|
+
>
|
|
1020
|
+
<EllipsisVIcon aria-hidden="true" />
|
|
1021
|
+
</MenuToggle>
|
|
1022
|
+
)}
|
|
1023
|
+
>
|
|
1024
|
+
<DropdownList>{kebabDropdownItems}</DropdownList>
|
|
1025
|
+
</Dropdown>
|
|
1026
|
+
</ToolbarItem>
|
|
1027
|
+
<ToolbarItem visibility={{ md: 'hidden' }}>
|
|
1028
|
+
<Dropdown
|
|
1029
|
+
isOpen={isFullKebabDropdownOpen}
|
|
1030
|
+
onSelect={this.onFullKebabSelect}
|
|
1031
|
+
onOpenChange={(isOpen) => this.setState({ isFullKebabDropdownOpen: isOpen })}
|
|
1032
|
+
popperProps={{ position: 'right' }}
|
|
1033
|
+
toggle={(toggleRef) => (
|
|
1034
|
+
<MenuToggle
|
|
1035
|
+
ref={toggleRef}
|
|
1036
|
+
isExpanded={isFullKebabDropdownOpen}
|
|
1037
|
+
onClick={this.onFullKebabToggle}
|
|
1038
|
+
variant="plain"
|
|
1039
|
+
aria-label="Toolbar menu"
|
|
1040
|
+
>
|
|
1041
|
+
<EllipsisVIcon aria-hidden="true" />
|
|
1042
|
+
</MenuToggle>
|
|
1043
|
+
)}
|
|
1044
|
+
>
|
|
1045
|
+
<DropdownGroup key="group 2" aria-label="User actions">
|
|
1046
|
+
<DropdownList>{userDropdownItems}</DropdownList>
|
|
1047
|
+
</DropdownGroup>
|
|
1048
|
+
<Divider />
|
|
1049
|
+
<DropdownList>{kebabDropdownItems}</DropdownList>
|
|
1050
|
+
</Dropdown>
|
|
1051
|
+
</ToolbarItem>
|
|
1052
|
+
</ToolbarGroup>
|
|
1053
|
+
<ToolbarItem visibility={{ default: 'hidden', md: 'visible' }}>
|
|
1054
|
+
<Dropdown
|
|
1055
|
+
isOpen={isDropdownOpen}
|
|
1056
|
+
onSelect={this.onDropdownSelect}
|
|
1057
|
+
onOpenChange={(isOpen) => this.setState({ isDropdownOpen: isOpen })}
|
|
1058
|
+
popperProps={{ position: 'right' }}
|
|
1059
|
+
toggle={(toggleRef) => (
|
|
1060
|
+
<MenuToggle
|
|
1061
|
+
ref={toggleRef}
|
|
1062
|
+
isExpanded={isDropdownOpen}
|
|
1063
|
+
onClick={this.onDropdownToggle}
|
|
1064
|
+
icon={<Avatar src={imgAvatar} alt="" />}
|
|
1065
|
+
isFullHeight
|
|
1066
|
+
>
|
|
1067
|
+
Ned Username
|
|
1068
|
+
</MenuToggle>
|
|
1069
|
+
)}
|
|
1070
|
+
>
|
|
1071
|
+
<DropdownList>{userDropdownItems}</DropdownList>
|
|
1072
|
+
</Dropdown>
|
|
1073
|
+
</ToolbarItem>
|
|
1074
|
+
</ToolbarContent>
|
|
1075
|
+
</Toolbar>
|
|
1076
|
+
);
|
|
1077
|
+
const Header = (
|
|
1078
|
+
<Masthead>
|
|
1079
|
+
<MastheadToggle>
|
|
1080
|
+
<PageToggleButton variant="plain" aria-label="Global navigation">
|
|
1081
|
+
<BarsIcon />
|
|
1082
|
+
</PageToggleButton>
|
|
1083
|
+
</MastheadToggle>
|
|
1084
|
+
<MastheadMain>
|
|
1085
|
+
<MastheadBrand>
|
|
1086
|
+
<Brand
|
|
1087
|
+
widths={{ default: '180px', md: '180px', '2xl': '220px' }}
|
|
1088
|
+
src={imgColorBrand}
|
|
1089
|
+
alt="Fallback patternFly default logo"
|
|
1090
|
+
>
|
|
1091
|
+
<source media="(min-width: 768px)" srcSet={imgColorBrand} />
|
|
1092
|
+
<source srcSet={imgColorBrand} />
|
|
1093
|
+
</Brand>
|
|
1094
|
+
</MastheadBrand>
|
|
1095
|
+
</MastheadMain>
|
|
1096
|
+
<MastheadContent>{headerToolbar}</MastheadContent>
|
|
1097
|
+
</Masthead>
|
|
1098
|
+
);
|
|
1099
|
+
|
|
1100
|
+
|
|
1101
|
+
const pageId = 'main-content-page-layout-horizontal-nav';
|
|
1102
|
+
const PageSkipToContent = <SkipToContent href={`#${pageId}`}>Skip to content</SkipToContent>;
|
|
1103
|
+
|
|
1006
1104
|
return (
|
|
1007
1105
|
<React.Fragment>
|
|
1008
1106
|
<Page header={Header} skipToContent={PageSkipToContent} mainContainerId={pageId}>
|
|
@@ -1039,7 +1137,7 @@ class HorizontalNavWithSubnav extends React.Component {
|
|
|
1039
1137
|
}
|
|
1040
1138
|
```
|
|
1041
1139
|
|
|
1042
|
-
###
|
|
1140
|
+
### Tertiary nav (deprecated)
|
|
1043
1141
|
|
|
1044
1142
|
```js isFullscreen
|
|
1045
1143
|
import React from 'react';
|
|
@@ -1141,7 +1239,7 @@ class PageLayoutTertiaryNav extends React.Component {
|
|
|
1141
1239
|
}
|
|
1142
1240
|
```
|
|
1143
1241
|
|
|
1144
|
-
###
|
|
1242
|
+
### Light nav (deprecated)
|
|
1145
1243
|
|
|
1146
1244
|
```js isFullscreen
|
|
1147
1245
|
import React from 'react';
|
|
@@ -1263,6 +1361,10 @@ import {
|
|
|
1263
1361
|
DropdownList,
|
|
1264
1362
|
Gallery,
|
|
1265
1363
|
GalleryItem,
|
|
1364
|
+
Masthead,
|
|
1365
|
+
MastheadMain,
|
|
1366
|
+
MastheadBrand,
|
|
1367
|
+
MastheadContent,
|
|
1266
1368
|
MenuToggle,
|
|
1267
1369
|
Nav,
|
|
1268
1370
|
NavItem,
|
|
@@ -1274,20 +1376,21 @@ import {
|
|
|
1274
1376
|
PageSidebarBody,
|
|
1275
1377
|
SkipToContent,
|
|
1276
1378
|
TextContent,
|
|
1277
|
-
Text
|
|
1379
|
+
Text,
|
|
1380
|
+
Toolbar,
|
|
1381
|
+
ToolbarContent,
|
|
1382
|
+
ToolbarGroup,
|
|
1383
|
+
ToolbarItem
|
|
1278
1384
|
} from '@patternfly/react-core';
|
|
1279
|
-
import {
|
|
1280
|
-
PageHeader,
|
|
1281
|
-
PageHeaderTools,
|
|
1282
|
-
PageHeaderToolsItem,
|
|
1283
|
-
PageHeaderToolsGroup
|
|
1284
|
-
} from '@patternfly/react-core/deprecated';
|
|
1285
1385
|
import CogIcon from '@patternfly/react-icons/dist/esm/icons/cog-icon';
|
|
1286
1386
|
import HelpIcon from '@patternfly/react-icons/dist/esm/icons/help-icon';
|
|
1287
1387
|
import QuestionCircleIcon from '@patternfly/react-icons/dist/esm/icons/question-circle-icon';
|
|
1288
1388
|
import EllipsisVIcon from '@patternfly/react-icons/dist/esm/icons/ellipsis-v-icon';
|
|
1289
|
-
import
|
|
1389
|
+
import BellIcon from '@patternfly/react-icons/dist/esm/icons/bell-icon';
|
|
1390
|
+
import BarsIcon from '@patternfly/react-icons/dist/esm/icons/bars-icon';
|
|
1290
1391
|
import imgAvatar from '@patternfly/react-core/src/components/Avatar/examples/avatarImg.svg';
|
|
1392
|
+
import imgColorBrand from '@patternfly/react-core/src/demos/examples/pfColorLogo.svg';
|
|
1393
|
+
|
|
1291
1394
|
|
|
1292
1395
|
class PageLayoutManualNav extends React.Component {
|
|
1293
1396
|
constructor(props) {
|
|
@@ -1295,6 +1398,7 @@ class PageLayoutManualNav extends React.Component {
|
|
|
1295
1398
|
this.state = {
|
|
1296
1399
|
isDropdownOpen: false,
|
|
1297
1400
|
isKebabDropdownOpen: false,
|
|
1401
|
+
isFullKebabDropdownOpen: false,
|
|
1298
1402
|
activeItem: 0,
|
|
1299
1403
|
isMobileView: false,
|
|
1300
1404
|
isNavOpenDesktop: true,
|
|
@@ -1325,6 +1429,12 @@ class PageLayoutManualNav extends React.Component {
|
|
|
1325
1429
|
});
|
|
1326
1430
|
};
|
|
1327
1431
|
|
|
1432
|
+
this.onFullKebabToggle = () => {
|
|
1433
|
+
this.setState((prevState) => ({
|
|
1434
|
+
isFullKebabDropdownOpen: !prevState.isFullKebabDropdownOpen
|
|
1435
|
+
}));
|
|
1436
|
+
};
|
|
1437
|
+
|
|
1328
1438
|
this.onNavSelect = (_event, result) => {
|
|
1329
1439
|
this.setState({
|
|
1330
1440
|
activeItem: result.itemId
|
|
@@ -1351,7 +1461,7 @@ class PageLayoutManualNav extends React.Component {
|
|
|
1351
1461
|
}
|
|
1352
1462
|
|
|
1353
1463
|
render() {
|
|
1354
|
-
const { isDropdownOpen, isKebabDropdownOpen, activeItem, isNavOpenDesktop, isNavOpenMobile, isMobileView } =
|
|
1464
|
+
const { isDropdownOpen, isKebabDropdownOpen, isFullKebabDropdownOpen, activeItem, isNavOpenDesktop, isNavOpenMobile, isMobileView } =
|
|
1355
1465
|
this.state;
|
|
1356
1466
|
|
|
1357
1467
|
const PageNav = (
|
|
@@ -1392,54 +1502,79 @@ class PageLayoutManualNav extends React.Component {
|
|
|
1392
1502
|
<DropdownItem key="group 2 logout">Logout</DropdownItem>
|
|
1393
1503
|
</>
|
|
1394
1504
|
);
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
<PageHeaderToolsItem>
|
|
1404
|
-
<Button aria-label="Settings actions" variant={ButtonVariant.plain}>
|
|
1405
|
-
<CogIcon />
|
|
1406
|
-
</Button>
|
|
1407
|
-
</PageHeaderToolsItem>
|
|
1408
|
-
<PageHeaderToolsItem>
|
|
1409
|
-
<Button aria-label="Help actions" variant={ButtonVariant.plain}>
|
|
1410
|
-
<QuestionCircleIcon />
|
|
1411
|
-
</Button>
|
|
1412
|
-
</PageHeaderToolsItem>
|
|
1413
|
-
</PageHeaderToolsGroup>
|
|
1414
|
-
<PageHeaderToolsGroup>
|
|
1415
|
-
<PageHeaderToolsItem
|
|
1416
|
-
visibility={{
|
|
1417
|
-
lg: 'hidden'
|
|
1418
|
-
}} /** this kebab dropdown replaces the icon buttons and is hidden for desktop sizes */
|
|
1419
|
-
>
|
|
1420
|
-
<Dropdown
|
|
1421
|
-
isOpen={isKebabDropdownOpen}
|
|
1422
|
-
onSelect={this.onKebabDropdownSelect}
|
|
1423
|
-
onOpenChange={(isOpen) => this.setState({ isKebabDropdownOpen: isOpen })}
|
|
1424
|
-
popperProps={{ position: 'right' }}
|
|
1425
|
-
toggle={(toggleRef) => (
|
|
1426
|
-
<MenuToggle
|
|
1427
|
-
ref={toggleRef}
|
|
1428
|
-
isExpanded={isKebabDropdownOpen}
|
|
1429
|
-
onClick={this.onKebabDropdownToggle}
|
|
1430
|
-
variant="plain"
|
|
1431
|
-
aria-label="Settings and help"
|
|
1432
|
-
>
|
|
1433
|
-
<EllipsisVIcon aria-hidden="true" />
|
|
1434
|
-
</MenuToggle>
|
|
1435
|
-
)}
|
|
1436
|
-
>
|
|
1437
|
-
<DropdownList>{kebabDropdownItems}</DropdownList>
|
|
1438
|
-
</Dropdown>
|
|
1439
|
-
</PageHeaderToolsItem>
|
|
1440
|
-
<PageHeaderToolsItem
|
|
1441
|
-
visibility={{ default: 'hidden', md: 'visible' }} /** this user dropdown is hidden on mobile sizes */
|
|
1505
|
+
|
|
1506
|
+
const headerToolbar = (
|
|
1507
|
+
<Toolbar id="toolbar" isFullHeight isStatic>
|
|
1508
|
+
<ToolbarContent>
|
|
1509
|
+
<ToolbarGroup
|
|
1510
|
+
variant="icon-button-group"
|
|
1511
|
+
align={{ default: 'alignRight' }}
|
|
1512
|
+
spacer={{ default: 'spacerNone', md: 'spacerMd' }}
|
|
1442
1513
|
>
|
|
1514
|
+
<ToolbarItem>
|
|
1515
|
+
<Button
|
|
1516
|
+
aria-label="Notifications"
|
|
1517
|
+
variant={ButtonVariant.plain}
|
|
1518
|
+
icon={<BellIcon />}
|
|
1519
|
+
onClick={() => {}}
|
|
1520
|
+
/>
|
|
1521
|
+
</ToolbarItem>
|
|
1522
|
+
<ToolbarGroup variant="icon-button-group" visibility={{ default: 'hidden', lg: 'visible' }}>
|
|
1523
|
+
<ToolbarItem>
|
|
1524
|
+
<Button aria-label="Settings" variant={ButtonVariant.plain} icon={<CogIcon />} />
|
|
1525
|
+
</ToolbarItem>
|
|
1526
|
+
<ToolbarItem>
|
|
1527
|
+
<Button aria-label="Help" variant={ButtonVariant.plain} icon={<QuestionCircleIcon />} />
|
|
1528
|
+
</ToolbarItem>
|
|
1529
|
+
</ToolbarGroup>
|
|
1530
|
+
<ToolbarItem visibility={{ default: 'hidden', md: 'visible', lg: 'hidden' }}>
|
|
1531
|
+
<Dropdown
|
|
1532
|
+
isOpen={isKebabDropdownOpen}
|
|
1533
|
+
onSelect={this.onKebabDropdownSelect}
|
|
1534
|
+
onOpenChange={(isOpen) => this.setState({ isKebabDropdownOpen: isOpen })}
|
|
1535
|
+
popperProps={{ position: 'right' }}
|
|
1536
|
+
toggle={(toggleRef) => (
|
|
1537
|
+
<MenuToggle
|
|
1538
|
+
ref={toggleRef}
|
|
1539
|
+
isExpanded={isKebabDropdownOpen}
|
|
1540
|
+
onClick={this.onKebabDropdownToggle}
|
|
1541
|
+
variant="plain"
|
|
1542
|
+
aria-label="Settings and help"
|
|
1543
|
+
>
|
|
1544
|
+
<EllipsisVIcon aria-hidden="true" />
|
|
1545
|
+
</MenuToggle>
|
|
1546
|
+
)}
|
|
1547
|
+
>
|
|
1548
|
+
<DropdownList>{kebabDropdownItems}</DropdownList>
|
|
1549
|
+
</Dropdown>
|
|
1550
|
+
</ToolbarItem>
|
|
1551
|
+
<ToolbarItem visibility={{ md: 'hidden' }}>
|
|
1552
|
+
<Dropdown
|
|
1553
|
+
isOpen={isFullKebabDropdownOpen}
|
|
1554
|
+
onSelect={this.onFullKebabSelect}
|
|
1555
|
+
onOpenChange={(isOpen) => this.setState({ isFullKebabDropdownOpen: isOpen })}
|
|
1556
|
+
popperProps={{ position: 'right' }}
|
|
1557
|
+
toggle={(toggleRef) => (
|
|
1558
|
+
<MenuToggle
|
|
1559
|
+
ref={toggleRef}
|
|
1560
|
+
isExpanded={isFullKebabDropdownOpen}
|
|
1561
|
+
onClick={this.onFullKebabToggle}
|
|
1562
|
+
variant="plain"
|
|
1563
|
+
aria-label="Toolbar menu"
|
|
1564
|
+
>
|
|
1565
|
+
<EllipsisVIcon aria-hidden="true" />
|
|
1566
|
+
</MenuToggle>
|
|
1567
|
+
)}
|
|
1568
|
+
>
|
|
1569
|
+
<DropdownGroup key="group 2" aria-label="User actions">
|
|
1570
|
+
<DropdownList>{userDropdownItems}</DropdownList>
|
|
1571
|
+
</DropdownGroup>
|
|
1572
|
+
<Divider />
|
|
1573
|
+
<DropdownList>{kebabDropdownItems}</DropdownList>
|
|
1574
|
+
</Dropdown>
|
|
1575
|
+
</ToolbarItem>
|
|
1576
|
+
</ToolbarGroup>
|
|
1577
|
+
<ToolbarItem visibility={{ default: 'hidden', md: 'visible' }}>
|
|
1443
1578
|
<Dropdown
|
|
1444
1579
|
isOpen={isDropdownOpen}
|
|
1445
1580
|
onSelect={this.onDropdownSelect}
|
|
@@ -1453,26 +1588,39 @@ class PageLayoutManualNav extends React.Component {
|
|
|
1453
1588
|
icon={<Avatar src={imgAvatar} alt="" />}
|
|
1454
1589
|
isFullHeight
|
|
1455
1590
|
>
|
|
1456
|
-
|
|
1591
|
+
Ned Username
|
|
1457
1592
|
</MenuToggle>
|
|
1458
1593
|
)}
|
|
1459
1594
|
>
|
|
1460
1595
|
<DropdownList>{userDropdownItems}</DropdownList>
|
|
1461
1596
|
</Dropdown>
|
|
1462
|
-
</
|
|
1463
|
-
</
|
|
1464
|
-
</
|
|
1597
|
+
</ToolbarItem>
|
|
1598
|
+
</ToolbarContent>
|
|
1599
|
+
</Toolbar>
|
|
1465
1600
|
);
|
|
1466
|
-
|
|
1467
1601
|
const Header = (
|
|
1468
|
-
<
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1602
|
+
<Masthead>
|
|
1603
|
+
<MastheadToggle>
|
|
1604
|
+
<PageToggleButton variant="plain" aria-label="Global navigation">
|
|
1605
|
+
<BarsIcon />
|
|
1606
|
+
</PageToggleButton>
|
|
1607
|
+
</MastheadToggle>
|
|
1608
|
+
<MastheadMain>
|
|
1609
|
+
<MastheadBrand>
|
|
1610
|
+
<Brand
|
|
1611
|
+
widths={{ default: '180px', md: '180px', '2xl': '220px' }}
|
|
1612
|
+
src={imgColorBrand}
|
|
1613
|
+
alt="Fallback patternFly default logo"
|
|
1614
|
+
>
|
|
1615
|
+
<source media="(min-width: 768px)" srcSet={imgColorBrand} />
|
|
1616
|
+
<source srcSet={imgColorBrand} />
|
|
1617
|
+
</Brand>
|
|
1618
|
+
</MastheadBrand>
|
|
1619
|
+
</MastheadMain>
|
|
1620
|
+
<MastheadContent>{headerToolbar}</MastheadContent>
|
|
1621
|
+
</Masthead>
|
|
1475
1622
|
);
|
|
1623
|
+
|
|
1476
1624
|
const Sidebar = (
|
|
1477
1625
|
<PageSidebar isSidebarOpen={isMobileView ? isNavOpenMobile : isNavOpenDesktop}>
|
|
1478
1626
|
<PageSidebarBody>{PageNav}</PageSidebarBody>
|
|
@@ -1535,7 +1683,6 @@ import {
|
|
|
1535
1683
|
MenuList,
|
|
1536
1684
|
MenuItem
|
|
1537
1685
|
} from '@patternfly/react-core';
|
|
1538
|
-
import { PageHeader, PageHeaderTools } from '@patternfly/react-core';
|
|
1539
1686
|
import DashboardHeader from '@patternfly/react-core/src/demos/examples/DashboardHeader';
|
|
1540
1687
|
|
|
1541
1688
|
class VerticalPage extends React.Component {
|