diff --git a/blocksuite/affine/blocks/block-root/src/widgets/linked-doc/linked-doc-popover.ts b/blocksuite/affine/blocks/block-root/src/widgets/linked-doc/linked-doc-popover.ts index 51aa9e8f08..b36ff8b47f 100644 --- a/blocksuite/affine/blocks/block-root/src/widgets/linked-doc/linked-doc-popover.ts +++ b/blocksuite/affine/blocks/block-root/src/widgets/linked-doc/linked-doc-popover.ts @@ -55,7 +55,7 @@ export class LinkedDocPopover extends SignalWatcher( } this._updateLinkedDocGroupAbortController = new AbortController(); - if (query === null) { + if (query === null || query.startsWith(' ')) { this.context.close(); return; } diff --git a/tests/blocksuite/e2e/linked-page.spec.ts b/tests/blocksuite/e2e/linked-page.spec.ts index 7747ccf959..cd54e221f5 100644 --- a/tests/blocksuite/e2e/linked-page.spec.ts +++ b/tests/blocksuite/e2e/linked-page.spec.ts @@ -133,6 +133,23 @@ test.describe('reference node', () => { await expect(linkedDocPopover).toBeHidden(); }); + test('close doc popover when start with space', async ({ page }) => { + await enterPlaygroundRoom(page); + await initEmptyParagraphState(page); + await focusRichText(page); + await type(page, '@d'); + const { linkedDocPopover } = getLinkedDocPopover(page); + await expect(linkedDocPopover).toBeVisible(); + await pressBackspace(page); + await expect(linkedDocPopover).toBeVisible(); + await type(page, ' '); + await expect(linkedDocPopover).toBeHidden(); + await type(page, '@'); + await expect(linkedDocPopover).toBeVisible(); + await type(page, ' '); + await expect(linkedDocPopover).toBeHidden(); + }); + test('should reference node attributes correctly', async ({ page, }, testInfo) => {