Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

ContactForm.jsx 2.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. import { Box, Button, Paper, TextField } from '@mui/material';
  2. import { useFormik } from 'formik';
  3. import PropType from 'prop-types';
  4. import React, { useState } from 'react';
  5. import { contactSchema } from '../../../schemas/contactSchema';
  6. import { useCheckoutData } from '../../../store/checkout-context';
  7. import ErrorMessageComponent from '../../mui/ErrorMessageComponent';
  8. const ContactForm = ({ submitHandler }) => {
  9. const [error] = useState({ hasError: false, errorMessage: '' });
  10. const { checkoutStorage } = useCheckoutData();
  11. const handleSubmit = async (values) => {
  12. submitHandler(values.email);
  13. };
  14. const formik = useFormik({
  15. initialValues: {
  16. email: checkoutStorage ? checkoutStorage.userInfo.email : '',
  17. },
  18. validationSchema: contactSchema,
  19. onSubmit: handleSubmit,
  20. validateOnBlur: true,
  21. enableReinitialize: true,
  22. });
  23. return (
  24. <Paper
  25. sx={{ p: 3, width: '90%', ml: 12, mt: 2, backgroundColor: '#f2f2f2' }}
  26. elevation={3}
  27. >
  28. <Box
  29. sx={{
  30. width: '100%',
  31. display: 'flex',
  32. flexDirection: 'column',
  33. }}
  34. >
  35. {error.hasError && <ErrorMessageComponent error={error.errorMessage} />}
  36. <Box
  37. component="form"
  38. onSubmit={formik.handleSubmit}
  39. sx={{ position: 'relative', mt: 1, p: 1 }}
  40. >
  41. <TextField
  42. name="email"
  43. label="Email"
  44. margin="normal"
  45. value={formik.values.email}
  46. onChange={formik.handleChange}
  47. error={formik.touched.email && Boolean(formik.errors.email)}
  48. helperText={formik.touched.email && formik.errors.email}
  49. fullWidth
  50. />
  51. <Button
  52. type="submit"
  53. variant="contained"
  54. sx={{
  55. mt: 3,
  56. mb: 2,
  57. backgroundColor: '#CBA213',
  58. height: 50,
  59. width: 150,
  60. textTransform: 'none',
  61. color: 'white',
  62. }}
  63. >
  64. Submit Details
  65. </Button>
  66. </Box>
  67. </Box>
  68. </Paper>
  69. );
  70. };
  71. ContactForm.propTypes = {
  72. submitHandler: PropType.func,
  73. };
  74. export default ContactForm;