projects/rebirth-ng/src/lib/tree-view/tree-view.component.ts
exportAs | treeView |
selector | re-tree-view |
styleUrls | tree-view.component.scss |
templateUrl | ./tree-view.component.html |
constructor(rebirthNGConfig: RebirthNGConfig, treeViewService: TreeViewService)
|
|||||||||
Parameters :
|
allowDraggable
|
Default value: |
allowMutipleSelected
|
Default value: |
checkable
|
Default value: |
collapseIcon
|
|
cssClass
|
Type: |
expendIcon
|
|
iconField
|
Type: |
lazyLoad
|
Default value: |
leafIcon
|
|
loadChildren
|
Type: |
loadingIcon
|
Type: |
nodeCssClass
|
Type: |
nodeItemTemplate
|
Type: |
nodeItemToolbarTemplate
|
Type: |
textField
|
|
treeData
|
Type: |
valueField
|
|
nodeItemCheckedChanged
|
$event type: EventEmitter
|
nodeItemClicked
|
$event type: EventEmitter
|
nodeItemDbClicked
|
$event type: EventEmitter
|
nodeItemDroped
|
$event type: EventEmitter
|
nodeItemExpended
|
$event type: EventEmitter
|
appendNodes | |||||||||
appendNodes(parentId: , nodes: any[])
|
|||||||||
Parameters :
Returns :
any
|
checkAllNodes |
checkAllNodes()
|
Returns :
any
|
collapseAllNodes |
collapseAllNodes()
|
Returns :
any
|
expendAllNodes |
expendAllNodes()
|
Returns :
any
|
expendNodesByLevel | ||||||
expendNodesByLevel(level: number)
|
||||||
Parameters :
Returns :
void
|
expendNodesByValue | ||||||
expendNodesByValue(value: any)
|
||||||
Parameters :
Returns :
void
|
getCheckedNodes |
getCheckedNodes()
|
Returns :
any
|
getFirstMatchedItem | ||||||
getFirstMatchedItem(match: (node: any) => void)
|
||||||
Parameters :
Returns :
any
|
getMatchedItems | ||||||
getMatchedItems(match: (node: any) => void)
|
||||||
Parameters :
Returns :
any
|
getNodePathByValue | ||||||
getNodePathByValue(value: any)
|
||||||
Parameters :
Returns :
any
|
getSelectNodes |
getSelectNodes()
|
Returns :
any
|
getTreeNodeByValue | ||||
getTreeNodeByValue(value: )
|
||||
Parameters :
Returns :
any
|
onNodeItemCheckedChanged | ||||
onNodeItemCheckedChanged(node: )
|
||||
Parameters :
Returns :
void
|
onNodeItemClicked | ||||
onNodeItemClicked(node: )
|
||||
Parameters :
Returns :
void
|
onNodeItemDbClicked | ||||
onNodeItemDbClicked(node: )
|
||||
Parameters :
Returns :
void
|
onNodeItemDroped | ||||
onNodeItemDroped($event: )
|
||||
Parameters :
Returns :
void
|
onNodeItemExpended | ||||
onNodeItemExpended(node: )
|
||||
Parameters :
Returns :
void
|
removeNode | ||||||
removeNode(value: any)
|
||||||
Parameters :
Returns :
any
|
unCheckAllNodes |
unCheckAllNodes()
|
Returns :
any
|
Private selectNode |
selectNode:
|
Type : any
|
import { Component, Input, Output, EventEmitter, TemplateRef } from '@angular/core';
import { RebirthNGConfig } from '../rebirth-ng.config';
import { Observable } from 'rxjs';
import { TreeViewService } from './tree-view.service';
@Component({
selector: 're-tree-view',
templateUrl: './tree-view.component.html',
styleUrls: ['./tree-view.component.scss'],
exportAs: 'treeView'
})
export class TreeViewComponent {
@Input() treeData: any[];
@Input() valueField;
@Input() textField;
@Input() cssClass: string;
@Input() nodeCssClass: string;
@Input() iconField: string;
@Input() checkable = false;
@Input() lazyLoad = false;
@Input() loadingIcon: string;
@Input() loadChildren: (parent: any) => Observable<any[]>;
@Input() allowDraggable = false;
@Input() allowMutipleSelected = false;
@Input() nodeItemTemplate: TemplateRef<any>;
@Input() nodeItemToolbarTemplate: TemplateRef<any>;
@Input() leafIcon;
@Input() expendIcon;
@Input() collapseIcon;
@Output() nodeItemClicked = new EventEmitter<any>();
@Output() nodeItemDroped = new EventEmitter<any>();
@Output() nodeItemDbClicked = new EventEmitter<any>();
@Output() nodeItemCheckedChanged = new EventEmitter<any>();
@Output() nodeItemExpended = new EventEmitter<any>();
private selectNode: any;
constructor(rebirthNGConfig: RebirthNGConfig, private treeViewService: TreeViewService) {
this.valueField = rebirthNGConfig.treeView.valueField;
this.textField = rebirthNGConfig.treeView.textField;
this.leafIcon = rebirthNGConfig.treeView.leafIcon;
this.expendIcon = rebirthNGConfig.treeView.expendIcon;
this.collapseIcon = rebirthNGConfig.treeView.collapseIcon;
this.loadingIcon = rebirthNGConfig.treeView.loadingIcon;
}
onNodeItemExpended(node) {
this.nodeItemExpended.emit(node);
}
onNodeItemClicked(node) {
if (!this.allowMutipleSelected) {
if (this.selectNode && this.selectNode !== node) {
this.selectNode.$select = false;
}
this.selectNode = node;
}
this.nodeItemClicked.emit(node);
}
onNodeItemDbClicked(node) {
this.nodeItemDbClicked.emit(node);
}
onNodeItemCheckedChanged(node) {
this.nodeItemCheckedChanged.emit(node);
}
onNodeItemDroped($event) {
const target = $event.target;
if (!target) {
return;
}
const source = $event.data.data.node;
const sourceParent = $event.data.data.parent;
if (sourceParent && sourceParent[this.valueField]) {
const matchNode = this.getTreeNodeByValue(sourceParent[this.valueField]);
if (matchNode) {
matchNode.node.children = matchNode.node.children
.filter((nodeItem) => nodeItem[this.valueField] !== source[this.valueField]);
}
} else {
if (this.treeData.length < 2) {
return;
}
this.treeData = this.treeData.filter((nodeItem) => nodeItem[this.valueField] !== source[this.valueField]);
}
target.children = target.children || [];
source.$select = false;
target.children.push(source);
this.nodeItemDroped.emit($event);
}
getSelectNodes() {
return this.treeViewService.getSelectNodes(this.treeData);
}
getCheckedNodes() {
return this.treeViewService.getCheckedNodes(this.treeData);
}
getMatchedItems(match: (node: any) => boolean) {
return this.treeViewService.getMatchedItems(this.treeData, match);
}
getFirstMatchedItem(match: (node: any) => boolean) {
return this.treeViewService.getFirstMatchedItem(this.treeData, match);
}
getTreeNodeByValue(value) {
return this.treeViewService.getTreeNodeByValue(this.treeData, this.valueField, value);
}
expendAllNodes() {
return this.treeViewService.expendAllNodes(this.treeData);
}
collapseAllNodes() {
return this.treeViewService.collapseAllNodes(this.treeData);
}
expendNodesByLevel(level: number) {
this.treeViewService.expendNodesByLevel(this.treeData, level);
}
expendNodesByValue(value: any) {
this.treeViewService.expendNodesByValue(this.treeData, this.valueField, value);
}
getNodePathByValue(value: any) {
return this.treeViewService.getNodePathByValue(this.treeData, this.valueField, value);
}
checkAllNodes() {
return this.treeViewService.checkAllNodes(this.treeData);
}
unCheckAllNodes() {
return this.treeViewService.unCheckAllNodes(this.treeData);
}
appendNodes(parentId, nodes: any[]) {
return this.treeViewService.appendNodes(this.treeData, this.valueField, parentId, nodes);
}
removeNode(value: any) {
return this.treeViewService.removeNode(this.treeData, this.valueField, value);
}
}
<re-tree-panel class="{{cssClass}}" [treeData]="treeData"
[textField]="textField"
[valueField]="valueField"
[nodeCssClass]="nodeCssClass"
[iconField]="iconField"
[checkable]="checkable"
[lazyLoad]="lazyLoad"
[loadingIcon]="loadingIcon"
[loadChildren]="loadChildren"
[allowDraggable]="allowDraggable"
[nodeItemTemplate]="nodeItemTemplate"
[nodeItemToolbarTemplate]="nodeItemToolbarTemplate"
[leafIcon]="leafIcon"
[expendIcon]="expendIcon"
[collapseIcon]="collapseIcon"
[allowMutipleSelected]="allowMutipleSelected"
(nodeItemCheckedChanged)="onNodeItemCheckedChanged($event)">
</re-tree-panel>