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.d.mts +5 -2
- package/dist/index.d.ts +5 -2
- package/dist/index.js +56 -28
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +56 -28
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -47,9 +47,11 @@ interface StaffSidebarProps {
|
|
|
47
47
|
isOpen?: boolean;
|
|
48
48
|
/** callback เมื่อกดเปิด/ปิด */
|
|
49
49
|
onToggle?: () => void;
|
|
50
|
+
/** callback เมื่อกดเมนูที่มี children ขณะ sidebar ย่อ — ใช้สั่งกาง sidebar */
|
|
51
|
+
onExpandRequest?: () => void;
|
|
50
52
|
}
|
|
51
53
|
|
|
52
|
-
declare function StaffSidebar({ orgLogo, orgName, orgSubtitle, menuItems, bottomMenuItems, user, roleLabel, onNavigate, onLogout, currentPath, width, className, collapsible, isOpen: controlledIsOpen, onToggle, }: StaffSidebarProps): react_jsx_runtime.JSX.Element;
|
|
54
|
+
declare function StaffSidebar({ orgLogo, orgName, orgSubtitle, menuItems, bottomMenuItems, user, roleLabel, onNavigate, onLogout, currentPath, width, className, collapsible, isOpen: controlledIsOpen, onToggle, onExpandRequest, }: StaffSidebarProps): react_jsx_runtime.JSX.Element;
|
|
53
55
|
|
|
54
56
|
interface SidebarHeaderProps {
|
|
55
57
|
orgLogo?: string;
|
|
@@ -64,8 +66,9 @@ interface SidebarMenuProps {
|
|
|
64
66
|
onItemClick: (path: string) => void;
|
|
65
67
|
currentPath?: string;
|
|
66
68
|
collapsed?: boolean;
|
|
69
|
+
onExpandRequest?: () => void;
|
|
67
70
|
}
|
|
68
|
-
declare function SidebarMenu({ menuItems, onItemClick, currentPath, collapsed }: SidebarMenuProps): react_jsx_runtime.JSX.Element;
|
|
71
|
+
declare function SidebarMenu({ menuItems, onItemClick, currentPath, collapsed, onExpandRequest }: SidebarMenuProps): react_jsx_runtime.JSX.Element;
|
|
69
72
|
|
|
70
73
|
interface SidebarUserProfileProps {
|
|
71
74
|
user: User | null;
|
package/dist/index.d.ts
CHANGED
|
@@ -47,9 +47,11 @@ interface StaffSidebarProps {
|
|
|
47
47
|
isOpen?: boolean;
|
|
48
48
|
/** callback เมื่อกดเปิด/ปิด */
|
|
49
49
|
onToggle?: () => void;
|
|
50
|
+
/** callback เมื่อกดเมนูที่มี children ขณะ sidebar ย่อ — ใช้สั่งกาง sidebar */
|
|
51
|
+
onExpandRequest?: () => void;
|
|
50
52
|
}
|
|
51
53
|
|
|
52
|
-
declare function StaffSidebar({ orgLogo, orgName, orgSubtitle, menuItems, bottomMenuItems, user, roleLabel, onNavigate, onLogout, currentPath, width, className, collapsible, isOpen: controlledIsOpen, onToggle, }: StaffSidebarProps): react_jsx_runtime.JSX.Element;
|
|
54
|
+
declare function StaffSidebar({ orgLogo, orgName, orgSubtitle, menuItems, bottomMenuItems, user, roleLabel, onNavigate, onLogout, currentPath, width, className, collapsible, isOpen: controlledIsOpen, onToggle, onExpandRequest, }: StaffSidebarProps): react_jsx_runtime.JSX.Element;
|
|
53
55
|
|
|
54
56
|
interface SidebarHeaderProps {
|
|
55
57
|
orgLogo?: string;
|
|
@@ -64,8 +66,9 @@ interface SidebarMenuProps {
|
|
|
64
66
|
onItemClick: (path: string) => void;
|
|
65
67
|
currentPath?: string;
|
|
66
68
|
collapsed?: boolean;
|
|
69
|
+
onExpandRequest?: () => void;
|
|
67
70
|
}
|
|
68
|
-
declare function SidebarMenu({ menuItems, onItemClick, currentPath, collapsed }: SidebarMenuProps): react_jsx_runtime.JSX.Element;
|
|
71
|
+
declare function SidebarMenu({ menuItems, onItemClick, currentPath, collapsed, onExpandRequest }: SidebarMenuProps): react_jsx_runtime.JSX.Element;
|
|
69
72
|
|
|
70
73
|
interface SidebarUserProfileProps {
|
|
71
74
|
user: User | null;
|
package/dist/index.js
CHANGED
|
@@ -417,7 +417,8 @@ function MenuItemComponent({
|
|
|
417
417
|
onItemClick,
|
|
418
418
|
currentPath,
|
|
419
419
|
depth = 0,
|
|
420
|
-
collapsed = false
|
|
420
|
+
collapsed = false,
|
|
421
|
+
onExpandRequest
|
|
421
422
|
}) {
|
|
422
423
|
const hasChildren = item.children && item.children.length > 0;
|
|
423
424
|
const isActive = item.path ? currentPath === item.path : false;
|
|
@@ -428,8 +429,12 @@ function MenuItemComponent({
|
|
|
428
429
|
const expanded = userToggled ? isOpen : isOpen || isChildActive;
|
|
429
430
|
const handleClick = () => {
|
|
430
431
|
if (hasChildren) {
|
|
431
|
-
|
|
432
|
-
|
|
432
|
+
if (collapsed) {
|
|
433
|
+
onExpandRequest?.();
|
|
434
|
+
} else {
|
|
435
|
+
setUserToggled(true);
|
|
436
|
+
setIsOpen(!expanded);
|
|
437
|
+
}
|
|
433
438
|
} else if (item.path) {
|
|
434
439
|
onItemClick(item.path);
|
|
435
440
|
}
|
|
@@ -538,7 +543,7 @@ function MenuItemComponent({
|
|
|
538
543
|
} }) })
|
|
539
544
|
] });
|
|
540
545
|
}
|
|
541
|
-
function SidebarMenu({ menuItems, onItemClick, currentPath, collapsed }) {
|
|
546
|
+
function SidebarMenu({ menuItems, onItemClick, currentPath, collapsed, onExpandRequest }) {
|
|
542
547
|
return /* @__PURE__ */ jsxRuntime.jsx("nav", { style: {
|
|
543
548
|
padding: collapsed ? "8px 8px" : "8px 12px",
|
|
544
549
|
overflowY: "auto"
|
|
@@ -555,7 +560,8 @@ function SidebarMenu({ menuItems, onItemClick, currentPath, collapsed }) {
|
|
|
555
560
|
item,
|
|
556
561
|
onItemClick,
|
|
557
562
|
currentPath,
|
|
558
|
-
collapsed
|
|
563
|
+
collapsed,
|
|
564
|
+
onExpandRequest
|
|
559
565
|
},
|
|
560
566
|
item.id
|
|
561
567
|
)) }) });
|
|
@@ -813,7 +819,8 @@ function StaffSidebar({
|
|
|
813
819
|
className,
|
|
814
820
|
collapsible = false,
|
|
815
821
|
isOpen: controlledIsOpen,
|
|
816
|
-
onToggle
|
|
822
|
+
onToggle,
|
|
823
|
+
onExpandRequest
|
|
817
824
|
}) {
|
|
818
825
|
const [internalOpen, setInternalOpen] = react.useState(true);
|
|
819
826
|
const sidebarOpen = controlledIsOpen !== void 0 ? controlledIsOpen : internalOpen;
|
|
@@ -828,6 +835,17 @@ function StaffSidebar({
|
|
|
828
835
|
setInternalOpen(!internalOpen);
|
|
829
836
|
}
|
|
830
837
|
};
|
|
838
|
+
const handleExpandRequest = () => {
|
|
839
|
+
if (onExpandRequest) {
|
|
840
|
+
onExpandRequest();
|
|
841
|
+
} else {
|
|
842
|
+
if (onToggle) {
|
|
843
|
+
onToggle();
|
|
844
|
+
} else {
|
|
845
|
+
setInternalOpen(true);
|
|
846
|
+
}
|
|
847
|
+
}
|
|
848
|
+
};
|
|
831
849
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
832
850
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
833
851
|
"aside",
|
|
@@ -857,34 +875,44 @@ function StaffSidebar({
|
|
|
857
875
|
collapsed
|
|
858
876
|
}
|
|
859
877
|
),
|
|
860
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
878
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { style: { flex: 1, overflowY: "auto", minHeight: 0 }, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
861
879
|
SidebarMenu,
|
|
862
880
|
{
|
|
863
881
|
menuItems,
|
|
864
882
|
onItemClick: onNavigate,
|
|
865
883
|
currentPath,
|
|
866
|
-
collapsed
|
|
867
|
-
|
|
868
|
-
),
|
|
869
|
-
resolvedBottomMenu && resolvedBottomMenu.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
870
|
-
SidebarMenu,
|
|
871
|
-
{
|
|
872
|
-
menuItems: resolvedBottomMenu,
|
|
873
|
-
onItemClick: onNavigate,
|
|
874
|
-
currentPath,
|
|
875
|
-
collapsed
|
|
876
|
-
}
|
|
877
|
-
),
|
|
878
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { style: { flex: 1 } }),
|
|
879
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
880
|
-
SidebarUserProfile,
|
|
881
|
-
{
|
|
882
|
-
user,
|
|
883
|
-
roleLabel,
|
|
884
|
-
onLogout,
|
|
885
|
-
collapsed
|
|
884
|
+
collapsed,
|
|
885
|
+
onExpandRequest: handleExpandRequest
|
|
886
886
|
}
|
|
887
|
-
)
|
|
887
|
+
) }),
|
|
888
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { style: { flexShrink: 0 }, children: [
|
|
889
|
+
resolvedBottomMenu && resolvedBottomMenu.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
890
|
+
/* @__PURE__ */ jsxRuntime.jsx("hr", { style: {
|
|
891
|
+
border: "none",
|
|
892
|
+
borderTop: "1px solid var(--color-border-colors-neutral, #c8cedd)",
|
|
893
|
+
margin: "4px 12px"
|
|
894
|
+
} }),
|
|
895
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
896
|
+
SidebarMenu,
|
|
897
|
+
{
|
|
898
|
+
menuItems: resolvedBottomMenu,
|
|
899
|
+
onItemClick: onNavigate,
|
|
900
|
+
currentPath,
|
|
901
|
+
collapsed,
|
|
902
|
+
onExpandRequest: handleExpandRequest
|
|
903
|
+
}
|
|
904
|
+
)
|
|
905
|
+
] }),
|
|
906
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
907
|
+
SidebarUserProfile,
|
|
908
|
+
{
|
|
909
|
+
user,
|
|
910
|
+
roleLabel,
|
|
911
|
+
onLogout,
|
|
912
|
+
collapsed
|
|
913
|
+
}
|
|
914
|
+
)
|
|
915
|
+
] })
|
|
888
916
|
]
|
|
889
917
|
}
|
|
890
918
|
),
|