From d2e16167c746adba1ec1dc61897f090af49651af Mon Sep 17 00:00:00 2001 From: "gorbenko.pavel" Date: Mon, 10 Aug 2026 16:49:23 +0500 Subject: [PATCH] =?UTF-8?q?=D0=BF=D0=BE=D1=84=D0=B8=D0=BA=D1=88=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=BF=D0=B5=D1=80=D1=81=D0=B8=D1=81=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/RequestPortal.tsx | 18 +++++---- .../myRequests/RequestsTableView.module.scss | 11 ++++++ .../features/myRequests/RequestsTableView.tsx | 33 +++++++++++++++- .../requestPortal/shared/routing.test.ts | 38 +++++++++++++------ src/webparts/requestPortal/shared/routing.ts | 32 ++++++++++++---- 5 files changed, 103 insertions(+), 29 deletions(-) diff --git a/src/webparts/requestPortal/components/RequestPortal.tsx b/src/webparts/requestPortal/components/RequestPortal.tsx index f049407..4852ea9 100644 --- a/src/webparts/requestPortal/components/RequestPortal.tsx +++ b/src/webparts/requestPortal/components/RequestPortal.tsx @@ -2,7 +2,7 @@ import * as React from 'react'; import styles from './RequestPortal.module.scss'; import type { IRequestPortalProps } from './IRequestPortalProps'; import { IconSprite } from '../shared/ui/Icon/IconSprite'; -import { navigate, persistOwnSelection, useRoute, NavSection, OwnTab } from '../shared/routing'; +import { navigate, persistOwnTab, persistOwnStatus, useRoute, NavSection, OwnTab } from '../shared/routing'; import { onRequestsChanged, emitRequestsChanged } from '../shared/requestEvents'; import { confirmDiscardFormChanges, markFormClean, markFormDirty } from '../shared/unsavedChanges'; import { SideNav } from './SideNav/SideNav'; @@ -114,21 +114,23 @@ const RequestPortal: React.FC = ({ hasTeamsContext, context // ИЗ другого раздела route.ownTab всё равно undefined (parseRoute заполняет // его только когда nav==='own'), а при возврате на уже открытую «own» их // подхватит storage-фолбэк в parseRoute — то же самое значение, которое - // пользователь выбирал последним (см. persistOwnSelection/gotoOwnTab). + // пользователь выбирал последним (см. persistOwnTab/gotoOwnTab). navigate({ mode: 'submit', nav }); }; const gotoOwnTab = (ownTab: OwnTab): void => { - // Фильтр по статусу относится только к «Инициированным» — на других - // подвкладках отбор задаёт сама вкладка, поэтому фильтр туда не тащим. - const ownStatus = ownTab === 'created' ? route.ownStatus : undefined; - persistOwnSelection(ownTab, ownStatus); - navigate({ mode: 'submit', nav: 'own', ownTab, ownStatus }); + // ownStatus здесь НЕ передаём (даже для 'created'!) — по той же причине, + // что и в goto() выше: он подхватится storage-фолбэком в parseRoute. Если + // передать route.ownStatus явно, при переходе с ДРУГОЙ подвкладки он всегда + // undefined (сейчас мы не на 'created'), и фильтр на «Инициированных» + // выглядел бы каждый раз сброшенным — ровно тот баг, который тут был. + persistOwnTab(ownTab); + navigate({ mode: 'submit', nav: 'own', ownTab }); }; const setOwnStatus = (ownStatus: string): void => { const normalized = ownStatus || undefined; - persistOwnSelection('created', normalized); + persistOwnStatus(normalized); navigate({ mode: 'submit', nav: 'own', ownTab: 'created', ownStatus: normalized }); }; // Клик по строке таблицы. СВОЯ заявка в незавершённом статусе (черновик, diff --git a/src/webparts/requestPortal/features/myRequests/RequestsTableView.module.scss b/src/webparts/requestPortal/features/myRequests/RequestsTableView.module.scss index fd77c0e..07b4978 100644 --- a/src/webparts/requestPortal/features/myRequests/RequestsTableView.module.scss +++ b/src/webparts/requestPortal/features/myRequests/RequestsTableView.module.scss @@ -66,6 +66,17 @@ margin-left: 0; } +// Цвет пунктов списка — те же цвета, что у StatusBadge (см. statusOptionClassName +// в RequestsTableView.tsx). Только color: background-color нативный