gov-layout 1.2.0 → 1.2.2

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.
package/dist/index.mjs CHANGED
@@ -415,7 +415,8 @@ function MenuItemComponent({
415
415
  onItemClick,
416
416
  currentPath,
417
417
  depth = 0,
418
- collapsed = false
418
+ collapsed = false,
419
+ onExpandRequest
419
420
  }) {
420
421
  const hasChildren = item.children && item.children.length > 0;
421
422
  const isActive = item.path ? currentPath === item.path : false;
@@ -426,8 +427,12 @@ function MenuItemComponent({
426
427
  const expanded = userToggled ? isOpen : isOpen || isChildActive;
427
428
  const handleClick = () => {
428
429
  if (hasChildren) {
429
- setUserToggled(true);
430
- setIsOpen(!expanded);
430
+ if (collapsed) {
431
+ onExpandRequest?.();
432
+ } else {
433
+ setUserToggled(true);
434
+ setIsOpen(!expanded);
435
+ }
431
436
  } else if (item.path) {
432
437
  onItemClick(item.path);
433
438
  }
@@ -536,7 +541,7 @@ function MenuItemComponent({
536
541
  } }) })
537
542
  ] });
538
543
  }
539
- function SidebarMenu({ menuItems, onItemClick, currentPath, collapsed }) {
544
+ function SidebarMenu({ menuItems, onItemClick, currentPath, collapsed, onExpandRequest }) {
540
545
  return /* @__PURE__ */ jsx("nav", { style: {
541
546
  padding: collapsed ? "8px 8px" : "8px 12px",
542
547
  overflowY: "auto"
@@ -553,7 +558,8 @@ function SidebarMenu({ menuItems, onItemClick, currentPath, collapsed }) {
553
558
  item,
554
559
  onItemClick,
555
560
  currentPath,
556
- collapsed
561
+ collapsed,
562
+ onExpandRequest
557
563
  },
558
564
  item.id
559
565
  )) }) });
@@ -811,7 +817,8 @@ function StaffSidebar({
811
817
  className,
812
818
  collapsible = false,
813
819
  isOpen: controlledIsOpen,
814
- onToggle
820
+ onToggle,
821
+ onExpandRequest
815
822
  }) {
816
823
  const [internalOpen, setInternalOpen] = useState(true);
817
824
  const sidebarOpen = controlledIsOpen !== void 0 ? controlledIsOpen : internalOpen;
@@ -826,6 +833,17 @@ function StaffSidebar({
826
833
  setInternalOpen(!internalOpen);
827
834
  }
828
835
  };
836
+ const handleExpandRequest = () => {
837
+ if (onExpandRequest) {
838
+ onExpandRequest();
839
+ } else {
840
+ if (onToggle) {
841
+ onToggle();
842
+ } else {
843
+ setInternalOpen(true);
844
+ }
845
+ }
846
+ };
829
847
  return /* @__PURE__ */ jsxs(Fragment, { children: [
830
848
  /* @__PURE__ */ jsxs(
831
849
  "aside",
@@ -855,34 +873,44 @@ function StaffSidebar({
855
873
  collapsed
856
874
  }
857
875
  ),
858
- /* @__PURE__ */ jsx(
876
+ /* @__PURE__ */ jsx("div", { style: { flex: 1, overflowY: "auto", minHeight: 0 }, children: /* @__PURE__ */ jsx(
859
877
  SidebarMenu,
860
878
  {
861
879
  menuItems,
862
880
  onItemClick: onNavigate,
863
881
  currentPath,
864
- collapsed
865
- }
866
- ),
867
- resolvedBottomMenu && resolvedBottomMenu.length > 0 && /* @__PURE__ */ jsx(
868
- SidebarMenu,
869
- {
870
- menuItems: resolvedBottomMenu,
871
- onItemClick: onNavigate,
872
- currentPath,
873
- collapsed
874
- }
875
- ),
876
- /* @__PURE__ */ jsx("div", { style: { flex: 1 } }),
877
- /* @__PURE__ */ jsx(
878
- SidebarUserProfile,
879
- {
880
- user,
881
- roleLabel,
882
- onLogout,
883
- collapsed
882
+ collapsed,
883
+ onExpandRequest: handleExpandRequest
884
884
  }
885
- )
885
+ ) }),
886
+ /* @__PURE__ */ jsxs("div", { style: { flexShrink: 0 }, children: [
887
+ resolvedBottomMenu && resolvedBottomMenu.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
888
+ /* @__PURE__ */ jsx("hr", { style: {
889
+ border: "none",
890
+ borderTop: "1px solid var(--color-border-colors-neutral, #c8cedd)",
891
+ margin: "4px 12px"
892
+ } }),
893
+ /* @__PURE__ */ jsx(
894
+ SidebarMenu,
895
+ {
896
+ menuItems: resolvedBottomMenu,
897
+ onItemClick: onNavigate,
898
+ currentPath,
899
+ collapsed,
900
+ onExpandRequest: handleExpandRequest
901
+ }
902
+ )
903
+ ] }),
904
+ /* @__PURE__ */ jsx(
905
+ SidebarUserProfile,
906
+ {
907
+ user,
908
+ roleLabel,
909
+ onLogout,
910
+ collapsed
911
+ }
912
+ )
913
+ ] })
886
914
  ]
887
915
  }
888
916
  ),