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: {
// popper option
appendToBody() {
return this.rootMenu === this.$parent;
return this.isFirstLevel;
},
menuTransitionName() {
return this.rootMenu.collapse ? 'el-zoom-in-left' : 'el-zoom-in-top';
@ -125,6 +125,19 @@
? this.activeTextColor
: 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: {
@ -196,7 +209,7 @@
title && (title.style.backgroundColor = this.rootMenu.backgroundColor || '');
},
updatePlacement() {
this.currentPlacement = this.mode === 'horizontal' && this.rootMenu === this.$parent
this.currentPlacement = this.mode === 'horizontal' && this.isFirstLevel
? 'bottom-start'
: 'right-start';
},
@ -232,7 +245,7 @@
disabled,
popperClass,
$slots,
$parent
isFirstLevel
} = this;
const popupMenu = (
@ -267,7 +280,7 @@
);
const submenuTitleIcon = (
rootMenu.mode === 'horizontal' && $parent === rootMenu ||
rootMenu.mode === 'horizontal' && isFirstLevel ||
rootMenu.mode === 'vertical' && !rootMenu.collapse
) ? 'el-icon-arrow-down' : 'el-icon-arrow-right';