import * as React from 'react'; import { Alert } from './Alert'; import { Button } from './Button'; import { Modal } from './Modal'; import { texts } from '../../texts'; export interface IFormModalProps { title: string; /** Текст ошибки: и валидации формы, и ответа бэкенда. */ error?: string; isSaving: boolean; /** Подпись кнопки подтверждения — по умолчанию «Сохранить» (см. копирование маршрута). */ submitLabel?: string; /** Подпись той же кнопки во время запроса — по умолчанию «Сохранение...». */ savingLabel?: string; onSubmit: () => void; onClose: () => void; children: React.ReactNode; } /** * Модальное окно формы: одинаковая обвязка «ошибка сверху, Отмена/Сохранить снизу» * для всех справочников, чтобы экраны описывали только поля. */ export const FormModal: React.FC = ({ title, error, isSaving, submitLabel = texts.common.save, savingLabel = texts.common.saving, onSubmit, onClose, children }) => ( } > {error && {error}} {children} );