import logoLight from "@assets/images/logo-sidebar-light.svg"; import { Typography } from "@material-ui/core"; import Drawer from "@material-ui/core/Drawer"; import ArrowLeftIcon from "@material-ui/icons/ArrowLeft"; import MenuIcon from "@material-ui/icons/Menu"; import classNames from "classnames"; import React from "react"; import SVG from "react-inlinesvg"; import { useIntl } from "react-intl"; import { IMenuItem } from "../AppLayout/menuStructure"; import { getConfigureMenuItem, SideBarProps } from "../SideBar/SideBar"; import SquareButton from "../SquareButton"; import MenuItemBtn from "./MenuItemBtn"; import useStyles from "./styles"; export type SideBarDrawerProps = SideBarProps; const SideBarDrawer: React.FC = ({ menuItems, onMenuItemClick, renderConfigure, user }) => { const [isOpened, setOpened] = React.useState(false); const classes = useStyles({}); const intl = useIntl(); const [activeMenu, setActiveMenu] = React.useState(null); const [showSubmenu, setShowSubmenu] = React.useState(false); const container = React.useRef(null); const configureMenuItem = getConfigureMenuItem(intl); const handleMenuItemClick = (url: string) => { setOpened(false); setShowSubmenu(false); onMenuItemClick(url); }; const handleMenuItemWithChildrenClick = (menuItem: IMenuItem) => { setActiveMenu(menuItem); setShowSubmenu(true); container.current.scrollTo({ top: 0 }); }; return ( <> setOpened(true)}> setOpened(false)} >
{menuItems.map(menuItem => { if ( menuItem.permission && !user.userPermissions .map(perm => perm.code) .includes(menuItem.permission) ) { return null; } return ( handleMenuItemWithChildrenClick(menuItem) : handleMenuItemClick } key={menuItem.ariaLabel} /> ); })} {renderConfigure && ( )}
{activeMenu && (
{activeMenu.label}
setShowSubmenu(false)}>
{activeMenu.children.map(subMenuItem => ( ))}
)}
); }; SideBarDrawer.displayName = "SideBarDrawer"; export default SideBarDrawer;