UNPKG

@adbros/vue-validation

Version:

Composable for schema-based form validation in Vue 3 using Valibot

38 lines (35 loc) 2.73 kB
import * as vue from 'vue'; import { MaybeRefOrGetter } from 'vue'; import * as valibot from 'valibot'; import { BaseSchema, BaseIssue, BaseSchemaAsync, InferOutput } from 'valibot'; type CustomSchema = BaseSchema<unknown, unknown, BaseIssue<unknown>> | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>; declare const useValidationKey: (obj: unknown) => string[]; declare const useValidation: <TSchema extends CustomSchema>(schema: MaybeRefOrGetter<TSchema>, data: MaybeRefOrGetter<Record<string, unknown>>) => { validate: () => Promise<valibot.SafeParseResult<TSchema>>; errors: vue.ComputedRef<{ [x: string]: string; }>; silentErrors: vue.Ref<{ readonly root?: [string, ...string[]] | undefined; readonly nested?: (Readonly<Partial<Record<TSchema extends BaseSchema<unknown, unknown, BaseIssue<unknown>> | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>> ? valibot.IssueDotPath<TSchema> : string, [string, ...string[]]>>> extends infer T ? { [TKey in keyof T]: Readonly<Partial<Record<TSchema extends BaseSchema<unknown, unknown, BaseIssue<unknown>> | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>> ? valibot.IssueDotPath<TSchema> : string, [string, ...string[]]>>>[TKey]; } : never) | undefined; readonly other?: [string, ...string[]] | undefined; } | undefined, { readonly root?: [string, ...string[]] | undefined; readonly nested?: (Readonly<Partial<Record<TSchema extends BaseSchema<unknown, unknown, BaseIssue<unknown>> | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>> ? valibot.IssueDotPath<TSchema> : string, [string, ...string[]]>>> extends infer T_1 ? { [TKey in keyof T_1]: Readonly<Partial<Record<TSchema extends BaseSchema<unknown, unknown, BaseIssue<unknown>> | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>> ? valibot.IssueDotPath<TSchema> : string, [string, ...string[]]>>>[TKey]; } : never) | undefined; readonly other?: [string, ...string[]] | undefined; } | undefined>; output: vue.Ref<InferOutput<TSchema> | undefined, InferOutput<TSchema> | undefined>; dirtyFields: vue.Ref<string[], string[]>; validDirtyFields: vue.Ref<string[], string[]>; makeFieldDirty: (name: string) => void; makeFormDirty: () => void; cleanField: (name: string) => void; cleanForm: () => void; setCustomError: (field: string, message: string) => void; clearCustomError: (field: string) => void; clearAllCustomErrors: () => void; isDirty: (name: string) => boolean; isFormValid: vue.ComputedRef<boolean>; handleSubmit: (onSubmit: (values: InferOutput<TSchema>) => Promise<void> | void, onError?: () => void) => Promise<void>; }; export { useValidation, useValidationKey };