From 40bbc46612b3eb611d68849f328826c7c0fd461a Mon Sep 17 00:00:00 2001 From: ntsekouras Date: Fri, 10 May 2024 09:30:55 +0300 Subject: [PATCH] Only add the selected pattern category in metadata during insertion --- .../block-patterns-explorer/pattern-list.js | 3 ++- .../pattern-category-previews.js | 3 ++- .../inserter/hooks/use-patterns-state.js | 22 ++++++++++++++----- 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/packages/block-editor/src/components/inserter/block-patterns-explorer/pattern-list.js b/packages/block-editor/src/components/inserter/block-patterns-explorer/pattern-list.js index a5e43c2c6bf870..d1021b639a5c57 100644 --- a/packages/block-editor/src/components/inserter/block-patterns-explorer/pattern-list.js +++ b/packages/block-editor/src/components/inserter/block-patterns-explorer/pattern-list.js @@ -61,7 +61,8 @@ function PatternList( { } ); const [ patterns, , onClickPattern ] = usePatternsState( onInsertBlocks, - destinationRootClientId + destinationRootClientId, + selectedCategory ); const registeredPatternCategories = useMemo( diff --git a/packages/block-editor/src/components/inserter/block-patterns-tab/pattern-category-previews.js b/packages/block-editor/src/components/inserter/block-patterns-tab/pattern-category-previews.js index 8a4bedbb4a5fc6..9ee57ed7950a83 100644 --- a/packages/block-editor/src/components/inserter/block-patterns-tab/pattern-category-previews.js +++ b/packages/block-editor/src/components/inserter/block-patterns-tab/pattern-category-previews.js @@ -44,7 +44,8 @@ export function PatternCategoryPreviews( { } ) { const [ allPatterns, , onClickPattern ] = usePatternsState( onInsert, - rootClientId + rootClientId, + category?.name ); const [ patternSyncFilter, setPatternSyncFilter ] = useState( 'all' ); const [ patternSourceFilter, setPatternSourceFilter ] = useState( 'all' ); diff --git a/packages/block-editor/src/components/inserter/hooks/use-patterns-state.js b/packages/block-editor/src/components/inserter/hooks/use-patterns-state.js index b5c8c8551b1118..d4640947ce94be 100644 --- a/packages/block-editor/src/components/inserter/hooks/use-patterns-state.js +++ b/packages/block-editor/src/components/inserter/hooks/use-patterns-state.js @@ -16,12 +16,13 @@ import { INSERTER_PATTERN_TYPES } from '../block-patterns-tab/utils'; /** * Retrieves the block patterns inserter state. * - * @param {Function} onInsert function called when inserter a list of blocks. - * @param {string=} rootClientId Insertion's root client ID. + * @param {Function} onInsert function called when inserter a list of blocks. + * @param {string=} rootClientId Insertion's root client ID. * + * @param {string} selectedCategory The selected pattern category. * @return {Array} Returns the patterns state. (patterns, categories, onSelect handler) */ -const usePatternsState = ( onInsert, rootClientId ) => { +const usePatternsState = ( onInsert, rootClientId, selectedCategory ) => { const { patternCategories, patterns, userPatternCategories } = useSelect( ( select ) => { const { __experimentalGetAllowedPatterns, getSettings } = @@ -63,7 +64,18 @@ const usePatternsState = ( onInsert, rootClientId ) => { ? [ createBlock( 'core/block', { ref: pattern.id } ) ] : blocks; onInsert( - ( patternBlocks ?? [] ).map( ( block ) => cloneBlock( block ) ), + ( patternBlocks ?? [] ).map( ( block ) => { + const clonedBlock = cloneBlock( block ); + if ( + selectedCategory && + clonedBlock.attributes.metadata?.categories + ) { + clonedBlock.attributes.metadata.categories = [ + selectedCategory, + ]; + } + return clonedBlock; + } ), pattern.name ); createSuccessNotice( @@ -78,7 +90,7 @@ const usePatternsState = ( onInsert, rootClientId ) => { } ); }, - [ createSuccessNotice, onInsert ] + [ createSuccessNotice, onInsert, selectedCategory ] ); return [ patterns, allCategories, onClickPattern ];