UNPKG

systelab-components

Version:

systelab-components is a set of components that use wide accepted and adopted standard technologies like Angular and Bootstrap, as well as other popular libraries. Please read the ATTRIBUTION.md file for a complete list of dependencies.

65 lines 8.05 kB
import { Directive, EventEmitter, Input, Output } from '@angular/core'; import { NestedTreeControl } from '@angular/cdk/tree'; import { ArrayDataSource } from '@angular/cdk/collections'; import * as i0 from "@angular/core"; export class AbstractTree { get tree() { return this._tree; } set tree(newTree) { this._tree = newTree; this.dataSource = new ArrayDataSource(this._processData(this._tree, null)); } constructor() { this.nodeSelected = new EventEmitter(); this.defaultExpandedIcon = 'icon-angle-down'; this.defaultCollapsedIcon = 'icon-angle-right'; this._tree = []; this.dataSource = new ArrayDataSource(this._tree); this.treeControl = new NestedTreeControl(node => node.children); this.hasChild = (_, node) => !!node.children?.length; this.treeControl.isExpanded = (node) => node.expanded; this.treeControl.toggle = (node) => { node.expanded = !node.expanded; }; } ngOnInit() { if (this._tree) { this.dataSource = new ArrayDataSource(this._processData(this._tree, null)); } } doClick(node) { if (node.selectable !== false) { if (this.selectedNode) { this.selectedNode.isNodeSelected = false; } this.selectedNode = node; node.isNodeSelected = !node.isNodeSelected; this.nodeSelected.emit(node); } } _processData(data, parent = null) { data.forEach(item => { if (parent !== null) { item.parent = parent; } else { item.parent = null; } if (item.children?.length) { this._processData(item.children, item); } }); return data; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: AbstractTree, deps: [], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.9", type: AbstractTree, inputs: { tree: "tree" }, outputs: { nodeSelected: "nodeSelected" }, ngImport: i0 }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: AbstractTree, decorators: [{ type: Directive }], ctorParameters: () => [], propDecorators: { nodeSelected: [{ type: Output }], tree: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtdHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zeXN0ZWxhYi1jb21wb25lbnRzL3NyYy9saWIvdHJlZS9hYnN0cmFjdC10cmVlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFJM0QsTUFBTSxPQUFnQixZQUFZO0lBY2pDLElBQ1csSUFBSTtRQUNkLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNuQixDQUFDO0lBRUQsSUFBVyxJQUFJLENBQUMsT0FBd0I7UUFDdkMsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUM7UUFDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRUQ7UUF0QmlCLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVksQ0FBQztRQUV0RCx3QkFBbUIsR0FBRyxpQkFBaUIsQ0FBQztRQUN4Qyx5QkFBb0IsR0FBRyxrQkFBa0IsQ0FBQztRQUUxQyxVQUFLLEdBQWUsRUFBRSxDQUFDO1FBQ3ZCLGVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFN0MsZ0JBQVcsR0FBRyxJQUFJLGlCQUFpQixDQUFXLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBMkJyRSxhQUFRLEdBQUcsQ0FBQyxDQUFTLEVBQUUsSUFBYyxFQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUM7UUFaakYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDdEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNsQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNoQyxDQUFDLENBQUM7SUFDSCxDQUFDO0lBRU0sUUFBUTtRQUNkLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNmLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDM0U7SUFDRixDQUFDO0lBSU0sT0FBTyxDQUFDLElBQWM7UUFDNUIsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLEtBQUssRUFBRTtZQUM5QixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQzthQUN6QztZQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO1lBQzNDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzdCO0lBQ0YsQ0FBQztJQUVPLFlBQVksQ0FBQyxJQUFJLEVBQUUsTUFBTSxHQUFHLElBQUk7UUFDdkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNuQixJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO2FBQ3JCO2lCQUFNO2dCQUNOLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO2FBQ25CO1lBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRTtnQkFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQ3ZDO1FBQ0YsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7OEdBOURvQixZQUFZO2tHQUFaLFlBQVk7OzJGQUFaLFlBQVk7a0JBRGpDLFNBQVM7d0RBR1EsWUFBWTtzQkFBNUIsTUFBTTtnQkFhSSxJQUFJO3NCQURkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZXN0ZWRUcmVlQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90cmVlJztcbmltcG9ydCB7IEFycmF5RGF0YVNvdXJjZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5pbXBvcnQgeyBUcmVlTm9kZSB9IGZyb20gJy4vdHJlZS1ub2RlJztcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RUcmVlIGltcGxlbWVudHMgT25Jbml0IHtcblxuXHRAT3V0cHV0KCkgcHVibGljIG5vZGVTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8VHJlZU5vZGU+KCk7XG5cblx0cHVibGljIGRlZmF1bHRFeHBhbmRlZEljb24gPSAnaWNvbi1hbmdsZS1kb3duJztcblx0cHVibGljIGRlZmF1bHRDb2xsYXBzZWRJY29uID0gJ2ljb24tYW5nbGUtcmlnaHQnO1xuXG5cdHB1YmxpYyBfdHJlZTogVHJlZU5vZGVbXSA9IFtdO1xuXHRwdWJsaWMgZGF0YVNvdXJjZSA9IG5ldyBBcnJheURhdGFTb3VyY2UodGhpcy5fdHJlZSk7XG5cblx0cHVibGljIHRyZWVDb250cm9sID0gbmV3IE5lc3RlZFRyZWVDb250cm9sPFRyZWVOb2RlPihub2RlID0+IG5vZGUuY2hpbGRyZW4pO1xuXG5cdHB1YmxpYyBzZWxlY3RlZE5vZGU6IFRyZWVOb2RlO1xuXG5cdEBJbnB1dCgpXG5cdHB1YmxpYyBnZXQgdHJlZSgpOiBUcmVlTm9kZVtdICB7XG5cdFx0cmV0dXJuIHRoaXMuX3RyZWU7XG5cdH1cblxuXHRwdWJsaWMgc2V0IHRyZWUobmV3VHJlZTogQXJyYXk8VHJlZU5vZGU+KSB7XG5cdFx0dGhpcy5fdHJlZSA9IG5ld1RyZWU7XG5cdFx0dGhpcy5kYXRhU291cmNlID0gbmV3IEFycmF5RGF0YVNvdXJjZSh0aGlzLl9wcm9jZXNzRGF0YSh0aGlzLl90cmVlLCBudWxsKSk7XG5cdH1cblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHR0aGlzLnRyZWVDb250cm9sLmlzRXhwYW5kZWQgPSAobm9kZSkgPT4gbm9kZS5leHBhbmRlZDtcblx0XHR0aGlzLnRyZWVDb250cm9sLnRvZ2dsZSA9IChub2RlKSA9PiB7XG5cdFx0XHRub2RlLmV4cGFuZGVkID0gIW5vZGUuZXhwYW5kZWQ7XG5cdFx0fTtcblx0fVxuXG5cdHB1YmxpYyBuZ09uSW5pdCgpIHtcblx0XHRpZiAodGhpcy5fdHJlZSkge1xuXHRcdFx0dGhpcy5kYXRhU291cmNlID0gbmV3IEFycmF5RGF0YVNvdXJjZSh0aGlzLl9wcm9jZXNzRGF0YSh0aGlzLl90cmVlLCBudWxsKSk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIGhhc0NoaWxkID0gKF86IG51bWJlciwgbm9kZTogVHJlZU5vZGUpOiBib29sZWFuID0+ICEhbm9kZS5jaGlsZHJlbj8ubGVuZ3RoO1xuXG5cdHB1YmxpYyBkb0NsaWNrKG5vZGU6IFRyZWVOb2RlKTogdm9pZCB7XG5cdFx0aWYgKG5vZGUuc2VsZWN0YWJsZSAhPT0gZmFsc2UpIHtcblx0XHRcdGlmICh0aGlzLnNlbGVjdGVkTm9kZSkge1xuXHRcdFx0XHR0aGlzLnNlbGVjdGVkTm9kZS5pc05vZGVTZWxlY3RlZCA9IGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5zZWxlY3RlZE5vZGUgPSBub2RlO1xuXHRcdFx0bm9kZS5pc05vZGVTZWxlY3RlZCA9ICFub2RlLmlzTm9kZVNlbGVjdGVkO1xuXHRcdFx0dGhpcy5ub2RlU2VsZWN0ZWQuZW1pdChub2RlKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIF9wcm9jZXNzRGF0YShkYXRhLCBwYXJlbnQgPSBudWxsKSB7XG5cdFx0ZGF0YS5mb3JFYWNoKGl0ZW0gPT4ge1xuXHRcdFx0aWYgKHBhcmVudCAhPT0gbnVsbCkge1xuXHRcdFx0XHRpdGVtLnBhcmVudCA9IHBhcmVudDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGl0ZW0ucGFyZW50ID0gbnVsbDtcblx0XHRcdH1cblx0XHRcdGlmIChpdGVtLmNoaWxkcmVuPy5sZW5ndGgpIHtcblx0XHRcdFx0dGhpcy5fcHJvY2Vzc0RhdGEoaXRlbS5jaGlsZHJlbiwgaXRlbSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0cmV0dXJuIGRhdGE7XG5cdH1cbn1cbiJdfQ==