parent
edbe90f8a0
commit
67b5a534fc
@ -1,6 +1,14 @@ |
|||||||
.light { |
.aside.light { |
||||||
.root-sidebar { |
.root-sidebar { |
||||||
background-color: #ffffff; |
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