Commit eb410326 authored by SkyAo's avatar SkyAo Committed by hetech

Menu: clickoutside hide submenu (#13296)

* Menu:(fix) clickoutside hide submenu

* fix: optimize code
parent 03610267
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
import menuMixin from './menu-mixin'; import menuMixin from './menu-mixin';
import Emitter from 'element-ui/src/mixins/emitter'; import Emitter from 'element-ui/src/mixins/emitter';
import Popper from 'element-ui/src/utils/vue-popper'; import Popper from 'element-ui/src/utils/vue-popper';
import Clickoutside from 'element-ui/src/utils/clickoutside';
const poperMixins = { const poperMixins = {
props: { props: {
...@@ -29,6 +30,8 @@ ...@@ -29,6 +30,8 @@
components: { ElCollapseTransition }, components: { ElCollapseTransition },
directives: { Clickoutside },
props: { props: {
index: { index: {
type: String, type: String,
...@@ -226,6 +229,11 @@ ...@@ -226,6 +229,11 @@
this.referenceElm = this.$el; this.referenceElm = this.$el;
this.popperElm = this.$refs.menu; this.popperElm = this.$refs.menu;
this.updatePlacement(); this.updatePlacement();
},
close() {
this.$nextTick(() => {
if (this.opened) this.rootMenu.closeMenu(this.index);
});
} }
}, },
created() { created() {
...@@ -315,6 +323,7 @@ ...@@ -315,6 +323,7 @@
on-mouseenter={this.handleMouseenter} on-mouseenter={this.handleMouseenter}
on-mouseleave={this.handleMouseleave} on-mouseleave={this.handleMouseleave}
on-focus={this.handleMouseenter} on-focus={this.handleMouseenter}
v-clickoutside={this.close}
> >
<div <div
class="el-submenu__title" class="el-submenu__title"
......
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