import { Box, Button, Card, TextField } from '@mui/material'; import { useFormik } from 'formik'; import { useTranslation } from 'next-i18next'; import { useRouter } from 'next/router'; import { useState, FC } from 'react'; import { registerSchema } from '../../../schemas/shippingDetailsSchema'; import { useUserData } from '../../../store/user-context'; import ErrorMessageComponent from '../../mui/ErrorMessageComponent'; interface FormValues { fullName: string; address: string; address2: string; city: string; country: string; postcode: string; } interface Props { submitHandler: (x: FormValues) => void; backBtn: boolean; isCheckout: boolean; enableBtn: boolean; } const ShippingDetailsForm: FC = ({ submitHandler, backBtn = false, isCheckout = false, enableBtn = true, }) => { const { t } = useTranslation('addressForm'); const [error] = useState({ hasError: false, errorMessage: '' }); const { userStorage } = useUserData(); const router = useRouter(); const formikSubmitHandler = async (values: FormValues) => { submitHandler(values); }; const formik = useFormik({ initialValues: { fullName: userStorage ? userStorage.fullName : '', address: userStorage ? userStorage.address : '', address2: userStorage ? userStorage.address2 : '', city: userStorage ? userStorage.city : '', country: userStorage ? userStorage.country : '', postcode: userStorage ? userStorage.postcode : '', }, validationSchema: registerSchema, onSubmit: formikSubmitHandler, validateOnBlur: true, enableReinitialize: true, }); return ( {error.hasError && } {backBtn && ( )} ); }; export default ShippingDetailsForm;