"use Client"; import { Button } from "@/components/ui/button"; import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, DialogTrigger, } from "@/components/ui/dialog"; import { zodResolver } from "@hookform/resolvers/zod" import { useForm } from "react-hook-form" import { z } from "zod" import { Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, } from "@/components/ui/form" import { Input } from "@/components/ui/input" import { createVorlage } from "./action"; import { useState } from "react"; export default function AddDialog({ onNewEntry }: { onNewEntry: () => void }) { const [open, setOpen] = useState(false) const formSchema = z.object({ Drucker: z.string().min(1, { message: "Druckername muss mindestens 2 Zeichen lang sein.", }), Höhe: z.preprocess( (value) => (typeof value === "string" ? parseFloat(value) : value), z.number({ invalid_type_error: "Höhe muss eine gültige Zahl sein. Bspw. 1.5 .", }).min(1, { message: "Höhe muss mindestens 1 sein.", }) ), Breite: z.preprocess( (value) => (typeof value === "string" ? parseFloat(value) : value), z.number({ invalid_type_error: "Breite muss eine gültige Zahl sein. Bspw. 1.5 .", }).min(1, { message: "Breite muss mindestens 1 sein.", }) ), ArtikelTypen: z .string() .regex(/^(\s*\w+\s*)(,\s*\w+\s*)*$/, { message: "Bitte geben Sie eine durch Kommas getrennte Liste ein (z.B. te, bs, s, s, s)", }), }); const form = useForm>({ resolver: zodResolver(formSchema), defaultValues: { Drucker: "", Höhe: 0, Breite: 0, ArtikelTypen: "", }, }); async function onSubmit(values: z.infer) { const formData = new FormData(); formData.append("printer", values.Drucker); formData.append("height", values.Höhe.toString()); formData.append("width", values.Breite.toString()); formData.append("articleTypes", values.ArtikelTypen); try { await createVorlage(formData); setOpen(false); form.reset(); onNewEntry(); } catch (error) { console.error("Error submitting form:", error); throw new Error("An error occurred while submitting the form."); } } return (
Vorlage hinzufügen
( Drucker Name Der Name des Druckers, auf dem die Vorlage gedruckt wird. )} /> ( Höhe Die Höhe der Vorlage in Millimeter. )} /> ( Breite Die Breite der Vorlage in Millimeter. )} /> ( Artikel Typen Geben Sie die Artikeltypen als durch Kommas getrennte Liste ein (z.B. te, bs, s, s, s). )} />
); }