From fd03f5a7baafbc65d2ff43ce093724b31508d9c3 Mon Sep 17 00:00:00 2001 From: Aaron Robertshaw <60436221+aaronrobertshaw@users.noreply.github.com> Date: Thu, 9 Mar 2023 17:14:43 +1000 Subject: [PATCH] Fix issue preventing inner block selection --- .../components/resizable-box-popover/index.js | 8 +-- .../src/cover/edit/resizable-cover-popover.js | 51 ++++++++++--------- packages/block-library/src/cover/editor.scss | 13 +++++ 3 files changed, 44 insertions(+), 28 deletions(-) diff --git a/packages/block-editor/src/components/resizable-box-popover/index.js b/packages/block-editor/src/components/resizable-box-popover/index.js index 23043535cb16bd..c2400dbe07f912 100644 --- a/packages/block-editor/src/components/resizable-box-popover/index.js +++ b/packages/block-editor/src/components/resizable-box-popover/index.js @@ -8,20 +8,20 @@ import { ResizableBox } from '@wordpress/components'; */ import BlockPopover from '../block-popover'; -export default function ResizableCoverPopover( { +export default function ResizableBoxPopover( { clientId, - __unstableRefreshSize, + resizableBoxProps, ...props } ) { return ( - + ); } diff --git a/packages/block-library/src/cover/edit/resizable-cover-popover.js b/packages/block-library/src/cover/edit/resizable-cover-popover.js index 3f5950912f5d74..57d846ed7007b3 100644 --- a/packages/block-library/src/cover/edit/resizable-cover-popover.js +++ b/packages/block-library/src/cover/edit/resizable-cover-popover.js @@ -36,33 +36,36 @@ export default function ResizableCoverPopover( { [ minHeight, height, width ] ); + const resizableBoxProps = { + className: classnames( className, { 'is-resizing': isResizing } ), + enable: RESIZABLE_BOX_ENABLE_OPTION, + onResizeStart: ( _event, _direction, elt ) => { + onResizeStart( elt.clientHeight ); + onResize( elt.clientHeight ); + }, + onResize: ( _event, _direction, elt ) => { + onResize( elt.clientHeight ); + if ( ! isResizing ) { + setIsResizing( true ); + } + }, + onResizeStop: ( _event, _direction, elt ) => { + onResizeStop( elt.clientHeight ); + setIsResizing( false ); + }, + __experimentalShowTooltip: true, + __experimentalTooltipProps: { + axis: 'y', + position: 'bottom', + isVisible: isResizing, + }, + }; + return ( { - onResizeStart( elt.clientHeight ); - onResize( elt.clientHeight ); - } } - onResize={ ( _event, _direction, elt ) => { - onResize( elt.clientHeight ); - if ( ! isResizing ) { - setIsResizing( true ); - } - } } - onResizeStop={ ( _event, _direction, elt ) => { - onResizeStop( elt.clientHeight ); - setIsResizing( false ); - } } - __experimentalShowTooltip - __experimentalTooltipProps={ { - axis: 'y', - position: 'bottom', - isVisible: isResizing, - } } + resizableBoxProps={ resizableBoxProps } { ...props } /> ); diff --git a/packages/block-library/src/cover/editor.scss b/packages/block-library/src/cover/editor.scss index bc0af932f1d1ac..dad9ba9fd1e73e 100644 --- a/packages/block-library/src/cover/editor.scss +++ b/packages/block-library/src/cover/editor.scss @@ -87,6 +87,19 @@ min-height: 50px; } +// Prevent resizable box popover form preventing inner block selection. +.components-popover.block-editor-block-popover.block-library-cover__resizable-box-popover { + // Additional specificity is required to overcome default block popover + // pointer events only for the intended wrappers. The default pointer events + // are still needed for the inner resize handles of the resizable box. + .components-popover__content > div, + .block-library-cover__resize-container { + // The inner drag handle will still have `pointer-events: all` allowing + // it to continue to be interacted with. + pointer-events: none; + } +} + // When uploading background images, show a transparent overlay. .wp-block-cover > .components-drop-zone .components-drop-zone__content { opacity: 0.8 !important;