import React from 'react'; import { Page, PageSidebar, PageSidebarBody, Nav, MenuContent, MenuItem, MenuList, DrilldownMenu, Menu, PageSection } from '@breakaway/preact-core'; import DashboardHeader from '@breakaway/preact-core/src/demos/examples/DashboardHeader'; interface MenuHeights { [menuId: string]: number; } function getNavLayer(menuId: string): number { switch (menuId) { case 'rootMenu': return 1; case 'subMenu-1': return 2; case 'subMenu-2': return 3; } } const subMenuTwo: JSX.Element = ( SubMenu 1 - Item 1 SubMenu 2 - Item 1 SubMenu 2 - Item 2 SubMenu 2 - Item 3 ); const subMenuOne: JSX.Element = ( Item 1 SubMenu 1 - Item 1 SubMenu 1 - Item 2 SubMenu 1 - Item 3 ); export const NavDrilldown: React.FunctionComponent = () => { const [menuDrilledIn, setMenuDrilledIn] = React.useState([]); const [drilldownPath, setDrilldownPath] = React.useState([]); const [menuHeights, setMenuHeights] = React.useState({}); const [activeMenuId, setActiveMenuId] = React.useState('rootMenu'); const navLayer = getNavLayer(activeMenuId); const onDrillIn = ( _event: React.KeyboardEvent | React.MouseEvent, fromItemId: string, toItemId: string, itemId: string ) => { setMenuDrilledIn((prevMenuDrilledIn) => [...prevMenuDrilledIn, fromItemId]); setDrilldownPath((prevDrilldownPath) => [...prevDrilldownPath, itemId]); setActiveMenuId(toItemId); }; const onDrillOut = (_event: React.KeyboardEvent | React.MouseEvent, toItemId: string, _itemId: string) => { setMenuDrilledIn((prevMenuDrilledIn) => prevMenuDrilledIn.slice(0, prevMenuDrilledIn.length - 1)); setDrilldownPath((prevDrilldownPath) => prevDrilldownPath.slice(0, prevDrilldownPath.length - 1)); setActiveMenuId(toItemId); }; const onGetMenuHeight = (menuId: string, height: number) => { if ((menuHeights[menuId] !== height && menuId !== 'rootMenu') || (!menuHeights[menuId] && menuId === 'rootMenu')) { setMenuHeights((prevMenuHeights) => ({ ...prevMenuHeights, [menuId]: height })); } }; const sidebar = ( ); return ( } sidebar={sidebar}> Nav Layer: {navLayer} ); };