feat: добавил инструкцию пользователя в боковую панел
Tests / frontend-test (push) Successful in 1m16s
Tests / frontend-test (push) Successful in 1m16s
This commit is contained in:
@@ -21,6 +21,7 @@ import {
|
||||
OwnTab,
|
||||
} from '../shared/routing';
|
||||
import { onRequestsChanged, emitRequestsChanged } from '../shared/requestEvents';
|
||||
import { USER_GUIDE_URL } from '../shared/config';
|
||||
import { getImpersonatedEmail, getImpersonatedDisplayName } from '../shared/impersonation';
|
||||
import { confirmDiscardFormChanges, markFormClean, markFormDirty } from '../shared/unsavedChanges';
|
||||
import { Drawer } from './Drawer/Drawer';
|
||||
@@ -298,6 +299,11 @@ const RequestPortal: React.FC<IRequestPortalProps> = ({ hasTeamsContext, context
|
||||
// Разделы бокового меню для пакетного Sidebar (счётчики — из navCounts).
|
||||
// «Отчёты» — только у тех, кому разрешено (см. canSeeReports выше): скрыт из
|
||||
// меню совсем, а не показан неактивным, — раздела для остальных как бы не существует.
|
||||
//
|
||||
// «Инструкция пользователя» — не раздел портала, а внешняя ссылка (docx в базе
|
||||
// знаний). id 'instructions' НЕ входит в NavSection специально: обработчик
|
||||
// onChange ниже перехватывает его до вызова goto() и открывает ссылку в новой
|
||||
// вкладке, не меняя текущий раздел/маршрут.
|
||||
const navItems: ISidebarItem[] = [
|
||||
{ id: 'new', title: 'Новая заявка', icon: 'plus' },
|
||||
{ id: 'approvals', title: 'На согласовании', icon: 'user-check', count: navCounts?.approvals },
|
||||
@@ -306,8 +312,17 @@ const RequestPortal: React.FC<IRequestPortalProps> = ({ hasTeamsContext, context
|
||||
{ id: 'own', title: 'Мои заявки', icon: 'clipboard' },
|
||||
{ id: 'search', title: 'Поиск', icon: 'search' },
|
||||
...(canSeeReports ? [{ id: 'reports', title: 'Отчёты', icon: 'chart' } as ISidebarItem] : []),
|
||||
{ id: 'instructions', title: 'Инструкция пользователя', icon: 'info' },
|
||||
];
|
||||
|
||||
const handleNavChange = (id: string): void => {
|
||||
if (id === 'instructions') {
|
||||
window.open(USER_GUIDE_URL, '_blank', 'noopener');
|
||||
return;
|
||||
}
|
||||
goto(id as NavSection);
|
||||
};
|
||||
|
||||
return (
|
||||
<section className={rootClasses}>
|
||||
<IconSprite />
|
||||
@@ -329,7 +344,7 @@ const RequestPortal: React.FC<IRequestPortalProps> = ({ hasTeamsContext, context
|
||||
<Sidebar
|
||||
items={navItems}
|
||||
activeId={route.nav}
|
||||
onChange={(id) => goto(id as NavSection)}
|
||||
onChange={handleNavChange}
|
||||
brand="Портал заявок"
|
||||
collapsed={navCollapsed}
|
||||
onToggleCollapsed={() => setNavCollapsed((v) => !v)}
|
||||
|
||||
Reference in New Issue
Block a user