From 1994dd6d9d0f0add917d67c25a9fa54f0be9a579 Mon Sep 17 00:00:00 2001 From: doufa Date: Tue, 6 May 2025 16:14:41 +0800 Subject: [PATCH] fix(editor): can not delete code block with delete keyboard (#11988) --- .../affine/blocks/code/src/code-block.ts | 2 +- tests/blocksuite/e2e/code/selections.spec.ts | 34 ++++++++++++++++++- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/blocksuite/affine/blocks/code/src/code-block.ts b/blocksuite/affine/blocks/code/src/code-block.ts index a2ed48244..12b538791 100644 --- a/blocksuite/affine/blocks/code/src/code-block.ts +++ b/blocksuite/affine/blocks/code/src/code-block.ts @@ -332,7 +332,7 @@ export class CodeBlockComponent extends CaptionedBlockComponent return true; }, Delete: () => { - return true; + return; }, Enter: () => { this.doc.captureSync(); diff --git a/tests/blocksuite/e2e/code/selections.spec.ts b/tests/blocksuite/e2e/code/selections.spec.ts index 3a6960a17..06ae1a9e1 100644 --- a/tests/blocksuite/e2e/code/selections.spec.ts +++ b/tests/blocksuite/e2e/code/selections.spec.ts @@ -86,7 +86,9 @@ test('split code with selection by enter', async ({ page }) => { await assertRichTexts(page, ['he\no']); }); -test('drag select code block can delete it', async ({ page }) => { +test('drag select code block can delete it with backspace', async ({ + page, +}) => { await enterPlaygroundRoom(page); await initEmptyCodeBlockState(page); await focusRichText(page); @@ -114,6 +116,36 @@ test('drag select code block can delete it', async ({ page }) => { await expect(locator).toBeHidden(); }); +test('drag select code block can delete it with delete key', async ({ + page, +}) => { + await enterPlaygroundRoom(page); + await initEmptyCodeBlockState(page); + await focusRichText(page); + + const codeBlock = page.locator('affine-code'); + const bbox = await codeBlock.boundingBox(); + if (!bbox) { + throw new Error("Failed to get code block's bounding box"); + } + const position = { + startX: bbox.x - 10, + startY: bbox.y - 10, + endX: bbox.x + bbox.width, + endY: bbox.y + bbox.height / 2, + }; + await dragBetweenCoords( + page, + { x: position.startX, y: position.startY }, + { x: position.endX, y: position.endY }, + { steps: 20 } + ); + await page.waitForTimeout(10); + await page.keyboard.press('Delete'); + const locator = page.locator('affine-code'); + await expect(locator).toBeHidden(); +}); + test('press short key and enter at end of code block can jump out', async ({ page, }) => {