diff --git a/packages/ripple-tide-api/src/services/tide-page.ts b/packages/ripple-tide-api/src/services/tide-page.ts index 3f41a95ddc..0d36d86424 100644 --- a/packages/ripple-tide-api/src/services/tide-page.ts +++ b/packages/ripple-tide-api/src/services/tide-page.ts @@ -72,7 +72,7 @@ export default class TidePageApi extends TideApiBase { ...data }) } else if (typeof componentMapping === 'function') { - const data = componentMapping.apply(this, [cmpData, pageData]) + const data = componentMapping.apply(this, [cmpData, pageData, this]) mappedComponents.push({ uuid: cmpData.uuid || cmpData.id, ...data diff --git a/packages/ripple-tide-landing-page/mapping/components/content-collection/content-collection-mapping.test.ts b/packages/ripple-tide-landing-page/mapping/components/content-collection/content-collection-mapping.test.ts index 11311d2675..86417ba8c9 100644 --- a/packages/ripple-tide-landing-page/mapping/components/content-collection/content-collection-mapping.test.ts +++ b/packages/ripple-tide-landing-page/mapping/components/content-collection/content-collection-mapping.test.ts @@ -25,9 +25,14 @@ describe('contentCollectionMapping', () => { values: ['landing_page', 'news'] }, { - type: 'all', + type: 'any', field: 'field_topic', values: [8941, 8940] + }, + { + type: 'any', + field: 'field_node_site', + values: ['8888'] } ], sortBy: [ @@ -48,6 +53,8 @@ describe('contentCollectionMapping', () => { } } - expect(contentCollectionMapping(rawData)).toEqual(result) + expect(contentCollectionMapping(rawData, {}, { site: '8888' })).toEqual( + result + ) }) }) diff --git a/packages/ripple-tide-landing-page/mapping/components/content-collection/content-collection-mapping.ts b/packages/ripple-tide-landing-page/mapping/components/content-collection/content-collection-mapping.ts index 71f437e8f7..6292b9e1c4 100644 --- a/packages/ripple-tide-landing-page/mapping/components/content-collection/content-collection-mapping.ts +++ b/packages/ripple-tide-landing-page/mapping/components/content-collection/content-collection-mapping.ts @@ -49,7 +49,8 @@ export interface ITideContentCollectionConfig { } const getContentCollectionFiltersFromConfig = ( - config: ITideContentCollectionConfig + config: ITideContentCollectionConfig, + siteId?: string ): IContentCollectionFilter[] => { const filters = [] if (config.internal?.contentTypes) { @@ -61,20 +62,23 @@ const getContentCollectionFiltersFromConfig = ( } if (config.internal?.contentFields) { const contentFieldFilters = Object.keys(config.internal?.contentFields).map( - (field) => { - const type = - config.internal?.contentFields[field].operator === 'OR' - ? 'any' - : 'all' - return { - type, - field, - values: config.internal?.contentFields[field].values - } - } + (field) => ({ + field, + type: 'any', + values: config.internal?.contentFields[field].values + }) ) filters.push(...contentFieldFilters) } + + if (siteId) { + filters.push({ + type: 'any', + field: 'field_node_site', + values: [siteId] + }) + } + return filters } @@ -97,7 +101,9 @@ const getContentCollectionSortBy = (config) => { } export const contentCollectionMapping = ( - field + field, + pageData, + TidePageApi ): TideDynamicPageComponent => { return { component: 'TideLandingPageContentCollection', @@ -110,7 +116,8 @@ export const contentCollectionMapping = ( 'callToAction' ]), filters: getContentCollectionFiltersFromConfig( - field.field_content_collection_config + field.field_content_collection_config, + TidePageApi?.site ), sortBy: getContentCollectionSortBy(field.field_content_collection_config), perPage: getField(