From 08990b91479d788ed5aec9e8c0236e95d895b3b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Mon, 17 Nov 2025 15:41:47 +0100 Subject: [PATCH] Document input: Find variant name (#20853) * ability to override get name * implement document name method --- .../core/picker-input/picker-input.context.ts | 14 +++++++++++--- .../input-document/input-document.context.ts | 10 ++++++++++ .../Umbraco.Tests.AcceptanceTest/package-lock.json | 8 ++++---- tests/Umbraco.Tests.AcceptanceTest/package.json | 2 +- 4 files changed, 26 insertions(+), 8 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/picker-input/picker-input.context.ts b/src/Umbraco.Web.UI.Client/src/packages/core/picker-input/picker-input.context.ts index 2829e753db..6f7d7e30e8 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/picker-input/picker-input.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/picker-input/picker-input.context.ts @@ -82,6 +82,12 @@ export class UmbPickerInputContext< getSelection() { return this.#itemManager.getUniques(); } + getSelectedItems() { + return this.#itemManager.getItems(); + } + getSelectedItemByUnique(unique: string) { + return this.#itemManager.getItems().find((item) => item.unique === unique); + } setSelection(selection: Array) { // Note: Currently we do not support picking root item. So we filter out null values: @@ -111,10 +117,12 @@ export class UmbPickerInputContext< this.getHostElement().dispatchEvent(new UmbChangeEvent()); } - async requestRemoveItem(unique: string) { - const item = this.#itemManager.getItems().find((item) => item.unique === unique); + protected async _requestItemName(unique: string) { + return this.getSelectedItemByUnique(unique)?.name ?? '#general_notFound'; + } - const name = item?.name ?? '#general_notFound'; + async requestRemoveItem(unique: string) { + const name = await this._requestItemName(unique); await umbConfirmModal(this, { color: 'danger', headline: `#actions_remove ${name}?`, diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/components/input-document/input-document.context.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/components/input-document/input-document.context.ts index 1d815ed740..43ac95bd8b 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/components/input-document/input-document.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/components/input-document/input-document.context.ts @@ -7,6 +7,7 @@ import { UmbPickerInputContext } from '@umbraco-cms/backoffice/picker-input'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import type { UmbDocumentTypeEntityType } from '@umbraco-cms/backoffice/document-type'; import { UMB_VARIANT_CONTEXT } from '@umbraco-cms/backoffice/variant'; +import { UmbDocumentItemDataResolver } from '../../item/index.js'; interface UmbDocumentPickerInputContextOpenArgs { allowedContentTypes?: Array<{ unique: string; entityType: UmbDocumentTypeEntityType }>; @@ -56,6 +57,15 @@ export class UmbDocumentPickerInputContext extends UmbPickerInputContext< await super.openPicker(combinedPickerData); } + protected override async _requestItemName(unique: string): Promise { + const item = this.getSelectedItemByUnique(unique); + const resolver = new UmbDocumentItemDataResolver(this); + resolver.setData(item); + const name = await resolver.getName(); + this.removeUmbController(resolver); + return name ?? '#general_notFound'; + } + #pickableFilter = ( item: UmbDocumentItemModel, allowedContentTypes?: Array<{ unique: string; entityType: UmbDocumentTypeEntityType }>, diff --git a/tests/Umbraco.Tests.AcceptanceTest/package-lock.json b/tests/Umbraco.Tests.AcceptanceTest/package-lock.json index 442b1fbb3f..eaa1a1894e 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/package-lock.json +++ b/tests/Umbraco.Tests.AcceptanceTest/package-lock.json @@ -8,7 +8,7 @@ "hasInstallScript": true, "dependencies": { "@umbraco/json-models-builders": "^2.0.41", - "@umbraco/playwright-testhelpers": "^17.0.0-beta.11", + "@umbraco/playwright-testhelpers": "^17.0.0-beta.13", "camelize": "^1.0.0", "dotenv": "^16.3.1", "node-fetch": "^2.6.7" @@ -67,9 +67,9 @@ } }, "node_modules/@umbraco/playwright-testhelpers": { - "version": "17.0.0-beta.11", - "resolved": "https://registry.npmjs.org/@umbraco/playwright-testhelpers/-/playwright-testhelpers-17.0.0-beta.11.tgz", - "integrity": "sha512-HZMdtees5o5FLFsSRQ02BzO+Kxhm1iZop/2Sys/5MzIZkz1pbJIPUvudeK7LbbpJON5piJzI9yCyrZYaF5usiw==", + "version": "17.0.0-beta.13", + "resolved": "https://registry.npmjs.org/@umbraco/playwright-testhelpers/-/playwright-testhelpers-17.0.0-beta.13.tgz", + "integrity": "sha512-a4E/uGko0TiGMvuPthfa3KMDz+UYoFzj6zqVFl2g+mKdXqRJLHh++6/YQuXlHdxdN/KSAlvF8yCYZ6+2F5HDWw==", "license": "MIT", "dependencies": { "@umbraco/json-models-builders": "2.0.41", diff --git a/tests/Umbraco.Tests.AcceptanceTest/package.json b/tests/Umbraco.Tests.AcceptanceTest/package.json index 1677bfc276..fd25862790 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/package.json +++ b/tests/Umbraco.Tests.AcceptanceTest/package.json @@ -22,7 +22,7 @@ }, "dependencies": { "@umbraco/json-models-builders": "^2.0.41", - "@umbraco/playwright-testhelpers": "^17.0.0-beta.11", + "@umbraco/playwright-testhelpers": "^17.0.0-beta.13", "camelize": "^1.0.0", "dotenv": "^16.3.1", "node-fetch": "^2.6.7"