@tanstack/svelte-form 1.33.4 → 2.0.0-alpha.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.
Files changed (86) hide show
  1. package/dist/AppForm/AppForm.svelte +14 -0
  2. package/dist/AppForm/Components.lib.d.ts +7 -0
  3. package/dist/AppForm/Components.lib.js +8 -0
  4. package/dist/AppForm/SvelteAppFormApi.public.d.ts +10 -0
  5. package/dist/AppForm/appFormOptions.public.d.ts +12 -0
  6. package/dist/AppForm/appFormOptions.public.js +1 -0
  7. package/dist/AppForm/componentMap.public.d.ts +7 -0
  8. package/dist/AppForm/componentMap.public.js +1 -0
  9. package/dist/AppForm/contexts.lib.d.ts +4 -0
  10. package/dist/AppForm/contexts.lib.js +16 -0
  11. package/dist/AppForm/createFormHook.public.d.ts +3 -0
  12. package/dist/AppForm/createFormHook.public.js +20 -0
  13. package/dist/AppForm/createFormHookTypes.public.d.ts +12 -0
  14. package/dist/AppForm/createFormHookTypes.public.js +1 -0
  15. package/dist/AppForm/fieldComponentHelpers.lib.d.ts +5 -0
  16. package/dist/AppForm/fieldComponentHelpers.lib.js +10 -0
  17. package/dist/AppForm/getFormHookHelpers.public.d.ts +31 -0
  18. package/dist/AppForm/getFormHookHelpers.public.js +13 -0
  19. package/dist/AppForm/initializeAppForm.lib.d.ts +4 -0
  20. package/dist/AppForm/initializeAppForm.lib.js +5 -0
  21. package/dist/Components.public.d.ts +52 -0
  22. package/dist/Components.public.js +1 -0
  23. package/dist/Field.svelte +125 -314
  24. package/dist/Field.svelte.d.ts +14 -30
  25. package/dist/FieldGroup/FieldGroupApi.public.d.ts +15 -0
  26. package/dist/FieldGroup/FieldGroupApi.public.js +1 -0
  27. package/dist/FieldGroup/withFields.lib.d.ts +5 -0
  28. package/dist/FieldGroup/withFields.lib.js +44 -0
  29. package/dist/FieldGroup/withFields.public.d.ts +70 -0
  30. package/dist/FieldGroup/withFields.public.js +3 -0
  31. package/dist/FormGroup.svelte +81 -302
  32. package/dist/FormGroup.svelte.d.ts +13 -30
  33. package/dist/Subscribe.svelte +18 -8
  34. package/dist/Subscribe.svelte.d.ts +5 -3
  35. package/dist/createForm.public.d.ts +5 -0
  36. package/dist/createForm.public.js +5 -0
  37. package/dist/createForm.svelte.d.ts +11 -27
  38. package/dist/createForm.svelte.js +29 -19
  39. package/dist/formApiTypes.public.d.ts +13 -0
  40. package/dist/formApiTypes.public.js +1 -0
  41. package/dist/formType.public.d.ts +7 -0
  42. package/dist/formType.public.js +1 -0
  43. package/dist/index.d.ts +13 -4
  44. package/dist/index.js +13 -3
  45. package/dist/utils.lib.d.ts +1 -0
  46. package/dist/utils.lib.js +28 -0
  47. package/package.json +5 -5
  48. package/src/AppForm/AppForm.svelte +14 -0
  49. package/src/AppForm/Components.lib.ts +28 -0
  50. package/src/AppForm/SvelteAppFormApi.public.ts +14 -0
  51. package/src/AppForm/appFormOptions.public.ts +57 -0
  52. package/src/AppForm/componentMap.public.ts +19 -0
  53. package/src/AppForm/contexts.lib.ts +24 -0
  54. package/src/AppForm/createFormHook.public.ts +33 -0
  55. package/src/AppForm/createFormHookTypes.public.ts +30 -0
  56. package/src/AppForm/fieldComponentHelpers.lib.ts +24 -0
  57. package/src/AppForm/getFormHookHelpers.public.ts +82 -0
  58. package/src/AppForm/initializeAppForm.lib.ts +18 -0
  59. package/src/Components.public.ts +371 -0
  60. package/src/Field.svelte +125 -314
  61. package/src/FieldGroup/FieldGroupApi.public.ts +100 -0
  62. package/src/FieldGroup/withFields.lib.ts +82 -0
  63. package/src/FieldGroup/withFields.public.ts +179 -0
  64. package/src/FormGroup.svelte +81 -302
  65. package/src/Subscribe.svelte +18 -8
  66. package/src/createForm.public.ts +26 -0
  67. package/src/createForm.svelte.ts +62 -336
  68. package/src/formApiTypes.public.ts +48 -0
  69. package/src/formType.public.ts +46 -0
  70. package/src/index.ts +13 -12
  71. package/src/utils.lib.ts +30 -0
  72. package/dist/AppField.svelte +0 -19
  73. package/dist/AppField.svelte.d.ts +0 -10
  74. package/dist/AppForm.svelte +0 -16
  75. package/dist/InnerAppField.svelte +0 -17
  76. package/dist/InnerAppField.svelte.d.ts +0 -9
  77. package/dist/createFormCreator.svelte.d.ts +0 -26
  78. package/dist/createFormCreator.svelte.js +0 -51
  79. package/dist/types.d.ts +0 -21
  80. package/src/AppField.svelte +0 -19
  81. package/src/AppForm.svelte +0 -16
  82. package/src/InnerAppField.svelte +0 -17
  83. package/src/createFormCreator.svelte.ts +0 -321
  84. package/src/types.ts +0 -567
  85. /package/dist/{AppForm.svelte.d.ts → AppForm/AppForm.svelte.d.ts} +0 -0
  86. /package/dist/{types.js → AppForm/SvelteAppFormApi.public.js} +0 -0
package/dist/Field.svelte CHANGED
@@ -1,341 +1,152 @@
1
1
  <script module lang="ts">
2
- import {
3
- type DeepKeys,
4
- type DeepValue,
2
+ import { shallow, useSelector } from '@tanstack/svelte-store'
3
+ import type {
5
4
  FieldApi,
6
- type FieldAsyncValidateOrFn,
7
- type FieldValidateOrFn,
8
- type FormAsyncValidateOrFn,
9
- type FormValidateOrFn,
5
+ FieldApiOptions,
6
+ FieldValidators,
7
+ FormErrorTypes,
8
+ ToFieldError,
10
9
  } from '@tanstack/form-core'
11
- import { useSelector } from '@tanstack/svelte-store'
12
- import { onMount, type Snippet } from 'svelte'
13
- import type { CreateFieldOptions } from './types.js'
10
+ import type {
11
+ AnyInternalFieldApi,
12
+ AnyInternalFormApi,
13
+ InternalBaseFieldMeta,
14
+ } from '@tanstack/form-core/internals'
14
15
 
15
- export function createField<
16
- TParentData,
17
- TName extends DeepKeys<TParentData>,
18
- TData extends DeepValue<TParentData, TName>,
19
- TOnMount extends undefined | FieldValidateOrFn<TParentData, TName, TData>,
20
- TOnChange extends undefined | FieldValidateOrFn<TParentData, TName, TData>,
21
- TOnChangeAsync extends
22
- | undefined
23
- | FieldAsyncValidateOrFn<TParentData, TName, TData>,
24
- TOnBlur extends undefined | FieldValidateOrFn<TParentData, TName, TData>,
25
- TOnBlurAsync extends
26
- | undefined
27
- | FieldAsyncValidateOrFn<TParentData, TName, TData>,
28
- TOnSubmit extends undefined | FieldValidateOrFn<TParentData, TName, TData>,
29
- TOnSubmitAsync extends
30
- | undefined
31
- | FieldAsyncValidateOrFn<TParentData, TName, TData>,
32
- TOnDynamic extends undefined | FieldValidateOrFn<TParentData, TName, TData>,
33
- TOnDynamicAsync extends
34
- | undefined
35
- | FieldAsyncValidateOrFn<TParentData, TName, TData>,
36
- TFormOnMount extends undefined | FormValidateOrFn<TParentData>,
37
- TFormOnChange extends undefined | FormValidateOrFn<TParentData>,
38
- TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
39
- TFormOnBlur extends undefined | FormValidateOrFn<TParentData>,
40
- TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
41
- TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>,
42
- TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
43
- TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>,
44
- TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
45
- TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>,
46
- TParentSubmitMeta,
47
- >(
48
- opts: () => CreateFieldOptions<
49
- TParentData,
50
- TName,
51
- TData,
52
- TOnMount,
53
- TOnChange,
54
- TOnChangeAsync,
55
- TOnBlur,
56
- TOnBlurAsync,
57
- TOnSubmit,
58
- TOnSubmitAsync,
59
- TOnDynamic,
60
- TOnDynamicAsync,
61
- TFormOnMount,
62
- TFormOnChange,
63
- TFormOnChangeAsync,
64
- TFormOnBlur,
65
- TFormOnBlurAsync,
66
- TFormOnSubmit,
67
- TFormOnSubmitAsync,
68
- TFormOnDynamic,
69
- TFormOnDynamicAsync,
70
- TFormOnServer,
71
- TParentSubmitMeta
72
- >,
16
+ interface InternalFieldOptions
17
+ extends FieldApiOptions<any, any, any, any, any, any, any> {
18
+ form: AnyInternalFormApi
19
+ }
20
+
21
+ function useDynamicFieldSelector<TSelected>(
22
+ getField: () => AnyInternalFieldApi,
23
+ selector: (field: AnyInternalFieldApi) => TSelected,
73
24
  ) {
74
- const options = opts()
25
+ let selected = $state.raw(selector(getField()))
75
26
 
76
- const api = new FieldApi(options)
27
+ $effect(() => {
28
+ const field = getField()
29
+ const update = () => {
30
+ const next = selector(field)
31
+ if (!shallow(selected, next)) selected = next
32
+ }
33
+ update()
34
+ const subscription = field.atom.subscribe(update)
35
+ return () => subscription.unsubscribe()
36
+ })
77
37
 
78
- const extendedApi: typeof api = api as never
38
+ return {
39
+ get current() {
40
+ return selected
41
+ },
42
+ }
43
+ }
79
44
 
80
- let mounted = false
81
- // Instantiates field meta and removes it when unrendered
82
- onMount(() => {
83
- const cleanupFn = api.mount()
84
- mounted = true
85
- return () => {
86
- cleanupFn()
87
- mounted = false
88
- }
45
+ export function createField<
46
+ TFieldData,
47
+ TFieldName,
48
+ TFieldValue,
49
+ const TFieldValidators extends FieldValidators<
50
+ TFieldData,
51
+ TFieldName,
52
+ TFieldValue
53
+ >,
54
+ TGroupFieldError,
55
+ TFormData,
56
+ TFormErrorTypes extends FormErrorTypes,
57
+ >(
58
+ options: () =>
59
+ & FieldApiOptions<
60
+ TFieldData,
61
+ TFieldName,
62
+ TFieldValue,
63
+ TFieldValidators,
64
+ TGroupFieldError,
65
+ TFormData,
66
+ TFormErrorTypes
67
+ >
68
+ & { form: AnyInternalFormApi },
69
+ array = false,
70
+ ): FieldApi<
71
+ TFieldName,
72
+ TFieldValue,
73
+ ToFieldError<TFieldValidators, TGroupFieldError, TFormErrorTypes>,
74
+ TFormData,
75
+ TFormErrorTypes
76
+ > {
77
+ const initialForm = options().form
78
+ const resetVersion = useSelector(initialForm._atoms.resetVersion)
79
+ const fieldApi = $derived.by(() => {
80
+ resetVersion.current
81
+ const current = options()
82
+ return current.form._getOrCreateFieldApi({
83
+ ...current,
84
+ name: current.name,
85
+ } as never)
89
86
  })
90
87
 
91
88
  $effect.pre(() => {
92
- // Invoke options function before mounted check, else it wouldn't rerun on changes to options.
93
- // Changes to options are seen by the effect because signals inside them are picked up.
94
- const current = opts()
95
- if (!mounted) return
96
- api.update(current)
89
+ fieldApi._update(options() as InternalFieldOptions)
97
90
  })
98
91
 
99
- const storeSub = useSelector(api.store, (state) =>
100
- options.mode === 'array'
101
- ? state.meta._arrayVersion || 0
102
- : state.value,
103
- )
104
- const metaIsTouchedSub = useSelector(
105
- api.store,
106
- (state) => state.meta.isTouched,
107
- )
108
- const metaIsBlurredSub = useSelector(
109
- api.store,
110
- (state) => state.meta.isBlurred,
111
- )
112
- const metaIsDirtySub = useSelector(api.store, (state) => state.meta.isDirty)
113
- const metaErrorMapSub = useSelector(api.store, (state) => state.meta.errorMap)
114
- const metaErrorSourceMapSub = useSelector(
115
- api.store,
116
- (state) => state.meta.errorSourceMap,
117
- )
118
- const metaIsValidatingSub = useSelector(
119
- api.store,
120
- (state) => state.meta.isValidating,
92
+ $effect(() => fieldApi._register())
93
+
94
+ const selected = useDynamicFieldSelector(
95
+ () => fieldApi,
96
+ (array
97
+ ? (field) => ({
98
+ length: field.value.length,
99
+ version: (field.meta as InternalBaseFieldMeta)._arrayVersion,
100
+ })
101
+ : (field) => ({ value: field.value, meta: field.meta })) as (
102
+ field: AnyInternalFieldApi,
103
+ ) => any,
121
104
  )
122
- Object.defineProperty(extendedApi, 'state', {
123
- get() {
124
- // Read all reactive sources to track them as dependencies. For array
125
- // mode, `storeSub.current` is the array length so we still pull the
126
- // actual value from the underlying api state.
127
- // See: https://github.com/TanStack/form/issues/1961
128
- // Note: we read from `api.store.state` (not `api.state`) to avoid
129
- // infinite recursion since this getter shadows the prototype's `state`
130
- // getter on the same object.
131
- const trackedValue = storeSub.current
132
- const isTouched = metaIsTouchedSub.current
133
- const isBlurred = metaIsBlurredSub.current
134
- const isDirty = metaIsDirtySub.current
135
- const errorMap = metaErrorMapSub.current
136
- const errorSourceMap = metaErrorSourceMapSub.current
137
- const isValidating = metaIsValidatingSub.current
138
- const baseState = api.store.state
139
- return {
140
- ...baseState,
141
- value: options.mode === 'array' ? baseState.value : trackedValue,
142
- meta: {
143
- ...baseState.meta,
144
- isTouched,
145
- isBlurred,
146
- isDirty,
147
- errorMap,
148
- errorSourceMap,
149
- isValidating,
150
- },
105
+
106
+ return new Proxy({} as AnyInternalFieldApi, {
107
+ get(target, property) {
108
+ if (Reflect.has(target, property)) return Reflect.get(target, property)
109
+ const field = fieldApi
110
+ const state = selected.current
111
+ if (property === 'value') {
112
+ return array ? field.value : (state as any).value
151
113
  }
114
+ if (property === 'meta') {
115
+ return array ? field.meta : (state as any).meta
116
+ }
117
+ if (property === 'errors') {
118
+ return array ? field.errors : (state as any).meta.errors
119
+ }
120
+ const value = Reflect.get(field, property, field)
121
+ return typeof value === 'function' ? value.bind(field) : value
152
122
  },
153
- })
154
-
155
- return extendedApi
123
+ }) as never
156
124
  }
157
125
  </script>
158
126
 
159
- <script
160
- lang="ts"
161
- generics="
162
- TParentData,
163
- TName extends DeepKeys<TParentData>,
164
- TData extends DeepValue<TParentData, TName>,
165
- TOnMount extends undefined | FieldValidateOrFn<TParentData, TName, TData>,
166
- TOnChange extends undefined | FieldValidateOrFn<TParentData, TName, TData>,
167
- TOnChangeAsync extends
168
- | undefined
169
- | FieldAsyncValidateOrFn<TParentData, TName, TData>,
170
- TOnBlur extends undefined | FieldValidateOrFn<TParentData, TName, TData>,
171
- TOnBlurAsync extends
172
- | undefined
173
- | FieldAsyncValidateOrFn<TParentData, TName, TData>,
174
- TOnSubmit extends undefined | FieldValidateOrFn<TParentData, TName, TData>,
175
- TOnSubmitAsync extends
176
- | undefined
177
- | FieldAsyncValidateOrFn<TParentData, TName, TData>,
178
- TOnDynamic extends undefined | FieldValidateOrFn<TParentData, TName, TData>,
179
- TOnDynamicAsync extends
180
- | undefined
181
- | FieldAsyncValidateOrFn<TParentData, TName, TData>,
182
- TFormOnMount extends undefined | FormValidateOrFn<TParentData>,
183
- TFormOnChange extends undefined | FormValidateOrFn<TParentData>,
184
- TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
185
- TFormOnBlur extends undefined | FormValidateOrFn<TParentData>,
186
- TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
187
- TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>,
188
- TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
189
- TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>,
190
- TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
191
- TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>,
192
- TParentSubmitMeta,
193
- "
194
- >
195
- type Props<
196
- TParentData,
197
- TName extends DeepKeys<TParentData>,
198
- TData extends DeepValue<TParentData, TName>,
199
- TOnMount extends undefined | FieldValidateOrFn<TParentData, TName, TData>,
200
- TOnChange extends undefined | FieldValidateOrFn<TParentData, TName, TData>,
201
- TOnChangeAsync extends
202
- | undefined
203
- | FieldAsyncValidateOrFn<TParentData, TName, TData>,
204
- TOnBlur extends undefined | FieldValidateOrFn<TParentData, TName, TData>,
205
- TOnBlurAsync extends
206
- | undefined
207
- | FieldAsyncValidateOrFn<TParentData, TName, TData>,
208
- TOnSubmit extends undefined | FieldValidateOrFn<TParentData, TName, TData>,
209
- TOnSubmitAsync extends
210
- | undefined
211
- | FieldAsyncValidateOrFn<TParentData, TName, TData>,
212
- TOnDynamic extends undefined | FieldValidateOrFn<TParentData, TName, TData>,
213
- TOnDynamicAsync extends
214
- | undefined
215
- | FieldAsyncValidateOrFn<TParentData, TName, TData>,
216
- TFormOnMount extends undefined | FormValidateOrFn<TParentData>,
217
- TFormOnChange extends undefined | FormValidateOrFn<TParentData>,
218
- TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
219
- TFormOnBlur extends undefined | FormValidateOrFn<TParentData>,
220
- TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
221
- TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>,
222
- TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
223
- TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>,
224
- TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
225
- TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>,
226
- TParentSubmitMeta,
227
- > = {
228
- children: Snippet<
229
- [
230
- FieldApi<
231
- TParentData,
232
- TName,
233
- TData,
234
- TOnMount,
235
- TOnChange,
236
- TOnChangeAsync,
237
- TOnBlur,
238
- TOnBlurAsync,
239
- TOnSubmit,
240
- TOnSubmitAsync,
241
- TOnDynamic,
242
- TOnDynamicAsync,
243
- TFormOnMount,
244
- TFormOnChange,
245
- TFormOnChangeAsync,
246
- TFormOnBlur,
247
- TFormOnBlurAsync,
248
- TFormOnSubmit,
249
- TFormOnSubmitAsync,
250
- TFormOnDynamic,
251
- TFormOnDynamicAsync,
252
- TFormOnServer,
253
- TParentSubmitMeta
254
- >,
255
- ]
256
- >
257
- } & CreateFieldOptions<
258
- TParentData,
259
- TName,
260
- TData,
261
- TOnMount,
262
- TOnChange,
263
- TOnChangeAsync,
264
- TOnBlur,
265
- TOnBlurAsync,
266
- TOnSubmit,
267
- TOnSubmitAsync,
268
- TOnDynamic,
269
- TOnDynamicAsync,
270
- TFormOnMount,
271
- TFormOnChange,
272
- TFormOnChangeAsync,
273
- TFormOnBlur,
274
- TFormOnBlurAsync,
275
- TFormOnSubmit,
276
- TFormOnSubmitAsync,
277
- TFormOnDynamic,
278
- TFormOnDynamicAsync,
279
- TFormOnServer,
280
- TParentSubmitMeta
281
- >
127
+ <script lang="ts">
128
+ import { setContext, untrack, type Snippet } from 'svelte'
129
+ import { fieldContextKey } from './context-keys.js'
130
+
131
+ interface Props extends InternalFieldOptions {
132
+ array?: boolean
133
+ children: Snippet<[any]>
134
+ fieldComponents?: Record<string, any>
135
+ }
282
136
 
283
137
  let {
284
138
  children,
139
+ array = false,
140
+ fieldComponents = {},
285
141
  ...fieldOptions
286
- }: Props<
287
- TParentData,
288
- TName,
289
- TData,
290
- TOnMount,
291
- TOnChange,
292
- TOnChangeAsync,
293
- TOnBlur,
294
- TOnBlurAsync,
295
- TOnSubmit,
296
- TOnSubmitAsync,
297
- TOnDynamic,
298
- TOnDynamicAsync,
299
- TFormOnMount,
300
- TFormOnChange,
301
- TFormOnChangeAsync,
302
- TFormOnBlur,
303
- TFormOnBlurAsync,
304
- TFormOnSubmit,
305
- TFormOnSubmitAsync,
306
- TFormOnDynamic,
307
- TFormOnDynamicAsync,
308
- TFormOnServer,
309
- TParentSubmitMeta
310
- > = $props()
142
+ }: Props = $props()
311
143
 
312
- const fieldApi = createField<
313
- TParentData,
314
- TName,
315
- TData,
316
- TOnMount,
317
- TOnChange,
318
- TOnChangeAsync,
319
- TOnBlur,
320
- TOnBlurAsync,
321
- TOnSubmit,
322
- TOnSubmitAsync,
323
- TOnDynamic,
324
- TOnDynamicAsync,
325
- TFormOnMount,
326
- TFormOnChange,
327
- TFormOnChangeAsync,
328
- TFormOnBlur,
329
- TFormOnBlurAsync,
330
- TFormOnSubmit,
331
- TFormOnSubmitAsync,
332
- TFormOnDynamic,
333
- TFormOnDynamicAsync,
334
- TFormOnServer,
335
- TParentSubmitMeta
336
- >(() => {
337
- return fieldOptions
338
- })
144
+ const fieldApi = createField(
145
+ () => fieldOptions,
146
+ untrack(() => array),
147
+ )
148
+ Object.assign(fieldApi, untrack(() => fieldComponents))
149
+ setContext(fieldContextKey, fieldApi)
339
150
  </script>
340
151
 
341
152
  {@render children(fieldApi)}
@@ -1,33 +1,17 @@
1
- import { type DeepKeys, type DeepValue, FieldApi, type FieldAsyncValidateOrFn, type FieldValidateOrFn, type FormAsyncValidateOrFn, type FormValidateOrFn } from '@tanstack/form-core';
2
- import { type Snippet } from 'svelte';
3
- import type { CreateFieldOptions } from './types.js';
4
- export declare function createField<TParentData, TName extends DeepKeys<TParentData>, TData extends DeepValue<TParentData, TName>, TOnMount extends undefined | FieldValidateOrFn<TParentData, TName, TData>, TOnChange extends undefined | FieldValidateOrFn<TParentData, TName, TData>, TOnChangeAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData>, TOnBlur extends undefined | FieldValidateOrFn<TParentData, TName, TData>, TOnBlurAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData>, TOnSubmit extends undefined | FieldValidateOrFn<TParentData, TName, TData>, TOnSubmitAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData>, TOnDynamic extends undefined | FieldValidateOrFn<TParentData, TName, TData>, TOnDynamicAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData>, TFormOnMount extends undefined | FormValidateOrFn<TParentData>, TFormOnChange extends undefined | FormValidateOrFn<TParentData>, TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>, TFormOnBlur extends undefined | FormValidateOrFn<TParentData>, TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>, TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>, TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>, TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>, TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>, TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>, TParentSubmitMeta>(opts: () => CreateFieldOptions<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta>): FieldApi<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta>;
5
- type Props<TParentData, TName extends DeepKeys<TParentData>, TData extends DeepValue<TParentData, TName>, TOnMount extends undefined | FieldValidateOrFn<TParentData, TName, TData>, TOnChange extends undefined | FieldValidateOrFn<TParentData, TName, TData>, TOnChangeAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData>, TOnBlur extends undefined | FieldValidateOrFn<TParentData, TName, TData>, TOnBlurAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData>, TOnSubmit extends undefined | FieldValidateOrFn<TParentData, TName, TData>, TOnSubmitAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData>, TOnDynamic extends undefined | FieldValidateOrFn<TParentData, TName, TData>, TOnDynamicAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData>, TFormOnMount extends undefined | FormValidateOrFn<TParentData>, TFormOnChange extends undefined | FormValidateOrFn<TParentData>, TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>, TFormOnBlur extends undefined | FormValidateOrFn<TParentData>, TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>, TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>, TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>, TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>, TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>, TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>, TParentSubmitMeta> = {
6
- children: Snippet<[
7
- FieldApi<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta>
8
- ]>;
9
- } & CreateFieldOptions<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta>;
10
- declare function $$render<TParentData, TName extends DeepKeys<TParentData>, TData extends DeepValue<TParentData, TName>, TOnMount extends undefined | FieldValidateOrFn<TParentData, TName, TData>, TOnChange extends undefined | FieldValidateOrFn<TParentData, TName, TData>, TOnChangeAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData>, TOnBlur extends undefined | FieldValidateOrFn<TParentData, TName, TData>, TOnBlurAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData>, TOnSubmit extends undefined | FieldValidateOrFn<TParentData, TName, TData>, TOnSubmitAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData>, TOnDynamic extends undefined | FieldValidateOrFn<TParentData, TName, TData>, TOnDynamicAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData>, TFormOnMount extends undefined | FormValidateOrFn<TParentData>, TFormOnChange extends undefined | FormValidateOrFn<TParentData>, TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>, TFormOnBlur extends undefined | FormValidateOrFn<TParentData>, TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>, TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>, TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>, TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>, TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>, TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>, TParentSubmitMeta>(): {
11
- props: Props<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta>;
12
- exports: {};
13
- bindings: "";
14
- slots: {};
15
- events: {};
16
- };
17
- declare class __sveltets_Render<TParentData, TName extends DeepKeys<TParentData>, TData extends DeepValue<TParentData, TName>, TOnMount extends undefined | FieldValidateOrFn<TParentData, TName, TData>, TOnChange extends undefined | FieldValidateOrFn<TParentData, TName, TData>, TOnChangeAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData>, TOnBlur extends undefined | FieldValidateOrFn<TParentData, TName, TData>, TOnBlurAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData>, TOnSubmit extends undefined | FieldValidateOrFn<TParentData, TName, TData>, TOnSubmitAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData>, TOnDynamic extends undefined | FieldValidateOrFn<TParentData, TName, TData>, TOnDynamicAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData>, TFormOnMount extends undefined | FormValidateOrFn<TParentData>, TFormOnChange extends undefined | FormValidateOrFn<TParentData>, TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>, TFormOnBlur extends undefined | FormValidateOrFn<TParentData>, TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>, TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>, TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>, TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>, TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>, TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>, TParentSubmitMeta> {
18
- props(): ReturnType<typeof $$render<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta>>['props'];
19
- events(): ReturnType<typeof $$render<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta>>['events'];
20
- slots(): ReturnType<typeof $$render<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta>>['slots'];
21
- bindings(): "";
22
- exports(): {};
1
+ import type { FieldApi, FieldApiOptions, FieldValidators, FormErrorTypes, ToFieldError } from '@tanstack/form-core';
2
+ import type { AnyInternalFormApi } from '@tanstack/form-core/internals';
3
+ interface InternalFieldOptions extends FieldApiOptions<any, any, any, any, any, any, any> {
4
+ form: AnyInternalFormApi;
23
5
  }
24
- interface $$IsomorphicComponent {
25
- new <TParentData, TName extends DeepKeys<TParentData>, TData extends DeepValue<TParentData, TName>, TOnMount extends undefined | FieldValidateOrFn<TParentData, TName, TData>, TOnChange extends undefined | FieldValidateOrFn<TParentData, TName, TData>, TOnChangeAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData>, TOnBlur extends undefined | FieldValidateOrFn<TParentData, TName, TData>, TOnBlurAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData>, TOnSubmit extends undefined | FieldValidateOrFn<TParentData, TName, TData>, TOnSubmitAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData>, TOnDynamic extends undefined | FieldValidateOrFn<TParentData, TName, TData>, TOnDynamicAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData>, TFormOnMount extends undefined | FormValidateOrFn<TParentData>, TFormOnChange extends undefined | FormValidateOrFn<TParentData>, TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>, TFormOnBlur extends undefined | FormValidateOrFn<TParentData>, TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>, TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>, TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>, TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>, TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>, TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>, TParentSubmitMeta>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta>['props']>, ReturnType<__sveltets_Render<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta>['events']>, ReturnType<__sveltets_Render<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta>['slots']>> & {
26
- $$bindings?: ReturnType<__sveltets_Render<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta>['bindings']>;
27
- } & ReturnType<__sveltets_Render<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta>['exports']>;
28
- <TParentData, TName extends DeepKeys<TParentData>, TData extends DeepValue<TParentData, TName>, TOnMount extends undefined | FieldValidateOrFn<TParentData, TName, TData>, TOnChange extends undefined | FieldValidateOrFn<TParentData, TName, TData>, TOnChangeAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData>, TOnBlur extends undefined | FieldValidateOrFn<TParentData, TName, TData>, TOnBlurAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData>, TOnSubmit extends undefined | FieldValidateOrFn<TParentData, TName, TData>, TOnSubmitAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData>, TOnDynamic extends undefined | FieldValidateOrFn<TParentData, TName, TData>, TOnDynamicAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData>, TFormOnMount extends undefined | FormValidateOrFn<TParentData>, TFormOnChange extends undefined | FormValidateOrFn<TParentData>, TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>, TFormOnBlur extends undefined | FormValidateOrFn<TParentData>, TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>, TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>, TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>, TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>, TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>, TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>, TParentSubmitMeta>(internal: unknown, props: ReturnType<__sveltets_Render<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta>['props']> & {}): ReturnType<__sveltets_Render<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta>['exports']>;
29
- z_$$bindings?: ReturnType<__sveltets_Render<any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any>['bindings']>;
6
+ export declare function createField<TFieldData, TFieldName, TFieldValue, const TFieldValidators extends FieldValidators<TFieldData, TFieldName, TFieldValue>, TGroupFieldError, TFormData, TFormErrorTypes extends FormErrorTypes>(options: () => FieldApiOptions<TFieldData, TFieldName, TFieldValue, TFieldValidators, TGroupFieldError, TFormData, TFormErrorTypes> & {
7
+ form: AnyInternalFormApi;
8
+ }, array?: boolean): FieldApi<TFieldName, TFieldValue, ToFieldError<TFieldValidators, TGroupFieldError, TFormErrorTypes>, TFormData, TFormErrorTypes>;
9
+ import { type Snippet } from 'svelte';
10
+ interface Props extends InternalFieldOptions {
11
+ array?: boolean;
12
+ children: Snippet<[any]>;
13
+ fieldComponents?: Record<string, any>;
30
14
  }
31
- declare const Field: $$IsomorphicComponent;
32
- type Field<TParentData, TName extends DeepKeys<TParentData>, TData extends DeepValue<TParentData, TName>, TOnMount extends undefined | FieldValidateOrFn<TParentData, TName, TData>, TOnChange extends undefined | FieldValidateOrFn<TParentData, TName, TData>, TOnChangeAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData>, TOnBlur extends undefined | FieldValidateOrFn<TParentData, TName, TData>, TOnBlurAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData>, TOnSubmit extends undefined | FieldValidateOrFn<TParentData, TName, TData>, TOnSubmitAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData>, TOnDynamic extends undefined | FieldValidateOrFn<TParentData, TName, TData>, TOnDynamicAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData>, TFormOnMount extends undefined | FormValidateOrFn<TParentData>, TFormOnChange extends undefined | FormValidateOrFn<TParentData>, TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>, TFormOnBlur extends undefined | FormValidateOrFn<TParentData>, TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>, TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>, TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>, TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>, TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>, TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>, TParentSubmitMeta> = InstanceType<typeof Field<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta>>;
15
+ declare const Field: import("svelte").Component<Props, {}, "">;
16
+ type Field = ReturnType<typeof Field>;
33
17
  export default Field;
@@ -0,0 +1,15 @@
1
+ import type { DeepKeys, DeepKeysWhereValueIncludes, DeepValue, FieldValidators, FormApiArrayMethods, FormApiFieldMethods, FormErrorTypes, FormState, ValidationIssue } from '@tanstack/form-core';
2
+ import type { Component, ComponentConstructorOptions, SvelteComponent } from 'svelte';
3
+ import type { SvelteFormFieldProps, SvelteFormSubscribeProps, WithoutFunction } from '../Components.public';
4
+ import type { ReadonlyAtom } from '@tanstack/svelte-store';
5
+ export type FieldGroupFieldComponent<TFieldData, TFieldComponents extends Record<string, Component<any>>> = (new <const TFieldName extends DeepKeys<TFieldData>>(options: ComponentConstructorOptions<SvelteFormFieldProps<TFieldData, TFieldName, DeepValue<TFieldData, TFieldName>, FieldValidators<TFieldData, TFieldName, DeepValue<TFieldData, TFieldName>>, ValidationIssue, unknown, FormErrorTypes, TFieldComponents>>) => SvelteComponent) & Component<any> & WithoutFunction<Component>;
6
+ export type FieldGroupArrayFieldComponent<TFieldData, TFieldComponents extends Record<string, Component<any>>> = (new <const TFieldName extends DeepKeysWhereValueIncludes<TFieldData, Array<any>>>(options: ComponentConstructorOptions<SvelteFormFieldProps<TFieldData, TFieldName, DeepValue<TFieldData, TFieldName>, FieldValidators<TFieldData, TFieldName, DeepValue<TFieldData, TFieldName>>, ValidationIssue, unknown, FormErrorTypes, TFieldComponents>>) => SvelteComponent) & Component<any> & WithoutFunction<Component>;
7
+ export type FieldGroupSubscribeComponent = (new <TSelected>(options: ComponentConstructorOptions<SvelteFormSubscribeProps<unknown, FormErrorTypes, TSelected>>) => SvelteComponent) & Component<any> & WithoutFunction<Component>;
8
+ export interface FieldGroupApi<TFieldData, TFieldComponents extends Record<string, Component<any>> = Record<never, never>> extends FormApiFieldMethods<TFieldData>, FormApiArrayMethods<TFieldData> {
9
+ atom: ReadonlyAtom<TFieldData>;
10
+ Field: FieldGroupFieldComponent<TFieldData, TFieldComponents>;
11
+ ArrayField: FieldGroupArrayFieldComponent<TFieldData, TFieldComponents>;
12
+ Subscribe: FieldGroupSubscribeComponent;
13
+ }
14
+ export type AnyFieldGroupApi = FieldGroupApi<any, Record<string, Component<any>>>;
15
+ export type FieldGroupFormState = FormState<unknown, FormErrorTypes>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,5 @@
1
+ import type { Component } from 'svelte';
2
+ export declare function defineFieldGroupRuntime<TFields extends Record<string, unknown>>(defineFieldGroupFn: (helperRuntime: any) => TFields): {
3
+ fields: TFields;
4
+ bindComponent: (Component: Component<any>, fieldsPropName: string) => Component<any, {}, string>;
5
+ };
@@ -0,0 +1,44 @@
1
+ import { InternalFieldGroupApi, defineFieldGroupFieldsRuntime, fieldGroupHelperRuntime, } from '@tanstack/form-core/internals';
2
+ import { withComponentProps } from '../utils.lib.js';
3
+ function attachSvelteFieldGroupComponents(group, form) {
4
+ const resolveProps = (props) => new Proxy(props, {
5
+ get(target, property, receiver) {
6
+ if (property === 'name' ||
7
+ property === 'validators' ||
8
+ property === 'listeners') {
9
+ return Reflect.get(group._getFormFieldOptions({ ...target }, withComponentProps), property);
10
+ }
11
+ return Reflect.get(target, property, receiver);
12
+ },
13
+ });
14
+ return Object.assign(group, {
15
+ Field: (internals, props) => form.Field(internals, resolveProps(props)),
16
+ ArrayField: (internals, props) => form.ArrayField(internals, resolveProps(props)),
17
+ Subscribe: (internals, props) => form.Subscribe(internals, props),
18
+ });
19
+ }
20
+ export function defineFieldGroupRuntime(defineFieldGroupFn) {
21
+ const fields = defineFieldGroupFieldsRuntime(defineFieldGroupFn(fieldGroupHelperRuntime));
22
+ return {
23
+ fields,
24
+ bindComponent: (Component, fieldsPropName) => withFieldsRuntime(fields, Component, fieldsPropName),
25
+ };
26
+ }
27
+ function withFieldsRuntime(fields, Component, fieldsPropName) {
28
+ const fieldNames = Object.keys(fields);
29
+ return ((internals, props) => {
30
+ const form = props.form;
31
+ if (!form) {
32
+ throw new Error('TanStack Form: Field groups must receive a `form` prop.');
33
+ }
34
+ const api = attachSvelteFieldGroupComponents(new InternalFieldGroupApi({
35
+ form,
36
+ fieldNames,
37
+ getBindings: () => props[fieldsPropName],
38
+ }), form);
39
+ return Component(internals, withComponentProps(props, {
40
+ form: undefined,
41
+ [fieldsPropName]: api,
42
+ }));
43
+ });
44
+ }