import * as React from 'react'; import type { WebPartContext } from '@microsoft/sp-webpart-base'; export interface IApprovalViewProps { context: WebPartContext; itemId: number; /** * Ключ формы (= pageUrl типа заявки в approval-route API) — тот же, что и * rptype в ссылке (см. ApproveFeature). Нужен режиму согласующего, чтобы * самому резолвить числовой RequestTypeId через useRequestTypeId (форма * подачи получает готовый requestType.id, а View — только itemId/context). */ formKey: string; /** * Партиция (серверный url списка), где лежит именно ЭТА заявка — см. * shared/approval/listPartitions.ts. Не задан — просмотр откатывается на * текущую партицию типа заявки (старые ссылки без параметра). */ listId?: string; /** * Уведомление о загруженном уникальном коде заявки — нужен родителю * (RequestPortal) для заголовка Drawer, который рендерится ДО того, как * View успевает загрузить саму заявку и узнать её код. */ onCodeLoaded?: (code: string) => void; } type ViewComponent = React.ComponentType; /** * Реестр форм «только для чтения» (режим согласующего): ключ формы → ленивый просмотр. * Добавить просмотр = создать <Форма>View.tsx + строка здесь. */ const viewRegistry: Record> = { 'recruiting-selection': React.lazy( () => import(/* webpackChunkName: 'view-recruiting-selection' */ './RecruitingSelection/RecruitingSelectionView') ), 'recruiting-hire': React.lazy( () => import(/* webpackChunkName: 'view-recruiting-hire' */ './RecruitingHire/RecruitingHireView') ), 'recruiting-referral': React.lazy( () => import(/* webpackChunkName: 'view-referral' */ './Referral/ReferralView') ), 'it-workplace-setup': React.lazy( () => import(/* webpackChunkName: 'view-workplace-setup' */ './WorkplaceSetup/WorkplaceSetupView') ), 'it-1c-ticket': React.lazy( () => import(/* webpackChunkName: 'view-1c-ticket' */ './Ticket1C/Ticket1CView') ), 'hr-vacation': React.lazy( () => import(/* webpackChunkName: 'view-vacation' */ './Vacation/VacationView') ), 'hr-unpaid-leave': React.lazy( () => import(/* webpackChunkName: 'view-unpaid-leave' */ './UnpaidLeave/UnpaidLeaveView') ), 'wh-tmc-transfer': React.lazy( () => import(/* webpackChunkName: 'view-tmc-transfer' */ './TmcTransfer/TmcTransferView') ), 'wh-service-request': React.lazy( () => import(/* webpackChunkName: 'view-service-request' */ './ServiceRequest/ServiceRequestView') ), 'clearance-form': React.lazy( () => import(/* webpackChunkName: 'view-clearance' */ './Clearance/ClearanceView') ), 'hr-dismissal': React.lazy( () => import(/* webpackChunkName: 'view-dismissal' */ './Dismissal/DismissalView') ) }; export function getViewComponent( formKey: string ): React.LazyExoticComponent | undefined { return viewRegistry[formKey]; }