diff --git a/src/Umbraco.Web.UI.Client/src/packages/clipboard/property/value-translator/copy/clipboard-copy-translator-value-resolver.ts b/src/Umbraco.Web.UI.Client/src/packages/clipboard/property/value-translator/copy/clipboard-copy-translator-value-resolver.ts index 14cb3d0f3e..621580bb05 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/clipboard/property/value-translator/copy/clipboard-copy-translator-value-resolver.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/clipboard/property/value-translator/copy/clipboard-copy-translator-value-resolver.ts @@ -24,7 +24,14 @@ export class UmbClipboardCopyPropertyValueTranslatorValueResolver extends UmbCon } // Create translators - const apiPromises = manifests.map((manifest) => createExtensionApi(this, manifest)); + const apiPromises = manifests.map((manifest) => + createExtensionApi(this, manifest).then((api) => { + if (api) { + (api as any).manifest = manifest; + } + return api; + }), + ); const apis = await Promise.all(apiPromises); // Translate values diff --git a/src/Umbraco.Web.UI.Client/src/packages/content/content/controller/merge-content-variant-data.controller.ts b/src/Umbraco.Web.UI.Client/src/packages/content/content/controller/merge-content-variant-data.controller.ts index 515cbc4c7c..ba46942905 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/content/content/controller/merge-content-variant-data.controller.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/content/content/controller/merge-content-variant-data.controller.ts @@ -136,6 +136,7 @@ export class UmbMergeContentVariantDataController extends UmbControllerBase { // If api is not to be found, then we can continue using the draftValue as is. return draftValue; } + (api as any).manifest = manifest; let newValue = draftValue; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/components/entity-actions-bundle/entity-actions-bundle.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/components/entity-actions-bundle/entity-actions-bundle.element.ts index ec97aa8cf3..a8d70cbac6 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/components/entity-actions-bundle/entity-actions-bundle.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/components/entity-actions-bundle/entity-actions-bundle.element.ts @@ -74,8 +74,10 @@ export class UmbEntityActionsBundleElement extends UmbLitElement { this._firstActionApi = await createExtensionApi(this, this._firstActionManifest, [ { unique: this.unique, entityType: this.entityType, meta: this._firstActionManifest.meta }, ]); - - this._firstActionHref = await this._firstActionApi?.getHref(); + if (this._firstActionApi) { + (this._firstActionApi as any).manifest = this._firstActionManifest; + this._firstActionHref = await this._firstActionApi.getHref(); + } } async #onFirstActionClick(event: PointerEvent) { diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/create/create.action.ts b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/create/create.action.ts index 8f893b31ea..6b85c7ec35 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/create/create.action.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/create/create.action.ts @@ -81,6 +81,7 @@ export class UmbCreateEntityAction extends UmbEntityActionBase { diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/property/property-value-preset/property-value-preset-builder.controller.ts b/src/Umbraco.Web.UI.Client/src/packages/core/property/property-value-preset/property-value-preset-builder.controller.ts index a95f45d5c1..778a921acf 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/property/property-value-preset/property-value-preset-builder.controller.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/property/property-value-preset/property-value-preset-builder.controller.ts @@ -54,9 +54,18 @@ export class UmbPropertyValuePresetBuilderController< // Find a preset for this editor alias: const manifests = umbExtensionsRegistry.getByTypeAndFilter('propertyValuePreset', filter); - const apis = (await Promise.all(manifests.map((x) => createExtensionApi(this, x)))).filter( - (x) => x !== undefined, - ) as Array; + const apis = ( + await Promise.all( + manifests.map((x) => + createExtensionApi(this, x).then((x) => { + if (x) { + (x as any).manifest = x; + } + return x; + }), + ), + ) + ).filter((x) => x !== undefined) as Array; const result = await this._generatePropertyValues(apis, propertyType); diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/section/section-default.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/section/section-default.element.ts index 4bacf832bd..7161de8a2a 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/section/section-default.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/section/section-default.element.ts @@ -83,6 +83,10 @@ export class UmbSectionDefaultElement extends UmbLitElement implements UmbSectio extensionsWithElement.map(async (extensionController) => { const api = await createExtensionApi(this, extensionController.manifest); + if (api) { + (api as any).manifest = extensionController.manifest; + } + return { path: api?.getPath?.() || diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/validation/controllers/validation-path-translation/validation-property-path-translation.controller.ts b/src/Umbraco.Web.UI.Client/src/packages/core/validation/controllers/validation-path-translation/validation-property-path-translation.controller.ts index e3fd51c0f3..69d4d87d21 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/validation/controllers/validation-path-translation/validation-property-path-translation.controller.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/validation/controllers/validation-path-translation/validation-property-path-translation.controller.ts @@ -55,6 +55,8 @@ export class UmbValidationPropertyPathTranslationController extends UmbControlle return propertyPaths; } + (api as any).manifest = manifest; + propertyPaths = (await api.translate(propertyPaths, propertyData)) ?? propertyPaths; return propertyPaths; diff --git a/src/Umbraco.Web.UI.Client/src/packages/markdown-editor/components/input-markdown-editor/input-markdown.element.ts b/src/Umbraco.Web.UI.Client/src/packages/markdown-editor/components/input-markdown-editor/input-markdown.element.ts index 4f4e3b67cf..f116b6eea4 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/markdown-editor/components/input-markdown-editor/input-markdown.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/markdown-editor/components/input-markdown-editor/input-markdown.element.ts @@ -87,6 +87,11 @@ export class UmbInputMarkdownElement extends UmbFormControlMixin { manifests.forEach(async (manifest) => { const api = await createExtensionApi(this, manifest, [this]); + + if (api) { + (api as any).manifest = manifest; + } + const action: UmbMarkdownEditorAction = { id: manifest.alias ?? api.getUnique(), label: this.localize.string(manifest.meta?.label ?? api.getLabel()),