|
|
|
|
@ -3,7 +3,6 @@ import { ElDrawer, ElDivider, ElMessage } from 'element-plus'
|
|
|
|
|
import { ref, unref, computed } from 'vue'
|
|
|
|
|
import { useI18n } from '@/hooks/web/useI18n'
|
|
|
|
|
import { ThemeSwitch } from '@/components/ThemeSwitch'
|
|
|
|
|
import { colorIsDark, lighten, hexToRGB } from '@/utils/color'
|
|
|
|
|
import { useCssVar } from '@vueuse/core'
|
|
|
|
|
import { useAppStore } from '@/store/modules/app'
|
|
|
|
|
import { trim, setCssVar, getCssVar } from '@/utils'
|
|
|
|
|
@ -42,56 +41,14 @@ const setSystemTheme = (color: string) => {
|
|
|
|
|
const headerTheme = ref(appStore.getTheme.topHeaderBgColor || '')
|
|
|
|
|
|
|
|
|
|
const setHeaderTheme = (color: string) => {
|
|
|
|
|
const isDarkColor = colorIsDark(color)
|
|
|
|
|
const textColor = isDarkColor ? '#fff' : 'inherit'
|
|
|
|
|
const textHoverColor = isDarkColor ? lighten(color!, 6) : '#f6f6f6'
|
|
|
|
|
const topToolBorderColor = isDarkColor ? color : '#eee'
|
|
|
|
|
setCssVar('--top-header-bg-color', color)
|
|
|
|
|
setCssVar('--top-header-text-color', textColor)
|
|
|
|
|
setCssVar('--top-header-hover-color', textHoverColor)
|
|
|
|
|
appStore.setTheme({
|
|
|
|
|
topHeaderBgColor: color,
|
|
|
|
|
topHeaderTextColor: textColor,
|
|
|
|
|
topHeaderHoverColor: textHoverColor,
|
|
|
|
|
topToolBorderColor
|
|
|
|
|
})
|
|
|
|
|
if (unref(layout) === 'top') {
|
|
|
|
|
setMenuTheme(color)
|
|
|
|
|
}
|
|
|
|
|
appStore.setHeaderTheme(color)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 菜单主题相关
|
|
|
|
|
const menuTheme = ref(appStore.getTheme.leftMenuBgColor || '')
|
|
|
|
|
|
|
|
|
|
const setMenuTheme = (color: string) => {
|
|
|
|
|
const primaryColor = useCssVar('--el-color-primary', document.documentElement)
|
|
|
|
|
const isDarkColor = colorIsDark(color)
|
|
|
|
|
const theme: Recordable = {
|
|
|
|
|
// 左侧菜单边框颜色
|
|
|
|
|
leftMenuBorderColor: isDarkColor ? 'inherit' : '#eee',
|
|
|
|
|
// 左侧菜单背景颜色
|
|
|
|
|
leftMenuBgColor: color,
|
|
|
|
|
// 左侧菜单浅色背景颜色
|
|
|
|
|
leftMenuBgLightColor: isDarkColor ? lighten(color!, 6) : color,
|
|
|
|
|
// 左侧菜单选中背景颜色
|
|
|
|
|
leftMenuBgActiveColor: isDarkColor
|
|
|
|
|
? 'var(--el-color-primary)'
|
|
|
|
|
: hexToRGB(unref(primaryColor), 0.1),
|
|
|
|
|
// 左侧菜单收起选中背景颜色
|
|
|
|
|
leftMenuCollapseBgActiveColor: isDarkColor
|
|
|
|
|
? 'var(--el-color-primary)'
|
|
|
|
|
: hexToRGB(unref(primaryColor), 0.1),
|
|
|
|
|
// 左侧菜单字体颜色
|
|
|
|
|
leftMenuTextColor: isDarkColor ? '#bfcbd9' : '#333',
|
|
|
|
|
// 左侧菜单选中字体颜色
|
|
|
|
|
leftMenuTextActiveColor: isDarkColor ? '#fff' : 'var(--el-color-primary)',
|
|
|
|
|
// logo字体颜色
|
|
|
|
|
logoTitleTextColor: isDarkColor ? '#fff' : 'inherit',
|
|
|
|
|
// logo边框颜色
|
|
|
|
|
logoBorderColor: isDarkColor ? color : '#eee'
|
|
|
|
|
}
|
|
|
|
|
appStore.setTheme(theme)
|
|
|
|
|
appStore.setCssVarTheme()
|
|
|
|
|
appStore.setMenuTheme(color)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 监听layout变化,重置一些主题色
|
|
|
|
|
|