Skip to content

Commit 98d9449

Browse files
committed
fix: don't auto hide parent if contains click
1 parent acf3881 commit 98d9449

File tree

1 file changed

+13
-6
lines changed
  • packages/floating-vue/src/components

1 file changed

+13
-6
lines changed

packages/floating-vue/src/components/Popper.ts

+13-6
Original file line numberDiff line numberDiff line change
@@ -912,12 +912,6 @@ export default () => ({
912912
this.$_preventShow = false
913913
}, 300)
914914
}
915-
916-
let parent = this.parentPopper
917-
while (parent) {
918-
parent.$_handleGlobalClose(event, touch)
919-
parent = parent.parentPopper
920-
}
921915
},
922916

923917
$_detachPopperNode () {
@@ -1042,6 +1036,19 @@ function handleGlobalClose (event, touch = false) {
10421036
requestAnimationFrame(() => {
10431037
if (event.closeAllPopover || (event.closePopover && contains) || (popper.autoHide && !contains)) {
10441038
popper.$_handleGlobalClose(event, touch)
1039+
1040+
let parent = popper.parentPopper
1041+
while (parent) {
1042+
const popperContent = parent.popperNode()
1043+
const contains = parent.$_mouseDownContains || popperContent.contains(event.target)
1044+
if (event.closeAllPopover || (event.closePopover && contains) || (parent.autoHide && !contains)) {
1045+
parent.$_handleGlobalClose(event, touch)
1046+
} else {
1047+
parent.$_pendingHide = false
1048+
break
1049+
}
1050+
parent = parent.parentPopper
1051+
}
10451052
}
10461053
})
10471054
} catch (e) {

0 commit comments

Comments
 (0)