From 4d6fc24b404250f81e08dfd8598823ab6c7feaa3 Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Sun, 21 Apr 2019 10:24:23 +0200 Subject: [PATCH] Hotfix (logically) nested multiActions --- static/js/utils/form.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/static/js/utils/form.js b/static/js/utils/form.js index b2a449e2a..367d4dba1 100644 --- a/static/js/utils/form.js +++ b/static/js/utils/form.js @@ -149,7 +149,7 @@ var INTERACTIVE_FIELDSET_UTIL_TARGET_SELECTOR = '.interactive-fieldset--target'; var INTERACTIVE_FIELDSET_INITIALIZED_CLASS = 'interactive-fieldset--initialized'; - var INTERACTIVE_FIELDSET_CHILD_SELECTOR = 'input:not([disabled])'; + var INTERACTIVE_FIELDSET_CHILD_SELECTOR = 'input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled])'; var interactiveFieldsetUtil = function(element) { var conditionalInput; @@ -195,6 +195,10 @@ childInputs = Array.from(element.querySelectorAll(INTERACTIVE_FIELDSET_CHILD_SELECTOR)); // add event listener + var observer = new MutationObserver(function(mutationsList, observer) { + updateVisibility(); + }); + observer.observe(conditionalInput, { attributes: true, attributeFilter: ['disabled'] }); conditionalInput.addEventListener('input', updateVisibility); // initial visibility update @@ -211,12 +215,12 @@ } function updateVisibility() { - var active = matchesConditionalValue(); + var active = matchesConditionalValue() && !conditionalInput.disabled; target.classList.toggle('hidden', !active); childInputs.forEach(function(el) { - el.toggleAttribute('disabled', !active); + el.disabled = !active; }); }