diff options
| author | Henry Jameson <me@hjkos.com> | 2022-06-27 19:16:33 +0300 |
|---|---|---|
| committer | Henry Jameson <me@hjkos.com> | 2022-06-27 19:16:33 +0300 |
| commit | cb135645f9b290944c40052f09a3eb9a487598a1 (patch) | |
| tree | a56e085b0e9ec3028035f4adbe32ea5b1e0fb2a1 | |
| parent | 9c9dc2053b68813f748bc7cd656987242f45158c (diff) | |
make hover popovers less annoying to close
| -rw-r--r-- | src/components/popover/popover.js | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/components/popover/popover.js b/src/components/popover/popover.js index 5dfcf810..82ae9885 100644 --- a/src/components/popover/popover.js +++ b/src/components/popover/popover.js @@ -45,6 +45,10 @@ const Popover = { inject: ['popoversZLayer'], // override popover z layer data () { return { + // lockReEntry is a flag that is set when mouse cursor is leaving the popover's content + // so that if mouse goes back into popover it won't be re-shown again to prevent annoyance + // with popovers refusing to be hidden when user wants to interact with something in below popover + lockReEntry: false, hidden: true, styles: {}, oldSize: { width: 0, height: 0 }, @@ -202,6 +206,7 @@ const Popover = { }, onMouseenter (e) { if (this.trigger === 'hover') { + this.lockReEntry = false clearTimeout(this.graceTimeout) this.graceTimeout = null this.showPopover() @@ -213,7 +218,8 @@ const Popover = { } }, onMouseenterContent (e) { - if (this.trigger === 'hover') { + if (this.trigger === 'hover' && !this.lockReEntry) { + this.lockReEntry = true clearTimeout(this.graceTimeout) this.graceTimeout = null this.showPopover() |
