diff --git a/.changeset/cool-jars-prove.md b/.changeset/cool-jars-prove.md new file mode 100644 index 000000000..84b348e7e --- /dev/null +++ b/.changeset/cool-jars-prove.md @@ -0,0 +1,8 @@ +--- +'@tanstack/svelte-form': patch +'@tanstack/react-form': patch +'@tanstack/solid-form': patch +'@tanstack/vue-form': patch +--- + +add AnyFormApi types for convenience in generic contexts diff --git a/packages/react-form/src/useForm.tsx b/packages/react-form/src/useForm.tsx index 9206b824c..e35d73ba7 100644 --- a/packages/react-form/src/useForm.tsx +++ b/packages/react-form/src/useForm.tsx @@ -90,6 +90,24 @@ export interface ReactFormApi< }) => ReactNode } +/** + * {@link ReactFormApi} with all generics set to `any` for convenience use in generic contexts. + */ +export type AnyReactFormApi = ReactFormApi< + any, + any, + any, + any, + any, + any, + any, + any, + any, + any, + any, + any +> + /** * An extended version of the `FormApi` class that includes React-specific functionalities from `ReactFormApi` */ @@ -135,6 +153,24 @@ export type ReactFormExtendedApi< TSubmitMeta > +/** + * {@link ReactFormExtendedApi} with all generics set to `any` for convenience use in generic contexts. + */ +export type AnyReactFormExtendedApi = ReactFormExtendedApi< + any, + any, + any, + any, + any, + any, + any, + any, + any, + any, + any, + any +> + function LocalSubscribe({ form, selector, diff --git a/packages/solid-form/src/createForm.tsx b/packages/solid-form/src/createForm.tsx index 383014c09..f339fd913 100644 --- a/packages/solid-form/src/createForm.tsx +++ b/packages/solid-form/src/createForm.tsx @@ -127,7 +127,25 @@ export interface SolidFormApi< } /** - * An extended version of the `FormApi` class that includes React-specific functionalities from `ReactFormApi` + * {@link SolidFormApi} with all generics set to `any` for convenience use in generic contexts. + */ +export type AnySolidFormApi = SolidFormApi< + any, + any, + any, + any, + any, + any, + any, + any, + any, + any, + any, + any +> + +/** + * An extended version of the `FormApi` class that includes Solid-specific functionalities from `SolidFormApi` */ export type SolidFormExtendedApi< TFormData, @@ -170,6 +188,25 @@ export type SolidFormExtendedApi< TOnServer, TSubmitMeta > + +/** + * {@link SolidFormExtendedApi} with all generics set to `any` for convenience use in generic contexts. + */ +export type AnySolidFormExtendedApi = SolidFormExtendedApi< + any, + any, + any, + any, + any, + any, + any, + any, + any, + any, + any, + any +> + export function createForm< TParentData, TFormOnMount extends undefined | FormValidateOrFn, diff --git a/packages/svelte-form/src/createForm.svelte.ts b/packages/svelte-form/src/createForm.svelte.ts index 4de61273f..b179b1f98 100644 --- a/packages/svelte-form/src/createForm.svelte.ts +++ b/packages/svelte-form/src/createForm.svelte.ts @@ -179,6 +179,24 @@ export interface SvelteFormApi< WithoutFunction } +/** + * {@link SvelteFormApi} with all generics set to `any` for convenience use in generic contexts. + */ +export type AnySvelteFormApi = SvelteFormApi< + any, + any, + any, + any, + any, + any, + any, + any, + any, + any, + any, + any +> + export function createForm< TParentData, TFormOnMount extends undefined | FormValidateOrFn, diff --git a/packages/svelte-form/src/index.ts b/packages/svelte-form/src/index.ts index a76cbb7f2..a94454673 100644 --- a/packages/svelte-form/src/index.ts +++ b/packages/svelte-form/src/index.ts @@ -2,7 +2,11 @@ export * from '@tanstack/form-core' export { useStore } from '@tanstack/svelte-store' -export { createForm, type SvelteFormApi } from './createForm.svelte.js' +export { + createForm, + type SvelteFormApi, + type AnySvelteFormApi, +} from './createForm.svelte.js' export { default as Field, createField } from './Field.svelte' diff --git a/packages/vue-form/src/useForm.tsx b/packages/vue-form/src/useForm.tsx index e83e50015..3efdfc543 100644 --- a/packages/vue-form/src/useForm.tsx +++ b/packages/vue-form/src/useForm.tsx @@ -214,6 +214,24 @@ export interface VueFormApi< > } +/** + * {@link VueFormApi} with all generics set to `any` for convenience use in generic contexts. + */ +export type AnyVueFormApi = VueFormApi< + any, + any, + any, + any, + any, + any, + any, + any, + any, + any, + any, + any +> + export function useForm< TParentData, TFormOnMount extends undefined | FormValidateOrFn,