import { Region } from "@medusajs/medusa" import { Controller, UseFormReturn } from "react-hook-form" import { useTranslation } from "react-i18next" import IncludesTaxTooltip from "../../../../../components/atoms/includes-tax-tooltip" import Switch from "../../../../../components/atoms/switch" import MetadataForm, { MetadataFormType, } from "../../../../../components/forms/general/metadata-form" import PriceFormInput from "../../../../../components/forms/general/prices-form/price-form-input" import InputHeader from "../../../../../components/fundamentals/input-header" import InputField from "../../../../../components/molecules/input" import { NextSelect } from "../../../../../components/molecules/select/next-select" import { Option, ShippingOptionPriceType } from "../../../../../types/shared" import FormValidator from "../../../../../utils/form-validator" import { nestedForm } from "../../../../../utils/nested-form" import { useShippingOptionFormData } from "./use-shipping-option-form-data" type Requirement = { amount: number | null id: string | null } export type ShippingOptionFormType = { store_option: boolean name: string | null price_type: ShippingOptionPriceType | null amount: number | null shipping_profile: Option | null fulfillment_provider: Option | null requirements: { min_subtotal: Requirement | null max_subtotal: Requirement | null } metadata: MetadataFormType } type Props = { form: UseFormReturn region: Region isEdit?: boolean } const ShippingOptionForm = ({ form, region, isEdit = false }: Props) => { const { register, watch, control, formState: { errors }, } = form const { t } = useTranslation() const { shippingProfileOptions, fulfillmentOptions } = useShippingOptionFormData(region.id) return (

{t("shipping-option-form-visible-in-store", "Visible in store")}

{ return }} />

{t( "shipping-option-form-enable-or-disable-the-shipping-option-visiblity-in-store", "Enable or disable the shipping option visiblity in store." )}

{t("shipping-option-form-details", "Details")}

{ return ( ) }} /> {watch("price_type")?.value === "flat_rate" && ( { return (
} />
) }} /> )}
{!isEdit && ( <> { return ( ) }} /> { return ( ) }} /> )}

{t("shipping-option-form-requirements", "Requirements")}

{ if (value === null) { return true } const maxSubtotal = form.getValues( "requirements.max_subtotal.amount" ) if (maxSubtotal && value > maxSubtotal) { return t( "shipping-option-form-min-subtotal-must-be-less-than-max-subtotal", "Min. subtotal must be less than max. subtotal" ) } return true }, }} render={({ field: { value, onChange } }) => { return (
} />
) }} /> { if (value === null) { return true } const minSubtotal = form.getValues( "requirements.min_subtotal.amount" ) if (minSubtotal && value < minSubtotal) { return "Max. subtotal must be greater than min. subtotal" } return true }, }} render={({ field: { value, onChange, ref } }) => { return (
} />
) }} />

{t("shipping-option-form-metadata", "Metadata")}

) } export default ShippingOptionForm