@tanstack/svelte-form 1.33.3 → 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
@@ -0,0 +1,70 @@
1
+ import type { DeepKeys, DeepKeysWhereValueIncludes, DeepValue, FormApi } from '@tanstack/form-core';
2
+ import type { Component, ComponentConstructorOptions, SvelteComponent } from 'svelte';
3
+ import type { SvelteTanStackFormComponents, WithoutFunction } from '../Components.public';
4
+ import type { FieldGroupApi } from './FieldGroupApi.public';
5
+ declare const fieldGroupFieldSlotValueSymbol: unique symbol;
6
+ declare const fieldGroupFieldsSymbol: unique symbol;
7
+ declare const fieldGroupFieldComponentsSymbol: unique symbol;
8
+ export type FieldGroupFieldSlotMode = 'strict' | 'loose';
9
+ export interface FieldGroupFieldSlot<out TValue, out TMode extends FieldGroupFieldSlotMode = FieldGroupFieldSlotMode> {
10
+ readonly mode: TMode;
11
+ readonly [fieldGroupFieldSlotValueSymbol]: TValue;
12
+ }
13
+ export type AnyFieldGroupFieldSlot = FieldGroupFieldSlot<any>;
14
+ export type StrictFieldGroupFieldSlot<TValue> = FieldGroupFieldSlot<TValue, 'strict'>;
15
+ export type LooseFieldGroupFieldSlot<TValue> = FieldGroupFieldSlot<TValue, 'loose'>;
16
+ export type FieldGroupFieldSlotValue<TSlot> = TSlot extends FieldGroupFieldSlot<infer TValue> ? TValue : never;
17
+ export type FieldGroupFieldSlotModeOf<TSlot> = TSlot extends FieldGroupFieldSlot<any, infer TMode> ? TMode : never;
18
+ type IsSame<TA, TB> = [TA] extends [TB] ? [TB] extends [TA] ? true : false : false;
19
+ export type FieldGroupFieldSlotAllows<TSlot, TValue> = TSlot extends FieldGroupFieldSlot<infer TAccepted, infer TMode> ? TMode extends 'strict' ? IsSame<TValue, TAccepted> : [TValue] extends [TAccepted] ? true : false : false;
20
+ export type FieldGroupFieldNameForSlot<TData, TSlot extends AnyFieldGroupFieldSlot> = {
21
+ [TName in DeepKeys<TData>]: FieldGroupFieldSlotAllows<TSlot, DeepValue<TData, TName>> extends true ? TName : never;
22
+ }[DeepKeys<TData>];
23
+ export type FieldGroupFields = Record<string, AnyFieldGroupFieldSlot>;
24
+ export type FieldGroupFieldNames<TData, TFields extends FieldGroupFields> = {
25
+ [TName in keyof TFields]: FieldGroupFieldNameForSlot<TData, TFields[TName]>;
26
+ };
27
+ export type FieldGroupFieldData<TFields extends FieldGroupFields> = {
28
+ [TName in keyof TFields]: TFields[TName] extends FieldGroupFieldSlot<infer TValue, any> ? TValue : never;
29
+ };
30
+ export type FieldGroupFieldsOf<TGroup> = TGroup extends {
31
+ readonly [fieldGroupFieldsSymbol]: infer TFields;
32
+ } ? TFields : never;
33
+ export type SvelteFieldGroup<TFields extends FieldGroupFields, TFieldComponents extends Record<string, Component<any>> = Record<never, never>> = FieldGroupApi<FieldGroupFieldData<TFields>, TFieldComponents> & {
34
+ readonly [fieldGroupFieldsSymbol]: TFields;
35
+ readonly [fieldGroupFieldComponentsSymbol]: TFieldComponents;
36
+ };
37
+ export type FieldGroupFieldComponentsOf<TGroup> = TGroup extends {
38
+ readonly [fieldGroupFieldComponentsSymbol]: infer TComponents extends Record<string, Component<any>>;
39
+ } ? TComponents : never;
40
+ export type FieldGroupForm<TFieldComponents extends Record<string, Component<any>> = Record<never, never>, TFormData = any> = FormApi<TFormData, any> & SvelteTanStackFormComponents<TFormData, any, TFieldComponents>;
41
+ export type FieldGroupFieldBindingForSlot<TData, TSlot extends AnyFieldGroupFieldSlot> = TSlot extends FieldGroupFieldSlot<infer TValue, infer TMode> ? TMode extends 'strict' ? FieldGroupFieldNameForSlot<TData, TSlot> : DeepKeysWhereValueIncludes<TData, TValue> : never;
42
+ export type FieldGroupFieldBindings<TFields extends FieldGroupFields, TData = any> = {
43
+ [TName in keyof TFields]: FieldGroupFieldBindingForSlot<TData, TFields[TName]>;
44
+ };
45
+ export type FieldGroupFieldBindingsOf<TGroup, TData> = FieldGroupFieldsOf<TGroup> extends FieldGroupFields ? FieldGroupFieldBindings<FieldGroupFieldsOf<TGroup>, TData> : never;
46
+ export type FieldGroupFieldsPropName<TProps, TGroup> = {
47
+ [TName in keyof TProps]-?: IsSame<TProps[TName], TGroup> extends true ? TName : never;
48
+ }[keyof TProps];
49
+ export type FieldGroupWithFieldsFn<TGroup extends {
50
+ readonly [fieldGroupFieldsSymbol]: FieldGroupFields;
51
+ }> = <TProps extends object, TPropName extends FieldGroupFieldsPropName<TProps, TGroup>>(Component: Component<TProps>, fieldsPropName: TPropName) => (new <TFormData>(options: ComponentConstructorOptions<Omit<TProps, TPropName | 'form'> & {
52
+ form: FieldGroupForm<FieldGroupFieldComponentsOf<TGroup>, TFormData>;
53
+ } & {
54
+ [K in TPropName]: FieldGroupFieldBindingsOf<TGroup, TFormData>;
55
+ }>) => SvelteComponent) & Component<any> & WithoutFunction<Component>;
56
+ export interface FieldGroupHelper {
57
+ strict: <TValue>() => StrictFieldGroupFieldSlot<TValue>;
58
+ loose: <TValue>() => LooseFieldGroupFieldSlot<TValue>;
59
+ }
60
+ export interface FieldGroupDefinition<TFields extends FieldGroupFields, TComponents extends Record<string, Component<any>>> {
61
+ /** The virtual field-group API injected into the bound component. */
62
+ fields: SvelteFieldGroup<TFields, TComponents>;
63
+ /** Binds a component's virtual field API to concrete paths in a form. */
64
+ bindComponent: FieldGroupWithFieldsFn<SvelteFieldGroup<TFields, TComponents>>;
65
+ }
66
+ /** Signature shared by `defineFieldGroup` and app-form field-group definers. */
67
+ export type DefineFieldGroupFn<TComponents extends Record<string, Component<any>>> = <const TFields extends FieldGroupFields>(defineFn: (helper: FieldGroupHelper) => TFields) => FieldGroupDefinition<TFields, TComponents>;
68
+ /** Defines a reusable group of virtual fields. */
69
+ export declare const defineFieldGroup: DefineFieldGroupFn<Record<never, never>>;
70
+ export {};
@@ -0,0 +1,3 @@
1
+ import { defineFieldGroupRuntime } from './withFields.lib';
2
+ /** Defines a reusable group of virtual fields. */
3
+ export const defineFieldGroup = defineFieldGroupRuntime;
@@ -1,322 +1,101 @@
1
1
  <script module lang="ts">
2
- import {
3
- type DeepKeys,
4
- type DeepValue,
2
+ import { InternalFormGroupApi } from '@tanstack/form-core/internals'
3
+ import { useSelector } from '@tanstack/svelte-store'
4
+ import { withComponentProps } from './utils.lib.js'
5
+ import type {
6
+ FormErrorTypes,
5
7
  FormGroupApi,
6
- type FormGroupApiOptions,
7
- type FormGroupAsyncValidateOrFn,
8
- type FormGroupValidateOrFn,
9
- type FormAsyncValidateOrFn,
10
- type FormValidateOrFn,
8
+ FormGroupOptions,
9
+ FormGroupValidators,
10
+ ToFormGroupErrorTypes,
11
11
  } from '@tanstack/form-core'
12
- import { useSelector } from '@tanstack/svelte-store'
13
- import { onMount, type Snippet } from 'svelte'
12
+ import type { AnyInternalFormApi } from '@tanstack/form-core/internals'
14
13
 
15
14
  export function createFormGroup<
16
- TParentData,
17
- TName extends DeepKeys<TParentData>,
18
- TData extends DeepValue<TParentData, TName>,
19
- TOnMount extends
20
- | undefined
21
- | FormGroupValidateOrFn<TParentData, TName, TData>,
22
- TOnChange extends
23
- | undefined
24
- | FormGroupValidateOrFn<TParentData, TName, TData>,
25
- TOnChangeAsync extends
26
- | undefined
27
- | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
28
- TOnBlur extends
29
- | undefined
30
- | FormGroupValidateOrFn<TParentData, TName, TData>,
31
- TOnBlurAsync extends
32
- | undefined
33
- | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
34
- TOnSubmit extends
35
- | undefined
36
- | FormGroupValidateOrFn<TParentData, TName, TData>,
37
- TOnSubmitAsync extends
38
- | undefined
39
- | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
40
- TOnDynamic extends
41
- | undefined
42
- | FormGroupValidateOrFn<TParentData, TName, TData>,
43
- TOnDynamicAsync extends
44
- | undefined
45
- | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
46
- TSubmitMeta,
47
- TFormOnMount extends undefined | FormValidateOrFn<TParentData>,
48
- TFormOnChange extends undefined | FormValidateOrFn<TParentData>,
49
- TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
50
- TFormOnBlur extends undefined | FormValidateOrFn<TParentData>,
51
- TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
52
- TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>,
53
- TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
54
- TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>,
55
- TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
56
- TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>,
57
- TParentSubmitMeta,
15
+ TFormData,
16
+ TGroupName,
17
+ TGroupValue,
18
+ const TGroupValidators extends FormGroupValidators<TGroupValue>,
19
+ TFormErrorTypes extends FormErrorTypes,
58
20
  >(
59
- opts: () => FormGroupApiOptions<
60
- TParentData,
61
- TName,
62
- TData,
63
- TOnMount,
64
- TOnChange,
65
- TOnChangeAsync,
66
- TOnBlur,
67
- TOnBlurAsync,
68
- TOnSubmit,
69
- TOnSubmitAsync,
70
- TOnDynamic,
71
- TOnDynamicAsync,
72
- TSubmitMeta,
73
- TFormOnMount,
74
- TFormOnChange,
75
- TFormOnChangeAsync,
76
- TFormOnBlur,
77
- TFormOnBlurAsync,
78
- TFormOnSubmit,
79
- TFormOnSubmitAsync,
80
- TFormOnDynamic,
81
- TFormOnDynamicAsync,
82
- TFormOnServer,
83
- TParentSubmitMeta
21
+ options: () => FormGroupOptions<
22
+ TFormData,
23
+ TGroupName,
24
+ TGroupValue,
25
+ TGroupValidators,
26
+ TFormErrorTypes
84
27
  >,
85
- ) {
86
- const options = opts()
87
-
88
- const api = new FormGroupApi(options)
89
-
90
- const extendedApi: typeof api = api as never
91
-
92
- let mounted = false
93
- // Instantiates form group meta and removes it when unrendered
94
- onMount(() => {
95
- const cleanupFn = api.mount()
96
- mounted = true
97
- return () => {
98
- cleanupFn()
99
- mounted = false
100
- }
101
- })
28
+ ): FormGroupApi<
29
+ TFormData,
30
+ TGroupName,
31
+ TGroupValue,
32
+ ToFormGroupErrorTypes<TGroupValidators>,
33
+ TFormErrorTypes
34
+ > {
35
+ const group = new InternalFormGroupApi(options() as never)
102
36
 
103
37
  $effect.pre(() => {
104
- // Invoke options function before mounted check, else it wouldn't rerun on changes to options.
105
- // Changes to options are seen by the effect because signals inside them are picked up.
106
- const current = opts()
107
- if (!mounted) return
108
- api.update(current)
38
+ group.update(options() as never)
109
39
  })
40
+ $effect(() => {
41
+ group.mount()
42
+ return () => group._cleanup()
43
+ })
44
+
45
+ const state = useSelector(group.atom)
110
46
 
111
- const storeSub = useSelector(api.store)
112
- Object.defineProperty(extendedApi, 'state', {
113
- get() {
114
- return storeSub.current
47
+ return new Proxy({} as typeof group, {
48
+ get(target, property) {
49
+ if (Reflect.has(target, property)) return Reflect.get(target, property)
50
+ if (property === 'state') return state.current
51
+ if (property === 'value') return state.current.values
52
+ const value = Reflect.get(group, property, group)
53
+ return typeof value === 'function' ? value.bind(group) : value
115
54
  },
116
- })
55
+ }) as never
56
+ }
117
57
 
118
- return extendedApi
58
+ export function attachGroupComponents(
59
+ group: any,
60
+ form: AnyInternalFormApi & Record<string, any>,
61
+ ) {
62
+ group.Field = (internals: any, props: any) =>
63
+ form.Field(
64
+ internals,
65
+ group._getFormFieldOptions(props, withComponentProps),
66
+ )
67
+ group.ArrayField = (internals: any, props: any) =>
68
+ form.ArrayField(
69
+ internals,
70
+ group._getFormFieldOptions(props, withComponentProps),
71
+ )
72
+ group.Subscribe = (internals: any, props: any) =>
73
+ form._Subscribe(
74
+ internals,
75
+ withComponentProps(props, { source: group.atom }),
76
+ )
77
+ return group
119
78
  }
120
79
  </script>
121
80
 
122
- <script
123
- lang="ts"
124
- generics="
125
- TParentData,
126
- TName extends DeepKeys<TParentData>,
127
- TData extends DeepValue<TParentData, TName>,
128
- TOnMount extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>,
129
- TOnChange extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>,
130
- TOnChangeAsync extends
131
- | undefined
132
- | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
133
- TOnBlur extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>,
134
- TOnBlurAsync extends
135
- | undefined
136
- | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
137
- TOnSubmit extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>,
138
- TOnSubmitAsync extends
139
- | undefined
140
- | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
141
- TOnDynamic extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>,
142
- TOnDynamicAsync extends
143
- | undefined
144
- | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
145
- TSubmitMeta,
146
- TFormOnMount extends undefined | FormValidateOrFn<TParentData>,
147
- TFormOnChange extends undefined | FormValidateOrFn<TParentData>,
148
- TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
149
- TFormOnBlur extends undefined | FormValidateOrFn<TParentData>,
150
- TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
151
- TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>,
152
- TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
153
- TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>,
154
- TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
155
- TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>,
156
- TParentSubmitMeta,
157
- "
158
- >
159
- import type { FormGroupApi as FormGroupApiType } from '@tanstack/form-core'
160
-
161
- type Props<
162
- TParentData,
163
- TName extends DeepKeys<TParentData>,
164
- TData extends DeepValue<TParentData, TName>,
165
- TOnMount extends
166
- | undefined
167
- | FormGroupValidateOrFn<TParentData, TName, TData>,
168
- TOnChange extends
169
- | undefined
170
- | FormGroupValidateOrFn<TParentData, TName, TData>,
171
- TOnChangeAsync extends
172
- | undefined
173
- | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
174
- TOnBlur extends
175
- | undefined
176
- | FormGroupValidateOrFn<TParentData, TName, TData>,
177
- TOnBlurAsync extends
178
- | undefined
179
- | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
180
- TOnSubmit extends
181
- | undefined
182
- | FormGroupValidateOrFn<TParentData, TName, TData>,
183
- TOnSubmitAsync extends
184
- | undefined
185
- | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
186
- TOnDynamic extends
187
- | undefined
188
- | FormGroupValidateOrFn<TParentData, TName, TData>,
189
- TOnDynamicAsync extends
190
- | undefined
191
- | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
192
- TSubmitMeta,
193
- TFormOnMount extends undefined | FormValidateOrFn<TParentData>,
194
- TFormOnChange extends undefined | FormValidateOrFn<TParentData>,
195
- TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
196
- TFormOnBlur extends undefined | FormValidateOrFn<TParentData>,
197
- TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
198
- TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>,
199
- TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
200
- TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>,
201
- TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
202
- TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>,
203
- TParentSubmitMeta,
204
- > = {
205
- children: Snippet<
206
- [
207
- FormGroupApiType<
208
- TParentData,
209
- TName,
210
- TData,
211
- TOnMount,
212
- TOnChange,
213
- TOnChangeAsync,
214
- TOnBlur,
215
- TOnBlurAsync,
216
- TOnSubmit,
217
- TOnSubmitAsync,
218
- TOnDynamic,
219
- TOnDynamicAsync,
220
- TSubmitMeta,
221
- TFormOnMount,
222
- TFormOnChange,
223
- TFormOnChangeAsync,
224
- TFormOnBlur,
225
- TFormOnBlurAsync,
226
- TFormOnSubmit,
227
- TFormOnSubmitAsync,
228
- TFormOnDynamic,
229
- TFormOnDynamicAsync,
230
- TFormOnServer,
231
- TParentSubmitMeta
232
- >,
233
- ]
234
- >
235
- } & FormGroupApiOptions<
236
- TParentData,
237
- TName,
238
- TData,
239
- TOnMount,
240
- TOnChange,
241
- TOnChangeAsync,
242
- TOnBlur,
243
- TOnBlurAsync,
244
- TOnSubmit,
245
- TOnSubmitAsync,
246
- TOnDynamic,
247
- TOnDynamicAsync,
248
- TSubmitMeta,
249
- TFormOnMount,
250
- TFormOnChange,
251
- TFormOnChangeAsync,
252
- TFormOnBlur,
253
- TFormOnBlurAsync,
254
- TFormOnSubmit,
255
- TFormOnSubmitAsync,
256
- TFormOnDynamic,
257
- TFormOnDynamicAsync,
258
- TFormOnServer,
259
- TParentSubmitMeta
260
- >
81
+ <script lang="ts">
82
+ import { untrack, type Snippet } from 'svelte'
261
83
 
262
- let {
263
- children,
264
- ...formGroupOptions
265
- }: Props<
266
- TParentData,
267
- TName,
268
- TData,
269
- TOnMount,
270
- TOnChange,
271
- TOnChangeAsync,
272
- TOnBlur,
273
- TOnBlurAsync,
274
- TOnSubmit,
275
- TOnSubmitAsync,
276
- TOnDynamic,
277
- TOnDynamicAsync,
278
- TSubmitMeta,
279
- TFormOnMount,
280
- TFormOnChange,
281
- TFormOnChangeAsync,
282
- TFormOnBlur,
283
- TFormOnBlurAsync,
284
- TFormOnSubmit,
285
- TFormOnSubmitAsync,
286
- TFormOnDynamic,
287
- TFormOnDynamicAsync,
288
- TFormOnServer,
289
- TParentSubmitMeta
290
- > = $props()
84
+ interface Props {
85
+ form: AnyInternalFormApi & Record<string, any>
86
+ children: Snippet<[any]>
87
+ name: string
88
+ validators?: any
89
+ onSubmit?: any
90
+ onSubmitInvalid?: any
91
+ }
291
92
 
292
- const formGroupApi = createFormGroup<
293
- TParentData,
294
- TName,
295
- TData,
296
- TOnMount,
297
- TOnChange,
298
- TOnChangeAsync,
299
- TOnBlur,
300
- TOnBlurAsync,
301
- TOnSubmit,
302
- TOnSubmitAsync,
303
- TOnDynamic,
304
- TOnDynamicAsync,
305
- TSubmitMeta,
306
- TFormOnMount,
307
- TFormOnChange,
308
- TFormOnChangeAsync,
309
- TFormOnBlur,
310
- TFormOnBlurAsync,
311
- TFormOnSubmit,
312
- TFormOnSubmitAsync,
313
- TFormOnDynamic,
314
- TFormOnDynamicAsync,
315
- TFormOnServer,
316
- TParentSubmitMeta
317
- >(() => {
318
- return formGroupOptions
319
- })
93
+ let { children, form, ...groupOptions }: Props = $props()
94
+ const initialForm = untrack(() => form)
95
+ const groupApi = attachGroupComponents(
96
+ createFormGroup(() => ({ ...groupOptions, form: initialForm }) as never),
97
+ initialForm,
98
+ )
320
99
  </script>
321
100
 
322
- {@render children(formGroupApi)}
101
+ {@render children(groupApi)}
@@ -1,33 +1,16 @@
1
- import { type DeepKeys, type DeepValue, FormGroupApi, type FormGroupApiOptions, type FormGroupAsyncValidateOrFn, type FormGroupValidateOrFn, type FormAsyncValidateOrFn, type FormValidateOrFn } from '@tanstack/form-core';
1
+ import type { FormErrorTypes, FormGroupApi, FormGroupOptions, FormGroupValidators, ToFormGroupErrorTypes } from '@tanstack/form-core';
2
+ import type { AnyInternalFormApi } from '@tanstack/form-core/internals';
3
+ export declare function createFormGroup<TFormData, TGroupName, TGroupValue, const TGroupValidators extends FormGroupValidators<TGroupValue>, TFormErrorTypes extends FormErrorTypes>(options: () => FormGroupOptions<TFormData, TGroupName, TGroupValue, TGroupValidators, TFormErrorTypes>): FormGroupApi<TFormData, TGroupName, TGroupValue, ToFormGroupErrorTypes<TGroupValidators>, TFormErrorTypes>;
4
+ export declare function attachGroupComponents(group: any, form: AnyInternalFormApi & Record<string, any>): any;
2
5
  import { type Snippet } from 'svelte';
3
- export declare function createFormGroup<TParentData, TName extends DeepKeys<TParentData>, TData extends DeepValue<TParentData, TName>, TOnMount extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, TOnChange extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, TOnChangeAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TOnBlur extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, TOnBlurAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TOnSubmit extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, TOnSubmitAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TOnDynamic extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, TOnDynamicAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TSubmitMeta, 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: () => FormGroupApiOptions<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TSubmitMeta, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta>): FormGroupApi<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TSubmitMeta, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta>;
4
- import type { FormGroupApi as FormGroupApiType } from '@tanstack/form-core';
5
- type Props<TParentData, TName extends DeepKeys<TParentData>, TData extends DeepValue<TParentData, TName>, TOnMount extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, TOnChange extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, TOnChangeAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TOnBlur extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, TOnBlurAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TOnSubmit extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, TOnSubmitAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TOnDynamic extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, TOnDynamicAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TSubmitMeta, 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
- FormGroupApiType<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TSubmitMeta, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta>
8
- ]>;
9
- } & FormGroupApiOptions<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TSubmitMeta, 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 | FormGroupValidateOrFn<TParentData, TName, TData>, TOnChange extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, TOnChangeAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TOnBlur extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, TOnBlurAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TOnSubmit extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, TOnSubmitAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TOnDynamic extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, TOnDynamicAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TSubmitMeta, 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, TSubmitMeta, 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 | FormGroupValidateOrFn<TParentData, TName, TData>, TOnChange extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, TOnChangeAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TOnBlur extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, TOnBlurAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TOnSubmit extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, TOnSubmitAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TOnDynamic extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, TOnDynamicAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TSubmitMeta, 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, TSubmitMeta, 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, TSubmitMeta, 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, TSubmitMeta, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta>>['slots'];
21
- bindings(): "";
22
- exports(): {};
6
+ interface Props {
7
+ form: AnyInternalFormApi & Record<string, any>;
8
+ children: Snippet<[any]>;
9
+ name: string;
10
+ validators?: any;
11
+ onSubmit?: any;
12
+ onSubmitInvalid?: any;
23
13
  }
24
- interface $$IsomorphicComponent {
25
- new <TParentData, TName extends DeepKeys<TParentData>, TData extends DeepValue<TParentData, TName>, TOnMount extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, TOnChange extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, TOnChangeAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TOnBlur extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, TOnBlurAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TOnSubmit extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, TOnSubmitAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TOnDynamic extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, TOnDynamicAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TSubmitMeta, 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, TSubmitMeta, 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, TSubmitMeta, 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, TSubmitMeta, 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, TSubmitMeta, 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, TSubmitMeta, 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, TSubmitMeta, 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 | FormGroupValidateOrFn<TParentData, TName, TData>, TOnChange extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, TOnChangeAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TOnBlur extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, TOnBlurAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TOnSubmit extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, TOnSubmitAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TOnDynamic extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, TOnDynamicAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TSubmitMeta, 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, TSubmitMeta, 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, TSubmitMeta, 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, any>['bindings']>;
30
- }
31
- declare const FormGroup: $$IsomorphicComponent;
32
- type FormGroup<TParentData, TName extends DeepKeys<TParentData>, TData extends DeepValue<TParentData, TName>, TOnMount extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, TOnChange extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, TOnChangeAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TOnBlur extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, TOnBlurAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TOnSubmit extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, TOnSubmitAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TOnDynamic extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, TOnDynamicAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TSubmitMeta, 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 FormGroup<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TSubmitMeta, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta>>;
14
+ declare const FormGroup: import("svelte").Component<Props, {}, "">;
15
+ type FormGroup = ReturnType<typeof FormGroup>;
33
16
  export default FormGroup;
@@ -1,16 +1,26 @@
1
1
  <script lang="ts">
2
2
  import { useSelector } from '@tanstack/svelte-store'
3
+ import { untrack, type Snippet } from 'svelte'
3
4
 
4
- // Don't bother typing this out, this component is only usable through a wrapper
5
5
  interface Props {
6
- children: any
7
- store: any
8
- selector?: (state: any) => any
6
+ children: Snippet<[any]>
7
+ source: any
8
+ selector: (state: any) => any
9
+ when?: (selected: any) => boolean
9
10
  }
10
11
 
11
- let { children, store, selector = (state) => state }: Props = $props()
12
-
13
- const value = useSelector(store, selector)
12
+ let {
13
+ children,
14
+ source,
15
+ selector,
16
+ when = () => true,
17
+ }: Props = $props()
18
+ const value = useSelector(
19
+ untrack(() => source),
20
+ untrack(() => selector),
21
+ )
14
22
  </script>
15
23
 
16
- {@render children(value.current)}
24
+ {#if when(value.current)}
25
+ {@render children(value.current)}
26
+ {/if}
@@ -1,7 +1,9 @@
1
+ import { type Snippet } from 'svelte';
1
2
  interface Props {
2
- children: any;
3
- store: any;
4
- selector?: (state: any) => any;
3
+ children: Snippet<[any]>;
4
+ source: any;
5
+ selector: (state: any) => any;
6
+ when?: (selected: any) => boolean;
5
7
  }
6
8
  declare const Subscribe: import("svelte").Component<Props, {}, "">;
7
9
  type Subscribe = ReturnType<typeof Subscribe>;
@@ -0,0 +1,5 @@
1
+ import type { FormOptions, FormValidators, ToFormErrorTypes } from '@tanstack/form-core';
2
+ import type { SvelteFormApi } from './formApiTypes.public';
3
+ import type { DefaultSvelteFormComponentMap } from './AppForm/componentMap.public';
4
+ export type CreateForm = <TFormData, const TFormValidators extends FormValidators<TFormData>, TSubmitReturn>(options: () => FormOptions<TFormData, TFormValidators, TSubmitReturn>) => SvelteFormApi<TFormData, ToFormErrorTypes<TFormValidators, TSubmitReturn>, DefaultSvelteFormComponentMap>;
5
+ export declare const createForm: CreateForm;
@@ -0,0 +1,5 @@
1
+ import { createInternalForm, initializeForm } from './createForm.svelte';
2
+ function createFormImpl(options) {
3
+ return createInternalForm(options, initializeForm);
4
+ }
5
+ export const createForm = createFormImpl;