add Lisntener to prefers-color-scheme

This commit is contained in:
2023-06-27 16:22:45 +08:00
parent a890a40a62
commit 5b33cc8d96
2 changed files with 18 additions and 1 deletions

View File

@@ -12,7 +12,7 @@ import TaskManager from "./TaskManager.tsx";
import { initState, set_state } from "../server/state.ts";
import NewTask from "../components/NewTask.tsx";
import { parse_int } from "../server/parse.ts";
import { detect_darkmode } from "../server/dark.ts";
import { addDarkModeListener, detect_darkmode } from "../server/dark.ts";
import { registeServiceWorker } from "../server/sw.ts";
import { initCfg } from "../server/cfg.ts";
@@ -77,6 +77,15 @@ export default class Container extends Component<ContainerProps> {
},
);
initCfg();
addDarkModeListener((e) => {
if (darkmode === DarkMode.Auto) {
if (e.matches) {
document.body.classList.add("dark-scheme");
} else {
document.body.classList.remove("dark-scheme");
}
}
});
}, []);
return (
<div>

View File

@@ -2,3 +2,11 @@ export function detect_darkmode() {
return window.matchMedia &&
window.matchMedia("(prefers-color-scheme: dark)").matches;
}
export function addDarkModeListener(e: (e: MediaQueryListEvent) => void) {
return window.matchMedia &&
window.matchMedia("(prefers-color-scheme: dark)").addEventListener(
"change",
e,
);
}