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 <sunil@medhas.org>
Reviewed-by: Veiko Aasa <veiko17@disroot.org>
This commit is contained in:
Sunil Mohan Adapa 2024-12-06 15:35:57 -08:00 committed by Veiko Aasa
parent 3b369cd90f
commit 9aa81e5c58
No known key found for this signature in database
GPG Key ID: 478539CAE680674E
2 changed files with 46 additions and 0 deletions

View File

@ -62,6 +62,8 @@
<!-- TODO Deferring jQuery is causing scripts to be loaded before jQuery is available -->
<script type="text/javascript" src="{% static '/javascript/jquery/jquery.min.js' %}"></script>
<!-- Local link to system Bootstrap JS -->
<script type="text/javascript" src="{% static '/javascript/popper.js/umd/popper.js' %}" defer></script>
<script type="text/javascript" src="{% static 'theme/js/fix.js' %}" defer></script>
<script type="text/javascript" src="{% static '/javascript/bootstrap5/js/bootstrap.bundle.min.js' %}" defer></script>
<script type="text/javascript" src="{% static 'theme/js/main.js' %}" defer></script>

View File

@ -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 <http://www.gnu.org/licenses/>.
@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);
};
}