diff --git a/packages/dataviews/src/view-grid.js b/packages/dataviews/src/view-grid.js
index 14024163878d1d..44ab1822a60750 100644
--- a/packages/dataviews/src/view-grid.js
+++ b/packages/dataviews/src/view-grid.js
@@ -12,6 +12,7 @@ import {
__experimentalVStack as VStack,
Tooltip,
} from '@wordpress/components';
+import { __ } from '@wordpress/i18n';
import { useAsyncList } from '@wordpress/compose';
import { useState } from '@wordpress/element';
@@ -128,6 +129,7 @@ export default function ViewGrid( {
fields,
view,
actions,
+ isLoading,
getItemId,
deferredRendering,
selection,
@@ -148,29 +150,45 @@ export default function ViewGrid( {
);
const shownData = useAsyncList( data, { step: 3 } );
const usedData = deferredRendering ? shownData : data;
+ const hasData = !! usedData?.length;
return (
-
- { usedData.map( ( item ) => {
- return (
-
- );
- } ) }
-
+ <>
+ { hasData && (
+
+ { usedData.map( ( item ) => {
+ return (
+
+ );
+ } ) }
+
+ ) }
+ { ! hasData && (
+
+
{ isLoading ? __( 'Loading…' ) : __( 'No results' ) }
+
+ ) }
+ >
);
}
diff --git a/packages/edit-site/src/components/page-patterns/use-patterns.js b/packages/edit-site/src/components/page-patterns/use-patterns.js
index a0b82247c85a6d..b099b70b36fe1a 100644
--- a/packages/edit-site/src/components/page-patterns/use-patterns.js
+++ b/packages/edit-site/src/components/page-patterns/use-patterns.js
@@ -111,6 +111,7 @@ const selectTemplatePartsAsPatterns = createSelector(
const selectThemePatterns = createSelector(
( select ) => {
const { getSettings } = unlock( select( editSiteStore ) );
+ const { getIsResolving } = select( coreStore );
const settings = getSettings();
const blockPatterns =
settings.__experimentalAdditionalBlockPatterns ??
@@ -136,19 +137,23 @@ const selectThemePatterns = createSelector(
__unstableSkipMigrationLogs: true,
} ),
} ) );
-
- return { patterns, isResolving: false };
+ return { patterns, isResolving: getIsResolving( 'getBlockPatterns' ) };
},
( select ) => [
select( coreStore ).getBlockPatterns(),
+ select( coreStore ).getIsResolving( 'getBlockPatterns' ),
unlock( select( editSiteStore ) ).getSettings(),
]
);
const selectPatterns = createSelector(
( select, categoryId, syncStatus, search = '' ) => {
- const { patterns: themePatterns } = selectThemePatterns( select );
- const { patterns: userPatterns } = selectUserPatterns( select );
+ const {
+ patterns: themePatterns,
+ isResolving: isResolvingThemePatterns,
+ } = selectThemePatterns( select );
+ const { patterns: userPatterns, isResolving: isResolvingUserPatterns } =
+ selectUserPatterns( select );
let patterns = [
...( themePatterns || [] ),
@@ -176,7 +181,10 @@ const selectPatterns = createSelector(
hasCategory: ( item ) => ! item.hasOwnProperty( 'categories' ),
} );
}
- return { patterns, isResolving: false };
+ return {
+ patterns,
+ isResolving: isResolvingThemePatterns || isResolvingUserPatterns,
+ };
},
( select ) => [
selectThemePatterns( select ),