From bfcf7fc2ba9fe74d4126e397bef5b46967f6130d Mon Sep 17 00:00:00 2001 From: chauhan_s Date: Sat, 4 Apr 2026 21:21:21 +0530 Subject: [PATCH] fix: close docs bulk toolbar after delete (#14711) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### Before https://www.loom.com/share/a626b23f29cb4a48b33d721341d734f8 ### After https://www.loom.com/share/0c88ef4f92ac470fbb76608e2de43fa7 ## Summary by CodeRabbit * **Bug Fixes** * Fixed floating toolbar remaining visible after deleting multiple documents via the confirmation dialog so it reliably closes when deletion completes. * **Tests** * Added end-to-end checks to verify the floating toolbar is dismissed after multi-item and “select all” deletions. --------- Co-authored-by: DarkSky <25152247+darkskygit@users.noreply.github.com> --- .../explorer/docs-view/docs-list.tsx | 1 + tests/affine-local/e2e/all-page.spec.ts | 33 +++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/packages/frontend/core/src/components/explorer/docs-view/docs-list.tsx b/packages/frontend/core/src/components/explorer/docs-view/docs-list.tsx index f1da9235b8..fc143f819f 100644 --- a/packages/frontend/core/src/components/explorer/docs-view/docs-list.tsx +++ b/packages/frontend/core/src/components/explorer/docs-view/docs-list.tsx @@ -198,6 +198,7 @@ export const DocsExplorer = ({ const doc = docsService.list.doc$(docId).value; doc?.moveToTrash(); } + handleCloseFloatingToolbar(); }, }); }, [ diff --git a/tests/affine-local/e2e/all-page.spec.ts b/tests/affine-local/e2e/all-page.spec.ts index 30c98b53f7..27633c2074 100644 --- a/tests/affine-local/e2e/all-page.spec.ts +++ b/tests/affine-local/e2e/all-page.spec.ts @@ -120,6 +120,9 @@ test('select two pages and delete', async ({ page }) => { // check the page count again await page.waitForTimeout(300); + await expect( + page.locator('[data-testid="floating-toolbar"]') + ).not.toBeVisible(); expect(await getPagesCount(page)).toBe(pageCount - 2); }); @@ -156,10 +159,40 @@ test('select three pages with shiftKey and delete', async ({ page }) => { // check the page count again await page.waitForTimeout(300); + await expect( + page.locator('[data-testid="floating-toolbar"]') + ).not.toBeVisible(); expect(await getPagesCount(page)).toBe(pageCount - 3); }); +test('select all and delete closes the floating toolbar', async ({ page }) => { + await openHomePage(page); + await waitForEditorLoad(page); + await clickNewPageButton(page); + await clickNewPageButton(page); + await clickSideBarAllPageButton(page); + await waitForAllPagesLoad(page); + + const pageCount = await getPagesCount(page); + + const selectAllButton = page + .getByRole('button', { name: 'Select all' }) + .last(); + await selectAllButton.hover(); + await selectAllButton.click(); + + await expect(page.locator('[data-testid="floating-toolbar"]')).toBeVisible(); + await page.locator('[data-testid="list-toolbar-delete"]').click(); + await page.getByRole('button', { name: 'Delete' }).click(); + + await page.waitForTimeout(300); + await expect( + page.locator('[data-testid="floating-toolbar"]') + ).not.toBeVisible(); + expect(await getPagesCount(page)).toBeLessThan(pageCount); +}); + test('create a tag and delete it', async ({ page }) => { await openHomePage(page); await waitForEditorLoad(page);