import React from 'react'; import { Avatar, Brand, Breadcrumb, BreadcrumbItem, Button, ButtonVariant, Card, CardBody, Divider, Dropdown, DropdownGroup, DropdownItem, DropdownList, Gallery, GalleryItem, Masthead, MastheadMain, MastheadLogo, MastheadContent, MastheadBrand, MenuToggle, MenuToggleElement, Nav, NavItem, NavList, Page, PageSection, SkipToContent, Content, Toolbar, ToolbarContent, ToolbarGroup, ToolbarItem } from '@patternfly/react-core'; import EllipsisVIcon from '@patternfly/react-icons/dist/esm/icons/ellipsis-v-icon'; import BellIcon from '@patternfly/react-icons/dist/esm/icons/bell-icon'; import CogIcon from '@patternfly/react-icons/dist/esm/icons/cog-icon'; import HelpIcon from '@patternfly/react-icons/dist/esm/icons/help-icon'; import QuestionCircleIcon from '@patternfly/react-icons/dist/esm/icons/question-circle-icon'; import imgAvatar from '@patternfly/react-core/src/components/assets/avatarImg.svg'; import pfLogo from '@patternfly/react-core/src/demos/assets/pf-logo.svg'; interface NavOnSelectProps { groupId: number | string; itemId: number | string; to: string; } export const MastheadWithHorizontalNav: React.FunctionComponent = () => { const [isDropdownOpen, setIsDropdownOpen] = React.useState(false); const [isKebabDropdownOpen, setIsKebabDropdownOpen] = React.useState(false); const [isFullKebabDropdownOpen, setIsFullKebabDropdownOpen] = React.useState(false); const [activeItem, setActiveItem] = React.useState(0); const [isOpen, setIsOpen] = React.useState(false); const menuRef = React.useRef(null); const toggleRef = React.useRef(null); const onNavSelect = (_event: React.FormEvent, selectedItem: NavOnSelectProps) => { typeof selectedItem.itemId === 'number' && setActiveItem(selectedItem.itemId); }; const onDropdownToggle = () => { setIsDropdownOpen(!isDropdownOpen); }; const onDropdownSelect = () => { setIsDropdownOpen(!isDropdownOpen); }; const onKebabDropdownToggle = () => { setIsKebabDropdownOpen(!isKebabDropdownOpen); }; const onKebabDropdownSelect = () => { setIsKebabDropdownOpen(!isKebabDropdownOpen); }; const onFullKebabDropdownToggle = () => { setIsFullKebabDropdownOpen(!isFullKebabDropdownOpen); }; const onFullKebabDropdownSelect = () => { setIsFullKebabDropdownOpen(!isFullKebabDropdownOpen); }; const handleMenuKeys = (event: KeyboardEvent) => { if (!isOpen) { return; } if (menuRef.current?.contains(event.target as Node) || toggleRef.current?.contains(event.target as Node)) { if (event.key === 'Escape') { setIsOpen(!isOpen); toggleRef.current?.focus(); } } }; const handleClickOutside = (event: MouseEvent) => { if (isOpen && !menuRef.current?.contains(event.target as Node)) { setIsOpen(false); } }; React.useEffect(() => { window.addEventListener('keydown', handleMenuKeys); window.addEventListener('click', handleClickOutside); return () => { window.removeEventListener('keydown', handleMenuKeys); window.removeEventListener('click', handleClickOutside); }; }, [isOpen, menuRef]); const dashboardBreadcrumb = ( Section home Section title Section title Section landing ); const kebabDropdownItems = ( <> Settings Help ); const userDropdownItems = [ <> My profile User management Logout ]; const PageHorizontalNav = () => ( ); const headerToolbar = (