import { memo, useCallback, useMemo, useState } from 'react'; import type { MouseEventHandler } from 'react'; import clsx from 'clsx'; import Grid from '@mui/material/Grid'; import { Header } from '../header'; import { Sidebar } from '../sidebar'; import type { DrawerStates } from '../sidebar'; import { LayoutContext } from './layout.context'; import createClasses from './styles'; import type { LayoutProps } from './types'; import { useLayoutBehavior } from './layout.hooks'; import { useRightSideBar } from '../right-sidebar'; export const drawerWidthOpen = '240px'; export const drawerWidthClose = '64px'; const Layout = (props: LayoutProps) => { const { children, disableSizeChanges = false, initLeftState = (localStorage.getItem('navigationMenuState') || 'closed') as DrawerStates, headerProps: { ContentComponent, breadcrumbsProps, classes: headerClasses, userControlsProps }, sidebarProps, classes, hideHeader } = props; const { leftDrawerOpenState, setLeftDrawerOpenState, handleDrawerChange } = useLayoutBehavior( disableSizeChanges, initLeftState ); const { drawerLocked } = useRightSideBar(); const headerProps = useMemo(() => { if (ContentComponent) { return { ContentComponent }; } if (breadcrumbsProps && userControlsProps) { return { breadcrumbsProps, classes: headerClasses, userControlsProps }; } return { ContentComponent: () =>
}; }, [ContentComponent, breadcrumbsProps, headerClasses, userControlsProps]); const handleDrawerStateChange = useCallback( (newState: DrawerStates): MouseEventHandler