diff --git a/src/customizations/volto/components/manage/Blocks/Listing/ListingBody.jsx b/src/customizations/volto/components/manage/Blocks/Listing/ListingBody.jsx index 01a6d4b70..ff7327351 100644 --- a/src/customizations/volto/components/manage/Blocks/Listing/ListingBody.jsx +++ b/src/customizations/volto/components/manage/Blocks/Listing/ListingBody.jsx @@ -84,6 +84,7 @@ const ListingBody = React.memo( return (
+ {props.id} {loadingQuery && (
diff --git a/src/customizations/volto/components/manage/Blocks/Listing/withQuerystringResults.jsx b/src/customizations/volto/components/manage/Blocks/Listing/withQuerystringResults.jsx index 50e0101b4..e2a1af00b 100644 --- a/src/customizations/volto/components/manage/Blocks/Listing/withQuerystringResults.jsx +++ b/src/customizations/volto/components/manage/Blocks/Listing/withQuerystringResults.jsx @@ -5,7 +5,7 @@ CUSTOMIZATIONS: - added additional filters - added additional fields to pass to @querystring-search (config.settings.querystringAdditionalFields) - used [subrequestID] instead [subrequestID] of block, as id of subrequest to avoid block unload on duplicate contents with blocks with same id's -*/ +- use content['@id'] instead properties['@id'] because in megamenu properties is not always populated*/ import React, { createRef, useEffect } from 'react'; import hoistNonReactStatics from 'hoist-non-react-statics'; import { getContent, getQueryStringResults } from '@plone/volto/actions'; @@ -67,7 +67,7 @@ export default function withQuerystringResults(WrappedComponent) { const content = useSelector((state) => state.content.data); const { settings } = config; const querystring = data.querystring || data; // For backwards compat with data saved before Blocks schema - const subrequestID = content.UID + '-' + id; + const subrequestID = content?.UID + '-' + id; const { b_size = settings.defaultPageSize } = querystring; const [firstLoading, setFirstLoading] = React.useState(true); // save the path so it won't trigger dispatch on eager router location change @@ -83,7 +83,7 @@ export default function withQuerystringResults(WrappedComponent) { const [additionalFilters, setAdditionalFilters] = React.useState([]); const originalQuery = useSelector((state) => { - return state.originalQuery?.[properties['@id']]?.[ + return state.originalQuery?.[content['@id'] || properties['@id']]?.[ subrequestID ]?.toArray?.(); }); @@ -150,13 +150,13 @@ export default function withQuerystringResults(WrappedComponent) { useEffect(() => { if ( !originalQuery && - properties['@id'] && + content['@id'] && data.block && querystring.query?.length > 0 ) { dispatch( setOriginalQuery( - properties['@id'], + content['@id'], data.block, JSON.parse(JSON.stringify(querystring.query)), ), @@ -167,7 +167,7 @@ export default function withQuerystringResults(WrappedComponent) { setFirstLoading(false); } // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); + }, [content]); useDeepCompareEffect(() => { if ( @@ -178,7 +178,7 @@ export default function withQuerystringResults(WrappedComponent) { doSearch(data); } /* eslint-disable react-hooks/exhaustive-deps */ - }, [data]); + }, [data, content]); const doSearch = (data = { querystring: { query: [] } }, page = 1) => { let _dataQuerystring = data?.querystring ?? data; //Backward compatibility before blockSchema