UNPKG

@jay-js/system

Version:

A powerful and flexible TypeScript library for UI, state management, lazy loading, routing and managing draggable elements in modern web applications.

44 lines (43 loc) 1.73 kB
import type { TUseForm, TUseFormOptions } from "../types.js"; /** * Creates a form management system with validation, state tracking, and DOM integration. * * @template T - The type of form values being managed * @param {TUseFormOptions<T>} options - Form configuration options * @param {T} options.defaultValues - Initial values for the form fields * @param {TResolver<T>} [options.resolver] - Optional validation resolver function * @param {number} [options.debounceMs=300] - Debounce time for validation in milliseconds * @returns {TUseForm<T>} Form management interface with methods for registration, state access, and event handling * * @example * // Basic form with Zod validation and custom debounce * const form = handleForm({ * defaultValues: { email: '', password: '', remember: false }, * resolver: zodResolver(loginSchema), * debounceMs: 500 // Custom debounce time * }); * * // Register an input element * const emailInput = document.querySelector('#email'); * Object.assign(emailInput, form.register('email')); * * // Register a checkbox element * const rememberInput = document.querySelector('#remember'); * Object.assign(rememberInput, form.register('remember', { type: 'checkbox' })); * * // Show validation errors * const errorElement = document.querySelector('#email-error'); * errorElement.appendChild(form.formState.errors('email')); * * // Handle form submission * form.onSubmit((data, event) => { * console.log('Form submitted:', data); * }); * * // Reset form * form.formState.reset(); * * // Cleanup when component unmounts * form.destroy(); */ export declare function handleForm<T>({ defaultValues, resolver, debounceMs }: TUseFormOptions<T>): TUseForm<T>;