pass additional args with tree item request

This commit is contained in:
Mads Rasmussen
2024-05-16 12:23:55 +02:00
parent 5176d3b43a
commit 2f14f0652b
3 changed files with 19 additions and 10 deletions

View File

@@ -21,13 +21,13 @@ import { UmbChangeEvent } from '@umbraco-cms/backoffice/event';
export class UmbDefaultTreeContext<
TreeItemType extends UmbTreeItemModel,
TreeRootType extends UmbTreeRootModel,
RootItemsRequestArgsType extends UmbTreeRootItemsRequestArgs = UmbTreeRootItemsRequestArgs,
RequestArgsType extends UmbTreeRootItemsRequestArgs = UmbTreeRootItemsRequestArgs,
>
extends UmbContextBase<UmbDefaultTreeContext<TreeItemType, TreeRootType, RootItemsRequestArgsType>>
extends UmbContextBase<UmbDefaultTreeContext<TreeItemType, TreeRootType, RequestArgsType>>
implements UmbTreeContext
{
#rootItemsRequestArgs = new UmbObjectState<RootItemsRequestArgsType | object>({});
public readonly rootItemsRequestArgs = this.#rootItemsRequestArgs.asObservable();
#additionalRequestArgs = new UmbObjectState<Partial<RequestArgsType> | object>({});
public readonly additionalRequestArgs = this.#additionalRequestArgs.asObservable();
#treeRoot = new UmbObjectState<TreeRootType | undefined>(undefined);
treeRoot = this.#treeRoot.asObservable();
@@ -175,22 +175,22 @@ export class UmbDefaultTreeContext<
// If we have a start node get children of that instead of the root
const startNode = this.getStartNode();
const args = this.#rootItemsRequestArgs.getValue();
const additionalArgs = this.#additionalRequestArgs.getValue();
const { data } = startNode?.unique
? await this.#repository!.requestTreeItemsOf({
...additionalArgs,
parent: {
unique: startNode.unique,
entityType: startNode.entityType,
},
skip,
take,
...args,
})
: await this.#repository!.requestTreeRootItems({
...additionalArgs,
skip,
take,
...args,
});
if (data) {
@@ -238,12 +238,19 @@ export class UmbDefaultTreeContext<
this.loadTree();
}
public loadWithAdditionalArgs(args: Partial<RootItemsRequestArgsType>) {
this.#rootItemsRequestArgs.setValue({ ...this.#rootItemsRequestArgs.getValue(), ...args });
/**
* Updates the requestArgs config and reloads the tree.
*/
public updateAdditionalRequestArgs(args: Partial<RequestArgsType>) {
this.#additionalRequestArgs.setValue({ ...this.#additionalRequestArgs.getValue(), ...args });
this.#resetTree();
this.loadTree();
}
public getAdditionalRequestArgs() {
return this.#additionalRequestArgs.getValue();
}
/**
* Gets the startNode config
* @return {UmbTreeStartNode}

View File

@@ -172,6 +172,7 @@ export abstract class UmbTreeItemContextBase<
const skip = loadMore ? this.#paging.skip : 0;
const take = loadMore ? this.#paging.take : this.pagination.getCurrentPageNumber() * this.#paging.take;
const additionalArgs = this.treeContext?.getAdditionalRequestArgs();
const { data } = await repository.requestTreeItemsOf({
parent: {
@@ -180,6 +181,7 @@ export abstract class UmbTreeItemContextBase<
},
skip,
take,
...additionalArgs,
});
if (data) {

View File

@@ -17,7 +17,7 @@ export class UmbDocumentTreeContext extends UmbDefaultTreeContext<
this.consumeContext(UMB_CONTENT_PROPERTY_CONTEXT, (context) => {
this.observe(context.dataType, (value) => {
this.loadWithAdditionalArgs({ dataType: value });
this.updateAdditionalRequestArgs({ dataType: value });
});
});
}