@volverjs/form-vue
Version:
Vue 3 Forms with @volverjs/ui-vue
217 lines (216 loc) • 12.8 kB
TypeScript
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;
};
});
};