load language and subscribe to draft data

This commit is contained in:
Mads Rasmussen
2023-02-15 16:28:41 +01:00
parent 0a110c828a
commit c38a533c4e
2 changed files with 19 additions and 17 deletions

View File

@@ -6,10 +6,12 @@ import { UmbWorkspaceContext } from 'src/backoffice/shared/components/workspace/
export class UmbLanguageWorkspaceContext extends UmbWorkspaceContext {
#host: UmbControllerHostInterface;
#data = new ObjectState<LanguageModel | undefined>(undefined);
#languageRepository: UmbLanguageRepository;
#isNew = false;
#data = new ObjectState<LanguageModel | undefined>(undefined);
data = this.#data.asObservable();
constructor(host: UmbControllerHostInterface) {
super(host);
this.#host = host;

View File

@@ -1,12 +1,12 @@
import { UUITextStyles } from '@umbraco-ui/uui-css';
import { css, html, nothing } from 'lit';
import { customElement, property } from 'lit/decorators.js';
import { customElement, state } from 'lit/decorators.js';
import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui';
import { UmbLanguageStoreItemType } from '../../repository/language.store';
import { UmbWorkspaceEntityElement } from '../../../../shared/components/workspace/workspace-entity-element.interface';
import { UmbLanguageWorkspaceContext } from './language-workspace.context';
import { UmbLitElement } from '@umbraco-cms/element';
import '../../../../shared/components/workspace/workspace-action/save/workspace-action-node-save.element.ts';
import { LanguageModel } from '@umbraco-cms/backend-api';
@customElement('umb-language-workspace')
export class UmbLanguageWorkspaceElement extends UmbLitElement implements UmbWorkspaceEntityElement {
@@ -25,24 +25,24 @@ export class UmbLanguageWorkspaceElement extends UmbLitElement implements UmbWor
`,
];
@property()
language?: UmbLanguageStoreItemType;
@state()
_language?: LanguageModel;
#languageWorkspaceContext?: UmbLanguageWorkspaceContext;
#languageWorkspaceContext = new UmbLanguageWorkspaceContext(this);
load(key: string): void {
this.provideLanguageWorkspaceContext(key);
this.#languageWorkspaceContext.load(key);
}
create(parentKey: string | null): void {
this.provideLanguageWorkspaceContext(parentKey);
create(): void {
this.#languageWorkspaceContext.createScaffold();
}
public provideLanguageWorkspaceContext(entityKey: string | null) {
this.#languageWorkspaceContext = new UmbLanguageWorkspaceContext(this, entityKey);
this.provideContext('umbWorkspaceContext', this.#languageWorkspaceContext);
this.#languageWorkspaceContext.data.subscribe((language) => {
this.language = language;
async connectedCallback() {
super.connectedCallback();
this.observe(this.#languageWorkspaceContext.data, (data) => {
this._language = data;
});
}
@@ -51,13 +51,13 @@ export class UmbLanguageWorkspaceElement extends UmbLitElement implements UmbWor
const target = event.composedPath()[0] as UUIInputElement;
if (typeof target?.value === 'string') {
this.#languageWorkspaceContext?.update({ name: target.value });
this.#languageWorkspaceContext?.setName(target.value);
}
}
}
render() {
if (!this.language) return nothing;
if (!this._language) return nothing;
return html`
<umb-workspace-layout alias="Umb.Workspace.Language">
@@ -65,7 +65,7 @@ export class UmbLanguageWorkspaceElement extends UmbLitElement implements UmbWor
<uui-button href="/section/settings/language-root" compact>
<uui-icon name="umb:arrow-left"></uui-icon>
</uui-button>
<uui-input .value=${this.language.name} @input="${this.#handleInput}"></uui-input>
<uui-input .value=${this._language.name} @input="${this.#handleInput}"></uui-input>
</div>
</umb-workspace-layout>
`;