"use client"; import { notFound } from "next/navigation"; import { ScrollArea } from "../ui/scroll-area"; import { Form } from "./Form"; import { useEffect, useState } from "react"; import get from "lodash.get"; export const FormBetter: React.FC = ({ children, header, onTitle, onLoad, onSubmit, onFooter, showResize, mode, className, onInit, afterLoad, }) => { const [fm, setFM] = useState({ data: null as any, }); const [show, setShow] = useState(true as boolean); if (!show) { notFound(); } useEffect(() => {}, [fm.data]); return (
{typeof fm === "object" && typeof onTitle === "function" ? (
{onTitle(fm)}
) : ( <> )}
{ try { const res = await onLoad(); return res; } catch (ex: any) { setShow(false); throw new Error( get(ex, "response.data.meta.message") || ex.message ); } }, onSubmit, onFooter, showResize, mode, className: cx(className, "top-0 left-0 w-full"), afterLoad, onInit: (form: any) => { setFM(form); const originalRender = form.render; // Buat versi baru dari `local.render` form.render = () => { // Panggil fungsi asli originalRender(); // Tambahkan logika tambahan untuk sinkronisasi setFM({ ...form, submit: form.submit, render: form.render, data: form.data, }); }; form.render(); if (typeof onInit === "function") { onInit(form); } }, }} />
); };