From a67c4f8de99a5cc83de182c84721c989d9756ea4 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 13 Mar 2023 13:56:55 +0100 Subject: [PATCH] load or create data type based on location --- .../workspace/data-type-workspace.element.ts | 49 ++++++++++++++----- 1 file changed, 36 insertions(+), 13 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts index 9dbc32333b..8901080b22 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts @@ -1,9 +1,10 @@ import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; -import { css, html } from 'lit'; -import { customElement, state } from 'lit/decorators.js'; +import { css, html, nothing } from 'lit'; +import { customElement, property, state } from 'lit/decorators.js'; import { UmbDataTypeWorkspaceContext } from './data-type-workspace.context'; import { UmbLitElement } from '@umbraco-cms/element'; +import { ManifestWorkspace } from '@umbraco-cms/extensions-registry'; /** * @element umb-data-type-workspace @@ -28,22 +29,43 @@ export class UmbDataTypeWorkspaceElement extends UmbLitElement { `, ]; - #workspaceContext = new UmbDataTypeWorkspaceContext(this); + @property() + manifest?: ManifestWorkspace; + + @property() + location?: any; @state() private _dataTypeName = ''; - public load(value: string) { - this.#workspaceContext?.load(value); - //this._unique = entityKey; - } - - public create(parentKey: string | null) { - this.#workspaceContext.createScaffold(parentKey); - } + #workspaceContext?: UmbDataTypeWorkspaceContext; constructor() { super(); + + this.consumeContext('umbWorkspaceContext', (workspaceContext: UmbDataTypeWorkspaceContext) => { + this.#workspaceContext = workspaceContext; + + if (this.location?.name === 'create') { + this.#create(this.location?.params?.parentKey); + } else { + this.#load(this.location?.params?.key); + } + + this.#observeName(); + }); + } + + #load(key: string) { + this.#workspaceContext?.load(key); + } + + #create(parentKey: string | null) { + this.#workspaceContext?.createScaffold(parentKey); + } + + #observeName() { + if (!this.#workspaceContext) return; this.observe(this.#workspaceContext.name, (dataTypeName) => { if (dataTypeName !== this._dataTypeName) { this._dataTypeName = dataTypeName ?? ''; @@ -57,14 +79,15 @@ export class UmbDataTypeWorkspaceElement extends UmbLitElement { const target = event.composedPath()[0] as UUIInputElement; if (typeof target?.value === 'string') { - this.#workspaceContext.setName(target.value); + this.#workspaceContext?.setName(target.value); } } } render() { + if (!this.manifest) return nothing; return html` - + `;