From a1d7bd04f9971710a69eaaa716fcc4949e78cba3 Mon Sep 17 00:00:00 2001 From: Mitchell Austin Date: Sun, 2 May 2021 13:49:24 -0700 Subject: [PATCH 1/3] Show Cover block placeholder only if it has no inner blocks --- packages/block-library/src/cover/edit.js | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/packages/block-library/src/cover/edit.js b/packages/block-library/src/cover/edit.js index f7c75b5737675..6b3b84275bce2 100644 --- a/packages/block-library/src/cover/edit.js +++ b/packages/block-library/src/cover/edit.js @@ -41,7 +41,7 @@ import { store as blockEditorStore, } from '@wordpress/block-editor'; import { __ } from '@wordpress/i18n'; -import { withDispatch } from '@wordpress/data'; +import { withDispatch, useSelect } from '@wordpress/data'; import { cover as icon } from '@wordpress/icons'; import { isBlobURL } from '@wordpress/blob'; @@ -286,6 +286,7 @@ function CoverPlaceholder( { function CoverEdit( { attributes, + clientId, isSelected, noticeUI, noticeOperations, @@ -551,7 +552,14 @@ function CoverEdit( { } ); - if ( ! hasBackground ) { + const hasInnerBlocks = useSelect( + ( select ) => + select( blockEditorStore ).getBlock( clientId ).innerBlocks.length > + 0, + [ clientId ] + ); + + if ( ! hasInnerBlocks && ! hasBackground ) { return ( <> { controls } @@ -657,12 +665,6 @@ function CoverEdit( { /> ) } { isUploadingMedia && } -
From 8a655116257f39363d47bb9ad4cf6beaa5e68513 Mon Sep 17 00:00:00 2001 From: Mitchell Austin Date: Sun, 2 May 2021 13:59:00 -0700 Subject: [PATCH 2/3] Use inner block status to enable/disable controls --- packages/block-library/src/cover/edit.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/block-library/src/cover/edit.js b/packages/block-library/src/cover/edit.js index 6b3b84275bce2..f683a491cc3a6 100644 --- a/packages/block-library/src/cover/edit.js +++ b/packages/block-library/src/cover/edit.js @@ -410,6 +410,13 @@ function CoverEdit( { styleOfRef[ property ] = mediaPosition( value ); }; + const hasInnerBlocks = useSelect( + ( select ) => + select( blockEditorStore ).getBlock( clientId ).innerBlocks.length > + 0, + [ clientId ] + ); + const controls = ( <> @@ -421,12 +428,12 @@ function CoverEdit( { contentPosition: nextPosition, } ) } - isDisabled={ ! hasBackground } + isDisabled={ ! hasInnerBlocks } /> @@ -552,13 +559,6 @@ function CoverEdit( { } ); - const hasInnerBlocks = useSelect( - ( select ) => - select( blockEditorStore ).getBlock( clientId ).innerBlocks.length > - 0, - [ clientId ] - ); - if ( ! hasInnerBlocks && ! hasBackground ) { return ( <> From 77ec62f75c7652d23aaab34f9eb34489cad0f068 Mon Sep 17 00:00:00 2001 From: Mitchell Austin Date: Tue, 4 May 2021 08:21:11 -0700 Subject: [PATCH 3/3] Restore dropzone --- packages/block-library/src/cover/edit.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/block-library/src/cover/edit.js b/packages/block-library/src/cover/edit.js index f683a491cc3a6..4bbf14c17dfd4 100644 --- a/packages/block-library/src/cover/edit.js +++ b/packages/block-library/src/cover/edit.js @@ -253,7 +253,7 @@ function mediaPosition( { x, y } ) { const isTemporaryMedia = ( id, url ) => ! id && isBlobURL( url ); function CoverPlaceholder( { - hasBackground = false, + disableMediaButtons = false, children, noticeUI, noticeOperations, @@ -273,7 +273,7 @@ function CoverPlaceholder( { accept="image/*,video/*" allowedTypes={ ALLOWED_MEDIA_TYPES } notices={ noticeUI } - disableMediaButtons={ hasBackground } + disableMediaButtons={ disableMediaButtons } onError={ ( message ) => { removeAllNotices(); createErrorNotice( message ); @@ -665,6 +665,12 @@ function CoverEdit( { /> ) } { isUploadingMedia && } +