Skip to content

Commit 799c3c2

Browse files
authored
Ensure Consistent and Type-Safe Form Handling in useForm (#46)
* refactor: use Partial type for form data in authentication and profile components * fix: change form data types from Partial to Required
1 parent bc4ed26 commit 799c3c2

File tree

7 files changed

+12
-7
lines changed

7 files changed

+12
-7
lines changed

resources/js/components/delete-user.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, Di
1212

1313
export default function DeleteUser() {
1414
const passwordInput = useRef<HTMLInputElement>(null);
15-
const { data, setData, delete: destroy, processing, reset, errors, clearErrors } = useForm({ password: '' });
15+
const { data, setData, delete: destroy, processing, reset, errors, clearErrors } = useForm<Required<{ password: string }>>({ password: '' });
1616

1717
const deleteUser: FormEventHandler = (e) => {
1818
e.preventDefault();

resources/js/pages/auth/confirm-password.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { Label } from '@/components/ui/label';
1010
import AuthLayout from '@/layouts/auth-layout';
1111

1212
export default function ConfirmPassword() {
13-
const { data, setData, post, processing, errors, reset } = useForm({
13+
const { data, setData, post, processing, errors, reset } = useForm<Required<{ password: string }>>({
1414
password: '',
1515
});
1616

resources/js/pages/auth/forgot-password.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { Label } from '@/components/ui/label';
1111
import AuthLayout from '@/layouts/auth-layout';
1212

1313
export default function ForgotPassword({ status }: { status?: string }) {
14-
const { data, setData, post, processing, errors } = useForm({
14+
const { data, setData, post, processing, errors } = useForm<Required<{ email: string }>>({
1515
email: '',
1616
});
1717

resources/js/pages/auth/login.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ interface LoginProps {
2222
}
2323

2424
export default function Login({ status, canResetPassword }: LoginProps) {
25-
const { data, setData, post, processing, errors, reset } = useForm<LoginForm>({
25+
const { data, setData, post, processing, errors, reset } = useForm<Required<LoginForm>>({
2626
email: '',
2727
password: '',
2828
remember: false,

resources/js/pages/auth/register.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ type RegisterForm = {
1717
};
1818

1919
export default function Register() {
20-
const { data, setData, post, processing, errors, reset } = useForm<RegisterForm>({
20+
const { data, setData, post, processing, errors, reset } = useForm<Required<RegisterForm>>({
2121
name: '',
2222
email: '',
2323
password: '',

resources/js/pages/auth/reset-password.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ type ResetPasswordForm = {
2121
};
2222

2323
export default function ResetPassword({ token, email }: ResetPasswordProps) {
24-
const { data, setData, post, processing, errors, reset } = useForm<ResetPasswordForm>({
24+
const { data, setData, post, processing, errors, reset } = useForm<Required<ResetPasswordForm>>({
2525
token: token,
2626
email: email,
2727
password: '',

resources/js/pages/settings/profile.tsx

+6-1
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,15 @@ const breadcrumbs: BreadcrumbItem[] = [
1919
},
2020
];
2121

22+
interface ProfileForm {
23+
name: string;
24+
email: string;
25+
}
26+
2227
export default function Profile({ mustVerifyEmail, status }: { mustVerifyEmail: boolean; status?: string }) {
2328
const { auth } = usePage<SharedData>().props;
2429

25-
const { data, setData, patch, errors, processing, recentlySuccessful } = useForm({
30+
const { data, setData, patch, errors, processing, recentlySuccessful } = useForm<Required<ProfileForm>>({
2631
name: auth.user.name,
2732
email: auth.user.email,
2833
});

0 commit comments

Comments
 (0)