import { BackHistoryButton, FormDatePickerField, FormGroup, FormTextAreaField, FormTextField, LoadingOverlay, } from "@/components"; import { t } from "i18next"; import { SubmitButton } from "@/components"; import { useUnsavedChangesNotifier } from "@/lib/hooks"; import { Button, Form, Separator } from "@/ui"; import { useToast } from "@/ui/use-toast"; import { joiResolver } from "@hookform/resolvers/joi"; import { ICreateQuote_Request_DTO } from "@shared/contexts"; import Joi from "joi"; import { useMemo } from "react"; import { SubmitHandler, useForm } from "react-hook-form"; import { useNavigate } from "react-router-dom"; import SpanishJoiMessages from "../../spanish-joi-messages.json"; import { useQuotes } from "./hooks"; interface QuoteDataForm extends ICreateQuote_Request_DTO {} export const QuoteCreate = () => { const navigate = useNavigate(); const { toast } = useToast(); const { useCreate } = useQuotes(); const { mutate, isPending } = useCreate(); const defaultValues = useMemo( () => ({ date: new Date(Date.now()).toUTCString(), customer_reference: "", customer_information: "", //reference: "", }), [] ); const form = useForm({ mode: "onBlur", defaultValues, resolver: joiResolver( Joi.object({ customer_reference: Joi.string(), date: Joi.date().required(), customer_information: Joi.string().required(), }), { messages: { es: SpanishJoiMessages, }, } ), }); 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({ title: t("common.error"), description: error.message, variant: "destructive", }); }, onSuccess: (data) => { reset(getValues()); toast({ title: t("quotes.notifications.created"), variant: "default", }); navigate(`/quotes/edit/${data.id}`, { relative: "path" }); }, }); } finally { //setLoading(false); } }; if (isSubmitting) { return ; } /*if (isError) { return ; }*/ if (isPending) { return ; } return (

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

} >
); };