UNPKG

@inkline/inkline

Version:

Inkline is the Vue.js UI/UX Library built for creating your next design system

36 lines (29 loc) 766 B
import { reactive } from 'vue'; import { initialize } from '@inkline/inkline/validation'; export interface FormFieldValidator { name: string; [key: string]: any; } export interface FormState { valid: boolean; invalid: boolean; untouched: boolean; touched: boolean; pristine: boolean; dirty: boolean; } export interface FormField extends FormState { value: any; errors: any; validators: Array<string | FormFieldValidator>; } export interface FormGroup extends FormState { [key: string]: FormField | FormField[] | FormGroup | boolean; } export function useForm<T> (rawSchema: T): { form: FormGroup } { const schema = initialize(rawSchema); const form = reactive(schema); return { form }; }