@tanstack/solid-form 0.42.1 → 0.43.1

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.
@@ -2,43 +2,168 @@ import { FormApi, functionalUpdate } from '@tanstack/form-core'
2
2
  import { createComputed, onMount } from 'solid-js'
3
3
  import { useStore } from '@tanstack/solid-store'
4
4
  import { Field, createField } from './createField'
5
+ import type {
6
+ FormAsyncValidateOrFn,
7
+ FormOptions,
8
+ FormState,
9
+ FormValidateOrFn,
10
+ } from '@tanstack/form-core'
5
11
  import type { JSXElement } from 'solid-js'
6
12
  import type { CreateField, FieldComponent } from './createField'
7
- import type { FormOptions, FormState, Validator } from '@tanstack/form-core'
8
13
 
9
14
  type NoInfer<T> = [T][T extends any ? 0 : never]
10
15
 
11
16
  export interface SolidFormApi<
12
- TFormData,
13
- TFormValidator extends Validator<TFormData, unknown> | undefined = undefined,
17
+ TParentData,
18
+ TFormOnMount extends undefined | FormValidateOrFn<TParentData>,
19
+ TFormOnChange extends undefined | FormValidateOrFn<TParentData>,
20
+ TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
21
+ TFormOnBlur extends undefined | FormValidateOrFn<TParentData>,
22
+ TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
23
+ TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>,
24
+ TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
25
+ TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>,
14
26
  > {
15
- Field: FieldComponent<TFormData, TFormValidator>
16
- createField: CreateField<TFormData, TFormValidator>
17
- useStore: <TSelected = NoInfer<FormState<TFormData>>>(
18
- selector?: (state: NoInfer<FormState<TFormData>>) => TSelected,
27
+ Field: FieldComponent<
28
+ TParentData,
29
+ TFormOnMount,
30
+ TFormOnChange,
31
+ TFormOnChangeAsync,
32
+ TFormOnBlur,
33
+ TFormOnBlurAsync,
34
+ TFormOnSubmit,
35
+ TFormOnSubmitAsync,
36
+ TFormOnServer
37
+ >
38
+ createField: CreateField<
39
+ TParentData,
40
+ TFormOnMount,
41
+ TFormOnChange,
42
+ TFormOnChangeAsync,
43
+ TFormOnBlur,
44
+ TFormOnBlurAsync,
45
+ TFormOnSubmit,
46
+ TFormOnSubmitAsync,
47
+ TFormOnServer
48
+ >
49
+ useStore: <
50
+ TSelected = NoInfer<
51
+ FormState<
52
+ TParentData,
53
+ TFormOnMount,
54
+ TFormOnChange,
55
+ TFormOnChangeAsync,
56
+ TFormOnBlur,
57
+ TFormOnBlurAsync,
58
+ TFormOnSubmit,
59
+ TFormOnSubmitAsync,
60
+ TFormOnServer
61
+ >
62
+ >,
63
+ >(
64
+ selector?: (
65
+ state: NoInfer<
66
+ FormState<
67
+ TParentData,
68
+ TFormOnMount,
69
+ TFormOnChange,
70
+ TFormOnChangeAsync,
71
+ TFormOnBlur,
72
+ TFormOnBlurAsync,
73
+ TFormOnSubmit,
74
+ TFormOnSubmitAsync,
75
+ TFormOnServer
76
+ >
77
+ >,
78
+ ) => TSelected,
19
79
  ) => () => TSelected
20
- Subscribe: <TSelected = NoInfer<FormState<TFormData>>>(props: {
21
- selector?: (state: NoInfer<FormState<TFormData>>) => TSelected
80
+ Subscribe: <
81
+ TSelected = NoInfer<
82
+ FormState<
83
+ TParentData,
84
+ TFormOnMount,
85
+ TFormOnChange,
86
+ TFormOnChangeAsync,
87
+ TFormOnBlur,
88
+ TFormOnBlurAsync,
89
+ TFormOnSubmit,
90
+ TFormOnSubmitAsync,
91
+ TFormOnServer
92
+ >
93
+ >,
94
+ >(props: {
95
+ selector?: (
96
+ state: NoInfer<
97
+ FormState<
98
+ TParentData,
99
+ TFormOnMount,
100
+ TFormOnChange,
101
+ TFormOnChangeAsync,
102
+ TFormOnBlur,
103
+ TFormOnBlurAsync,
104
+ TFormOnSubmit,
105
+ TFormOnSubmitAsync,
106
+ TFormOnServer
107
+ >
108
+ >,
109
+ ) => TSelected
22
110
  children: ((state: () => NoInfer<TSelected>) => JSXElement) | JSXElement
23
111
  }) => JSXElement
24
112
  }
25
113
 
26
114
  export function createForm<
27
115
  TParentData,
28
- TFormValidator extends
29
- | Validator<TParentData, unknown>
30
- | undefined = undefined,
31
- >(opts?: () => FormOptions<TParentData, TFormValidator>) {
116
+ TFormOnMount extends undefined | FormValidateOrFn<TParentData>,
117
+ TFormOnChange extends undefined | FormValidateOrFn<TParentData>,
118
+ TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
119
+ TFormOnBlur extends undefined | FormValidateOrFn<TParentData>,
120
+ TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
121
+ TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>,
122
+ TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
123
+ TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>,
124
+ >(
125
+ opts?: () => FormOptions<
126
+ TParentData,
127
+ TFormOnMount,
128
+ TFormOnChange,
129
+ TFormOnChangeAsync,
130
+ TFormOnBlur,
131
+ TFormOnBlurAsync,
132
+ TFormOnSubmit,
133
+ TFormOnSubmitAsync,
134
+ TFormOnServer
135
+ >,
136
+ ) {
32
137
  const options = opts?.()
33
- const api = new FormApi<TParentData, TFormValidator>(options)
34
- const extendedApi: typeof api & SolidFormApi<TParentData, TFormValidator> =
35
- api as never
138
+ const api = new FormApi<
139
+ TParentData,
140
+ TFormOnMount,
141
+ TFormOnChange,
142
+ TFormOnChangeAsync,
143
+ TFormOnBlur,
144
+ TFormOnBlurAsync,
145
+ TFormOnSubmit,
146
+ TFormOnSubmitAsync,
147
+ TFormOnServer
148
+ >(options)
149
+ const extendedApi: typeof api &
150
+ SolidFormApi<
151
+ TParentData,
152
+ TFormOnMount,
153
+ TFormOnChange,
154
+ TFormOnChangeAsync,
155
+ TFormOnBlur,
156
+ TFormOnBlurAsync,
157
+ TFormOnSubmit,
158
+ TFormOnSubmitAsync,
159
+ TFormOnServer
160
+ > = api as never
36
161
 
37
162
  extendedApi.Field = (props) => <Field {...props} form={api} />
38
163
  extendedApi.createField = (props) =>
39
164
  createField(() => {
40
165
  return { ...props(), form: api }
41
- })
166
+ }) as never
42
167
  extendedApi.useStore = (selector) => useStore(api.store, selector)
43
168
  extendedApi.Subscribe = (props) =>
44
169
  functionalUpdate(props.children, useStore(api.store, props.selector))
package/src/types.ts CHANGED
@@ -2,25 +2,56 @@ import type {
2
2
  DeepKeys,
3
3
  DeepValue,
4
4
  FieldApiOptions,
5
- Validator,
5
+ FieldAsyncValidateOrFn,
6
+ FieldValidateOrFn,
7
+ FormAsyncValidateOrFn,
8
+ FormValidateOrFn,
6
9
  } from '@tanstack/form-core'
7
10
 
8
11
  export type CreateFieldOptions<
9
12
  TParentData,
10
13
  TName extends DeepKeys<TParentData>,
11
- TFieldValidator extends
12
- | Validator<DeepValue<TParentData, TName>, unknown>
13
- | undefined = undefined,
14
- TFormValidator extends
15
- | Validator<TParentData, unknown>
16
- | undefined = undefined,
17
- TData extends DeepValue<TParentData, TName> = DeepValue<TParentData, TName>,
14
+ TData extends DeepValue<TParentData, TName>,
15
+ TOnMount extends undefined | FieldValidateOrFn<TParentData, TName, TData>,
16
+ TOnChange extends undefined | FieldValidateOrFn<TParentData, TName, TData>,
17
+ TOnChangeAsync extends
18
+ | undefined
19
+ | FieldAsyncValidateOrFn<TParentData, TName, TData>,
20
+ TOnBlur extends undefined | FieldValidateOrFn<TParentData, TName, TData>,
21
+ TOnBlurAsync extends
22
+ | undefined
23
+ | FieldAsyncValidateOrFn<TParentData, TName, TData>,
24
+ TOnSubmit extends undefined | FieldValidateOrFn<TParentData, TName, TData>,
25
+ TOnSubmitAsync extends
26
+ | undefined
27
+ | FieldAsyncValidateOrFn<TParentData, TName, TData>,
28
+ TFormOnMount extends undefined | FormValidateOrFn<TParentData>,
29
+ TFormOnChange extends undefined | FormValidateOrFn<TParentData>,
30
+ TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
31
+ TFormOnBlur extends undefined | FormValidateOrFn<TParentData>,
32
+ TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
33
+ TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>,
34
+ TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
35
+ TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>,
18
36
  > = FieldApiOptions<
19
37
  TParentData,
20
38
  TName,
21
- TFieldValidator,
22
- TFormValidator,
23
- TData
39
+ TData,
40
+ TOnMount,
41
+ TOnChange,
42
+ TOnChangeAsync,
43
+ TOnBlur,
44
+ TOnBlurAsync,
45
+ TOnSubmit,
46
+ TOnSubmitAsync,
47
+ TFormOnMount,
48
+ TFormOnChange,
49
+ TFormOnChangeAsync,
50
+ TFormOnBlur,
51
+ TFormOnBlurAsync,
52
+ TFormOnSubmit,
53
+ TFormOnSubmitAsync,
54
+ TFormOnServer
24
55
  > & {
25
56
  mode?: 'value' | 'array'
26
57
  }