25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

84 lines
2.6 KiB

  1. import { useEffect, useState } from 'react';
  2. import { Outlet } from 'react-router-dom';
  3. import { useDispatch, useSelector } from 'react-redux';
  4. import { useLocation } from 'react-router-dom';
  5. // material-ui
  6. import { useTheme } from '@mui/material/styles';
  7. import { Box, useMediaQuery } from '@mui/material';
  8. import Loadable from 'components/Loadable';
  9. import { lazy } from 'react';
  10. // import { Toolbar, useMediaQuery } from '@mui/material';
  11. // project import
  12. // import Drawer from './Drawer';
  13. // import Header from './Header';
  14. const Header = Loadable(lazy(() => import('./Header')));
  15. const Footer = Loadable(lazy(() => import('components/cards/AuthFooter')));
  16. // import Footer from 'components/cards/AuthFooter';
  17. // import navigation from 'menu-items';
  18. // import Breadcrumbs from 'components/@extended/Breadcrumbs';
  19. // types
  20. import { openDrawer } from 'store/reducers/menu';
  21. // import "assets/style/styles.css";
  22. // ==============================|| MAIN LAYOUT ||============================== //
  23. const MainLayout = () => {
  24. const theme = useTheme();
  25. const matchDownLG = useMediaQuery(theme.breakpoints.down('lg'));
  26. const dispatch = useDispatch();
  27. const location = useLocation();
  28. const hideNavbarRoutes = ['/databaseHealthCheck']
  29. const { drawerOpen } = useSelector((state) => state.menu);
  30. // drawer toggler
  31. const [open, setOpen] = useState(drawerOpen);
  32. // const handleDrawerToggle = () => {
  33. // setOpen(!open);
  34. // dispatch(openDrawer({ drawerOpen: !open }));
  35. // };
  36. // set media wise responsive drawer
  37. useEffect(() => {
  38. setOpen(!matchDownLG);
  39. dispatch(openDrawer({ drawerOpen: !matchDownLG }));
  40. // eslint-disable-next-line react-hooks/exhaustive-deps
  41. }, [matchDownLG]);
  42. useEffect(() => {
  43. if (open !== drawerOpen) setOpen(drawerOpen);
  44. // eslint-disable-next-line react-hooks/exhaustive-deps
  45. }, [drawerOpen]);
  46. return (
  47. <>
  48. {!hideNavbarRoutes.includes(location.pathname) && (
  49. <Box sx={{backgroundColor:'#ffffff', display: 'flex', width: '100%', flexDirection: "column", paddingTop: { xs: "5px", sm: "25px", md: "43px" }}}>
  50. <Header/>
  51. {/* <Drawer open={open} handleDrawerToggle={handleDrawerToggle} /> */}
  52. <Box style={{ width: '100%', flexGrow: 1 } } sx={{ paddingTop: "38px" }}>
  53. {/* <Toolbar /> */}
  54. {/* <Breadcrumbs navigation={navigation} title /> */}
  55. <Outlet />
  56. </Box>
  57. <Box sx={{borderTop: "3px solid #0C489E"}}>
  58. <Footer/>
  59. </Box>
  60. </Box>
  61. )}
  62. {hideNavbarRoutes.includes(location.pathname) && (
  63. <Outlet />
  64. )}
  65. </>
  66. );
  67. };
  68. export default MainLayout;