diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/entity-action/restore-from-recycle-bin/modal/restore-from-recycle-bin-modal.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/entity-action/restore-from-recycle-bin/modal/restore-from-recycle-bin-modal.element.ts index 8370cc78b0dd..e8454907f6b5 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/entity-action/restore-from-recycle-bin/modal/restore-from-recycle-bin-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/entity-action/restore-from-recycle-bin/modal/restore-from-recycle-bin-modal.element.ts @@ -10,9 +10,7 @@ import { UmbModalBaseElement, umbOpenModal } from '@umbraco-cms/backoffice/modal import { createExtensionApiByAlias } from '@umbraco-cms/backoffice/extension-registry'; import type { UmbItemRepository } from '@umbraco-cms/backoffice/repository'; -const elementName = 'umb-restore-from-recycle-bin-modal'; - -@customElement(elementName) +@customElement('umb-restore-from-recycle-bin-modal') export class UmbRestoreFromRecycleBinModalElement extends UmbModalBaseElement< UmbRestoreFromRecycleBinModalData, UmbRestoreFromRecycleBinModalValue @@ -21,10 +19,13 @@ export class UmbRestoreFromRecycleBinModalElement extends UmbModalBaseElement< private _isAutomaticRestore = false; @state() - private _restoreItem?: any; + private _destinationItem?: any; @state() - private _destinationItem?: any; + private _destinationItemName?: string; + + @state() + private _restoreItemName?: string; #recycleBinRepository?: UmbRecycleBinRepository; @@ -34,7 +35,16 @@ export class UmbRestoreFromRecycleBinModalElement extends UmbModalBaseElement< super.firstUpdated(_changedProperties); if (!this.data?.unique) throw new Error('Cannot restore an item without a unique identifier.'); - this._restoreItem = await this.#requestItem(this.data.unique); + const restoreItem = await this.#requestItem(this.data.unique); + + if (this.data.itemDataResolver) { + const resolver = new this.data.itemDataResolver(this); + resolver.setData(restoreItem); + this._restoreItemName = await resolver.getName(); + } else { + this._restoreItemName = restoreItem.name; + } + const unique = await this.#requestAutomaticRestoreDestination(); if (unique !== undefined) { @@ -47,9 +57,7 @@ export class UmbRestoreFromRecycleBinModalElement extends UmbModalBaseElement< // TODO: handle ROOT lookup. Currently, we can't look up the root in the item repository. // This is a temp solution to show something in the UI. if (unique === null) { - this._destinationItem = { - name: 'ROOT', - }; + this._destinationItemName = 'Root'; this.#setDestinationValue({ unique: null, @@ -61,6 +69,14 @@ export class UmbRestoreFromRecycleBinModalElement extends UmbModalBaseElement< this._destinationItem = await this.#requestItem(unique); if (!this._destinationItem) throw new Error('Cant find destination item.'); + if (this.data?.itemDataResolver) { + const resolver = new this.data.itemDataResolver(this); + resolver.setData(this._destinationItem); + this._destinationItemName = await resolver.getName(); + } else { + this._destinationItemName = this._destinationItem.name; + } + this.#setDestinationValue({ unique: this._destinationItem.unique, entityType: this._destinationItem.entityType, @@ -138,7 +154,7 @@ export class UmbRestoreFromRecycleBinModalElement extends UmbModalBaseElement< ${this._isAutomaticRestore - ? html` Restore ${this._restoreItem?.name} to ${this._destinationItem?.name}` + ? html` Restore ${this._restoreItemName} to ${this._destinationItemName}` : this.#renderCustomSelectDestination()} ${this.#renderActions()} @@ -151,8 +167,8 @@ export class UmbRestoreFromRecycleBinModalElement extends UmbModalBaseElement<

Cannot automatically restore this item.

There is no location where this item can be automatically restored. You can select a new location below.

Restore to:
- ${this._destinationItem - ? html` + ${this._destinationItem && this._destinationItemName + ? html` (this._destinationItem = undefined)} label="Remove" >${this.localize.term('general_remove')}, UmbPickerModalValue> | string; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/entity-action/restore-from-recycle-bin/restore-from-recycle-bin.action.ts b/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/entity-action/restore-from-recycle-bin/restore-from-recycle-bin.action.ts index 63dc760e1203..e4141ff23192 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/entity-action/restore-from-recycle-bin/restore-from-recycle-bin.action.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/recycle-bin/entity-action/restore-from-recycle-bin/restore-from-recycle-bin.action.ts @@ -24,6 +24,7 @@ export class UmbRestoreFromRecycleBinEntityAction extends UmbEntityActionBase, UmbPickerModalValue> | string; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/entity-action/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/entity-action/manifests.ts index bbcf5e518598..25a428c959f0 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/entity-action/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/entity-action/manifests.ts @@ -46,6 +46,7 @@ export const manifests: Array = [ forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], meta: { itemRepositoryAlias: UMB_DOCUMENT_ITEM_REPOSITORY_ALIAS, + itemDataResolver: UmbDocumentItemDataResolver, recycleBinRepositoryAlias: UMB_DOCUMENT_RECYCLE_BIN_REPOSITORY_ALIAS, pickerModal: UMB_DOCUMENT_PICKER_MODAL, },