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*.
65 lines
2.7 KiB
JavaScript
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);
|
|
});
|
|
});
|
|
});
|
|
}());
|