update to new workspace interface

This commit is contained in:
Jacob Overgaard
2023-01-30 09:59:54 +01:00
parent 82bb00b4b7
commit ed1cb89e3e
3 changed files with 26 additions and 20 deletions

View File

@@ -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`
<umb-body-layout no-header-background>
<a id="add-language" slot="header" href="section/settings/language/edit/new">
<a id="add-language" slot="header" href="section/settings/language/create/root">
<uui-button label="Add language" look="outline" color="default"></uui-button>
</a>
<umb-table .config=${this._tableConfig} .columns=${this._tableColumns} .items=${this._tableItems}></umb-table>

View File

@@ -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<UmbLanguageStoreItemType>;
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;
}

View File

@@ -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;