add check for optional request tree root method on tree data source + add js docs

This commit is contained in:
Mads Rasmussen
2023-11-14 10:28:24 +01:00
parent 3fb3ad1cf9
commit 38df061d5e

View File

@@ -9,6 +9,7 @@ import {
import { type UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
import { UmbApi } from '@umbraco-cms/backoffice/extension-api';
import { UmbContextToken } from '@umbraco-cms/backoffice/context-api';
import { Observable } from 'rxjs';
export class UmbEntityTreeRepositoryBase<TreeItemType extends UmbEntityTreeItemModel>
extends UmbRepositoryBase
@@ -31,14 +32,24 @@ export class UmbEntityTreeRepositoryBase<TreeItemType extends UmbEntityTreeItemM
}).asPromise();
}
/**
* Request the tree root item
* @return {*}
* @memberof UmbEntityTreeRepositoryBase
*/
async requestTreeRoot() {
await this._init;
if (!this.#treeSource.getTreeRoot?.()) {
return { data: undefined, error: undefined };
}
const { data, error } = await this.#treeSource.getTreeRoot();
return { data, error };
return this.#treeSource.getTreeRoot();
}
/**
* Requests root items of a tree
* @return {*}
* @memberof UmbEntityTreeRepositoryBase
*/
async requestRootTreeItems() {
await this._init;
@@ -51,6 +62,12 @@ export class UmbEntityTreeRepositoryBase<TreeItemType extends UmbEntityTreeItemM
return { data, error, asObservable: () => this._treeStore!.rootItems };
}
/**
* Requests tree items of a given parent
* @param {(string | null)} parentId
* @return {*}
* @memberof UmbEntityTreeRepositoryBase
*/
async requestTreeItemsOf(parentId: string | null) {
if (parentId === undefined) throw new Error('Parent id is missing');
await this._init;
@@ -64,11 +81,22 @@ export class UmbEntityTreeRepositoryBase<TreeItemType extends UmbEntityTreeItemM
return { data, error, asObservable: () => this._treeStore!.childrenOf(parentId) };
}
/**
* Returns a promise with an observable of tree root items
* @return {*}
* @memberof UmbEntityTreeRepositoryBase
*/
async rootTreeItems() {
await this._init;
return this._treeStore!.rootItems;
}
/**
* Returns a promise with an observable of children items of a given parent
* @param {(string | null)} parentId
* @return {*}
* @memberof UmbEntityTreeRepositoryBase
*/
async treeItemsOf(parentId: string | null) {
if (parentId === undefined) throw new Error('Parent id is missing');
await this._init;