@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
JavaScript
/**
* @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