templates/themeswitcher.js (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
var DEFAULT_THEME = 'dark';
var ALT_THEME = 'light';
function setTheme(mode) {
var st = document.querySelector('#css_alt');
var cb = document.querySelector('#contrast');
if (mode == DEFAULT_THEME) {
st.setAttribute("media", "speech");
cb.checked = true;
}
else {
st.setAttribute("media", "all");
cb.checked = false;
}
}
function toggleTheme(e) {
var mode = DEFAULT_THEME;
if (e.checked == false) {
mode = ALT_THEME;
}
setTheme(mode);
localStorage.setItem("theme", mode);
return true;
}
function mqlTheme(e) {
console.log(e);
if (e.matches) {
setTheme(ALT_THEME);
}
else {
setTheme(DEFAULT_THEME);
}
}
var theme = localStorage.getItem("theme");
if (theme != null) {
setTheme(theme);
}
else {
var mql = window.matchMedia("(prefers-color-scheme: " + ALT_THEME + ")");
if(mql.matches) {
setTheme(ALT_THEME);
}
mql.addListener(mqlTheme);
}
|