From 9deaa34a6ea878a3f4cc6b4f5749754fe3089f63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9=20=D0=A1=D0=B0?= =?UTF-8?q?=D0=B1=D0=B8=D0=BB=D0=B8=D0=BD?= Date: Mon, 13 Jul 2026 17:06:59 +0300 Subject: [PATCH] =?UTF-8?q?fix(menu):=20=D0=BF=D0=BE=D0=B4=D1=81=D0=B2?= =?UTF-8?q?=D0=B5=D1=82=D0=BA=D0=B0=20=D1=80=D0=BE=D0=B4=D0=B8=D1=82=D0=B5?= =?UTF-8?q?=D0=BB=D1=8C=D1=81=D0=BA=D0=BE=D0=B3=D0=BE=20=D0=BF=D1=83=D0=BD?= =?UTF-8?q?=D0=BA=D1=82=D0=B0=20=D0=BD=D0=B0=20detail-=D1=81=D1=82=D1=80?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D1=86=D0=B0=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Refs EventHub/EventHubFrontAdmin#7 Co-authored-by: Cursor --- src/config/adminAccess.ts | 15 +++++++++++++++ src/layouts/AdminLayout.tsx | 4 ++-- 2 files changed, 17 insertions(+), 2 deletions(-) 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={{