роутинг пагинации

This commit is contained in:
gorbenko.pavel
2026-08-10 17:12:23 +05:00
parent 36ee7ec009
commit a80dc17c3e
5 changed files with 230 additions and 16 deletions
@@ -2,7 +2,15 @@ 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, persistOwnTab, persistOwnStatus, useRoute, NavSection, OwnTab } from '../shared/routing';
import {
navigate,
persistOwnTab,
persistOwnStatus,
persistPage,
useRoute,
NavSection,
OwnTab,
} from '../shared/routing';
import { onRequestsChanged, emitRequestsChanged } from '../shared/requestEvents';
import { confirmDiscardFormChanges, markFormClean, markFormDirty } from '../shared/unsavedChanges';
import { SideNav } from './SideNav/SideNav';
@@ -131,7 +139,18 @@ const RequestPortal: React.FC<IRequestPortalProps> = ({ hasTeamsContext, context
const setOwnStatus = (ownStatus: string): void => {
const normalized = ownStatus || undefined;
persistOwnStatus(normalized);
navigate({ mode: 'submit', nav: 'own', ownTab: 'created', ownStatus: normalized });
// Смена фильтра — другой набор заявок, поэтому явно с первой страницы
// (и запоминаем именно её, иначе вернувшись сюда попали бы на старую).
persistPage({ mode: 'submit', nav: 'own', ownTab: 'created' }, 1);
navigate({ mode: 'submit', nav: 'own', ownTab: 'created', ownStatus: normalized, page: 1 });
};
// Смена страницы сохраняет ВЕСЬ остальной маршрут (в т.ч. открытую заявку),
// меняется только номер: так «назад» возвращает на прежнюю страницу, а
// ссылку со страницей можно передать.
const setPage = (page: number): void => {
persistPage(route, page);
navigate({ ...route, page });
};
// Клик по строке таблицы. СВОЯ заявка в незавершённом статусе (черновик,
// возвращённая, отклонённая) открывается на редактирование, всё остальное —
@@ -221,6 +240,8 @@ const RequestPortal: React.FC<IRequestPortalProps> = ({ hasTeamsContext, context
{route.nav === 'search' && (
<SearchView
context={context}
page={route.page ?? 1}
onPageChange={setPage}
onOpen={openRequest}
/>
)}
@@ -239,6 +260,8 @@ const RequestPortal: React.FC<IRequestPortalProps> = ({ hasTeamsContext, context
}
statusFilter={route.ownStatus ?? ''}
onStatusFilterChange={setOwnStatus}
page={route.page ?? 1}
onPageChange={setPage}
onOpen={openRequest}
/>
)}