import React, { useEffect } from 'react'; import { AppNavMenu, IAppNavMenu } from './AppNavMenu'; import { AppNavMenuItem, IAppNavMenuItem } from './AppNavMenuItem'; import { AppNavSubMenu } from './AppNavSubMenu'; import { AppNavSubMenuItem, IAppNavSubMenuItem } from './AppNavSubMenuItem'; import { EVENT_TOGGLE_APP_NAV } from '../../constants'; import { AppNavProvider, useAppNavContext } from './context'; export interface IAppNav { className?: string; style?: any; [x: string]: any; } export interface IAppNavSubComponents { Menu: React.FC; MenuItem: React.FC; SubMenu: React.FC; SubMenuItem: React.FC; } const AppNavComponent: React.FC = (props) => { const { className = '', ...otherProps } = props; const { toggled, setToggled } = useAppNavContext(); const handleOverlayClick = () => { setToggled(false); }; useEffect(() => { document.body.classList.add('b-has-app-nav'); document.addEventListener(EVENT_TOGGLE_APP_NAV, function (e) { setToggled(!toggled); }); }, []); return ( {toggled &&
}
); }; export const AppNav: React.FC & IAppNavSubComponents = (props) => { return ( {props.children} ); }; AppNav.MenuItem = AppNavMenuItem; AppNav.Menu = AppNavMenu; AppNav.SubMenu = AppNavSubMenu; AppNav.SubMenuItem = AppNavSubMenuItem;