UNPKG

@nullpixel/ui

Version:

A UI Library for Modern Web Apps, powered by Vue & Tailwind CSS.

83 lines (82 loc) 2.8 kB
import type { StandardSchemaV1 } from '@standard-schema/spec'; import type { ComputedRef, DeepReadonly, Ref } from 'vue'; import type { Schema as JoiSchema } from 'joi'; import type { ObjectSchema as YupObjectSchema } from 'yup'; import type { GetObjectField } from './utils'; import type { Struct as SuperstructSchema } from 'superstruct'; export interface Form<T extends object> { validate(opts?: { name?: keyof T | (keyof T)[]; silent?: boolean; nested?: boolean; transform?: boolean; }): Promise<T | false>; clear(path?: string): void; errors: Ref<FormError[]>; setErrors(errs: FormError[], name?: keyof T): void; getErrors(name?: keyof T): FormError[]; submit(): Promise<void>; disabled: ComputedRef<boolean>; dirty: ComputedRef<boolean>; dirtyFields: DeepReadonly<Set<keyof T>>; touchedFields: DeepReadonly<Set<keyof T>>; blurredFields: DeepReadonly<Set<keyof T>>; } export type FormSchema<T extends object> = YupObjectSchema<T> | JoiSchema<T> | SuperstructSchema<any, any> | StandardSchemaV1; export type FormInputEvents = 'input' | 'blur' | 'change' | 'focus'; export interface FormError<P extends string = string> { name?: P; message: string; } export interface FormErrorWithId extends FormError { id?: string; } export type FormSubmitEvent<T> = SubmitEvent & { data: T; }; export type FormValidationError = { errors: FormErrorWithId[]; children?: FormValidationError[]; }; export type FormErrorEvent = SubmitEvent & FormValidationError; export type FormEventType = FormInputEvents; export type FormChildAttachEvent = { type: 'attach'; formId: string | number; validate: Form<any>['validate']; }; export type FormChildDetachEvent = { type: 'detach'; formId: string | number; }; export type FormInputEvent<T extends object> = { type: FormEventType; name: keyof T; eager?: boolean; }; export type FormEvent<T extends object> = FormInputEvent<T> | FormChildAttachEvent | FormChildDetachEvent; export interface FormInjectedOptions { disabled?: boolean; validateOnInputDelay?: number; } export interface FormFieldInjectedOptions<T> { name?: string; size?: GetObjectField<T, 'size'>; error?: string | boolean; eagerValidation?: boolean; validateOnInputDelay?: number; errorPattern?: RegExp; hint?: string; description?: string; ariaId: string; } export interface ValidateReturnSchema<T> { result: T; errors: FormError[] | null; } export declare class FormValidationException extends Error { formId: string | number; errors: FormErrorWithId[]; children?: FormValidationException[]; constructor(formId: string | number, errors: FormErrorWithId[], childErrors?: FormValidationException[]); }