84
84
// );
85
85
// }
86
86
87
- import { Formik , Form , Field } from "formik" ;
87
+ import { Formik , Form , Field , validateYupSchema , ErrorMessage } from "formik" ;
88
88
import { logIn } from "../../redux/auth/operations" ;
89
89
import { useDispatch } from "react-redux" ;
90
90
import { useNavigate } from "react-router-dom" ;
@@ -93,6 +93,17 @@ import { useState } from "react";
93
93
import toast from "react-hot-toast" ;
94
94
// import { selectError } from "../../redux/auth/selectror";
95
95
import { unwrapResult } from "@reduxjs/toolkit" ;
96
+ import * as Yup from "yup" ;
97
+
98
+
99
+ const ValidationSchema = Yup . object ( ) . shape ( {
100
+ email : Yup . string ( ) . email ( "Must be a valid email!" ) . required ( "Required" ) ,
101
+ password : Yup . string ( )
102
+ . min ( 8 , "Too short" )
103
+ . max ( 64 , "Too long" )
104
+ . required ( "Required" ) ,
105
+ } ) ;
106
+
96
107
97
108
export default function LoginForm ( ) {
98
109
const dispatch = useDispatch ( ) ;
@@ -129,6 +140,7 @@ export default function LoginForm() {
129
140
password : "" ,
130
141
} }
131
142
onSubmit = { handleSubmit }
143
+ validationSchema = { ValidationSchema }
132
144
>
133
145
< Form className = { css . form } >
134
146
< label htmlFor = "email" />
@@ -138,6 +150,12 @@ export default function LoginForm() {
138
150
placeholder = "Enter your email"
139
151
className = { css . input }
140
152
/>
153
+ < ErrorMessage
154
+ name = "email"
155
+ component = "span"
156
+ className = { css . error }
157
+ />
158
+
141
159
< label htmlFor = "password" />
142
160
< div >
143
161
< Field
@@ -146,6 +164,12 @@ export default function LoginForm() {
146
164
className = { css . input }
147
165
placeholder = "Enter your password"
148
166
/>
167
+ < ErrorMessage
168
+ name = "password"
169
+ component = "span"
170
+ className = { css . error }
171
+ />
172
+
149
173
< button
150
174
type = "button"
151
175
className = { css . eye }
0 commit comments