38 lines
819 B
TypeScript
38 lines
819 B
TypeScript
import type { MenuRecordRaw } from '@vben-core/typings';
|
|
|
|
function findMenuByPath(
|
|
list: MenuRecordRaw[],
|
|
path?: string,
|
|
): MenuRecordRaw | null {
|
|
for (const menu of list) {
|
|
if (menu.path === path) {
|
|
return menu;
|
|
}
|
|
const findMenu = menu.children && findMenuByPath(menu.children, path);
|
|
if (findMenu) {
|
|
return findMenu;
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
/**
|
|
* 查找根菜单
|
|
* @param menus
|
|
* @param path
|
|
*/
|
|
function findRootMenuByPath(menus: MenuRecordRaw[], path?: string) {
|
|
const findMenu = findMenuByPath(menus, path);
|
|
const rootMenuPath = findMenu?.parents?.[0];
|
|
const rootMenu = rootMenuPath
|
|
? menus.find((item) => item.path === rootMenuPath)
|
|
: undefined;
|
|
return {
|
|
findMenu,
|
|
rootMenu,
|
|
rootMenuPath,
|
|
};
|
|
}
|
|
|
|
export { findMenuByPath, findRootMenuByPath };
|