@@ -97,49 +97,49 @@ export function SetNewPasswordForm({
9797} : SetNewPasswordFormProps ) {
9898 const [ password , setPassword ] = useState ( '' )
9999 const [ confirmPassword , setConfirmPassword ] = useState ( '' )
100- const [ validationMessage , setValidationMessage ] = useState ( '' )
100+ const [ validationMessages , setValidationMessages ] = useState < string [ ] > ( [ ] )
101101 const [ showPassword , setShowPassword ] = useState ( false )
102102 const [ showConfirmPassword , setShowConfirmPassword ] = useState ( false )
103103
104104 const handleSubmit = async ( e : React . FormEvent ) => {
105105 e . preventDefault ( )
106106
107+ const errors : string [ ] = [ ]
108+
107109 if ( password . length < 8 ) {
108- setValidationMessage ( 'Password must be at least 8 characters long' )
109- return
110+ errors . push ( 'Password must be at least 8 characters long' )
110111 }
111112
112113 if ( password . length > 100 ) {
113- setValidationMessage ( 'Password must not exceed 100 characters' )
114- return
114+ errors . push ( 'Password must not exceed 100 characters' )
115115 }
116116
117117 if ( ! / [ A - Z ] / . test ( password ) ) {
118- setValidationMessage ( 'Password must contain at least one uppercase letter' )
119- return
118+ errors . push ( 'Password must contain at least one uppercase letter' )
120119 }
121120
122121 if ( ! / [ a - z ] / . test ( password ) ) {
123- setValidationMessage ( 'Password must contain at least one lowercase letter' )
124- return
122+ errors . push ( 'Password must contain at least one lowercase letter' )
125123 }
126124
127125 if ( ! / [ 0 - 9 ] / . test ( password ) ) {
128- setValidationMessage ( 'Password must contain at least one number' )
129- return
126+ errors . push ( 'Password must contain at least one number' )
130127 }
131128
132129 if ( ! / [ ^ A - Z a - z 0 - 9 ] / . test ( password ) ) {
133- setValidationMessage ( 'Password must contain at least one special character' )
134- return
130+ errors . push ( 'Password must contain at least one special character' )
135131 }
136132
137133 if ( password !== confirmPassword ) {
138- setValidationMessage ( 'Passwords do not match' )
134+ errors . push ( 'Passwords do not match' )
135+ }
136+
137+ if ( errors . length > 0 ) {
138+ setValidationMessages ( errors )
139139 return
140140 }
141141
142- setValidationMessage ( '' )
142+ setValidationMessages ( [ ] )
143143 onSubmit ( password )
144144 }
145145
@@ -162,7 +162,10 @@ export function SetNewPasswordForm({
162162 onChange = { ( e ) => setPassword ( e . target . value ) }
163163 required
164164 placeholder = 'Enter new password'
165- className = { cn ( 'pr-10' , validationMessage && 'border-red-500 focus:border-red-500' ) }
165+ className = { cn (
166+ 'pr-10' ,
167+ validationMessages . length > 0 && 'border-red-500 focus:border-red-500'
168+ ) }
166169 />
167170 < button
168171 type = 'button'
@@ -190,7 +193,10 @@ export function SetNewPasswordForm({
190193 onChange = { ( e ) => setConfirmPassword ( e . target . value ) }
191194 required
192195 placeholder = 'Confirm new password'
193- className = { cn ( 'pr-10' , validationMessage && 'border-red-500 focus:border-red-500' ) }
196+ className = { cn (
197+ 'pr-10' ,
198+ validationMessages . length > 0 && 'border-red-500 focus:border-red-500'
199+ ) }
194200 />
195201 < button
196202 type = 'button'
@@ -203,9 +209,11 @@ export function SetNewPasswordForm({
203209 </ div >
204210 </ div >
205211
206- { validationMessage && (
212+ { validationMessages . length > 0 && (
207213 < div className = 'mt-1 space-y-1 text-red-400 text-xs' >
208- < p > { validationMessage } </ p >
214+ { validationMessages . map ( ( error , index ) => (
215+ < p key = { index } > { error } </ p >
216+ ) ) }
209217 </ div >
210218 ) }
211219
0 commit comments