import React from 'react';
import {
Page,
PageSidebar,
Nav,
MenuContent,
MenuItem,
MenuList,
DrilldownMenu,
Menu,
PageSection
} from '@patternfly/react-core';
import DashboardHeader from '@patternfly/react-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 = (fromItemId: string, toItemId: string, itemId: string) => {
setMenuDrilledIn(prevMenuDrilledIn => [...prevMenuDrilledIn, fromItemId]);
setDrilldownPath(prevDrilldownPath => [...prevDrilldownPath, itemId]);
setActiveMenuId(toItemId);
};
const onDrillOut = (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] && menuId !== 'rootMenu') {
setMenuHeights(prevMenuHeights => ({ ...prevMenuHeights, [menuId]: height }));
}
};
const sidebar = (
}
/>
);
return (
} sidebar={sidebar}>
Nav Layer:
{navLayer}
);
};