register document picker search result item

This commit is contained in:
Mads Rasmussen
2024-08-14 13:08:24 +02:00
parent d94f98caf3
commit aa4968c061
4 changed files with 55 additions and 1 deletions

View File

@@ -245,7 +245,12 @@ export class UmbTreePickerModalElement<TreeItemType extends UmbTreeItemModelBase
}
#renderPickerSearchResultItem(item: any) {
return html` <uui-menu-item label=${item.entityType + ' ' + item.unique}> </uui-menu-item> `;
return html`
<umb-picker-search-result-item
.props=${{ item }}
.item=${item}
.entityType=${item.entityType}></umb-picker-search-result-item>
`;
}
static override styles = [

View File

@@ -0,0 +1,10 @@
import { UmbContextBase } from '@umbraco-cms/backoffice/class-api';
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
export class UmbDocumentPickerSearchResultItemContext extends UmbContextBase<UmbDocumentPickerSearchResultItemContext> {
constructor(host: UmbControllerHost) {
super(host, 'pickerSearchResultItem');
}
}
export { UmbDocumentPickerSearchResultItemContext as api };

View File

@@ -0,0 +1,36 @@
import type { UmbDocumentItemModel } from '../repository/item/types.js';
import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
import { css, customElement, html, nothing, property } from '@umbraco-cms/backoffice/external/lit';
import { UmbTextStyles } from '@umbraco-cms/backoffice/style';
const elementName = 'umb-document-picker-search-result-item';
@customElement(elementName)
export class UmbDocumentPickerSearchResultItemElement extends UmbLitElement {
@property({ type: Object })
item?: UmbDocumentItemModel;
override render() {
if (!this.item) return nothing;
return html`
<uui-ref-node name=${this.item.name} id=${this.item.unique} readonly selectable>
${this.#renderIcon()}
</uui-ref-node>
`;
}
#renderIcon() {
if (!this.item?.documentType.icon) return nothing;
return html`<umb-icon slot="icon" name=${this.item.documentType.icon}></umb-icon>`;
}
static override styles = [UmbTextStyles, css``];
}
export { UmbDocumentPickerSearchResultItemElement as element };
declare global {
interface HTMLElementTagNameMap {
[elementName]: UmbDocumentPickerSearchResultItemElement;
}
}

View File

@@ -1,3 +1,4 @@
import { UMB_DOCUMENT_ENTITY_TYPE } from '../entity.js';
import type { ManifestTypes, UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extension-registry';
export const manifests: Array<ManifestTypes | UmbBackofficeManifestKind> = [
@@ -6,5 +7,7 @@ export const manifests: Array<ManifestTypes | UmbBackofficeManifestKind> = [
alias: 'Umb.PickerSearchResultItem.Document',
name: 'Document Picker Search Result Item',
element: () => import('./document-picker-search-result-item.element.js'),
api: () => import('./document-picker-search-result-item.context.js'),
forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE],
},
];