import { zodResolver } from "@hookform/resolvers/zod"; import { useForm } from "react-hook-form"; import { TaxesMultiSelectField } from "@erp/core/components"; import { SelectField, TextAreaField, TextField } from "@repo/rdx-ui/components"; import { Button, Card, CardContent, CardDescription, CardHeader, CardTitle, Form, FormControl, FormField, FormItem, FormLabel, FormMessage, RadioGroup, RadioGroupItem, } from "@repo/shadcn-ui/components"; import { useUnsavedChangesNotifier } from "@erp/core/hooks"; import { GetCustomerByIdResponseDTO } from "@erp/customer-invoices/common"; import { useTranslation } from "../../i18n"; import { CustomerData, CustomerDataUpdateUpdateSchema } from "../../schemas"; interface CustomerFormProps { formId: string; data?: GetCustomerByIdResponseDTO; isPending?: boolean; /** * Callback function to handle form submission. * @param data - The customer data submitted by the form. */ onSubmit?: (data: CustomerData) => void; } export const CustomerEditForm = ({ formId, data, onSubmit, isPending }: CustomerFormProps) => { const { t } = useTranslation(); const form = useForm({ resolver: zodResolver(CustomerDataUpdateUpdateSchema), defaultValues: data, disabled: isPending, }); useUnsavedChangesNotifier({ isDirty: form.formState.isDirty, }); const handleSubmit = (data: CustomerData) => { console.log("Datos del formulario:", data); onSubmit?.(data); }; const handleError = (errors: any) => { console.error("Errores en el formulario:", errors); // Aquí puedes manejar los errores, por ejemplo, mostrar un mensaje al usuario }; const handleCancel = () => { form.reset(data); }; return (
{/* Información básica */} {t("form_groups.basic_info.title")} {t("form_groups.basic_info.description")} ( {t("form_fields.customer_type.label")} {t("form_fields.customer_type.company")} {t("form_fields.customer_type.individual")} )} /> {/* Dirección */} {t("form_groups.address.title")} {t("form_groups.address.description")} {/* Contacto */} {t("form_groups.contact_info.title")} {t("form_groups.contact_info.description")} {/* Configuraciones Adicionales */} {t("form_groups.additional_config.title")} {t("form_groups.additional_config.description")}
); };