@pdg/react-admin-layout 1.0.8 → 1.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -18,5 +18,6 @@ export interface DefaultLayoutProps extends CommonSxProps {
18
18
  logo: ReactNode;
19
19
  menu?: MenuItem[];
20
20
  appBarControl?: ReactNode;
21
+ menuHideScreen?: 'xs' | 'sm' | 'md' | 'lg';
21
22
  onMenuClick?(menuItem: MenuItem): void;
22
23
  }
package/dist/index.esm.js CHANGED
@@ -7502,25 +7502,21 @@ var StyledAppBar = styled(AppBar)(function (_a) {
7502
7502
  backgroundColor: 'rgba(255, 255, 255, 0.7)',
7503
7503
  color: 'text.primary',
7504
7504
  borderBottom: 'thin solid #f5f5f5',
7505
- width: { sm: "calc(100% - ".concat(SIDE_MENU_WIDTH, "px)") },
7506
- ml: { sm: "".concat(SIDE_MENU_WIDTH, "px") },
7507
7505
  });
7508
7506
  });
7509
7507
  var StyledSideMenuContainerBox = styled(Box)(function (_a) {
7510
7508
  var theme = _a.theme;
7511
- return theme.unstable_sx({ width: { sm: SIDE_MENU_WIDTH }, flexShrink: { sm: 0 } });
7509
+ return theme.unstable_sx({});
7512
7510
  });
7513
7511
  var StyledSideMenuTemporaryDrawer = styled(Drawer)(function (_a) {
7514
7512
  var theme = _a.theme;
7515
7513
  return theme.unstable_sx({
7516
- display: { xs: 'block', sm: 'none' },
7517
7514
  '& .MuiDrawer-paper': { boxSizing: 'border-box', width: SIDE_MENU_WIDTH },
7518
7515
  });
7519
7516
  });
7520
7517
  var StyledSideMenuPermanentDrawer = styled(Drawer)(function (_a) {
7521
7518
  var theme = _a.theme;
7522
7519
  return theme.unstable_sx({
7523
- display: { xs: 'none', sm: 'block' },
7524
7520
  '& .MuiDrawer-paper': { boxSizing: 'border-box', width: SIDE_MENU_WIDTH },
7525
7521
  });
7526
7522
  });
@@ -7529,21 +7525,32 @@ var StyledMainBox = styled(Box)(function (_a) {
7529
7525
  return theme.unstable_sx({
7530
7526
  flexGrow: 1,
7531
7527
  p: 2,
7532
- width: { sm: "calc(100% - ".concat(SIDE_MENU_WIDTH, "px)") },
7533
7528
  display: 'flex',
7534
7529
  flexDirection: 'column',
7535
7530
  minHeight: '100vh',
7536
7531
  });
7537
7532
  });
7538
- var StyledMainContentDiv = styled('div')(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n display: flex;\n flex: 1;\n"], ["\n display: flex;\n flex: 1;\n"])));
7539
- var templateObject_1, templateObject_2;var DefaultLayout = function (_a) {
7533
+ var StyledMainContentDiv = styled('div')(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n display: flex;\n flex-direction: column;\n flex: 1;\n"], ["\n display: flex;\n flex-direction: column;\n flex: 1;\n"])));
7534
+ var templateObject_1, templateObject_2;var _screens = ['xs', 'sm', 'md', 'lg', 'xl'];
7535
+ var _getNextScreen = function (screen) {
7536
+ if (screen === 'xs')
7537
+ return 'sm';
7538
+ else if (screen === 'sm')
7539
+ return 'md';
7540
+ else if (screen === 'md')
7541
+ return 'lg';
7542
+ else
7543
+ return 'xl';
7544
+ };
7545
+ var DefaultLayout = function (_a) {
7540
7546
  // -------------------------------------------------------------------------------------------------------------------
7541
- var children = _a.children, logo = _a.logo, menu = _a.menu, appBarControl = _a.appBarControl, onMenuClick = _a.onMenuClick;
7547
+ var children = _a.children, logo = _a.logo, menu = _a.menu, initMenuHideScreen = _a.menuHideScreen, appBarControl = _a.appBarControl, onMenuClick = _a.onMenuClick;
7542
7548
  var location = useLocation();
7543
7549
  // -------------------------------------------------------------------------------------------------------------------
7544
7550
  var _b = useState(false), isMobileOpen = _b[0], setIsMobileOpen = _b[1];
7545
7551
  var _c = useState({}), menuTitles = _c[0], setMenuTitles = _c[1];
7546
7552
  var _d = useState(), title = _d[0], setTitle = _d[1];
7553
+ var _e = useState(initMenuHideScreen || 'sm'), menuHideScreen = _e[0], setMenuHideScreen = _e[1];
7547
7554
  //--------------------------------------------------------------------------------------------------------------------
7548
7555
  useEffect(function () {
7549
7556
  var menuTitles = {};
@@ -7561,6 +7568,9 @@ var templateObject_1, templateObject_2;var DefaultLayout = function (_a) {
7561
7568
  }
7562
7569
  setMenuTitles(menuTitles);
7563
7570
  }, [menu]);
7571
+ useEffect(function () {
7572
+ setMenuHideScreen(initMenuHideScreen || 'sm');
7573
+ }, [initMenuHideScreen]);
7564
7574
  useEffect(function () {
7565
7575
  if (menuTitles) {
7566
7576
  var titleData = menuTitles[location.pathname];
@@ -7577,23 +7587,78 @@ var templateObject_1, templateObject_2;var DefaultLayout = function (_a) {
7577
7587
  setIsMobileOpen(function (isMobileOpen) { return !isMobileOpen; });
7578
7588
  }, []);
7579
7589
  //--------------------------------------------------------------------------------------------------------------------
7590
+ var appBarSx = useMemo(function () {
7591
+ var width = {};
7592
+ var ml = {};
7593
+ width[_getNextScreen(menuHideScreen)] = "calc(100% - ".concat(SIDE_MENU_WIDTH, "px)");
7594
+ ml[_getNextScreen(menuHideScreen)] = "".concat(SIDE_MENU_WIDTH, "px");
7595
+ return { width: width, ml: ml };
7596
+ }, [menuHideScreen]);
7597
+ var appBarIconButtonSx = useMemo(function () {
7598
+ var display = {};
7599
+ display[_getNextScreen(menuHideScreen)] = 'none';
7600
+ return { mr: 2, display: display };
7601
+ }, [menuHideScreen]);
7602
+ var sideMenuContainerBoxSx = useMemo(function () {
7603
+ var width = {};
7604
+ var flexShrink = {};
7605
+ width[_getNextScreen(menuHideScreen)] = SIDE_MENU_WIDTH;
7606
+ flexShrink[_getNextScreen(menuHideScreen)] = 0;
7607
+ return { width: width, flexShrink: flexShrink };
7608
+ }, [menuHideScreen]);
7609
+ var sideMenuTemporaryDrawerSx = useMemo(function () {
7610
+ var found = false;
7611
+ return {
7612
+ display: _screens.reduce(function (res, screen) {
7613
+ if (screen === menuHideScreen) {
7614
+ found = true;
7615
+ res[screen] = 'block';
7616
+ }
7617
+ else {
7618
+ res[screen] = found ? 'none' : 'block';
7619
+ }
7620
+ return res;
7621
+ }, {}),
7622
+ };
7623
+ }, [menuHideScreen]);
7624
+ var sideMenuPermanentDrawerSx = useMemo(function () {
7625
+ var found = false;
7626
+ return {
7627
+ display: _screens.reduce(function (res, screen) {
7628
+ if (screen === menuHideScreen) {
7629
+ found = true;
7630
+ res[screen] = 'none';
7631
+ }
7632
+ else {
7633
+ res[screen] = found ? 'block' : 'none';
7634
+ }
7635
+ return res;
7636
+ }, {}),
7637
+ };
7638
+ }, [menuHideScreen]);
7639
+ var mainBoxSx = useMemo(function () {
7640
+ var width = {};
7641
+ width[_getNextScreen(menuHideScreen)] = "calc(100% - ".concat(SIDE_MENU_WIDTH, "px)");
7642
+ return { width: width };
7643
+ }, [menuHideScreen]);
7644
+ // -------------------------------------------------------------------------------------------------------------------
7580
7645
  return (React.createElement(StyledContainerBox, null,
7581
- React.createElement(StyledAppBar, { position: 'fixed', elevation: 0 },
7646
+ React.createElement(StyledAppBar, { position: 'fixed', elevation: 0, sx: appBarSx },
7582
7647
  React.createElement(Toolbar, null,
7583
- React.createElement(IconButton, { color: 'inherit', "aria-label": 'open drawer', edge: 'start', onClick: toggleIsMobileOpen, sx: { mr: 2, display: { sm: 'none' } } },
7648
+ React.createElement(IconButton, { color: 'inherit', "aria-label": 'open drawer', edge: 'start', onClick: toggleIsMobileOpen, sx: appBarIconButtonSx },
7584
7649
  React.createElement(Menu, null)),
7585
7650
  React.createElement(Typography, { variant: 'h6', noWrap: true, component: 'div', sx: { flexGrow: 1 } }, title),
7586
7651
  appBarControl)),
7587
- React.createElement(StyledSideMenuContainerBox, { component: 'nav', "aria-label": 'mailbox folders' },
7588
- React.createElement(StyledSideMenuTemporaryDrawer, { variant: 'temporary', open: isMobileOpen, onClose: toggleIsMobileOpen, ModalProps: {
7652
+ React.createElement(StyledSideMenuContainerBox, { component: 'nav', "aria-label": 'mailbox folders', sx: sideMenuContainerBoxSx },
7653
+ React.createElement(StyledSideMenuTemporaryDrawer, { variant: 'temporary', open: isMobileOpen, onClose: toggleIsMobileOpen, sx: sideMenuTemporaryDrawerSx, ModalProps: {
7589
7654
  keepMounted: true, // Better open performance on mobile.
7590
7655
  } }, menu && (React.createElement(SideMenu, { logo: logo, list: menu, onClick: function (menuItem) {
7591
7656
  toggleIsMobileOpen();
7592
7657
  if (onMenuClick)
7593
7658
  onMenuClick(menuItem);
7594
7659
  } }))),
7595
- React.createElement(StyledSideMenuPermanentDrawer, { variant: 'permanent', open: true }, menu && React.createElement(SideMenu, { logo: logo, list: menu, onClick: onMenuClick }))),
7596
- React.createElement(StyledMainBox, { component: 'main' },
7660
+ React.createElement(StyledSideMenuPermanentDrawer, { variant: 'permanent', open: true, sx: sideMenuPermanentDrawerSx }, menu && React.createElement(SideMenu, { logo: logo, list: menu, onClick: onMenuClick }))),
7661
+ React.createElement(StyledMainBox, { component: 'main', sx: mainBoxSx },
7597
7662
  React.createElement(Toolbar, null),
7598
7663
  React.createElement(StyledMainContentDiv, null, children))));
7599
7664
  };export{CardLayout,DefaultLayout};//# sourceMappingURL=index.esm.js.map