Skip to content

Commit

Permalink
fix: prevent popovers from staying open when moving mouse too quickly (
Browse files Browse the repository at this point in the history
…#228)

#220

Co-authored-by: Guillaume Chau <alphadelta.fg@gmail.com>
  • Loading branch information
2 people authored and Akryum committed Apr 11, 2019
1 parent 465f3fd commit 6095472
Showing 1 changed file with 50 additions and 36 deletions.
86 changes: 50 additions & 36 deletions src/components/Popover.vue
Original file line number Diff line number Diff line change
@@ -1,40 +1,40 @@
<template>
<div class="v-popover" :class="cssClass">
<span
ref="trigger"
class="trigger"
style="display: inline-block;"
:aria-describedby="popoverId"
:tabindex="trigger.indexOf('focus') !== -1 ? 0 : -1"
>
<slot />
</span>

<div
ref="popover"
:id="popoverId"
:class="[popoverBaseClass, popoverClass, cssClass]"
:style="{
visibility: isOpen ? 'visible' : 'hidden',
}"
:aria-hidden="isOpen ? 'false' : 'true'"
>
<div :class="popoverWrapperClass">
<div
ref="inner"
:class="popoverInnerClass"
style="position: relative;"
>
<div>
<slot name="popover" />
</div>

<ResizeObserver v-if="handleResize" @notify="$_handleResize" />
</div>
<div ref="arrow" :class="popoverArrowClass"></div>
</div>
</div>
</div>
<div class="v-popover" :class="cssClass">
<span
ref="trigger"
class="trigger"
style="display: inline-block;"
:aria-describedby="popoverId"
:tabindex="trigger.indexOf('focus') !== -1 ? 0 : -1"
>
<slot />
</span>

<div
ref="popover"
:id="popoverId"
:class="[popoverBaseClass, popoverClass, cssClass]"
:style="{
visibility: isOpen ? 'visible' : 'hidden',
}"
:aria-hidden="isOpen ? 'false' : 'true'"
>
<div :class="popoverWrapperClass">
<div
ref="inner"
:class="popoverInnerClass"
style="position: relative;"
>
<div>
<slot name="popover" />
</div>

<ResizeObserver v-if="handleResize" @notify="$_handleResize" />
</div>
<div ref="arrow" :class="popoverArrowClass"></div>
</div>
</div>
</div>
</template>

<script>
Expand Down Expand Up @@ -346,11 +346,23 @@ export default {
// Fix position
requestAnimationFrame(() => {
if (this.hidden) {
this.hidden = false
this.$_hide()
return
}
if (!this.$_isDisposed && this.popperInstance) {
this.popperInstance.scheduleUpdate()
// Show the tooltip
requestAnimationFrame(() => {
if (this.hidden) {
this.hidden = false
this.$_hide()
return
}
if (!this.$_isDisposed) {
this.isOpen = true
} else {
Expand Down Expand Up @@ -473,6 +485,7 @@ export default {
}
event.usedByTooltip = true
!this.$_preventOpen && this.show({ event: event })
this.hidden = false
}
this.$_events.push({ event, func })
reference.addEventListener(event, func)
Expand All @@ -485,6 +498,7 @@ export default {
return
}
this.hide({ event: event })
this.hidden = true
}
this.$_events.push({ event, func })
reference.addEventListener(event, func)
Expand Down

0 comments on commit 6095472

Please sign in to comment.