import React, { FormEvent } from "react"; import IsNotAllowed from "./PageisNotAllowed"; import EventButton from "./ButtonEvent"; import { Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, } from "@/components/ui/form"; import { z } from "zod"; import { zodResolver } from "@hookform/resolvers/zod"; import { useForm } from "react-hook-form"; interface UpdatePageButtonProps { title: string; validation: any; tableSelectedRow: any; setTableSelectedRow: React.Dispatch>; formPageFunction: React.Dispatch>; isFormEnabledFunction: React.Dispatch>; onClickAction: () => void; } const PageUpdate: React.FC = ({ title, validation, tableSelectedRow, setTableSelectedRow, formPageFunction, isFormEnabledFunction, onClickAction, }) => { const [validatedData, setValidatedData] = React.useState({}); const [zodValidation, setZodValidation] = React.useState(z.object({})); const validationObj = validation?.validated; const validationHeaders = validation?.headers; React.useEffect(() => { if (Object.keys(validatedData).length === 0) { setValidatedData(tableSelectedRow); let zodValidationInternal: any = {}; Object.keys(tableSelectedRow).map((key: string) => { zodValidationInternal[key] = null; const keyValidation = validationObj[key] || { fieldType: { type: "string" }, required: false, }; const fieldType: String = keyValidation.fieldType?.type || "string"; const required = keyValidation.required || false; if (fieldType === "string") { zodValidationInternal[key] = required ? z.string() : z.string().optional(); } else if (fieldType === "integer") { zodValidationInternal[key] = required ? z.number() : z.number().optional(); } }); setZodValidation(zodValidationInternal); } }, [validation]); const form = useForm>({ resolver: zodResolver(zodValidation), }); function closeFormPage() { formPageFunction(); setTableSelectedRow({}); isFormEnabledFunction(false); } function onSubmit() { console.log("onSubmit"); } return ( <>

{title}

closeFormPage()} label="Dashboarda Dön" bgColor="bg-red-700" icon={ } />
onClickAction()} label="Kaydet" bgColor="bg-emerald-700" icon={ } />
{Object.keys(validatedData).length !== 0 && (
{Object.entries(validatedData).map( ([key, value]: [string, any]) => { console.log("key", key); const keyValidation = validationObj[key] || { fieldType: { type: "string" }, required: false, }; const fieldType = keyValidation.fieldType?.type || "string"; if (fieldType === "string" && validationHeaders[key]) { return ( <>
( )} />
); } else if ( fieldType === "integer" && validationHeaders[key] ) { return ( <>
( )} />
); } } )}
)}
); }; export default PageUpdate;