<template> 
 | 
    <div :class="{'has-logo':showLogo}" :style="{ backgroundColor: settings.sideTheme === 'theme-dark' ? variables.menuBackground : variables.menuLightBackground }"> 
 | 
        <logo v-if="showLogo" :collapse="isCollapse" /> 
 | 
        <el-scrollbar :class="settings.sideTheme" wrap-class="scrollbar-wrapper"> 
 | 
            <el-menu 
 | 
                :default-active="activeMenu" 
 | 
                :collapse="isCollapse" 
 | 
                :background-color="settings.sideTheme === 'theme-dark' ? variables.menuBackground : variables.menuLightBackground" 
 | 
                :text-color="settings.sideTheme === 'theme-dark' ? variables.menuColor : variables.menuLightColor" 
 | 
                :unique-opened="true" 
 | 
                :active-text-color="settings.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> 
 | 
import { mapGetters, mapState } from "vuex"; 
 | 
import Logo from "./Logo"; 
 | 
import SidebarItem from "./SidebarItem"; 
 | 
import variables from "@/assets/styles/variables.scss"; 
 | 
  
 | 
export default { 
 | 
    components: { SidebarItem, Logo }, 
 | 
    computed: { 
 | 
        ...mapState(["settings"]), 
 | 
        ...mapGetters(["sidebarRouters", "sidebar"]), 
 | 
        activeMenu() { 
 | 
            const route = this.$route; 
 | 
            const { meta, path } = route; 
 | 
            // if set path, the sidebar will highlight the path you set 
 | 
            if (meta.activeMenu) { 
 | 
                return meta.activeMenu; 
 | 
            } 
 | 
            return path; 
 | 
        }, 
 | 
        showLogo() { 
 | 
            return this.$store.state.settings.sidebarLogo; 
 | 
        }, 
 | 
        variables() { 
 | 
            return variables; 
 | 
        }, 
 | 
        isCollapse() { 
 | 
            return !this.sidebar.opened; 
 | 
        } 
 | 
    } 
 | 
}; 
 | 
</script> 
 |