remove obsolete js utility code for forms

This commit is contained in:
Felix Hamann 2019-04-07 21:41:57 +02:00
parent 4f6e788870
commit e71cf031a0

View File

@ -1,72 +1,8 @@
(function() { (function() {
'use strict'; 'use strict';
window.utils = window.utils || {};
var formUtilities = []; var formUtilities = [];
var JS_INITIALIZED = 'js-form-initialized';
var AUTOSUBMIT_BUTTON_SELECTOR = '[type="submit"][data-autosubmit]';
var AJAX_SUBMIT_FLAG = 'ajaxSubmit';
var FORM_GROUP_SELECTOR = '.form-group';
var FORM_GROUP_WITH_ERRORS_CLASS = 'form-group--has-error';
window.utils.form = function(form, options) {
options = options || {};
// dont initialize form if it is in a modal and is not forced
if (form.closest('.modal') && !options.force) {
return false;
}
// dont initialize form if already initialized and should not be force-initialized
if (form.classList.contains(JS_INITIALIZED) && !options.force) {
return false;
}
var utilInstances = [];
// reactive buttons
utilInstances.push(window.utils.setup('reactiveButton', form));
// conditonal fieldsets
var fieldSets = Array.from(form.querySelectorAll('fieldset[data-conditional-id][data-conditional-value]'));
utilInstances.push(window.utils.setup('interactiveFieldset', form, { fieldSets }));
// hide autoSubmit submit button
utilInstances.push(window.utils.setup('autoSubmit', form, options));
// async form
if (AJAX_SUBMIT_FLAG in form.dataset) {
utilInstances.push(window.utils.setup('asyncForm', form, options));
}
// inputs
utilInstances.push(window.utils.setup('inputs', form, options));
// form group errors
var formGroups = Array.from(form.querySelectorAll('.' + FORM_GROUP_CLASS));
formGroups.forEach(function(formGroup) {
utilInstances.push(window.utils.setup('errorRemover', formGroup, options));
});
form.classList.add(JS_INITIALIZED);
function destroyUtils() {
utilInstances.filter(function(utilInstance) {
return !!utilInstance;
}).forEach(function(utilInstance) {
utilInstance.destroy();
});
}
return {
scope: form,
destroy: destroyUtils,
};
};
/** /**
* *
* Reactive Submit Button Utility * Reactive Submit Button Utility
@ -213,7 +149,7 @@
function init() { function init() {
if (!element) { if (!element) {
throw new Error('Interactive Fieldset utility cannot be setup without an element!'); throw new Error('Interactive Fieldset utility cannot be setup without an element!');
} }
if (element.classList.contains(INTERACTIVE_FIELDSET_INITIALIZED_CLASS)) { if (element.classList.contains(INTERACTIVE_FIELDSET_INITIALIZED_CLASS)) {
throw new Error('Interactive Fieldset utility already initialized!'); throw new Error('Interactive Fieldset utility already initialized!');
@ -227,12 +163,12 @@
if (!conditionalInput) { if (!conditionalInput) {
// abort if form has no required inputs // abort if form has no required inputs
throw new Error('Couldn\'t find the conditional input. Aborting setup for interactive fieldset.'); throw new Error('Couldn\'t find the conditional input. Aborting setup for interactive fieldset.');
} }
// param conditionalValue // param conditionalValue
if (!element.dataset.conditionalValue) { if (!element.dataset.conditionalValue) {
throw new Error('Interactive Fieldset needs a conditional value!'); throw new Error('Interactive Fieldset needs a conditional value!');
} }
conditionalValue = element.dataset.conditionalValue; conditionalValue = element.dataset.conditionalValue;
// add event listener // add event listener
@ -244,11 +180,11 @@
// mark as initialized // mark as initialized
element.classList.add(INTERACTIVE_FIELDSET_INITIALIZED_CLASS); element.classList.add(INTERACTIVE_FIELDSET_INITIALIZED_CLASS);
return { return {
name: INTERACTIVE_FIELDSET_UTIL_NAME, name: INTERACTIVE_FIELDSET_UTIL_NAME,
element: element, element: element,
destroy: function() {}, destroy: function() {},
}; };
} }
function updateVisibility() { function updateVisibility() {
@ -321,13 +257,16 @@
var FORM_ERROR_REMOVER_INITIALIZED_CLASS = 'form-error-remover--initialized'; var FORM_ERROR_REMOVER_INITIALIZED_CLASS = 'form-error-remover--initialized';
var FORM_ERROR_REMOVER_INPUTS_SELECTOR = 'input:not([type="hidden"]), textarea, select'; var FORM_ERROR_REMOVER_INPUTS_SELECTOR = 'input:not([type="hidden"]), textarea, select';
var FORM_GROUP_SELECTOR = '.form-group';
var FORM_GROUP_WITH_ERRORS_CLASS = 'form-group--has-error';
var formErrorRemoverUtil = function(element) { var formErrorRemoverUtil = function(element) {
var formGroups; var formGroups;
function init() { function init() {
if (!element) { if (!element) {
throw new Error('Form Error Remover utility needs to be passed an element!'); throw new Error('Form Error Remover utility needs to be passed an element!');
} }
// find form groups // find form groups
formGroups = Array.from(element.querySelectorAll(FORM_GROUP_SELECTOR)); formGroups = Array.from(element.querySelectorAll(FORM_GROUP_SELECTOR));
@ -335,12 +274,12 @@
formGroups.forEach(function(formGroup) { formGroups.forEach(function(formGroup) {
if (!formGroup.classList.contains(FORM_GROUP_WITH_ERRORS_CLASS)) { if (!formGroup.classList.contains(FORM_GROUP_WITH_ERRORS_CLASS)) {
return; return;
} }
var inputElements = Array.from(formGroup.querySelectorAll(FORM_ERROR_REMOVER_INPUTS_SELECTOR)); var inputElements = Array.from(formGroup.querySelectorAll(FORM_ERROR_REMOVER_INPUTS_SELECTOR));
if (!inputElements) { if (!inputElements) {
return false; return false;
} }
inputElements.forEach(function(inputElement) { inputElements.forEach(function(inputElement) {
inputElement.addEventListener('input', function() { inputElement.addEventListener('input', function() {
@ -352,11 +291,11 @@
// mark initialized // mark initialized
element.classList.add(FORM_ERROR_REMOVER_INITIALIZED_CLASS); element.classList.add(FORM_ERROR_REMOVER_INITIALIZED_CLASS);
return { return {
name: FORM_ERROR_REMOVER_UTIL_NAME, name: FORM_ERROR_REMOVER_UTIL_NAME,
element: element, element: element,
destroy: function() {}, destroy: function() {},
}; };
} }
return init(); return init();