import React from 'react' import PropTypes from 'prop-types' import Backdrop from './sub-components/backdrop' import Header from './sub-components/header' import Nav from './sub-components/nav' import Aside from './sub-components/aside' import Main from './sub-components/main' import HeaderNav from './sub-components/header-nav' import NavLogoItem from './sub-components/nav-logo-item' import NavItem from './sub-components/nav-item' class Layout extends React.Component { constructor(props) { super(props); let currentModule = null, isolateModules = [], mainModules = [], totalNotifications = 0, item = null; for (let i=0, l=props.availableModules.length; i { this.setState({ isBackdropOpen: false, isNavigationOpen: false, isAsideOpen: false, isNavigationHoverEnabled: !this.state.isNavigationHoverEnabled }); }; showNav = () => { this.setState({ isBackdropOpen: true, isNavigationOpen: true, isAsideOpen: false, isNavigationHoverEnabled: false }); }; handleNavHover = () => { if(!this.state.isNavigationHoverEnabled) return; this.setState({ isBackdropOpen: false, isNavigationOpen: !this.state.isNavigationOpen, isAsideOpen: false }); } toggleAside = () => { this.setState({ isBackdropOpen: true, isNavigationOpen: false, isAsideOpen: true, isNavigationHoverEnabled: false }); }; render() { return ( <>
{this.props.children}
); } } Layout.propTypes = { isBackdropOpen: PropTypes.bool, isNavigationHoverEnabled: PropTypes.bool, isNavigationOpen: PropTypes.bool, isAsideOpen: PropTypes.bool, onLogoClick: PropTypes.func, asideContent: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]), currentUser: PropTypes.object, currentUserActions: PropTypes.array, availableModules: PropTypes.array, currentModuleId: PropTypes.string } Layout.defaultProps = { isBackdropOpen: false, isNavigationHoverEnabled: true, isNavigationOpen: false, isAsideOpen: false } export default Layout