clean inputs javascript

This commit is contained in:
Felix Hamann 2019-04-01 22:17:43 +02:00
parent b84032d0b9
commit 44684f3998

View File

@ -3,37 +3,37 @@
window.utils = window.utils || {}; window.utils = window.utils || {};
var JS_INITIALIZED_CLASS = 'js-initialized'; var JS_INITIALIZED_CLASS = 'js-inputs-initialized';
function isNotInitialized(element) {
return !element.classList.contains(JS_INITIALIZED_CLASS);
}
window.utils.inputs = function(wrapper, options) { window.utils.inputs = function(wrapper, options) {
options = options || {};
var utilInstances = []; var utilInstances = [];
if (wrapper.classList.contains(JS_INITIALIZED_CLASS) && !options.force) {
return false;
}
// checkboxes // checkboxes
var checkboxes = Array.from(wrapper.querySelectorAll('input[type="checkbox"]')); var checkboxes = Array.from(wrapper.querySelectorAll('input[type="checkbox"]'));
checkboxes.filter(isNotInitialized).forEach(function(checkbox) { checkboxes.forEach(function(checkbox) {
utilInstances.push(window.utils.setup('checkbox', checkbox)); utilInstances.push(window.utils.setup('checkbox', checkbox));
}); });
// radios // radios
var radios = Array.from(wrapper.querySelectorAll('input[type="radio"]')); var radios = Array.from(wrapper.querySelectorAll('input[type="radio"]'));
radios.filter(isNotInitialized).forEach(function(radio) { radios.forEach(function(radio) {
utilInstances.push(window.utils.setup('radio', radio)); utilInstances.push(window.utils.setup('radio', radio));
}); });
// file-uploads // file-uploads
var fileUploads = Array.from(wrapper.querySelectorAll('input[type="file"]')); var fileUploads = Array.from(wrapper.querySelectorAll('input[type="file"]'));
fileUploads.filter(isNotInitialized).forEach(function(input) { fileUploads.forEach(function(input) {
utilInstances.push(window.utils.setup('fileUpload', input, options)); utilInstances.push(window.utils.setup('fileUpload', input, options));
}); });
// file-checkboxes // file-checkboxes
var fileCheckboxes = Array.from(wrapper.querySelectorAll('.file-checkbox')); var fileCheckboxes = Array.from(wrapper.querySelectorAll('.file-checkbox'));
fileCheckboxes.filter(isNotInitialized).forEach(function(input) { fileCheckboxes.forEach(function(input) {
utilInstances.push(window.utils.setup('fileCheckbox', input, options)); utilInstances.push(window.utils.setup('fileCheckbox', input, options));
}); });
@ -45,6 +45,8 @@
}); });
} }
wrapper.classList.add(JS_INITIALIZED_CLASS);
return { return {
scope: wrapper, scope: wrapper,
destroy: destroyUtils, destroy: destroyUtils,
@ -74,7 +76,6 @@
if (!i18n) { if (!i18n) {
throw new Error('window.utils.fileUpload(input, options) needs to be passed i18n object via options'); throw new Error('window.utils.fileUpload(input, options) needs to be passed i18n object via options');
} }
input.classList.add(JS_INITIALIZED_CLASS);
function renderFileList(files) { function renderFileList(files) {
fileList.innerHTML = ''; fileList.innerHTML = '';
@ -166,8 +167,6 @@
cont = cont.parentNode; cont = cont.parentNode;
} }
addListener(cont); addListener(cont);
input.classList.add(JS_INITIALIZED_CLASS);
cont.classList.add(JS_INITIALIZED_CLASS);
} }
setup(); setup();
@ -190,7 +189,6 @@
labelEl.setAttribute('for', input.id); labelEl.setAttribute('for', input.id);
wrapperEl.appendChild(input); wrapperEl.appendChild(input);
wrapperEl.appendChild(labelEl); wrapperEl.appendChild(labelEl);
input.classList.add(JS_INITIALIZED_CLASS);
if (siblingEl) { if (siblingEl) {
parentEl.insertBefore(wrapperEl, siblingEl); parentEl.insertBefore(wrapperEl, siblingEl);
@ -219,7 +217,6 @@
wrapperEl.appendChild(siblingEl); wrapperEl.appendChild(siblingEl);
} }
input.classList.add(JS_INITIALIZED_CLASS);
parentEl.appendChild(wrapperEl); parentEl.appendChild(wrapperEl);
} }
@ -233,8 +230,6 @@
window.utils.implicitSubmit = function(input, options) { window.utils.implicitSubmit = function(input, options) {
var submit = options.submit; var submit = options.submit;
console.log('implicitSubmit', input, submit);
if (!submit) { if (!submit) {
throw new Error('window.utils.implicitSubmit(input, options) needs to be passed a submit element via options'); throw new Error('window.utils.implicitSubmit(input, options) needs to be passed a submit element via options');
} }
@ -247,7 +242,7 @@
}; };
input.addEventListener('keypress', doSubmit); input.addEventListener('keypress', doSubmit);
return { return {
scope: input, scope: input,
destroy: function() { destroy: function() {