@tker-react/layout 0.2.3 → 0.2.4
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 +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.mjs +44 -5
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -85,6 +85,8 @@ interface LayoutContextValue {
|
|
|
85
85
|
setActivePath: (path: string, fullPath?: string) => void;
|
|
86
86
|
toggleCollapse: () => void;
|
|
87
87
|
setCollapsed: (collapsed: boolean) => void;
|
|
88
|
+
openKeys: Set<string>;
|
|
89
|
+
toggleMenuOpen: (path: string, forceOpen?: boolean) => void;
|
|
88
90
|
setExpandedWidth: (width: string) => void;
|
|
89
91
|
setCollapsedWidth: (width: string) => void;
|
|
90
92
|
setLayoutMode: (mode: "side-menu" | "top-menu") => void;
|
package/dist/index.d.ts
CHANGED
|
@@ -85,6 +85,8 @@ interface LayoutContextValue {
|
|
|
85
85
|
setActivePath: (path: string, fullPath?: string) => void;
|
|
86
86
|
toggleCollapse: () => void;
|
|
87
87
|
setCollapsed: (collapsed: boolean) => void;
|
|
88
|
+
openKeys: Set<string>;
|
|
89
|
+
toggleMenuOpen: (path: string, forceOpen?: boolean) => void;
|
|
88
90
|
setExpandedWidth: (width: string) => void;
|
|
89
91
|
setCollapsedWidth: (width: string) => void;
|
|
90
92
|
setLayoutMode: (mode: "side-menu" | "top-menu") => void;
|
package/dist/index.mjs
CHANGED
|
@@ -99,10 +99,37 @@ function LayoutProvider({ children }) {
|
|
|
99
99
|
"side-menu"
|
|
100
100
|
);
|
|
101
101
|
const setMenus = useCallback((data) => setMenuData(data), []);
|
|
102
|
-
const
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
102
|
+
const [openKeys, setOpenKeys] = useState(/* @__PURE__ */ new Set());
|
|
103
|
+
const savedOpenKeysRef = useRef(/* @__PURE__ */ new Set());
|
|
104
|
+
const openKeysRef = useRef(openKeys);
|
|
105
|
+
openKeysRef.current = openKeys;
|
|
106
|
+
const collapsedRef = useRef(collapsed);
|
|
107
|
+
collapsedRef.current = collapsed;
|
|
108
|
+
const toggleMenuOpen = useCallback((path, forceOpen) => {
|
|
109
|
+
setOpenKeys((prev) => {
|
|
110
|
+
const next = new Set(prev);
|
|
111
|
+
if (forceOpen === true) {
|
|
112
|
+
next.add(path);
|
|
113
|
+
} else if (forceOpen === false) {
|
|
114
|
+
next.delete(path);
|
|
115
|
+
} else if (next.has(path)) {
|
|
116
|
+
next.delete(path);
|
|
117
|
+
} else {
|
|
118
|
+
next.add(path);
|
|
119
|
+
}
|
|
120
|
+
return next;
|
|
121
|
+
});
|
|
122
|
+
}, []);
|
|
123
|
+
const toggleCollapse = useCallback(() => {
|
|
124
|
+
const nextCollapsed = !collapsedRef.current;
|
|
125
|
+
if (nextCollapsed) {
|
|
126
|
+
savedOpenKeysRef.current = new Set(openKeysRef.current);
|
|
127
|
+
setOpenKeys(/* @__PURE__ */ new Set());
|
|
128
|
+
} else {
|
|
129
|
+
setOpenKeys(new Set(savedOpenKeysRef.current));
|
|
130
|
+
}
|
|
131
|
+
setCollapsedState(nextCollapsed);
|
|
132
|
+
}, []);
|
|
106
133
|
const pathParamsMap = useRef(/* @__PURE__ */ new Map());
|
|
107
134
|
const storePathParams = useCallback((path, fullPath) => {
|
|
108
135
|
if (fullPath && fullPath !== path) {
|
|
@@ -153,7 +180,17 @@ function LayoutProvider({ children }) {
|
|
|
153
180
|
setMenus,
|
|
154
181
|
setActivePath,
|
|
155
182
|
toggleCollapse,
|
|
156
|
-
setCollapsed:
|
|
183
|
+
setCollapsed: (val) => {
|
|
184
|
+
if (val) {
|
|
185
|
+
savedOpenKeysRef.current = new Set(openKeysRef.current);
|
|
186
|
+
setOpenKeys(/* @__PURE__ */ new Set());
|
|
187
|
+
} else {
|
|
188
|
+
setOpenKeys(new Set(savedOpenKeysRef.current));
|
|
189
|
+
}
|
|
190
|
+
setCollapsedState(val);
|
|
191
|
+
},
|
|
192
|
+
openKeys,
|
|
193
|
+
toggleMenuOpen,
|
|
157
194
|
setExpandedWidth,
|
|
158
195
|
setCollapsedWidth,
|
|
159
196
|
setLayoutMode,
|
|
@@ -183,6 +220,8 @@ function LayoutProvider({ children }) {
|
|
|
183
220
|
setMenus,
|
|
184
221
|
setActivePath,
|
|
185
222
|
toggleCollapse,
|
|
223
|
+
openKeys,
|
|
224
|
+
toggleMenuOpen,
|
|
186
225
|
isConcretePage,
|
|
187
226
|
getFullPath,
|
|
188
227
|
setNavigateAdapter,
|