diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/search/examine-management-dashboard/views/section-view-examine-searchers.ts b/src/Umbraco.Web.UI.Client/src/packages/core/search/examine-management-dashboard/views/section-view-examine-searchers.ts index e19081640a84..b43b03a56d5a 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/search/examine-management-dashboard/views/section-view-examine-searchers.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/search/examine-management-dashboard/views/section-view-examine-searchers.ts @@ -97,7 +97,9 @@ export class UmbDashboardExamineSearcherElement extends UmbLitElement { } private _updateFieldFilter() { - this._searchResults?.map((doc) => { + const documentFields: ExposedSearchResultField[] = []; + + this._searchResults?.forEach((doc) => { const document = doc.fields?.filter((field) => { return field.name?.toUpperCase() !== 'NODENAME'; }); @@ -106,16 +108,16 @@ export class UmbDashboardExamineSearcherElement extends UmbLitElement { return field.name ?? ''; }); - // TODO: I don't get this code, not sure what the purpose is, it seems like a mistake: [NL] - this._exposedFields = this._exposedFields - ? this._exposedFields.filter((field) => { - return { name: field.name, exposed: field.exposed }; - }) - : newFieldNames?.map((name) => { - return { name, exposed: false }; - }); + newFieldNames.forEach((name) => { + if (!documentFields.find((field) => field.name === name)) { + const exposed = this._exposedFields?.find((field) => field.name === name)?.exposed ?? false; + documentFields.push({ name, exposed }); + } + }); } }); + + this._exposedFields = documentFields.sort((a, b) => a.name.localeCompare(b.name)); } async #onFieldFilterClick() { @@ -286,11 +288,17 @@ export class UmbDashboardExamineSearcherElement extends UmbLitElement { renderBodyCells(cellData: UmbSearchFieldPresentationModel[]) { return html`${this._exposedFields?.map((slot) => { - return cellData.map((field) => { - return slot.exposed && field.name == slot.name - ? html`${field.values}` - : html``; - }); + if (slot.exposed) { + const field = cellData.find((field) => field.name === slot.name); + if (field) { + return html`${field.values}`; + } + + // Exposed field not found for this record, render empty cell. + return html``; + } + + return html``; })}`; }