21 lines
823 B
JavaScript
Executable file
21 lines
823 B
JavaScript
Executable file
// Wires up the appearance buttons and remembers the choice in localStorage (if available).
|
|
(function () {
|
|
var box = document.getElementById('appearance');
|
|
if (!box || !window.portalTheme) return;
|
|
var prefs = Object.assign({}, window.portalTheme.current());
|
|
|
|
box.addEventListener('click', function (e) {
|
|
var b = e.target.closest('button');
|
|
if (!b) return;
|
|
if (b.dataset.reset) prefs = {};
|
|
if (b.dataset.mode) prefs.mode = b.dataset.mode;
|
|
if (b.dataset.pick) prefs.accent = b.dataset.pick;
|
|
window.portalTheme.apply(prefs);
|
|
try {
|
|
if (b.dataset.reset) localStorage.removeItem(window.portalTheme.key);
|
|
else localStorage.setItem(window.portalTheme.key, JSON.stringify(prefs));
|
|
} catch (err) {}
|
|
});
|
|
|
|
box.hidden = false; // without JavaScript the control stays hidden
|
|
})();
|