Stirling-PDF/src/main/resources/static/js/darkmode.js

80 lines
2.3 KiB
JavaScript
Raw Normal View History

2023-06-02 21:15:10 +02:00
var toggleCount = 0;
var lastToggleTime = Date.now();
var elements = {
lightModeStyles: null,
darkModeStyles: null,
rainbowModeStyles: null,
darkModeIcon: null
};
function getElements() {
elements.lightModeStyles = document.getElementById("light-mode-styles");
elements.darkModeStyles = document.getElementById("dark-mode-styles");
elements.rainbowModeStyles = document.getElementById("rainbow-mode-styles");
elements.darkModeIcon = document.getElementById("dark-mode-icon");
}
function setMode(mode) {
elements.lightModeStyles.disabled = mode !== "off";
elements.darkModeStyles.disabled = mode !== "on";
elements.rainbowModeStyles.disabled = mode !== "rainbow";
if (mode === "on") {
elements.darkModeIcon.src = "moon.svg";
// Add the table-dark class to tables for dark mode
var tables = document.querySelectorAll('.table');
tables.forEach(table => {
table.classList.add('table-dark');
});
} else if (mode === "off") {
elements.darkModeIcon.src = "sun.svg";
// Remove the table-dark class for light mode
var tables = document.querySelectorAll('.table-dark');
tables.forEach(table => {
table.classList.remove('table-dark');
});
} else if (mode === "rainbow") {
elements.darkModeIcon.src = "rainbow.svg";
}
}
2023-06-02 21:15:10 +02:00
function toggleDarkMode() {
var currentTime = Date.now();
if (currentTime - lastToggleTime < 1000) {
toggleCount++;
} else {
toggleCount = 1;
}
lastToggleTime = currentTime;
if (toggleCount >= 18) {
localStorage.setItem("dark-mode", "rainbow");
setMode("rainbow");
2023-06-02 21:15:10 +02:00
} else if (localStorage.getItem("dark-mode") == "on") {
localStorage.setItem("dark-mode", "off");
setMode("off");
2023-06-02 21:15:10 +02:00
} else {
localStorage.setItem("dark-mode", "on");
setMode("on");
2023-06-02 21:15:10 +02:00
}
}
document.addEventListener("DOMContentLoaded", function() {
getElements();
2023-06-02 21:15:10 +02:00
var currentMode = localStorage.getItem("dark-mode");
if (currentMode === "on" || currentMode === "off" || currentMode === "rainbow") {
setMode(currentMode);
} else if (window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches) {
setMode("on");
2023-06-02 21:15:10 +02:00
} else {
setMode("off");
2023-06-02 21:15:10 +02:00
}
document.getElementById("dark-mode-toggle").addEventListener("click", function(event) {
event.preventDefault();
toggleDarkMode();
});
});