jawoll
This commit is contained in:
@ -10,30 +10,36 @@ const Cookie = {
|
||||
}
|
||||
opts = Object.entries(opts).reduce((accumulatedStr, [k, v]) => `${accumulatedStr}; ${k}=${v}`, '');
|
||||
document.cookie = name + '=' + encodeURIComponent(value) + opts
|
||||
},
|
||||
delete: (name, opts) => Cookie.set(name, '', {'max-age': -1, ...opts})
|
||||
}
|
||||
};
|
||||
|
||||
(() => {
|
||||
const themes = [ 'f0ck', 'p1nk', 'orange', 'amoled' ];
|
||||
const acttheme = Cookie.get('theme') ?? "f0ck";
|
||||
if(acttheme !== document.documentElement.getAttribute("theme"))
|
||||
const themecontainer = document.querySelector("li#themes > ul.dropdown-menu");
|
||||
const themes = [...themecontainer.querySelectorAll("li > a")].map(t => t.innerText.toLowerCase());
|
||||
if(acttheme !== document.documentElement.getAttribute("theme") && themes.includes(acttheme))
|
||||
document.documentElement.setAttribute("theme", acttheme);
|
||||
if(themecontainer = document.querySelector("#themes")) {
|
||||
const sb = document.createElement("select");
|
||||
sb.id = "themeselector";
|
||||
themes.forEach(o => {
|
||||
const option = document.createElement("option");
|
||||
option.text = o;
|
||||
if(acttheme === o)
|
||||
option.selected = true;
|
||||
sb.add(option);
|
||||
});
|
||||
themecontainer.insertAdjacentElement("afterend", sb);
|
||||
sb.addEventListener("change", e => {
|
||||
const s = e.target.options[e.target.selectedIndex].innerText;
|
||||
document.documentElement.setAttribute("theme", s);
|
||||
Cookie.set("theme", s, { path: "/", days: 360 });
|
||||
});
|
||||
}
|
||||
[...themecontainer.querySelectorAll("li > a")].forEach(t => t.addEventListener("click", e => {
|
||||
e.preventDefault();
|
||||
const _theme = e.target.innerText.toLowerCase();
|
||||
document.documentElement.setAttribute("theme", _theme);
|
||||
document.querySelector("#themes > a").setAttribute("content", _theme);
|
||||
Cookie.set("theme", _theme, { path: "/", days: 360 });
|
||||
return false;
|
||||
}));
|
||||
|
||||
document.addEventListener("keydown", e => {
|
||||
const acttheme = Cookie.get('theme') ?? "f0ck";
|
||||
const themes = [...themecontainer.querySelectorAll("li > a")].map(t => t.innerText.toLowerCase());
|
||||
const k = e.key;
|
||||
if(k === "t") {
|
||||
e.preventDefault();
|
||||
let i = themes.indexOf(acttheme);
|
||||
if(++i >= themes.length)
|
||||
i = 0;
|
||||
document.documentElement.setAttribute("theme", themes[i]);
|
||||
document.querySelector("#themes > a").setAttribute("content", themes[i]);
|
||||
Cookie.set("theme", themes[i], { path: "/", days: 360 });
|
||||
}
|
||||
});
|
||||
})();
|
||||
|
Reference in New Issue
Block a user