pagetop/extensions/pagetop-bootsier/assets/bootsier.shell.js
Manuel Cillero 1bd97d5705 (bootsier): Añade AdminLTE 4 y Bootstrap Icons
Integra AdminLTE 4.0.0 (SCSS y JS), Bootstrap Icons 1.13.1 y las fuentes
Source Sans 3 VF; reorganiza los SCSS del tema con la nueva estructura
de *pagetop-build*.
2026-06-14 21:25:52 +02:00

65 lines
2.7 KiB
JavaScript

(function () {
'use strict';
// Fullscreen: keeps maximize/minimize icons in sync with the actual fullscreen state.
document.addEventListener('fullscreenchange', function () {
var isFs = !!document.fullscreenElement;
document.querySelectorAll('[data-lte-icon="maximize"]').forEach(function (el) {
el.classList.toggle('d-none', isFs);
});
document.querySelectorAll('[data-lte-icon="minimize"]').forEach(function (el) {
el.classList.toggle('d-none', !isFs);
});
});
// Color mode selector (light / dark / auto).
var STORAGE_KEY = 'lte-theme';
var getStored = function () { return localStorage.getItem(STORAGE_KEY); };
var setStored = function (theme) { localStorage.setItem(STORAGE_KEY, theme); };
var prefersDark = function () {
return window.matchMedia('(prefers-color-scheme: dark)').matches;
};
var setTheme = function (theme) {
var resolved = (theme === 'auto') ? (prefersDark() ? 'dark' : 'light') : theme;
document.documentElement.setAttribute('data-bs-theme', resolved);
};
var showActiveTheme = function (theme) {
document.querySelectorAll('[data-bs-theme-value]').forEach(function (el) {
el.classList.remove('active');
el.setAttribute('aria-pressed', 'false');
var check = el.querySelector('.bi-check-lg');
if (check) { check.classList.add('d-none'); }
});
var active = document.querySelector('[data-bs-theme-value="' + theme + '"]');
if (active) {
active.classList.add('active');
active.setAttribute('aria-pressed', 'true');
var check = active.querySelector('.bi-check-lg');
if (check) { check.classList.remove('d-none'); }
}
document.querySelectorAll('[data-lte-theme-icon]').forEach(function (icon) {
icon.classList.toggle('d-none', icon.dataset.lteThemeIcon !== theme);
});
};
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', function () {
var stored = getStored();
if (!stored || stored === 'auto') { setTheme('auto'); }
});
document.addEventListener('DOMContentLoaded', function () {
var theme = getStored() || 'auto';
setTheme(theme);
showActiveTheme(theme);
document.querySelectorAll('[data-bs-theme-value]').forEach(function (toggle) {
toggle.addEventListener('click', function () {
var t = toggle.getAttribute('data-bs-theme-value');
setStored(t);
setTheme(t);
showActiveTheme(t);
});
});
});
}());