import { zodResolver } from "@hookform/resolvers/zod" import { Button, Heading, Input, Text, toast } from "@medusajs/ui" import { useForm } from "react-hook-form" import { useTranslation } from "react-i18next" import { useParams } from "react-router-dom" import * as zod from "zod" import { Form } from "../../../../../components/common/form" import { CountrySelect } from "../../../../../components/inputs/country-select" import { RouteFocusModal, useRouteModal, } from "../../../../../components/modals" import { KeyboundForm } from "../../../../../components/utilities/keybound-form" import { useCreateCustomerAddress } from "../../../../../hooks/api/customers" const CreateCustomerAddressSchema = zod.object({ address_name: zod.string().min(1), address_1: zod.string().min(1), address_2: zod.string().optional(), country_code: zod.string().min(2).max(2), city: zod.string().optional(), postal_code: zod.string().optional(), province: zod.string().optional(), company: zod.string().optional(), phone: zod.string().optional(), }) export const CreateCustomerAddressForm = () => { const { t } = useTranslation() const { id } = useParams() const { handleSuccess } = useRouteModal() const form = useForm>({ defaultValues: { address_name: "", address_1: "", address_2: "", city: "", company: "", country_code: "", phone: "", postal_code: "", province: "", }, resolver: zodResolver(CreateCustomerAddressSchema), }) const { mutateAsync, isPending } = useCreateCustomerAddress(id!) const handleSubmit = form.handleSubmit(async (values) => { await mutateAsync( { address_name: values.address_name, address_1: values.address_1, address_2: values.address_2, country_code: values.country_code, city: values.city, postal_code: values.postal_code, province: values.province, company: values.company, phone: values.phone, }, { onSuccess: () => { toast.success(t("customers.addresses.create.successToast")) handleSuccess(`/customers/${id}`) }, onError: (e) => { toast.error(e.message) }, } ) }) return (
{t("customers.addresses.create.header")} {t("customers.addresses.create.hint")}
{ return ( {t("customers.addresses.fields.addressName")} ) }} />
{ return ( {t("fields.address")} ) }} /> { return ( {t("fields.address2")} ) }} /> { return ( {t("fields.postalCode")} ) }} /> { return ( {t("fields.city")} ) }} /> { return ( {t("fields.country")} ) }} /> { return ( {t("fields.state")} ) }} /> { return ( {t("fields.company")} ) }} /> { return ( {t("fields.phone")} ) }} />
) }