From 251d2411f235e23209d57173857e05b637729ce8 Mon Sep 17 00:00:00 2001 From: LiuHao <liuhaoai545@gmail.com> Date: 星期日, 02 四月 2023 01:01:56 +0800 Subject: [PATCH] refactor ts --- src/layout/components/Sidebar/index.vue | 59 ++++++++++++++++++++++++++++++----------------------------- 1 files changed, 30 insertions(+), 29 deletions(-) diff --git a/src/layout/components/Sidebar/index.vue b/src/layout/components/Sidebar/index.vue index 9b14dfc..fad0d02 100644 --- a/src/layout/components/Sidebar/index.vue +++ b/src/layout/components/Sidebar/index.vue @@ -1,35 +1,12 @@ -<template> - <div :class="{ 'has-logo': showLogo }" :style="{ backgroundColor: sideTheme === 'theme-dark' ? variables.menuBackground : variables.menuLightBackground }"> - <logo v-if="showLogo" :collapse="isCollapse" /> - <el-scrollbar :class="sideTheme" wrap-class="scrollbar-wrapper"> - <el-menu - :default-active="activeMenu" - :collapse="isCollapse" - :background-color="sideTheme === 'theme-dark' ? variables.menuBackground : variables.menuLightBackground" - :text-color="sideTheme === 'theme-dark' ? variables.menuColor : variables.menuLightColor" - :unique-opened="true" - :active-text-color="theme" - :collapse-transition="false" - mode="vertical" - > - <sidebar-item - v-for="(route, index) in sidebarRouters" - :key="route.path + index" - :item="route" - :base-path="route.path" - /> - </el-menu> - </el-scrollbar> - </div> -</template> - -<script setup> -import Logo from './Logo' -import SidebarItem from './SidebarItem' +<script setup lang="ts"> +import Logo from './Logo.vue' +import SidebarItem from './SidebarItem.vue' import variables from '@/assets/styles/variables.module.scss' 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(); const appStore = useAppStore() @@ -47,8 +24,32 @@ // if set path, the sidebar will highlight the path you set if (meta.activeMenu) { return meta.activeMenu; - } + } return path; }) +const bgColor = computed(() => sideTheme.value === 'theme-dark' ? variables.menuBackground : variables.menuLightBackground); +const textColor = computed(() => sideTheme.value === 'theme-dark' ? variables.menuColor : variables.menuLightColor); </script> + +<template> + <div :class="{ 'has-logo': showLogo }" :style="{ backgroundColor: bgColor }"> + <logo v-if="showLogo" :collapse="isCollapse" /> + <el-scrollbar :class="sideTheme" wrap-class="scrollbar-wrapper"> + <transition :enter-active-class="proxy?.animate.menuSearchAnimate.enter" mode="out-in"> + <el-menu + :default-active="activeMenu as string" + :collapse="isCollapse" + :background-color="bgColor" + :text-color="textColor" + :unique-opened="true" + :active-text-color="theme" + :collapse-transition="false" + mode="vertical" + > + <sidebar-item v-for="(route, index) in sidebarRouters" :key="route.path + index" :item="route" :base-path="route.path" /> + </el-menu> + </transition> + </el-scrollbar> + </div> +</template> -- Gitblit v1.9.3