parent
edbe90f8a0
commit
67b5a534fc
@ -1,6 +1,14 @@ |
||||
.light { |
||||
.aside.light { |
||||
.root-sidebar { |
||||
background-color: #ffffff; |
||||
border-right-color: #dcdfe6; |
||||
border-right-color: $border-color-light; |
||||
} |
||||
|
||||
.hamburger { |
||||
border-top-color: $border-color-light; |
||||
|
||||
i { |
||||
color: $menu-text-light-color; |
||||
} |
||||
} |
||||
} |
||||
|
||||
@ -0,0 +1,30 @@ |
||||
<script type="text/jsx"> |
||||
import {getters as appGetters} from "@/layout/store/app" |
||||
import {getters as asideGetters, mutations as asideMutations} from "@/layout/store/aside" |
||||
|
||||
export default { |
||||
name: 'Hamburger', |
||||
|
||||
render() { |
||||
//考虑侧边栏可能是抽屉的情况 |
||||
const collapsed = appGetters.isMobile ? asideGetters.show : !asideGetters.collapse |
||||
const className = `hamburger ${collapsed ? 'collapsed' : ''}` |
||||
|
||||
return ( |
||||
<div |
||||
class={className} |
||||
title={`${collapsed ? '折叠' : '展开'}侧边栏`} |
||||
on-click={asideMutations.switch} |
||||
> |
||||
<i class="el-icon-s-unfold"/> |
||||
</div> |
||||
) |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style> |
||||
.hamburger.collapsed > i { |
||||
transform: rotate(180deg); |
||||
} |
||||
</style> |
||||
@ -1,29 +0,0 @@ |
||||
<script type="text/jsx"> |
||||
export default { |
||||
name: 'Hamburger', |
||||
|
||||
functional: true, |
||||
|
||||
props: {active: Boolean}, |
||||
|
||||
render(h, context) { |
||||
const {active} = context.props |
||||
const className = `navbar-icon el-icon-s-unfold hamburger ${active ? 'is-active' : ''}` |
||||
return ( |
||||
<div {...context.data} title={`${active ? '折叠' : '展开'}侧边栏`}> |
||||
<i class={className}/> |
||||
</div> |
||||
) |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style> |
||||
.hamburger { |
||||
font-size: 20px; |
||||
} |
||||
|
||||
.hamburger.is-active { |
||||
transform: rotate(180deg); |
||||
} |
||||
</style> |
||||
@ -0,0 +1,30 @@ |
||||
import {getters as appGetters} from "@/layout/store/app" |
||||
import {getters as asideGetters} from "@/layout/store/aside" |
||||
import {getSidebarMenus} from "@/layout/util" |
||||
|
||||
/** |
||||
* 汉堡包的渲染条件混入 |
||||
*/ |
||||
|
||||
export default { |
||||
computed: { |
||||
//渲染汉堡包的条件
|
||||
//①侧边栏有菜单
|
||||
//②移动端 或
|
||||
//③桌面端且汉堡包位置正确(侧边栏引入则需要是aside,反之需要是head)
|
||||
//④桌面端且是双层侧边栏导航
|
||||
//⑤桌面端且是侧边栏导航或混合导航时,未设置侧边栏自动隐藏
|
||||
renderHamburger() { |
||||
if (getSidebarMenus().length <= 0) return false |
||||
|
||||
const isMobile = appGetters.isMobile, |
||||
correctPosition = |
||||
asideGetters.hamburgerPosition === (this.$options.name === 'navbar' ? 'head' : 'aside'), |
||||
correctMode = |
||||
['aside', 'mix'].includes(appGetters.navMode) && !asideGetters.autoHide |
||||
|| appGetters.navMode === 'aside-two-part' |
||||
|
||||
return isMobile || correctPosition && correctMode |
||||
} |
||||
} |
||||
} |
||||
Loading…
Reference in new issue