import { FormControlLabel, FormLabel, Grid, InputAdornment, Radio, RadioGroup, TextField, } from '@mui/material'; import LoadingButton from '@mui/lab/LoadingButton'; import { useQuery } from '@tanstack/react-query'; import { Field, Form, Formik } from 'formik'; import * as Yup from 'yup'; import { Layout } from '../../layout/Layout'; import { Spinner } from '../../components/spinner/Spinner'; import { useNavigate, useParams } from 'react-router-dom'; import { ParcelService } from './ParcelService'; import { Parcel } from './Parcel'; export const ParcelEdit = () => { const parent = { label: 'Parcels', to: '..' }; const radioOptions = [ { label: 'Inches', value: 'in' }, { label: 'Centimeters', value: 'cm' }, ]; const inputProps = (values) => { return { endAdornment: ( {values.distance_unit} ), }; }; const { id } = useParams(); const navigate = useNavigate(); const { data, isLoading } = useQuery({ queryKey: [`parcel-${id}`], queryFn: () => ParcelService.show(id), enabled: !!id, }); const validationSchema = Yup.object().shape({ title: Yup.string().required('Name is required.'), length: Yup.number().required('Length is required.').min(0), width: Yup.number().required('Width is required.').min(0), height: Yup.number().required('Height is required.').min(0), distance_unit: Yup.string().required('Distance unit is required.'), }); return ( {id && isLoading && } {(data || !id) && ( { if (id) { ParcelService.update(id, { ...values }).then(() => { setSubmitting(false); }); } else { ParcelService.store({ ...values }).then( (response) => { if (response.id) { navigate(`../${response.id}`); } setSubmitting(false); } ); } }} validationSchema={validationSchema} > {({ isSubmitting, errors, touched, values }) => (
Distance unit {radioOptions.map((option) => ( } label={option.label} /> ))} {id ? 'Update' : 'Save'}
)}
)}
); };