From 94335c70e086edc1f7be36ceac259e7e5d000cc4 Mon Sep 17 00:00:00 2001 From: Felix Hamann Date: Tue, 21 May 2019 21:53:13 +0200 Subject: [PATCH] add missing checks for already initialized js utils in form.js --- static/js/utils/form.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/static/js/utils/form.js b/static/js/utils/form.js index da02abd5d..e610a7c0b 100644 --- a/static/js/utils/form.js +++ b/static/js/utils/form.js @@ -270,6 +270,10 @@ throw new Error('Auto Submit Button utility needs to be passed an element!'); } + if (element.classList.contains(AUTO_SUBMIT_BUTTON_INITIALIZED_CLASS)) { + return false; + } + // hide and mark initialized element.classList.add(AUTO_SUBMIT_BUTTON_HIDDEN_CLASS, AUTO_SUBMIT_BUTTON_INITIALIZED_CLASS); @@ -315,6 +319,10 @@ throw new Error('Auto Submit Input utility needs to be passed an element!'); } + if (element.classList.contains(AUTO_SUBMIT_INPUT_INITIALIZED_CLASS)) { + return false; + } + form = element.form; if (!form) { throw new Error('Could not determine associated form for auto submit input'); @@ -374,6 +382,10 @@ throw new Error('Form Error Remover utility needs to be passed an element!'); } + if (element.classList.contains(FORM_ERROR_REMOVER_INITIALIZED_CLASS)) { + return false; + } + // find form groups formGroups = Array.from(element.querySelectorAll(FORM_GROUP_SELECTOR)); @@ -428,6 +440,8 @@ var DATEPICKER_UTIL_NAME = 'datepicker'; var DATEPICKER_UTIL_SELECTOR = 'input[type="date"], input[type="time"], input[type="datetime-local"]'; + var DATEPICKER_INITIALIZED_CLASS = 'datepicker--initialized'; + var DATEPICKER_CONFIG = { "datetime-local": { enableTime: true, @@ -459,6 +473,10 @@ throw new Error('Datepicker utility needs to be passed an element!'); } + if (element.classList.contains(DATEPICKER_INITIALIZED_CLASS)) { + return false; + } + var flatpickrConfig = DATEPICKER_CONFIG[element.getAttribute("type")]; if (!flatpickrConfig) { @@ -467,6 +485,9 @@ flatpickrInstance = flatpickr(element, flatpickrConfig); + // mark initialized + element.classList.add(DATEPICKER_INITIALIZED_CLASS); + return { name: DATEPICKER_UTIL_NAME, element: element,