PairDrop/public/scripts/theme.js

84 lines
2.4 KiB
JavaScript
Raw Normal View History

2020-10-25 14:38:07 +05:30
(function(){
const prefersDarkTheme = window.matchMedia('(prefers-color-scheme: dark)').matches;
const prefersLightTheme = window.matchMedia('(prefers-color-scheme: light)').matches;
2023-03-28 17:26:22 +02:00
const $themeAuto = document.getElementById('theme-auto');
const $themeLight = document.getElementById('theme-light');
const $themeDark = document.getElementById('theme-dark');
2023-03-28 17:26:22 +02:00
let currentTheme = localStorage.getItem('theme');
2023-03-28 17:26:22 +02:00
if (currentTheme === 'dark') {
setModeToDark();
2023-03-28 17:26:22 +02:00
}
else if (currentTheme === 'light') {
setModeToLight();
2020-10-25 14:38:07 +05:30
}
$themeAuto.addEventListener('click', _ => {
if (currentTheme) {
setModeToAuto();
}
else {
setModeToDark();
}
});
$themeLight.addEventListener('click', _ => {
if (currentTheme !== 'light') {
setModeToLight();
}
else {
setModeToAuto();
}
});
$themeDark.addEventListener('click', _ => {
if (currentTheme !== 'dark') {
setModeToDark();
}
else {
setModeToLight();
}
});
2023-03-28 17:26:22 +02:00
function setModeToDark() {
document.body.classList.remove('light-theme');
document.body.classList.add('dark-theme');
localStorage.setItem('theme', 'dark');
currentTheme = 'dark';
2023-03-28 17:26:22 +02:00
$themeAuto.classList.remove("selected");
$themeLight.classList.remove("selected");
$themeDark.classList.add("selected");
}
2023-03-28 17:26:22 +02:00
function setModeToLight() {
document.body.classList.remove('dark-theme');
document.body.classList.add('light-theme');
localStorage.setItem('theme', 'light');
currentTheme = 'light';
2023-03-28 17:26:22 +02:00
$themeAuto.classList.remove("selected");
$themeLight.classList.add("selected");
$themeDark.classList.remove("selected");
2023-03-28 17:26:22 +02:00
}
function setModeToAuto() {
document.body.classList.remove('dark-theme');
document.body.classList.remove('light-theme');
if (prefersDarkTheme) {
document.body.classList.add('dark-theme');
}
else if (prefersLightTheme) {
document.body.classList.add('light-theme');
}
localStorage.removeItem('theme');
currentTheme = undefined;
$themeAuto.classList.add("selected");
$themeLight.classList.remove("selected");
$themeDark.classList.remove("selected");
}
2023-03-28 17:26:22 +02:00
})();