import { BackHistoryButton, ErrorOverlay, FormDatePickerField, FormTextAreaField, FormTextField, LoadingOverlay, } from "@/components"; import { t } from "i18next"; import { SubmitButton } from "@/components"; import { useUnsavedChangesNotifier } from "@/lib/hooks"; import { Button, Form } from "@/ui"; import { ICreateQuote_Request_DTO } from "@shared/contexts"; import { SubmitHandler, useForm } from "react-hook-form"; import { useNavigate } from "react-router-dom"; import { toast } from "react-toastify"; import { useQuotes } from "./hooks"; interface QuoteDataForm extends ICreateQuote_Request_DTO {} export const QuoteCreate = () => { const navigate = useNavigate(); const { useCreate } = useQuotes(); const { mutate, error: mutateError, isError, isPending } = useCreate(); const form = useForm({ defaultValues: { date: new Date(Date.now()).toUTCString(), customer_information: "", reference: "", }, }); const { formState, reset, getValues, handleSubmit } = form; const { isSubmitting, isDirty } = formState; useUnsavedChangesNotifier({ isDirty, }); const onSubmit: SubmitHandler = async (formData) => { try { mutate(formData, { onError: (error) => { console.debug(error); toast.error(error.message); }, onSuccess: (data) => { reset(getValues()); toast.success("Cotización guardada"); navigate(`/quotes/edit/${data.id}`, { relative: "path", replace: true }); }, }); } finally { //setLoading(false); } }; if (isSubmitting) { return ; } if (isError) { return ; } if (isPending) { return ; } return (

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

); };