Files
request-portal/src/webparts/requestPortal/shared/ui/index.ts
T
Тимур Городецкий 5702939b52 feat: подсветка незаполненных полей и переход к ним в приёме и подборе
Пользователи не понимали, почему кнопка «Отправить на согласование» серая.
Теперь в заявках на приём и подбор кнопки активны: нажатие при незаполненных
или неверных полях ничего не сохраняет, а подсвечивает эти поля с подсказкой
под ними и прокручивает к первому. Над кнопками — список проблем, пункты ведут
к полю. Механизм общий (FieldIssuesProvider + FormField), остальные формы
пока работают по-старому и переводятся по тому же паттерну.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-30 17:15:16 +05:00

63 lines
3.1 KiB
TypeScript

// Единая точка импорта примитивов формы.
// Перенесённые компоненты берём из общего пакета @tnsu/ui-kit; остальные
// (бизнес-логика/SharePoint/отложенные) — пока локальные. Все формы импортят
// отсюда, поэтому переключение источника не требует правок в самих формах.
// --- Из общего пакета @tnsu/ui-kit ---
export {
Button,
Alert,
FormCard,
FormGrid,
TextInput,
PhoneInput,
MoneyInput,
TextArea,
Select,
Toggle,
Checkbox,
CollapseSection,
FormActions,
FileDropzone,
FormModeProvider,
useFormReadOnly,
Icon,
ConfirmHost,
confirmModal,
RequestNumber,
PrintButton
} from '@tnsu/ui-kit';
export type { ISelectOption, IConfirmOptions } from '@tnsu/ui-kit';
// --- Пока локальные (не перенесены: SP/бизнес/отложенные) ---
// FormField — обёртка над ui-kit с подсветкой правок согласующего (журнал в
// FieldChangesProvider); без журнала ведёт себя как FormField из ui-kit.
export { FormField } from './FormField/FormField';
// AttachmentList — обёртка над ui-kit с кнопкой «Скачать все» (без архива, файлы по очереди).
export { AttachmentList } from './AttachmentList/AttachmentList';
export { FieldChangesProvider } from './FieldChanges/FieldChangesContext';
export { FieldChangesBanner } from './FieldChanges/FieldChangesBanner';
export { MultiChoiceField } from './MultiChoiceField/MultiChoiceField';
export { ItemsTable } from './ItemsTable/ItemsTable';
export type { IItemsTableProps } from './ItemsTable/ItemsTable';
export type { ILineItem } from './ItemsTable/ILineItem';
export { EMPTY_LINE_ITEM } from './ItemsTable/ILineItem';
export { parseExcelRows } from './ItemsTable/parseExcelRows';
export { PeopleField } from './PeopleField/PeopleField';
export { PeopleFieldMulti } from './PeopleField/PeopleFieldMulti';
export { PeopleTextField } from './PeopleField/PeopleTextField';
export { OrganizationField } from './OrganizationField/OrganizationField';
export { PrintSplitButton } from './PrintSplitButton/PrintSplitButton';
export { OrgLetterhead } from './OrgLetterhead/OrgLetterhead';
export { LinkField } from './LinkField/LinkField';
export { ErrorOverlay } from './ErrorOverlay/ErrorOverlay';
export { SubmitActions } from './SubmitActions/SubmitActions';
export { FieldIssuesProvider } from './FieldIssues/FieldIssuesContext';
export type { IFieldIssue } from './FieldIssues/fieldIssues';
export { issueLabels } from './FieldIssues/fieldIssues';
export { getDraftDeleteHandler } from './SubmitActions/getDraftDeleteHandler';
export { InitiatorLine } from './InitiatorLine/InitiatorLine';
export type { IInitiatorLineProps } from './InitiatorLine/InitiatorLine';
export { useRequestSubmit } from './useRequestSubmit';
export type { IRequestSubmit, SubmitKind } from './useRequestSubmit';