diff --git a/packages/visual-editor/locales/platform/cs/visual-editor.json b/packages/visual-editor/locales/platform/cs/visual-editor.json index ece5bdd76..bd4e42507 100644 --- a/packages/visual-editor/locales/platform/cs/visual-editor.json +++ b/packages/visual-editor/locales/platform/cs/visual-editor.json @@ -344,7 +344,7 @@ "inheritedDataMsg": "Data jsou zděděna z nadřazené části.", "insight": "Vhled", "item": "Položka", - "itemSourceParentFieldTooltip": "Prvky seznamu musí být schopny splnit požadavky na mapování:", + "itemSourceParentFieldTooltip": "Prvky seznamu by měly být schopny splnit požadavky na mapování:", "kilometer_zero": "kilometr", "kilometer_one": "kilometr", "kilometer_few": "kilometry", diff --git a/packages/visual-editor/locales/platform/da/visual-editor.json b/packages/visual-editor/locales/platform/da/visual-editor.json index 7561df742..ee3db6938 100644 --- a/packages/visual-editor/locales/platform/da/visual-editor.json +++ b/packages/visual-editor/locales/platform/da/visual-editor.json @@ -344,7 +344,7 @@ "inheritedDataMsg": "Data er arvet fra overordnede sektion.", "insight": "Indsigt", "item": "Punkt", - "itemSourceParentFieldTooltip": "Listeelementer skal kunne opfylde kortlægningskravene:", + "itemSourceParentFieldTooltip": "Listeelementer bør kunne opfylde kortlægningskravene:", "kilometer_zero": "kilometer", "kilometer_one": "kilometer", "kilometer_other": "kilometer", diff --git a/packages/visual-editor/locales/platform/de/visual-editor.json b/packages/visual-editor/locales/platform/de/visual-editor.json index d7434b205..6670e3f1b 100644 --- a/packages/visual-editor/locales/platform/de/visual-editor.json +++ b/packages/visual-editor/locales/platform/de/visual-editor.json @@ -344,7 +344,7 @@ "inheritedDataMsg": "Daten werden vom übergeordneten Modul übernommen.", "insight": "Insight", "item": "Artikel", - "itemSourceParentFieldTooltip": "Listenelemente müssen die Mapping-Anforderungen erfüllen können:", + "itemSourceParentFieldTooltip": "Listenelemente sollten die Mapping-Anforderungen erfüllen können:", "kilometer_zero": "Kilometer", "kilometer_one": "Kilometer", "kilometer_other": "Kilometer", diff --git a/packages/visual-editor/locales/platform/en-GB/visual-editor.json b/packages/visual-editor/locales/platform/en-GB/visual-editor.json index 5e67de69e..451181a75 100644 --- a/packages/visual-editor/locales/platform/en-GB/visual-editor.json +++ b/packages/visual-editor/locales/platform/en-GB/visual-editor.json @@ -344,7 +344,7 @@ "inheritedDataMsg": "Data is inherited from the parent section.", "insight": "Insight", "item": "Item", - "itemSourceParentFieldTooltip": "List elements must be able to satisfy the mapping requirements:", + "itemSourceParentFieldTooltip": "List elements should be able to satisfy the mapping requirements:", "kilometer_zero": "kilometres", "kilometer_one": "kilometre", "kilometer_other": "kilometres", diff --git a/packages/visual-editor/locales/platform/en/visual-editor.json b/packages/visual-editor/locales/platform/en/visual-editor.json index 3d45b7ec6..52f575f82 100644 --- a/packages/visual-editor/locales/platform/en/visual-editor.json +++ b/packages/visual-editor/locales/platform/en/visual-editor.json @@ -344,7 +344,7 @@ "inheritedDataMsg": "Data is inherited from the parent section.", "insight": "Insight", "item": "Item", - "itemSourceParentFieldTooltip": "List elements must be able to satisfy the mapping requirements:", + "itemSourceParentFieldTooltip": "List elements should be able to satisfy the mapping requirements:", "kilometer_zero": "kilometers", "kilometer_one": "kilometer", "kilometer_other": "kilometers", diff --git a/packages/visual-editor/locales/platform/es/visual-editor.json b/packages/visual-editor/locales/platform/es/visual-editor.json index f870a7fe3..7d9a7cc96 100644 --- a/packages/visual-editor/locales/platform/es/visual-editor.json +++ b/packages/visual-editor/locales/platform/es/visual-editor.json @@ -344,7 +344,7 @@ "inheritedDataMsg": "Los datos se heredan de la sección principal.", "insight": "Conocimiento", "item": "Artículo", - "itemSourceParentFieldTooltip": "Los elementos de la lista deben poder satisfacer los requisitos de mapeo:", + "itemSourceParentFieldTooltip": "Los elementos de la lista deberían poder satisfacer los requisitos de mapeo:", "kilometer_zero": "kilómetro", "kilometer_one": "kilómetro", "kilometer_many": "kilómetros", diff --git a/packages/visual-editor/locales/platform/et/visual-editor.json b/packages/visual-editor/locales/platform/et/visual-editor.json index e2afbd836..359d0ab3d 100644 --- a/packages/visual-editor/locales/platform/et/visual-editor.json +++ b/packages/visual-editor/locales/platform/et/visual-editor.json @@ -344,7 +344,7 @@ "inheritedDataMsg": "Andmed päritakse emasektsioonist.", "insight": "Ülevaade", "item": "Üksus", - "itemSourceParentFieldTooltip": "Loendi elemendid peavad vastama kaardistamise nõuetele:", + "itemSourceParentFieldTooltip": "Loendi elemendid peaksid suutma täita kaardistamise nõudeid:", "kilometer_zero": "kilomeetrit", "kilometer_one": "kilomeeter", "kilometer_other": "kilomeetrit", diff --git a/packages/visual-editor/locales/platform/fi/visual-editor.json b/packages/visual-editor/locales/platform/fi/visual-editor.json index bc1d9a68f..9e5b09f8d 100644 --- a/packages/visual-editor/locales/platform/fi/visual-editor.json +++ b/packages/visual-editor/locales/platform/fi/visual-editor.json @@ -344,7 +344,7 @@ "inheritedDataMsg": "Tiedot peritään yläosasta.", "insight": "Oivallus", "item": "Tuote", - "itemSourceParentFieldTooltip": "Luettelon elementtien on täytettävä kartoitusvaatimukset:", + "itemSourceParentFieldTooltip": "Luettelon elementtien pitäisi pystyä täyttämään kartoitusvaatimukset:", "kilometer_zero": "kilometri", "kilometer_one": "kilometri", "kilometer_other": "kilometriä", diff --git a/packages/visual-editor/locales/platform/fr/visual-editor.json b/packages/visual-editor/locales/platform/fr/visual-editor.json index df62fad65..cc8496631 100644 --- a/packages/visual-editor/locales/platform/fr/visual-editor.json +++ b/packages/visual-editor/locales/platform/fr/visual-editor.json @@ -344,7 +344,7 @@ "inheritedDataMsg": "Les données sont héritées de la section parent.", "insight": "Aperçu", "item": "Article", - "itemSourceParentFieldTooltip": "Les éléments de liste doivent être capables de satisfaire aux exigences de mappage :", + "itemSourceParentFieldTooltip": "Les éléments de liste devraient pouvoir satisfaire aux exigences de mappage :", "kilometer_zero": "kilomètre", "kilometer_one": "kilomètre", "kilometer_many": "kilomètres", diff --git a/packages/visual-editor/locales/platform/hr/visual-editor.json b/packages/visual-editor/locales/platform/hr/visual-editor.json index 3f65cb692..991af9adb 100644 --- a/packages/visual-editor/locales/platform/hr/visual-editor.json +++ b/packages/visual-editor/locales/platform/hr/visual-editor.json @@ -344,7 +344,7 @@ "inheritedDataMsg": "Podaci se nasljeđuju iz nadređenog odjeljka.", "insight": "Uvid", "item": "Artikal", - "itemSourceParentFieldTooltip": "Elementi popisa moraju moći zadovoljiti zahtjeve mapiranja:", + "itemSourceParentFieldTooltip": "Elementi popisa trebali bi moći zadovoljiti zahtjeve mapiranja:", "kilometer_zero": "kilometar", "kilometer_one": "kilometar", "kilometer_few": "kilometra", diff --git a/packages/visual-editor/locales/platform/hu/visual-editor.json b/packages/visual-editor/locales/platform/hu/visual-editor.json index 19d065a73..cbbc020e8 100644 --- a/packages/visual-editor/locales/platform/hu/visual-editor.json +++ b/packages/visual-editor/locales/platform/hu/visual-editor.json @@ -344,7 +344,7 @@ "inheritedDataMsg": "Az adatok a szülő szakaszból származnak.", "insight": "Betekintés", "item": "Tétel", - "itemSourceParentFieldTooltip": "A listaelemeknek meg kell felelniük a leképezési követelményeknek:", + "itemSourceParentFieldTooltip": "A listaelemeknek képesnek kellene lenniük megfelelni a leképezési követelményeknek:", "kilometer_zero": "kilométer", "kilometer_one": "kilométer", "kilometer_other": "kilométer", diff --git a/packages/visual-editor/locales/platform/it/visual-editor.json b/packages/visual-editor/locales/platform/it/visual-editor.json index 5bf0e0ce3..843c93c7e 100644 --- a/packages/visual-editor/locales/platform/it/visual-editor.json +++ b/packages/visual-editor/locales/platform/it/visual-editor.json @@ -344,7 +344,7 @@ "inheritedDataMsg": "I dati vengono ereditati dalla sezione principale.", "insight": "Intuizione", "item": "Articolo", - "itemSourceParentFieldTooltip": "Gli elementi dell'elenco devono essere in grado di soddisfare i requisiti di mappatura:", + "itemSourceParentFieldTooltip": "Gli elementi dell'elenco dovrebbero essere in grado di soddisfare i requisiti di mappatura:", "kilometer_zero": "chilometri", "kilometer_one": "chilometro", "kilometer_many": "chilometri", diff --git a/packages/visual-editor/locales/platform/ja/visual-editor.json b/packages/visual-editor/locales/platform/ja/visual-editor.json index ba3b72d4a..d4c2b0ec7 100644 --- a/packages/visual-editor/locales/platform/ja/visual-editor.json +++ b/packages/visual-editor/locales/platform/ja/visual-editor.json @@ -344,7 +344,7 @@ "inheritedDataMsg": "データは親セクションから継承されます。", "insight": "洞察力", "item": "アイテム", - "itemSourceParentFieldTooltip": "リスト要素は、次のマッピング要件を満たすことができる必要があります。", + "itemSourceParentFieldTooltip": "リスト要素は、次のマッピング要件を満たせることが望まれます。", "kilometer_zero": "キロメートル", "kilometer_one": "キロメートル", "kilometer_other": "キロメートル", diff --git a/packages/visual-editor/locales/platform/lt/visual-editor.json b/packages/visual-editor/locales/platform/lt/visual-editor.json index aec788f58..13179b1a7 100644 --- a/packages/visual-editor/locales/platform/lt/visual-editor.json +++ b/packages/visual-editor/locales/platform/lt/visual-editor.json @@ -344,7 +344,7 @@ "inheritedDataMsg": "Duomenys paveldimi iš pirminės sekcijos.", "insight": "Įžvalga", "item": "Prekė", - "itemSourceParentFieldTooltip": "Sąrašo elementai turi atitikti atvaizdavimo reikalavimus:", + "itemSourceParentFieldTooltip": "Sąrašo elementai turėtų gebėti atitikti atvaizdavimo reikalavimus:", "kilometer_zero": "kilometrų", "kilometer_one": "kilometras", "kilometer_few": "kilometrų", diff --git a/packages/visual-editor/locales/platform/lv/visual-editor.json b/packages/visual-editor/locales/platform/lv/visual-editor.json index 3ccd1443c..2e9a3abc3 100644 --- a/packages/visual-editor/locales/platform/lv/visual-editor.json +++ b/packages/visual-editor/locales/platform/lv/visual-editor.json @@ -344,7 +344,7 @@ "inheritedDataMsg": "Dati tiek mantoti no vecāku sadaļas.", "insight": "Ieskats", "item": "Vienums", - "itemSourceParentFieldTooltip": "Saraksta elementiem jāatbilst kartēšanas prasībām:", + "itemSourceParentFieldTooltip": "Saraksta elementiem vajadzētu spēt izpildīt kartēšanas prasības:", "kilometer_zero": "kilometri", "kilometer_one": "kilometrs", "kilometer_other": "kilometri", diff --git a/packages/visual-editor/locales/platform/nb/visual-editor.json b/packages/visual-editor/locales/platform/nb/visual-editor.json index d3df70075..4bb47009b 100644 --- a/packages/visual-editor/locales/platform/nb/visual-editor.json +++ b/packages/visual-editor/locales/platform/nb/visual-editor.json @@ -344,7 +344,7 @@ "inheritedDataMsg": "Data arves fra den overordnede delen.", "insight": "Innsikt", "item": "Punkt", - "itemSourceParentFieldTooltip": "Listeelementer må kunne tilfredsstille kartleggingskravene:", + "itemSourceParentFieldTooltip": "Listeelementer bør kunne tilfredsstille kartleggingskravene:", "kilometer_zero": "kilometer", "kilometer_one": "kilometer", "kilometer_other": "kilometer", diff --git a/packages/visual-editor/locales/platform/nl/visual-editor.json b/packages/visual-editor/locales/platform/nl/visual-editor.json index b3e1d0af0..558b5f7bb 100644 --- a/packages/visual-editor/locales/platform/nl/visual-editor.json +++ b/packages/visual-editor/locales/platform/nl/visual-editor.json @@ -344,7 +344,7 @@ "inheritedDataMsg": "Gegevens worden overgenomen van de bovenliggende sectie.", "insight": "Inzicht", "item": "Item", - "itemSourceParentFieldTooltip": "Lijstelementen moeten aan de mappingvereisten kunnen voldoen:", + "itemSourceParentFieldTooltip": "Lijstelementen zouden aan de mappingvereisten moeten kunnen voldoen:", "kilometer_zero": "kilometer", "kilometer_one": "kilometer", "kilometer_other": "kilometers", diff --git a/packages/visual-editor/locales/platform/pl/visual-editor.json b/packages/visual-editor/locales/platform/pl/visual-editor.json index 430f6de06..479bd0dff 100644 --- a/packages/visual-editor/locales/platform/pl/visual-editor.json +++ b/packages/visual-editor/locales/platform/pl/visual-editor.json @@ -344,7 +344,7 @@ "inheritedDataMsg": "Dane są dziedziczone z sekcji nadrzędnej.", "insight": "Wgląd", "item": "Przedmiot", - "itemSourceParentFieldTooltip": "Elementy listy muszą spełniać wymagania mapowania:", + "itemSourceParentFieldTooltip": "Elementy listy powinny być w stanie spełnić wymagania mapowania:", "kilometer_zero": "kilometr", "kilometer_one": "kilometr", "kilometer_few": "kilometry", diff --git a/packages/visual-editor/locales/platform/pt/visual-editor.json b/packages/visual-editor/locales/platform/pt/visual-editor.json index 4553ed19e..58af1e4f1 100644 --- a/packages/visual-editor/locales/platform/pt/visual-editor.json +++ b/packages/visual-editor/locales/platform/pt/visual-editor.json @@ -344,7 +344,7 @@ "inheritedDataMsg": "Os dados são herdados da seção pai.", "insight": "Entendimento", "item": "Item", - "itemSourceParentFieldTooltip": "Os elementos da lista devem ser capazes de satisfazer os requisitos de mapeamento:", + "itemSourceParentFieldTooltip": "Os elementos da lista deveriam ser capazes de satisfazer os requisitos de mapeamento:", "kilometer_zero": "quilômetro", "kilometer_one": "quilômetro", "kilometer_many": "quilômetros", diff --git a/packages/visual-editor/locales/platform/ro/visual-editor.json b/packages/visual-editor/locales/platform/ro/visual-editor.json index 9ac569105..71c18eb8d 100644 --- a/packages/visual-editor/locales/platform/ro/visual-editor.json +++ b/packages/visual-editor/locales/platform/ro/visual-editor.json @@ -344,7 +344,7 @@ "inheritedDataMsg": "Datele sunt moștenite din secțiunea părinte.", "insight": "Perspectivă", "item": "Articol", - "itemSourceParentFieldTooltip": "Elementele listei trebuie să fie capabile să satisfacă cerințele de mapare:", + "itemSourceParentFieldTooltip": "Elementele listei ar trebui să poată satisface cerințele de mapare:", "kilometer_zero": "kilometru", "kilometer_one": "kilometru", "kilometer_few": "kilometri", diff --git a/packages/visual-editor/locales/platform/sk/visual-editor.json b/packages/visual-editor/locales/platform/sk/visual-editor.json index 61c93ed02..53a5286b3 100644 --- a/packages/visual-editor/locales/platform/sk/visual-editor.json +++ b/packages/visual-editor/locales/platform/sk/visual-editor.json @@ -344,7 +344,7 @@ "inheritedDataMsg": "Údaje sa dedia z nadradenej sekcie.", "insight": "Nahliadnutie", "item": "Položka", - "itemSourceParentFieldTooltip": "Prvky zoznamu musia spĺňať požiadavky na mapovanie:", + "itemSourceParentFieldTooltip": "Prvky zoznamu by mali byť schopné splniť požiadavky na mapovanie:", "kilometer_zero": "kilometer", "kilometer_one": "kilometer", "kilometer_few": "kilometre", diff --git a/packages/visual-editor/locales/platform/sv/visual-editor.json b/packages/visual-editor/locales/platform/sv/visual-editor.json index e1fd1a3c9..2abed2ece 100644 --- a/packages/visual-editor/locales/platform/sv/visual-editor.json +++ b/packages/visual-editor/locales/platform/sv/visual-editor.json @@ -344,7 +344,7 @@ "inheritedDataMsg": "Data ärvs från den överordnade sektionen.", "insight": "Insikt", "item": "Punkt", - "itemSourceParentFieldTooltip": "Listelement måste kunna uppfylla mappningskraven:", + "itemSourceParentFieldTooltip": "Listelement bör kunna uppfylla mappningskraven:", "kilometer_zero": "kilometer", "kilometer_one": "kilometer", "kilometer_other": "kilometer", diff --git a/packages/visual-editor/locales/platform/zh-TW/visual-editor.json b/packages/visual-editor/locales/platform/zh-TW/visual-editor.json index 091828767..e7ecb72d0 100644 --- a/packages/visual-editor/locales/platform/zh-TW/visual-editor.json +++ b/packages/visual-editor/locales/platform/zh-TW/visual-editor.json @@ -344,7 +344,7 @@ "inheritedDataMsg": "數據是從父節繼承的。", "insight": "洞察力", "item": "物品", - "itemSourceParentFieldTooltip": "列表元素必須能夠滿足映射要求:", + "itemSourceParentFieldTooltip": "列表元素應能滿足映射要求:", "kilometer_zero": "公里", "kilometer_one": "公里", "kilometer_other": "公里", diff --git a/packages/visual-editor/locales/platform/zh/visual-editor.json b/packages/visual-editor/locales/platform/zh/visual-editor.json index 1f054d09f..2504e7af0 100644 --- a/packages/visual-editor/locales/platform/zh/visual-editor.json +++ b/packages/visual-editor/locales/platform/zh/visual-editor.json @@ -344,7 +344,7 @@ "inheritedDataMsg": "数据是从父节继承的。", "insight": "洞察力", "item": "物品", - "itemSourceParentFieldTooltip": "列表元素必须能够满足映射要求:", + "itemSourceParentFieldTooltip": "列表元素应能满足映射要求:", "kilometer_zero": "公里", "kilometer_one": "公里", "kilometer_other": "公里", diff --git a/packages/visual-editor/src/editor/yextEntityFieldUtils.test.ts b/packages/visual-editor/src/editor/yextEntityFieldUtils.test.ts index 5699749e0..fb9428f3f 100644 --- a/packages/visual-editor/src/editor/yextEntityFieldUtils.test.ts +++ b/packages/visual-editor/src/editor/yextEntityFieldUtils.test.ts @@ -228,3 +228,89 @@ describe("getEntityFieldDisplayName", () => { ).toBe("c_linkedEntity"); }); }); + +describe("item-source parent selection", () => { + it("allows item sources when any descendant type matches", () => { + const fields = getFieldsForSelector( + { + fields: [ + { + name: "c_articles", + definition: { + name: "c_articles", + typeName: "c_articles", + isList: true, + type: {}, + }, + children: { + fields: [ + { + name: "title", + definition: { + name: "title", + typeName: "type.string", + type: {}, + }, + }, + ], + }, + }, + ], + displayNames: { + c_articles: "Articles", + "c_articles.title": "Articles > Title", + }, + }, + { + itemSourceTypes: [["type.image"], ["type.rich_text_v2"]], + } + ); + + expect(fields).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + name: "c_articles", + }), + ]) + ); + }); + + it("hides item sources when no descendant types match", () => { + const fields = getFieldsForSelector( + { + fields: [ + { + name: "c_articles", + definition: { + name: "c_articles", + typeName: "c_articles", + isList: true, + type: {}, + }, + children: { + fields: [ + { + name: "title", + definition: { + name: "title", + typeName: "type.string", + type: {}, + }, + }, + ], + }, + }, + ], + displayNames: { + c_articles: "Articles", + "c_articles.title": "Articles > Title", + }, + }, + { + itemSourceTypes: [["type.image"], ["type.cta"]], + } + ); + + expect(fields).toEqual([]); + }); +}); diff --git a/packages/visual-editor/src/editor/yextEntityFieldUtils.ts b/packages/visual-editor/src/editor/yextEntityFieldUtils.ts index 35cadf934..39de8d6c1 100644 --- a/packages/visual-editor/src/editor/yextEntityFieldUtils.ts +++ b/packages/visual-editor/src/editor/yextEntityFieldUtils.ts @@ -1,4 +1,5 @@ import { + type EntityFieldTypes, getFilteredEntityFields, getCompatibleEntityFieldTypes, RenderEntityFieldFilter, @@ -317,7 +318,8 @@ const getScopedFieldsForSelector = ( * 1. Scope to a selected source item when `sourceField` is provided. * 2. For item-source and mapped-source pickers, restrict roots to fields that * can satisfy the required descendant type sets. `itemSourceTypes` takes - * precedence over `mappedSourceTypes` when both are present. + * precedence over `mappedSourceTypes` when both are present and requires only + * one matching group; mapped-source pickers require every group. * 3. Filter incompatible resolved values out when a stream document is * available. * 4. Fall back to normal entity-field filtering for standard field selectors. @@ -347,7 +349,7 @@ export const getFieldsForSelector = ( } ); - return requiredDescendantTypes.every((requiredTypes) => + const matchesRequiredTypes = (requiredTypes: EntityFieldTypes[]): boolean => availableFields.some( (availableField) => getFilteredEntityFields( @@ -357,8 +359,12 @@ export const getFieldsForSelector = ( types: requiredTypes.flatMap(getCompatibleEntityFieldTypes), } ).length > 0 - ) - ); + ); + + // One descendant match is enough for item-source selection. + return filter.itemSourceTypes?.length + ? requiredDescendantTypes.some(matchesRequiredTypes) + : requiredDescendantTypes.every(matchesRequiredTypes); }; if (filter.itemSourceTypes?.length) { diff --git a/packages/visual-editor/src/fields/EntityFieldSelectorField.test.tsx b/packages/visual-editor/src/fields/EntityFieldSelectorField.test.tsx index 318d60112..3b41be4ef 100644 --- a/packages/visual-editor/src/fields/EntityFieldSelectorField.test.tsx +++ b/packages/visual-editor/src/fields/EntityFieldSelectorField.test.tsx @@ -658,7 +658,7 @@ describe("EntityFieldSelectorField", () => { expect(tooltip).toBeDefined(); expect( within(tooltip).getByText( - "List elements must be able to satisfy the mapping requirements:" + "List elements should be able to satisfy the mapping requirements:" ) ).toBeDefined(); expect(within(tooltip).getByText("rich_text_v2")).toBeDefined(); diff --git a/packages/visual-editor/src/fields/EntityFieldSelectorField.tsx b/packages/visual-editor/src/fields/EntityFieldSelectorField.tsx index 02361c04f..78b5cb4c1 100644 --- a/packages/visual-editor/src/fields/EntityFieldSelectorField.tsx +++ b/packages/visual-editor/src/fields/EntityFieldSelectorField.tsx @@ -402,7 +402,7 @@ export const ConstantValueModeToggler = ({ const locale = i18n.language; const itemSourceParentFieldTooltipTitle = pt( "itemSourceParentFieldTooltip", - "List elements must be able to satisfy the mapping requirements:" + "List elements should be able to satisfy the mapping requirements:" ); return (