UNPKG

alpinejs-form-validation

Version:

Lightweight, CSS-driven form validation plugin for Alpine.js with real-time validation and data attributes

43 lines (34 loc) 1.13 kB
import { checkInput } from './checkInput' export default function (Alpine) { Alpine.directive( 'validation', (el, { modifiers, expression }, { evaluateLater, effect }) => { effect(() => checkInput(el, modifiers, expression, evaluateLater)) document.addEventListener('validate', (validateEvent) => { const { target } = validateEvent if (!target.contains(el)) { return } checkInput(el, modifiers, expression, evaluateLater, true) }) // Clear validation data attributes on form reset document.addEventListener('reset', (resetEvent) => { const { target } = resetEvent if (!target.contains(el)) { return } // Remove all validation data attributes const validationAttributes = [ 'data-validation-dirty', 'data-validation-valid', 'data-validation-reason', 'data-validation-status', 'data-validation-options', ] validationAttributes.forEach((htmlAttribute) => el.removeAttribute(htmlAttribute) ) }) } ) }