From 44684f39985a250c8756d2ac613c026a2d1330e4 Mon Sep 17 00:00:00 2001 From: Felix Hamann Date: Mon, 1 Apr 2019 22:17:43 +0200 Subject: [PATCH] clean inputs javascript --- static/js/utils/inputs.js | 31 +++++++++++++------------------ 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/static/js/utils/inputs.js b/static/js/utils/inputs.js index fd4ad906e..3a9f7ebc4 100644 --- a/static/js/utils/inputs.js +++ b/static/js/utils/inputs.js @@ -3,37 +3,37 @@ window.utils = window.utils || {}; - var JS_INITIALIZED_CLASS = 'js-initialized'; - - function isNotInitialized(element) { - return !element.classList.contains(JS_INITIALIZED_CLASS); - } + var JS_INITIALIZED_CLASS = 'js-inputs-initialized'; window.utils.inputs = function(wrapper, options) { - + options = options || {}; var utilInstances = []; + if (wrapper.classList.contains(JS_INITIALIZED_CLASS) && !options.force) { + return false; + } + // checkboxes 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)); }); // radios 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)); }); // file-uploads 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)); }); // file-checkboxes 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)); }); @@ -45,6 +45,8 @@ }); } + wrapper.classList.add(JS_INITIALIZED_CLASS); + return { scope: wrapper, destroy: destroyUtils, @@ -74,7 +76,6 @@ if (!i18n) { 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) { fileList.innerHTML = ''; @@ -166,8 +167,6 @@ cont = cont.parentNode; } addListener(cont); - input.classList.add(JS_INITIALIZED_CLASS); - cont.classList.add(JS_INITIALIZED_CLASS); } setup(); @@ -190,7 +189,6 @@ labelEl.setAttribute('for', input.id); wrapperEl.appendChild(input); wrapperEl.appendChild(labelEl); - input.classList.add(JS_INITIALIZED_CLASS); if (siblingEl) { parentEl.insertBefore(wrapperEl, siblingEl); @@ -219,7 +217,6 @@ wrapperEl.appendChild(siblingEl); } - input.classList.add(JS_INITIALIZED_CLASS); parentEl.appendChild(wrapperEl); } @@ -233,8 +230,6 @@ window.utils.implicitSubmit = function(input, options) { var submit = options.submit; - console.log('implicitSubmit', input, submit); - if (!submit) { 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); - + return { scope: input, destroy: function() {