@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
TypeScript
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>;