diff --git a/apps/web-client/src/app/(auth)/forgot-password/page.tsx b/apps/web-client/src/app/(auth)/forgot-password/page.tsx index ab86ff6e..3b1ec812 100644 --- a/apps/web-client/src/app/(auth)/forgot-password/page.tsx +++ b/apps/web-client/src/app/(auth)/forgot-password/page.tsx @@ -243,10 +243,12 @@ export default function ForgotPasswordPage() { placeholder="you@example.com" isInvalid={!!errors.email} errorMessage={errors.email?.message} - {...register('email')} - onChange={(e) => { - register('email').onChange(e); - setValue('email', e.target.value); + name={register('email').name} + onBlur={register('email').onBlur} + onChange={(value) => { + // EN: React Aria onChange receives value string, not event + // VI: React Aria onChange nhận value string, không phải event + setValue('email', value); }} autoComplete="email" autoFocus diff --git a/apps/web-client/src/app/(auth)/login/page.tsx b/apps/web-client/src/app/(auth)/login/page.tsx index b9188cff..2db6e5b1 100644 --- a/apps/web-client/src/app/(auth)/login/page.tsx +++ b/apps/web-client/src/app/(auth)/login/page.tsx @@ -1,6 +1,6 @@ 'use client'; -import { useForm } from 'react-hook-form'; +import { useForm, Controller } from 'react-hook-form'; import { zodResolver } from '@hookform/resolvers/zod'; import { z } from 'zod'; import { useRouter } from 'next/navigation'; @@ -70,9 +70,8 @@ export default function LoginPage() { // EN: React Hook Form setup with Zod resolver // VI: Setup React Hook Form với Zod resolver const { - register, + control, handleSubmit, - setValue, formState: { errors, isSubmitting }, } = useForm({ resolver: zodResolver(loginSchema), @@ -173,44 +172,60 @@ export default function LoginPage() {
{/* EN: Email input field / VI: Trường nhập email */} - { - register('email').onChange(e); - setValue('email', e.target.value); - }} - autoComplete="email" - aria-required="true" + ( + + )} /> {/* EN: Password input field / VI: Trường nhập mật khẩu */}
- { - register('password').onChange(e); - setValue('password', e.target.value); - }} - autoComplete="current-password" - aria-required="true" + ( + + )} />