UNPKG

uswds

Version:

Open source UI components and visual style guide for U.S. government websites

37 lines (28 loc) 1.16 kB
const dataset = require('elem-dataset'); const { prefix: PREFIX } = require('../config'); const CHECKED = 'aria-checked'; const CHECKED_CLASS = `${PREFIX}-checklist-checked`; module.exports = function validate(el) { const data = dataset(el); const id = data.validationElement; const checkList = id.charAt(0) === '#' ? document.querySelector(id) : document.getElementById(id); if (!checkList) { throw new Error(`No validation element found with id: "${id}"`); } Object.entries(data).forEach(([key, value]) => { if (key.startsWith('validate')) { const validatorName = key.substr('validate'.length).toLowerCase(); const validatorPattern = new RegExp(value); const validatorSelector = `[data-validator="${validatorName}"]`; const validatorCheckbox = checkList.querySelector(validatorSelector); if (!validatorCheckbox) { throw new Error(`No validator checkbox found for: "${validatorName}"`); } const checked = validatorPattern.test(el.value); validatorCheckbox.classList.toggle(CHECKED_CLASS, checked); validatorCheckbox.setAttribute(CHECKED, checked); } }); };