From 691a02c46a0dd61f8647008e4c988765cd47a7bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fatih=20KILI=C3=87?= Date: Tue, 11 Oct 2022 16:35:45 +0300 Subject: [PATCH] Added Input Values can control checkbox with node click. --- .../tree/src/lib/components/tree.component.ts | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/npm/ng-packs/packages/components/tree/src/lib/components/tree.component.ts b/npm/ng-packs/packages/components/tree/src/lib/components/tree.component.ts index 3f6179a5b2..24e2c8128a 100644 --- a/npm/ng-packs/packages/components/tree/src/lib/components/tree.component.ts +++ b/npm/ng-packs/packages/components/tree/src/lib/components/tree.component.ts @@ -3,6 +3,7 @@ import { ContentChild, EventEmitter, Input, + OnChanges, Output, TemplateRef, ViewEncapsulation, @@ -24,7 +25,7 @@ export type DropEvent = NzFormatEmitEvent & { pos: number }; ], encapsulation: ViewEncapsulation.None, }) -export class TreeComponent { +export class TreeComponent implements OnChanges { dropPosition: number; dropdowns = {} as { [key: string]: NgbDropdown }; @@ -44,19 +45,31 @@ export class TreeComponent { @Input() nodes = []; @Input() expandedKeys: string[] = []; @Input() selectedNode: any; + @Input() changeCheckboxWithNode: boolean; + @Input() changedNodeValues = []; @Input() isNodeSelected = node => this.selectedNode?.id === node.key; @Input() beforeDrop = (event: NzFormatBeforeDropEvent) => { this.dropPosition = event.pos; return of(false); }; + ngOnChanges() { + this.checkedKeys = [...this.changedNodeValues]; + } + onSelectedNodeChange(node) { this.selectedNode = node.origin.entity; - this.selectedNodeChange.emit(node.origin.entity); + if (this.changeCheckboxWithNode) { + this.selectedNodeChange.emit(node); + this.checkedKeys = [...this.changedNodeValues]; + this.checkedKeysChange.emit(this.changedNodeValues); + } else { + this.selectedNodeChange.emit(node.origin.entity); + } } onCheckboxChange(event) { - this.checkedKeys = [...event.keys]; + this.checkedKeys = this.changedNodeValues = [...event.keys]; this.checkedKeysChange.emit(event.keys); }