diff --git a/src/Umbraco.Web.UI.Client/src/packages/block/block-type/workspace/block-type-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/block/block-type/workspace/block-type-workspace.context.ts index c369865d08..ecc7ae3121 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/block/block-type/workspace/block-type-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/block/block-type/workspace/block-type-workspace.context.ts @@ -36,9 +36,9 @@ export class UmbBlockTypeWorkspaceContext = [ +export const manifests: Array = [ { type: 'workspaceAction', + kind: 'default', alias: 'Umb.WorkspaceAction.BlockType.Save', name: 'Save Block Type Workspace Action', api: UmbSaveWorkspaceAction, diff --git a/src/Umbraco.Web.UI.Client/src/packages/block/block/workspace/block-workspace-editor.element.ts b/src/Umbraco.Web.UI.Client/src/packages/block/block/workspace/block-workspace-editor.element.ts index 1f543763c9..1049dc8d24 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/block/block/workspace/block-workspace-editor.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/block/block/workspace/block-workspace-editor.element.ts @@ -1,4 +1,3 @@ -import type { UMB_BLOCK_WORKSPACE_CONTEXT } from './block-workspace.context-token.js'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; import { customElement, css, html, property } from '@umbraco-cms/backoffice/external/lit'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; @@ -6,8 +5,6 @@ import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; @customElement('umb-block-workspace-editor') export class UmbBlockWorkspaceEditorElement extends UmbLitElement { // - #workspaceContext?: typeof UMB_BLOCK_WORKSPACE_CONTEXT.TYPE; - @property({ type: String, attribute: false }) workspaceAlias?: string; diff --git a/src/Umbraco.Web.UI.Client/src/packages/block/block/workspace/block-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/block/block/workspace/block-workspace.context.ts index 7e5cc0affb..5ef003b564 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/block/block/workspace/block-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/block/block/workspace/block-workspace.context.ts @@ -64,8 +64,11 @@ export class UmbBlockWorkspaceContext { this.#modalContext = context; @@ -89,9 +92,7 @@ export class UmbBlockWorkspaceContext { this.#blockEntries = context; }).asPromise(); - } - set manifest(manifest: ManifestWorkspace) { this.routes.setRoutes([ { path: 'create/:elementTypeKey', @@ -373,4 +374,4 @@ export class UmbBlockWorkspaceContext { - const element = new UmbBlockWorkspaceEditorElement(); - element.workspaceAlias = this.#manifest!.alias; - return element; - }; - - @state() - _routes: UmbRoute[] = []; - - public set manifest(manifest: ManifestWorkspace) { - this.#manifest = manifest; - createExtensionApi(this, manifest, [{ manifest: manifest }]).then((context) => { - if (context) { - this.#gotWorkspaceContext(context); - // TODO: Do we need to recreate when ID changed? Or is that a responsibility of the context it self? - new UmbExtensionsApiInitializer(this, umbExtensionsRegistry, 'workspaceContext', [ - this, - this.#workspaceContext, - ]); - } - }); - } - - #gotWorkspaceContext(context: UmbApi) { - this.#workspaceContext = context as UmbBlockWorkspaceContext; - - this._routes = [ - { - path: 'create/:elementTypeKey', - component: this.#editorElement, - setup: async (_component, info) => { - const elementTypeKey = info.match.params.elementTypeKey; - this.#workspaceContext!.create(elementTypeKey); - - new UmbWorkspaceIsNewRedirectController( - this, - this.#workspaceContext!, - this.shadowRoot!.querySelector('umb-router-slot')!, - ); - }, - }, - { - path: 'edit/:udi', - component: this.#editorElement, - setup: (_component, info) => { - const udi = decodeFilePath(info.match.params.udi); - this.#workspaceContext!.load(udi); - }, - }, - ]; - } - - render() { - return html``; - } -} - -export default UmbBlockWorkspaceElement; - -declare global { - interface HTMLElementTagNameMap { - 'umb-block-workspace': UmbBlockWorkspaceElement; - } -} diff --git a/src/Umbraco.Web.UI.Client/src/packages/block/block/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/block/block/workspace/manifests.ts index 53f8332c15..b58ff4428c 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/block/block/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/block/block/workspace/manifests.ts @@ -5,6 +5,7 @@ import type { ManifestTypes } from '@umbraco-cms/backoffice/extension-registry'; export const manifests: Array = [ { type: 'workspaceAction', + kind: 'default', alias: 'Umb.WorkspaceAction.Block.Save', name: 'Save Block Type Workspace Action', api: UmbSaveWorkspaceAction, diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/workspace.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/workspace.element.ts index 2ec06f3848..81720c8d37 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/workspace.element.ts @@ -1,6 +1,11 @@ import { html, nothing, customElement, property } from '@umbraco-cms/backoffice/external/lit'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; import type { ManifestWorkspace } from '@umbraco-cms/backoffice/extension-registry'; +import type { UmbApiConstructorArgumentsMethodType } from '@umbraco-cms/backoffice/extension-api'; + +const apiArgsCreator: UmbApiConstructorArgumentsMethodType = (manifest: unknown) => { + return [{ manifest }]; +}; @customElement('umb-workspace') export class UmbWorkspaceElement extends UmbLitElement { @@ -11,6 +16,7 @@ export class UmbWorkspaceElement extends UmbLitElement { if (!this.entityType) return nothing; return html` manifest.meta.entityType === this.entityType}>`; }