mirror of https://github.com/ElemeFE/element
add suport for mutil level submenu
parent
e7e104df5d
commit
4fa158eb32
|
@ -77,6 +77,10 @@ Vertical NavMenu with sub-menus.
|
||||||
<el-menu-item-group title="Group Two">
|
<el-menu-item-group title="Group Two">
|
||||||
<el-menu-item index="1-3">item three</el-menu-item>
|
<el-menu-item index="1-3">item three</el-menu-item>
|
||||||
</el-menu-item-group>
|
</el-menu-item-group>
|
||||||
|
<el-submenu index="1-4">
|
||||||
|
<template slot="title">item four</template>
|
||||||
|
<el-menu-item index="1-4-1">item one</el-menu-item>
|
||||||
|
</el-submenu>
|
||||||
</el-submenu>
|
</el-submenu>
|
||||||
<el-menu-item index="2"><i class="el-icon-menu"></i>Navigator Two</el-menu-item>
|
<el-menu-item index="2"><i class="el-icon-menu"></i>Navigator Two</el-menu-item>
|
||||||
<el-menu-item index="3"><i class="el-icon-setting"></i>Navigator Three</el-menu-item>
|
<el-menu-item index="3"><i class="el-icon-setting"></i>Navigator Three</el-menu-item>
|
||||||
|
@ -94,6 +98,10 @@ Vertical NavMenu with sub-menus.
|
||||||
<el-menu-item-group title="Group Two">
|
<el-menu-item-group title="Group Two">
|
||||||
<el-menu-item index="1-3">item three</el-menu-item>
|
<el-menu-item index="1-3">item three</el-menu-item>
|
||||||
</el-menu-item-group>
|
</el-menu-item-group>
|
||||||
|
<el-submenu index="1-4">
|
||||||
|
<template slot="title">item four</template>
|
||||||
|
<el-menu-item index="1-4-1">item one</el-menu-item>
|
||||||
|
</el-submenu>
|
||||||
</el-submenu>
|
</el-submenu>
|
||||||
<el-menu-item index="2">Navigator Two</el-menu-item>
|
<el-menu-item index="2">Navigator Two</el-menu-item>
|
||||||
<el-menu-item index="3">Navigator Three</el-menu-item>
|
<el-menu-item index="3">Navigator Three</el-menu-item>
|
||||||
|
@ -109,16 +117,6 @@ Vertical NavMenu with sub-menus.
|
||||||
<el-menu-item-group title="Group Two">
|
<el-menu-item-group title="Group Two">
|
||||||
<el-menu-item index="3"><i class="el-icon-message"></i>Navigator Three</el-menu-item>
|
<el-menu-item index="3"><i class="el-icon-message"></i>Navigator Three</el-menu-item>
|
||||||
<el-menu-item index="4"><i class="el-icon-message"></i>Navigator Four</el-menu-item>
|
<el-menu-item index="4"><i class="el-icon-message"></i>Navigator Four</el-menu-item>
|
||||||
<!-- <el-submenu index="5">
|
|
||||||
<template slot="title">Navigator Five</template>
|
|
||||||
<el-menu-item-group title="Group One">
|
|
||||||
<el-menu-item index="5-1">item one</el-menu-item>
|
|
||||||
<el-menu-item index="5-2">item two</el-menu-item>
|
|
||||||
</el-menu-item-group>
|
|
||||||
<el-menu-item-group title="Group Two">
|
|
||||||
<el-menu-item index="5-3">item three</el-menu-item>
|
|
||||||
</el-menu-item-group>
|
|
||||||
</el-submenu> -->
|
|
||||||
</el-menu-item-group>
|
</el-menu-item-group>
|
||||||
</el-menu>
|
</el-menu>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
|
@ -108,6 +108,10 @@
|
||||||
<el-menu-item-group title="分组2">
|
<el-menu-item-group title="分组2">
|
||||||
<el-menu-item index="1-3">选项3</el-menu-item>
|
<el-menu-item index="1-3">选项3</el-menu-item>
|
||||||
</el-menu-item-group>
|
</el-menu-item-group>
|
||||||
|
<el-submenu index="1-4">
|
||||||
|
<template slot="title">选项4</template>
|
||||||
|
<el-menu-item index="1-4-1">选项1</el-menu-item>
|
||||||
|
</el-submenu>
|
||||||
</el-submenu>
|
</el-submenu>
|
||||||
<el-menu-item index="2"><i class="el-icon-menu"></i>导航二</el-menu-item>
|
<el-menu-item index="2"><i class="el-icon-menu"></i>导航二</el-menu-item>
|
||||||
<el-menu-item index="3"><i class="el-icon-setting"></i>导航三</el-menu-item>
|
<el-menu-item index="3"><i class="el-icon-setting"></i>导航三</el-menu-item>
|
||||||
|
@ -125,6 +129,10 @@
|
||||||
<el-menu-item-group title="分组2">
|
<el-menu-item-group title="分组2">
|
||||||
<el-menu-item index="1-3">选项3</el-menu-item>
|
<el-menu-item index="1-3">选项3</el-menu-item>
|
||||||
</el-menu-item-group>
|
</el-menu-item-group>
|
||||||
|
<el-submenu index="1-4">
|
||||||
|
<template slot="title">选项4</template>
|
||||||
|
<el-menu-item index="1-4-1">选项1</el-menu-item>
|
||||||
|
</el-submenu>
|
||||||
</el-submenu>
|
</el-submenu>
|
||||||
<el-menu-item index="2">导航二</el-menu-item>
|
<el-menu-item index="2">导航二</el-menu-item>
|
||||||
<el-menu-item index="3">导航三</el-menu-item>
|
<el-menu-item index="3">导航三</el-menu-item>
|
||||||
|
@ -140,16 +148,6 @@
|
||||||
<el-menu-item-group title="分组二">
|
<el-menu-item-group title="分组二">
|
||||||
<el-menu-item index="3"><i class="el-icon-message"></i>导航三</el-menu-item>
|
<el-menu-item index="3"><i class="el-icon-message"></i>导航三</el-menu-item>
|
||||||
<el-menu-item index="4"><i class="el-icon-message"></i>导航四</el-menu-item>
|
<el-menu-item index="4"><i class="el-icon-message"></i>导航四</el-menu-item>
|
||||||
<!-- <el-submenu index="5">
|
|
||||||
<template slot="title">导航五</template>
|
|
||||||
<el-menu-item-group title="分组一">
|
|
||||||
<el-menu-item index="5-1">选项1</el-menu-item>
|
|
||||||
<el-menu-item index="5-2">选项2</el-menu-item>
|
|
||||||
</el-menu-item-group>
|
|
||||||
<el-menu-item-group title="分组二">
|
|
||||||
<el-menu-item index="5-3">选项3</el-menu-item>
|
|
||||||
</el-menu-item-group>
|
|
||||||
</el-submenu> -->
|
|
||||||
</el-menu-item-group>
|
</el-menu-item-group>
|
||||||
</el-menu>
|
</el-menu>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
|
@ -14,31 +14,26 @@
|
||||||
paddingLeft: 20
|
paddingLeft: 20
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
computed: {
|
||||||
initPadding() {
|
levelPadding() {
|
||||||
var parent = this.$parent;
|
let padding = 10;
|
||||||
var level = 0;
|
let parent = this.$parent;
|
||||||
var component = parent.$options.componentName;
|
while (parent && parent.$options.componentName !== 'ElMenu') {
|
||||||
|
if (parent.$options.componentName === 'ElSubmenu') {
|
||||||
while (component !== 'ElMenu') {
|
padding += 20;
|
||||||
if (component === 'ElSubmenu') {
|
|
||||||
level++;
|
|
||||||
}
|
}
|
||||||
parent = parent.$parent;
|
parent = parent.$parent;
|
||||||
component = parent.$options.componentName;
|
|
||||||
}
|
}
|
||||||
this.paddingLeft += level * 10;
|
padding === 10 && (padding = 20);
|
||||||
|
return padding;
|
||||||
}
|
}
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
this.initPadding();
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<li class="el-menu-item-group">
|
<li class="el-menu-item-group">
|
||||||
<div class="el-menu-item-group__title" :style="{'padding-left': paddingLeft + 'px'}">
|
<div class="el-menu-item-group__title" :style="{paddingLeft: levelPadding + 'px'}">
|
||||||
<template v-if="!$slots.title">{{title}}</template>
|
<template v-if="!$slots.title">{{title}}</template>
|
||||||
<slot v-else name="title"></slot>
|
<slot v-else name="title"></slot>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,3 +1,14 @@
|
||||||
|
<template>
|
||||||
|
<li class="el-menu-item"
|
||||||
|
:style="paddingStyle"
|
||||||
|
@click="handleClick"
|
||||||
|
:class="{
|
||||||
|
'is-active': active,
|
||||||
|
'is-disabled': disabled
|
||||||
|
}">
|
||||||
|
<slot></slot>
|
||||||
|
</li>
|
||||||
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import Menu from './menu-mixin';
|
import Menu from './menu-mixin';
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
@ -41,14 +52,3 @@
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
|
||||||
<li class="el-menu-item"
|
|
||||||
@click="handleClick"
|
|
||||||
:class="{
|
|
||||||
'is-active': active,
|
|
||||||
'is-disabled': disabled
|
|
||||||
}">
|
|
||||||
<slot></slot>
|
|
||||||
</li>
|
|
||||||
</template>
|
|
||||||
|
|
|
@ -17,6 +17,19 @@ module.exports = {
|
||||||
parent = parent.$parent;
|
parent = parent.$parent;
|
||||||
}
|
}
|
||||||
return parent;
|
return parent;
|
||||||
|
},
|
||||||
|
paddingStyle() {
|
||||||
|
if (this.rootMenu.mode !== 'vertical') return {};
|
||||||
|
|
||||||
|
let padding = 20;
|
||||||
|
let parent = this.$parent;
|
||||||
|
while (parent && parent.$options.componentName !== 'ElMenu') {
|
||||||
|
if (parent.$options.componentName === 'ElSubmenu') {
|
||||||
|
padding += 20;
|
||||||
|
}
|
||||||
|
parent = parent.$parent;
|
||||||
|
}
|
||||||
|
return {paddingLeft: padding + 'px'};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -6,8 +6,7 @@
|
||||||
'is-opened': opened
|
'is-opened': opened
|
||||||
}"
|
}"
|
||||||
>
|
>
|
||||||
<div class="el-submenu__title" ref="submenu-title">
|
<div class="el-submenu__title" ref="submenu-title" :style="paddingStyle">
|
||||||
|
|
||||||
<slot name="title"></slot>
|
<slot name="title"></slot>
|
||||||
<i :class="{
|
<i :class="{
|
||||||
'el-submenu__icon-arrow': true,
|
'el-submenu__icon-arrow': true,
|
||||||
|
|
|
@ -189,7 +189,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@when opened {
|
@when opened {
|
||||||
.el-submenu__icon-arrow {
|
> .el-submenu__title .el-submenu__icon-arrow {
|
||||||
transform: rotateZ(180deg);
|
transform: rotateZ(180deg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue