Skip to content

Commit a0dd465

Browse files
committed
fix(core): form options prop combination errors
1 parent 1e58e57 commit a0dd465

File tree

2 files changed

+95
-30
lines changed

2 files changed

+95
-30
lines changed

packages/form-core/src/formOptions.ts

Lines changed: 26 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -21,21 +21,19 @@ without losing the benefits from the TOptions generic.
2121
*/
2222

2323
export function formOptions<
24-
TOptions extends Partial<
25-
FormOptions<
26-
TFormData,
27-
TOnMount,
28-
TOnChange,
29-
TOnChangeAsync,
30-
TOnBlur,
31-
TOnBlurAsync,
32-
TOnSubmit,
33-
TOnSubmitAsync,
34-
TOnDynamic,
35-
TOnDynamicAsync,
36-
TOnServer,
37-
TSubmitMeta
38-
>
24+
TOptions extends FormOptions<
25+
TFormData,
26+
TOnMount,
27+
TOnChange,
28+
TOnChangeAsync,
29+
TOnBlur,
30+
TOnBlurAsync,
31+
TOnSubmit,
32+
TOnSubmitAsync,
33+
TOnDynamic,
34+
TOnDynamicAsync,
35+
TOnServer,
36+
TSubmitMeta
3937
>,
4038
TFormData,
4139
TOnMount extends undefined | FormValidateOrFn<TFormData>,
@@ -50,21 +48,19 @@ export function formOptions<
5048
TOnServer extends undefined | FormAsyncValidateOrFn<TFormData>,
5149
TSubmitMeta = never,
5250
>(
53-
defaultOpts: Partial<
54-
FormOptions<
55-
TFormData,
56-
TOnMount,
57-
TOnChange,
58-
TOnChangeAsync,
59-
TOnBlur,
60-
TOnBlurAsync,
61-
TOnSubmit,
62-
TOnSubmitAsync,
63-
TOnDynamic,
64-
TOnDynamicAsync,
65-
TOnServer,
66-
TSubmitMeta
67-
>
51+
defaultOpts: FormOptions<
52+
TFormData,
53+
TOnMount,
54+
TOnChange,
55+
TOnChangeAsync,
56+
TOnBlur,
57+
TOnBlurAsync,
58+
TOnSubmit,
59+
TOnSubmitAsync,
60+
TOnDynamic,
61+
TOnDynamicAsync,
62+
TOnServer,
63+
TSubmitMeta
6864
> &
6965
TOptions,
7066
): TOptions {

packages/form-core/tests/formOptions.test-d.ts

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -323,4 +323,73 @@ describe('formOptions', () => {
323323
(undefined | 'Too short!' | 'needs formId')[]
324324
>()
325325
})
326+
327+
it('should allow form options to be passed to form with submit logic, and validators', () => {
328+
type FormData = {
329+
firstName: string
330+
lastName: string
331+
}
332+
333+
const formOpts = formOptions({
334+
defaultValues: {
335+
firstName: '',
336+
lastName: '',
337+
} as FormData,
338+
onSubmit: (data) => {
339+
console.log(data)
340+
},
341+
validators: {
342+
onSubmit: (data) => {},
343+
},
344+
})
345+
346+
const form = new FormApi(formOpts)
347+
})
348+
349+
it('should allow form options to be passed to form with submit logic, and listeners', () => {
350+
type FormData = {
351+
firstName: string
352+
lastName: string
353+
}
354+
355+
const formOpts = formOptions({
356+
defaultValues: {
357+
firstName: '',
358+
lastName: '',
359+
} as FormData,
360+
onSubmit: (data) => {
361+
console.log(data)
362+
},
363+
listeners: {
364+
onSubmit: (data) => {},
365+
},
366+
})
367+
368+
const form = new FormApi(formOpts)
369+
})
370+
371+
it('should allow form options to be passed to form with submit logic, listeners, and validators', () => {
372+
type FormData = {
373+
firstName: string
374+
lastName: string
375+
}
376+
377+
const formOpts = formOptions({
378+
defaultValues: {
379+
firstName: '',
380+
lastName: '',
381+
} as FormData,
382+
onSubmit: (data) => {
383+
console.log(data)
384+
},
385+
listeners: {
386+
onSubmit: (data) => {},
387+
},
388+
validators: {
389+
onSubmit: (data) => {},
390+
},
391+
})
392+
393+
const form = new FormApi(formOpts)
394+
})
326395
})

0 commit comments

Comments
 (0)