Skip to content

Commit 5415b92

Browse files
authored
Update useForm to accept interfaces (#1649)
1 parent 42ecb10 commit 5415b92

File tree

3 files changed

+21
-16
lines changed

3 files changed

+21
-16
lines changed

packages/react/src/useForm.ts

+5-4
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@ import useRemember from './useRemember'
66
type setDataByObject<TForm> = (data: TForm) => void
77
type setDataByMethod<TForm> = (data: (previousData: TForm) => TForm) => void
88
type setDataByKeyValuePair<TForm> = <K extends keyof TForm>(key: K, value: TForm[K]) => void
9+
type FormDataType = object;
910

10-
export interface InertiaFormProps<TForm extends Record<string, unknown>> {
11+
export interface InertiaFormProps<TForm extends FormDataType> {
1112
data: TForm
1213
isDirty: boolean
1314
errors: Partial<Record<keyof TForm, string>>
@@ -33,12 +34,12 @@ export interface InertiaFormProps<TForm extends Record<string, unknown>> {
3334
delete: (url: string, options?: VisitOptions) => void
3435
cancel: () => void
3536
}
36-
export default function useForm<TForm extends Record<string, unknown>>(initialValues?: TForm): InertiaFormProps<TForm>
37-
export default function useForm<TForm extends Record<string, unknown>>(
37+
export default function useForm<TForm extends FormDataType>(initialValues?: TForm): InertiaFormProps<TForm>
38+
export default function useForm<TForm extends FormDataType>(
3839
rememberKey: string,
3940
initialValues?: TForm,
4041
): InertiaFormProps<TForm>
41-
export default function useForm<TForm extends Record<string, unknown>>(
42+
export default function useForm<TForm extends FormDataType>(
4243
rememberKeyOrInitialValues?: string | TForm,
4344
maybeInitialValues?: TForm,
4445
): InertiaFormProps<TForm> {

packages/vue2/src/useForm.ts

+9-7
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@ import cloneDeep from 'lodash.clonedeep'
33
import isEqual from 'lodash.isequal'
44
import { reactive, watch } from 'vue'
55

6-
interface InertiaFormProps<TForm> {
6+
type FormDataType = object;
7+
8+
interface InertiaFormProps<TForm extends FormDataType> {
79
isDirty: boolean
810
errors: Record<keyof TForm, string>
911
hasErrors: boolean
@@ -29,16 +31,16 @@ interface InertiaFormProps<TForm> {
2931
cancel(): void
3032
}
3133

32-
export type InertiaForm<TForm> = TForm & InertiaFormProps<TForm>
34+
export type InertiaForm<TForm extends FormDataType> = TForm & InertiaFormProps<TForm>
3335

3436
export interface InertiaFormTrait {
35-
form<TForm>(data: TForm): InertiaForm<TForm>
36-
form<TForm>(rememberKey: string, data: TForm): InertiaForm<TForm>
37+
form<TForm extends FormDataType>(data: TForm): InertiaForm<TForm>
38+
form<TForm extends FormDataType>(rememberKey: string, data: TForm): InertiaForm<TForm>
3739
}
3840

39-
export default function useForm<TForm>(data: TForm | (() => TForm)): InertiaForm<TForm>
40-
export default function useForm<TForm>(rememberKey: string, data: TForm | (() => TForm)): InertiaForm<TForm>
41-
export default function useForm<TForm>(...args): InertiaForm<TForm> {
41+
export default function useForm<TForm extends FormDataType>(data: TForm | (() => TForm)): InertiaForm<TForm>
42+
export default function useForm<TForm extends FormDataType>(rememberKey: string, data: TForm | (() => TForm)): InertiaForm<TForm>
43+
export default function useForm<TForm extends FormDataType>(...args): InertiaForm<TForm> {
4244
const rememberKey = typeof args[0] === 'string' ? args[0] : null
4345
const data = (typeof args[0] === 'string' ? args[1] : args[0]) || {}
4446
const restored = rememberKey ? (router.restore(rememberKey) as { data: any; errors: any }) : null

packages/vue3/src/useForm.ts

+7-5
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@ import cloneDeep from 'lodash.clonedeep'
33
import isEqual from 'lodash.isequal'
44
import { reactive, watch } from 'vue'
55

6-
interface InertiaFormProps<TForm extends Record<string, unknown>> {
6+
type FormDataType = object;
7+
8+
interface InertiaFormProps<TForm extends FormDataType> {
79
isDirty: boolean
810
errors: Partial<Record<keyof TForm, string>>
911
hasErrors: boolean
@@ -29,14 +31,14 @@ interface InertiaFormProps<TForm extends Record<string, unknown>> {
2931
cancel(): void
3032
}
3133

32-
export type InertiaForm<TForm extends Record<string, unknown>> = TForm & InertiaFormProps<TForm>
34+
export type InertiaForm<TForm extends FormDataType> = TForm & InertiaFormProps<TForm>
3335

34-
export default function useForm<TForm extends Record<string, unknown>>(data: TForm | (() => TForm)): InertiaForm<TForm>
35-
export default function useForm<TForm extends Record<string, unknown>>(
36+
export default function useForm<TForm extends FormDataType>(data: TForm | (() => TForm)): InertiaForm<TForm>
37+
export default function useForm<TForm extends FormDataType>(
3638
rememberKey: string,
3739
data: TForm | (() => TForm),
3840
): InertiaForm<TForm>
39-
export default function useForm<TForm extends Record<string, unknown>>(
41+
export default function useForm<TForm extends FormDataType>(
4042
rememberKeyOrData: string | TForm | (() => TForm),
4143
maybeData?: TForm | (() => TForm),
4244
): InertiaForm<TForm> {

0 commit comments

Comments
 (0)