diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/search/document-search-result-item.element.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/search/document-search-result-item.element.ts
index 4cd8d71a59..7f190c28c8 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/search/document-search-result-item.element.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/search/document-search-result-item.element.ts
@@ -1,14 +1,20 @@
import type { UmbDocumentItemModel, UmbDocumentItemVariantModel } from '../item/repository/types.js';
-import type { UmbSearchResultItemModel } from '@umbraco-cms/backoffice/search';
+import {
+ classMap,
+ css,
+ customElement,
+ html,
+ nothing,
+ property,
+ state,
+ when,
+} from '@umbraco-cms/backoffice/external/lit';
import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
-import { css, customElement, html, nothing, property, state } from '@umbraco-cms/backoffice/external/lit';
-import { UmbTextStyles } from '@umbraco-cms/backoffice/style';
-import type { UmbAppLanguageContext } from '@umbraco-cms/backoffice/language';
import { UMB_APP_LANGUAGE_CONTEXT } from '@umbraco-cms/backoffice/language';
+import type { UmbSearchResultItemModel } from '@umbraco-cms/backoffice/search';
-const elementName = 'umb-document-search-result-item';
-@customElement(elementName)
-export class UmbSearchResultItemElement extends UmbLitElement {
+@customElement('umb-document-search-result-item')
+export class UmbDocumentSearchResultItemElement extends UmbLitElement {
@property({ type: Object })
item?: UmbSearchResultItemModel & UmbDocumentItemModel;
@@ -30,14 +36,14 @@ export class UmbSearchResultItemElement extends UmbLitElement {
});
}
- #observeAppCulture(context: UmbAppLanguageContext) {
+ #observeAppCulture(context: typeof UMB_APP_LANGUAGE_CONTEXT.TYPE) {
this.observe(context.appLanguageCulture, (value) => {
this._currentCulture = value;
this._variant = this.#getVariant(value);
});
}
- #observeDefaultCulture(context: UmbAppLanguageContext) {
+ #observeDefaultCulture(context: typeof UMB_APP_LANGUAGE_CONTEXT.TYPE) {
this.observe(context.appDefaultLanguage, (value) => {
this._defaultCulture = value?.unique;
});
@@ -47,13 +53,8 @@ export class UmbSearchResultItemElement extends UmbLitElement {
return this.item?.variants.find((x) => x.culture === culture);
}
- #isInvariant() {
- const firstVariant = this.item?.variants[0];
- return firstVariant?.culture === null;
- }
-
#getLabel() {
- if (this.#isInvariant()) {
+ if (this.item?.variants[0]?.culture === null) {
return this.item?.name ?? 'Unknown';
}
@@ -61,68 +62,76 @@ export class UmbSearchResultItemElement extends UmbLitElement {
return this._variant?.name ?? `(${fallbackName})`;
}
+ #getDraftState(): boolean {
+ if (this.item?.isTrashed) return false;
+ return this._variant?.state === 'Draft' || this.item?.variants[0]?.state === 'Draft';
+ }
+
override render() {
if (!this.item) return nothing;
- return html`
-
- ${this.#getLabel()}
- `;
- }
+ const label = this.#getLabel();
+ const isDraft = this.#getDraftState();
+
+ const classes = {
+ trashed: this.item.isTrashed,
+ hasState: this.item.isTrashed || isDraft,
+ };
- #renderHashTag() {
return html`
-
+ ${when(
+ this.item.documentType.icon ?? this.item.icon,
+ (icon) => html`