From 7ea8107ed0006a9a9774b50dd498ba718b07bdde Mon Sep 17 00:00:00 2001 From: Max Date: Tue, 20 May 2025 09:21:22 +0200 Subject: [PATCH] fix(webapp): fix popover flickering (#8555) Add boundary to v-popover to avoid random flickering when hovering a user teaser Preload user data to avoid resizing (and sometimes repositioning) of popover after data has been loaded --- .../GroupContentMenu.spec.js.snap | 4 ++ webapp/components/Dropdown.vue | 3 +- .../components/UserTeaser/UserTeaser.spec.js | 6 +++ .../UserTeaser/UserTeaserNonAnonymous.vue | 15 +++++++- .../UserTeaser/UserTeaserPopover.vue | 7 +--- .../__snapshots__/UserTeaser.spec.js.snap | 12 ++++++ .../_id/__snapshots__/_slug.spec.js.snap | 38 +++++++++++++++++++ .../_id/__snapshots__/_slug.spec.js.snap | 4 ++ 8 files changed, 80 insertions(+), 9 deletions(-) diff --git a/webapp/components/ContentMenu/__snapshots__/GroupContentMenu.spec.js.snap b/webapp/components/ContentMenu/__snapshots__/GroupContentMenu.spec.js.snap index 5875d2341..e33d0f164 100644 --- a/webapp/components/ContentMenu/__snapshots__/GroupContentMenu.spec.js.snap +++ b/webapp/components/ContentMenu/__snapshots__/GroupContentMenu.spec.js.snap @@ -4,6 +4,7 @@ exports[`GroupContentMenu renders as groupProfile when I am the owner 1`] = `
@@ -72,7 +73,7 @@ export default { } }, closeMenu(useTimeout) { - if (this.disabled) { + if (this.noMouseLeaveClosing || this.disabled) { return } this.clearTimeouts() diff --git a/webapp/components/UserTeaser/UserTeaser.spec.js b/webapp/components/UserTeaser/UserTeaser.spec.js index 8a67285ac..0c2adab8a 100644 --- a/webapp/components/UserTeaser/UserTeaser.spec.js +++ b/webapp/components/UserTeaser/UserTeaser.spec.js @@ -86,6 +86,12 @@ describe('UserTeaser', () => { }, mocks: { $t: jest.fn((t) => t), + $i18n: { + locale: jest.fn(() => 'en'), + }, + $apollo: { + query: jest.fn(() => Promise.resolve({ data: { user } })), + }, }, }) } diff --git a/webapp/components/UserTeaser/UserTeaserNonAnonymous.vue b/webapp/components/UserTeaser/UserTeaserNonAnonymous.vue index 34c3769bb..286a9daa2 100644 --- a/webapp/components/UserTeaser/UserTeaserNonAnonymous.vue +++ b/webapp/components/UserTeaser/UserTeaserNonAnonymous.vue @@ -6,7 +6,7 @@ :link-to-profile="linkToProfile" :show-popover="showPopover" :user-link="userLink" - @open-menu="openMenu(false)" + @open-menu="loadPopover(openMenu)" @close-menu="closeMenu(false)" data-test="avatarUserLink" > @@ -18,7 +18,7 @@ :link-to-profile="linkToProfile" :show-popover="showPopover" :user-link="userLink" - @open-menu="openMenu(false)" + @open-menu="loadPopover(openMenu)" @close-menu="closeMenu(false)" > {{ userSlug }} @@ -57,6 +57,7 @@ diff --git a/webapp/components/UserTeaser/UserTeaserPopover.vue b/webapp/components/UserTeaser/UserTeaserPopover.vue index 05d34631a..68fffaf90 100644 --- a/webapp/components/UserTeaser/UserTeaserPopover.vue +++ b/webapp/components/UserTeaser/UserTeaserPopover.vue @@ -1,6 +1,5 @@