From 9e4b36fec1eb7cfb64e261e542452918e1829fb4 Mon Sep 17 00:00:00 2001 From: Gerardo Date: Tue, 16 May 2023 17:32:42 +0200 Subject: [PATCH 1/4] Mobile - Block selection - Expand tapping on nested blocks directly --- .../src/components/block-list/block.native.js | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/packages/block-editor/src/components/block-list/block.native.js b/packages/block-editor/src/components/block-list/block.native.js index 2c4516db060176..c342025678b6d9 100644 --- a/packages/block-editor/src/components/block-list/block.native.js +++ b/packages/block-editor/src/components/block-list/block.native.js @@ -162,7 +162,6 @@ function BlockListBlock( { blockType, draggingClientId, draggingEnabled, - firstToSelectId, isDescendantOfParentSelected, isDescendentBlockSelected, isParentSelected, @@ -174,7 +173,6 @@ function BlockListBlock( { getBlockHierarchyRootClientId, getBlockIndex, getBlockParents, - getLowestCommonAncestorWithSelectedBlock, getSelectedBlockClientId, getSettings, hasSelectedInnerBlock, @@ -198,13 +196,6 @@ function BlockListBlock( { selectedParents.includes( rootClientId ); const hasInnerBlocks = getBlockCount( clientId ) > 0; - const commonAncestor = - getLowestCommonAncestorWithSelectedBlock( clientId ); - const commonAncestorIndex = parents.indexOf( commonAncestor ) - 1; - const firstBlockToSelectId = commonAncestor - ? parents[ commonAncestorIndex ] - : parents[ parents.length - 1 ]; - // For blocks with inner blocks, we only enable the dragging in the nested // blocks if any of them are selected. This way we prevent the long-press // gesture from being disabled for elements within the block UI. @@ -223,7 +214,6 @@ function BlockListBlock( { blockType: currentBlockType, draggingClientId: currentDraggingClientId, draggingEnabled: isDraggingEnabled, - firstToSelectId: firstBlockToSelectId, isDescendantOfParentSelected: descendantOfParentSelected, isDescendentBlockSelected: descendentBlockSelected, isParentSelected: parentSelected, @@ -245,11 +235,10 @@ function BlockListBlock( { [ clientId, removeBlock ] ); const onFocus = useCallback( () => { - const blockId = firstToSelectId ?? clientId; if ( ! isSelected ) { - selectBlock( blockId ); + selectBlock( clientId ); } - }, [ selectBlock, clientId, firstToSelectId, isSelected ] ); + }, [ selectBlock, clientId, isSelected ] ); const onLayout = useCallback( ( { nativeEvent } ) => { From 8ed8261016b43ac09e907feaafedcf8fb7baba5a Mon Sep 17 00:00:00 2001 From: Gerardo Date: Wed, 17 May 2023 15:16:58 +0200 Subject: [PATCH 2/4] Mobile - E2E helpers - Add navigateUp helper to navigate upwards --- .../__device-tests__/pages/editor-page.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/packages/react-native-editor/__device-tests__/pages/editor-page.js b/packages/react-native-editor/__device-tests__/pages/editor-page.js index 4c0b7249a8e77e..a6a7aa015e1a82 100644 --- a/packages/react-native-editor/__device-tests__/pages/editor-page.js +++ b/packages/react-native-editor/__device-tests__/pages/editor-page.js @@ -499,6 +499,20 @@ class EditorPage { await toolBarButton.click(); } + async navigateUp() { + let navigateUpElements = []; + do { + await editorPage.driver.sleep( 2000 ); + navigateUpElements = + await editorPage.driver.elementsByAccessibilityId( + 'Navigate Up' + ); + if ( navigateUpElements.length > 0 ) { + await navigateUpElements[ 0 ].click(); + } + } while ( navigateUpElements.length > 0 ); + } + // ========================= // Inline toolbar functions // ========================= From a3784511ff9f264f033adfb43be702d8cb75ec24 Mon Sep 17 00:00:00 2001 From: Gerardo Date: Wed, 17 May 2023 15:23:57 +0200 Subject: [PATCH 3/4] Mobile - E2E helpers - Update navigateUp to call driver within its context --- .../__device-tests__/pages/editor-page.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/packages/react-native-editor/__device-tests__/pages/editor-page.js b/packages/react-native-editor/__device-tests__/pages/editor-page.js index a6a7aa015e1a82..defc7bf277c93f 100644 --- a/packages/react-native-editor/__device-tests__/pages/editor-page.js +++ b/packages/react-native-editor/__device-tests__/pages/editor-page.js @@ -502,11 +502,10 @@ class EditorPage { async navigateUp() { let navigateUpElements = []; do { - await editorPage.driver.sleep( 2000 ); - navigateUpElements = - await editorPage.driver.elementsByAccessibilityId( - 'Navigate Up' - ); + await this.driver.sleep( 2000 ); + navigateUpElements = await this.driver.elementsByAccessibilityId( + 'Navigate Up' + ); if ( navigateUpElements.length > 0 ) { await navigateUpElements[ 0 ].click(); } From dbdd7a8eed6e3329b61b483ed922499b3d0381fd Mon Sep 17 00:00:00 2001 From: Gerardo Date: Thu, 18 May 2023 12:20:09 +0200 Subject: [PATCH 4/4] Mobile - Update Changelog --- packages/react-native-editor/CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/react-native-editor/CHANGELOG.md b/packages/react-native-editor/CHANGELOG.md index 6c98c6a5b8a35e..eebc693a26b019 100644 --- a/packages/react-native-editor/CHANGELOG.md +++ b/packages/react-native-editor/CHANGELOG.md @@ -10,10 +10,11 @@ For each user feature we should also add a importance categorization label to i --> ## Unreleased +- [**] Tapping on all nested blocks gets focus directly instead of having to tap multiple times depeding on the nesting levels. [#50672] ## 1.95.0 - [*] Fix crash when trying to convert to regular blocks an undefined/deleted reusable block [#50475] -- [**] Tapping on a nested block now gets focus directly instead of having to tap multiple times depeding on the nesting levels. [#50108] +- [**] Tapping on nested text blocks gets focus directly instead of having to tap multiple times depeding on the nesting levels. [#50108] - [*] Use host app namespace in reusable block message [#50478] ## 1.94.0