add selectable filter on for tree element

This commit is contained in:
Mads Rasmussen
2023-05-02 13:13:47 +02:00
parent f7f2da7659
commit 7d171f3dd7
3 changed files with 18 additions and 3 deletions

View File

@@ -138,7 +138,13 @@ export class UmbTreeItemContextBase<TreeItemType extends TreeItemPresentationMod
#observeIsSelectable() {
if (!this.treeContext) return;
new UmbObserverController(this.host, this.treeContext.selectable, (value) => this.#isSelectable.next(value));
new UmbObserverController(this.host, this.treeContext.selectable, (value) => {
// If the tree is selectable, check if this item is selectable
if (value === true) {
const isSelectable = this.treeContext?.selectableFilter(this.getTreeItem()!) || false;
this.#isSelectable.next(isSelectable);
}
});
}
#observeIsSelected() {

View File

@@ -37,9 +37,10 @@ export class UmbTreeContextBase<TreeItemType extends TreeItemPresentationModel>
#selection = new UmbArrayState(<Array<string | null>>[]);
public readonly selection = this.#selection.asObservable();
#treeAlias?: string;
repository?: UmbTreeRepository<TreeItemType>;
public repository?: UmbTreeRepository<TreeItemType>;
public selectableFilter: (item: TreeItemType) => boolean = () => true;
#treeAlias?: string;
#treeManifestObserver?: UmbObserverController<any>;
#initResolver?: () => void;

View File

@@ -61,6 +61,14 @@ export class UmbTreeElement extends UmbLitElement {
this.requestUpdate('hideTreeRoot', oldVal);
}
@property()
get selectableFilter() {
return this.#treeContext.selectableFilter;
}
set selectableFilter(newVal) {
this.#treeContext.selectableFilter = newVal;
}
@state()
private _items: TreeItemPresentationModel[] = [];