"use client"; import { Button } from "@/components/ui/button"; import { TextInput } from "@/components/ui/TextInput/TextInput"; import { Plus } from "lucide-react"; import type { FormScreenDefinition, FormFieldDefinition, FormValidationMessages } from "@/lib/funnel/types"; import type { BuilderScreen } from "@/lib/admin/builder/types"; interface FormScreenConfigProps { screen: BuilderScreen & { template: "form" }; onUpdate: (updates: Partial) => void; } export function FormScreenConfig({ screen, onUpdate }: FormScreenConfigProps) { const formScreen = screen as FormScreenDefinition & { position: { x: number; y: number } }; const updateField = (index: number, updates: Partial) => { const newFields = [...(formScreen.fields || [])]; newFields[index] = { ...newFields[index], ...updates }; onUpdate({ fields: newFields }); }; const updateValidationMessages = (updates: Partial) => { onUpdate({ validationMessages: { ...(formScreen.validationMessages ?? {}), ...updates, }, }); }; const addField = () => { const newField: FormFieldDefinition = { id: `field_${Date.now()}`, label: "Новое поле", placeholder: "Введите значение", type: "text", required: true, }; onUpdate({ fields: [...(formScreen.fields || []), newField], }); }; const removeField = (index: number) => { const newFields = formScreen.fields?.filter((_, i) => i !== index) || []; onUpdate({ fields: newFields }); }; return (

Поля формы

{formScreen.fields?.map((field, index) => (
Поле {index + 1}
))} {(!formScreen.fields || formScreen.fields.length === 0) && (
Пока нет полей. Добавьте хотя бы одно, чтобы форма работала.
)}

Сообщения валидации

); }