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 }) => (
)}
)}
);
};