fix: correct menu activation status display
This commit is contained in:
1 parent
1efd0d1857
commit
041d65566e
3 files changed
+41
-5
No files matched your search
@@ -1,6 +1,6 @@
|
||||
import { ref, watch, type Ref } from "vue";
|
||||
import { getSystemResource } from "@/api/client";
|
||||
import type { SystemRoleItem } from "@/types";
|
||||
import type { SystemMenuItem, SystemMenuTreeItem, SystemRoleItem } from "@/types";
|
||||
|
||||
export type SystemResourceResponse = { items: unknown[] };
|
||||
export type SystemResourceFetcher = (resource: string) => Promise<SystemResourceResponse>;
|
||||
@@ -25,6 +25,18 @@ export function buildSystemTree<T extends TreeSource>(items: T[]): Array<SystemT
|
||||
return roots;
|
||||
}
|
||||
|
||||
export function hydrateMenuTree(tree: SystemMenuTreeItem[], items: readonly SystemMenuItem[]): SystemMenuTreeItem[] {
|
||||
const itemMap = new Map(items.map((item) => [item.id, item]));
|
||||
const hydrate = (nodes: SystemMenuTreeItem[]): SystemMenuTreeItem[] => nodes.map((node) => {
|
||||
const item = itemMap.get(node.id);
|
||||
return {
|
||||
...(item ? { ...item, ...node } : node),
|
||||
children: hydrate(node.children ?? []),
|
||||
};
|
||||
});
|
||||
return hydrate(tree);
|
||||
}
|
||||
|
||||
export function filterSystemTree<T extends TreeSource>(nodes: Array<SystemTreeNode<T>>, keyword: string): Array<SystemTreeNode<T>> {
|
||||
const normalized = keyword.trim().toLowerCase();
|
||||
if (!normalized) return nodes;
|
||||
|
||||
Reference in new issue
Block a user