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 = (
);
const subMenuOne: JSX.Element = (
);
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}
);
};