diff --git a/packages/block-editor/src/components/block-list/block-wrapper.js b/packages/block-editor/src/components/block-list/block-wrapper.js index aeefcfc70b6111..b80a4bbb210c1d 100644 --- a/packages/block-editor/src/components/block-list/block-wrapper.js +++ b/packages/block-editor/src/components/block-list/block-wrapper.js @@ -15,7 +15,7 @@ import { forwardRef, } from '@wordpress/element'; import { focus, isTextField, placeCaretAtHorizontalEdge } from '@wordpress/dom'; -import { ENTER } from '@wordpress/keycodes'; +import { ENTER, BACKSPACE, DELETE } from '@wordpress/keycodes'; import { __, sprintf } from '@wordpress/i18n'; import { useSelect, useDispatch } from '@wordpress/data'; @@ -75,7 +75,9 @@ const BlockComponent = forwardRef( }, [ isSelected ] ); - const { insertDefaultBlock } = useDispatch( 'core/block-editor' ); + const { insertDefaultBlock, removeBlock } = useDispatch( + 'core/block-editor' + ); const fallbackRef = useRef(); const isAligned = wrapperProps && !! wrapperProps[ 'data-align' ]; wrapper = wrapper || fallbackRef; @@ -169,7 +171,11 @@ const BlockComponent = forwardRef( props.onKeyDown( event ); } - if ( keyCode !== ENTER ) { + if ( + keyCode !== ENTER && + keyCode !== BACKSPACE && + keyCode !== DELETE + ) { return; } @@ -181,6 +187,8 @@ const BlockComponent = forwardRef( if ( keyCode === ENTER ) { insertDefaultBlock( {}, rootClientId, index + 1 ); + } else { + removeBlock( clientId ); } }; diff --git a/packages/block-editor/src/components/keyboard-shortcuts/index.js b/packages/block-editor/src/components/keyboard-shortcuts/index.js index 85d8d31d82bef9..4091626b5c93dd 100644 --- a/packages/block-editor/src/components/keyboard-shortcuts/index.js +++ b/packages/block-editor/src/components/keyboard-shortcuts/index.js @@ -131,7 +131,7 @@ function KeyboardShortcuts() { }, [ clientIds, removeBlocks ] ), - { isDisabled: clientIds.length < 1 } + { isDisabled: clientIds.length < 2 } ); useShortcut( diff --git a/packages/e2e-tests/specs/editor/blocks/image.test.js b/packages/e2e-tests/specs/editor/blocks/image.test.js index 56613720047f61..ad0adcd998825f 100644 --- a/packages/e2e-tests/specs/editor/blocks/image.test.js +++ b/packages/e2e-tests/specs/editor/blocks/image.test.js @@ -81,6 +81,7 @@ describe( 'Image', () => { ); expect( await getEditedPostContent() ).toMatch( regex3 ); + await page.click( '.wp-block-image img' ); await page.keyboard.press( 'Backspace' ); expect( await getEditedPostContent() ).toBe( '' ); diff --git a/packages/e2e-tests/specs/editor/various/__snapshots__/writing-flow.test.js.snap b/packages/e2e-tests/specs/editor/various/__snapshots__/writing-flow.test.js.snap index 01dc6c0b68269a..13766cd2526a17 100644 --- a/packages/e2e-tests/specs/editor/various/__snapshots__/writing-flow.test.js.snap +++ b/packages/e2e-tests/specs/editor/various/__snapshots__/writing-flow.test.js.snap @@ -116,6 +116,12 @@ exports[`Writing Flow should merge forwards 1`] = ` " `; +exports[`Writing Flow should merge paragraphs 1`] = ` +" +

12

+" +`; + exports[`Writing Flow should navigate around inline boundaries 1`] = ` "

FirstAfter

diff --git a/packages/e2e-tests/specs/editor/various/writing-flow.test.js b/packages/e2e-tests/specs/editor/various/writing-flow.test.js index 905e85ba9d016a..8b9ee8396257d2 100644 --- a/packages/e2e-tests/specs/editor/various/writing-flow.test.js +++ b/packages/e2e-tests/specs/editor/various/writing-flow.test.js @@ -410,6 +410,17 @@ describe( 'Writing Flow', () => { expect( await getEditedPostContent() ).toMatchSnapshot(); } ); + it( 'should merge paragraphs', async () => { + await page.keyboard.press( 'Enter' ); + await page.keyboard.type( '1' ); + await page.keyboard.press( 'Enter' ); + await page.keyboard.type( '2' ); + await page.keyboard.press( 'ArrowLeft' ); + await page.keyboard.press( 'Backspace' ); + + expect( await getEditedPostContent() ).toMatchSnapshot(); + } ); + it( 'should merge forwards', async () => { await page.keyboard.press( 'Enter' ); await page.keyboard.type( '1' );