import React, { ReactNode } from 'react'; import { observer } from 'mobx-react-lite'; import { useParams } from 'react-router-dom'; import Recommendations from 'ts/components/Recommendations/components/ModalDescription'; import fullScreen from 'ts/store/FullScreen'; import isMobile from 'ts/helpers/isMobile'; import SideBar from './components/sidebar'; import Header from './components/header'; import HeaderWithTab from './components/header/WithTab'; import Footer from './components/footer'; import Print from './components/Print'; import style from './styles/index.module.scss'; interface IPageWrapper { children: ReactNode; } function MobileView({ children, }: IPageWrapper) { return ( <> <div className={style.page_wrapper}> <div className={style.page_wrapper_main_mobile}> {children} </div> <HeaderWithTab/> <Print/> <Recommendations/> <Footer/> </div> <div className={style.page_wrapper_header}/> </> ); } const DesktopView = observer(({ children }: IPageWrapper): React.ReactElement => { const { type, page } = useParams<any>(); const padding = type === 'team' && page === 'building' ? { padding: 0 } : {}; if (fullScreen.isOpen) { return ( <> <div className={style.page_wrapper_main_fullscreen}> {children} </div> <Recommendations/> </> ); } return ( <div className={style.page_wrapper}> <SideBar/> <Header/> <div className={style.page_wrapper_main} style={padding} > {children} </div> <Print/> <Recommendations/> </div> ); }); function PageWrapper({ children }: IPageWrapper) { return isMobile ? (<MobileView>{children}</MobileView>) : (<DesktopView>{children}</DesktopView>); } PageWrapper.defaultProps = { selectedMenuItem: '', }; export default PageWrapper;