Skip to content

Commit 6a5a67d

Browse files
authored
docs(fix): out of sync oss header (#805)
Co-authored-by: mdong1909 <mdong1909@users.noreply.github.com>
1 parent d844f71 commit 6a5a67d

1 file changed

Lines changed: 31 additions & 13 deletions

File tree

docs/.vitepress/theme/Layout.vue

Lines changed: 31 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,57 @@
11
<script setup lang="ts">
2-
import OSSHeader from '@voidzero-dev/vitepress-theme/src/components/oss/Header.vue';
2+
import OSSHeader from '@components/oss/Header.vue';
33
import BaseTheme from '@voidzero-dev/vitepress-theme/src/viteplus';
44
import { useData } from 'vitepress';
5-
import { onMounted, watch } from 'vue';
5+
import { nextTick, watch } from 'vue';
66
77
import Footer from './components/Footer.vue';
88
import Home from './layouts/Home.vue';
99
// import Error404 from "./layouts/Error404.vue";
1010
11-
const { frontmatter } = useData();
11+
const { frontmatter, isDark } = useData();
1212
const { Layout: BaseLayout } = BaseTheme;
1313
14-
const ensureHomeLight = () => {
15-
if (frontmatter.value?.layout !== 'home' || typeof document === 'undefined') {
14+
const syncHomeThemeOverride = async () => {
15+
if (typeof document === 'undefined') {
1616
return;
1717
}
1818
19-
document.documentElement.classList.remove('dark');
20-
};
19+
const isHome = frontmatter.value?.layout === 'home';
20+
const root = document.documentElement;
21+
22+
if (isHome) {
23+
root.setAttribute('data-theme', 'light');
24+
} else {
25+
root.removeAttribute('data-theme');
26+
}
27+
28+
await nextTick();
29+
30+
const header = document.querySelector<HTMLElement>('.home-header');
2131
22-
onMounted(() => {
23-
ensureHomeLight();
24-
});
32+
if (!header) {
33+
return;
34+
}
35+
36+
if (isHome) {
37+
header.setAttribute('data-theme', 'light');
38+
} else {
39+
header.removeAttribute('data-theme');
40+
}
41+
};
2542
2643
watch(
27-
() => frontmatter.value?.layout,
44+
[() => frontmatter.value?.layout, () => isDark.value],
2845
() => {
29-
ensureHomeLight();
46+
void syncHomeThemeOverride();
3047
},
48+
{ immediate: true },
3149
);
3250
</script>
3351

3452
<template>
3553
<div v-if="frontmatter.layout === 'home'" class="marketing-layout">
36-
<OSSHeader />
54+
<OSSHeader class="home-header" />
3755
<Home />
3856
<Footer />
3957
</div>

0 commit comments

Comments
 (0)