|
@@ -1,13 +1,24 @@
|
|
|
import { darkCssIsReady, loadDarkThemeCss } from 'vite-plugin-theme/es/client';
|
|
|
+import { addClass, hasClass, removeClass } from '/@/utils/domUtils';
|
|
|
|
|
|
export async function updateDarkTheme(mode: string | null = 'light') {
|
|
|
const htmlRoot = document.getElementById('htmlRoot');
|
|
|
+ if (!htmlRoot) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ const hasDarkClass = hasClass(htmlRoot, 'dark');
|
|
|
if (mode === 'dark') {
|
|
|
if (import.meta.env.PROD && !darkCssIsReady) {
|
|
|
await loadDarkThemeCss();
|
|
|
}
|
|
|
- htmlRoot?.setAttribute('data-theme', 'dark');
|
|
|
+ htmlRoot.setAttribute('data-theme', 'dark');
|
|
|
+ if (!hasDarkClass) {
|
|
|
+ addClass(htmlRoot, 'dark');
|
|
|
+ }
|
|
|
} else {
|
|
|
- htmlRoot?.setAttribute('data-theme', 'light');
|
|
|
+ htmlRoot.setAttribute('data-theme', 'light');
|
|
|
+ if (hasDarkClass) {
|
|
|
+ removeClass(htmlRoot, 'dark');
|
|
|
+ }
|
|
|
}
|
|
|
}
|