From 61aaa32aa040633ca23ed87dfa6dd8312506a45f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Tue, 27 Jun 2023 13:55:09 +0200 Subject: [PATCH] tree context --- .../src/packages/core/tree/tree.context.ts | 25 ++++++++----------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/tree/tree.context.ts b/src/Umbraco.Web.UI.Client/src/packages/core/tree/tree.context.ts index 5002f85c41..5bd570a9ad 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/tree/tree.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/tree/tree.context.ts @@ -1,15 +1,15 @@ import { Observable, map } from '@umbraco-cms/backoffice/external/rxjs'; import { UmbPagedData, UmbTreeRepository } from '@umbraco-cms/backoffice/repository'; import { ManifestTree, umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry'; -import { UmbBooleanState, UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; -import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller-api'; +import { UmbBooleanState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbController, UmbControllerHostElement } from '@umbraco-cms/backoffice/controller-api'; import { createExtensionClass } from '@umbraco-cms/backoffice/extension-api'; import { ProblemDetailsModel, TreeItemPresentationModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbContextProviderController } from '@umbraco-cms/backoffice/context-api'; import { UmbSelectionManagerBase } from '@umbraco-cms/backoffice/utils'; // TODO: update interface -export interface UmbTreeContext { +export interface UmbTreeContext extends UmbController { readonly selectable: Observable; readonly selection: Observable>; setSelectable(value: boolean): void; @@ -28,10 +28,9 @@ export interface UmbTreeContext } export class UmbTreeContextBase + extends UmbController implements UmbTreeContext { - public host: UmbControllerHostElement; - #selectionManager = new UmbSelectionManagerBase(); #selectable = new UmbBooleanState(false); @@ -53,8 +52,8 @@ export class UmbTreeContextBase }); constructor(host: UmbControllerHostElement) { - this.host = host; - new UmbContextProviderController(host, 'umbTreeContext', this); + super(host); + this.provideContext('umbTreeContext', this); } // TODO: find a generic way to do this @@ -105,12 +104,12 @@ export class UmbTreeContextBase public select(unique: string | null) { if (!this.getSelectable()) return; this.#selectionManager.select(unique); - this.host.dispatchEvent(new CustomEvent('selected')); + this._host.getElement().dispatchEvent(new CustomEvent('selected')); } public deselect(unique: string | null) { this.#selectionManager.deselect(unique); - this.host.dispatchEvent(new CustomEvent('selected')); + this._host.getElement().dispatchEvent(new CustomEvent('selected')); } public async requestTreeRoot() { @@ -140,8 +139,7 @@ export class UmbTreeContextBase } #observeTreeManifest() { - new UmbObserverController( - this.host, + this.observe( umbExtensionsRegistry .extensionsOfType('tree') .pipe(map((treeManifests) => treeManifests.find((treeManifest) => treeManifest.alias === this.#treeAlias))), @@ -157,14 +155,13 @@ export class UmbTreeContextBase const repositoryAlias = treeManifest.meta.repositoryAlias; if (!repositoryAlias) throw new Error('Tree must have a repository alias.'); - new UmbObserverController( - this.host, + this.observe( umbExtensionsRegistry.getByTypeAndAlias('repository', treeManifest.meta.repositoryAlias), async (repositoryManifest) => { if (!repositoryManifest) return; try { - const result = await createExtensionClass>(repositoryManifest, [this.host]); + const result = await createExtensionClass>(repositoryManifest, [this._host]); this.repository = result; this.#checkIfInitialized(); } catch (error) {