remove obsolete js utility code for forms
This commit is contained in:
parent
4f6e788870
commit
e71cf031a0
@ -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();
|
||||||
|
|||||||
Reference in New Issue
Block a user