From 9aa81e5c58c00371a967f3bc127c777b9cd8f1a8 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Fri, 6 Dec 2024 15:35:57 -0800 Subject: [PATCH] ui: Workaround dropdowns not working with Bootstrap 5 - Workaround Debian bug #1087969. popper.js 2.x is needed for Bootstrap 5, however, the current version on in Debian is 1.x. Implement a Popper 2.x method that Bootstrap 5 is expecting and translate the call into Popper 1.x. Signed-off-by: Sunil Mohan Adapa Reviewed-by: Veiko Aasa --- plinth/templates/base.html | 2 ++ static/themes/default/js/fix.js | 44 +++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 static/themes/default/js/fix.js diff --git a/plinth/templates/base.html b/plinth/templates/base.html index 8996b3351..be6b954ad 100644 --- a/plinth/templates/base.html +++ b/plinth/templates/base.html @@ -62,6 +62,8 @@ + + diff --git a/static/themes/default/js/fix.js b/static/themes/default/js/fix.js new file mode 100644 index 000000000..12e49dd23 --- /dev/null +++ b/static/themes/default/js/fix.js @@ -0,0 +1,44 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later +/* + This file is part of FreedomBox. + + @licstart The following is the entire license notice for the + JavaScript code in this page. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + + @licend The above is the entire license notice + for the JavaScript code in this page. +*/ + +// Workaround Debian bug #1087969. popper.js 2.x is needed for Bootstrap 5, +// however, the current version on in Debian is 1.x. +if (typeof(Popper.createPopper) === 'undefined') { + window.Popper.createPopper = function(reference, popper, options) { + if (options.modifiers.length == 1) { + // Navbar dropdown + options.modifiers = { + 'applyStyle': {'enabled': false} + }; + } else { + // Regular dropdown + options.modifiers = { + 'flip': {'enabled': true}, + 'offset': {'offset': 0}, + 'preventOverflow': {'boundariesElement': 'scrollParent'} + }; + } + return new Popper(reference, popper, options); + }; +}