diff --git a/apps/admin/src/layouts/MainLayout.tsx b/apps/admin/src/layouts/MainLayout.tsx index 3fb5ea9..352ae6d 100644 --- a/apps/admin/src/layouts/MainLayout.tsx +++ b/apps/admin/src/layouts/MainLayout.tsx @@ -155,20 +155,37 @@ const MainLayout: React.FC = () => { if (isMobile) setDrawerOpen(false); }; - const transformToMenuItems = (items: MenuItemType[]): any[] => { - return items.map((item) => ({ - key: item.key, - icon: item.icon, - label: item.label, - children: item.children ? transformToMenuItems(item.children) : undefined, - })); + const findSelectedKeys = (items: MenuItemType[], pathname: string): string[] => { + for (const item of items) { + if (item.key === pathname) return [item.key]; + if (item.children) { + const found = findSelectedKeys(item.children, pathname); + if (found.length > 0) return found; + } + } + return [pathname]; }; + const findOpenKeys = (items: MenuItemType[], pathname: string): string[] => { + for (const item of items) { + if (item.children) { + if (item.children.some((c) => c.key === pathname || (c.children && c.children.some((gc) => gc.key === pathname)))) { + return [item.key]; + } + } + } + return []; + }; + + const selectedKeys = findSelectedKeys(menuItems, location.pathname); + const openKeys = findOpenKeys(menuItems, location.pathname); + const menuContent = (