From e302421765f2255778c75939a33c71a7a11f9b50 Mon Sep 17 00:00:00 2001 From: Gregor Vostrak Date: Thu, 9 Jul 2026 12:33:56 +0200 Subject: [PATCH] make sure dropdown/combobox lists stay visible during close animation to avoid layout shifts --- e2e/timetracker.spec.ts | 11 ++++++++--- .../Components/Common/Member/MemberCombobox.vue | 10 ++++++++-- .../Common/Project/ProjectDropdown.vue | 16 ++++++++++------ .../js/packages/ui/src/Client/ClientDropdown.vue | 11 ++++++++--- .../ui/src/Input/MultiselectDropdown.vue | 15 +++++++++++---- resources/js/packages/ui/src/Tag/TagDropdown.vue | 4 +--- .../TimeTrackerProjectTaskDropdown.vue | 2 +- 7 files changed, 47 insertions(+), 22 deletions(-) diff --git a/e2e/timetracker.spec.ts b/e2e/timetracker.spec.ts index caff92cc..b49063d9 100644 --- a/e2e/timetracker.spec.ts +++ b/e2e/timetracker.spec.ts @@ -502,8 +502,10 @@ test.describe('Project Task Dropdown', () => { await projectOption.getByText(/Tasks/).click(); await page.getByText(taskName, { exact: true }).click(); - // The trigger reflects the selected task. - await expect(page.getByText(taskName)).toBeVisible(); + // Scoped to the trigger button: the closing dropdown also contains the name while animating out. + await expect( + page.getByRole('button', { name: `${projectName} ${taskName}` }) + ).toBeVisible(); }); test('test that keyboard navigation selects a project', async ({ page, ctx }) => { @@ -654,7 +656,10 @@ test.describe('Project Task Dropdown', () => { await search.press('ArrowDown'); await search.press('Enter'); - await expect(page.getByText(taskName)).toBeVisible(); + // Scoped to the trigger button: the closing dropdown also contains the name while animating out. + await expect( + page.getByRole('button', { name: `${projectName} ${taskName}` }) + ).toBeVisible(); }); test('test that pressing space selects the highlighted project', async ({ page, ctx }) => { diff --git a/resources/js/Components/Common/Member/MemberCombobox.vue b/resources/js/Components/Common/Member/MemberCombobox.vue index c18e39db..9693e796 100644 --- a/resources/js/Components/Common/Member/MemberCombobox.vue +++ b/resources/js/Components/Common/Member/MemberCombobox.vue @@ -89,11 +89,17 @@ function selectMember(member: Member) {