UNPKG

@asi-ngtools/lib

Version:

This project is a little components library, simple to use, which will help you to simplify your project.

186 lines (185 loc) 13.5 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import { Component, Input, ElementRef, Renderer2, ViewChild, ViewChildren, QueryList, HostBinding } from '@angular/core'; import { AsiComponentTemplateTreeNodeDef, AsiComponentTemplateTreeLeafDef } from './../../common/asi-component-template'; import { AsiTreeViewComponent } from './../asi-tree-view.component'; import * as nh from '../../../native-helper'; export class AsiTreeViewNodeComponent { /** * @param {?} elementRef * @param {?} renderer */ constructor(elementRef, renderer) { this.elementRef = elementRef; this.renderer = renderer; this.found = false; this.isLeaf = null; this.leaf = false; this.subData = null; this.init = false; this.open = false; } /** * @param {?} nodeData * @return {?} */ set nodeData(nodeData) { this.data = nodeData; if (this.init) { this.onDataChange(); } } ; /** * @return {?} */ ngOnInit() { this.onDataChange(); this.init = true; } /** * @return {?} */ onDataChange() { this.subData = nh.get(this.data, this.nodeName); /** @type {?} */ let leafTemplate = (this.isLeaf && this.isLeaf(this.data)) || (!this.isLeaf && !this.subData); if (leafTemplate) { this.template = this.leafDef.template; this.renderer.addClass(this.treeNode.nativeElement, 'leaf'); } else { this.template = this.nodeDef.template; this.renderer.addClass(this.treeNode.nativeElement, 'node'); } this.elementRef.nativeElement.style.marginLeft = ((this.level - 1) * 10) + 'px'; } /** * @param {?} found * @return {?} */ tagFound(found) { this.found = found; } /** * Open the node if it is not a leaf * @return {?} */ openNode() { if (!this.leaf) { this.open = true; } } /** * Close the node * @return {?} */ closeNode() { this.open = false; } /** * Toggle open/clode node * @return {?} */ toggleNode() { if (this.open) { this.open = false; } else { this.openNode(); } } /** * @return {?} */ refresh() { this.onDataChange(); } /** * @return {?} */ onNodeCliked() { this.toggleNode(); } /** * @return {?} */ onNodeContentClicked() { this.asiTreeView.onNodeClicked(this); } } AsiTreeViewNodeComponent.decorators = [ { type: Component, args: [{ selector: 'asi-tree-view-node', host: { 'class': 'asi-component asi-tree-view-node' }, template: "<div #treeNode class=\"tree-node\" (click)=\"onNodeCliked()\">\r\n <asi-fa-icon [icon]=\"open ? iconClose : iconOpen\" *ngIf=\"!isLeaf(data)\"></asi-fa-icon>\r\n <div class=\"tree-node-content\" (click)=\"onNodeContentClicked()\">\r\n <ng-template [ngTemplateOutlet]=\"template\"\r\n [ngTemplateOutletContext]=\"{$implicit : { data : data, open : open, firstNode : firstNode, lastNode : lastNode}}\"></ng-template>\r\n </div>\r\n</div>\r\n<div class=\"childNodes\" [hidden]=\"!open\">\r\n <asi-tree-view-node *ngFor=\"let nodeData of subData; let first = first; let last = last\" [nodeData]=\"nodeData\"\r\n [level]=\"level + 1\" [iconOpen]=\"iconOpen\" [iconClose]=\"iconClose\"\r\n [asiTreeView]=\"asiTreeView\" [nodeName]=\"nodeName\" [nodeDef]=\"nodeDef\" [leafDef]=\"leafDef\"\r\n [isLeaf]=\"isLeaf\" [firstNode]=\"first\" [lastNode]=\"last\"></asi-tree-view-node>\r\n</div>\r\n" }] } ]; /** @nocollapse */ AsiTreeViewNodeComponent.ctorParameters = () => [ { type: ElementRef }, { type: Renderer2 } ]; AsiTreeViewNodeComponent.propDecorators = { found: [{ type: HostBinding, args: ['class.found',] }], level: [{ type: Input }], nodeData: [{ type: Input }], nodeName: [{ type: Input }], nodeDef: [{ type: Input }], leafDef: [{ type: Input }], asiTreeView: [{ type: Input }], isLeaf: [{ type: Input }], firstNode: [{ type: Input }], lastNode: [{ type: Input }], iconOpen: [{ type: Input }], iconClose: [{ type: Input }], treeNode: [{ type: ViewChild, args: ['treeNode',] }], childNodes: [{ type: ViewChildren, args: [AsiTreeViewNodeComponent,] }] }; if (false) { /** @type {?} */ AsiTreeViewNodeComponent.prototype.found; /** @type {?} */ AsiTreeViewNodeComponent.prototype.level; /** @type {?} */ AsiTreeViewNodeComponent.prototype.data; /** @type {?} */ AsiTreeViewNodeComponent.prototype.nodeName; /** @type {?} */ AsiTreeViewNodeComponent.prototype.nodeDef; /** @type {?} */ AsiTreeViewNodeComponent.prototype.leafDef; /** @type {?} */ AsiTreeViewNodeComponent.prototype.asiTreeView; /** @type {?} */ AsiTreeViewNodeComponent.prototype.isLeaf; /** @type {?} */ AsiTreeViewNodeComponent.prototype.firstNode; /** @type {?} */ AsiTreeViewNodeComponent.prototype.lastNode; /** @type {?} */ AsiTreeViewNodeComponent.prototype.iconOpen; /** @type {?} */ AsiTreeViewNodeComponent.prototype.iconClose; /** @type {?} */ AsiTreeViewNodeComponent.prototype.treeNode; /** @type {?} */ AsiTreeViewNodeComponent.prototype.childNodes; /** @type {?} */ AsiTreeViewNodeComponent.prototype.template; /** @type {?} */ AsiTreeViewNodeComponent.prototype.leaf; /** @type {?} */ AsiTreeViewNodeComponent.prototype.subData; /** @type {?} */ AsiTreeViewNodeComponent.prototype.init; /** @type {?} */ AsiTreeViewNodeComponent.prototype.open; /** @type {?} */ AsiTreeViewNodeComponent.prototype.elementRef; /** @type {?} */ AsiTreeViewNodeComponent.prototype.renderer; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNpLXRyZWUtdmlldy1ub2RlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bhc2ktbmd0b29scy9saWIvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9hc2ktdHJlZS12aWV3L25vZGUvYXNpLXRyZWUtdmlldy1ub2RlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFBZSxLQUFLLEVBQUUsVUFBVSxFQUFVLFNBQVMsRUFDNUQsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUNoRCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsK0JBQStCLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6SCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUVwRSxPQUFPLEtBQUssRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBTzdDLE1BQU07Ozs7O0lBbUNKLFlBQW9CLFVBQXNCLEVBQVUsUUFBbUI7UUFBbkQsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVc7cUJBakNuQyxLQUFLO3NCQWdCYixJQUFJO29CQVdsQixLQUFLO3VCQUNKLElBQUk7b0JBQ1osS0FBSztvQkFFTCxLQUFLO0tBR1g7Ozs7O0lBN0JELElBQWEsUUFBUSxDQUFDLFFBQWE7UUFDakMsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7UUFDckIsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDZCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDckI7S0FDRjtJQUFBLENBQUM7Ozs7SUEwQkYsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztLQUNsQjs7OztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7O1FBRWhELElBQUksWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTlGLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztZQUN0QyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxNQUFNLENBQUMsQ0FBQztTQUM3RDtRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ04sSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztZQUN0QyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxNQUFNLENBQUMsQ0FBQztTQUM3RDtRQUVELElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO0tBQ2pGOzs7OztJQUVNLFFBQVEsQ0FBQyxLQUFXO1FBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDOzs7Ozs7SUFJZCxRQUFRO1FBQ2IsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNmLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1NBQ2xCOzs7Ozs7SUFNSSxTQUFTO1FBQ2QsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7Ozs7OztJQU1iLFVBQVU7UUFDZixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNkLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1NBQ25CO1FBQUMsSUFBSSxDQUFDLENBQUM7WUFDTixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDakI7Ozs7O0lBR0ksT0FBTztRQUNaLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQzs7Ozs7SUFHdEIsWUFBWTtRQUNWLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztLQUNuQjs7OztJQUVELG9CQUFvQjtRQUNsQixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUN0Qzs7O1lBdkdGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsb0JBQW9CO2dCQUM5QixJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsa0NBQWtDLEVBQUU7Z0JBQ3JELHE5QkFBZ0Q7YUFDakQ7Ozs7WUFaZ0MsVUFBVTtZQUFVLFNBQVM7OztvQkFlM0QsV0FBVyxTQUFDLGFBQWE7b0JBRXpCLEtBQUs7dUJBR0wsS0FBSzt1QkFPTCxLQUFLO3NCQUNMLEtBQUs7c0JBQ0wsS0FBSzswQkFDTCxLQUFLO3FCQUNMLEtBQUs7d0JBQ0wsS0FBSzt1QkFDTCxLQUFLO3VCQUVMLEtBQUs7d0JBQ0wsS0FBSzt1QkFFTCxTQUFTLFNBQUMsVUFBVTt5QkFDcEIsWUFBWSxTQUFDLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LCBUZW1wbGF0ZVJlZiwgSW5wdXQsIEVsZW1lbnRSZWYsIE9uSW5pdCwgUmVuZGVyZXIyLFxyXG4gIFZpZXdDaGlsZCwgVmlld0NoaWxkcmVuLCBRdWVyeUxpc3QsIEhvc3RCaW5kaW5nXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFzaUNvbXBvbmVudFRlbXBsYXRlVHJlZU5vZGVEZWYsIEFzaUNvbXBvbmVudFRlbXBsYXRlVHJlZUxlYWZEZWYgfSBmcm9tICcuLy4uLy4uL2NvbW1vbi9hc2ktY29tcG9uZW50LXRlbXBsYXRlJztcclxuaW1wb3J0IHsgQXNpVHJlZVZpZXdDb21wb25lbnQgfSBmcm9tICcuLy4uL2FzaS10cmVlLXZpZXcuY29tcG9uZW50JztcclxuXHJcbmltcG9ydCAqIGFzIG5oIGZyb20gJy4uLy4uLy4uL25hdGl2ZS1oZWxwZXInO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhc2ktdHJlZS12aWV3LW5vZGUnLFxyXG4gIGhvc3Q6IHsgJ2NsYXNzJzogJ2FzaS1jb21wb25lbnQgYXNpLXRyZWUtdmlldy1ub2RlJyB9LFxyXG4gIHRlbXBsYXRlVXJsOiAnYXNpLXRyZWUtdmlldy1ub2RlLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQXNpVHJlZVZpZXdOb2RlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mb3VuZCcpIGZvdW5kID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIGxldmVsOiBudW1iZXI7XHJcblxyXG4gIGRhdGE6IGFueTtcclxuICBASW5wdXQoKSBzZXQgbm9kZURhdGEobm9kZURhdGE6IGFueSkge1xyXG4gICAgdGhpcy5kYXRhID0gbm9kZURhdGE7XHJcbiAgICBpZiAodGhpcy5pbml0KSB7XHJcbiAgICAgIHRoaXMub25EYXRhQ2hhbmdlKCk7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgQElucHV0KCkgbm9kZU5hbWU6IHN0cmluZztcclxuICBASW5wdXQoKSBub2RlRGVmOiBBc2lDb21wb25lbnRUZW1wbGF0ZVRyZWVOb2RlRGVmO1xyXG4gIEBJbnB1dCgpIGxlYWZEZWY6IEFzaUNvbXBvbmVudFRlbXBsYXRlVHJlZUxlYWZEZWY7XHJcbiAgQElucHV0KCkgYXNpVHJlZVZpZXc6IEFzaVRyZWVWaWV3Q29tcG9uZW50O1xyXG4gIEBJbnB1dCgpIGlzTGVhZjogRnVuY3Rpb24gPSBudWxsO1xyXG4gIEBJbnB1dCgpIGZpcnN0Tm9kZTogYm9vbGVhbjtcclxuICBASW5wdXQoKSBsYXN0Tm9kZTogYm9vbGVhbjtcclxuXHJcbiAgQElucHV0KCkgaWNvbk9wZW46IHN0cmluZztcclxuICBASW5wdXQoKSBpY29uQ2xvc2U6IHN0cmluZztcclxuXHJcbiAgQFZpZXdDaGlsZCgndHJlZU5vZGUnKSB0cmVlTm9kZTogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkcmVuKEFzaVRyZWVWaWV3Tm9kZUNvbXBvbmVudCkgcHVibGljIGNoaWxkTm9kZXM6IFF1ZXJ5TGlzdDxBc2lUcmVlVmlld05vZGVDb21wb25lbnQ+O1xyXG5cclxuICB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBwdWJsaWMgbGVhZiA9IGZhbHNlO1xyXG4gIHN1YkRhdGE6IGFueSA9IG51bGw7XHJcbiAgaW5pdCA9IGZhbHNlO1xyXG5cclxuICBvcGVuID0gZmFsc2VcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5vbkRhdGFDaGFuZ2UoKTtcclxuICAgIHRoaXMuaW5pdCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBvbkRhdGFDaGFuZ2UoKSB7XHJcbiAgICB0aGlzLnN1YkRhdGEgPSBuaC5nZXQodGhpcy5kYXRhLCB0aGlzLm5vZGVOYW1lKTtcclxuXHJcbiAgICBsZXQgbGVhZlRlbXBsYXRlID0gKHRoaXMuaXNMZWFmICYmIHRoaXMuaXNMZWFmKHRoaXMuZGF0YSkpIHx8ICghdGhpcy5pc0xlYWYgJiYgIXRoaXMuc3ViRGF0YSk7XHJcblxyXG4gICAgaWYgKGxlYWZUZW1wbGF0ZSkge1xyXG4gICAgICB0aGlzLnRlbXBsYXRlID0gdGhpcy5sZWFmRGVmLnRlbXBsYXRlO1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMudHJlZU5vZGUubmF0aXZlRWxlbWVudCwgJ2xlYWYnKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudGVtcGxhdGUgPSB0aGlzLm5vZGVEZWYudGVtcGxhdGU7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy50cmVlTm9kZS5uYXRpdmVFbGVtZW50LCAnbm9kZScpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLm1hcmdpbkxlZnQgPSAoKHRoaXMubGV2ZWwgLSAxKSAqIDEwKSArICdweCc7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdGFnRm91bmQoZm91bmQ6IHRydWUpIHtcclxuICAgIHRoaXMuZm91bmQgPSBmb3VuZDtcclxuICB9XHJcblxyXG4gIC8qKiBPcGVuIHRoZSBub2RlIGlmIGl0IGlzIG5vdCBhIGxlYWYgKi9cclxuICBwdWJsaWMgb3Blbk5vZGUoKSB7XHJcbiAgICBpZiAoIXRoaXMubGVhZikge1xyXG4gICAgICB0aGlzLm9wZW4gPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xvc2UgdGhlIG5vZGVcclxuICAgKi9cclxuICBwdWJsaWMgY2xvc2VOb2RlKCkge1xyXG4gICAgdGhpcy5vcGVuID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUb2dnbGUgb3Blbi9jbG9kZSBub2RlXHJcbiAgICovXHJcbiAgcHVibGljIHRvZ2dsZU5vZGUoKSB7XHJcbiAgICBpZiAodGhpcy5vcGVuKSB7XHJcbiAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5vcGVuTm9kZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlZnJlc2goKSB7XHJcbiAgICB0aGlzLm9uRGF0YUNoYW5nZSgpO1xyXG4gIH1cclxuXHJcbiAgb25Ob2RlQ2xpa2VkKCkge1xyXG4gICAgdGhpcy50b2dnbGVOb2RlKCk7XHJcbiAgfVxyXG5cclxuICBvbk5vZGVDb250ZW50Q2xpY2tlZCgpIHtcclxuICAgIHRoaXMuYXNpVHJlZVZpZXcub25Ob2RlQ2xpY2tlZCh0aGlzKTtcclxuICB9XHJcbn1cclxuIl19