@tanstack/solid-form 1.32.1 → 1.33.0
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/createForm.cjs +4 -0
- package/dist/cjs/createForm.cjs.map +1 -1
- package/dist/cjs/createForm.d.cts +2 -0
- package/dist/cjs/createFormGroup.cjs +48 -0
- package/dist/cjs/createFormGroup.cjs.map +1 -0
- package/dist/cjs/createFormGroup.d.cts +15 -0
- package/dist/cjs/index.cjs +3 -0
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.d.cts +1 -0
- package/dist/esm/createForm.d.ts +2 -0
- package/dist/esm/createForm.js +4 -0
- package/dist/esm/createForm.js.map +1 -1
- package/dist/esm/createFormGroup.d.ts +15 -0
- package/dist/esm/createFormGroup.js +48 -0
- package/dist/esm/createFormGroup.js.map +1 -0
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.js +3 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/source/createForm.d.ts +2 -0
- package/dist/source/createForm.jsx +2 -0
- package/dist/source/createForm.jsx.map +1 -1
- package/dist/source/createFormGroup.d.ts +16 -0
- package/dist/source/createFormGroup.jsx +50 -0
- package/dist/source/createFormGroup.jsx.map +1 -0
- package/dist/source/index.d.ts +1 -0
- package/dist/source/index.jsx +1 -0
- package/dist/source/index.jsx.map +1 -1
- package/package.json +3 -3
- package/src/createForm.tsx +17 -0
- package/src/createFormGroup.tsx +622 -0
- package/src/index.tsx +1 -0
|
@@ -0,0 +1,622 @@
|
|
|
1
|
+
import { FormGroupApi, functionalUpdate } from '@tanstack/form-core'
|
|
2
|
+
import {
|
|
3
|
+
createComponent,
|
|
4
|
+
createComputed,
|
|
5
|
+
createSignal,
|
|
6
|
+
onCleanup,
|
|
7
|
+
onMount,
|
|
8
|
+
} from 'solid-js'
|
|
9
|
+
import { useStore } from '@tanstack/solid-store'
|
|
10
|
+
import type {
|
|
11
|
+
DeepKeys,
|
|
12
|
+
DeepValue,
|
|
13
|
+
FormAsyncValidateOrFn,
|
|
14
|
+
FormGroupApiOptions,
|
|
15
|
+
FormGroupAsyncValidateOrFn,
|
|
16
|
+
FormGroupOptions,
|
|
17
|
+
FormGroupValidateOrFn,
|
|
18
|
+
FormValidateOrFn,
|
|
19
|
+
} from '@tanstack/form-core'
|
|
20
|
+
import type { Accessor, JSX, JSXElement } from 'solid-js'
|
|
21
|
+
|
|
22
|
+
// ugly way to trick solid into triggering updates for changes on the formGroupApi
|
|
23
|
+
function makeFormGroupReactive<
|
|
24
|
+
TParentData,
|
|
25
|
+
TName extends DeepKeys<TParentData>,
|
|
26
|
+
TData extends DeepValue<TParentData, TName>,
|
|
27
|
+
TOnMount extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>,
|
|
28
|
+
TOnChange extends
|
|
29
|
+
| undefined
|
|
30
|
+
| FormGroupValidateOrFn<TParentData, TName, TData>,
|
|
31
|
+
TOnChangeAsync extends
|
|
32
|
+
| undefined
|
|
33
|
+
| FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
|
|
34
|
+
TOnBlur extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>,
|
|
35
|
+
TOnBlurAsync extends
|
|
36
|
+
| undefined
|
|
37
|
+
| FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
|
|
38
|
+
TOnSubmit extends
|
|
39
|
+
| undefined
|
|
40
|
+
| FormGroupValidateOrFn<TParentData, TName, TData>,
|
|
41
|
+
TOnSubmitAsync extends
|
|
42
|
+
| undefined
|
|
43
|
+
| FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
|
|
44
|
+
TOnDynamic extends
|
|
45
|
+
| undefined
|
|
46
|
+
| FormGroupValidateOrFn<TParentData, TName, TData>,
|
|
47
|
+
TOnDynamicAsync extends
|
|
48
|
+
| undefined
|
|
49
|
+
| FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
|
|
50
|
+
TSubmitMeta,
|
|
51
|
+
TFormOnMount extends undefined | FormValidateOrFn<TParentData>,
|
|
52
|
+
TFormOnChange extends undefined | FormValidateOrFn<TParentData>,
|
|
53
|
+
TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
|
|
54
|
+
TFormOnBlur extends undefined | FormValidateOrFn<TParentData>,
|
|
55
|
+
TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
|
|
56
|
+
TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>,
|
|
57
|
+
TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
|
|
58
|
+
TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>,
|
|
59
|
+
TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
|
|
60
|
+
TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>,
|
|
61
|
+
TParentSubmitMeta,
|
|
62
|
+
>(
|
|
63
|
+
formGroupApi: FormGroupApi<
|
|
64
|
+
TParentData,
|
|
65
|
+
TName,
|
|
66
|
+
TData,
|
|
67
|
+
TOnMount,
|
|
68
|
+
TOnChange,
|
|
69
|
+
TOnChangeAsync,
|
|
70
|
+
TOnBlur,
|
|
71
|
+
TOnBlurAsync,
|
|
72
|
+
TOnSubmit,
|
|
73
|
+
TOnSubmitAsync,
|
|
74
|
+
TOnDynamic,
|
|
75
|
+
TOnDynamicAsync,
|
|
76
|
+
TSubmitMeta,
|
|
77
|
+
TFormOnMount,
|
|
78
|
+
TFormOnChange,
|
|
79
|
+
TFormOnChangeAsync,
|
|
80
|
+
TFormOnBlur,
|
|
81
|
+
TFormOnBlurAsync,
|
|
82
|
+
TFormOnSubmit,
|
|
83
|
+
TFormOnSubmitAsync,
|
|
84
|
+
TFormOnDynamic,
|
|
85
|
+
TFormOnDynamicAsync,
|
|
86
|
+
TFormOnServer,
|
|
87
|
+
TParentSubmitMeta
|
|
88
|
+
>,
|
|
89
|
+
): () => FormGroupApi<
|
|
90
|
+
TParentData,
|
|
91
|
+
TName,
|
|
92
|
+
TData,
|
|
93
|
+
TOnMount,
|
|
94
|
+
TOnChange,
|
|
95
|
+
TOnChangeAsync,
|
|
96
|
+
TOnBlur,
|
|
97
|
+
TOnBlurAsync,
|
|
98
|
+
TOnSubmit,
|
|
99
|
+
TOnSubmitAsync,
|
|
100
|
+
TOnDynamic,
|
|
101
|
+
TOnDynamicAsync,
|
|
102
|
+
TSubmitMeta,
|
|
103
|
+
TFormOnMount,
|
|
104
|
+
TFormOnChange,
|
|
105
|
+
TFormOnChangeAsync,
|
|
106
|
+
TFormOnBlur,
|
|
107
|
+
TFormOnBlurAsync,
|
|
108
|
+
TFormOnSubmit,
|
|
109
|
+
TFormOnSubmitAsync,
|
|
110
|
+
TFormOnDynamic,
|
|
111
|
+
TFormOnDynamicAsync,
|
|
112
|
+
TFormOnServer,
|
|
113
|
+
TParentSubmitMeta
|
|
114
|
+
> {
|
|
115
|
+
const [group, setGroup] = createSignal(formGroupApi, { equals: false })
|
|
116
|
+
// Handle shallow comparison to make sure that Derived doesn't create a new setGroup call every time
|
|
117
|
+
const store = useStore(formGroupApi.store, (store) => store)
|
|
118
|
+
// Run before initial render
|
|
119
|
+
createComputed(() => {
|
|
120
|
+
// Use the store to track dependencies
|
|
121
|
+
store()
|
|
122
|
+
setGroup(formGroupApi)
|
|
123
|
+
})
|
|
124
|
+
return group
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
export function createFormGroup<
|
|
128
|
+
TParentData,
|
|
129
|
+
TName extends DeepKeys<TParentData>,
|
|
130
|
+
TData extends DeepValue<TParentData, TName>,
|
|
131
|
+
TOnMount extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>,
|
|
132
|
+
TOnChange extends
|
|
133
|
+
| undefined
|
|
134
|
+
| FormGroupValidateOrFn<TParentData, TName, TData>,
|
|
135
|
+
TOnChangeAsync extends
|
|
136
|
+
| undefined
|
|
137
|
+
| FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
|
|
138
|
+
TOnBlur extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>,
|
|
139
|
+
TOnBlurAsync extends
|
|
140
|
+
| undefined
|
|
141
|
+
| FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
|
|
142
|
+
TOnSubmit extends
|
|
143
|
+
| undefined
|
|
144
|
+
| FormGroupValidateOrFn<TParentData, TName, TData>,
|
|
145
|
+
TOnSubmitAsync extends
|
|
146
|
+
| undefined
|
|
147
|
+
| FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
|
|
148
|
+
TOnDynamic extends
|
|
149
|
+
| undefined
|
|
150
|
+
| FormGroupValidateOrFn<TParentData, TName, TData>,
|
|
151
|
+
TOnDynamicAsync extends
|
|
152
|
+
| undefined
|
|
153
|
+
| FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
|
|
154
|
+
TSubmitMeta,
|
|
155
|
+
TFormOnMount extends undefined | FormValidateOrFn<TParentData>,
|
|
156
|
+
TFormOnChange extends undefined | FormValidateOrFn<TParentData>,
|
|
157
|
+
TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
|
|
158
|
+
TFormOnBlur extends undefined | FormValidateOrFn<TParentData>,
|
|
159
|
+
TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
|
|
160
|
+
TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>,
|
|
161
|
+
TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
|
|
162
|
+
TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>,
|
|
163
|
+
TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
|
|
164
|
+
TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>,
|
|
165
|
+
TParentSubmitMeta,
|
|
166
|
+
>(
|
|
167
|
+
opts: () => FormGroupApiOptions<
|
|
168
|
+
TParentData,
|
|
169
|
+
TName,
|
|
170
|
+
TData,
|
|
171
|
+
TOnMount,
|
|
172
|
+
TOnChange,
|
|
173
|
+
TOnChangeAsync,
|
|
174
|
+
TOnBlur,
|
|
175
|
+
TOnBlurAsync,
|
|
176
|
+
TOnSubmit,
|
|
177
|
+
TOnSubmitAsync,
|
|
178
|
+
TOnDynamic,
|
|
179
|
+
TOnDynamicAsync,
|
|
180
|
+
TSubmitMeta,
|
|
181
|
+
TFormOnMount,
|
|
182
|
+
TFormOnChange,
|
|
183
|
+
TFormOnChangeAsync,
|
|
184
|
+
TFormOnBlur,
|
|
185
|
+
TFormOnBlurAsync,
|
|
186
|
+
TFormOnSubmit,
|
|
187
|
+
TFormOnSubmitAsync,
|
|
188
|
+
TFormOnDynamic,
|
|
189
|
+
TFormOnDynamicAsync,
|
|
190
|
+
TFormOnServer,
|
|
191
|
+
TParentSubmitMeta
|
|
192
|
+
>,
|
|
193
|
+
) {
|
|
194
|
+
const options = opts()
|
|
195
|
+
|
|
196
|
+
const api = new FormGroupApi(options)
|
|
197
|
+
|
|
198
|
+
let mounted = false
|
|
199
|
+
// Instantiates form group meta and removes it when unrendered
|
|
200
|
+
onMount(() => {
|
|
201
|
+
const cleanupFn = api.mount()
|
|
202
|
+
mounted = true
|
|
203
|
+
onCleanup(() => {
|
|
204
|
+
cleanupFn()
|
|
205
|
+
mounted = false
|
|
206
|
+
})
|
|
207
|
+
})
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* formGroupApi.update should not have any side effects. Think of it like a `useRef`
|
|
211
|
+
* that we need to keep updated every render with the most up-to-date information.
|
|
212
|
+
*
|
|
213
|
+
* createComputed to make sure this effect runs before render effects
|
|
214
|
+
*/
|
|
215
|
+
createComputed(() => {
|
|
216
|
+
if (!mounted) return
|
|
217
|
+
api.update(opts())
|
|
218
|
+
})
|
|
219
|
+
|
|
220
|
+
return makeFormGroupReactive<
|
|
221
|
+
TParentData,
|
|
222
|
+
TName,
|
|
223
|
+
TData,
|
|
224
|
+
TOnMount,
|
|
225
|
+
TOnChange,
|
|
226
|
+
TOnChangeAsync,
|
|
227
|
+
TOnBlur,
|
|
228
|
+
TOnBlurAsync,
|
|
229
|
+
TOnSubmit,
|
|
230
|
+
TOnSubmitAsync,
|
|
231
|
+
TOnDynamic,
|
|
232
|
+
TOnDynamicAsync,
|
|
233
|
+
TSubmitMeta,
|
|
234
|
+
TFormOnMount,
|
|
235
|
+
TFormOnChange,
|
|
236
|
+
TFormOnChangeAsync,
|
|
237
|
+
TFormOnBlur,
|
|
238
|
+
TFormOnBlurAsync,
|
|
239
|
+
TFormOnSubmit,
|
|
240
|
+
TFormOnSubmitAsync,
|
|
241
|
+
TFormOnDynamic,
|
|
242
|
+
TFormOnDynamicAsync,
|
|
243
|
+
TFormOnServer,
|
|
244
|
+
TParentSubmitMeta
|
|
245
|
+
>(api)
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
interface FormGroupComponentBoundProps<
|
|
249
|
+
TParentData,
|
|
250
|
+
TName extends DeepKeys<TParentData>,
|
|
251
|
+
TData extends DeepValue<TParentData, TName>,
|
|
252
|
+
TOnMount extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>,
|
|
253
|
+
TOnChange extends
|
|
254
|
+
| undefined
|
|
255
|
+
| FormGroupValidateOrFn<TParentData, TName, TData>,
|
|
256
|
+
TOnChangeAsync extends
|
|
257
|
+
| undefined
|
|
258
|
+
| FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
|
|
259
|
+
TOnBlur extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>,
|
|
260
|
+
TOnBlurAsync extends
|
|
261
|
+
| undefined
|
|
262
|
+
| FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
|
|
263
|
+
TOnSubmit extends
|
|
264
|
+
| undefined
|
|
265
|
+
| FormGroupValidateOrFn<TParentData, TName, TData>,
|
|
266
|
+
TOnSubmitAsync extends
|
|
267
|
+
| undefined
|
|
268
|
+
| FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
|
|
269
|
+
TOnDynamic extends
|
|
270
|
+
| undefined
|
|
271
|
+
| FormGroupValidateOrFn<TParentData, TName, TData>,
|
|
272
|
+
TOnDynamicAsync extends
|
|
273
|
+
| undefined
|
|
274
|
+
| FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
|
|
275
|
+
TSubmitMeta,
|
|
276
|
+
TFormOnMount extends undefined | FormValidateOrFn<TParentData>,
|
|
277
|
+
TFormOnChange extends undefined | FormValidateOrFn<TParentData>,
|
|
278
|
+
TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
|
|
279
|
+
TFormOnBlur extends undefined | FormValidateOrFn<TParentData>,
|
|
280
|
+
TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
|
|
281
|
+
TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>,
|
|
282
|
+
TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
|
|
283
|
+
TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>,
|
|
284
|
+
TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
|
|
285
|
+
TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>,
|
|
286
|
+
TParentSubmitMeta,
|
|
287
|
+
ExtendedApi = {},
|
|
288
|
+
> extends FormGroupOptions<
|
|
289
|
+
TParentData,
|
|
290
|
+
TName,
|
|
291
|
+
TData,
|
|
292
|
+
TOnMount,
|
|
293
|
+
TOnChange,
|
|
294
|
+
TOnChangeAsync,
|
|
295
|
+
TOnBlur,
|
|
296
|
+
TOnBlurAsync,
|
|
297
|
+
TOnSubmit,
|
|
298
|
+
TOnSubmitAsync,
|
|
299
|
+
TOnDynamic,
|
|
300
|
+
TOnDynamicAsync,
|
|
301
|
+
TSubmitMeta,
|
|
302
|
+
TFormOnMount,
|
|
303
|
+
TFormOnChange,
|
|
304
|
+
TFormOnChangeAsync,
|
|
305
|
+
TFormOnBlur,
|
|
306
|
+
TFormOnBlurAsync,
|
|
307
|
+
TFormOnSubmit,
|
|
308
|
+
TFormOnSubmitAsync,
|
|
309
|
+
TFormOnDynamic,
|
|
310
|
+
TFormOnDynamicAsync,
|
|
311
|
+
TFormOnServer,
|
|
312
|
+
TParentSubmitMeta
|
|
313
|
+
> {
|
|
314
|
+
children: (
|
|
315
|
+
formGroupApi: Accessor<
|
|
316
|
+
FormGroupApi<
|
|
317
|
+
TParentData,
|
|
318
|
+
TName,
|
|
319
|
+
TData,
|
|
320
|
+
TOnMount,
|
|
321
|
+
TOnChange,
|
|
322
|
+
TOnChangeAsync,
|
|
323
|
+
TOnBlur,
|
|
324
|
+
TOnBlurAsync,
|
|
325
|
+
TOnSubmit,
|
|
326
|
+
TOnSubmitAsync,
|
|
327
|
+
TOnDynamic,
|
|
328
|
+
TOnDynamicAsync,
|
|
329
|
+
TSubmitMeta,
|
|
330
|
+
TFormOnMount,
|
|
331
|
+
TFormOnChange,
|
|
332
|
+
TFormOnChangeAsync,
|
|
333
|
+
TFormOnBlur,
|
|
334
|
+
TFormOnBlurAsync,
|
|
335
|
+
TFormOnSubmit,
|
|
336
|
+
TFormOnSubmitAsync,
|
|
337
|
+
TFormOnDynamic,
|
|
338
|
+
TFormOnDynamicAsync,
|
|
339
|
+
TFormOnServer,
|
|
340
|
+
TParentSubmitMeta
|
|
341
|
+
>
|
|
342
|
+
> &
|
|
343
|
+
ExtendedApi,
|
|
344
|
+
) => JSX.Element
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
/**
|
|
348
|
+
* A type alias representing a form group component for a specific form data type.
|
|
349
|
+
*/
|
|
350
|
+
export type FormGroupComponent<
|
|
351
|
+
in out TParentData,
|
|
352
|
+
in out TFormOnMount extends undefined | FormValidateOrFn<TParentData>,
|
|
353
|
+
in out TFormOnChange extends undefined | FormValidateOrFn<TParentData>,
|
|
354
|
+
in out TFormOnChangeAsync extends
|
|
355
|
+
| undefined
|
|
356
|
+
| FormAsyncValidateOrFn<TParentData>,
|
|
357
|
+
in out TFormOnBlur extends undefined | FormValidateOrFn<TParentData>,
|
|
358
|
+
in out TFormOnBlurAsync extends
|
|
359
|
+
| undefined
|
|
360
|
+
| FormAsyncValidateOrFn<TParentData>,
|
|
361
|
+
in out TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>,
|
|
362
|
+
in out TFormOnSubmitAsync extends
|
|
363
|
+
| undefined
|
|
364
|
+
| FormAsyncValidateOrFn<TParentData>,
|
|
365
|
+
in out TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>,
|
|
366
|
+
in out TFormOnDynamicAsync extends
|
|
367
|
+
| undefined
|
|
368
|
+
| FormAsyncValidateOrFn<TParentData>,
|
|
369
|
+
in out TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>,
|
|
370
|
+
in out TParentSubmitMeta,
|
|
371
|
+
in out ExtendedApi = {},
|
|
372
|
+
> = <
|
|
373
|
+
const TName extends DeepKeys<TParentData>,
|
|
374
|
+
TData extends DeepValue<TParentData, TName>,
|
|
375
|
+
TOnMount extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>,
|
|
376
|
+
TOnChange extends
|
|
377
|
+
| undefined
|
|
378
|
+
| FormGroupValidateOrFn<TParentData, TName, TData>,
|
|
379
|
+
TOnChangeAsync extends
|
|
380
|
+
| undefined
|
|
381
|
+
| FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
|
|
382
|
+
TOnBlur extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>,
|
|
383
|
+
TOnBlurAsync extends
|
|
384
|
+
| undefined
|
|
385
|
+
| FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
|
|
386
|
+
TOnSubmit extends
|
|
387
|
+
| undefined
|
|
388
|
+
| FormGroupValidateOrFn<TParentData, TName, TData>,
|
|
389
|
+
TOnSubmitAsync extends
|
|
390
|
+
| undefined
|
|
391
|
+
| FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
|
|
392
|
+
TOnDynamic extends
|
|
393
|
+
| undefined
|
|
394
|
+
| FormGroupValidateOrFn<TParentData, TName, TData>,
|
|
395
|
+
TOnDynamicAsync extends
|
|
396
|
+
| undefined
|
|
397
|
+
| FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
|
|
398
|
+
TSubmitMeta,
|
|
399
|
+
>(
|
|
400
|
+
props: FormGroupComponentBoundProps<
|
|
401
|
+
TParentData,
|
|
402
|
+
TName,
|
|
403
|
+
TData,
|
|
404
|
+
TOnMount,
|
|
405
|
+
TOnChange,
|
|
406
|
+
TOnChangeAsync,
|
|
407
|
+
TOnBlur,
|
|
408
|
+
TOnBlurAsync,
|
|
409
|
+
TOnSubmit,
|
|
410
|
+
TOnSubmitAsync,
|
|
411
|
+
TOnDynamic,
|
|
412
|
+
TOnDynamicAsync,
|
|
413
|
+
TSubmitMeta,
|
|
414
|
+
TFormOnMount,
|
|
415
|
+
TFormOnChange,
|
|
416
|
+
TFormOnChangeAsync,
|
|
417
|
+
TFormOnBlur,
|
|
418
|
+
TFormOnBlurAsync,
|
|
419
|
+
TFormOnSubmit,
|
|
420
|
+
TFormOnSubmitAsync,
|
|
421
|
+
TFormOnDynamic,
|
|
422
|
+
TFormOnDynamicAsync,
|
|
423
|
+
TFormOnServer,
|
|
424
|
+
TParentSubmitMeta,
|
|
425
|
+
ExtendedApi
|
|
426
|
+
>,
|
|
427
|
+
) => JSXElement
|
|
428
|
+
|
|
429
|
+
interface FormGroupComponentProps<
|
|
430
|
+
TParentData,
|
|
431
|
+
TName extends DeepKeys<TParentData>,
|
|
432
|
+
TData extends DeepValue<TParentData, TName>,
|
|
433
|
+
TOnMount extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>,
|
|
434
|
+
TOnChange extends
|
|
435
|
+
| undefined
|
|
436
|
+
| FormGroupValidateOrFn<TParentData, TName, TData>,
|
|
437
|
+
TOnChangeAsync extends
|
|
438
|
+
| undefined
|
|
439
|
+
| FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
|
|
440
|
+
TOnBlur extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>,
|
|
441
|
+
TOnBlurAsync extends
|
|
442
|
+
| undefined
|
|
443
|
+
| FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
|
|
444
|
+
TOnSubmit extends
|
|
445
|
+
| undefined
|
|
446
|
+
| FormGroupValidateOrFn<TParentData, TName, TData>,
|
|
447
|
+
TOnSubmitAsync extends
|
|
448
|
+
| undefined
|
|
449
|
+
| FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
|
|
450
|
+
TOnDynamic extends
|
|
451
|
+
| undefined
|
|
452
|
+
| FormGroupValidateOrFn<TParentData, TName, TData>,
|
|
453
|
+
TOnDynamicAsync extends
|
|
454
|
+
| undefined
|
|
455
|
+
| FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
|
|
456
|
+
TSubmitMeta,
|
|
457
|
+
TFormOnMount extends undefined | FormValidateOrFn<TParentData>,
|
|
458
|
+
TFormOnChange extends undefined | FormValidateOrFn<TParentData>,
|
|
459
|
+
TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
|
|
460
|
+
TFormOnBlur extends undefined | FormValidateOrFn<TParentData>,
|
|
461
|
+
TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
|
|
462
|
+
TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>,
|
|
463
|
+
TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
|
|
464
|
+
TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>,
|
|
465
|
+
TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
|
|
466
|
+
TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>,
|
|
467
|
+
TParentSubmitMeta,
|
|
468
|
+
> extends FormGroupApiOptions<
|
|
469
|
+
TParentData,
|
|
470
|
+
TName,
|
|
471
|
+
TData,
|
|
472
|
+
TOnMount,
|
|
473
|
+
TOnChange,
|
|
474
|
+
TOnChangeAsync,
|
|
475
|
+
TOnBlur,
|
|
476
|
+
TOnBlurAsync,
|
|
477
|
+
TOnSubmit,
|
|
478
|
+
TOnSubmitAsync,
|
|
479
|
+
TOnDynamic,
|
|
480
|
+
TOnDynamicAsync,
|
|
481
|
+
TSubmitMeta,
|
|
482
|
+
TFormOnMount,
|
|
483
|
+
TFormOnChange,
|
|
484
|
+
TFormOnChangeAsync,
|
|
485
|
+
TFormOnBlur,
|
|
486
|
+
TFormOnBlurAsync,
|
|
487
|
+
TFormOnSubmit,
|
|
488
|
+
TFormOnSubmitAsync,
|
|
489
|
+
TFormOnDynamic,
|
|
490
|
+
TFormOnDynamicAsync,
|
|
491
|
+
TFormOnServer,
|
|
492
|
+
TParentSubmitMeta
|
|
493
|
+
> {
|
|
494
|
+
children: (
|
|
495
|
+
formGroupApi: () => FormGroupApi<
|
|
496
|
+
TParentData,
|
|
497
|
+
TName,
|
|
498
|
+
TData,
|
|
499
|
+
TOnMount,
|
|
500
|
+
TOnChange,
|
|
501
|
+
TOnChangeAsync,
|
|
502
|
+
TOnBlur,
|
|
503
|
+
TOnBlurAsync,
|
|
504
|
+
TOnSubmit,
|
|
505
|
+
TOnSubmitAsync,
|
|
506
|
+
TOnDynamic,
|
|
507
|
+
TOnDynamicAsync,
|
|
508
|
+
TSubmitMeta,
|
|
509
|
+
TFormOnMount,
|
|
510
|
+
TFormOnChange,
|
|
511
|
+
TFormOnChangeAsync,
|
|
512
|
+
TFormOnBlur,
|
|
513
|
+
TFormOnBlurAsync,
|
|
514
|
+
TFormOnSubmit,
|
|
515
|
+
TFormOnSubmitAsync,
|
|
516
|
+
TFormOnDynamic,
|
|
517
|
+
TFormOnDynamicAsync,
|
|
518
|
+
TFormOnServer,
|
|
519
|
+
TParentSubmitMeta
|
|
520
|
+
>,
|
|
521
|
+
) => JSXElement
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
export function FormGroup<
|
|
525
|
+
TParentData,
|
|
526
|
+
TName extends DeepKeys<TParentData>,
|
|
527
|
+
TData extends DeepValue<TParentData, TName>,
|
|
528
|
+
TOnMount extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>,
|
|
529
|
+
TOnChange extends
|
|
530
|
+
| undefined
|
|
531
|
+
| FormGroupValidateOrFn<TParentData, TName, TData>,
|
|
532
|
+
TOnChangeAsync extends
|
|
533
|
+
| undefined
|
|
534
|
+
| FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
|
|
535
|
+
TOnBlur extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>,
|
|
536
|
+
TOnBlurAsync extends
|
|
537
|
+
| undefined
|
|
538
|
+
| FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
|
|
539
|
+
TOnSubmit extends
|
|
540
|
+
| undefined
|
|
541
|
+
| FormGroupValidateOrFn<TParentData, TName, TData>,
|
|
542
|
+
TOnSubmitAsync extends
|
|
543
|
+
| undefined
|
|
544
|
+
| FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
|
|
545
|
+
TOnDynamic extends
|
|
546
|
+
| undefined
|
|
547
|
+
| FormGroupValidateOrFn<TParentData, TName, TData>,
|
|
548
|
+
TOnDynamicAsync extends
|
|
549
|
+
| undefined
|
|
550
|
+
| FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
|
|
551
|
+
TSubmitMeta,
|
|
552
|
+
TFormOnMount extends undefined | FormValidateOrFn<TParentData>,
|
|
553
|
+
TFormOnChange extends undefined | FormValidateOrFn<TParentData>,
|
|
554
|
+
TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
|
|
555
|
+
TFormOnBlur extends undefined | FormValidateOrFn<TParentData>,
|
|
556
|
+
TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
|
|
557
|
+
TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>,
|
|
558
|
+
TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
|
|
559
|
+
TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>,
|
|
560
|
+
TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
|
|
561
|
+
TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>,
|
|
562
|
+
TParentSubmitMeta,
|
|
563
|
+
>(
|
|
564
|
+
props: FormGroupComponentProps<
|
|
565
|
+
TParentData,
|
|
566
|
+
TName,
|
|
567
|
+
TData,
|
|
568
|
+
TOnMount,
|
|
569
|
+
TOnChange,
|
|
570
|
+
TOnChangeAsync,
|
|
571
|
+
TOnBlur,
|
|
572
|
+
TOnBlurAsync,
|
|
573
|
+
TOnSubmit,
|
|
574
|
+
TOnSubmitAsync,
|
|
575
|
+
TOnDynamic,
|
|
576
|
+
TOnDynamicAsync,
|
|
577
|
+
TSubmitMeta,
|
|
578
|
+
TFormOnMount,
|
|
579
|
+
TFormOnChange,
|
|
580
|
+
TFormOnChangeAsync,
|
|
581
|
+
TFormOnBlur,
|
|
582
|
+
TFormOnBlurAsync,
|
|
583
|
+
TFormOnSubmit,
|
|
584
|
+
TFormOnSubmitAsync,
|
|
585
|
+
TFormOnDynamic,
|
|
586
|
+
TFormOnDynamicAsync,
|
|
587
|
+
TFormOnServer,
|
|
588
|
+
TParentSubmitMeta
|
|
589
|
+
>,
|
|
590
|
+
) {
|
|
591
|
+
const formGroupApi = createFormGroup<
|
|
592
|
+
TParentData,
|
|
593
|
+
TName,
|
|
594
|
+
TData,
|
|
595
|
+
TOnMount,
|
|
596
|
+
TOnChange,
|
|
597
|
+
TOnChangeAsync,
|
|
598
|
+
TOnBlur,
|
|
599
|
+
TOnBlurAsync,
|
|
600
|
+
TOnSubmit,
|
|
601
|
+
TOnSubmitAsync,
|
|
602
|
+
TOnDynamic,
|
|
603
|
+
TOnDynamicAsync,
|
|
604
|
+
TSubmitMeta,
|
|
605
|
+
TFormOnMount,
|
|
606
|
+
TFormOnChange,
|
|
607
|
+
TFormOnChangeAsync,
|
|
608
|
+
TFormOnBlur,
|
|
609
|
+
TFormOnBlurAsync,
|
|
610
|
+
TFormOnSubmit,
|
|
611
|
+
TFormOnSubmitAsync,
|
|
612
|
+
TFormOnDynamic,
|
|
613
|
+
TFormOnDynamicAsync,
|
|
614
|
+
TFormOnServer,
|
|
615
|
+
TParentSubmitMeta
|
|
616
|
+
>(() => {
|
|
617
|
+
const { children, ...formGroupOptions } = props
|
|
618
|
+
return formGroupOptions
|
|
619
|
+
})
|
|
620
|
+
|
|
621
|
+
return <>{createComponent(() => props.children(formGroupApi), {})}</>
|
|
622
|
+
}
|
package/src/index.tsx
CHANGED