From 93fb212e0c0d5e8f2a78ae360e2126dc5c7d8698 Mon Sep 17 00:00:00 2001
From: ahao <liuhaoai545@gmail.com>
Date: 星期六, 02 九月 2023 00:55:02 +0800
Subject: [PATCH] fix #I7WUYJ 菜单切换主题为浅色主题后颜色不正常
---
src/assets/styles/sidebar.scss | 35 ++++++++++++++++++++++++-----------
src/layout/components/Sidebar/index.vue | 1 -
src/enums/SideThemeEnum.ts | 4 ++++
src/layout/components/Settings/index.vue | 19 ++++++++++++++++---
4 files changed, 44 insertions(+), 15 deletions(-)
diff --git a/src/assets/styles/sidebar.scss b/src/assets/styles/sidebar.scss
index 06bf057..e695bc6 100644
--- a/src/assets/styles/sidebar.scss
+++ b/src/assets/styles/sidebar.scss
@@ -81,10 +81,16 @@
}
// menu hover
+ .theme-dark .sub-menu-title-noDropdown,
+ .theme-dark .el-sub-menu__title {
+ &:hover {
+ background-color: $base-sub-menu-title-hover !important;
+ }
+ }
.sub-menu-title-noDropdown,
.el-sub-menu__title {
&:hover {
- background-color: $base-sub-menu-title-hover !important;
+ background-color: rgba(0, 0, 0, 0.05) !important;
}
}
@@ -95,11 +101,11 @@
& .nest-menu .el-sub-menu > .el-sub-menu__title,
& .el-sub-menu .el-menu-item {
min-width: $base-sidebar-width !important;
-
&:hover {
- background-color: rgba(0, 0, 0, 0.06) !important;
+ background-color: rgba(0, 0, 0, 0.1) !important;
}
}
+
& .theme-dark .nest-menu .el-sub-menu > .el-sub-menu__title,
& .theme-dark .el-sub-menu .el-menu-item {
@@ -107,6 +113,21 @@
&:hover {
background-color: $base-sub-menu-hover !important;
+ }
+ }
+
+ & .theme-dark .nest-menu .el-sub-menu > .el-sub-menu__title,
+ & .theme-dark .el-menu-item {
+ &:hover {
+ // you can use $sub-menuHover
+ background-color: $base-menu-hover !important;
+ }
+ }
+ & .nest-menu .el-sub-menu > .el-sub-menu__title,
+ & .el-menu-item {
+ &:hover {
+ // you can use $sub-menuHover
+ background-color: rgba(0, 0, 0, 0.04) !important;
}
}
}
@@ -204,14 +225,6 @@
& > .el-menu {
.svg-icon {
margin-right: 16px;
- }
- }
-
- .nest-menu .el-sub-menu > .el-sub-menu__title,
- .el-menu-item {
- &:hover {
- // you can use $sub-menuHover
- background-color: $base-menu-hover !important;
}
}
diff --git a/src/enums/SideThemeEnum.ts b/src/enums/SideThemeEnum.ts
new file mode 100644
index 0000000..f172858
--- /dev/null
+++ b/src/enums/SideThemeEnum.ts
@@ -0,0 +1,4 @@
+export enum SideThemeEnum {
+ DARK = 'theme-dark',
+ LIGHT = 'theme-light'
+}
diff --git a/src/layout/components/Settings/index.vue b/src/layout/components/Settings/index.vue
index 8eb7921..d5522ae 100644
--- a/src/layout/components/Settings/index.vue
+++ b/src/layout/components/Settings/index.vue
@@ -3,7 +3,7 @@
<h3 class="drawer-title">涓婚椋庢牸璁剧疆</h3>
<div class="setting-drawer-block-checbox">
- <div class="setting-drawer-block-checbox-item" @click="handleTheme('theme-dark')">
+ <div class="setting-drawer-block-checbox-item" @click="handleTheme(SideThemeEnum.DARK)">
<img src="@/assets/images/dark.svg" alt="dark" />
<div v-if="sideTheme === 'theme-dark'" class="setting-drawer-block-checbox-selectIcon" style="display: block;">
<i aria-label="鍥炬爣: check" class="anticon anticon-check">
@@ -15,7 +15,7 @@
</i>
</div>
</div>
- <div class="setting-drawer-block-checbox-item" @click="handleTheme('theme-light')">
+ <div class="setting-drawer-block-checbox-item" @click="handleTheme(SideThemeEnum.LIGHT)">
<img src="@/assets/images/light.svg" alt="light" />
<div v-if="sideTheme === 'theme-light'" class="setting-drawer-block-checbox-selectIcon" style="display: block;">
<i aria-label="鍥炬爣: check" class="anticon anticon-check">
@@ -95,6 +95,7 @@
import { handleThemeStyle } from '@/utils/theme'
import { ComponentInternalInstance } from "vue";
import { SettingTypeEnum } from "@/enums/SettingTypeEnum";
+import { SideThemeEnum } from "@/enums/SideThemeEnum";
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const appStore = useAppStore()
@@ -114,6 +115,13 @@
valueDark: 'dark',
valueLight: 'light',
});
+watch(isDark, ()=> {
+ if (isDark.value) {
+ settingsStore.changeSetting({ key: SettingTypeEnum.SIDE_THEME, value: SideThemeEnum.DARK })
+ } else {
+ settingsStore.changeSetting({ key: SettingTypeEnum.SIDE_THEME, value: sideTheme.value })
+ }
+})
const toggleDark = () => useToggle(isDark);
/** 鏄惁闇�瑕乼opNav */
@@ -166,8 +174,13 @@
}
}
const handleTheme = (val: string) => {
- settingsStore.changeSetting({ key: SettingTypeEnum.SIDE_THEME, value: val })
sideTheme.value = val;
+ if (isDark.value && val === SideThemeEnum.LIGHT) {
+ // 鏆楅粦妯″紡棰滆壊涓嶅彉
+ settingsStore.changeSetting({ key: SettingTypeEnum.SIDE_THEME, value: SideThemeEnum.DARK })
+ return
+ }
+ settingsStore.changeSetting({ key: SettingTypeEnum.SIDE_THEME, value: val })
}
const saveSetting = () => {
proxy?.$modal.loading("姝e湪淇濆瓨鍒版湰鍦帮紝璇风◢鍊�...");
diff --git a/src/layout/components/Sidebar/index.vue b/src/layout/components/Sidebar/index.vue
index 1c3dcb3..fff3736 100644
--- a/src/layout/components/Sidebar/index.vue
+++ b/src/layout/components/Sidebar/index.vue
@@ -27,7 +27,6 @@
import useAppStore from '@/store/modules/app'
import useSettingsStore from '@/store/modules/settings'
import usePermissionStore from '@/store/modules/permission'
-import { ComponentInternalInstance } from "vue";
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const route = useRoute();
--
Gitblit v1.9.3