/** * Компонент формы с валидацией */ 'use client'; import { ReactNode, FormEvent } from 'react'; import { ValidationError } from '@/lib/validation/client-validation'; interface ValidatedFormProps { onSubmit: (data: any) => Promise | void; validationErrors: ValidationError[]; isSubmitting?: boolean; children: ReactNode; submitLabel?: string; } export default function ValidatedForm({ onSubmit, validationErrors, isSubmitting = false, children, submitLabel = 'Сохранить', }: ValidatedFormProps) { const handleSubmit = async (e: FormEvent) => { e.preventDefault(); // Предотвращаем отправку, если есть ошибки if (validationErrors.length > 0) { return; } const formData = new FormData(e.currentTarget); const data = Object.fromEntries(formData.entries()); await onSubmit(data); }; return (
{children} {validationErrors.length > 0 && (
Ошибки валидации:
    {validationErrors.map((error, index) => (
  • {error.field}: {error.message}
  • ))}
)}
); }