@tanstack/vue-form 1.32.1 → 1.33.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,6 +4,7 @@ const formCore = require("@tanstack/form-core");
4
4
  const vueStore = require("@tanstack/vue-store");
5
5
  const useField = require("./useField.cjs");
6
6
  const useForm = require("./useForm.cjs");
7
+ const useFormGroup = require("./useFormGroup.cjs");
7
8
  Object.defineProperty(exports, "useStore", {
8
9
  enumerable: true,
9
10
  get: () => vueStore.useStore
@@ -11,6 +12,8 @@ Object.defineProperty(exports, "useStore", {
11
12
  exports.Field = useField.Field;
12
13
  exports.useField = useField.useField;
13
14
  exports.useForm = useForm.useForm;
15
+ exports.FormGroup = useFormGroup.FormGroup;
16
+ exports.useFormGroup = useFormGroup.useFormGroup;
14
17
  Object.keys(formCore).forEach((k) => {
15
18
  if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
16
19
  enumerable: true,
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;"}
@@ -2,3 +2,4 @@ export * from '@tanstack/form-core';
2
2
  export { useStore } from '@tanstack/vue-store';
3
3
  export * from './useField.cjs';
4
4
  export * from './useForm.cjs';
5
+ export * from './useFormGroup.cjs';
@@ -18,7 +18,7 @@ export declare function useField<TParentData, TName extends DeepKeys<TParentData
18
18
  isTouched: boolean;
19
19
  isBlurred: boolean;
20
20
  isDirty: boolean;
21
- errorMap: import('@tanstack/form-core').ValidationErrorMap<import('@tanstack/form-core').UnwrapFieldValidateOrFn<TName, TOnMount, TFormOnMount>, import('@tanstack/form-core').UnwrapFieldValidateOrFn<TName, TOnChange, TFormOnChange>, import('@tanstack/form-core').UnwrapFieldAsyncValidateOrFn<TName, TOnChangeAsync, TFormOnChangeAsync>, import('@tanstack/form-core').UnwrapFieldValidateOrFn<TName, TOnBlur, TFormOnBlur>, import('@tanstack/form-core').UnwrapFieldAsyncValidateOrFn<TName, TOnBlurAsync, TFormOnBlurAsync>, import('@tanstack/form-core').UnwrapFieldValidateOrFn<TName, TOnSubmit, TFormOnSubmit>, import('@tanstack/form-core').UnwrapFieldAsyncValidateOrFn<TName, TOnSubmitAsync, TFormOnSubmitAsync>, import('@tanstack/form-core').UnwrapFieldValidateOrFn<TName, TOnDynamic, TFormOnDynamic>, import('@tanstack/form-core').UnwrapFieldAsyncValidateOrFn<TName, TOnDynamicAsync, TFormOnDynamicAsync>>;
21
+ errorMap: import('@tanstack/form-core').ValidationErrorMap<import('@tanstack/form-core').UnwrapFieldValidateOrFn<TName, TOnMount, TFormOnMount>, import('@tanstack/form-core').UnwrapFieldValidateOrFn<TName, TOnChange, TFormOnChange>, import('@tanstack/form-core').UnwrapFieldAsyncValidateOrFn<TName, TOnChangeAsync, TFormOnChangeAsync>, import('@tanstack/form-core').UnwrapFieldValidateOrFn<TName, TOnBlur, TFormOnBlur>, import('@tanstack/form-core').UnwrapFieldAsyncValidateOrFn<TName, TOnBlurAsync, TFormOnBlurAsync>, import('@tanstack/form-core').UnwrapFieldValidateOrFn<TName, TOnSubmit, TFormOnSubmit>, import('@tanstack/form-core').UnwrapFieldAsyncValidateOrFn<TName, TOnSubmitAsync, TFormOnSubmitAsync>, import('@tanstack/form-core').UnwrapFieldValidateOrFn<TName, TOnDynamic, TFormOnDynamic>, import('@tanstack/form-core').UnwrapFieldAsyncValidateOrFn<TName, TOnDynamicAsync, TFormOnDynamicAsync>, unknown>;
22
22
  errorSourceMap: import('@tanstack/form-core').ValidationErrorMapSource;
23
23
  isValidating: boolean;
24
24
  _arrayVersion: number;
@@ -4,6 +4,7 @@ const formCore = require("@tanstack/form-core");
4
4
  const vueStore = require("@tanstack/vue-store");
5
5
  const vue = require("vue");
6
6
  const useField = require("./useField.cjs");
7
+ const useFormGroup = require("./useFormGroup.cjs");
7
8
  function useForm(opts) {
8
9
  const formApi = (() => {
9
10
  const api = new formCore.FormApi(opts);
@@ -21,6 +22,19 @@ function useForm(opts) {
21
22
  inheritAttrs: false
22
23
  }
23
24
  );
25
+ extendedApi.FormGroup = vue.defineComponent(
26
+ (props, context) => {
27
+ return () => vue.h(
28
+ useFormGroup.FormGroup,
29
+ { ...props, ...context.attrs, form: api },
30
+ context.slots
31
+ );
32
+ },
33
+ {
34
+ name: "APIFormGroup",
35
+ inheritAttrs: false
36
+ }
37
+ );
24
38
  extendedApi.useStore = (selector) => {
25
39
  return vueStore.useStore(api.store, selector);
26
40
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useForm.cjs","sources":["../../src/useForm.tsx"],"sourcesContent":["import { FormApi } from '@tanstack/form-core'\nimport { useStore } from '@tanstack/vue-store'\nimport { defineComponent, h, onMounted } from 'vue'\nimport { Field } from './useField'\nimport type {\n FormAsyncValidateOrFn,\n FormOptions,\n FormState,\n FormValidateOrFn,\n} from '@tanstack/form-core'\nimport type {\n ComponentOptionsMixin,\n CreateComponentPublicInstanceWithMixins,\n EmitsOptions,\n EmitsToProps,\n PublicProps,\n Ref,\n SlotsType,\n} from 'vue'\nimport type { FieldComponent } from './useField'\n\ntype SubscribeComponent<\n TParentData,\n TFormOnMount extends undefined | FormValidateOrFn<TParentData>,\n TFormOnChange extends undefined | FormValidateOrFn<TParentData>,\n TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnBlur extends undefined | FormValidateOrFn<TParentData>,\n TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>,\n TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>,\n TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>,\n> =\n // This complex type comes from Vue's return type for `DefineSetupFnComponent` but with our own types sprinkled in\n // This allows us to pre-bind some generics while keeping the props type unbound generics for props-based inferencing\n new <\n TSelected = NoInfer<\n FormState<\n TParentData,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer\n >\n >,\n >(\n props: {\n selector?: (\n state: NoInfer<\n FormState<\n TParentData,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer\n >\n >,\n ) => TSelected\n } & EmitsToProps<EmitsOptions> &\n PublicProps,\n ) => CreateComponentPublicInstanceWithMixins<\n {\n selector?: (\n state: NoInfer<\n FormState<\n TParentData,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer\n >\n >,\n ) => TSelected\n },\n {},\n {},\n {},\n {},\n ComponentOptionsMixin,\n ComponentOptionsMixin,\n EmitsOptions,\n PublicProps,\n {},\n false,\n {},\n SlotsType<{\n default: TSelected\n }>\n >\n\nexport interface VueFormApi<\n TParentData,\n TFormOnMount extends undefined | FormValidateOrFn<TParentData>,\n TFormOnChange extends undefined | FormValidateOrFn<TParentData>,\n TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnBlur extends undefined | FormValidateOrFn<TParentData>,\n TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>,\n TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>,\n TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>,\n TSubmitMeta,\n> {\n Field: FieldComponent<\n TParentData,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer,\n TSubmitMeta\n >\n useStore: <\n TSelected = NoInfer<\n FormState<\n TParentData,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer\n >\n >,\n >(\n selector?: (\n state: NoInfer<\n FormState<\n TParentData,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer\n >\n >,\n ) => TSelected,\n ) => Readonly<Ref<TSelected>>\n Subscribe: SubscribeComponent<\n TParentData,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer\n >\n}\n\nexport function useForm<\n TParentData,\n TFormOnMount extends undefined | FormValidateOrFn<TParentData>,\n TFormOnChange extends undefined | FormValidateOrFn<TParentData>,\n TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnBlur extends undefined | FormValidateOrFn<TParentData>,\n TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>,\n TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>,\n TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>,\n TSubmitMeta,\n>(\n opts?: FormOptions<\n TParentData,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer,\n TSubmitMeta\n >,\n) {\n const formApi = (() => {\n const api = new FormApi<\n TParentData,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer,\n TSubmitMeta\n >(opts)\n\n const extendedApi: typeof api &\n VueFormApi<\n TParentData,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer,\n TSubmitMeta\n > = api as never\n extendedApi.Field = defineComponent(\n (props, context) => {\n return () =>\n h(\n Field as never,\n { ...props, ...context.attrs, form: api },\n context.slots,\n )\n },\n {\n name: 'APIField',\n inheritAttrs: false,\n },\n ) as never\n extendedApi.useStore = (selector) => {\n return useStore(api.store as never, selector as never) as never\n }\n extendedApi.Subscribe = defineComponent(\n (props, context) => {\n const allProps = { ...props, ...context.attrs }\n const selector = allProps.selector ?? ((state: never) => state)\n const data = useStore(api.store as never, selector as never)\n return () => context.slots.default!(data.value)\n },\n {\n name: 'Subscribe',\n inheritAttrs: false,\n },\n ) as never\n\n return extendedApi\n })()\n\n onMounted(formApi.mount)\n\n // formApi.useStore((state) => state.isSubmitting)\n formApi.update(opts)\n\n return formApi\n}\n"],"names":["FormApi","defineComponent","h","Field","useStore","onMounted"],"mappings":";;;;;;AA2LO,SAAS,QAcd,MAcA;AACA,QAAM,WAAW,MAAM;AACrB,UAAM,MAAM,IAAIA,SAAAA,QAad,IAAI;AAEN,UAAM,cAcA;AACN,gBAAY,QAAQC,IAAAA;AAAAA,MAClB,CAAC,OAAO,YAAY;AAClB,eAAO,MACLC,IAAAA;AAAAA,UACEC,SAAAA;AAAAA,UACA,EAAE,GAAG,OAAO,GAAG,QAAQ,OAAO,MAAM,IAAA;AAAA,UACpC,QAAQ;AAAA,QAAA;AAAA,MAEd;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,cAAc;AAAA,MAAA;AAAA,IAChB;AAEF,gBAAY,WAAW,CAAC,aAAa;AACnC,aAAOC,kBAAS,IAAI,OAAgB,QAAiB;AAAA,IACvD;AACA,gBAAY,YAAYH,IAAAA;AAAAA,MACtB,CAAC,OAAO,YAAY;AAClB,cAAM,WAAW,EAAE,GAAG,OAAO,GAAG,QAAQ,MAAA;AACxC,cAAM,WAAW,SAAS,aAAa,CAAC,UAAiB;AACzD,cAAM,OAAOG,SAAAA,SAAS,IAAI,OAAgB,QAAiB;AAC3D,eAAO,MAAM,QAAQ,MAAM,QAAS,KAAK,KAAK;AAAA,MAChD;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,cAAc;AAAA,MAAA;AAAA,IAChB;AAGF,WAAO;AAAA,EACT,GAAA;AAEAC,MAAAA,UAAU,QAAQ,KAAK;AAGvB,UAAQ,OAAO,IAAI;AAEnB,SAAO;AACT;;"}
1
+ {"version":3,"file":"useForm.cjs","sources":["../../src/useForm.tsx"],"sourcesContent":["import { FormApi } from '@tanstack/form-core'\nimport { useStore } from '@tanstack/vue-store'\nimport { defineComponent, h, onMounted } from 'vue'\nimport { Field } from './useField'\nimport { FormGroup } from './useFormGroup'\nimport type {\n FormAsyncValidateOrFn,\n FormOptions,\n FormState,\n FormValidateOrFn,\n} from '@tanstack/form-core'\nimport type {\n ComponentOptionsMixin,\n CreateComponentPublicInstanceWithMixins,\n EmitsOptions,\n EmitsToProps,\n PublicProps,\n Ref,\n SlotsType,\n} from 'vue'\nimport type { FieldComponent } from './useField'\nimport type { FormGroupComponent } from './useFormGroup'\n\ntype SubscribeComponent<\n TParentData,\n TFormOnMount extends undefined | FormValidateOrFn<TParentData>,\n TFormOnChange extends undefined | FormValidateOrFn<TParentData>,\n TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnBlur extends undefined | FormValidateOrFn<TParentData>,\n TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>,\n TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>,\n TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>,\n> =\n // This complex type comes from Vue's return type for `DefineSetupFnComponent` but with our own types sprinkled in\n // This allows us to pre-bind some generics while keeping the props type unbound generics for props-based inferencing\n new <\n TSelected = NoInfer<\n FormState<\n TParentData,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer\n >\n >,\n >(\n props: {\n selector?: (\n state: NoInfer<\n FormState<\n TParentData,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer\n >\n >,\n ) => TSelected\n } & EmitsToProps<EmitsOptions> &\n PublicProps,\n ) => CreateComponentPublicInstanceWithMixins<\n {\n selector?: (\n state: NoInfer<\n FormState<\n TParentData,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer\n >\n >,\n ) => TSelected\n },\n {},\n {},\n {},\n {},\n ComponentOptionsMixin,\n ComponentOptionsMixin,\n EmitsOptions,\n PublicProps,\n {},\n false,\n {},\n SlotsType<{\n default: TSelected\n }>\n >\n\nexport interface VueFormApi<\n TParentData,\n TFormOnMount extends undefined | FormValidateOrFn<TParentData>,\n TFormOnChange extends undefined | FormValidateOrFn<TParentData>,\n TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnBlur extends undefined | FormValidateOrFn<TParentData>,\n TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>,\n TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>,\n TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>,\n TSubmitMeta,\n> {\n Field: FieldComponent<\n TParentData,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer,\n TSubmitMeta\n >\n FormGroup: FormGroupComponent<\n TParentData,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer,\n TSubmitMeta\n >\n useStore: <\n TSelected = NoInfer<\n FormState<\n TParentData,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer\n >\n >,\n >(\n selector?: (\n state: NoInfer<\n FormState<\n TParentData,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer\n >\n >,\n ) => TSelected,\n ) => Readonly<Ref<TSelected>>\n Subscribe: SubscribeComponent<\n TParentData,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer\n >\n}\n\nexport function useForm<\n TParentData,\n TFormOnMount extends undefined | FormValidateOrFn<TParentData>,\n TFormOnChange extends undefined | FormValidateOrFn<TParentData>,\n TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnBlur extends undefined | FormValidateOrFn<TParentData>,\n TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>,\n TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>,\n TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>,\n TSubmitMeta,\n>(\n opts?: FormOptions<\n TParentData,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer,\n TSubmitMeta\n >,\n) {\n const formApi = (() => {\n const api = new FormApi<\n TParentData,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer,\n TSubmitMeta\n >(opts)\n\n const extendedApi: typeof api &\n VueFormApi<\n TParentData,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer,\n TSubmitMeta\n > = api as never\n extendedApi.Field = defineComponent(\n (props, context) => {\n return () =>\n h(\n Field as never,\n { ...props, ...context.attrs, form: api },\n context.slots,\n )\n },\n {\n name: 'APIField',\n inheritAttrs: false,\n },\n ) as never\n extendedApi.FormGroup = defineComponent(\n (props, context) => {\n return () =>\n h(\n FormGroup as never,\n { ...props, ...context.attrs, form: api },\n context.slots,\n )\n },\n {\n name: 'APIFormGroup',\n inheritAttrs: false,\n },\n ) as never\n extendedApi.useStore = (selector) => {\n return useStore(api.store as never, selector as never) as never\n }\n extendedApi.Subscribe = defineComponent(\n (props, context) => {\n const allProps = { ...props, ...context.attrs }\n const selector = allProps.selector ?? ((state: never) => state)\n const data = useStore(api.store as never, selector as never)\n return () => context.slots.default!(data.value)\n },\n {\n name: 'Subscribe',\n inheritAttrs: false,\n },\n ) as never\n\n return extendedApi\n })()\n\n onMounted(formApi.mount)\n\n // formApi.useStore((state) => state.isSubmitting)\n formApi.update(opts)\n\n return formApi\n}\n"],"names":["FormApi","defineComponent","h","Field","FormGroup","useStore","onMounted"],"mappings":";;;;;;;AA2MO,SAAS,QAcd,MAcA;AACA,QAAM,WAAW,MAAM;AACrB,UAAM,MAAM,IAAIA,SAAAA,QAad,IAAI;AAEN,UAAM,cAcA;AACN,gBAAY,QAAQC,IAAAA;AAAAA,MAClB,CAAC,OAAO,YAAY;AAClB,eAAO,MACLC,IAAAA;AAAAA,UACEC,SAAAA;AAAAA,UACA,EAAE,GAAG,OAAO,GAAG,QAAQ,OAAO,MAAM,IAAA;AAAA,UACpC,QAAQ;AAAA,QAAA;AAAA,MAEd;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,cAAc;AAAA,MAAA;AAAA,IAChB;AAEF,gBAAY,YAAYF,IAAAA;AAAAA,MACtB,CAAC,OAAO,YAAY;AAClB,eAAO,MACLC,IAAAA;AAAAA,UACEE,aAAAA;AAAAA,UACA,EAAE,GAAG,OAAO,GAAG,QAAQ,OAAO,MAAM,IAAA;AAAA,UACpC,QAAQ;AAAA,QAAA;AAAA,MAEd;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,cAAc;AAAA,MAAA;AAAA,IAChB;AAEF,gBAAY,WAAW,CAAC,aAAa;AACnC,aAAOC,kBAAS,IAAI,OAAgB,QAAiB;AAAA,IACvD;AACA,gBAAY,YAAYJ,IAAAA;AAAAA,MACtB,CAAC,OAAO,YAAY;AAClB,cAAM,WAAW,EAAE,GAAG,OAAO,GAAG,QAAQ,MAAA;AACxC,cAAM,WAAW,SAAS,aAAa,CAAC,UAAiB;AACzD,cAAM,OAAOI,SAAAA,SAAS,IAAI,OAAgB,QAAiB;AAC3D,eAAO,MAAM,QAAQ,MAAM,QAAS,KAAK,KAAK;AAAA,MAChD;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,cAAc;AAAA,MAAA;AAAA,IAChB;AAGF,WAAO;AAAA,EACT,GAAA;AAEAC,MAAAA,UAAU,QAAQ,KAAK;AAGvB,UAAQ,OAAO,IAAI;AAEnB,SAAO;AACT;;"}
@@ -1,6 +1,7 @@
1
1
  import { FormApi, FormAsyncValidateOrFn, FormOptions, FormState, FormValidateOrFn } from '@tanstack/form-core';
2
2
  import { ComponentOptionsMixin, CreateComponentPublicInstanceWithMixins, EmitsOptions, EmitsToProps, PublicProps, Ref, SlotsType } from 'vue';
3
3
  import { FieldComponent } from './useField.cjs';
4
+ import { FormGroupComponent } from './useFormGroup.cjs';
4
5
  type SubscribeComponent<TParentData, 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>> = new <TSelected = NoInfer<FormState<TParentData, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer>>>(props: {
5
6
  selector?: (state: NoInfer<FormState<TParentData, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer>>) => TSelected;
6
7
  } & EmitsToProps<EmitsOptions> & PublicProps) => CreateComponentPublicInstanceWithMixins<{
@@ -10,6 +11,7 @@ type SubscribeComponent<TParentData, TFormOnMount extends undefined | FormValida
10
11
  }>>;
11
12
  export interface VueFormApi<TParentData, 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>, TSubmitMeta> {
12
13
  Field: FieldComponent<TParentData, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TSubmitMeta>;
14
+ FormGroup: FormGroupComponent<TParentData, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TSubmitMeta>;
13
15
  useStore: <TSelected = NoInfer<FormState<TParentData, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer>>>(selector?: (state: NoInfer<FormState<TParentData, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer>>) => TSelected) => Readonly<Ref<TSelected>>;
14
16
  Subscribe: SubscribeComponent<TParentData, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer>;
15
17
  }
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const formCore = require("@tanstack/form-core");
4
+ const vueStore = require("@tanstack/vue-store");
5
+ const vue = require("vue");
6
+ function useFormGroup(opts) {
7
+ const formGroupApi = (() => {
8
+ const api = new formCore.FormGroupApi({
9
+ ...opts
10
+ });
11
+ return api;
12
+ })();
13
+ const groupState = vueStore.useStore(formGroupApi.store, (state) => state);
14
+ let cleanup;
15
+ vue.onMounted(() => {
16
+ cleanup = formGroupApi.mount();
17
+ });
18
+ vue.onUnmounted(() => {
19
+ cleanup();
20
+ });
21
+ vue.watch(
22
+ () => opts,
23
+ () => {
24
+ formGroupApi.update({ ...opts });
25
+ }
26
+ );
27
+ return { api: formGroupApi, state: groupState };
28
+ }
29
+ const FormGroup = vue.defineComponent(
30
+ (formGroupOptions, context) => {
31
+ const groupApi = useFormGroup({ ...formGroupOptions, ...context.attrs });
32
+ return () => context.slots.default({
33
+ group: groupApi.api,
34
+ state: groupApi.state.value
35
+ });
36
+ },
37
+ { name: "FormGroup", inheritAttrs: false }
38
+ );
39
+ exports.FormGroup = FormGroup;
40
+ exports.useFormGroup = useFormGroup;
41
+ //# sourceMappingURL=useFormGroup.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFormGroup.cjs","sources":["../../src/useFormGroup.tsx"],"sourcesContent":["import { FormGroupApi } from '@tanstack/form-core'\nimport { useStore } from '@tanstack/vue-store'\nimport { defineComponent, onMounted, onUnmounted, watch } from 'vue'\nimport type {\n DeepKeys,\n DeepValue,\n FormAsyncValidateOrFn,\n FormGroupApiOptions,\n FormGroupAsyncValidateOrFn,\n FormGroupOptions,\n FormGroupValidateOrFn,\n FormValidateOrFn,\n} from '@tanstack/form-core'\nimport type {\n ComponentOptionsMixin,\n CreateComponentPublicInstanceWithMixins,\n EmitsOptions,\n EmitsToProps,\n PublicProps,\n SetupContext,\n SlotsType,\n} from 'vue'\n\nexport type FormGroupComponent<\n TParentData,\n TFormOnMount extends undefined | FormValidateOrFn<TParentData>,\n TFormOnChange extends undefined | FormValidateOrFn<TParentData>,\n TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnBlur extends undefined | FormValidateOrFn<TParentData>,\n TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>,\n TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>,\n TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>,\n TParentSubmitMeta,\n // This complex type comes from Vue's return type for `DefineSetupFnComponent` but with our own types sprinkled in\n // This allows us to pre-bind some generics while keeping the props type unbound generics for props-based inferencing\n> = new <\n TName extends DeepKeys<TParentData>,\n TData extends DeepValue<TParentData, TName>,\n TOnMount extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnChange extends\n | undefined\n | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnChangeAsync extends\n | undefined\n | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,\n TOnBlur extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnBlurAsync extends\n | undefined\n | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,\n TOnSubmit extends\n | undefined\n | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnSubmitAsync extends\n | undefined\n | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,\n TOnDynamic extends\n | undefined\n | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnDynamicAsync extends\n | undefined\n | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,\n TSubmitMeta,\n>(\n props: FormGroupComponentBoundProps<\n TParentData,\n TName,\n TData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TSubmitMeta,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer,\n TParentSubmitMeta\n > &\n EmitsToProps<EmitsOptions> &\n PublicProps,\n) => CreateComponentPublicInstanceWithMixins<\n FormGroupComponentBoundProps<\n TParentData,\n TName,\n TData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TSubmitMeta,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer,\n TParentSubmitMeta\n >,\n {},\n {},\n {},\n {},\n ComponentOptionsMixin,\n ComponentOptionsMixin,\n EmitsOptions,\n PublicProps,\n {},\n false,\n {},\n SlotsType<{\n default: {\n group: FormGroupApi<\n TParentData,\n TName,\n TData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TSubmitMeta,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer,\n TParentSubmitMeta\n >\n state: FormGroupApi<\n TParentData,\n TName,\n TData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TSubmitMeta,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer,\n TParentSubmitMeta\n >['state']\n }\n }>\n>\n\nexport interface VueFormGroupApi<\n TParentData,\n TFormOnMount extends undefined | FormValidateOrFn<TParentData>,\n TFormOnChange extends undefined | FormValidateOrFn<TParentData>,\n TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnBlur extends undefined | FormValidateOrFn<TParentData>,\n TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>,\n TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>,\n TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>,\n TParentSubmitMeta,\n> {\n FormGroup: FormGroupComponent<\n TParentData,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer,\n TParentSubmitMeta\n >\n}\n\nexport function useFormGroup<\n TParentData,\n TName extends DeepKeys<TParentData>,\n TData extends DeepValue<TParentData, TName>,\n TOnMount extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnChange extends\n | undefined\n | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnChangeAsync extends\n | undefined\n | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,\n TOnBlur extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnBlurAsync extends\n | undefined\n | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,\n TOnSubmit extends\n | undefined\n | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnSubmitAsync extends\n | undefined\n | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,\n TOnDynamic extends\n | undefined\n | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnDynamicAsync extends\n | undefined\n | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,\n TSubmitMeta,\n TFormOnMount extends undefined | FormValidateOrFn<TParentData>,\n TFormOnChange extends undefined | FormValidateOrFn<TParentData>,\n TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnBlur extends undefined | FormValidateOrFn<TParentData>,\n TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>,\n TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>,\n TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>,\n TParentSubmitMeta,\n>(\n opts: FormGroupApiOptions<\n TParentData,\n TName,\n TData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TSubmitMeta,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer,\n TParentSubmitMeta\n >,\n) {\n const formGroupApi = (() => {\n const api = new FormGroupApi({\n ...opts,\n })\n\n return api\n })()\n\n const groupState = useStore(formGroupApi.store, (state) => state)\n\n let cleanup!: () => void\n onMounted(() => {\n cleanup = formGroupApi.mount()\n })\n\n onUnmounted(() => {\n cleanup()\n })\n\n watch(\n () => opts,\n () => {\n // Keep options up to date as they are rendered\n formGroupApi.update({ ...opts } as never)\n },\n )\n\n return { api: formGroupApi, state: groupState } as const\n}\n\nexport type FormGroupComponentProps<\n TParentData,\n TName extends DeepKeys<TParentData>,\n TData extends DeepValue<TParentData, TName>,\n TOnMount extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnChange extends\n | undefined\n | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnChangeAsync extends\n | undefined\n | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,\n TOnBlur extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnBlurAsync extends\n | undefined\n | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,\n TOnSubmit extends\n | undefined\n | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnSubmitAsync extends\n | undefined\n | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,\n TOnDynamic extends\n | undefined\n | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnDynamicAsync extends\n | undefined\n | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,\n TSubmitMeta,\n TFormOnMount extends undefined | FormValidateOrFn<TParentData>,\n TFormOnChange extends undefined | FormValidateOrFn<TParentData>,\n TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnBlur extends undefined | FormValidateOrFn<TParentData>,\n TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>,\n TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>,\n TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>,\n TParentSubmitMeta,\n> = FormGroupApiOptions<\n TParentData,\n TName,\n TData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TSubmitMeta,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer,\n TParentSubmitMeta\n>\n\nexport type FormGroupComponentBoundProps<\n TParentData,\n TName extends DeepKeys<TParentData>,\n TData extends DeepValue<TParentData, TName>,\n TOnMount extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnChange extends\n | undefined\n | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnChangeAsync extends\n | undefined\n | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,\n TOnBlur extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnBlurAsync extends\n | undefined\n | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,\n TOnSubmit extends\n | undefined\n | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnSubmitAsync extends\n | undefined\n | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,\n TOnDynamic extends\n | undefined\n | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnDynamicAsync extends\n | undefined\n | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,\n TSubmitMeta,\n TFormOnMount extends undefined | FormValidateOrFn<TParentData>,\n TFormOnChange extends undefined | FormValidateOrFn<TParentData>,\n TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnBlur extends undefined | FormValidateOrFn<TParentData>,\n TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>,\n TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>,\n TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>,\n TParentSubmitMeta,\n> = FormGroupOptions<\n TParentData,\n TName,\n TData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TSubmitMeta,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer,\n TParentSubmitMeta\n>\n\nexport const FormGroup = defineComponent(\n <\n TParentData,\n TName extends DeepKeys<TParentData>,\n TData extends DeepValue<TParentData, TName>,\n TOnMount extends\n | undefined\n | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnChange extends\n | undefined\n | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnChangeAsync extends\n | undefined\n | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,\n TOnBlur extends\n | undefined\n | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnBlurAsync extends\n | undefined\n | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,\n TOnSubmit extends\n | undefined\n | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnSubmitAsync extends\n | undefined\n | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,\n TOnDynamic extends\n | undefined\n | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnDynamicAsync extends\n | undefined\n | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,\n TSubmitMeta,\n TFormOnMount extends undefined | FormValidateOrFn<TParentData>,\n TFormOnChange extends undefined | FormValidateOrFn<TParentData>,\n TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnBlur extends undefined | FormValidateOrFn<TParentData>,\n TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>,\n TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>,\n TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>,\n TParentSubmitMeta,\n >(\n formGroupOptions: FormGroupApiOptions<\n TParentData,\n TName,\n TData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TSubmitMeta,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer,\n TParentSubmitMeta\n >,\n context: SetupContext,\n ) => {\n const groupApi = useFormGroup({ ...formGroupOptions, ...context.attrs })\n\n return () =>\n context.slots.default!({\n group: groupApi.api,\n state: groupApi.state.value,\n })\n },\n { name: 'FormGroup', inheritAttrs: false },\n)\n"],"names":["FormGroupApi","useStore","onMounted","onUnmounted","watch","defineComponent"],"mappings":";;;;;AA4NO,SAAS,aAwCd,MA0BA;AACA,QAAM,gBAAgB,MAAM;AAC1B,UAAM,MAAM,IAAIA,sBAAa;AAAA,MAC3B,GAAG;AAAA,IAAA,CACJ;AAED,WAAO;AAAA,EACT,GAAA;AAEA,QAAM,aAAaC,SAAAA,SAAS,aAAa,OAAO,CAAC,UAAU,KAAK;AAEhE,MAAI;AACJC,MAAAA,UAAU,MAAM;AACd,cAAU,aAAa,MAAA;AAAA,EACzB,CAAC;AAEDC,MAAAA,YAAY,MAAM;AAChB,YAAA;AAAA,EACF,CAAC;AAEDC,MAAAA;AAAAA,IACE,MAAM;AAAA,IACN,MAAM;AAEJ,mBAAa,OAAO,EAAE,GAAG,MAAe;AAAA,IAC1C;AAAA,EAAA;AAGF,SAAO,EAAE,KAAK,cAAc,OAAO,WAAA;AACrC;AAsIO,MAAM,YAAYC,IAAAA;AAAAA,EACvB,CA4CE,kBA0BA,YACG;AACH,UAAM,WAAW,aAAa,EAAE,GAAG,kBAAkB,GAAG,QAAQ,OAAO;AAEvE,WAAO,MACL,QAAQ,MAAM,QAAS;AAAA,MACrB,OAAO,SAAS;AAAA,MAChB,OAAO,SAAS,MAAM;AAAA,IAAA,CACvB;AAAA,EACL;AAAA,EACA,EAAE,MAAM,aAAa,cAAc,MAAA;AACrC;;;"}
@@ -0,0 +1,37 @@
1
+ import { FormGroupApi, DeepKeys, DeepValue, FormAsyncValidateOrFn, FormGroupApiOptions, FormGroupAsyncValidateOrFn, FormGroupOptions, FormGroupValidateOrFn, FormValidateOrFn } from '@tanstack/form-core';
2
+ import { ComponentOptionsMixin, CreateComponentPublicInstanceWithMixins, EmitsOptions, EmitsToProps, PublicProps, SlotsType } from 'vue';
3
+ export type FormGroupComponent<TParentData, 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> = new <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>(props: FormGroupComponentBoundProps<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TSubmitMeta, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta> & EmitsToProps<EmitsOptions> & PublicProps) => CreateComponentPublicInstanceWithMixins<FormGroupComponentBoundProps<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TSubmitMeta, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, EmitsOptions, PublicProps, {}, false, {}, SlotsType<{
4
+ default: {
5
+ group: 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>;
6
+ state: 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>['state'];
7
+ };
8
+ }>>;
9
+ export interface VueFormGroupApi<TParentData, 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> {
10
+ FormGroup: FormGroupComponent<TParentData, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta>;
11
+ }
12
+ export declare function useFormGroup<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>): {
13
+ readonly api: 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>;
14
+ readonly state: Readonly<import('@vue/reactivity').Ref<import('@tanstack/form-core').FormGroupStoreState<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync>, import('@tanstack/form-core').FormGroupStoreState<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync>>>;
15
+ };
16
+ export type FormGroupComponentProps<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> = 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>;
17
+ export type FormGroupComponentBoundProps<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> = FormGroupOptions<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TSubmitMeta, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta>;
18
+ export declare const FormGroup: 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>(props: (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> & ({
19
+ [x: `on${Capitalize<string>}`]: ((...args: any[]) => any) | undefined;
20
+ } | {
21
+ [x: `on${Capitalize<string>}`]: ((...args: never) => any) | undefined;
22
+ })) & import('@vue/runtime-core').VNodeProps & import('@vue/runtime-core').AllowedComponentProps & import('@vue/runtime-core').ComponentCustomProps) => CreateComponentPublicInstanceWithMixins<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> & ({
23
+ [x: `on${Capitalize<string>}`]: ((...args: any[]) => any) | undefined;
24
+ } | {
25
+ [x: `on${Capitalize<string>}`]: ((...args: never) => any) | undefined;
26
+ }), {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, EmitsOptions, PublicProps, {}, false, {}, {}, {}, {}, string, {}, any, import('@vue/runtime-core').ComponentProvideOptions, {
27
+ P: {};
28
+ B: {};
29
+ D: {};
30
+ C: {};
31
+ M: {};
32
+ Defaults: {};
33
+ }, (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> & {
34
+ [x: `on${Capitalize<string>}`]: ((...args: any[]) => any) | undefined;
35
+ }) | (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> & {
36
+ [x: `on${Capitalize<string>}`]: ((...args: never) => any) | undefined;
37
+ }), {}, {}, {}, {}, {}>;
@@ -2,3 +2,4 @@ export * from '@tanstack/form-core';
2
2
  export { useStore } from '@tanstack/vue-store';
3
3
  export * from './useField.js';
4
4
  export * from './useForm.js';
5
+ export * from './useFormGroup.js';
package/dist/esm/index.js CHANGED
@@ -2,10 +2,13 @@ export * from "@tanstack/form-core";
2
2
  import { useStore } from "@tanstack/vue-store";
3
3
  import { Field, useField } from "./useField.js";
4
4
  import { useForm } from "./useForm.js";
5
+ import { FormGroup, useFormGroup } from "./useFormGroup.js";
5
6
  export {
6
7
  Field,
8
+ FormGroup,
7
9
  useField,
8
10
  useForm,
11
+ useFormGroup,
9
12
  useStore
10
13
  };
11
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
@@ -18,7 +18,7 @@ export declare function useField<TParentData, TName extends DeepKeys<TParentData
18
18
  isTouched: boolean;
19
19
  isBlurred: boolean;
20
20
  isDirty: boolean;
21
- errorMap: import('@tanstack/form-core').ValidationErrorMap<import('@tanstack/form-core').UnwrapFieldValidateOrFn<TName, TOnMount, TFormOnMount>, import('@tanstack/form-core').UnwrapFieldValidateOrFn<TName, TOnChange, TFormOnChange>, import('@tanstack/form-core').UnwrapFieldAsyncValidateOrFn<TName, TOnChangeAsync, TFormOnChangeAsync>, import('@tanstack/form-core').UnwrapFieldValidateOrFn<TName, TOnBlur, TFormOnBlur>, import('@tanstack/form-core').UnwrapFieldAsyncValidateOrFn<TName, TOnBlurAsync, TFormOnBlurAsync>, import('@tanstack/form-core').UnwrapFieldValidateOrFn<TName, TOnSubmit, TFormOnSubmit>, import('@tanstack/form-core').UnwrapFieldAsyncValidateOrFn<TName, TOnSubmitAsync, TFormOnSubmitAsync>, import('@tanstack/form-core').UnwrapFieldValidateOrFn<TName, TOnDynamic, TFormOnDynamic>, import('@tanstack/form-core').UnwrapFieldAsyncValidateOrFn<TName, TOnDynamicAsync, TFormOnDynamicAsync>>;
21
+ errorMap: import('@tanstack/form-core').ValidationErrorMap<import('@tanstack/form-core').UnwrapFieldValidateOrFn<TName, TOnMount, TFormOnMount>, import('@tanstack/form-core').UnwrapFieldValidateOrFn<TName, TOnChange, TFormOnChange>, import('@tanstack/form-core').UnwrapFieldAsyncValidateOrFn<TName, TOnChangeAsync, TFormOnChangeAsync>, import('@tanstack/form-core').UnwrapFieldValidateOrFn<TName, TOnBlur, TFormOnBlur>, import('@tanstack/form-core').UnwrapFieldAsyncValidateOrFn<TName, TOnBlurAsync, TFormOnBlurAsync>, import('@tanstack/form-core').UnwrapFieldValidateOrFn<TName, TOnSubmit, TFormOnSubmit>, import('@tanstack/form-core').UnwrapFieldAsyncValidateOrFn<TName, TOnSubmitAsync, TFormOnSubmitAsync>, import('@tanstack/form-core').UnwrapFieldValidateOrFn<TName, TOnDynamic, TFormOnDynamic>, import('@tanstack/form-core').UnwrapFieldAsyncValidateOrFn<TName, TOnDynamicAsync, TFormOnDynamicAsync>, unknown>;
22
22
  errorSourceMap: import('@tanstack/form-core').ValidationErrorMapSource;
23
23
  isValidating: boolean;
24
24
  _arrayVersion: number;
@@ -1,6 +1,7 @@
1
1
  import { FormApi, FormAsyncValidateOrFn, FormOptions, FormState, FormValidateOrFn } from '@tanstack/form-core';
2
2
  import { ComponentOptionsMixin, CreateComponentPublicInstanceWithMixins, EmitsOptions, EmitsToProps, PublicProps, Ref, SlotsType } from 'vue';
3
3
  import { FieldComponent } from './useField.js';
4
+ import { FormGroupComponent } from './useFormGroup.js';
4
5
  type SubscribeComponent<TParentData, 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>> = new <TSelected = NoInfer<FormState<TParentData, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer>>>(props: {
5
6
  selector?: (state: NoInfer<FormState<TParentData, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer>>) => TSelected;
6
7
  } & EmitsToProps<EmitsOptions> & PublicProps) => CreateComponentPublicInstanceWithMixins<{
@@ -10,6 +11,7 @@ type SubscribeComponent<TParentData, TFormOnMount extends undefined | FormValida
10
11
  }>>;
11
12
  export interface VueFormApi<TParentData, 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>, TSubmitMeta> {
12
13
  Field: FieldComponent<TParentData, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TSubmitMeta>;
14
+ FormGroup: FormGroupComponent<TParentData, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TSubmitMeta>;
13
15
  useStore: <TSelected = NoInfer<FormState<TParentData, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer>>>(selector?: (state: NoInfer<FormState<TParentData, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer>>) => TSelected) => Readonly<Ref<TSelected>>;
14
16
  Subscribe: SubscribeComponent<TParentData, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer>;
15
17
  }
@@ -2,6 +2,7 @@ import { FormApi } from "@tanstack/form-core";
2
2
  import { useStore } from "@tanstack/vue-store";
3
3
  import { defineComponent, h, onMounted } from "vue";
4
4
  import { Field } from "./useField.js";
5
+ import { FormGroup } from "./useFormGroup.js";
5
6
  function useForm(opts) {
6
7
  const formApi = (() => {
7
8
  const api = new FormApi(opts);
@@ -19,6 +20,19 @@ function useForm(opts) {
19
20
  inheritAttrs: false
20
21
  }
21
22
  );
23
+ extendedApi.FormGroup = defineComponent(
24
+ (props, context) => {
25
+ return () => h(
26
+ FormGroup,
27
+ { ...props, ...context.attrs, form: api },
28
+ context.slots
29
+ );
30
+ },
31
+ {
32
+ name: "APIFormGroup",
33
+ inheritAttrs: false
34
+ }
35
+ );
22
36
  extendedApi.useStore = (selector) => {
23
37
  return useStore(api.store, selector);
24
38
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useForm.js","sources":["../../src/useForm.tsx"],"sourcesContent":["import { FormApi } from '@tanstack/form-core'\nimport { useStore } from '@tanstack/vue-store'\nimport { defineComponent, h, onMounted } from 'vue'\nimport { Field } from './useField'\nimport type {\n FormAsyncValidateOrFn,\n FormOptions,\n FormState,\n FormValidateOrFn,\n} from '@tanstack/form-core'\nimport type {\n ComponentOptionsMixin,\n CreateComponentPublicInstanceWithMixins,\n EmitsOptions,\n EmitsToProps,\n PublicProps,\n Ref,\n SlotsType,\n} from 'vue'\nimport type { FieldComponent } from './useField'\n\ntype SubscribeComponent<\n TParentData,\n TFormOnMount extends undefined | FormValidateOrFn<TParentData>,\n TFormOnChange extends undefined | FormValidateOrFn<TParentData>,\n TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnBlur extends undefined | FormValidateOrFn<TParentData>,\n TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>,\n TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>,\n TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>,\n> =\n // This complex type comes from Vue's return type for `DefineSetupFnComponent` but with our own types sprinkled in\n // This allows us to pre-bind some generics while keeping the props type unbound generics for props-based inferencing\n new <\n TSelected = NoInfer<\n FormState<\n TParentData,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer\n >\n >,\n >(\n props: {\n selector?: (\n state: NoInfer<\n FormState<\n TParentData,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer\n >\n >,\n ) => TSelected\n } & EmitsToProps<EmitsOptions> &\n PublicProps,\n ) => CreateComponentPublicInstanceWithMixins<\n {\n selector?: (\n state: NoInfer<\n FormState<\n TParentData,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer\n >\n >,\n ) => TSelected\n },\n {},\n {},\n {},\n {},\n ComponentOptionsMixin,\n ComponentOptionsMixin,\n EmitsOptions,\n PublicProps,\n {},\n false,\n {},\n SlotsType<{\n default: TSelected\n }>\n >\n\nexport interface VueFormApi<\n TParentData,\n TFormOnMount extends undefined | FormValidateOrFn<TParentData>,\n TFormOnChange extends undefined | FormValidateOrFn<TParentData>,\n TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnBlur extends undefined | FormValidateOrFn<TParentData>,\n TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>,\n TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>,\n TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>,\n TSubmitMeta,\n> {\n Field: FieldComponent<\n TParentData,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer,\n TSubmitMeta\n >\n useStore: <\n TSelected = NoInfer<\n FormState<\n TParentData,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer\n >\n >,\n >(\n selector?: (\n state: NoInfer<\n FormState<\n TParentData,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer\n >\n >,\n ) => TSelected,\n ) => Readonly<Ref<TSelected>>\n Subscribe: SubscribeComponent<\n TParentData,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer\n >\n}\n\nexport function useForm<\n TParentData,\n TFormOnMount extends undefined | FormValidateOrFn<TParentData>,\n TFormOnChange extends undefined | FormValidateOrFn<TParentData>,\n TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnBlur extends undefined | FormValidateOrFn<TParentData>,\n TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>,\n TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>,\n TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>,\n TSubmitMeta,\n>(\n opts?: FormOptions<\n TParentData,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer,\n TSubmitMeta\n >,\n) {\n const formApi = (() => {\n const api = new FormApi<\n TParentData,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer,\n TSubmitMeta\n >(opts)\n\n const extendedApi: typeof api &\n VueFormApi<\n TParentData,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer,\n TSubmitMeta\n > = api as never\n extendedApi.Field = defineComponent(\n (props, context) => {\n return () =>\n h(\n Field as never,\n { ...props, ...context.attrs, form: api },\n context.slots,\n )\n },\n {\n name: 'APIField',\n inheritAttrs: false,\n },\n ) as never\n extendedApi.useStore = (selector) => {\n return useStore(api.store as never, selector as never) as never\n }\n extendedApi.Subscribe = defineComponent(\n (props, context) => {\n const allProps = { ...props, ...context.attrs }\n const selector = allProps.selector ?? ((state: never) => state)\n const data = useStore(api.store as never, selector as never)\n return () => context.slots.default!(data.value)\n },\n {\n name: 'Subscribe',\n inheritAttrs: false,\n },\n ) as never\n\n return extendedApi\n })()\n\n onMounted(formApi.mount)\n\n // formApi.useStore((state) => state.isSubmitting)\n formApi.update(opts)\n\n return formApi\n}\n"],"names":[],"mappings":";;;;AA2LO,SAAS,QAcd,MAcA;AACA,QAAM,WAAW,MAAM;AACrB,UAAM,MAAM,IAAI,QAad,IAAI;AAEN,UAAM,cAcA;AACN,gBAAY,QAAQ;AAAA,MAClB,CAAC,OAAO,YAAY;AAClB,eAAO,MACL;AAAA,UACE;AAAA,UACA,EAAE,GAAG,OAAO,GAAG,QAAQ,OAAO,MAAM,IAAA;AAAA,UACpC,QAAQ;AAAA,QAAA;AAAA,MAEd;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,cAAc;AAAA,MAAA;AAAA,IAChB;AAEF,gBAAY,WAAW,CAAC,aAAa;AACnC,aAAO,SAAS,IAAI,OAAgB,QAAiB;AAAA,IACvD;AACA,gBAAY,YAAY;AAAA,MACtB,CAAC,OAAO,YAAY;AAClB,cAAM,WAAW,EAAE,GAAG,OAAO,GAAG,QAAQ,MAAA;AACxC,cAAM,WAAW,SAAS,aAAa,CAAC,UAAiB;AACzD,cAAM,OAAO,SAAS,IAAI,OAAgB,QAAiB;AAC3D,eAAO,MAAM,QAAQ,MAAM,QAAS,KAAK,KAAK;AAAA,MAChD;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,cAAc;AAAA,MAAA;AAAA,IAChB;AAGF,WAAO;AAAA,EACT,GAAA;AAEA,YAAU,QAAQ,KAAK;AAGvB,UAAQ,OAAO,IAAI;AAEnB,SAAO;AACT;"}
1
+ {"version":3,"file":"useForm.js","sources":["../../src/useForm.tsx"],"sourcesContent":["import { FormApi } from '@tanstack/form-core'\nimport { useStore } from '@tanstack/vue-store'\nimport { defineComponent, h, onMounted } from 'vue'\nimport { Field } from './useField'\nimport { FormGroup } from './useFormGroup'\nimport type {\n FormAsyncValidateOrFn,\n FormOptions,\n FormState,\n FormValidateOrFn,\n} from '@tanstack/form-core'\nimport type {\n ComponentOptionsMixin,\n CreateComponentPublicInstanceWithMixins,\n EmitsOptions,\n EmitsToProps,\n PublicProps,\n Ref,\n SlotsType,\n} from 'vue'\nimport type { FieldComponent } from './useField'\nimport type { FormGroupComponent } from './useFormGroup'\n\ntype SubscribeComponent<\n TParentData,\n TFormOnMount extends undefined | FormValidateOrFn<TParentData>,\n TFormOnChange extends undefined | FormValidateOrFn<TParentData>,\n TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnBlur extends undefined | FormValidateOrFn<TParentData>,\n TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>,\n TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>,\n TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>,\n> =\n // This complex type comes from Vue's return type for `DefineSetupFnComponent` but with our own types sprinkled in\n // This allows us to pre-bind some generics while keeping the props type unbound generics for props-based inferencing\n new <\n TSelected = NoInfer<\n FormState<\n TParentData,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer\n >\n >,\n >(\n props: {\n selector?: (\n state: NoInfer<\n FormState<\n TParentData,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer\n >\n >,\n ) => TSelected\n } & EmitsToProps<EmitsOptions> &\n PublicProps,\n ) => CreateComponentPublicInstanceWithMixins<\n {\n selector?: (\n state: NoInfer<\n FormState<\n TParentData,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer\n >\n >,\n ) => TSelected\n },\n {},\n {},\n {},\n {},\n ComponentOptionsMixin,\n ComponentOptionsMixin,\n EmitsOptions,\n PublicProps,\n {},\n false,\n {},\n SlotsType<{\n default: TSelected\n }>\n >\n\nexport interface VueFormApi<\n TParentData,\n TFormOnMount extends undefined | FormValidateOrFn<TParentData>,\n TFormOnChange extends undefined | FormValidateOrFn<TParentData>,\n TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnBlur extends undefined | FormValidateOrFn<TParentData>,\n TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>,\n TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>,\n TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>,\n TSubmitMeta,\n> {\n Field: FieldComponent<\n TParentData,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer,\n TSubmitMeta\n >\n FormGroup: FormGroupComponent<\n TParentData,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer,\n TSubmitMeta\n >\n useStore: <\n TSelected = NoInfer<\n FormState<\n TParentData,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer\n >\n >,\n >(\n selector?: (\n state: NoInfer<\n FormState<\n TParentData,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer\n >\n >,\n ) => TSelected,\n ) => Readonly<Ref<TSelected>>\n Subscribe: SubscribeComponent<\n TParentData,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer\n >\n}\n\nexport function useForm<\n TParentData,\n TFormOnMount extends undefined | FormValidateOrFn<TParentData>,\n TFormOnChange extends undefined | FormValidateOrFn<TParentData>,\n TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnBlur extends undefined | FormValidateOrFn<TParentData>,\n TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>,\n TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>,\n TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>,\n TSubmitMeta,\n>(\n opts?: FormOptions<\n TParentData,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer,\n TSubmitMeta\n >,\n) {\n const formApi = (() => {\n const api = new FormApi<\n TParentData,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer,\n TSubmitMeta\n >(opts)\n\n const extendedApi: typeof api &\n VueFormApi<\n TParentData,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer,\n TSubmitMeta\n > = api as never\n extendedApi.Field = defineComponent(\n (props, context) => {\n return () =>\n h(\n Field as never,\n { ...props, ...context.attrs, form: api },\n context.slots,\n )\n },\n {\n name: 'APIField',\n inheritAttrs: false,\n },\n ) as never\n extendedApi.FormGroup = defineComponent(\n (props, context) => {\n return () =>\n h(\n FormGroup as never,\n { ...props, ...context.attrs, form: api },\n context.slots,\n )\n },\n {\n name: 'APIFormGroup',\n inheritAttrs: false,\n },\n ) as never\n extendedApi.useStore = (selector) => {\n return useStore(api.store as never, selector as never) as never\n }\n extendedApi.Subscribe = defineComponent(\n (props, context) => {\n const allProps = { ...props, ...context.attrs }\n const selector = allProps.selector ?? ((state: never) => state)\n const data = useStore(api.store as never, selector as never)\n return () => context.slots.default!(data.value)\n },\n {\n name: 'Subscribe',\n inheritAttrs: false,\n },\n ) as never\n\n return extendedApi\n })()\n\n onMounted(formApi.mount)\n\n // formApi.useStore((state) => state.isSubmitting)\n formApi.update(opts)\n\n return formApi\n}\n"],"names":[],"mappings":";;;;;AA2MO,SAAS,QAcd,MAcA;AACA,QAAM,WAAW,MAAM;AACrB,UAAM,MAAM,IAAI,QAad,IAAI;AAEN,UAAM,cAcA;AACN,gBAAY,QAAQ;AAAA,MAClB,CAAC,OAAO,YAAY;AAClB,eAAO,MACL;AAAA,UACE;AAAA,UACA,EAAE,GAAG,OAAO,GAAG,QAAQ,OAAO,MAAM,IAAA;AAAA,UACpC,QAAQ;AAAA,QAAA;AAAA,MAEd;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,cAAc;AAAA,MAAA;AAAA,IAChB;AAEF,gBAAY,YAAY;AAAA,MACtB,CAAC,OAAO,YAAY;AAClB,eAAO,MACL;AAAA,UACE;AAAA,UACA,EAAE,GAAG,OAAO,GAAG,QAAQ,OAAO,MAAM,IAAA;AAAA,UACpC,QAAQ;AAAA,QAAA;AAAA,MAEd;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,cAAc;AAAA,MAAA;AAAA,IAChB;AAEF,gBAAY,WAAW,CAAC,aAAa;AACnC,aAAO,SAAS,IAAI,OAAgB,QAAiB;AAAA,IACvD;AACA,gBAAY,YAAY;AAAA,MACtB,CAAC,OAAO,YAAY;AAClB,cAAM,WAAW,EAAE,GAAG,OAAO,GAAG,QAAQ,MAAA;AACxC,cAAM,WAAW,SAAS,aAAa,CAAC,UAAiB;AACzD,cAAM,OAAO,SAAS,IAAI,OAAgB,QAAiB;AAC3D,eAAO,MAAM,QAAQ,MAAM,QAAS,KAAK,KAAK;AAAA,MAChD;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,cAAc;AAAA,MAAA;AAAA,IAChB;AAGF,WAAO;AAAA,EACT,GAAA;AAEA,YAAU,QAAQ,KAAK;AAGvB,UAAQ,OAAO,IAAI;AAEnB,SAAO;AACT;"}
@@ -0,0 +1,37 @@
1
+ import { FormGroupApi, DeepKeys, DeepValue, FormAsyncValidateOrFn, FormGroupApiOptions, FormGroupAsyncValidateOrFn, FormGroupOptions, FormGroupValidateOrFn, FormValidateOrFn } from '@tanstack/form-core';
2
+ import { ComponentOptionsMixin, CreateComponentPublicInstanceWithMixins, EmitsOptions, EmitsToProps, PublicProps, SlotsType } from 'vue';
3
+ export type FormGroupComponent<TParentData, 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> = new <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>(props: FormGroupComponentBoundProps<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TSubmitMeta, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta> & EmitsToProps<EmitsOptions> & PublicProps) => CreateComponentPublicInstanceWithMixins<FormGroupComponentBoundProps<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TSubmitMeta, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, EmitsOptions, PublicProps, {}, false, {}, SlotsType<{
4
+ default: {
5
+ group: 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>;
6
+ state: 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>['state'];
7
+ };
8
+ }>>;
9
+ export interface VueFormGroupApi<TParentData, 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> {
10
+ FormGroup: FormGroupComponent<TParentData, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta>;
11
+ }
12
+ export declare function useFormGroup<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>): {
13
+ readonly api: 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>;
14
+ readonly state: Readonly<import('vue').Ref<import('@tanstack/form-core').FormGroupStoreState<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync>, import('@tanstack/form-core').FormGroupStoreState<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync>>>;
15
+ };
16
+ export type FormGroupComponentProps<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> = 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>;
17
+ export type FormGroupComponentBoundProps<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> = FormGroupOptions<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TSubmitMeta, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta>;
18
+ export declare const FormGroup: 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>(props: (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> & ({
19
+ [x: `on${Capitalize<string>}`]: ((...args: any[]) => any) | undefined;
20
+ } | {
21
+ [x: `on${Capitalize<string>}`]: ((...args: never) => any) | undefined;
22
+ })) & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps) => CreateComponentPublicInstanceWithMixins<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> & ({
23
+ [x: `on${Capitalize<string>}`]: ((...args: any[]) => any) | undefined;
24
+ } | {
25
+ [x: `on${Capitalize<string>}`]: ((...args: never) => any) | undefined;
26
+ }), {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, EmitsOptions, PublicProps, {}, false, {}, {}, {}, {}, string, {}, any, import('vue').ComponentProvideOptions, {
27
+ P: {};
28
+ B: {};
29
+ D: {};
30
+ C: {};
31
+ M: {};
32
+ Defaults: {};
33
+ }, (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> & {
34
+ [x: `on${Capitalize<string>}`]: ((...args: any[]) => any) | undefined;
35
+ }) | (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> & {
36
+ [x: `on${Capitalize<string>}`]: ((...args: never) => any) | undefined;
37
+ }), {}, {}, {}, {}, {}>;
@@ -0,0 +1,41 @@
1
+ import { FormGroupApi } from "@tanstack/form-core";
2
+ import { useStore } from "@tanstack/vue-store";
3
+ import { defineComponent, onMounted, onUnmounted, watch } from "vue";
4
+ function useFormGroup(opts) {
5
+ const formGroupApi = (() => {
6
+ const api = new FormGroupApi({
7
+ ...opts
8
+ });
9
+ return api;
10
+ })();
11
+ const groupState = useStore(formGroupApi.store, (state) => state);
12
+ let cleanup;
13
+ onMounted(() => {
14
+ cleanup = formGroupApi.mount();
15
+ });
16
+ onUnmounted(() => {
17
+ cleanup();
18
+ });
19
+ watch(
20
+ () => opts,
21
+ () => {
22
+ formGroupApi.update({ ...opts });
23
+ }
24
+ );
25
+ return { api: formGroupApi, state: groupState };
26
+ }
27
+ const FormGroup = defineComponent(
28
+ (formGroupOptions, context) => {
29
+ const groupApi = useFormGroup({ ...formGroupOptions, ...context.attrs });
30
+ return () => context.slots.default({
31
+ group: groupApi.api,
32
+ state: groupApi.state.value
33
+ });
34
+ },
35
+ { name: "FormGroup", inheritAttrs: false }
36
+ );
37
+ export {
38
+ FormGroup,
39
+ useFormGroup
40
+ };
41
+ //# sourceMappingURL=useFormGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFormGroup.js","sources":["../../src/useFormGroup.tsx"],"sourcesContent":["import { FormGroupApi } from '@tanstack/form-core'\nimport { useStore } from '@tanstack/vue-store'\nimport { defineComponent, onMounted, onUnmounted, watch } from 'vue'\nimport type {\n DeepKeys,\n DeepValue,\n FormAsyncValidateOrFn,\n FormGroupApiOptions,\n FormGroupAsyncValidateOrFn,\n FormGroupOptions,\n FormGroupValidateOrFn,\n FormValidateOrFn,\n} from '@tanstack/form-core'\nimport type {\n ComponentOptionsMixin,\n CreateComponentPublicInstanceWithMixins,\n EmitsOptions,\n EmitsToProps,\n PublicProps,\n SetupContext,\n SlotsType,\n} from 'vue'\n\nexport type FormGroupComponent<\n TParentData,\n TFormOnMount extends undefined | FormValidateOrFn<TParentData>,\n TFormOnChange extends undefined | FormValidateOrFn<TParentData>,\n TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnBlur extends undefined | FormValidateOrFn<TParentData>,\n TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>,\n TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>,\n TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>,\n TParentSubmitMeta,\n // This complex type comes from Vue's return type for `DefineSetupFnComponent` but with our own types sprinkled in\n // This allows us to pre-bind some generics while keeping the props type unbound generics for props-based inferencing\n> = new <\n TName extends DeepKeys<TParentData>,\n TData extends DeepValue<TParentData, TName>,\n TOnMount extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnChange extends\n | undefined\n | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnChangeAsync extends\n | undefined\n | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,\n TOnBlur extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnBlurAsync extends\n | undefined\n | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,\n TOnSubmit extends\n | undefined\n | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnSubmitAsync extends\n | undefined\n | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,\n TOnDynamic extends\n | undefined\n | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnDynamicAsync extends\n | undefined\n | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,\n TSubmitMeta,\n>(\n props: FormGroupComponentBoundProps<\n TParentData,\n TName,\n TData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TSubmitMeta,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer,\n TParentSubmitMeta\n > &\n EmitsToProps<EmitsOptions> &\n PublicProps,\n) => CreateComponentPublicInstanceWithMixins<\n FormGroupComponentBoundProps<\n TParentData,\n TName,\n TData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TSubmitMeta,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer,\n TParentSubmitMeta\n >,\n {},\n {},\n {},\n {},\n ComponentOptionsMixin,\n ComponentOptionsMixin,\n EmitsOptions,\n PublicProps,\n {},\n false,\n {},\n SlotsType<{\n default: {\n group: FormGroupApi<\n TParentData,\n TName,\n TData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TSubmitMeta,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer,\n TParentSubmitMeta\n >\n state: FormGroupApi<\n TParentData,\n TName,\n TData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TSubmitMeta,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer,\n TParentSubmitMeta\n >['state']\n }\n }>\n>\n\nexport interface VueFormGroupApi<\n TParentData,\n TFormOnMount extends undefined | FormValidateOrFn<TParentData>,\n TFormOnChange extends undefined | FormValidateOrFn<TParentData>,\n TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnBlur extends undefined | FormValidateOrFn<TParentData>,\n TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>,\n TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>,\n TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>,\n TParentSubmitMeta,\n> {\n FormGroup: FormGroupComponent<\n TParentData,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer,\n TParentSubmitMeta\n >\n}\n\nexport function useFormGroup<\n TParentData,\n TName extends DeepKeys<TParentData>,\n TData extends DeepValue<TParentData, TName>,\n TOnMount extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnChange extends\n | undefined\n | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnChangeAsync extends\n | undefined\n | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,\n TOnBlur extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnBlurAsync extends\n | undefined\n | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,\n TOnSubmit extends\n | undefined\n | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnSubmitAsync extends\n | undefined\n | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,\n TOnDynamic extends\n | undefined\n | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnDynamicAsync extends\n | undefined\n | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,\n TSubmitMeta,\n TFormOnMount extends undefined | FormValidateOrFn<TParentData>,\n TFormOnChange extends undefined | FormValidateOrFn<TParentData>,\n TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnBlur extends undefined | FormValidateOrFn<TParentData>,\n TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>,\n TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>,\n TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>,\n TParentSubmitMeta,\n>(\n opts: FormGroupApiOptions<\n TParentData,\n TName,\n TData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TSubmitMeta,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer,\n TParentSubmitMeta\n >,\n) {\n const formGroupApi = (() => {\n const api = new FormGroupApi({\n ...opts,\n })\n\n return api\n })()\n\n const groupState = useStore(formGroupApi.store, (state) => state)\n\n let cleanup!: () => void\n onMounted(() => {\n cleanup = formGroupApi.mount()\n })\n\n onUnmounted(() => {\n cleanup()\n })\n\n watch(\n () => opts,\n () => {\n // Keep options up to date as they are rendered\n formGroupApi.update({ ...opts } as never)\n },\n )\n\n return { api: formGroupApi, state: groupState } as const\n}\n\nexport type FormGroupComponentProps<\n TParentData,\n TName extends DeepKeys<TParentData>,\n TData extends DeepValue<TParentData, TName>,\n TOnMount extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnChange extends\n | undefined\n | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnChangeAsync extends\n | undefined\n | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,\n TOnBlur extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnBlurAsync extends\n | undefined\n | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,\n TOnSubmit extends\n | undefined\n | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnSubmitAsync extends\n | undefined\n | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,\n TOnDynamic extends\n | undefined\n | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnDynamicAsync extends\n | undefined\n | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,\n TSubmitMeta,\n TFormOnMount extends undefined | FormValidateOrFn<TParentData>,\n TFormOnChange extends undefined | FormValidateOrFn<TParentData>,\n TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnBlur extends undefined | FormValidateOrFn<TParentData>,\n TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>,\n TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>,\n TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>,\n TParentSubmitMeta,\n> = FormGroupApiOptions<\n TParentData,\n TName,\n TData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TSubmitMeta,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer,\n TParentSubmitMeta\n>\n\nexport type FormGroupComponentBoundProps<\n TParentData,\n TName extends DeepKeys<TParentData>,\n TData extends DeepValue<TParentData, TName>,\n TOnMount extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnChange extends\n | undefined\n | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnChangeAsync extends\n | undefined\n | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,\n TOnBlur extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnBlurAsync extends\n | undefined\n | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,\n TOnSubmit extends\n | undefined\n | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnSubmitAsync extends\n | undefined\n | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,\n TOnDynamic extends\n | undefined\n | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnDynamicAsync extends\n | undefined\n | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,\n TSubmitMeta,\n TFormOnMount extends undefined | FormValidateOrFn<TParentData>,\n TFormOnChange extends undefined | FormValidateOrFn<TParentData>,\n TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnBlur extends undefined | FormValidateOrFn<TParentData>,\n TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>,\n TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>,\n TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>,\n TParentSubmitMeta,\n> = FormGroupOptions<\n TParentData,\n TName,\n TData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TSubmitMeta,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer,\n TParentSubmitMeta\n>\n\nexport const FormGroup = defineComponent(\n <\n TParentData,\n TName extends DeepKeys<TParentData>,\n TData extends DeepValue<TParentData, TName>,\n TOnMount extends\n | undefined\n | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnChange extends\n | undefined\n | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnChangeAsync extends\n | undefined\n | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,\n TOnBlur extends\n | undefined\n | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnBlurAsync extends\n | undefined\n | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,\n TOnSubmit extends\n | undefined\n | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnSubmitAsync extends\n | undefined\n | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,\n TOnDynamic extends\n | undefined\n | FormGroupValidateOrFn<TParentData, TName, TData>,\n TOnDynamicAsync extends\n | undefined\n | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,\n TSubmitMeta,\n TFormOnMount extends undefined | FormValidateOrFn<TParentData>,\n TFormOnChange extends undefined | FormValidateOrFn<TParentData>,\n TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnBlur extends undefined | FormValidateOrFn<TParentData>,\n TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>,\n TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>,\n TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>,\n TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>,\n TParentSubmitMeta,\n >(\n formGroupOptions: FormGroupApiOptions<\n TParentData,\n TName,\n TData,\n TOnMount,\n TOnChange,\n TOnChangeAsync,\n TOnBlur,\n TOnBlurAsync,\n TOnSubmit,\n TOnSubmitAsync,\n TOnDynamic,\n TOnDynamicAsync,\n TSubmitMeta,\n TFormOnMount,\n TFormOnChange,\n TFormOnChangeAsync,\n TFormOnBlur,\n TFormOnBlurAsync,\n TFormOnSubmit,\n TFormOnSubmitAsync,\n TFormOnDynamic,\n TFormOnDynamicAsync,\n TFormOnServer,\n TParentSubmitMeta\n >,\n context: SetupContext,\n ) => {\n const groupApi = useFormGroup({ ...formGroupOptions, ...context.attrs })\n\n return () =>\n context.slots.default!({\n group: groupApi.api,\n state: groupApi.state.value,\n })\n },\n { name: 'FormGroup', inheritAttrs: false },\n)\n"],"names":[],"mappings":";;;AA4NO,SAAS,aAwCd,MA0BA;AACA,QAAM,gBAAgB,MAAM;AAC1B,UAAM,MAAM,IAAI,aAAa;AAAA,MAC3B,GAAG;AAAA,IAAA,CACJ;AAED,WAAO;AAAA,EACT,GAAA;AAEA,QAAM,aAAa,SAAS,aAAa,OAAO,CAAC,UAAU,KAAK;AAEhE,MAAI;AACJ,YAAU,MAAM;AACd,cAAU,aAAa,MAAA;AAAA,EACzB,CAAC;AAED,cAAY,MAAM;AAChB,YAAA;AAAA,EACF,CAAC;AAED;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAEJ,mBAAa,OAAO,EAAE,GAAG,MAAe;AAAA,IAC1C;AAAA,EAAA;AAGF,SAAO,EAAE,KAAK,cAAc,OAAO,WAAA;AACrC;AAsIO,MAAM,YAAY;AAAA,EACvB,CA4CE,kBA0BA,YACG;AACH,UAAM,WAAW,aAAa,EAAE,GAAG,kBAAkB,GAAG,QAAQ,OAAO;AAEvE,WAAO,MACL,QAAQ,MAAM,QAAS;AAAA,MACrB,OAAO,SAAS;AAAA,MAChB,OAAO,SAAS,MAAM;AAAA,IAAA,CACvB;AAAA,EACL;AAAA,EACA,EAAE,MAAM,aAAa,cAAc,MAAA;AACrC;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tanstack/vue-form",
3
- "version": "1.32.1",
3
+ "version": "1.33.0",
4
4
  "description": "Powerful, type-safe forms for Vue.",
5
5
  "author": "tannerlinsley",
6
6
  "license": "MIT",
@@ -37,8 +37,8 @@
37
37
  "src"
38
38
  ],
39
39
  "dependencies": {
40
- "@tanstack/vue-store": "^0.9.1",
41
- "@tanstack/form-core": "1.32.1"
40
+ "@tanstack/vue-store": "^0.11.0",
41
+ "@tanstack/form-core": "1.33.0"
42
42
  },
43
43
  "devDependencies": {
44
44
  "@vitejs/plugin-vue": "^5.2.4",
package/src/index.ts CHANGED
@@ -2,3 +2,4 @@ export * from '@tanstack/form-core'
2
2
  export { useStore } from '@tanstack/vue-store'
3
3
  export * from './useField'
4
4
  export * from './useForm'
5
+ export * from './useFormGroup'
package/src/useForm.tsx CHANGED
@@ -2,6 +2,7 @@ import { FormApi } from '@tanstack/form-core'
2
2
  import { useStore } from '@tanstack/vue-store'
3
3
  import { defineComponent, h, onMounted } from 'vue'
4
4
  import { Field } from './useField'
5
+ import { FormGroup } from './useFormGroup'
5
6
  import type {
6
7
  FormAsyncValidateOrFn,
7
8
  FormOptions,
@@ -18,6 +19,7 @@ import type {
18
19
  SlotsType,
19
20
  } from 'vue'
20
21
  import type { FieldComponent } from './useField'
22
+ import type { FormGroupComponent } from './useFormGroup'
21
23
 
22
24
  type SubscribeComponent<
23
25
  TParentData,
@@ -135,6 +137,20 @@ export interface VueFormApi<
135
137
  TFormOnServer,
136
138
  TSubmitMeta
137
139
  >
140
+ FormGroup: FormGroupComponent<
141
+ TParentData,
142
+ TFormOnMount,
143
+ TFormOnChange,
144
+ TFormOnChangeAsync,
145
+ TFormOnBlur,
146
+ TFormOnBlurAsync,
147
+ TFormOnSubmit,
148
+ TFormOnSubmitAsync,
149
+ TFormOnDynamic,
150
+ TFormOnDynamicAsync,
151
+ TFormOnServer,
152
+ TSubmitMeta
153
+ >
138
154
  useStore: <
139
155
  TSelected = NoInfer<
140
156
  FormState<
@@ -259,6 +275,20 @@ export function useForm<
259
275
  inheritAttrs: false,
260
276
  },
261
277
  ) as never
278
+ extendedApi.FormGroup = defineComponent(
279
+ (props, context) => {
280
+ return () =>
281
+ h(
282
+ FormGroup as never,
283
+ { ...props, ...context.attrs, form: api },
284
+ context.slots,
285
+ )
286
+ },
287
+ {
288
+ name: 'APIFormGroup',
289
+ inheritAttrs: false,
290
+ },
291
+ ) as never
262
292
  extendedApi.useStore = (selector) => {
263
293
  return useStore(api.store as never, selector as never) as never
264
294
  }
@@ -0,0 +1,532 @@
1
+ import { FormGroupApi } from '@tanstack/form-core'
2
+ import { useStore } from '@tanstack/vue-store'
3
+ import { defineComponent, onMounted, onUnmounted, watch } from 'vue'
4
+ import type {
5
+ DeepKeys,
6
+ DeepValue,
7
+ FormAsyncValidateOrFn,
8
+ FormGroupApiOptions,
9
+ FormGroupAsyncValidateOrFn,
10
+ FormGroupOptions,
11
+ FormGroupValidateOrFn,
12
+ FormValidateOrFn,
13
+ } from '@tanstack/form-core'
14
+ import type {
15
+ ComponentOptionsMixin,
16
+ CreateComponentPublicInstanceWithMixins,
17
+ EmitsOptions,
18
+ EmitsToProps,
19
+ PublicProps,
20
+ SetupContext,
21
+ SlotsType,
22
+ } from 'vue'
23
+
24
+ export type FormGroupComponent<
25
+ TParentData,
26
+ TFormOnMount extends undefined | FormValidateOrFn<TParentData>,
27
+ TFormOnChange extends undefined | FormValidateOrFn<TParentData>,
28
+ TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
29
+ TFormOnBlur extends undefined | FormValidateOrFn<TParentData>,
30
+ TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
31
+ TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>,
32
+ TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
33
+ TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>,
34
+ TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
35
+ TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>,
36
+ TParentSubmitMeta,
37
+ // This complex type comes from Vue's return type for `DefineSetupFnComponent` but with our own types sprinkled in
38
+ // This allows us to pre-bind some generics while keeping the props type unbound generics for props-based inferencing
39
+ > = new <
40
+ TName extends DeepKeys<TParentData>,
41
+ TData extends DeepValue<TParentData, TName>,
42
+ TOnMount extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>,
43
+ TOnChange extends
44
+ | undefined
45
+ | FormGroupValidateOrFn<TParentData, TName, TData>,
46
+ TOnChangeAsync extends
47
+ | undefined
48
+ | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
49
+ TOnBlur extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>,
50
+ TOnBlurAsync extends
51
+ | undefined
52
+ | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
53
+ TOnSubmit extends
54
+ | undefined
55
+ | FormGroupValidateOrFn<TParentData, TName, TData>,
56
+ TOnSubmitAsync extends
57
+ | undefined
58
+ | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
59
+ TOnDynamic extends
60
+ | undefined
61
+ | FormGroupValidateOrFn<TParentData, TName, TData>,
62
+ TOnDynamicAsync extends
63
+ | undefined
64
+ | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
65
+ TSubmitMeta,
66
+ >(
67
+ props: FormGroupComponentBoundProps<
68
+ TParentData,
69
+ TName,
70
+ TData,
71
+ TOnMount,
72
+ TOnChange,
73
+ TOnChangeAsync,
74
+ TOnBlur,
75
+ TOnBlurAsync,
76
+ TOnSubmit,
77
+ TOnSubmitAsync,
78
+ TOnDynamic,
79
+ TOnDynamicAsync,
80
+ TSubmitMeta,
81
+ TFormOnMount,
82
+ TFormOnChange,
83
+ TFormOnChangeAsync,
84
+ TFormOnBlur,
85
+ TFormOnBlurAsync,
86
+ TFormOnSubmit,
87
+ TFormOnSubmitAsync,
88
+ TFormOnDynamic,
89
+ TFormOnDynamicAsync,
90
+ TFormOnServer,
91
+ TParentSubmitMeta
92
+ > &
93
+ EmitsToProps<EmitsOptions> &
94
+ PublicProps,
95
+ ) => CreateComponentPublicInstanceWithMixins<
96
+ FormGroupComponentBoundProps<
97
+ TParentData,
98
+ TName,
99
+ TData,
100
+ TOnMount,
101
+ TOnChange,
102
+ TOnChangeAsync,
103
+ TOnBlur,
104
+ TOnBlurAsync,
105
+ TOnSubmit,
106
+ TOnSubmitAsync,
107
+ TOnDynamic,
108
+ TOnDynamicAsync,
109
+ TSubmitMeta,
110
+ TFormOnMount,
111
+ TFormOnChange,
112
+ TFormOnChangeAsync,
113
+ TFormOnBlur,
114
+ TFormOnBlurAsync,
115
+ TFormOnSubmit,
116
+ TFormOnSubmitAsync,
117
+ TFormOnDynamic,
118
+ TFormOnDynamicAsync,
119
+ TFormOnServer,
120
+ TParentSubmitMeta
121
+ >,
122
+ {},
123
+ {},
124
+ {},
125
+ {},
126
+ ComponentOptionsMixin,
127
+ ComponentOptionsMixin,
128
+ EmitsOptions,
129
+ PublicProps,
130
+ {},
131
+ false,
132
+ {},
133
+ SlotsType<{
134
+ default: {
135
+ group: FormGroupApi<
136
+ TParentData,
137
+ TName,
138
+ TData,
139
+ TOnMount,
140
+ TOnChange,
141
+ TOnChangeAsync,
142
+ TOnBlur,
143
+ TOnBlurAsync,
144
+ TOnSubmit,
145
+ TOnSubmitAsync,
146
+ TOnDynamic,
147
+ TOnDynamicAsync,
148
+ TSubmitMeta,
149
+ TFormOnMount,
150
+ TFormOnChange,
151
+ TFormOnChangeAsync,
152
+ TFormOnBlur,
153
+ TFormOnBlurAsync,
154
+ TFormOnSubmit,
155
+ TFormOnSubmitAsync,
156
+ TFormOnDynamic,
157
+ TFormOnDynamicAsync,
158
+ TFormOnServer,
159
+ TParentSubmitMeta
160
+ >
161
+ state: FormGroupApi<
162
+ TParentData,
163
+ TName,
164
+ TData,
165
+ TOnMount,
166
+ TOnChange,
167
+ TOnChangeAsync,
168
+ TOnBlur,
169
+ TOnBlurAsync,
170
+ TOnSubmit,
171
+ TOnSubmitAsync,
172
+ TOnDynamic,
173
+ TOnDynamicAsync,
174
+ TSubmitMeta,
175
+ TFormOnMount,
176
+ TFormOnChange,
177
+ TFormOnChangeAsync,
178
+ TFormOnBlur,
179
+ TFormOnBlurAsync,
180
+ TFormOnSubmit,
181
+ TFormOnSubmitAsync,
182
+ TFormOnDynamic,
183
+ TFormOnDynamicAsync,
184
+ TFormOnServer,
185
+ TParentSubmitMeta
186
+ >['state']
187
+ }
188
+ }>
189
+ >
190
+
191
+ export interface VueFormGroupApi<
192
+ TParentData,
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
+ FormGroup: FormGroupComponent<
206
+ TParentData,
207
+ TFormOnMount,
208
+ TFormOnChange,
209
+ TFormOnChangeAsync,
210
+ TFormOnBlur,
211
+ TFormOnBlurAsync,
212
+ TFormOnSubmit,
213
+ TFormOnSubmitAsync,
214
+ TFormOnDynamic,
215
+ TFormOnDynamicAsync,
216
+ TFormOnServer,
217
+ TParentSubmitMeta
218
+ >
219
+ }
220
+
221
+ export function useFormGroup<
222
+ TParentData,
223
+ TName extends DeepKeys<TParentData>,
224
+ TData extends DeepValue<TParentData, TName>,
225
+ TOnMount extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>,
226
+ TOnChange extends
227
+ | undefined
228
+ | FormGroupValidateOrFn<TParentData, TName, TData>,
229
+ TOnChangeAsync extends
230
+ | undefined
231
+ | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
232
+ TOnBlur extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>,
233
+ TOnBlurAsync extends
234
+ | undefined
235
+ | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
236
+ TOnSubmit extends
237
+ | undefined
238
+ | FormGroupValidateOrFn<TParentData, TName, TData>,
239
+ TOnSubmitAsync extends
240
+ | undefined
241
+ | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
242
+ TOnDynamic extends
243
+ | undefined
244
+ | FormGroupValidateOrFn<TParentData, TName, TData>,
245
+ TOnDynamicAsync extends
246
+ | undefined
247
+ | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
248
+ TSubmitMeta,
249
+ TFormOnMount extends undefined | FormValidateOrFn<TParentData>,
250
+ TFormOnChange extends undefined | FormValidateOrFn<TParentData>,
251
+ TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
252
+ TFormOnBlur extends undefined | FormValidateOrFn<TParentData>,
253
+ TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
254
+ TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>,
255
+ TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
256
+ TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>,
257
+ TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
258
+ TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>,
259
+ TParentSubmitMeta,
260
+ >(
261
+ opts: FormGroupApiOptions<
262
+ TParentData,
263
+ TName,
264
+ TData,
265
+ TOnMount,
266
+ TOnChange,
267
+ TOnChangeAsync,
268
+ TOnBlur,
269
+ TOnBlurAsync,
270
+ TOnSubmit,
271
+ TOnSubmitAsync,
272
+ TOnDynamic,
273
+ TOnDynamicAsync,
274
+ TSubmitMeta,
275
+ TFormOnMount,
276
+ TFormOnChange,
277
+ TFormOnChangeAsync,
278
+ TFormOnBlur,
279
+ TFormOnBlurAsync,
280
+ TFormOnSubmit,
281
+ TFormOnSubmitAsync,
282
+ TFormOnDynamic,
283
+ TFormOnDynamicAsync,
284
+ TFormOnServer,
285
+ TParentSubmitMeta
286
+ >,
287
+ ) {
288
+ const formGroupApi = (() => {
289
+ const api = new FormGroupApi({
290
+ ...opts,
291
+ })
292
+
293
+ return api
294
+ })()
295
+
296
+ const groupState = useStore(formGroupApi.store, (state) => state)
297
+
298
+ let cleanup!: () => void
299
+ onMounted(() => {
300
+ cleanup = formGroupApi.mount()
301
+ })
302
+
303
+ onUnmounted(() => {
304
+ cleanup()
305
+ })
306
+
307
+ watch(
308
+ () => opts,
309
+ () => {
310
+ // Keep options up to date as they are rendered
311
+ formGroupApi.update({ ...opts } as never)
312
+ },
313
+ )
314
+
315
+ return { api: formGroupApi, state: groupState } as const
316
+ }
317
+
318
+ export type FormGroupComponentProps<
319
+ TParentData,
320
+ TName extends DeepKeys<TParentData>,
321
+ TData extends DeepValue<TParentData, TName>,
322
+ TOnMount extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>,
323
+ TOnChange extends
324
+ | undefined
325
+ | FormGroupValidateOrFn<TParentData, TName, TData>,
326
+ TOnChangeAsync extends
327
+ | undefined
328
+ | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
329
+ TOnBlur extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>,
330
+ TOnBlurAsync extends
331
+ | undefined
332
+ | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
333
+ TOnSubmit extends
334
+ | undefined
335
+ | FormGroupValidateOrFn<TParentData, TName, TData>,
336
+ TOnSubmitAsync extends
337
+ | undefined
338
+ | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
339
+ TOnDynamic extends
340
+ | undefined
341
+ | FormGroupValidateOrFn<TParentData, TName, TData>,
342
+ TOnDynamicAsync extends
343
+ | undefined
344
+ | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
345
+ TSubmitMeta,
346
+ TFormOnMount extends undefined | FormValidateOrFn<TParentData>,
347
+ TFormOnChange extends undefined | FormValidateOrFn<TParentData>,
348
+ TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
349
+ TFormOnBlur extends undefined | FormValidateOrFn<TParentData>,
350
+ TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
351
+ TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>,
352
+ TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
353
+ TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>,
354
+ TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
355
+ TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>,
356
+ TParentSubmitMeta,
357
+ > = FormGroupApiOptions<
358
+ TParentData,
359
+ TName,
360
+ TData,
361
+ TOnMount,
362
+ TOnChange,
363
+ TOnChangeAsync,
364
+ TOnBlur,
365
+ TOnBlurAsync,
366
+ TOnSubmit,
367
+ TOnSubmitAsync,
368
+ TOnDynamic,
369
+ TOnDynamicAsync,
370
+ TSubmitMeta,
371
+ TFormOnMount,
372
+ TFormOnChange,
373
+ TFormOnChangeAsync,
374
+ TFormOnBlur,
375
+ TFormOnBlurAsync,
376
+ TFormOnSubmit,
377
+ TFormOnSubmitAsync,
378
+ TFormOnDynamic,
379
+ TFormOnDynamicAsync,
380
+ TFormOnServer,
381
+ TParentSubmitMeta
382
+ >
383
+
384
+ export type FormGroupComponentBoundProps<
385
+ TParentData,
386
+ TName extends DeepKeys<TParentData>,
387
+ TData extends DeepValue<TParentData, TName>,
388
+ TOnMount extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>,
389
+ TOnChange extends
390
+ | undefined
391
+ | FormGroupValidateOrFn<TParentData, TName, TData>,
392
+ TOnChangeAsync extends
393
+ | undefined
394
+ | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
395
+ TOnBlur extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>,
396
+ TOnBlurAsync extends
397
+ | undefined
398
+ | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
399
+ TOnSubmit extends
400
+ | undefined
401
+ | FormGroupValidateOrFn<TParentData, TName, TData>,
402
+ TOnSubmitAsync extends
403
+ | undefined
404
+ | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
405
+ TOnDynamic extends
406
+ | undefined
407
+ | FormGroupValidateOrFn<TParentData, TName, TData>,
408
+ TOnDynamicAsync extends
409
+ | undefined
410
+ | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
411
+ TSubmitMeta,
412
+ TFormOnMount extends undefined | FormValidateOrFn<TParentData>,
413
+ TFormOnChange extends undefined | FormValidateOrFn<TParentData>,
414
+ TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
415
+ TFormOnBlur extends undefined | FormValidateOrFn<TParentData>,
416
+ TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
417
+ TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>,
418
+ TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
419
+ TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>,
420
+ TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
421
+ TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>,
422
+ TParentSubmitMeta,
423
+ > = FormGroupOptions<
424
+ TParentData,
425
+ TName,
426
+ TData,
427
+ TOnMount,
428
+ TOnChange,
429
+ TOnChangeAsync,
430
+ TOnBlur,
431
+ TOnBlurAsync,
432
+ TOnSubmit,
433
+ TOnSubmitAsync,
434
+ TOnDynamic,
435
+ TOnDynamicAsync,
436
+ TSubmitMeta,
437
+ TFormOnMount,
438
+ TFormOnChange,
439
+ TFormOnChangeAsync,
440
+ TFormOnBlur,
441
+ TFormOnBlurAsync,
442
+ TFormOnSubmit,
443
+ TFormOnSubmitAsync,
444
+ TFormOnDynamic,
445
+ TFormOnDynamicAsync,
446
+ TFormOnServer,
447
+ TParentSubmitMeta
448
+ >
449
+
450
+ export const FormGroup = defineComponent(
451
+ <
452
+ TParentData,
453
+ TName extends DeepKeys<TParentData>,
454
+ TData extends DeepValue<TParentData, TName>,
455
+ TOnMount extends
456
+ | undefined
457
+ | FormGroupValidateOrFn<TParentData, TName, TData>,
458
+ TOnChange extends
459
+ | undefined
460
+ | FormGroupValidateOrFn<TParentData, TName, TData>,
461
+ TOnChangeAsync extends
462
+ | undefined
463
+ | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
464
+ TOnBlur extends
465
+ | undefined
466
+ | FormGroupValidateOrFn<TParentData, TName, TData>,
467
+ TOnBlurAsync extends
468
+ | undefined
469
+ | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
470
+ TOnSubmit extends
471
+ | undefined
472
+ | FormGroupValidateOrFn<TParentData, TName, TData>,
473
+ TOnSubmitAsync extends
474
+ | undefined
475
+ | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
476
+ TOnDynamic extends
477
+ | undefined
478
+ | FormGroupValidateOrFn<TParentData, TName, TData>,
479
+ TOnDynamicAsync extends
480
+ | undefined
481
+ | FormGroupAsyncValidateOrFn<TParentData, TName, TData>,
482
+ TSubmitMeta,
483
+ TFormOnMount extends undefined | FormValidateOrFn<TParentData>,
484
+ TFormOnChange extends undefined | FormValidateOrFn<TParentData>,
485
+ TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
486
+ TFormOnBlur extends undefined | FormValidateOrFn<TParentData>,
487
+ TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
488
+ TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>,
489
+ TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
490
+ TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>,
491
+ TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>,
492
+ TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>,
493
+ TParentSubmitMeta,
494
+ >(
495
+ formGroupOptions: FormGroupApiOptions<
496
+ TParentData,
497
+ TName,
498
+ TData,
499
+ TOnMount,
500
+ TOnChange,
501
+ TOnChangeAsync,
502
+ TOnBlur,
503
+ TOnBlurAsync,
504
+ TOnSubmit,
505
+ TOnSubmitAsync,
506
+ TOnDynamic,
507
+ TOnDynamicAsync,
508
+ TSubmitMeta,
509
+ TFormOnMount,
510
+ TFormOnChange,
511
+ TFormOnChangeAsync,
512
+ TFormOnBlur,
513
+ TFormOnBlurAsync,
514
+ TFormOnSubmit,
515
+ TFormOnSubmitAsync,
516
+ TFormOnDynamic,
517
+ TFormOnDynamicAsync,
518
+ TFormOnServer,
519
+ TParentSubmitMeta
520
+ >,
521
+ context: SetupContext,
522
+ ) => {
523
+ const groupApi = useFormGroup({ ...formGroupOptions, ...context.attrs })
524
+
525
+ return () =>
526
+ context.slots.default!({
527
+ group: groupApi.api,
528
+ state: groupApi.state.value,
529
+ })
530
+ },
531
+ { name: 'FormGroup', inheritAttrs: false },
532
+ )