From da5c18ee135a0efdfd1f09724f954f6ad4076045 Mon Sep 17 00:00:00 2001 From: Andrew Aladjev Date: Wed, 12 Jul 2023 11:53:31 +0300 Subject: [PATCH] Don't deactivate on blur if it occur from the multiselect descendants --- src/Multiselect.vue | 4 ++-- src/multiselectMixin.js | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/Multiselect.vue b/src/Multiselect.vue index edef144e..68d727a3 100644 --- a/src/Multiselect.vue +++ b/src/Multiselect.vue @@ -3,7 +3,7 @@ :tabindex="searchable ? -1 : tabindex" :class="{ 'multiselect--active': isOpen, 'multiselect--disabled': disabled, 'multiselect--above': isAbove, 'multiselect--has-options-group': hasOptionGroup }" @focus="activate()" - @blur="searchable ? false : deactivate()" + @blur="searchable ? false : deactivate($event)" @keydown.self.down.prevent="pointerForward()" @keydown.self.up.prevent="pointerBackward()" @keypress.enter.tab.stop.self="addPointerElement($event)" @@ -59,7 +59,7 @@ :tabindex="tabindex" @input="updateSearch($event.target.value)" @focus.prevent="activate()" - @blur.prevent="deactivate()" + @blur.prevent="deactivate($event)" @keyup.esc="deactivate()" @keydown.down.prevent="pointerForward()" @keydown.up.prevent="pointerBackward()" diff --git a/src/multiselectMixin.js b/src/multiselectMixin.js index dd065b6a..a034eb42 100644 --- a/src/multiselectMixin.js +++ b/src/multiselectMixin.js @@ -681,9 +681,10 @@ export default { * Closes the multiselect’s dropdown. * Sets this.isOpen to FALSE */ - deactivate () { + deactivate (blurEvent) { /* istanbul ignore else */ if (!this.isOpen) return + if (blurEvent && blurEvent.relatedTarget && this.$el.contains(blurEvent.relatedTarget)) return this.isOpen = false /* istanbul ignore else */