From 6407a2ffe73747d8a59c881e38a40b714fd2b444 Mon Sep 17 00:00:00 2001 From: ramon Date: Thu, 14 Nov 2024 17:59:31 +1100 Subject: [PATCH] Initial commit. Moving patterns selection modal content to inspector panel. --- .../block-library/src/query/edit/index.js | 27 +------- .../query/edit/inspector-controls/index.js | 29 ++++++++- .../pattern-selection.js} | 65 ++++++++++--------- .../src/query/edit/query-content.js | 15 +---- .../src/query/edit/query-toolbar.js | 30 --------- 5 files changed, 66 insertions(+), 100 deletions(-) rename packages/block-library/src/query/edit/{pattern-selection-modal.js => inspector-controls/pattern-selection.js} (59%) delete mode 100644 packages/block-library/src/query/edit/query-toolbar.js diff --git a/packages/block-library/src/query/edit/index.js b/packages/block-library/src/query/edit/index.js index 9a54b5976fe4bc..9bf47c3e6605f3 100644 --- a/packages/block-library/src/query/edit/index.js +++ b/packages/block-library/src/query/edit/index.js @@ -2,7 +2,6 @@ * WordPress dependencies */ import { useSelect } from '@wordpress/data'; -import { useState } from '@wordpress/element'; import { store as blockEditorStore } from '@wordpress/block-editor'; /** @@ -10,37 +9,17 @@ import { store as blockEditorStore } from '@wordpress/block-editor'; */ import QueryContent from './query-content'; import QueryPlaceholder from './query-placeholder'; -import PatternSelectionModal from './pattern-selection-modal'; const QueryEdit = ( props ) => { - const { clientId, attributes } = props; - const [ isPatternSelectionModalOpen, setIsPatternSelectionModalOpen ] = - useState( false ); + const { clientId } = props; const hasInnerBlocks = useSelect( ( select ) => !! select( blockEditorStore ).getBlocks( clientId ).length, [ clientId ] ); + const Component = hasInnerBlocks ? QueryContent : QueryPlaceholder; - return ( - <> - - setIsPatternSelectionModalOpen( true ) - } - /> - { isPatternSelectionModalOpen && ( - - ) } - - ); + return ; }; export default QueryEdit; diff --git a/packages/block-library/src/query/edit/inspector-controls/index.js b/packages/block-library/src/query/edit/inspector-controls/index.js index 7d5745e190c9a7..bd0395948de09c 100644 --- a/packages/block-library/src/query/edit/inspector-controls/index.js +++ b/packages/block-library/src/query/edit/inspector-controls/index.js @@ -32,6 +32,7 @@ import CreateNewPostLink from './create-new-post-link'; import PerPageControl from './per-page-control'; import OffsetControl from './offset-controls'; import PagesControl from './pages-control'; +import PatternSelection from './pattern-selection'; import { unlock } from '../../../lock-unlock'; import { usePostTypes, @@ -39,13 +40,21 @@ import { useAllowedControls, isControlAllowed, useTaxonomies, + usePatterns, } from '../../utils'; import { useToolsPanelDropdownMenuProps } from '../../../utils/hooks'; const { BlockInfo } = unlock( blockEditorPrivateApis ); export default function QueryInspectorControls( props ) { - const { attributes, setQuery, setDisplayLayout, isSingular } = props; + const { + attributes, + setQuery, + setDisplayLayout, + isSingular, + clientId, + name, + } = props; const { query, displayLayout } = attributes; const { order, @@ -178,7 +187,8 @@ export default function QueryInspectorControls( props ) { showParentControl || showFormatControl; const dropdownMenuProps = useToolsPanelDropdownMenuProps(); - + const [ loadPatterns, setLoadPatterns ] = useState( false ); + const hasPatterns = !! usePatterns( clientId, name ).length; const showPostCountControl = isControlAllowed( allowedControls, 'postCount' @@ -196,6 +206,21 @@ export default function QueryInspectorControls( props ) { ) } + { hasPatterns && ( + + nextState ? setLoadPatterns( true ) : false + } + > + + + ) } { showSettingsPanel && ( { showInheritControl && ( diff --git a/packages/block-library/src/query/edit/pattern-selection-modal.js b/packages/block-library/src/query/edit/inspector-controls/pattern-selection.js similarity index 59% rename from packages/block-library/src/query/edit/pattern-selection-modal.js rename to packages/block-library/src/query/edit/inspector-controls/pattern-selection.js index e4cc8d0c851c23..7efc2ad3f9796d 100644 --- a/packages/block-library/src/query/edit/pattern-selection-modal.js +++ b/packages/block-library/src/query/edit/inspector-controls/pattern-selection.js @@ -3,7 +3,7 @@ */ import { useState, useMemo } from '@wordpress/element'; import { useDispatch } from '@wordpress/data'; -import { Modal, SearchControl } from '@wordpress/components'; +import { SearchControl } from '@wordpress/components'; import { BlockContextProvider, store as blockEditorStore, @@ -18,14 +18,10 @@ import { useBlockNameForPatterns, getTransformedBlocksFromPattern, usePatterns, -} from '../utils'; -import { searchPatterns } from '../../utils/search-patterns'; +} from '../../utils'; +import { searchPatterns } from '../../../utils/search-patterns'; -export default function PatternSelectionModal( { - clientId, - attributes, - setIsPatternSelectionModalOpen, -} ) { +function PatternSelectionList( { clientId, attributes } ) { const [ searchValue, setSearchValue ] = useState( '' ); const { replaceBlock, selectBlock } = useDispatch( blockEditorStore ); const onBlockPatternSelect = ( pattern, blocks ) => { @@ -56,29 +52,36 @@ export default function PatternSelectionModal( { }, [ blockPatterns, searchValue ] ); return ( - setIsPatternSelectionModalOpen( false ) } - isFullScreen - > -
-
- -
- - - +
+
+
- + + + +
+ ); +} + +export default function PatternSelection( { + clientId, + attributes, + shouldLoadPatterns, +} ) { + if ( ! shouldLoadPatterns ) { + return; + } + + return ( + ); } diff --git a/packages/block-library/src/query/edit/query-content.js b/packages/block-library/src/query/edit/query-content.js index 17eea9337823c5..391dba64ff3299 100644 --- a/packages/block-library/src/query/edit/query-content.js +++ b/packages/block-library/src/query/edit/query-content.js @@ -5,7 +5,6 @@ import { useSelect, useDispatch } from '@wordpress/data'; import { useInstanceId } from '@wordpress/compose'; import { useEffect, useCallback } from '@wordpress/element'; import { - BlockControls, InspectorControls, useBlockProps, store as blockEditorStore, @@ -19,7 +18,6 @@ import { store as coreStore } from '@wordpress/core-data'; * Internal dependencies */ import EnhancedPaginationControl from './inspector-controls/enhanced-pagination-control'; -import QueryToolbar from './query-toolbar'; import QueryInspectorControls from './inspector-controls'; import EnhancedPaginationModal from './enhanced-pagination-modal'; import { getQueryContextFromTemplate } from '../utils'; @@ -30,10 +28,9 @@ const TEMPLATE = [ [ 'core/post-template' ] ]; export default function QueryContent( { attributes, setAttributes, - openPatternSelectionModal, - name, clientId, context, + name, } ) { const { queryId, @@ -154,6 +151,7 @@ export default function QueryContent( { /> - - - - { hasPatterns && ( - - - { __( 'Replace' ) } - - - ) } - - ); -}