pass additional args with tree item request
This commit is contained in:
@@ -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}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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 });
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user