@tanstack/solid-form 1.27.3 → 1.27.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,8 +2,8 @@
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const web = require("solid-js/web");
4
4
  const solidJs = require("solid-js");
5
- const createForm = require("./createForm.cjs");
6
5
  const createFieldGroup = require("./createFieldGroup.cjs");
6
+ const createForm = require("./createForm.cjs");
7
7
  function createFormHookContexts() {
8
8
  const fieldContext = solidJs.createContext(null);
9
9
  function useFieldContext() {
@@ -45,7 +45,7 @@ function createFormHook(opts) {
45
45
  children: (field) => web.createComponent(opts.fieldContext.Provider, {
46
46
  value: field,
47
47
  get children() {
48
- return childProps.children(Object.assign(field, opts.fieldComponents));
48
+ return solidJs.createComponent(() => childProps.children(Object.assign(field, opts.fieldComponents)), {});
49
49
  }
50
50
  })
51
51
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"createFormHook.cjs","sources":["../../src/createFormHook.tsx"],"sourcesContent":["import { createContext, splitProps, useContext } from 'solid-js'\nimport { createForm } from './createForm'\nimport { createFieldGroup } from './createFieldGroup'\nimport type { AppFieldExtendedSolidFieldGroupApi } from './createFieldGroup'\nimport type {\n AnyFieldApi,\n AnyFormApi,\n BaseFormOptions,\n DeepKeysOfType,\n FieldApi,\n FieldsMap,\n FormAsyncValidateOrFn,\n FormOptions,\n FormValidateOrFn,\n} from '@tanstack/form-core'\nimport type {\n Accessor,\n Component,\n Context,\n JSXElement,\n ParentProps,\n} from 'solid-js'\nimport type { FieldComponent } from './createField'\nimport type { SolidFormExtendedApi } from './createForm'\n\n/**\n * TypeScript inferencing is weird.\n *\n * If you have:\n *\n * @example\n *\n * interface Args<T> {\n * arg?: T\n * }\n *\n * function test<T>(arg?: Partial<Args<T>>): T {\n * return 0 as any;\n * }\n *\n * const a = test({});\n *\n * Then `T` will default to `unknown`.\n *\n * However, if we change `test` to be:\n *\n * @example\n *\n * function test<T extends undefined>(arg?: Partial<Args<T>>): T;\n *\n * Then `T` becomes `undefined`.\n *\n * Here, we are checking if the passed type `T` extends `DefaultT` and **only**\n * `DefaultT`, as if that's the case we assume that inferencing has not occurred.\n */\ntype UnwrapOrAny<T> = [unknown] extends [T] ? any : T\ntype UnwrapDefaultOrAny<DefaultT, T> = [DefaultT] extends [T]\n ? [T] extends [DefaultT]\n ? any\n : T\n : T\n\nexport function createFormHookContexts() {\n // We should never hit the `null` case here\n const fieldContext = createContext<Accessor<AnyFieldApi>>(\n null as unknown as Accessor<AnyFieldApi>,\n )\n\n function useFieldContext<TData>() {\n const field = useContext(fieldContext)\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!field) {\n throw new Error(\n '`fieldContext` only works when within a `fieldComponent` passed to `createFormHook`',\n )\n }\n\n return field as Accessor<\n FieldApi<\n any,\n string,\n TData,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any\n >\n >\n }\n\n // We should never hit the `null` case here\n const formContext = createContext<AnyFormApi>(null as unknown as AnyFormApi)\n\n function useFormContext() {\n const form = useContext(formContext)\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!form) {\n throw new Error(\n '`formContext` only works when within a `formComponent` passed to `createFormHook`',\n )\n }\n\n return form as SolidFormExtendedApi<\n // If you need access to the form data, you need to use `withForm` instead\n Record<string, never>,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any\n >\n }\n\n return { fieldContext, useFieldContext, useFormContext, formContext }\n}\n\ninterface CreateFormHookProps<\n TFieldComponents extends Record<string, Component<any>>,\n TFormComponents extends Record<string, Component<any>>,\n> {\n fieldComponents: TFieldComponents\n fieldContext: Context<Accessor<AnyFieldApi>>\n formComponents: TFormComponents\n formContext: Context<AnyFormApi>\n}\n/**\n * @private\n */\nexport type AppFieldExtendedSolidFormApi<\n TFormData,\n TOnMount extends undefined | FormValidateOrFn<TFormData>,\n TOnChange extends undefined | FormValidateOrFn<TFormData>,\n TOnChangeAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnBlur extends undefined | FormValidateOrFn<TFormData>,\n TOnBlurAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnSubmit extends undefined | FormValidateOrFn<TFormData>,\n TOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnDynamic extends undefined | FormValidateOrFn<TFormData>,\n TOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnServer extends undefined | FormAsyncValidateOrFn<TFormData>,\n TSubmitMeta,\n TFieldComponents extends Record<string, Component<any>>,\n TFormComponents extends Record<string, Component<any>>,\n> = SolidFormExtendedApi<\n TFormData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TOnServer,\n TSubmitMeta\n> &\n NoInfer<TFormComponents> & {\n AppField: FieldComponent<\n TFormData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TOnServer,\n TSubmitMeta,\n NoInfer<TFieldComponents>\n >\n AppForm: Component<ParentProps>\n }\n\nexport interface WithFormProps<\n TFormData,\n TOnMount extends undefined | FormValidateOrFn<TFormData>,\n TOnChange extends undefined | FormValidateOrFn<TFormData>,\n TOnChangeAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnBlur extends undefined | FormValidateOrFn<TFormData>,\n TOnBlurAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnSubmit extends undefined | FormValidateOrFn<TFormData>,\n TOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnDynamic extends undefined | FormValidateOrFn<TFormData>,\n TOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnServer extends undefined | FormAsyncValidateOrFn<TFormData>,\n TSubmitMeta,\n TFieldComponents extends Record<string, Component<any>>,\n TFormComponents extends Record<string, Component<any>>,\n TRenderProps extends Record<string, unknown> = Record<string, never>,\n> extends FormOptions<\n TFormData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TOnServer,\n TSubmitMeta\n> {\n // Optional, but adds props to the `render` function outside of `form`\n props?: TRenderProps\n render: (\n props: ParentProps<\n NoInfer<TRenderProps> & {\n form: AppFieldExtendedSolidFormApi<\n TFormData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TOnServer,\n TSubmitMeta,\n TFieldComponents,\n TFormComponents\n >\n }\n >,\n ) => JSXElement\n}\n\nexport interface WithFieldGroupProps<\n TFieldGroupData,\n TFieldComponents extends Record<string, Component<any>>,\n TFormComponents extends Record<string, Component<any>>,\n TSubmitMeta,\n TRenderProps extends Record<string, unknown> = Record<string, never>,\n> extends BaseFormOptions<TFieldGroupData, TSubmitMeta> {\n // Optional, but adds props to the `render` function outside of `form`\n props?: TRenderProps\n render: (\n props: ParentProps<\n NoInfer<TRenderProps> & {\n group: AppFieldExtendedSolidFieldGroupApi<\n unknown,\n TFieldGroupData,\n string | FieldsMap<unknown, TFieldGroupData>,\n undefined | FormValidateOrFn<unknown>,\n undefined | FormValidateOrFn<unknown>,\n undefined | FormAsyncValidateOrFn<unknown>,\n undefined | FormValidateOrFn<unknown>,\n undefined | FormAsyncValidateOrFn<unknown>,\n undefined | FormValidateOrFn<unknown>,\n undefined | FormAsyncValidateOrFn<unknown>,\n undefined | FormValidateOrFn<unknown>,\n undefined | FormAsyncValidateOrFn<unknown>,\n undefined | FormAsyncValidateOrFn<unknown>,\n // this types it as 'never' in the render prop. It should prevent any\n // untyped meta passed to the handleSubmit by accident.\n unknown extends TSubmitMeta ? never : TSubmitMeta,\n TFieldComponents,\n TFormComponents\n >\n }\n >,\n ) => JSXElement\n}\n\nexport function createFormHook<\n const TComponents extends Record<string, Component<any>>,\n const TFormComponents extends Record<string, Component<any>>,\n>(opts: CreateFormHookProps<TComponents, TFormComponents>) {\n function useAppForm<\n TFormData,\n TOnMount extends undefined | FormValidateOrFn<TFormData>,\n TOnChange extends undefined | FormValidateOrFn<TFormData>,\n TOnChangeAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnBlur extends undefined | FormValidateOrFn<TFormData>,\n TOnBlurAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnSubmit extends undefined | FormValidateOrFn<TFormData>,\n TOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnDynamic extends undefined | FormValidateOrFn<TFormData>,\n TOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnServer extends undefined | FormAsyncValidateOrFn<TFormData>,\n TSubmitMeta,\n >(\n props: Accessor<\n FormOptions<\n TFormData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TOnServer,\n TSubmitMeta\n >\n >,\n ): AppFieldExtendedSolidFormApi<\n TFormData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TOnServer,\n TSubmitMeta,\n TComponents,\n TFormComponents\n > {\n const form = createForm(props)\n\n const AppForm = ((formProps) => {\n return (\n <opts.formContext.Provider value={form}>\n {formProps.children}\n </opts.formContext.Provider>\n )\n }) as Component<ParentProps>\n\n const AppField = ((_props) => {\n const [childProps, fieldProps] = splitProps(_props, ['children'])\n return (\n <form.Field {...fieldProps}>\n {(field) => (\n <opts.fieldContext.Provider value={field}>\n {childProps.children(Object.assign(field, opts.fieldComponents))}\n </opts.fieldContext.Provider>\n )}\n </form.Field>\n )\n }) as FieldComponent<\n TFormData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TOnServer,\n TSubmitMeta,\n TComponents\n >\n\n const extendedForm: AppFieldExtendedSolidFormApi<\n TFormData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TOnServer,\n TSubmitMeta,\n TComponents,\n TFormComponents\n > = form as never\n extendedForm.AppField = AppField\n extendedForm.AppForm = AppForm\n for (const [key, value] of Object.entries(opts.formComponents)) {\n // Since it's a generic I need to cast it to an object\n ;(extendedForm as Record<string, any>)[key] = value\n }\n\n return extendedForm\n }\n\n function withForm<\n TFormData,\n TOnMount extends undefined | FormValidateOrFn<TFormData>,\n TOnChange extends undefined | FormValidateOrFn<TFormData>,\n TOnChangeAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnBlur extends undefined | FormValidateOrFn<TFormData>,\n TOnBlurAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnSubmit extends undefined | FormValidateOrFn<TFormData>,\n TOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnDynamic extends undefined | FormValidateOrFn<TFormData>,\n TOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnServer extends undefined | FormAsyncValidateOrFn<TFormData>,\n TSubmitMeta,\n TRenderProps extends Record<string, unknown> = {},\n >({\n render,\n props,\n }: WithFormProps<\n TFormData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TOnServer,\n TSubmitMeta,\n TComponents,\n TFormComponents,\n TRenderProps\n >): WithFormProps<\n UnwrapOrAny<TFormData>,\n UnwrapDefaultOrAny<undefined | FormValidateOrFn<TFormData>, TOnMount>,\n UnwrapDefaultOrAny<undefined | FormValidateOrFn<TFormData>, TOnChange>,\n UnwrapDefaultOrAny<undefined | FormValidateOrFn<TFormData>, TOnChangeAsync>,\n UnwrapDefaultOrAny<undefined | FormValidateOrFn<TFormData>, TOnBlur>,\n UnwrapDefaultOrAny<undefined | FormValidateOrFn<TFormData>, TOnBlurAsync>,\n UnwrapDefaultOrAny<undefined | FormValidateOrFn<TFormData>, TOnSubmit>,\n UnwrapDefaultOrAny<undefined | FormValidateOrFn<TFormData>, TOnSubmitAsync>,\n UnwrapDefaultOrAny<undefined | FormValidateOrFn<TFormData>, TOnDynamic>,\n UnwrapDefaultOrAny<\n undefined | FormValidateOrFn<TFormData>,\n TOnDynamicAsync\n >,\n UnwrapDefaultOrAny<undefined | FormValidateOrFn<TFormData>, TOnServer>,\n UnwrapOrAny<TSubmitMeta>,\n UnwrapOrAny<TComponents>,\n UnwrapOrAny<TFormComponents>,\n UnwrapOrAny<TRenderProps>\n >['render'] {\n return (innerProps) => render({ ...props, ...innerProps })\n }\n\n function withFieldGroup<\n TFieldGroupData,\n TSubmitMeta,\n TRenderProps extends Record<string, unknown> = {},\n >({\n render,\n props,\n defaultValues,\n }: WithFieldGroupProps<\n TFieldGroupData,\n TComponents,\n TFormComponents,\n TSubmitMeta,\n TRenderProps\n >): <\n TFormData,\n TFields extends\n | DeepKeysOfType<TFormData, TFieldGroupData | null | undefined>\n | FieldsMap<TFormData, TFieldGroupData>,\n TOnMount extends undefined | FormValidateOrFn<TFormData>,\n TOnChange extends undefined | FormValidateOrFn<TFormData>,\n TOnChangeAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnBlur extends undefined | FormValidateOrFn<TFormData>,\n TOnBlurAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnSubmit extends undefined | FormValidateOrFn<TFormData>,\n TOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnDynamic extends undefined | FormValidateOrFn<TFormData>,\n TOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnServer extends undefined | FormAsyncValidateOrFn<TFormData>,\n TFormSubmitMeta,\n >(\n params: ParentProps<\n NoInfer<TRenderProps> & {\n form:\n | AppFieldExtendedSolidFormApi<\n TFormData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TOnServer,\n unknown extends TSubmitMeta ? TFormSubmitMeta : TSubmitMeta,\n TComponents,\n TFormComponents\n >\n | AppFieldExtendedSolidFieldGroupApi<\n // Since this only occurs if you nest it within other field groups, it can be more\n // lenient with the types.\n unknown,\n TFormData,\n string | FieldsMap<unknown, TFormData>,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n unknown extends TSubmitMeta ? TFormSubmitMeta : TSubmitMeta,\n TComponents,\n TFormComponents\n >\n fields: TFields\n }\n >,\n ) => JSXElement {\n return function Render(innerProps) {\n const fieldGroupProps = {\n form: innerProps.form,\n fields: innerProps.fields,\n defaultValues,\n formComponents: opts.formComponents,\n }\n const fieldGroupApi = createFieldGroup(() => fieldGroupProps)\n\n return render({ ...props, ...innerProps, group: fieldGroupApi as any })\n }\n }\n\n return {\n useAppForm,\n withForm,\n withFieldGroup,\n }\n}\n"],"names":["createFormHookContexts","fieldContext","createContext","useFieldContext","field","useContext","Error","formContext","useFormContext","form","createFormHook","opts","useAppForm","props","createForm","AppForm","formProps","_$createComponent","Provider","value","children","AppField","_props","childProps","fieldProps","splitProps","Field","_$mergeProps","Object","assign","fieldComponents","extendedForm","key","entries","formComponents","withForm","render","innerProps","withFieldGroup","defaultValues","Render","fieldGroupProps","fields","fieldGroupApi","createFieldGroup","group"],"mappings":";;;;;;AA8DO,SAASA,yBAAyB;AAEvC,QAAMC,eAAeC,QAAAA,cACnB,IACF;AAEA,WAASC,kBAAyB;AAChC,UAAMC,QAAQC,QAAAA,WAAWJ,YAAY;AAGrC,QAAI,CAACG,OAAO;AACV,YAAM,IAAIE,MACR,qFACF;AAAA,IACF;AAEA,WAAOF;AAAAA,EA2BT;AAGA,QAAMG,cAAcL,QAAAA,cAA0B,IAA6B;AAE3E,WAASM,iBAAiB;AACxB,UAAMC,OAAOJ,QAAAA,WAAWE,WAAW;AAGnC,QAAI,CAACE,MAAM;AACT,YAAM,IAAIH,MACR,mFACF;AAAA,IACF;AAEA,WAAOG;AAAAA,EAeT;AAEA,SAAO;AAAA,IAAER;AAAAA,IAAcE;AAAAA,IAAiBK;AAAAA,IAAgBD;AAAAA,EAAAA;AAC1D;AA2JO,SAASG,eAGdC,MAAyD;AACzD,WAASC,WAcPC,OA+BA;AACA,UAAMJ,OAAOK,WAAAA,WAAWD,KAAK;AAE7B,UAAME,WAAYC,CAAAA,cAAc;AAC9B,aAAAC,oBACGN,KAAKJ,YAAYW,UAAQ;AAAA,QAACC,OAAOV;AAAAA,QAAI,IAAAW,WAAA;AAAA,iBACnCJ,UAAUI;AAAAA,QAAQ;AAAA,MAAA,CAAA;AAAA,IAGzB;AAEA,UAAMC,YAAaC,CAAAA,WAAW;AAC5B,YAAM,CAACC,YAAYC,UAAU,IAAIC,QAAAA,WAAWH,QAAQ,CAAC,UAAU,CAAC;AAChE,aAAAL,IAAAA,gBACGR,KAAKiB,OAAKC,IAAAA,WAAKH,YAAU;AAAA,QAAAJ,UACtBhB,CAAAA,UAAKa,IAAAA,gBACJN,KAAKV,aAAaiB,UAAQ;AAAA,UAACC,OAAOf;AAAAA,UAAK,IAAAgB,WAAA;AAAA,mBACrCG,WAAWH,SAASQ,OAAOC,OAAOzB,OAAOO,KAAKmB,eAAe,CAAC;AAAA,UAAC;AAAA,QAAA,CAAA;AAAA,MAAA,CAEnE,CAAA;AAAA,IAGP;AAgBA,UAAMC,eAeFtB;AACJsB,iBAAaV,WAAWA;AACxBU,iBAAahB,UAAUA;AACvB,eAAW,CAACiB,KAAKb,KAAK,KAAKS,OAAOK,QAAQtB,KAAKuB,cAAc,GAAG;AAE5DH,mBAAqCC,GAAG,IAAIb;AAAAA,IAChD;AAEA,WAAOY;AAAAA,EACT;AAEA,WAASI,SAcP;AAAA,IACAC;AAAAA,IACAvB;AAAAA,EAAAA,GAoCU;AACV,WAAQwB,gBAAeD,OAAO;AAAA,MAAE,GAAGvB;AAAAA,MAAO,GAAGwB;AAAAA,IAAAA,CAAY;AAAA,EAC3D;AAEA,WAASC,eAIP;AAAA,IACAF;AAAAA,IACAvB;AAAAA,IACA0B;AAAAA,EAAAA,GAkEc;AACd,WAAO,SAASC,OAAOH,YAAY;AACjC,YAAMI,kBAAkB;AAAA,QACtBhC,MAAM4B,WAAW5B;AAAAA,QACjBiC,QAAQL,WAAWK;AAAAA,QACnBH;AAAAA,QACAL,gBAAgBvB,KAAKuB;AAAAA,MAAAA;AAEvB,YAAMS,gBAAgBC,kCAAiB,MAAMH,eAAe;AAE5D,aAAOL,OAAO;AAAA,QAAE,GAAGvB;AAAAA,QAAO,GAAGwB;AAAAA,QAAYQ,OAAOF;AAAAA,MAAAA,CAAsB;AAAA,IACxE;AAAA,EACF;AAEA,SAAO;AAAA,IACL/B;AAAAA,IACAuB;AAAAA,IACAG;AAAAA,EAAAA;AAEJ;;;"}
1
+ {"version":3,"file":"createFormHook.cjs","sources":["../../src/createFormHook.tsx"],"sourcesContent":["import {\n createComponent,\n createContext,\n splitProps,\n useContext,\n} from 'solid-js'\nimport { createFieldGroup } from './createFieldGroup'\nimport { createForm } from './createForm'\nimport type {\n AnyFieldApi,\n AnyFormApi,\n BaseFormOptions,\n DeepKeysOfType,\n FieldApi,\n FieldsMap,\n FormAsyncValidateOrFn,\n FormOptions,\n FormValidateOrFn,\n} from '@tanstack/form-core'\nimport type {\n Accessor,\n Component,\n Context,\n JSXElement,\n ParentProps,\n} from 'solid-js'\nimport type { FieldComponent } from './createField'\nimport type { AppFieldExtendedSolidFieldGroupApi } from './createFieldGroup'\nimport type { SolidFormExtendedApi } from './createForm'\n\n/**\n * TypeScript inferencing is weird.\n *\n * If you have:\n *\n * @example\n *\n * interface Args<T> {\n * arg?: T\n * }\n *\n * function test<T>(arg?: Partial<Args<T>>): T {\n * return 0 as any;\n * }\n *\n * const a = test({});\n *\n * Then `T` will default to `unknown`.\n *\n * However, if we change `test` to be:\n *\n * @example\n *\n * function test<T extends undefined>(arg?: Partial<Args<T>>): T;\n *\n * Then `T` becomes `undefined`.\n *\n * Here, we are checking if the passed type `T` extends `DefaultT` and **only**\n * `DefaultT`, as if that's the case we assume that inferencing has not occurred.\n */\ntype UnwrapOrAny<T> = [unknown] extends [T] ? any : T\ntype UnwrapDefaultOrAny<DefaultT, T> = [DefaultT] extends [T]\n ? [T] extends [DefaultT]\n ? any\n : T\n : T\n\nexport function createFormHookContexts() {\n // We should never hit the `null` case here\n const fieldContext = createContext<Accessor<AnyFieldApi>>(\n null as unknown as Accessor<AnyFieldApi>,\n )\n\n function useFieldContext<TData>() {\n const field = useContext(fieldContext)\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!field) {\n throw new Error(\n '`fieldContext` only works when within a `fieldComponent` passed to `createFormHook`',\n )\n }\n\n return field as Accessor<\n FieldApi<\n any,\n string,\n TData,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any\n >\n >\n }\n\n // We should never hit the `null` case here\n const formContext = createContext<AnyFormApi>(null as unknown as AnyFormApi)\n\n function useFormContext() {\n const form = useContext(formContext)\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!form) {\n throw new Error(\n '`formContext` only works when within a `formComponent` passed to `createFormHook`',\n )\n }\n\n return form as SolidFormExtendedApi<\n // If you need access to the form data, you need to use `withForm` instead\n Record<string, never>,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any\n >\n }\n\n return { fieldContext, useFieldContext, useFormContext, formContext }\n}\n\ninterface CreateFormHookProps<\n TFieldComponents extends Record<string, Component<any>>,\n TFormComponents extends Record<string, Component<any>>,\n> {\n fieldComponents: TFieldComponents\n fieldContext: Context<Accessor<AnyFieldApi>>\n formComponents: TFormComponents\n formContext: Context<AnyFormApi>\n}\n/**\n * @private\n */\nexport type AppFieldExtendedSolidFormApi<\n TFormData,\n TOnMount extends undefined | FormValidateOrFn<TFormData>,\n TOnChange extends undefined | FormValidateOrFn<TFormData>,\n TOnChangeAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnBlur extends undefined | FormValidateOrFn<TFormData>,\n TOnBlurAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnSubmit extends undefined | FormValidateOrFn<TFormData>,\n TOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnDynamic extends undefined | FormValidateOrFn<TFormData>,\n TOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnServer extends undefined | FormAsyncValidateOrFn<TFormData>,\n TSubmitMeta,\n TFieldComponents extends Record<string, Component<any>>,\n TFormComponents extends Record<string, Component<any>>,\n> = SolidFormExtendedApi<\n TFormData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TOnServer,\n TSubmitMeta\n> &\n NoInfer<TFormComponents> & {\n AppField: FieldComponent<\n TFormData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TOnServer,\n TSubmitMeta,\n NoInfer<TFieldComponents>\n >\n AppForm: Component<ParentProps>\n }\n\nexport interface WithFormProps<\n TFormData,\n TOnMount extends undefined | FormValidateOrFn<TFormData>,\n TOnChange extends undefined | FormValidateOrFn<TFormData>,\n TOnChangeAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnBlur extends undefined | FormValidateOrFn<TFormData>,\n TOnBlurAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnSubmit extends undefined | FormValidateOrFn<TFormData>,\n TOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnDynamic extends undefined | FormValidateOrFn<TFormData>,\n TOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnServer extends undefined | FormAsyncValidateOrFn<TFormData>,\n TSubmitMeta,\n TFieldComponents extends Record<string, Component<any>>,\n TFormComponents extends Record<string, Component<any>>,\n TRenderProps extends Record<string, unknown> = Record<string, never>,\n> extends FormOptions<\n TFormData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TOnServer,\n TSubmitMeta\n> {\n // Optional, but adds props to the `render` function outside of `form`\n props?: TRenderProps\n render: (\n props: ParentProps<\n NoInfer<TRenderProps> & {\n form: AppFieldExtendedSolidFormApi<\n TFormData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TOnServer,\n TSubmitMeta,\n TFieldComponents,\n TFormComponents\n >\n }\n >,\n ) => JSXElement\n}\n\nexport interface WithFieldGroupProps<\n TFieldGroupData,\n TFieldComponents extends Record<string, Component<any>>,\n TFormComponents extends Record<string, Component<any>>,\n TSubmitMeta,\n TRenderProps extends Record<string, unknown> = Record<string, never>,\n> extends BaseFormOptions<TFieldGroupData, TSubmitMeta> {\n // Optional, but adds props to the `render` function outside of `form`\n props?: TRenderProps\n render: (\n props: ParentProps<\n NoInfer<TRenderProps> & {\n group: AppFieldExtendedSolidFieldGroupApi<\n unknown,\n TFieldGroupData,\n string | FieldsMap<unknown, TFieldGroupData>,\n undefined | FormValidateOrFn<unknown>,\n undefined | FormValidateOrFn<unknown>,\n undefined | FormAsyncValidateOrFn<unknown>,\n undefined | FormValidateOrFn<unknown>,\n undefined | FormAsyncValidateOrFn<unknown>,\n undefined | FormValidateOrFn<unknown>,\n undefined | FormAsyncValidateOrFn<unknown>,\n undefined | FormValidateOrFn<unknown>,\n undefined | FormAsyncValidateOrFn<unknown>,\n undefined | FormAsyncValidateOrFn<unknown>,\n // this types it as 'never' in the render prop. It should prevent any\n // untyped meta passed to the handleSubmit by accident.\n unknown extends TSubmitMeta ? never : TSubmitMeta,\n TFieldComponents,\n TFormComponents\n >\n }\n >,\n ) => JSXElement\n}\n\nexport function createFormHook<\n const TComponents extends Record<string, Component<any>>,\n const TFormComponents extends Record<string, Component<any>>,\n>(opts: CreateFormHookProps<TComponents, TFormComponents>) {\n function useAppForm<\n TFormData,\n TOnMount extends undefined | FormValidateOrFn<TFormData>,\n TOnChange extends undefined | FormValidateOrFn<TFormData>,\n TOnChangeAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnBlur extends undefined | FormValidateOrFn<TFormData>,\n TOnBlurAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnSubmit extends undefined | FormValidateOrFn<TFormData>,\n TOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnDynamic extends undefined | FormValidateOrFn<TFormData>,\n TOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnServer extends undefined | FormAsyncValidateOrFn<TFormData>,\n TSubmitMeta,\n >(\n props: Accessor<\n FormOptions<\n TFormData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TOnServer,\n TSubmitMeta\n >\n >,\n ): AppFieldExtendedSolidFormApi<\n TFormData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TOnServer,\n TSubmitMeta,\n TComponents,\n TFormComponents\n > {\n const form = createForm(props)\n\n const AppForm = ((formProps) => {\n return (\n <opts.formContext.Provider value={form}>\n {formProps.children}\n </opts.formContext.Provider>\n )\n }) as Component<ParentProps>\n\n const AppField = ((_props) => {\n const [childProps, fieldProps] = splitProps(_props, ['children'])\n return (\n <form.Field {...fieldProps}>\n {(field) => (\n <opts.fieldContext.Provider value={field}>\n {createComponent(\n () =>\n childProps.children(\n Object.assign(field, opts.fieldComponents),\n ),\n {},\n )}\n </opts.fieldContext.Provider>\n )}\n </form.Field>\n )\n }) as FieldComponent<\n TFormData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TOnServer,\n TSubmitMeta,\n TComponents\n >\n\n const extendedForm: AppFieldExtendedSolidFormApi<\n TFormData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TOnServer,\n TSubmitMeta,\n TComponents,\n TFormComponents\n > = form as never\n extendedForm.AppField = AppField\n extendedForm.AppForm = AppForm\n for (const [key, value] of Object.entries(opts.formComponents)) {\n // Since it's a generic I need to cast it to an object\n ;(extendedForm as Record<string, any>)[key] = value\n }\n\n return extendedForm\n }\n\n function withForm<\n TFormData,\n TOnMount extends undefined | FormValidateOrFn<TFormData>,\n TOnChange extends undefined | FormValidateOrFn<TFormData>,\n TOnChangeAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnBlur extends undefined | FormValidateOrFn<TFormData>,\n TOnBlurAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnSubmit extends undefined | FormValidateOrFn<TFormData>,\n TOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnDynamic extends undefined | FormValidateOrFn<TFormData>,\n TOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnServer extends undefined | FormAsyncValidateOrFn<TFormData>,\n TSubmitMeta,\n TRenderProps extends Record<string, unknown> = {},\n >({\n render,\n props,\n }: WithFormProps<\n TFormData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TOnServer,\n TSubmitMeta,\n TComponents,\n TFormComponents,\n TRenderProps\n >): WithFormProps<\n UnwrapOrAny<TFormData>,\n UnwrapDefaultOrAny<undefined | FormValidateOrFn<TFormData>, TOnMount>,\n UnwrapDefaultOrAny<undefined | FormValidateOrFn<TFormData>, TOnChange>,\n UnwrapDefaultOrAny<undefined | FormValidateOrFn<TFormData>, TOnChangeAsync>,\n UnwrapDefaultOrAny<undefined | FormValidateOrFn<TFormData>, TOnBlur>,\n UnwrapDefaultOrAny<undefined | FormValidateOrFn<TFormData>, TOnBlurAsync>,\n UnwrapDefaultOrAny<undefined | FormValidateOrFn<TFormData>, TOnSubmit>,\n UnwrapDefaultOrAny<undefined | FormValidateOrFn<TFormData>, TOnSubmitAsync>,\n UnwrapDefaultOrAny<undefined | FormValidateOrFn<TFormData>, TOnDynamic>,\n UnwrapDefaultOrAny<\n undefined | FormValidateOrFn<TFormData>,\n TOnDynamicAsync\n >,\n UnwrapDefaultOrAny<undefined | FormValidateOrFn<TFormData>, TOnServer>,\n UnwrapOrAny<TSubmitMeta>,\n UnwrapOrAny<TComponents>,\n UnwrapOrAny<TFormComponents>,\n UnwrapOrAny<TRenderProps>\n >['render'] {\n return (innerProps) => render({ ...props, ...innerProps })\n }\n\n function withFieldGroup<\n TFieldGroupData,\n TSubmitMeta,\n TRenderProps extends Record<string, unknown> = {},\n >({\n render,\n props,\n defaultValues,\n }: WithFieldGroupProps<\n TFieldGroupData,\n TComponents,\n TFormComponents,\n TSubmitMeta,\n TRenderProps\n >): <\n TFormData,\n TFields extends\n | DeepKeysOfType<TFormData, TFieldGroupData | null | undefined>\n | FieldsMap<TFormData, TFieldGroupData>,\n TOnMount extends undefined | FormValidateOrFn<TFormData>,\n TOnChange extends undefined | FormValidateOrFn<TFormData>,\n TOnChangeAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnBlur extends undefined | FormValidateOrFn<TFormData>,\n TOnBlurAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnSubmit extends undefined | FormValidateOrFn<TFormData>,\n TOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnDynamic extends undefined | FormValidateOrFn<TFormData>,\n TOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnServer extends undefined | FormAsyncValidateOrFn<TFormData>,\n TFormSubmitMeta,\n >(\n params: ParentProps<\n NoInfer<TRenderProps> & {\n form:\n | AppFieldExtendedSolidFormApi<\n TFormData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TOnServer,\n unknown extends TSubmitMeta ? TFormSubmitMeta : TSubmitMeta,\n TComponents,\n TFormComponents\n >\n | AppFieldExtendedSolidFieldGroupApi<\n // Since this only occurs if you nest it within other field groups, it can be more\n // lenient with the types.\n unknown,\n TFormData,\n string | FieldsMap<unknown, TFormData>,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n unknown extends TSubmitMeta ? TFormSubmitMeta : TSubmitMeta,\n TComponents,\n TFormComponents\n >\n fields: TFields\n }\n >,\n ) => JSXElement {\n return function Render(innerProps) {\n const fieldGroupProps = {\n form: innerProps.form,\n fields: innerProps.fields,\n defaultValues,\n formComponents: opts.formComponents,\n }\n const fieldGroupApi = createFieldGroup(() => fieldGroupProps)\n\n return render({ ...props, ...innerProps, group: fieldGroupApi as any })\n }\n }\n\n return {\n useAppForm,\n withForm,\n withFieldGroup,\n }\n}\n"],"names":["createFormHookContexts","fieldContext","createContext","useFieldContext","field","useContext","Error","formContext","useFormContext","form","createFormHook","opts","useAppForm","props","createForm","AppForm","formProps","_$createComponent","Provider","value","children","AppField","_props","childProps","fieldProps","splitProps","Field","_$mergeProps","createComponent","Object","assign","fieldComponents","extendedForm","key","entries","formComponents","withForm","render","innerProps","withFieldGroup","defaultValues","Render","fieldGroupProps","fields","fieldGroupApi","createFieldGroup","group"],"mappings":";;;;;;AAmEO,SAASA,yBAAyB;AAEvC,QAAMC,eAAeC,QAAAA,cACnB,IACF;AAEA,WAASC,kBAAyB;AAChC,UAAMC,QAAQC,QAAAA,WAAWJ,YAAY;AAGrC,QAAI,CAACG,OAAO;AACV,YAAM,IAAIE,MACR,qFACF;AAAA,IACF;AAEA,WAAOF;AAAAA,EA2BT;AAGA,QAAMG,cAAcL,QAAAA,cAA0B,IAA6B;AAE3E,WAASM,iBAAiB;AACxB,UAAMC,OAAOJ,QAAAA,WAAWE,WAAW;AAGnC,QAAI,CAACE,MAAM;AACT,YAAM,IAAIH,MACR,mFACF;AAAA,IACF;AAEA,WAAOG;AAAAA,EAeT;AAEA,SAAO;AAAA,IAAER;AAAAA,IAAcE;AAAAA,IAAiBK;AAAAA,IAAgBD;AAAAA,EAAAA;AAC1D;AA2JO,SAASG,eAGdC,MAAyD;AACzD,WAASC,WAcPC,OA+BA;AACA,UAAMJ,OAAOK,WAAAA,WAAWD,KAAK;AAE7B,UAAME,WAAYC,CAAAA,cAAc;AAC9B,aAAAC,oBACGN,KAAKJ,YAAYW,UAAQ;AAAA,QAACC,OAAOV;AAAAA,QAAI,IAAAW,WAAA;AAAA,iBACnCJ,UAAUI;AAAAA,QAAQ;AAAA,MAAA,CAAA;AAAA,IAGzB;AAEA,UAAMC,YAAaC,CAAAA,WAAW;AAC5B,YAAM,CAACC,YAAYC,UAAU,IAAIC,QAAAA,WAAWH,QAAQ,CAAC,UAAU,CAAC;AAChE,aAAAL,IAAAA,gBACGR,KAAKiB,OAAKC,IAAAA,WAAKH,YAAU;AAAA,QAAAJ,UACtBhB,CAAAA,UAAKa,IAAAA,gBACJN,KAAKV,aAAaiB,UAAQ;AAAA,UAACC,OAAOf;AAAAA,UAAK,IAAAgB,WAAA;AAAA,mBACrCQ,wBACC,MACEL,WAAWH,SACTS,OAAOC,OAAO1B,OAAOO,KAAKoB,eAAe,CAC3C,GACF,CAAA,CACF;AAAA,UAAC;AAAA,QAAA,CAAA;AAAA,MAAA,CAEJ,CAAA;AAAA,IAGP;AAgBA,UAAMC,eAeFvB;AACJuB,iBAAaX,WAAWA;AACxBW,iBAAajB,UAAUA;AACvB,eAAW,CAACkB,KAAKd,KAAK,KAAKU,OAAOK,QAAQvB,KAAKwB,cAAc,GAAG;AAE5DH,mBAAqCC,GAAG,IAAId;AAAAA,IAChD;AAEA,WAAOa;AAAAA,EACT;AAEA,WAASI,SAcP;AAAA,IACAC;AAAAA,IACAxB;AAAAA,EAAAA,GAoCU;AACV,WAAQyB,gBAAeD,OAAO;AAAA,MAAE,GAAGxB;AAAAA,MAAO,GAAGyB;AAAAA,IAAAA,CAAY;AAAA,EAC3D;AAEA,WAASC,eAIP;AAAA,IACAF;AAAAA,IACAxB;AAAAA,IACA2B;AAAAA,EAAAA,GAkEc;AACd,WAAO,SAASC,OAAOH,YAAY;AACjC,YAAMI,kBAAkB;AAAA,QACtBjC,MAAM6B,WAAW7B;AAAAA,QACjBkC,QAAQL,WAAWK;AAAAA,QACnBH;AAAAA,QACAL,gBAAgBxB,KAAKwB;AAAAA,MAAAA;AAEvB,YAAMS,gBAAgBC,kCAAiB,MAAMH,eAAe;AAE5D,aAAOL,OAAO;AAAA,QAAE,GAAGxB;AAAAA,QAAO,GAAGyB;AAAAA,QAAYQ,OAAOF;AAAAA,MAAAA,CAAsB;AAAA,IACxE;AAAA,EACF;AAEA,SAAO;AAAA,IACLhC;AAAAA,IACAwB;AAAAA,IACAG;AAAAA,EAAAA;AAEJ;;;"}
@@ -1,7 +1,7 @@
1
- import { AppFieldExtendedSolidFieldGroupApi } from './createFieldGroup.cjs';
2
1
  import { AnyFieldApi, AnyFormApi, BaseFormOptions, DeepKeysOfType, FieldApi, FieldsMap, FormAsyncValidateOrFn, FormOptions, FormValidateOrFn } from '@tanstack/form-core';
3
2
  import { Accessor, Component, Context, JSXElement, ParentProps } from 'solid-js';
4
3
  import { FieldComponent } from './createField.cjs';
4
+ import { AppFieldExtendedSolidFieldGroupApi } from './createFieldGroup.cjs';
5
5
  import { SolidFormExtendedApi } from './createForm.cjs';
6
6
  /**
7
7
  * TypeScript inferencing is weird.
@@ -1,7 +1,7 @@
1
- import { AppFieldExtendedSolidFieldGroupApi } from './createFieldGroup.js';
2
1
  import { AnyFieldApi, AnyFormApi, BaseFormOptions, DeepKeysOfType, FieldApi, FieldsMap, FormAsyncValidateOrFn, FormOptions, FormValidateOrFn } from '@tanstack/form-core';
3
2
  import { Accessor, Component, Context, JSXElement, ParentProps } from 'solid-js';
4
3
  import { FieldComponent } from './createField.js';
4
+ import { AppFieldExtendedSolidFieldGroupApi } from './createFieldGroup.js';
5
5
  import { SolidFormExtendedApi } from './createForm.js';
6
6
  /**
7
7
  * TypeScript inferencing is weird.
@@ -1,7 +1,7 @@
1
1
  import { createComponent, mergeProps } from "solid-js/web";
2
- import { createContext, useContext, splitProps } from "solid-js";
3
- import { createForm } from "./createForm.js";
2
+ import { createContext, useContext, splitProps, createComponent as createComponent$1 } from "solid-js";
4
3
  import { createFieldGroup } from "./createFieldGroup.js";
4
+ import { createForm } from "./createForm.js";
5
5
  function createFormHookContexts() {
6
6
  const fieldContext = createContext(null);
7
7
  function useFieldContext() {
@@ -43,7 +43,7 @@ function createFormHook(opts) {
43
43
  children: (field) => createComponent(opts.fieldContext.Provider, {
44
44
  value: field,
45
45
  get children() {
46
- return childProps.children(Object.assign(field, opts.fieldComponents));
46
+ return createComponent$1(() => childProps.children(Object.assign(field, opts.fieldComponents)), {});
47
47
  }
48
48
  })
49
49
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"createFormHook.js","sources":["../../src/createFormHook.tsx"],"sourcesContent":["import { createContext, splitProps, useContext } from 'solid-js'\nimport { createForm } from './createForm'\nimport { createFieldGroup } from './createFieldGroup'\nimport type { AppFieldExtendedSolidFieldGroupApi } from './createFieldGroup'\nimport type {\n AnyFieldApi,\n AnyFormApi,\n BaseFormOptions,\n DeepKeysOfType,\n FieldApi,\n FieldsMap,\n FormAsyncValidateOrFn,\n FormOptions,\n FormValidateOrFn,\n} from '@tanstack/form-core'\nimport type {\n Accessor,\n Component,\n Context,\n JSXElement,\n ParentProps,\n} from 'solid-js'\nimport type { FieldComponent } from './createField'\nimport type { SolidFormExtendedApi } from './createForm'\n\n/**\n * TypeScript inferencing is weird.\n *\n * If you have:\n *\n * @example\n *\n * interface Args<T> {\n * arg?: T\n * }\n *\n * function test<T>(arg?: Partial<Args<T>>): T {\n * return 0 as any;\n * }\n *\n * const a = test({});\n *\n * Then `T` will default to `unknown`.\n *\n * However, if we change `test` to be:\n *\n * @example\n *\n * function test<T extends undefined>(arg?: Partial<Args<T>>): T;\n *\n * Then `T` becomes `undefined`.\n *\n * Here, we are checking if the passed type `T` extends `DefaultT` and **only**\n * `DefaultT`, as if that's the case we assume that inferencing has not occurred.\n */\ntype UnwrapOrAny<T> = [unknown] extends [T] ? any : T\ntype UnwrapDefaultOrAny<DefaultT, T> = [DefaultT] extends [T]\n ? [T] extends [DefaultT]\n ? any\n : T\n : T\n\nexport function createFormHookContexts() {\n // We should never hit the `null` case here\n const fieldContext = createContext<Accessor<AnyFieldApi>>(\n null as unknown as Accessor<AnyFieldApi>,\n )\n\n function useFieldContext<TData>() {\n const field = useContext(fieldContext)\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!field) {\n throw new Error(\n '`fieldContext` only works when within a `fieldComponent` passed to `createFormHook`',\n )\n }\n\n return field as Accessor<\n FieldApi<\n any,\n string,\n TData,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any\n >\n >\n }\n\n // We should never hit the `null` case here\n const formContext = createContext<AnyFormApi>(null as unknown as AnyFormApi)\n\n function useFormContext() {\n const form = useContext(formContext)\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!form) {\n throw new Error(\n '`formContext` only works when within a `formComponent` passed to `createFormHook`',\n )\n }\n\n return form as SolidFormExtendedApi<\n // If you need access to the form data, you need to use `withForm` instead\n Record<string, never>,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any\n >\n }\n\n return { fieldContext, useFieldContext, useFormContext, formContext }\n}\n\ninterface CreateFormHookProps<\n TFieldComponents extends Record<string, Component<any>>,\n TFormComponents extends Record<string, Component<any>>,\n> {\n fieldComponents: TFieldComponents\n fieldContext: Context<Accessor<AnyFieldApi>>\n formComponents: TFormComponents\n formContext: Context<AnyFormApi>\n}\n/**\n * @private\n */\nexport type AppFieldExtendedSolidFormApi<\n TFormData,\n TOnMount extends undefined | FormValidateOrFn<TFormData>,\n TOnChange extends undefined | FormValidateOrFn<TFormData>,\n TOnChangeAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnBlur extends undefined | FormValidateOrFn<TFormData>,\n TOnBlurAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnSubmit extends undefined | FormValidateOrFn<TFormData>,\n TOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnDynamic extends undefined | FormValidateOrFn<TFormData>,\n TOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnServer extends undefined | FormAsyncValidateOrFn<TFormData>,\n TSubmitMeta,\n TFieldComponents extends Record<string, Component<any>>,\n TFormComponents extends Record<string, Component<any>>,\n> = SolidFormExtendedApi<\n TFormData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TOnServer,\n TSubmitMeta\n> &\n NoInfer<TFormComponents> & {\n AppField: FieldComponent<\n TFormData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TOnServer,\n TSubmitMeta,\n NoInfer<TFieldComponents>\n >\n AppForm: Component<ParentProps>\n }\n\nexport interface WithFormProps<\n TFormData,\n TOnMount extends undefined | FormValidateOrFn<TFormData>,\n TOnChange extends undefined | FormValidateOrFn<TFormData>,\n TOnChangeAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnBlur extends undefined | FormValidateOrFn<TFormData>,\n TOnBlurAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnSubmit extends undefined | FormValidateOrFn<TFormData>,\n TOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnDynamic extends undefined | FormValidateOrFn<TFormData>,\n TOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnServer extends undefined | FormAsyncValidateOrFn<TFormData>,\n TSubmitMeta,\n TFieldComponents extends Record<string, Component<any>>,\n TFormComponents extends Record<string, Component<any>>,\n TRenderProps extends Record<string, unknown> = Record<string, never>,\n> extends FormOptions<\n TFormData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TOnServer,\n TSubmitMeta\n> {\n // Optional, but adds props to the `render` function outside of `form`\n props?: TRenderProps\n render: (\n props: ParentProps<\n NoInfer<TRenderProps> & {\n form: AppFieldExtendedSolidFormApi<\n TFormData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TOnServer,\n TSubmitMeta,\n TFieldComponents,\n TFormComponents\n >\n }\n >,\n ) => JSXElement\n}\n\nexport interface WithFieldGroupProps<\n TFieldGroupData,\n TFieldComponents extends Record<string, Component<any>>,\n TFormComponents extends Record<string, Component<any>>,\n TSubmitMeta,\n TRenderProps extends Record<string, unknown> = Record<string, never>,\n> extends BaseFormOptions<TFieldGroupData, TSubmitMeta> {\n // Optional, but adds props to the `render` function outside of `form`\n props?: TRenderProps\n render: (\n props: ParentProps<\n NoInfer<TRenderProps> & {\n group: AppFieldExtendedSolidFieldGroupApi<\n unknown,\n TFieldGroupData,\n string | FieldsMap<unknown, TFieldGroupData>,\n undefined | FormValidateOrFn<unknown>,\n undefined | FormValidateOrFn<unknown>,\n undefined | FormAsyncValidateOrFn<unknown>,\n undefined | FormValidateOrFn<unknown>,\n undefined | FormAsyncValidateOrFn<unknown>,\n undefined | FormValidateOrFn<unknown>,\n undefined | FormAsyncValidateOrFn<unknown>,\n undefined | FormValidateOrFn<unknown>,\n undefined | FormAsyncValidateOrFn<unknown>,\n undefined | FormAsyncValidateOrFn<unknown>,\n // this types it as 'never' in the render prop. It should prevent any\n // untyped meta passed to the handleSubmit by accident.\n unknown extends TSubmitMeta ? never : TSubmitMeta,\n TFieldComponents,\n TFormComponents\n >\n }\n >,\n ) => JSXElement\n}\n\nexport function createFormHook<\n const TComponents extends Record<string, Component<any>>,\n const TFormComponents extends Record<string, Component<any>>,\n>(opts: CreateFormHookProps<TComponents, TFormComponents>) {\n function useAppForm<\n TFormData,\n TOnMount extends undefined | FormValidateOrFn<TFormData>,\n TOnChange extends undefined | FormValidateOrFn<TFormData>,\n TOnChangeAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnBlur extends undefined | FormValidateOrFn<TFormData>,\n TOnBlurAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnSubmit extends undefined | FormValidateOrFn<TFormData>,\n TOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnDynamic extends undefined | FormValidateOrFn<TFormData>,\n TOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnServer extends undefined | FormAsyncValidateOrFn<TFormData>,\n TSubmitMeta,\n >(\n props: Accessor<\n FormOptions<\n TFormData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TOnServer,\n TSubmitMeta\n >\n >,\n ): AppFieldExtendedSolidFormApi<\n TFormData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TOnServer,\n TSubmitMeta,\n TComponents,\n TFormComponents\n > {\n const form = createForm(props)\n\n const AppForm = ((formProps) => {\n return (\n <opts.formContext.Provider value={form}>\n {formProps.children}\n </opts.formContext.Provider>\n )\n }) as Component<ParentProps>\n\n const AppField = ((_props) => {\n const [childProps, fieldProps] = splitProps(_props, ['children'])\n return (\n <form.Field {...fieldProps}>\n {(field) => (\n <opts.fieldContext.Provider value={field}>\n {childProps.children(Object.assign(field, opts.fieldComponents))}\n </opts.fieldContext.Provider>\n )}\n </form.Field>\n )\n }) as FieldComponent<\n TFormData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TOnServer,\n TSubmitMeta,\n TComponents\n >\n\n const extendedForm: AppFieldExtendedSolidFormApi<\n TFormData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TOnServer,\n TSubmitMeta,\n TComponents,\n TFormComponents\n > = form as never\n extendedForm.AppField = AppField\n extendedForm.AppForm = AppForm\n for (const [key, value] of Object.entries(opts.formComponents)) {\n // Since it's a generic I need to cast it to an object\n ;(extendedForm as Record<string, any>)[key] = value\n }\n\n return extendedForm\n }\n\n function withForm<\n TFormData,\n TOnMount extends undefined | FormValidateOrFn<TFormData>,\n TOnChange extends undefined | FormValidateOrFn<TFormData>,\n TOnChangeAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnBlur extends undefined | FormValidateOrFn<TFormData>,\n TOnBlurAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnSubmit extends undefined | FormValidateOrFn<TFormData>,\n TOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnDynamic extends undefined | FormValidateOrFn<TFormData>,\n TOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnServer extends undefined | FormAsyncValidateOrFn<TFormData>,\n TSubmitMeta,\n TRenderProps extends Record<string, unknown> = {},\n >({\n render,\n props,\n }: WithFormProps<\n TFormData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TOnServer,\n TSubmitMeta,\n TComponents,\n TFormComponents,\n TRenderProps\n >): WithFormProps<\n UnwrapOrAny<TFormData>,\n UnwrapDefaultOrAny<undefined | FormValidateOrFn<TFormData>, TOnMount>,\n UnwrapDefaultOrAny<undefined | FormValidateOrFn<TFormData>, TOnChange>,\n UnwrapDefaultOrAny<undefined | FormValidateOrFn<TFormData>, TOnChangeAsync>,\n UnwrapDefaultOrAny<undefined | FormValidateOrFn<TFormData>, TOnBlur>,\n UnwrapDefaultOrAny<undefined | FormValidateOrFn<TFormData>, TOnBlurAsync>,\n UnwrapDefaultOrAny<undefined | FormValidateOrFn<TFormData>, TOnSubmit>,\n UnwrapDefaultOrAny<undefined | FormValidateOrFn<TFormData>, TOnSubmitAsync>,\n UnwrapDefaultOrAny<undefined | FormValidateOrFn<TFormData>, TOnDynamic>,\n UnwrapDefaultOrAny<\n undefined | FormValidateOrFn<TFormData>,\n TOnDynamicAsync\n >,\n UnwrapDefaultOrAny<undefined | FormValidateOrFn<TFormData>, TOnServer>,\n UnwrapOrAny<TSubmitMeta>,\n UnwrapOrAny<TComponents>,\n UnwrapOrAny<TFormComponents>,\n UnwrapOrAny<TRenderProps>\n >['render'] {\n return (innerProps) => render({ ...props, ...innerProps })\n }\n\n function withFieldGroup<\n TFieldGroupData,\n TSubmitMeta,\n TRenderProps extends Record<string, unknown> = {},\n >({\n render,\n props,\n defaultValues,\n }: WithFieldGroupProps<\n TFieldGroupData,\n TComponents,\n TFormComponents,\n TSubmitMeta,\n TRenderProps\n >): <\n TFormData,\n TFields extends\n | DeepKeysOfType<TFormData, TFieldGroupData | null | undefined>\n | FieldsMap<TFormData, TFieldGroupData>,\n TOnMount extends undefined | FormValidateOrFn<TFormData>,\n TOnChange extends undefined | FormValidateOrFn<TFormData>,\n TOnChangeAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnBlur extends undefined | FormValidateOrFn<TFormData>,\n TOnBlurAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnSubmit extends undefined | FormValidateOrFn<TFormData>,\n TOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnDynamic extends undefined | FormValidateOrFn<TFormData>,\n TOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnServer extends undefined | FormAsyncValidateOrFn<TFormData>,\n TFormSubmitMeta,\n >(\n params: ParentProps<\n NoInfer<TRenderProps> & {\n form:\n | AppFieldExtendedSolidFormApi<\n TFormData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TOnServer,\n unknown extends TSubmitMeta ? TFormSubmitMeta : TSubmitMeta,\n TComponents,\n TFormComponents\n >\n | AppFieldExtendedSolidFieldGroupApi<\n // Since this only occurs if you nest it within other field groups, it can be more\n // lenient with the types.\n unknown,\n TFormData,\n string | FieldsMap<unknown, TFormData>,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n unknown extends TSubmitMeta ? TFormSubmitMeta : TSubmitMeta,\n TComponents,\n TFormComponents\n >\n fields: TFields\n }\n >,\n ) => JSXElement {\n return function Render(innerProps) {\n const fieldGroupProps = {\n form: innerProps.form,\n fields: innerProps.fields,\n defaultValues,\n formComponents: opts.formComponents,\n }\n const fieldGroupApi = createFieldGroup(() => fieldGroupProps)\n\n return render({ ...props, ...innerProps, group: fieldGroupApi as any })\n }\n }\n\n return {\n useAppForm,\n withForm,\n withFieldGroup,\n }\n}\n"],"names":["createFormHookContexts","fieldContext","createContext","useFieldContext","field","useContext","Error","formContext","useFormContext","form","createFormHook","opts","useAppForm","props","createForm","AppForm","formProps","_$createComponent","Provider","value","children","AppField","_props","childProps","fieldProps","splitProps","Field","_$mergeProps","Object","assign","fieldComponents","extendedForm","key","entries","formComponents","withForm","render","innerProps","withFieldGroup","defaultValues","Render","fieldGroupProps","fields","fieldGroupApi","createFieldGroup","group"],"mappings":";;;;AA8DO,SAASA,yBAAyB;AAEvC,QAAMC,eAAeC,cACnB,IACF;AAEA,WAASC,kBAAyB;AAChC,UAAMC,QAAQC,WAAWJ,YAAY;AAGrC,QAAI,CAACG,OAAO;AACV,YAAM,IAAIE,MACR,qFACF;AAAA,IACF;AAEA,WAAOF;AAAAA,EA2BT;AAGA,QAAMG,cAAcL,cAA0B,IAA6B;AAE3E,WAASM,iBAAiB;AACxB,UAAMC,OAAOJ,WAAWE,WAAW;AAGnC,QAAI,CAACE,MAAM;AACT,YAAM,IAAIH,MACR,mFACF;AAAA,IACF;AAEA,WAAOG;AAAAA,EAeT;AAEA,SAAO;AAAA,IAAER;AAAAA,IAAcE;AAAAA,IAAiBK;AAAAA,IAAgBD;AAAAA,EAAAA;AAC1D;AA2JO,SAASG,eAGdC,MAAyD;AACzD,WAASC,WAcPC,OA+BA;AACA,UAAMJ,OAAOK,WAAWD,KAAK;AAE7B,UAAME,WAAYC,CAAAA,cAAc;AAC9B,aAAAC,gBACGN,KAAKJ,YAAYW,UAAQ;AAAA,QAACC,OAAOV;AAAAA,QAAI,IAAAW,WAAA;AAAA,iBACnCJ,UAAUI;AAAAA,QAAQ;AAAA,MAAA,CAAA;AAAA,IAGzB;AAEA,UAAMC,YAAaC,CAAAA,WAAW;AAC5B,YAAM,CAACC,YAAYC,UAAU,IAAIC,WAAWH,QAAQ,CAAC,UAAU,CAAC;AAChE,aAAAL,gBACGR,KAAKiB,OAAKC,WAAKH,YAAU;AAAA,QAAAJ,UACtBhB,CAAAA,UAAKa,gBACJN,KAAKV,aAAaiB,UAAQ;AAAA,UAACC,OAAOf;AAAAA,UAAK,IAAAgB,WAAA;AAAA,mBACrCG,WAAWH,SAASQ,OAAOC,OAAOzB,OAAOO,KAAKmB,eAAe,CAAC;AAAA,UAAC;AAAA,QAAA,CAAA;AAAA,MAAA,CAEnE,CAAA;AAAA,IAGP;AAgBA,UAAMC,eAeFtB;AACJsB,iBAAaV,WAAWA;AACxBU,iBAAahB,UAAUA;AACvB,eAAW,CAACiB,KAAKb,KAAK,KAAKS,OAAOK,QAAQtB,KAAKuB,cAAc,GAAG;AAE5DH,mBAAqCC,GAAG,IAAIb;AAAAA,IAChD;AAEA,WAAOY;AAAAA,EACT;AAEA,WAASI,SAcP;AAAA,IACAC;AAAAA,IACAvB;AAAAA,EAAAA,GAoCU;AACV,WAAQwB,gBAAeD,OAAO;AAAA,MAAE,GAAGvB;AAAAA,MAAO,GAAGwB;AAAAA,IAAAA,CAAY;AAAA,EAC3D;AAEA,WAASC,eAIP;AAAA,IACAF;AAAAA,IACAvB;AAAAA,IACA0B;AAAAA,EAAAA,GAkEc;AACd,WAAO,SAASC,OAAOH,YAAY;AACjC,YAAMI,kBAAkB;AAAA,QACtBhC,MAAM4B,WAAW5B;AAAAA,QACjBiC,QAAQL,WAAWK;AAAAA,QACnBH;AAAAA,QACAL,gBAAgBvB,KAAKuB;AAAAA,MAAAA;AAEvB,YAAMS,gBAAgBC,iBAAiB,MAAMH,eAAe;AAE5D,aAAOL,OAAO;AAAA,QAAE,GAAGvB;AAAAA,QAAO,GAAGwB;AAAAA,QAAYQ,OAAOF;AAAAA,MAAAA,CAAsB;AAAA,IACxE;AAAA,EACF;AAEA,SAAO;AAAA,IACL/B;AAAAA,IACAuB;AAAAA,IACAG;AAAAA,EAAAA;AAEJ;"}
1
+ {"version":3,"file":"createFormHook.js","sources":["../../src/createFormHook.tsx"],"sourcesContent":["import {\n createComponent,\n createContext,\n splitProps,\n useContext,\n} from 'solid-js'\nimport { createFieldGroup } from './createFieldGroup'\nimport { createForm } from './createForm'\nimport type {\n AnyFieldApi,\n AnyFormApi,\n BaseFormOptions,\n DeepKeysOfType,\n FieldApi,\n FieldsMap,\n FormAsyncValidateOrFn,\n FormOptions,\n FormValidateOrFn,\n} from '@tanstack/form-core'\nimport type {\n Accessor,\n Component,\n Context,\n JSXElement,\n ParentProps,\n} from 'solid-js'\nimport type { FieldComponent } from './createField'\nimport type { AppFieldExtendedSolidFieldGroupApi } from './createFieldGroup'\nimport type { SolidFormExtendedApi } from './createForm'\n\n/**\n * TypeScript inferencing is weird.\n *\n * If you have:\n *\n * @example\n *\n * interface Args<T> {\n * arg?: T\n * }\n *\n * function test<T>(arg?: Partial<Args<T>>): T {\n * return 0 as any;\n * }\n *\n * const a = test({});\n *\n * Then `T` will default to `unknown`.\n *\n * However, if we change `test` to be:\n *\n * @example\n *\n * function test<T extends undefined>(arg?: Partial<Args<T>>): T;\n *\n * Then `T` becomes `undefined`.\n *\n * Here, we are checking if the passed type `T` extends `DefaultT` and **only**\n * `DefaultT`, as if that's the case we assume that inferencing has not occurred.\n */\ntype UnwrapOrAny<T> = [unknown] extends [T] ? any : T\ntype UnwrapDefaultOrAny<DefaultT, T> = [DefaultT] extends [T]\n ? [T] extends [DefaultT]\n ? any\n : T\n : T\n\nexport function createFormHookContexts() {\n // We should never hit the `null` case here\n const fieldContext = createContext<Accessor<AnyFieldApi>>(\n null as unknown as Accessor<AnyFieldApi>,\n )\n\n function useFieldContext<TData>() {\n const field = useContext(fieldContext)\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!field) {\n throw new Error(\n '`fieldContext` only works when within a `fieldComponent` passed to `createFormHook`',\n )\n }\n\n return field as Accessor<\n FieldApi<\n any,\n string,\n TData,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any\n >\n >\n }\n\n // We should never hit the `null` case here\n const formContext = createContext<AnyFormApi>(null as unknown as AnyFormApi)\n\n function useFormContext() {\n const form = useContext(formContext)\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!form) {\n throw new Error(\n '`formContext` only works when within a `formComponent` passed to `createFormHook`',\n )\n }\n\n return form as SolidFormExtendedApi<\n // If you need access to the form data, you need to use `withForm` instead\n Record<string, never>,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any\n >\n }\n\n return { fieldContext, useFieldContext, useFormContext, formContext }\n}\n\ninterface CreateFormHookProps<\n TFieldComponents extends Record<string, Component<any>>,\n TFormComponents extends Record<string, Component<any>>,\n> {\n fieldComponents: TFieldComponents\n fieldContext: Context<Accessor<AnyFieldApi>>\n formComponents: TFormComponents\n formContext: Context<AnyFormApi>\n}\n/**\n * @private\n */\nexport type AppFieldExtendedSolidFormApi<\n TFormData,\n TOnMount extends undefined | FormValidateOrFn<TFormData>,\n TOnChange extends undefined | FormValidateOrFn<TFormData>,\n TOnChangeAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnBlur extends undefined | FormValidateOrFn<TFormData>,\n TOnBlurAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnSubmit extends undefined | FormValidateOrFn<TFormData>,\n TOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnDynamic extends undefined | FormValidateOrFn<TFormData>,\n TOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnServer extends undefined | FormAsyncValidateOrFn<TFormData>,\n TSubmitMeta,\n TFieldComponents extends Record<string, Component<any>>,\n TFormComponents extends Record<string, Component<any>>,\n> = SolidFormExtendedApi<\n TFormData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TOnServer,\n TSubmitMeta\n> &\n NoInfer<TFormComponents> & {\n AppField: FieldComponent<\n TFormData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TOnServer,\n TSubmitMeta,\n NoInfer<TFieldComponents>\n >\n AppForm: Component<ParentProps>\n }\n\nexport interface WithFormProps<\n TFormData,\n TOnMount extends undefined | FormValidateOrFn<TFormData>,\n TOnChange extends undefined | FormValidateOrFn<TFormData>,\n TOnChangeAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnBlur extends undefined | FormValidateOrFn<TFormData>,\n TOnBlurAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnSubmit extends undefined | FormValidateOrFn<TFormData>,\n TOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnDynamic extends undefined | FormValidateOrFn<TFormData>,\n TOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnServer extends undefined | FormAsyncValidateOrFn<TFormData>,\n TSubmitMeta,\n TFieldComponents extends Record<string, Component<any>>,\n TFormComponents extends Record<string, Component<any>>,\n TRenderProps extends Record<string, unknown> = Record<string, never>,\n> extends FormOptions<\n TFormData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TOnServer,\n TSubmitMeta\n> {\n // Optional, but adds props to the `render` function outside of `form`\n props?: TRenderProps\n render: (\n props: ParentProps<\n NoInfer<TRenderProps> & {\n form: AppFieldExtendedSolidFormApi<\n TFormData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TOnServer,\n TSubmitMeta,\n TFieldComponents,\n TFormComponents\n >\n }\n >,\n ) => JSXElement\n}\n\nexport interface WithFieldGroupProps<\n TFieldGroupData,\n TFieldComponents extends Record<string, Component<any>>,\n TFormComponents extends Record<string, Component<any>>,\n TSubmitMeta,\n TRenderProps extends Record<string, unknown> = Record<string, never>,\n> extends BaseFormOptions<TFieldGroupData, TSubmitMeta> {\n // Optional, but adds props to the `render` function outside of `form`\n props?: TRenderProps\n render: (\n props: ParentProps<\n NoInfer<TRenderProps> & {\n group: AppFieldExtendedSolidFieldGroupApi<\n unknown,\n TFieldGroupData,\n string | FieldsMap<unknown, TFieldGroupData>,\n undefined | FormValidateOrFn<unknown>,\n undefined | FormValidateOrFn<unknown>,\n undefined | FormAsyncValidateOrFn<unknown>,\n undefined | FormValidateOrFn<unknown>,\n undefined | FormAsyncValidateOrFn<unknown>,\n undefined | FormValidateOrFn<unknown>,\n undefined | FormAsyncValidateOrFn<unknown>,\n undefined | FormValidateOrFn<unknown>,\n undefined | FormAsyncValidateOrFn<unknown>,\n undefined | FormAsyncValidateOrFn<unknown>,\n // this types it as 'never' in the render prop. It should prevent any\n // untyped meta passed to the handleSubmit by accident.\n unknown extends TSubmitMeta ? never : TSubmitMeta,\n TFieldComponents,\n TFormComponents\n >\n }\n >,\n ) => JSXElement\n}\n\nexport function createFormHook<\n const TComponents extends Record<string, Component<any>>,\n const TFormComponents extends Record<string, Component<any>>,\n>(opts: CreateFormHookProps<TComponents, TFormComponents>) {\n function useAppForm<\n TFormData,\n TOnMount extends undefined | FormValidateOrFn<TFormData>,\n TOnChange extends undefined | FormValidateOrFn<TFormData>,\n TOnChangeAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnBlur extends undefined | FormValidateOrFn<TFormData>,\n TOnBlurAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnSubmit extends undefined | FormValidateOrFn<TFormData>,\n TOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnDynamic extends undefined | FormValidateOrFn<TFormData>,\n TOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnServer extends undefined | FormAsyncValidateOrFn<TFormData>,\n TSubmitMeta,\n >(\n props: Accessor<\n FormOptions<\n TFormData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TOnServer,\n TSubmitMeta\n >\n >,\n ): AppFieldExtendedSolidFormApi<\n TFormData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TOnServer,\n TSubmitMeta,\n TComponents,\n TFormComponents\n > {\n const form = createForm(props)\n\n const AppForm = ((formProps) => {\n return (\n <opts.formContext.Provider value={form}>\n {formProps.children}\n </opts.formContext.Provider>\n )\n }) as Component<ParentProps>\n\n const AppField = ((_props) => {\n const [childProps, fieldProps] = splitProps(_props, ['children'])\n return (\n <form.Field {...fieldProps}>\n {(field) => (\n <opts.fieldContext.Provider value={field}>\n {createComponent(\n () =>\n childProps.children(\n Object.assign(field, opts.fieldComponents),\n ),\n {},\n )}\n </opts.fieldContext.Provider>\n )}\n </form.Field>\n )\n }) as FieldComponent<\n TFormData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TOnServer,\n TSubmitMeta,\n TComponents\n >\n\n const extendedForm: AppFieldExtendedSolidFormApi<\n TFormData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TOnServer,\n TSubmitMeta,\n TComponents,\n TFormComponents\n > = form as never\n extendedForm.AppField = AppField\n extendedForm.AppForm = AppForm\n for (const [key, value] of Object.entries(opts.formComponents)) {\n // Since it's a generic I need to cast it to an object\n ;(extendedForm as Record<string, any>)[key] = value\n }\n\n return extendedForm\n }\n\n function withForm<\n TFormData,\n TOnMount extends undefined | FormValidateOrFn<TFormData>,\n TOnChange extends undefined | FormValidateOrFn<TFormData>,\n TOnChangeAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnBlur extends undefined | FormValidateOrFn<TFormData>,\n TOnBlurAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnSubmit extends undefined | FormValidateOrFn<TFormData>,\n TOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnDynamic extends undefined | FormValidateOrFn<TFormData>,\n TOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnServer extends undefined | FormAsyncValidateOrFn<TFormData>,\n TSubmitMeta,\n TRenderProps extends Record<string, unknown> = {},\n >({\n render,\n props,\n }: WithFormProps<\n TFormData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TOnServer,\n TSubmitMeta,\n TComponents,\n TFormComponents,\n TRenderProps\n >): WithFormProps<\n UnwrapOrAny<TFormData>,\n UnwrapDefaultOrAny<undefined | FormValidateOrFn<TFormData>, TOnMount>,\n UnwrapDefaultOrAny<undefined | FormValidateOrFn<TFormData>, TOnChange>,\n UnwrapDefaultOrAny<undefined | FormValidateOrFn<TFormData>, TOnChangeAsync>,\n UnwrapDefaultOrAny<undefined | FormValidateOrFn<TFormData>, TOnBlur>,\n UnwrapDefaultOrAny<undefined | FormValidateOrFn<TFormData>, TOnBlurAsync>,\n UnwrapDefaultOrAny<undefined | FormValidateOrFn<TFormData>, TOnSubmit>,\n UnwrapDefaultOrAny<undefined | FormValidateOrFn<TFormData>, TOnSubmitAsync>,\n UnwrapDefaultOrAny<undefined | FormValidateOrFn<TFormData>, TOnDynamic>,\n UnwrapDefaultOrAny<\n undefined | FormValidateOrFn<TFormData>,\n TOnDynamicAsync\n >,\n UnwrapDefaultOrAny<undefined | FormValidateOrFn<TFormData>, TOnServer>,\n UnwrapOrAny<TSubmitMeta>,\n UnwrapOrAny<TComponents>,\n UnwrapOrAny<TFormComponents>,\n UnwrapOrAny<TRenderProps>\n >['render'] {\n return (innerProps) => render({ ...props, ...innerProps })\n }\n\n function withFieldGroup<\n TFieldGroupData,\n TSubmitMeta,\n TRenderProps extends Record<string, unknown> = {},\n >({\n render,\n props,\n defaultValues,\n }: WithFieldGroupProps<\n TFieldGroupData,\n TComponents,\n TFormComponents,\n TSubmitMeta,\n TRenderProps\n >): <\n TFormData,\n TFields extends\n | DeepKeysOfType<TFormData, TFieldGroupData | null | undefined>\n | FieldsMap<TFormData, TFieldGroupData>,\n TOnMount extends undefined | FormValidateOrFn<TFormData>,\n TOnChange extends undefined | FormValidateOrFn<TFormData>,\n TOnChangeAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnBlur extends undefined | FormValidateOrFn<TFormData>,\n TOnBlurAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnSubmit extends undefined | FormValidateOrFn<TFormData>,\n TOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnDynamic extends undefined | FormValidateOrFn<TFormData>,\n TOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n TOnServer extends undefined | FormAsyncValidateOrFn<TFormData>,\n TFormSubmitMeta,\n >(\n params: ParentProps<\n NoInfer<TRenderProps> & {\n form:\n | AppFieldExtendedSolidFormApi<\n TFormData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TOnServer,\n unknown extends TSubmitMeta ? TFormSubmitMeta : TSubmitMeta,\n TComponents,\n TFormComponents\n >\n | AppFieldExtendedSolidFieldGroupApi<\n // Since this only occurs if you nest it within other field groups, it can be more\n // lenient with the types.\n unknown,\n TFormData,\n string | FieldsMap<unknown, TFormData>,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n unknown extends TSubmitMeta ? TFormSubmitMeta : TSubmitMeta,\n TComponents,\n TFormComponents\n >\n fields: TFields\n }\n >,\n ) => JSXElement {\n return function Render(innerProps) {\n const fieldGroupProps = {\n form: innerProps.form,\n fields: innerProps.fields,\n defaultValues,\n formComponents: opts.formComponents,\n }\n const fieldGroupApi = createFieldGroup(() => fieldGroupProps)\n\n return render({ ...props, ...innerProps, group: fieldGroupApi as any })\n }\n }\n\n return {\n useAppForm,\n withForm,\n withFieldGroup,\n }\n}\n"],"names":["createFormHookContexts","fieldContext","createContext","useFieldContext","field","useContext","Error","formContext","useFormContext","form","createFormHook","opts","useAppForm","props","createForm","AppForm","formProps","_$createComponent","Provider","value","children","AppField","_props","childProps","fieldProps","splitProps","Field","_$mergeProps","createComponent","Object","assign","fieldComponents","extendedForm","key","entries","formComponents","withForm","render","innerProps","withFieldGroup","defaultValues","Render","fieldGroupProps","fields","fieldGroupApi","createFieldGroup","group"],"mappings":";;;;AAmEO,SAASA,yBAAyB;AAEvC,QAAMC,eAAeC,cACnB,IACF;AAEA,WAASC,kBAAyB;AAChC,UAAMC,QAAQC,WAAWJ,YAAY;AAGrC,QAAI,CAACG,OAAO;AACV,YAAM,IAAIE,MACR,qFACF;AAAA,IACF;AAEA,WAAOF;AAAAA,EA2BT;AAGA,QAAMG,cAAcL,cAA0B,IAA6B;AAE3E,WAASM,iBAAiB;AACxB,UAAMC,OAAOJ,WAAWE,WAAW;AAGnC,QAAI,CAACE,MAAM;AACT,YAAM,IAAIH,MACR,mFACF;AAAA,IACF;AAEA,WAAOG;AAAAA,EAeT;AAEA,SAAO;AAAA,IAAER;AAAAA,IAAcE;AAAAA,IAAiBK;AAAAA,IAAgBD;AAAAA,EAAAA;AAC1D;AA2JO,SAASG,eAGdC,MAAyD;AACzD,WAASC,WAcPC,OA+BA;AACA,UAAMJ,OAAOK,WAAWD,KAAK;AAE7B,UAAME,WAAYC,CAAAA,cAAc;AAC9B,aAAAC,gBACGN,KAAKJ,YAAYW,UAAQ;AAAA,QAACC,OAAOV;AAAAA,QAAI,IAAAW,WAAA;AAAA,iBACnCJ,UAAUI;AAAAA,QAAQ;AAAA,MAAA,CAAA;AAAA,IAGzB;AAEA,UAAMC,YAAaC,CAAAA,WAAW;AAC5B,YAAM,CAACC,YAAYC,UAAU,IAAIC,WAAWH,QAAQ,CAAC,UAAU,CAAC;AAChE,aAAAL,gBACGR,KAAKiB,OAAKC,WAAKH,YAAU;AAAA,QAAAJ,UACtBhB,CAAAA,UAAKa,gBACJN,KAAKV,aAAaiB,UAAQ;AAAA,UAACC,OAAOf;AAAAA,UAAK,IAAAgB,WAAA;AAAA,mBACrCQ,kBACC,MACEL,WAAWH,SACTS,OAAOC,OAAO1B,OAAOO,KAAKoB,eAAe,CAC3C,GACF,CAAA,CACF;AAAA,UAAC;AAAA,QAAA,CAAA;AAAA,MAAA,CAEJ,CAAA;AAAA,IAGP;AAgBA,UAAMC,eAeFvB;AACJuB,iBAAaX,WAAWA;AACxBW,iBAAajB,UAAUA;AACvB,eAAW,CAACkB,KAAKd,KAAK,KAAKU,OAAOK,QAAQvB,KAAKwB,cAAc,GAAG;AAE5DH,mBAAqCC,GAAG,IAAId;AAAAA,IAChD;AAEA,WAAOa;AAAAA,EACT;AAEA,WAASI,SAcP;AAAA,IACAC;AAAAA,IACAxB;AAAAA,EAAAA,GAoCU;AACV,WAAQyB,gBAAeD,OAAO;AAAA,MAAE,GAAGxB;AAAAA,MAAO,GAAGyB;AAAAA,IAAAA,CAAY;AAAA,EAC3D;AAEA,WAASC,eAIP;AAAA,IACAF;AAAAA,IACAxB;AAAAA,IACA2B;AAAAA,EAAAA,GAkEc;AACd,WAAO,SAASC,OAAOH,YAAY;AACjC,YAAMI,kBAAkB;AAAA,QACtBjC,MAAM6B,WAAW7B;AAAAA,QACjBkC,QAAQL,WAAWK;AAAAA,QACnBH;AAAAA,QACAL,gBAAgBxB,KAAKwB;AAAAA,MAAAA;AAEvB,YAAMS,gBAAgBC,iBAAiB,MAAMH,eAAe;AAE5D,aAAOL,OAAO;AAAA,QAAE,GAAGxB;AAAAA,QAAO,GAAGyB;AAAAA,QAAYQ,OAAOF;AAAAA,MAAAA,CAAsB;AAAA,IACxE;AAAA,EACF;AAEA,SAAO;AAAA,IACLhC;AAAAA,IACAwB;AAAAA,IACAG;AAAAA,EAAAA;AAEJ;"}
@@ -1,7 +1,7 @@
1
- import type { AppFieldExtendedSolidFieldGroupApi } from './createFieldGroup';
2
1
  import type { AnyFieldApi, AnyFormApi, BaseFormOptions, DeepKeysOfType, FieldApi, FieldsMap, FormAsyncValidateOrFn, FormOptions, FormValidateOrFn } from '@tanstack/form-core';
3
2
  import type { Accessor, Component, Context, JSXElement, ParentProps } from 'solid-js';
4
3
  import type { FieldComponent } from './createField';
4
+ import type { AppFieldExtendedSolidFieldGroupApi } from './createFieldGroup';
5
5
  import type { SolidFormExtendedApi } from './createForm';
6
6
  /**
7
7
  * TypeScript inferencing is weird.
@@ -1,6 +1,6 @@
1
- import { createContext, splitProps, useContext } from 'solid-js';
2
- import { createForm } from './createForm';
1
+ import { createComponent, createContext, splitProps, useContext, } from 'solid-js';
3
2
  import { createFieldGroup } from './createFieldGroup';
3
+ import { createForm } from './createForm';
4
4
  export function createFormHookContexts() {
5
5
  // We should never hit the `null` case here
6
6
  const fieldContext = createContext(null);
@@ -36,7 +36,7 @@ export function createFormHook(opts) {
36
36
  const [childProps, fieldProps] = splitProps(_props, ['children']);
37
37
  return (<form.Field {...fieldProps}>
38
38
  {(field) => (<opts.fieldContext.Provider value={field}>
39
- {childProps.children(Object.assign(field, opts.fieldComponents))}
39
+ {createComponent(() => childProps.children(Object.assign(field, opts.fieldComponents)), {})}
40
40
  </opts.fieldContext.Provider>)}
41
41
  </form.Field>);
42
42
  });
@@ -1 +1 @@
1
- {"version":3,"file":"createFormHook.jsx","sourceRoot":"","sources":["../../src/createFormHook.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createFormHook.jsx","sourceRoot":"","sources":["../../src/createFormHook.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tanstack/solid-form",
3
- "version": "1.27.3",
3
+ "version": "1.27.4",
4
4
  "description": "Powerful, type-safe forms for Solid.",
5
5
  "author": "tannerlinsley",
6
6
  "license": "MIT",
@@ -42,7 +42,7 @@
42
42
  ],
43
43
  "dependencies": {
44
44
  "@tanstack/solid-store": "^0.7.7",
45
- "@tanstack/form-core": "1.27.3"
45
+ "@tanstack/form-core": "1.27.4"
46
46
  },
47
47
  "devDependencies": {
48
48
  "solid-js": "^1.9.9",
@@ -1,7 +1,11 @@
1
- import { createContext, splitProps, useContext } from 'solid-js'
2
- import { createForm } from './createForm'
1
+ import {
2
+ createComponent,
3
+ createContext,
4
+ splitProps,
5
+ useContext,
6
+ } from 'solid-js'
3
7
  import { createFieldGroup } from './createFieldGroup'
4
- import type { AppFieldExtendedSolidFieldGroupApi } from './createFieldGroup'
8
+ import { createForm } from './createForm'
5
9
  import type {
6
10
  AnyFieldApi,
7
11
  AnyFormApi,
@@ -21,6 +25,7 @@ import type {
21
25
  ParentProps,
22
26
  } from 'solid-js'
23
27
  import type { FieldComponent } from './createField'
28
+ import type { AppFieldExtendedSolidFieldGroupApi } from './createFieldGroup'
24
29
  import type { SolidFormExtendedApi } from './createForm'
25
30
 
26
31
  /**
@@ -357,7 +362,13 @@ export function createFormHook<
357
362
  <form.Field {...fieldProps}>
358
363
  {(field) => (
359
364
  <opts.fieldContext.Provider value={field}>
360
- {childProps.children(Object.assign(field, opts.fieldComponents))}
365
+ {createComponent(
366
+ () =>
367
+ childProps.children(
368
+ Object.assign(field, opts.fieldComponents),
369
+ ),
370
+ {},
371
+ )}
361
372
  </opts.fieldContext.Provider>
362
373
  )}
363
374
  </form.Field>