Menu: update SubMenu to allow custom component (#10077)

pull/10091/head
杨奕 2018-03-08 19:19:10 +08:00 committed by GitHub
parent 99e5a6b4ba
commit 119becb0b0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 17 additions and 4 deletions

View File

@ -66,7 +66,7 @@
computed: { computed: {
// popper option // popper option
appendToBody() { appendToBody() {
return this.rootMenu === this.$parent; return this.isFirstLevel;
}, },
menuTransitionName() { menuTransitionName() {
return this.rootMenu.collapse ? 'el-zoom-in-left' : 'el-zoom-in-top'; return this.rootMenu.collapse ? 'el-zoom-in-left' : 'el-zoom-in-top';
@ -125,6 +125,19 @@
? this.activeTextColor ? this.activeTextColor
: this.textColor : this.textColor
}; };
},
isFirstLevel() {
let isFirstLevel = true;
let parent = this.$parent;
while (parent && parent !== this.rootMenu) {
if (['ElSubmenu', 'ElMenuItemGroup'].indexOf(parent.$options.componentName) > -1) {
isFirstLevel = false;
break;
} else {
parent = parent.$parent;
}
}
return isFirstLevel;
} }
}, },
methods: { methods: {
@ -196,7 +209,7 @@
title && (title.style.backgroundColor = this.rootMenu.backgroundColor || ''); title && (title.style.backgroundColor = this.rootMenu.backgroundColor || '');
}, },
updatePlacement() { updatePlacement() {
this.currentPlacement = this.mode === 'horizontal' && this.rootMenu === this.$parent this.currentPlacement = this.mode === 'horizontal' && this.isFirstLevel
? 'bottom-start' ? 'bottom-start'
: 'right-start'; : 'right-start';
}, },
@ -232,7 +245,7 @@
disabled, disabled,
popperClass, popperClass,
$slots, $slots,
$parent isFirstLevel
} = this; } = this;
const popupMenu = ( const popupMenu = (
@ -267,7 +280,7 @@
); );
const submenuTitleIcon = ( const submenuTitleIcon = (
rootMenu.mode === 'horizontal' && $parent === rootMenu || rootMenu.mode === 'horizontal' && isFirstLevel ||
rootMenu.mode === 'vertical' && !rootMenu.collapse rootMenu.mode === 'vertical' && !rootMenu.collapse
) ? 'el-icon-arrow-down' : 'el-icon-arrow-right'; ) ? 'el-icon-arrow-down' : 'el-icon-arrow-right';