diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-workspace.element.ts index a1384bb799..b3834cff20 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-workspace.element.ts @@ -3,6 +3,7 @@ import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbLanguageStore, UmbLanguageStoreItemType, UMB_LANGUAGE_STORE_CONTEXT_TOKEN } from '../../language.store'; import { UmbTableColumn, UmbTableConfig, UmbTableItem } from '../../../../shared/components/table'; +import { UmbWorkspaceEntityElement } from '../../../../shared/components/workspace/workspace-entity-element.interface'; import { UmbLitElement } from '@umbraco-cms/element'; import '../language/language-workspace.element'; @@ -10,7 +11,7 @@ import './language-root-table-delete-column-layout.element'; import './language-root-table-name-column-layout.element'; @customElement('umb-language-root-workspace') -export class UmbLanguageRootWorkspaceElement extends UmbLitElement { +export class UmbLanguageRootWorkspaceElement extends UmbLitElement implements UmbWorkspaceEntityElement { static styles = [ UUITextStyles, css` @@ -80,6 +81,14 @@ export class UmbLanguageRootWorkspaceElement extends UmbLitElement { }); } + load(): void { + // Not relevant for this workspace + } + + create(): void { + // Not relevant for this workspace + } + private _observeLanguages() { this._languageStore?.getAll().subscribe((languages) => { this._createTableItems(languages); @@ -127,7 +136,7 @@ export class UmbLanguageRootWorkspaceElement extends UmbLitElement { render() { return html` - + diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace.context.ts index 5f77f375d5..ca6945bcbe 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace.context.ts @@ -13,7 +13,7 @@ const DefaultLanguageData: UmbLanguageStoreItemType = { export class UmbWorkspaceLanguageContext { public host: UmbControllerHostInterface; - private _entityKey!: string; + private _entityKey: string | null; private _data; public readonly data; @@ -21,7 +21,7 @@ export class UmbWorkspaceLanguageContext { private _store: UmbLanguageStore | null = null; protected _storeObserver?: UmbObserverController; - constructor(host: UmbControllerHostInterface, entityKey: string) { + constructor(host: UmbControllerHostInterface, entityKey: string | null) { this.host = host; this._entityKey = entityKey; @@ -35,7 +35,7 @@ export class UmbWorkspaceLanguageContext { } private _observeStore(): void { - if (!this._store || this._entityKey === 'new') { + if (!this._store || this._entityKey === null) { return; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace.element.ts index 2753adaaec..20a4af6d39 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace.element.ts @@ -3,12 +3,13 @@ import { css, html, nothing } from 'lit'; import { customElement, property } from 'lit/decorators.js'; import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; import { UmbLanguageStoreItemType } from '../../language.store'; +import { UmbWorkspaceEntityElement } from '../../../../shared/components/workspace/workspace-entity-element.interface'; import { UmbWorkspaceLanguageContext } from './language-workspace.context'; import { UmbLitElement } from '@umbraco-cms/element'; import '../../../../shared/components/workspace/actions/save/workspace-action-node-save.element.ts'; @customElement('umb-language-workspace') -export class UmbLanguageWorkspaceElement extends UmbLitElement { +export class UmbLanguageWorkspaceElement extends UmbLitElement implements UmbWorkspaceEntityElement { static styles = [ UUITextStyles, css` @@ -27,22 +28,18 @@ export class UmbLanguageWorkspaceElement extends UmbLitElement { @property() language?: UmbLanguageStoreItemType; - private _entityKey!: string; - @property() - public get entityKey(): string { - return this._entityKey; - } - public set entityKey(value: string) { - this._entityKey = value; - if (this._entityKey && !this._languageWorkspaceContext) { - this.provideLanguageWorkspaceContext(); - } - } - private _languageWorkspaceContext?: UmbWorkspaceLanguageContext; - public provideLanguageWorkspaceContext() { - this._languageWorkspaceContext = new UmbWorkspaceLanguageContext(this, this._entityKey); + load(key: string): void { + this.provideLanguageWorkspaceContext(key); + } + + create(parentKey: string | null): void { + this.provideLanguageWorkspaceContext(parentKey); + } + + public provideLanguageWorkspaceContext(entityKey: string | null) { + this._languageWorkspaceContext = new UmbWorkspaceLanguageContext(this, entityKey); this.provideContext('umbWorkspaceContext', this._languageWorkspaceContext); this._languageWorkspaceContext.data.subscribe((language) => { this.language = language;