diff --git a/src/App.js b/src/App.js deleted file mode 100644 index 05e5df7..0000000 --- a/src/App.js +++ /dev/null @@ -1,5 +0,0 @@ -function App() { - return
form validation homework
; -} - -export default App; diff --git a/src/App.jsx b/src/App.jsx new file mode 100644 index 0000000..10eaf3f --- /dev/null +++ b/src/App.jsx @@ -0,0 +1,12 @@ +import './index.css' +import ContactForm from './ContactForm'; +function App() { + return
+

form validation homework

+ +
; +} + +export default App; + + diff --git a/src/ContactForm.jsx b/src/ContactForm.jsx new file mode 100644 index 0000000..8a67ad9 --- /dev/null +++ b/src/ContactForm.jsx @@ -0,0 +1,95 @@ +import TextField from '@mui/material/TextField'; +import Button from '@mui/material/Button'; +import * as Yup from 'yup'; +import { Formik, Form } from 'formik'; + +function ContactForm() { + const validationSchema = Yup.object().shape({ + name: Yup.string() + .min(4, ' name is too short') + .max(16, 'name is too long') + .required('name is required'), + email: Yup.string() + .email('invalid email') + .required('email is required'), + message: Yup.string() + .min(30, ' the message is too short') + .max(300, 'the message too long') + .required('message is required'), + phone: Yup.string() + .matches( + /^(((?:\+|00)964)|(0)*)7\d{9}$/gm, + "phone number is invalid" + ) + .required('number is required'), + }) + return ( +
+ console.log(values)} + validationSchema={validationSchema} + > + {({ values, errors, touched, handleChange }) => ( +
+ + + + + + + + )} +
+ + +
+ ) + +} + +export default ContactForm; \ No newline at end of file