import { AppBreadcrumb, AppContent } from "@repo/rdx-ui/components"; import { useNavigate } from "react-router-dom"; import { FormCommitButtonGroup, UnsavedChangesProvider, useHookForm } from "@erp/core/hooks"; import { showErrorToast, showSuccessToast } from "@repo/rdx-ui/helpers"; import { FieldErrors, FormProvider } from "react-hook-form"; import { CustomerEditForm, ErrorAlert } from "../../components"; import { useCreateCustomer } from "../../hooks"; import { useTranslation } from "../../i18n"; import { CustomerFormData, CustomerFormSchema, defaultCustomerFormData } from "../../schemas"; export const CustomerCreate = () => { const { t } = useTranslation(); const navigate = useNavigate(); // 1) Estado de creación (mutación) const { mutate, isPending: isCreating, isError: isCreateError, error: createError, } = useCreateCustomer(); // 2) Form hook const form = useHookForm({ resolverSchema: CustomerFormSchema, initialValues: defaultCustomerFormData, disabled: isCreating, }); // 3) Submit con navegación condicionada por éxito const handleSubmit = (formData: CustomerFormData) => { mutate( { data: formData }, { onSuccess(data) { showSuccessToast(t("pages.create.successTitle"), t("pages.create.successMsg")); // 🔹 limpiar el form e isDirty pasa a false form.reset(defaultCustomerFormData); navigate("/customers/list", { state: { customerId: data.id, isNew: true }, replace: true, }); }, onError(error) { showErrorToast(t("pages.create.errorTitle"), error.message); }, } ); }; const handleError = (errors: FieldErrors) => { console.error("Errores en el formulario:", errors); // Aquí puedes manejar los errores, por ejemplo, mostrar un mensaje al usuario }; const handleBack = () => { navigate(-1); }; return ( <>

{t("pages.create.title")}

{t("pages.create.description")}

handleBack()} />
{/* Alerta de error de actualización (si ha fallado el último intento) */} {isCreateError && ( )}
); };