@dartech/arsenal-ui 1.4.28 → 1.4.29

Sign up to get free protection for your applications and to get access to all the features.
package/index.js CHANGED
@@ -6810,10 +6810,14 @@ const SidebarContextProvider = ({
6810
6810
  }
6811
6811
  }));
6812
6812
  }, [collapsed]);
6813
+ const toggleRootElementLink = useCallback((name, isCollapsed) => {
6814
+ localStorage.setItem(`${name.toLowerCase()}_collapsed`, `${!isCollapsed}`);
6815
+ }, []);
6813
6816
  return jsx(SidebarContext.Provider, Object.assign({
6814
6817
  value: {
6815
6818
  collapsed,
6816
- toggleCollapse
6819
+ toggleCollapse,
6820
+ toggleRootElementLink
6817
6821
  }
6818
6822
  }, {
6819
6823
  children: children
@@ -7327,12 +7331,16 @@ const ListItemIcon = styled(MuiListItemIcon)(({
7327
7331
  const ListSubheader = styled(MuiListSubheader)(({
7328
7332
  theme
7329
7333
  }) => ({
7334
+ textTransform: 'uppercase',
7335
+ borderRadius: theme.spacing(2.5),
7330
7336
  backgroundColor: theme.palette.secondary.main,
7331
7337
  color: '#fff',
7332
7338
  paddingLeft: 0,
7333
- textTransform: 'uppercase',
7339
+ paddingRight: 0,
7334
7340
  position: 'relative',
7335
- // paddingTop: theme.spacing(3),
7341
+ '&:hover': {
7342
+ backgroundColor: 'rgba(255, 255, 255, 0.08)'
7343
+ },
7336
7344
  '&.collapsed': {
7337
7345
  fontSize: 24,
7338
7346
  textAlign: 'center',
@@ -7361,7 +7369,7 @@ const ChildrenList = styled(MuiList)(props => ({
7361
7369
  margin: 0,
7362
7370
  padding: 0,
7363
7371
  '& .MuiListItemText-root:not(.main)': {
7364
- paddingLeft: props.theme.spacing(7)
7372
+ paddingLeft: props.theme.spacing(8.5)
7365
7373
  }
7366
7374
  }));
7367
7375
  const CollapseButton = styled(MuiButtonBase)(props => ({
@@ -7519,6 +7527,50 @@ var SidebarLinkItem$1 = SidebarLinkItem;
7519
7527
  var img$1 = "data:image/svg+xml,%3csvg width='16' height='16' viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cg opacity='0.6'%3e%3cpath d='M10.3533 2.81334C10.447 2.90709 10.4996 3.03417 10.4996 3.16667C10.4996 3.29917 10.447 3.42626 10.3533 3.52001L5.87334 8.00001L10.3533 12.48C10.4025 12.5258 10.4419 12.581 10.4692 12.6423C10.4965 12.7036 10.5112 12.7699 10.5124 12.837C10.5136 12.9041 10.5012 12.9708 10.4761 13.0331C10.4509 13.0953 10.4135 13.1519 10.366 13.1994C10.3186 13.2468 10.262 13.2843 10.1997 13.3094C10.1375 13.3346 10.0708 13.3469 10.0037 13.3457C9.93652 13.3446 9.87032 13.3299 9.80898 13.3025C9.74765 13.2752 9.69245 13.2358 9.64667 13.1867L4.81334 8.35334C4.71971 8.25959 4.66711 8.13251 4.66711 8.00001C4.66711 7.86751 4.71971 7.74042 4.81334 7.64667L9.64667 2.81334C9.74042 2.71971 9.86751 2.66711 10 2.66711C10.1325 2.66711 10.2596 2.71971 10.3533 2.81334Z' fill='white'/%3e%3c/g%3e%3c/svg%3e";
7520
7528
  var ArrowIcon$1 = img$1;
7521
7529
 
7530
+ const SidebarRootItem = ({
7531
+ route,
7532
+ isActive,
7533
+ isListOpen,
7534
+ handleClick,
7535
+ isSubmenu
7536
+ }) => {
7537
+ return jsx(ListSubheader, {
7538
+ children: jsx(ListItem, Object.assign({
7539
+ disablePadding: true,
7540
+ onClick: handleClick
7541
+ }, {
7542
+ children: jsxs(ListItemButton, Object.assign({
7543
+ className: classnames({
7544
+ active: isActive,
7545
+ main: route.main
7546
+ }),
7547
+ sx: {
7548
+ justifyContent: 'space-between'
7549
+ }
7550
+ }, {
7551
+ children: [jsx(ListItemText, {
7552
+ primary: route.name,
7553
+ className: classnames({
7554
+ main: route.main
7555
+ }),
7556
+ sx: !isSubmenu ? {
7557
+ display: 'none'
7558
+ } : {}
7559
+ }), route.name, jsx(Box, {
7560
+ component: "img",
7561
+ src: ArrowIcon$1,
7562
+ mr: 3,
7563
+ sx: {
7564
+ transition: 'transform .3s',
7565
+ transform: `rotate(${isListOpen ? 0 : '-90deg'})`
7566
+ }
7567
+ })]
7568
+ }))
7569
+ }))
7570
+ });
7571
+ };
7572
+ var SidebarRootItem$1 = SidebarRootItem;
7573
+
7522
7574
  function SidebarNestedItem({
7523
7575
  route,
7524
7576
  isActive,
@@ -7560,12 +7612,15 @@ function SidebarNestedItem({
7560
7612
  mr: 3,
7561
7613
  sx: {
7562
7614
  transition: 'transform .3s',
7563
- transform: `rotate(${isListOpen ? '-90deg' : 0})`,
7564
- opacity: collapsed ? 0 : 1
7615
+ transform: `rotate(${isListOpen ? '-90deg' : 0})`
7565
7616
  }
7566
7617
  })]
7567
7618
  }))
7568
- })) : jsx(ListSubheader, {
7619
+ })) : (route === null || route === void 0 ? void 0 : route.rootLink) ? jsx(SidebarRootItem$1, {
7620
+ route: route,
7621
+ handleClick: handleClick,
7622
+ isListOpen: isListOpen
7623
+ }) : jsx(ListSubheader, {
7569
7624
  children: route.name
7570
7625
  });
7571
7626
  }
@@ -7574,20 +7629,46 @@ const SidebarLink = ({
7574
7629
  route,
7575
7630
  isSubmenu
7576
7631
  }) => {
7577
- var _a, _b;
7632
+ var _a, _b, _c;
7578
7633
  const location = useLocation();
7579
7634
  const {
7580
- collapsed
7635
+ collapsed,
7636
+ toggleRootElementLink
7581
7637
  } = useSidebarContext();
7582
7638
  const [open, setOpen] = useState(false);
7639
+ const [rootLinkCollapsed, setRootLinkCollapsed] = useState(localStorage.getItem(`${route.name.toLowerCase()}_collapsed`) === 'true');
7583
7640
  const isActive = useMemo(() => !!(route.link || route.rootLink) && location.pathname.startsWith(route.link || route.rootLink), [location.pathname, route]);
7584
7641
  const handleClick = () => {
7585
7642
  setOpen(!open);
7586
7643
  };
7644
+ const handleRootClick = useCallback(() => {
7645
+ if (route && route.rootLink) {
7646
+ toggleRootElementLink(route.name, rootLinkCollapsed);
7647
+ setRootLinkCollapsed(!rootLinkCollapsed);
7648
+ }
7649
+ }, [rootLinkCollapsed, route, toggleRootElementLink]);
7587
7650
  useEffect(() => {
7588
7651
  setOpen(isActive);
7589
7652
  }, [isActive]);
7590
- return ((_a = route.children) === null || _a === void 0 ? void 0 : _a.length) && (!collapsed || collapsed && isSubmenu) ? jsxs(Fragment, {
7653
+ return (route === null || route === void 0 ? void 0 : route.rootLink) && ((_a = route.children) === null || _a === void 0 ? void 0 : _a.length) && (!collapsed || collapsed && isSubmenu) ? jsxs(Fragment, {
7654
+ children: [jsx(SidebarNestedItem, {
7655
+ route: route,
7656
+ isActive: isActive,
7657
+ handleClick: handleRootClick,
7658
+ isListOpen: rootLinkCollapsed,
7659
+ isSubmenu: isSubmenu
7660
+ }), jsx(Collapse, Object.assign({
7661
+ in: !rootLinkCollapsed,
7662
+ timeout: "auto"
7663
+ }, {
7664
+ children: jsx(ChildrenList, {
7665
+ children: route.children.map(childRoute => jsx(SidebarLink, {
7666
+ route: childRoute,
7667
+ isSubmenu: isSubmenu
7668
+ }, childRoute.name))
7669
+ })
7670
+ }))]
7671
+ }) : ((_b = route.children) === null || _b === void 0 ? void 0 : _b.length) && (!collapsed || collapsed && isSubmenu) ? jsxs(Fragment, {
7591
7672
  children: [jsx(SidebarNestedItem, {
7592
7673
  route: route,
7593
7674
  isActive: isActive,
@@ -7599,7 +7680,7 @@ const SidebarLink = ({
7599
7680
  timeout: "auto"
7600
7681
  }, {
7601
7682
  children: jsx(ChildrenList, {
7602
- children: (_b = route.children) === null || _b === void 0 ? void 0 : _b.map((childRoute, index) => jsx(SidebarLink, {
7683
+ children: (_c = route.children) === null || _c === void 0 ? void 0 : _c.map((childRoute, index) => jsx(SidebarLink, {
7603
7684
  route: childRoute,
7604
7685
  isSubmenu: isSubmenu
7605
7686
  }, childRoute.name))
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dartech/arsenal-ui",
3
- "version": "1.4.28",
3
+ "version": "1.4.29",
4
4
  "author": "DAR",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { Control } from 'react-hook-form';
3
2
  type Props = {
4
3
  control: Control<any>;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  type Props = {
3
2
  name: string;
4
3
  label?: string;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  type Props = {
3
2
  name: string;
4
3
  format: string;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  type Props = {
3
2
  name: string;
4
3
  label?: string;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  type Props = {
3
2
  name: string;
4
3
  label?: string;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { PropertyUnion } from '../../../interfaces';
3
2
  type PropertyItemProps = {
4
3
  property: PropertyUnion;
@@ -2,6 +2,7 @@
2
2
  type SidebarContextProps = {
3
3
  collapsed: boolean;
4
4
  toggleCollapse: () => void;
5
+ toggleRootElementLink?: (name: string, isCollapsed: boolean) => void;
5
6
  };
6
7
  export declare const SidebarContext: import("react").Context<SidebarContextProps>;
7
8
  export declare const useSidebarContext: () => SidebarContextProps;
@@ -7,5 +7,5 @@ type Props = {
7
7
  isSubmenu?: boolean;
8
8
  handleClick: () => void;
9
9
  };
10
- declare function SidebarNestedItem({ route, isActive, isListOpen, handleClick, isSubmenu }: Props): JSX.Element;
10
+ declare function SidebarNestedItem({ route, isActive, isListOpen, handleClick, isSubmenu, }: Props): JSX.Element;
11
11
  export default SidebarNestedItem;
@@ -0,0 +1,11 @@
1
+ /// <reference types="react" />
2
+ import type { Route } from '../../../interfaces';
3
+ type Props = {
4
+ route: Route;
5
+ isActive?: boolean;
6
+ isListOpen?: boolean;
7
+ isSubmenu?: boolean;
8
+ handleClick?: () => void;
9
+ };
10
+ declare const SidebarRootItem: ({ route, isActive, isListOpen, handleClick, isSubmenu, }: Props) => JSX.Element;
11
+ export default SidebarRootItem;