@tanstack/form-core 0.13.5 → 0.13.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/FieldApi.cjs +1 -8
- package/dist/cjs/FieldApi.cjs.map +1 -1
- package/dist/cjs/FieldApi.d.cts +0 -1
- package/dist/cjs/FormApi.cjs +11 -11
- package/dist/cjs/FormApi.cjs.map +1 -1
- package/dist/cjs/FormApi.d.cts +2 -2
- package/dist/cjs/utils.cjs.map +1 -1
- package/dist/cjs/utils.d.cts +1 -1
- package/dist/esm/FieldApi.d.ts +0 -1
- package/dist/esm/FieldApi.js +1 -8
- package/dist/esm/FieldApi.js.map +1 -1
- package/dist/esm/FormApi.d.ts +2 -2
- package/dist/esm/FormApi.js +11 -11
- package/dist/esm/FormApi.js.map +1 -1
- package/dist/esm/utils.d.ts +1 -1
- package/dist/esm/utils.js.map +1 -1
- package/package.json +1 -1
- package/src/FieldApi.ts +2 -19
- package/src/FormApi.ts +24 -28
- package/src/tests/FieldApi.spec.ts +3 -3
- package/src/tests/FieldApi.test-d.ts +60 -0
- package/src/utils.ts +9 -11
|
@@ -602,7 +602,7 @@ describe('field api', () => {
|
|
|
602
602
|
|
|
603
603
|
const unmount = field.mount()
|
|
604
604
|
unmount()
|
|
605
|
-
expect(form.getFieldInfo(field.name).
|
|
605
|
+
expect(form.getFieldInfo(field.name).instance).toBeDefined()
|
|
606
606
|
expect(form.getFieldInfo(field.name)).toBeDefined()
|
|
607
607
|
})
|
|
608
608
|
|
|
@@ -624,8 +624,8 @@ describe('field api', () => {
|
|
|
624
624
|
unmount()
|
|
625
625
|
const info = form.getFieldInfo(field.name)
|
|
626
626
|
subscription()
|
|
627
|
-
expect(info.
|
|
628
|
-
expect(Object.keys(info.
|
|
627
|
+
expect(info.instance).toBeNull()
|
|
628
|
+
expect(Object.keys(info.instance ?? {}).length).toBe(0)
|
|
629
629
|
|
|
630
630
|
// Check that form store has been updated
|
|
631
631
|
expect(callback).toHaveBeenCalledOnce()
|
|
@@ -19,6 +19,66 @@ it('should type value properly', () => {
|
|
|
19
19
|
assertType<'test'>(field.getValue())
|
|
20
20
|
})
|
|
21
21
|
|
|
22
|
+
it('should type value when nothing is passed into constructor', () => {
|
|
23
|
+
type FormValues = {
|
|
24
|
+
name?: string
|
|
25
|
+
age?: number
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const form = new FormApi<FormValues>()
|
|
29
|
+
|
|
30
|
+
const field = new FieldApi({
|
|
31
|
+
form,
|
|
32
|
+
name: 'name' as const,
|
|
33
|
+
})
|
|
34
|
+
|
|
35
|
+
assertType<string | undefined>(field.state.value)
|
|
36
|
+
assertType<'name'>(field.options.name)
|
|
37
|
+
assertType<string | undefined>(field.getValue())
|
|
38
|
+
})
|
|
39
|
+
|
|
40
|
+
it('should type required fields in constructor', () => {
|
|
41
|
+
type FormValues = {
|
|
42
|
+
name: string
|
|
43
|
+
age?: number
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const form = new FormApi<FormValues>({
|
|
47
|
+
defaultValues: {
|
|
48
|
+
name: 'test',
|
|
49
|
+
},
|
|
50
|
+
})
|
|
51
|
+
|
|
52
|
+
const field = new FieldApi({
|
|
53
|
+
form,
|
|
54
|
+
name: 'name' as const,
|
|
55
|
+
})
|
|
56
|
+
|
|
57
|
+
assertType<string>(field.state.value)
|
|
58
|
+
assertType<'name'>(field.options.name)
|
|
59
|
+
assertType<string>(field.getValue())
|
|
60
|
+
})
|
|
61
|
+
|
|
62
|
+
it('should type value properly for completely partial forms', () => {
|
|
63
|
+
type CompletelyPartialFormValues = {
|
|
64
|
+
name?: 'test'
|
|
65
|
+
age?: number
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
const form = new FormApi<CompletelyPartialFormValues>({
|
|
69
|
+
defaultValues: {},
|
|
70
|
+
})
|
|
71
|
+
|
|
72
|
+
const field = new FieldApi({
|
|
73
|
+
form,
|
|
74
|
+
name: 'name' as const,
|
|
75
|
+
})
|
|
76
|
+
|
|
77
|
+
assertType<'test' | undefined>(field.state.value)
|
|
78
|
+
assertType<'name'>(field.options.name)
|
|
79
|
+
assertType<'test' | undefined>(field.getValue())
|
|
80
|
+
})
|
|
81
|
+
|
|
22
82
|
it('should type onChange properly', () => {
|
|
23
83
|
const form = new FormApi({
|
|
24
84
|
defaultValues: {
|
package/src/utils.ts
CHANGED
|
@@ -300,17 +300,15 @@ export type DeepKeys<T, TDepth extends any[] = []> = TDepth['length'] extends 5
|
|
|
300
300
|
? never
|
|
301
301
|
: unknown extends T
|
|
302
302
|
? string
|
|
303
|
-
:
|
|
304
|
-
?
|
|
305
|
-
: T extends
|
|
306
|
-
?
|
|
307
|
-
: T extends
|
|
308
|
-
?
|
|
309
|
-
: T extends
|
|
310
|
-
?
|
|
311
|
-
:
|
|
312
|
-
? (keyof T & string) | DeepKeysPrefix<T, keyof T, TDepth>
|
|
313
|
-
: never
|
|
303
|
+
: T extends readonly any[] & IsTuple<T>
|
|
304
|
+
? AllowedIndexes<T> | DeepKeysPrefix<T, AllowedIndexes<T>, TDepth>
|
|
305
|
+
: T extends any[]
|
|
306
|
+
? DeepKeysPrefix<T, number, TDepth>
|
|
307
|
+
: T extends Date
|
|
308
|
+
? never
|
|
309
|
+
: T extends object
|
|
310
|
+
? (keyof T & string) | DeepKeysPrefix<T, keyof T, TDepth>
|
|
311
|
+
: never
|
|
314
312
|
|
|
315
313
|
type DeepKeysPrefix<
|
|
316
314
|
T,
|