diff --git a/src/config/adminAccess.ts b/src/config/adminAccess.ts index 3a0974a..33498c6 100644 --- a/src/config/adminAccess.ts +++ b/src/config/adminAccess.ts @@ -52,3 +52,18 @@ export function filterMenuByRole( ): T[] { return items.filter((item) => !item.roles || (role && item.roles.includes(role as AdminRole))); } + +/** Ключ пункта меню для detail-маршрутов (/users/:id → /users). */ +export function getMenuSelectedKey(pathname: string): string { + if (MENU_ITEMS.some((item) => item.key === pathname)) { + return pathname; + } + const segment = pathname.split('/').filter(Boolean)[0]; + if (segment) { + const parent = `/${segment}`; + if (MENU_ITEMS.some((item) => item.key === parent)) { + return parent; + } + } + return pathname; +} diff --git a/src/layouts/AdminLayout.tsx b/src/layouts/AdminLayout.tsx index 5ce8041..fc95d8d 100644 --- a/src/layouts/AdminLayout.tsx +++ b/src/layouts/AdminLayout.tsx @@ -23,7 +23,7 @@ import { CloudServerOutlined, } from '@ant-design/icons'; import dayjs from 'dayjs'; -import { MENU_ITEMS, filterMenuByRole } from '../config/adminAccess'; +import { MENU_ITEMS, filterMenuByRole, getMenuSelectedKey } from '../config/adminAccess'; const { Header, Sider, Content } = Layout; const { Text } = Typography; @@ -174,7 +174,7 @@ const AdminLayout: React.FC = () => { navigate(key)} style={{