From b08ed9cd8adcf055005eb3c64f18ed74fb411d93 Mon Sep 17 00:00:00 2001
From: Jan-Hendrik Willms <tleilax+studip@gmail.com>
Date: Thu, 16 Nov 2023 14:29:44 +0000
Subject: [PATCH] fixes #3471

Closes #3471

Merge request studip/studip!2366
---
 .../assets/javascripts/bootstrap/forms.js     | 20 +++++++++++--------
 1 file changed, 12 insertions(+), 8 deletions(-)

diff --git a/resources/assets/javascripts/bootstrap/forms.js b/resources/assets/javascripts/bootstrap/forms.js
index 16e403191dd..b0e66d31c10 100644
--- a/resources/assets/javascripts/bootstrap/forms.js
+++ b/resources/assets/javascripts/bootstrap/forms.js
@@ -383,10 +383,10 @@ STUDIP.ready(function () {
         observer.observe($(this).closest(':visible')[0], {
             attributeOldValue: true,
             attributes: true,
-            attributeFilter: ['style', 'class'],
+            attributeFilter: ['style', 'class', 'hidden'],
             characterData: false,
             childList: true,
-            subtree: false
+            subtree: true
         });
 
         $(this).addClass('select2-awaiting');
@@ -394,12 +394,16 @@ STUDIP.ready(function () {
 
     function onDomChange(mutations, observer) {
         mutations.forEach(function(mutation) {
-            if ($('select.select2-awaiting', mutation.target).length > 0) {
-                $('select.select2-awaiting', mutation.target)
-                    .removeClass('select2-awaiting')
-                    .each(function() {
-                        createSelect2(this);
-                    });
+            let targets = Array.from(mutation.target.querySelectorAll('select.select2-awaiting'));
+            if (mutation.target.matches('select.select2-awaiting')) {
+                targets.push(mutation.target);
+            }
+            targets = $(targets).filter(':visible');
+
+            if (targets.length > 0) {
+                targets.removeClass('select2-awaiting').each(function() {
+                    createSelect2(this);
+                });
                 observer.disconnect();
             }
         });
-- 
GitLab