diff --git a/src/dropdown-item/index.js b/src/dropdown-item/index.js index 9b2a03425..6efddc2eb 100644 --- a/src/dropdown-item/index.js +++ b/src/dropdown-item/index.js @@ -40,19 +40,17 @@ export default createComponent({ }, methods: { - toggle(show) { - this.showPopup = !this.showPopup; - - if (this.showPopup) { - this.showWrapper = true; + toggle(show = !this.showPopup, options = {}) { + if (show === this.showPopup) { + return; } - }, - hide(skipTransition) { - this.showPopup = false; + this.transition = !options.immediate; + this.showPopup = show; - if (skipTransition) { - this.transition = false; + if (show) { + this.parent.updateOffset(); + this.showWrapper = true; } } }, @@ -120,7 +118,6 @@ export default createComponent({ onClose={this.onClose} onOpened={this.onOpened} onClosed={() => { - this.transition = true; this.showWrapper = false; this.$emit('closed'); }} diff --git a/src/dropdown-menu/index.js b/src/dropdown-menu/index.js index eb646f483..16a03eb9b 100644 --- a/src/dropdown-menu/index.js +++ b/src/dropdown-menu/index.js @@ -48,7 +48,7 @@ export default createComponent({ }, methods: { - toggleItem(active) { + updateOffset() { const { menu } = this.$refs; const rect = menu.getBoundingClientRect(); @@ -57,19 +57,21 @@ export default createComponent({ } else { this.offset = window.innerHeight - rect.top; } + }, + toggleItem(active) { this.children.forEach((item, index) => { if (index === active) { item.toggle(); } else if (item.showPopup) { - item.hide(true); + item.toggle(false, { immediate: true }); } }); }, onClickOutside() { this.children.forEach(item => { - item.hide(); + item.toggle(false); }); } }, diff --git a/src/dropdown-menu/test/__snapshots__/index.spec.js.snap b/src/dropdown-menu/test/__snapshots__/index.spec.js.snap index aedc50ae1..e1cfef488 100644 --- a/src/dropdown-menu/test/__snapshots__/index.spec.js.snap +++ b/src/dropdown-menu/test/__snapshots__/index.spec.js.snap @@ -5,7 +5,7 @@ exports[`click option 1`] = `