Commit 202f6417 authored by baiyaaaaa's avatar baiyaaaaa Committed by 杨奕

Menu: support multi level submenu in horizontal mode (#9741)

parent fe29af1b
...@@ -68,6 +68,12 @@ Top bar NavMenu can be used in a variety of scenarios. ...@@ -68,6 +68,12 @@ Top bar NavMenu can be used in a variety of scenarios.
<el-menu-item index="2-1">item one</el-menu-item> <el-menu-item index="2-1">item one</el-menu-item>
<el-menu-item index="2-2">item two</el-menu-item> <el-menu-item index="2-2">item two</el-menu-item>
<el-menu-item index="2-3">item three</el-menu-item> <el-menu-item index="2-3">item three</el-menu-item>
<el-submenu index="2-4">
<template slot="title">item four</template>
<el-menu-item index="2-4-1">item one</el-menu-item>
<el-menu-item index="2-4-2">item two</el-menu-item>
<el-menu-item index="2-4-3">item three</el-menu-item>
</el-submenu>
</el-submenu> </el-submenu>
<el-menu-item index="3"><a href="https://www.ele.me" target="_blank">Orders</a></el-menu-item> <el-menu-item index="3"><a href="https://www.ele.me" target="_blank">Orders</a></el-menu-item>
</el-menu> </el-menu>
...@@ -86,6 +92,12 @@ Top bar NavMenu can be used in a variety of scenarios. ...@@ -86,6 +92,12 @@ Top bar NavMenu can be used in a variety of scenarios.
<el-menu-item index="2-1">item one</el-menu-item> <el-menu-item index="2-1">item one</el-menu-item>
<el-menu-item index="2-2">item two</el-menu-item> <el-menu-item index="2-2">item two</el-menu-item>
<el-menu-item index="2-3">item three</el-menu-item> <el-menu-item index="2-3">item three</el-menu-item>
<el-submenu index="2-4">
<template slot="title">item four</template>
<el-menu-item index="2-4-1">item one</el-menu-item>
<el-menu-item index="2-4-2">item two</el-menu-item>
<el-menu-item index="2-4-3">item three</el-menu-item>
</el-submenu>
</el-submenu> </el-submenu>
<el-menu-item index="3"><a href="https://www.ele.me" target="_blank">Orders</a></el-menu-item> <el-menu-item index="3"><a href="https://www.ele.me" target="_blank">Orders</a></el-menu-item>
</el-menu> </el-menu>
......
...@@ -69,6 +69,12 @@ ...@@ -69,6 +69,12 @@
<el-menu-item index="2-1">选项1</el-menu-item> <el-menu-item index="2-1">选项1</el-menu-item>
<el-menu-item index="2-2">选项2</el-menu-item> <el-menu-item index="2-2">选项2</el-menu-item>
<el-menu-item index="2-3">选项3</el-menu-item> <el-menu-item index="2-3">选项3</el-menu-item>
<el-submenu index="2-4">
<template slot="title">选项4</template>
<el-menu-item index="2-4-1">选项1</el-menu-item>
<el-menu-item index="2-4-2">选项2</el-menu-item>
<el-menu-item index="2-4-3">选项3</el-menu-item>
</el-submenu>
</el-submenu> </el-submenu>
<el-menu-item index="3"><a href="https://www.ele.me" target="_blank">订单管理</a></el-menu-item> <el-menu-item index="3"><a href="https://www.ele.me" target="_blank">订单管理</a></el-menu-item>
</el-menu> </el-menu>
...@@ -87,6 +93,12 @@ ...@@ -87,6 +93,12 @@
<el-menu-item index="2-1">选项1</el-menu-item> <el-menu-item index="2-1">选项1</el-menu-item>
<el-menu-item index="2-2">选项2</el-menu-item> <el-menu-item index="2-2">选项2</el-menu-item>
<el-menu-item index="2-3">选项3</el-menu-item> <el-menu-item index="2-3">选项3</el-menu-item>
<el-submenu index="2-4">
<template slot="title">选项4</template>
<el-menu-item index="2-4-1">选项1</el-menu-item>
<el-menu-item index="2-4-2">选项2</el-menu-item>
<el-menu-item index="2-4-3">选项3</el-menu-item>
</el-submenu>
</el-submenu> </el-submenu>
<el-menu-item index="3"><a href="https://www.ele.me" target="_blank">订单管理</a></el-menu-item> <el-menu-item index="3"><a href="https://www.ele.me" target="_blank">订单管理</a></el-menu-item>
</el-menu> </el-menu>
......
...@@ -193,7 +193,9 @@ ...@@ -193,7 +193,9 @@
title && (title.style.backgroundColor = this.rootMenu.backgroundColor || ''); title && (title.style.backgroundColor = this.rootMenu.backgroundColor || '');
}, },
updatePlacement() { updatePlacement() {
this.currentPlacement = this.mode === 'horizontal' ? 'bottom-start' : 'right-start'; this.currentPlacement = this.mode === 'horizontal' && this.rootMenu === this.$parent
? 'bottom-start'
: 'right-start';
}, },
initPopper() { initPopper() {
this.referenceElm = this.$el; this.referenceElm = this.$el;
...@@ -225,7 +227,8 @@ ...@@ -225,7 +227,8 @@
currentPlacement, currentPlacement,
menuTransitionName, menuTransitionName,
mode, mode,
popperClass popperClass,
$parent
} = this; } = this;
const popupMenu = ( const popupMenu = (
...@@ -259,6 +262,11 @@ ...@@ -259,6 +262,11 @@
</el-collapse-transition> </el-collapse-transition>
); );
const submenuTitleIcon = (
rootMenu.mode === 'horizontal' && $parent === rootMenu ||
rootMenu.mode === 'vertical' && !rootMenu.collapse
) ? 'el-icon-arrow-down' : 'el-icon-arrow-right';
return ( return (
<li <li
class={{ class={{
...@@ -282,12 +290,7 @@ ...@@ -282,12 +290,7 @@
style={[paddingStyle, titleStyle, { backgroundColor }]} style={[paddingStyle, titleStyle, { backgroundColor }]}
> >
{$slots.title} {$slots.title}
<i class={{ <i class={[ 'el-submenu__icon-arrow', submenuTitleIcon ]}></i>
'el-submenu__icon-arrow': true,
'el-icon-arrow-down': rootMenu.mode === 'horizontal' || rootMenu.mode === 'vertical' && !rootMenu.collapse,
'el-icon-arrow-right': rootMenu.mode === 'vertical' && rootMenu.collapse
}}>
</i>
</div> </div>
{this.isMenuPopup ? popupMenu : inlineMenu} {this.isMenuPopup ? popupMenu : inlineMenu}
</li> </li>
......
...@@ -81,7 +81,8 @@ ...@@ -81,7 +81,8 @@
} }
} }
& .el-menu { & .el-menu {
& .el-menu-item { & .el-menu-item,
& .el-submenu__title {
background-color: $--color-white; background-color: $--color-white;
float: none; float: none;
height: 36px; height: 36px;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment