From 1f2caca3f5dbb4ce06f25043abd3c7191aaeb968 Mon Sep 17 00:00:00 2001 From: fundon Date: Thu, 20 Mar 2025 06:01:57 +0000 Subject: [PATCH] fix(editor): should not show toolbar when elements have been deleted (#11026) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes: [BS-2691](https://linear.app/affine-design/issue/BS-2691/[bug]-当-edgeless-为空的时候,点击-space-会在左上角出现一个莫名的-toolbar) --- .../widgets/widget-toolbar/src/toolbar.ts | 3 ++ .../e2e/blocksuite/toolbar.spec.ts | 40 ++++++++++++++++++- 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/blocksuite/affine/widgets/widget-toolbar/src/toolbar.ts b/blocksuite/affine/widgets/widget-toolbar/src/toolbar.ts index 6e780baf60..63c33a2cc1 100644 --- a/blocksuite/affine/widgets/widget-toolbar/src/toolbar.ts +++ b/blocksuite/affine/widgets/widget-toolbar/src/toolbar.ts @@ -157,6 +157,9 @@ export class AffineToolbarWidget extends WidgetComponent { .map(id => gfx.getElementById(id)) .filter(model => model !== null) as GfxModel[]; + // Should double check + activated &&= Boolean(elements.length); + hasLocked = elements.some(e => e.isLocked()); const grouped = groupBy( diff --git a/tests/affine-local/e2e/blocksuite/toolbar.spec.ts b/tests/affine-local/e2e/blocksuite/toolbar.spec.ts index 10f4cddb1e..8156f535ab 100644 --- a/tests/affine-local/e2e/blocksuite/toolbar.spec.ts +++ b/tests/affine-local/e2e/blocksuite/toolbar.spec.ts @@ -1,5 +1,10 @@ import { test } from '@affine-test/kit/playwright'; -import { locateToolbar } from '@affine-test/kit/utils/editor'; +import { + clickEdgelessModeButton, + dragView, + locateToolbar, + setEdgelessTool, +} from '@affine-test/kit/utils/editor'; import { selectAllByKeyboard } from '@affine-test/kit/utils/keyboard'; import { openHomePage } from '@affine-test/kit/utils/load-page'; import { @@ -158,3 +163,36 @@ test.describe('Formatting', () => { await expect(textSpan2).toHaveCSS('background-color', hexToRGB(bgColor)); }); }); + +test('should not show toolbar when releasing spacebar and elements have been deleted', async ({ + page, +}) => { + await clickEdgelessModeButton(page); + + await setEdgelessTool(page, 'shape'); + await dragView(page, [100, 300], [200, 400]); + + const toolbar = locateToolbar(page); + + await expect(toolbar).toBeVisible(); + + await page.keyboard.down('Space'); + + await expect(toolbar).toBeHidden(); + + await page.keyboard.up('Space'); + + await expect(toolbar).toBeVisible(); + + await page.keyboard.press('Delete'); + + await expect(toolbar).toBeHidden(); + + await page.keyboard.down('Space'); + + await expect(toolbar).toBeHidden(); + + await page.keyboard.up('Space'); + + await expect(toolbar).toBeHidden(); +});