All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Automated npm publishing via GitHub Actions trusted publishing
- Prettier code formatting enforced via lint-staged pre-commit hook
- Dropped Node 18 from CI matrix (Vitest requires Node 20+)
Alpine.Form(data, options)factory for creating reactive form instances insidex-datax-registerdirective with auto-binding for text, email, password, number, date, textarea, select, multi-select, checkbox, radio, and file inputs- Form state tracking:
isValid,isValidating,isSubmitting,isSubmitted,isDirty,error - Field state tracking:
isValid,isDirty,isTouched,error - Five validation modes:
onChange,onBlur,onTouched,onSubmit,all - Pluggable schema validation via
config.validator(works with Joi, Zod, or any custom adapter) - Built-in
joiValidatoradapter for Joi schema validation - Per-field custom validation functions with cross-field data access
- Async validation support with automatic race condition handling
- Manual error control:
setError(),clearErrors(),getErrors() - Form submission with
submit(callback)— handles validation, async callbacks, error capture - Reset with default value tracking:
reset(),reset(newDefaults),getDefaults() - Dirty tracking:
getDirtyFields()for PATCH-style partial updates - Bulk value setting with
setValues()for populating from API responses - Single-field validation with
validateField(field) - Dynamic field management:
unregister(),updateSchema() - Auto-focus first invalid field on failed submit (
focusOnErrorconfig) - Field change events via Alpine's
$dispatch(fieldChangeEventEnabledconfig) - CDN build (IIFE), ESM, and CJS distribution formats
- Documentation site with docsify (search, live demos, API reference)