diff --git a/packages/block-editor/src/components/inserter/library.js b/packages/block-editor/src/components/inserter/library.js
index 7d462b343c310..a3a4e7feb42b3 100644
--- a/packages/block-editor/src/components/inserter/library.js
+++ b/packages/block-editor/src/components/inserter/library.js
@@ -21,6 +21,7 @@ function InserterLibrary(
showMostUsedBlocks = false,
__experimentalInsertionIndex,
__experimentalFilterValue,
+ __experimentalOnPatternCategorySelection,
onSelect = noop,
shouldFocusBlock = false,
},
@@ -48,6 +49,9 @@ function InserterLibrary(
showMostUsedBlocks={ showMostUsedBlocks }
__experimentalInsertionIndex={ __experimentalInsertionIndex }
__experimentalFilterValue={ __experimentalFilterValue }
+ __experimentalOnPatternCategorySelection={
+ __experimentalOnPatternCategorySelection
+ }
shouldFocusBlock={ shouldFocusBlock }
ref={ ref }
/>
diff --git a/packages/block-editor/src/components/inserter/menu.js b/packages/block-editor/src/components/inserter/menu.js
index 6a38e52cbffba..9e1322f0435fe 100644
--- a/packages/block-editor/src/components/inserter/menu.js
+++ b/packages/block-editor/src/components/inserter/menu.js
@@ -34,6 +34,7 @@ import useInsertionPoint from './hooks/use-insertion-point';
import InserterTabs from './tabs';
import { store as blockEditorStore } from '../../store';
+const NOOP = () => {};
function InserterMenu(
{
rootClientId,
@@ -45,6 +46,7 @@ function InserterMenu(
showMostUsedBlocks,
__experimentalFilterValue = '',
shouldFocusBlock = true,
+ __experimentalOnPatternCategorySelection = NOOP,
},
ref
) {
@@ -110,12 +112,17 @@ function InserterMenu(
[ onToggleInsertionPoint ]
);
+ const isZoomedOutViewExperimentEnabled =
+ window?.__experimentalEnableZoomedOutView;
const onClickPatternCategory = useCallback(
( patternCategory, filter ) => {
setSelectedPatternCategory( patternCategory );
setPatternFilter( filter );
+ if ( isZoomedOutViewExperimentEnabled ) {
+ __experimentalOnPatternCategorySelection();
+ }
},
- [ setSelectedPatternCategory ]
+ [ setSelectedPatternCategory, __experimentalOnPatternCategorySelection ]
);
const blocksTab = useMemo(
diff --git a/packages/edit-post/src/components/layout/index.js b/packages/edit-post/src/components/layout/index.js
index 27896946aad7c..903c6bde35dee 100644
--- a/packages/edit-post/src/components/layout/index.js
+++ b/packages/edit-post/src/components/layout/index.js
@@ -258,7 +258,12 @@ function Layout( { initialPost } ) {
const secondarySidebar = () => {
if ( mode === 'visual' && isInserterOpened ) {
- return ;
+ return (
+
+ );
}
if ( mode === 'visual' && isListViewOpened ) {
return ;
diff --git a/packages/edit-site/src/components/editor/index.js b/packages/edit-site/src/components/editor/index.js
index c934aa7cf0812..ef5147c35858f 100644
--- a/packages/edit-site/src/components/editor/index.js
+++ b/packages/edit-site/src/components/editor/index.js
@@ -6,7 +6,7 @@ import classnames from 'classnames';
/**
* WordPress dependencies
*/
-import { useSelect } from '@wordpress/data';
+import { useDispatch, useSelect } from '@wordpress/data';
import { Notice } from '@wordpress/components';
import { useInstanceId, useViewportMatch } from '@wordpress/compose';
import { store as preferencesStore } from '@wordpress/preferences';
@@ -174,6 +174,8 @@ export default function Editor( { isLoading, onClick } ) {
'edit-site-editor__loading-progress'
);
+ const { closeGeneralSidebar } = useDispatch( editSiteStore );
+
const settings = useSpecificEditorSettings();
const isReady =
! isLoading &&
@@ -243,7 +245,12 @@ export default function Editor( { isLoading, onClick } ) {
}
secondarySidebar={
isEditMode &&
- ( ( shouldShowInserter && ) ||
+ ( ( shouldShowInserter && (
+
+ ) ) ||
( shouldShowListView && ) )
}
sidebar={
diff --git a/packages/editor/src/components/inserter-sidebar/index.js b/packages/editor/src/components/inserter-sidebar/index.js
index 7db4335309935..e2e84c2f8185c 100644
--- a/packages/editor/src/components/inserter-sidebar/index.js
+++ b/packages/editor/src/components/inserter-sidebar/index.js
@@ -19,7 +19,10 @@ import { store as preferencesStore } from '@wordpress/preferences';
import { unlock } from '../../lock-unlock';
import { store as editorStore } from '../../store';
-export default function InserterSidebar() {
+export default function InserterSidebar( {
+ closeGeneralSidebar,
+ isRightSidebarOpen,
+} ) {
const { insertionPoint, showMostUsedBlocks } = useSelect( ( select ) => {
const { getInsertionPoint } = unlock( select( editorStore ) );
const { get } = select( preferencesStore );
@@ -65,6 +68,9 @@ export default function InserterSidebar() {
insertionPoint.insertionIndex
}
__experimentalFilterValue={ insertionPoint.filterValue }
+ __experimentalOnPatternCategorySelection={
+ isRightSidebarOpen ? closeGeneralSidebar : undefined
+ }
ref={ libraryRef }
/>