From c36e1d8fff70ab6a817e00aa053b996342554681 Mon Sep 17 00:00:00 2001
From: Alexander Sohn <39831045+Sohn123@users.noreply.github.com>
Date: Fri, 18 Nov 2022 14:46:04 +0000
Subject: [PATCH] fix: move theme class to root node to prevent white flash (#392)
---
assets/js/anatole-theme-switcher.js | 28 +++++++++++++---------------
1 files changed, 13 insertions(+), 15 deletions(-)
diff --git a/assets/js/anatole-theme-switcher.js b/assets/js/anatole-theme-switcher.js
index cccb905..f3940f7 100644
--- a/assets/js/anatole-theme-switcher.js
+++ b/assets/js/anatole-theme-switcher.js
@@ -1,11 +1,11 @@
const getStoredThemeStyle = () => localStorage.getItem('theme');
const setThemeClass = (style) => {
- const body = document.body;
- const prevTheme = [...body.classList].find((c) => c.match(/theme--(light|dark)/));
+ const html = document.documentElement;
+ const prevTheme = [...html.classList].find((c) => c.match(/theme--(light|dark)/));
if (!prevTheme) return;
- body.classList.remove(prevTheme);
- body.classList.add(`theme--${style}`);
+ html.classList.remove(prevTheme);
+ html.classList.add(`theme--${style}`);
};
const setThemeStyle = (style) => {
@@ -28,16 +28,6 @@
}
};
-const initTheme = () => {
- const currThemeStyle = getStoredThemeStyle();
- if (currThemeStyle) {
- setThemeStyle(currThemeStyle);
- return;
- }
- const userPrefersDark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
- if (!userPrefersDark) return;
- setThemeStyle('dark');
-};
document.addEventListener(
'DOMContentLoaded',
@@ -50,4 +40,12 @@
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', switchTheme, false);
-document.addEventListener('DOMContentLoaded', () => initTheme());
+const currThemeStyle = getStoredThemeStyle();
+if (currThemeStyle) {
+ setThemeStyle(currThemeStyle);
+} else {
+ const userPrefersDark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
+ if (userPrefersDark) {
+ setThemeStyle('dark');
+ }
+}
\ No newline at end of file
--
Gitblit v1.10.0