UNPKG

@volverjs/form-vue

Version:

Vue 3 Forms with @volverjs/ui-vue

217 lines (216 loc) 12.8 kB
import { type Component, type InjectionKey, type DeepReadonly, type Ref, type PropType } from 'vue'; import type { z, TypeOf } from 'zod'; import type { FormComponentOptions, FormSchema, FormTemplate, InjectedFormData } from './types'; import { FormStatus } from './enums'; export declare const defineForm: <Schema extends FormSchema>(schema: Schema, provideKey: InjectionKey<InjectedFormData<Schema>>, options?: FormComponentOptions<Schema> | undefined, VvFormTemplate?: Component) => { errors: Ref<z.inferFormattedError<Schema, string> | undefined>; status: Ref<FormStatus | undefined>; formData: Ref<Partial<z.TypeOf<Schema> | undefined>>; /** * An hack to add types to the default slot */ VvForm: { new (...args: any[]): { $: import("vue").ComponentInternalInstance; $data: {}; $props: { template?: FormTemplate<Schema> | undefined; modelValue?: Record<string, any> | undefined; updateThrottle?: number | undefined; continuosValidation?: boolean | undefined; onInvalid?: ((...args: any[]) => any) | undefined; onValid?: ((...args: any[]) => any) | undefined; "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined; key?: string | number | symbol | undefined; onSubmit?: ((...args: any[]) => any) | undefined; ref?: import("vue").VNodeRef | undefined; ref_for?: boolean | undefined; ref_key?: string | undefined; onVnodeBeforeMount?: ((vnode: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, { [key: string]: any; }>) => void) | ((vnode: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, { [key: string]: any; }>) => void)[] | undefined; onVnodeMounted?: ((vnode: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, { [key: string]: any; }>) => void) | ((vnode: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, { [key: string]: any; }>) => void)[] | undefined; onVnodeBeforeUpdate?: ((vnode: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, { [key: string]: any; }>, oldVNode: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, { [key: string]: any; }>) => void) | ((vnode: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, { [key: string]: any; }>, oldVNode: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, { [key: string]: any; }>) => void)[] | undefined; onVnodeUpdated?: ((vnode: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, { [key: string]: any; }>, oldVNode: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, { [key: string]: any; }>) => void) | ((vnode: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, { [key: string]: any; }>, oldVNode: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, { [key: string]: any; }>) => void)[] | undefined; onVnodeBeforeUnmount?: ((vnode: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, { [key: string]: any; }>) => void) | ((vnode: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, { [key: string]: any; }>) => void)[] | undefined; onVnodeUnmounted?: ((vnode: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, { [key: string]: any; }>) => void) | ((vnode: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, { [key: string]: any; }>) => void)[] | undefined; class?: unknown; style?: unknown; }; $attrs: { [x: string]: unknown; }; $refs: { [x: string]: unknown; }; $slots: Readonly<{ [name: string]: import("vue").Slot<any> | undefined; }>; $root: import("vue").ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, import("vue").ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string, {}>, {}, {}> | null; $parent: import("vue").ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, import("vue").ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string, {}>, {}, {}> | null; $emit: (event: "invalid" | "valid" | "update:modelValue" | "submit", ...args: any[]) => void; $el: any; $options: import("vue").ComponentOptionsBase<Readonly<import("vue").ExtractPropTypes<{ modelValue: { type: ObjectConstructor; default: () => {}; }; updateThrottle: { type: NumberConstructor; default: number; }; continuosValidation: { type: BooleanConstructor; default: boolean; }; template: { type: PropType<FormTemplate<Schema>>; default: undefined; }; }>> & { onInvalid?: ((...args: any[]) => any) | undefined; onValid?: ((...args: any[]) => any) | undefined; "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined; onSubmit?: ((...args: any[]) => any) | undefined; }, { formData: Ref<Partial<z.TypeOf<Schema> | undefined>>; submit: () => boolean; validate: (value?: Partial<z.TypeOf<Schema> | undefined>) => boolean; errors: Readonly<Ref<DeepReadonly<z.inferFormattedError<Schema, string>> | undefined>>; status: Readonly<Ref<FormStatus | undefined>>; invalid: import("vue").ComputedRef<boolean>; }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("invalid" | "valid" | "update:modelValue" | "submit")[], string, { template: FormTemplate<Schema>; modelValue: Record<string, any>; updateThrottle: number; continuosValidation: boolean; }, {}, string, {}> & { beforeCreate?: ((() => void) | (() => void)[]) | undefined; created?: ((() => void) | (() => void)[]) | undefined; beforeMount?: ((() => void) | (() => void)[]) | undefined; mounted?: ((() => void) | (() => void)[]) | undefined; beforeUpdate?: ((() => void) | (() => void)[]) | undefined; updated?: ((() => void) | (() => void)[]) | undefined; activated?: ((() => void) | (() => void)[]) | undefined; deactivated?: ((() => void) | (() => void)[]) | undefined; beforeDestroy?: ((() => void) | (() => void)[]) | undefined; beforeUnmount?: ((() => void) | (() => void)[]) | undefined; destroyed?: ((() => void) | (() => void)[]) | undefined; unmounted?: ((() => void) | (() => void)[]) | undefined; renderTracked?: (((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[]) | undefined; renderTriggered?: (((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[]) | undefined; errorCaptured?: (((err: unknown, instance: import("vue").ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, import("vue").ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string, {}>, {}, {}> | null, info: string) => boolean | void) | ((err: unknown, instance: import("vue").ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, import("vue").ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string, {}>, {}, {}> | null, info: string) => boolean | void)[]) | undefined; }; $forceUpdate: () => void; $nextTick: typeof import("vue").nextTick; $watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (args_0: R, args_1: R) => any : (...args: any) => any, options?: import("vue").WatchOptions<boolean> | undefined): import("vue").WatchStopHandle; } & Readonly<import("vue").ExtractPropTypes<{ modelValue: { type: ObjectConstructor; default: () => {}; }; updateThrottle: { type: NumberConstructor; default: number; }; continuosValidation: { type: BooleanConstructor; default: boolean; }; template: { type: PropType<FormTemplate<Schema>>; default: undefined; }; }>> & { onInvalid?: ((...args: any[]) => any) | undefined; onValid?: ((...args: any[]) => any) | undefined; "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined; onSubmit?: ((...args: any[]) => any) | undefined; } & import("vue").ShallowUnwrapRef<{ formData: Ref<Partial<z.TypeOf<Schema> | undefined>>; submit: () => boolean; validate: (value?: Partial<z.TypeOf<Schema> | undefined>) => boolean; errors: Readonly<Ref<DeepReadonly<z.inferFormattedError<Schema, string>> | undefined>>; status: Readonly<Ref<FormStatus | undefined>>; invalid: import("vue").ComputedRef<boolean>; }> & {} & import("vue").ComponentCustomProperties & {}; __isFragment?: undefined; __isTeleport?: undefined; __isSuspense?: undefined; } & import("vue").ComponentOptionsBase<Readonly<import("vue").ExtractPropTypes<{ modelValue: { type: ObjectConstructor; default: () => {}; }; updateThrottle: { type: NumberConstructor; default: number; }; continuosValidation: { type: BooleanConstructor; default: boolean; }; template: { type: PropType<FormTemplate<Schema>>; default: undefined; }; }>> & { onInvalid?: ((...args: any[]) => any) | undefined; onValid?: ((...args: any[]) => any) | undefined; "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined; onSubmit?: ((...args: any[]) => any) | undefined; }, { formData: Ref<Partial<z.TypeOf<Schema> | undefined>>; submit: () => boolean; validate: (value?: Partial<z.TypeOf<Schema> | undefined>) => boolean; errors: Readonly<Ref<DeepReadonly<z.inferFormattedError<Schema, string>> | undefined>>; status: Readonly<Ref<FormStatus | undefined>>; invalid: import("vue").ComputedRef<boolean>; }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("invalid" | "valid" | "update:modelValue" | "submit")[], "invalid" | "valid" | "update:modelValue" | "submit", { template: FormTemplate<Schema>; modelValue: Record<string, any>; updateThrottle: number; continuosValidation: boolean; }, {}, string, {}> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & (new () => { $slots: { default: (_: { formData: unknown extends Partial<z.TypeOf<Schema>> | undefined ? undefined : Partial<z.TypeOf<Schema>> | undefined; submit: () => boolean; validate: () => boolean; errors: Readonly<Ref<DeepReadonly<z.inferFormattedError<Schema, string>>>>; status: Ref<DeepReadonly<`${FormStatus}` | undefined>>; invalid: Ref<DeepReadonly<boolean>>; }) => any; }; }); };