12345678910111213141516171819202122232425262728293031323334353637 |
- 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 };
|