import Spinner from '@components/admin/Spinner.js'; import { Form } from '@components/common/form/Form.js'; import { InputField } from '@components/common/form/InputField.js'; import { NumberField } from '@components/common/form/NumberField.js'; import { ToggleField } from '@components/common/form/ToggleField.js'; import { Button } from '@components/common/ui/Button.js'; import React from 'react'; import { useForm } from 'react-hook-form'; import { toast } from 'react-toastify'; import { useQuery } from 'urql'; import { TaxRate } from './Rate.js'; const MethodsQuery = ` query Methods { shippingMethods { value: shippingMethodId label: name } createShippingMethodApi: url(routeId: "createShippingMethod") } `; interface MethodFormProps { saveRateApi: string; closeModal: () => void; getTaxClasses: (options?: { requestPolicy?: string }) => Promise | void; rate?: TaxRate; } function RateForm({ saveRateApi, closeModal, getTaxClasses, rate }: MethodFormProps) { const form = useForm({ shouldUnregister: true }); const [saving, setSaving] = React.useState(false); const [result] = useQuery({ query: MethodsQuery }); if (result.fetching) { return (
); } return (
{ toast.error(error); setSaving(false); }} onSuccess={async (response) => { if (!response.error) { await getTaxClasses({ requestPolicy: 'network-only' }); closeModal(); toast.success('Tax rate has been saved successfully!'); } else { } setSaving(false); }} >
); } export { RateForm };