(function() { 'use strict'; window.utils = window.utils || {}; var JS_INITIALIZED = 'js-initialized'; var SUBMIT_BUTTON_SELECTOR = '[type="submit"]:not([formnovalidate])'; var AUTOSUBMIT_BUTTON_SELECTOR = '[type="submit"][data-autosubmit]'; function formValidator(inputs) { var done = true; inputs.forEach(function(inp) { var len = inp.value.trim().length; if (done && len === 0) { done = false; } }); return done; } window.utils.form = function(form, options) { if (form.classList.contains(JS_INITIALIZED)) { return false; } form.classList.add(JS_INITIALIZED); // reactive buttons var submitBtn = form.querySelector(SUBMIT_BUTTON_SELECTOR); if (submitBtn) { window.utils.setup('reactiveButton', form, { button: submitBtn }); } // conditonal fieldsets var fieldSets = Array.from(form.querySelectorAll('fieldset[data-conditional-id][data-conditional-value]')); window.utils.setup('interactiveFieldset', form, { fieldSets }); // hide autoSubmit submit button window.utils.setup('autoSubmit', form, options); }; // registers input-listener for each element in (array) and // enables