From a3300c5e2d032b9ea9a8badbfcfeb17bfc882dc5 Mon Sep 17 00:00:00 2001 From: Ere Maijala Date: Sun, 5 Jan 2025 14:04:54 +0200 Subject: [PATCH] Apply BS3 data attribute mappings to added child elements too. (#4176) Improved Bootstrap 3 compatibility layer to handle dynamically added content better by converting data attributes for child nodes of the added nodes as well. --- themes/bootstrap5/js/bs3-compat.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/themes/bootstrap5/js/bs3-compat.js b/themes/bootstrap5/js/bs3-compat.js index e7db85b5a66..c2c36b2021d 100644 --- a/themes/bootstrap5/js/bs3-compat.js +++ b/themes/bootstrap5/js/bs3-compat.js @@ -1,5 +1,6 @@ /*global VuFind*/ VuFind.register('bootstrap3CompatibilityLayer', function bootstrap3CompatibilityLayer() { + const data_attribute_selector = '[data-dismiss],[data-target],[data-toggle],[data-ride],[data-slide],[data-slide-to]'; function initNavbar() { document.querySelectorAll('.navbar').forEach((el) => { @@ -114,13 +115,14 @@ VuFind.register('bootstrap3CompatibilityLayer', function bootstrap3Compatibility } function initDataAttributeMappings() { - document.querySelectorAll('[data-dismiss],[data-target],[data-toggle],[data-ride],[data-slide],[data-slide-to]').forEach((el) => { - convertDataAttributes(el); - }); + document.querySelectorAll(data_attribute_selector).forEach((el) => convertDataAttributes(el)); const observer = new MutationObserver((mutations) => { mutations.forEach((mutation) => { mutation.addedNodes.forEach((el) => { convertDataAttributes(el); + if (typeof el.querySelectorAll !== 'undefined') { + el.querySelectorAll(data_attribute_selector).forEach((subEl) => convertDataAttributes(subEl)); + } }); }); });