UFM: Update contentName component to respect current backoffice culture. (#20927)

* Updated the content-name element to use the DocumentItemDataResolver.

* Import sorting

* Defaults the entity-type to "document"

---------

Co-authored-by: leekelleher <leekelleher@gmail.com>
This commit is contained in:
Engiber Lozada
2025-11-24 17:23:35 +01:00
committed by GitHub
parent 8f2532a28a
commit 3d90fffccd

View File

@@ -1,10 +1,15 @@
import { UmbUfmElementBase } from '../ufm-element-base.js';
import { UMB_UFM_RENDER_CONTEXT } from '../ufm-render/ufm-render.context.js';
import { customElement, property } from '@umbraco-cms/backoffice/external/lit';
import { UmbDocumentItemRepository, UMB_DOCUMENT_ENTITY_TYPE } from '@umbraco-cms/backoffice/document';
import {
UmbDocumentItemDataResolver,
UmbDocumentItemRepository,
UMB_DOCUMENT_ENTITY_TYPE,
} from '@umbraco-cms/backoffice/document';
import { UmbId } from '@umbraco-cms/backoffice/id';
import { UmbMediaItemRepository, UMB_MEDIA_ENTITY_TYPE } from '@umbraco-cms/backoffice/media';
import { UmbMemberItemRepository, UMB_MEMBER_ENTITY_TYPE } from '@umbraco-cms/backoffice/member';
import type { UmbDocumentItemModel } from '@umbraco-cms/backoffice/document';
@customElement('ufm-content-name')
export class UmbUfmContentNameElement extends UmbUfmElementBase {
@@ -46,7 +51,7 @@ export class UmbUfmContentNameElement extends UmbUfmElementBase {
if (item.mediaKey) return UMB_MEDIA_ENTITY_TYPE;
}
return null;
return UMB_DOCUMENT_ENTITY_TYPE;
}
#getUniques(value: unknown) {
@@ -64,7 +69,17 @@ export class UmbUfmContentNameElement extends UmbUfmElementBase {
const { data } = await repository.requestItems(uniques);
if (Array.isArray(data) && data.length > 0) {
// TODO: [v17] Review usage of `item.variants[0].name` as this needs to be implemented properly! [LK]
if (entityType === UMB_DOCUMENT_ENTITY_TYPE) {
const namePromises = data.map(async (item) => {
const resolver = new UmbDocumentItemDataResolver(this);
resolver.setData(item as UmbDocumentItemModel);
return await resolver.getName();
});
const names = await Promise.all(namePromises);
return names.join(', ');
}
// TODO: Review usage of `item.variants[0].name` as this needs to be implemented properly for media/member items [LK]
return data.map((item) => item.variants[0].name).join(', ');
}
}