forked from eslint/eslint
/
themes.js
49 lines (39 loc) · 1.79 KB
/
themes.js
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
48
49
/* theme toggle buttons */
(function() {
var enableToggle = function(btn) {
btn.setAttribute("aria-pressed", "true");
}
var disableToggle = function(btn) {
btn.setAttribute("aria-pressed", "false");
}
document.addEventListener('DOMContentLoaded', function() {
var switcher = document.getElementById('js-theme-switcher');
switcher.removeAttribute('hidden');
var light_theme_toggle = document.getElementById('light-theme-toggle'),
dark_theme_toggle = document.getElementById('dark-theme-toggle');
// get any previously-chosen themes
var localStorageTheme = window.localStorage.getItem("theme")
var theme = localStorageTheme ? localStorageTheme : window.matchMedia('(prefers-color-scheme: dark)').matches? 'dark' : 'light';
if (theme == "light") {
enableToggle(light_theme_toggle);
disableToggle(dark_theme_toggle);
} else if (theme == "dark") {
enableToggle(dark_theme_toggle);
disableToggle(light_theme_toggle);
}
light_theme_toggle.addEventListener("click", function() {
enableToggle(light_theme_toggle);
theme = this.getAttribute('data-theme');
document.documentElement.setAttribute('data-theme', theme);
window.localStorage.setItem("theme", theme);
disableToggle(dark_theme_toggle);
}, false);
dark_theme_toggle.addEventListener("click", function() {
enableToggle(dark_theme_toggle);
theme = this.getAttribute('data-theme');
document.documentElement.setAttribute('data-theme', theme);
window.localStorage.setItem("theme", theme);
disableToggle(light_theme_toggle);
}, false);
}, false);
})();