refactor(projects): 系统暗黑主题模式抽离成composables

This commit is contained in:
Soybean 2021-11-19 13:02:29 +08:00
parent 4e1a09c779
commit 195e5b9e57
3 changed files with 33 additions and 20 deletions

View File

@ -3,7 +3,7 @@
class="h-full"
:locale="zhCN"
:date-locale="dateZhCN"
:theme="dark"
:theme="naiveTheme"
:theme-overrides="theme.themeOverrids"
>
<n-element class="h-full">
@ -22,7 +22,6 @@
</template>
<script lang="ts" setup>
import { computed, watch } from 'vue';
import {
NConfigProvider,
NElement,
@ -30,30 +29,14 @@ import {
NDialogProvider,
NNotificationProvider,
NMessageProvider,
darkTheme,
zhCN,
dateZhCN
} from 'naive-ui';
import { useDark } from '@vueuse/core';
import { AppProviderContent } from '@/components';
import { useThemeStore } from '@/store';
import { useDarkMode } from '@/composables';
const osDark = useDark();
const theme = useThemeStore();
const { handleDarkMode } = useThemeStore();
/** 系统暗黑模式 */
const dark = computed(() => (theme.darkMode ? darkTheme : undefined));
//
watch(
osDark,
newValue => {
handleDarkMode(newValue);
},
{
immediate: true
}
);
const { naiveTheme } = useDarkMode();
</script>
<style></style>

View File

@ -2,3 +2,4 @@ export * from './route';
export * from './router';
export * from './system';
export * from './layout';
export * from './theme';

View File

@ -0,0 +1,29 @@
import { computed, watch } from 'vue';
import { darkTheme } from 'naive-ui';
import { useDark } from '@vueuse/core';
import { useThemeStore } from '@/store';
/** 系统暗黑模式 */
export function useDarkMode() {
const osDark = useDark();
const theme = useThemeStore();
const { handleDarkMode } = useThemeStore();
/** naive-ui暗黑主题 */
const naiveTheme = computed(() => (theme.darkMode ? darkTheme : undefined));
// 监听操作系统主题模式
watch(
osDark,
newValue => {
handleDarkMode(newValue);
},
{
immediate: true
}
);
return {
naiveTheme
};
}