2021-04-06 23:47:32 +08:00
|
|
|
<template>
|
2021-05-26 19:05:53 +08:00
|
|
|
<nav v-if="enable" class="navbar-links toggle-bar">
|
2021-04-06 23:47:32 +08:00
|
|
|
<div class="navbar-links-item">
|
2021-05-26 19:05:53 +08:00
|
|
|
<a class="nav-link" @click.prevent="toggleTheme">{{ text }}</a>
|
2021-04-06 23:47:32 +08:00
|
|
|
</div>
|
|
|
|
</nav>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script lang="ts">
|
|
|
|
import { defineComponent } from "vue";
|
2021-04-14 18:58:55 +08:00
|
|
|
import { useThemeLocaleData } from "@vuepress/plugin-theme-data/lib/client";
|
2021-04-07 22:20:50 +08:00
|
|
|
import { ToggleOptions } from "../types";
|
2021-04-06 23:47:32 +08:00
|
|
|
|
|
|
|
export default defineComponent({
|
2021-05-26 19:05:53 +08:00
|
|
|
computed: {
|
|
|
|
enable: function (): Boolean {
|
|
|
|
const option = useThemeLocaleData<ToggleOptions>();
|
|
|
|
return option.value.enableToggle;
|
|
|
|
},
|
|
|
|
text: function (): String {
|
|
|
|
const option = useThemeLocaleData<ToggleOptions>();
|
|
|
|
return option.value.ToggleText;
|
|
|
|
},
|
2021-04-06 23:47:32 +08:00
|
|
|
},
|
|
|
|
methods: {
|
|
|
|
toggleTheme() {
|
|
|
|
const html = document.getElementsByTagName("html")[0];
|
|
|
|
|
|
|
|
let theme = html.getAttribute("theme");
|
|
|
|
if (theme == "light") {
|
|
|
|
html.setAttribute("theme", "dark");
|
|
|
|
} else if (theme == "dark") {
|
|
|
|
html.setAttribute("theme", "light");
|
|
|
|
} else {
|
|
|
|
html.setAttribute("theme", "light");
|
|
|
|
}
|
|
|
|
},
|
|
|
|
},
|
|
|
|
});
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
.toggle-bar {
|
|
|
|
margin-left: 1.5rem;
|
|
|
|
}
|
|
|
|
</style>
|