UNPKG

@asi-ngtools/lib

Version:

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

150 lines (149 loc) 10.4 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import { Component, ContentChild, Input, ViewChildren, QueryList, Output, EventEmitter } from '@angular/core'; import { AsiComponentTemplateTreeNodeDef, AsiComponentTemplateTreeLeafDef } from './../common/asi-component-template'; import { AsiTreeViewNodeComponent } from './node/asi-tree-view-node.component'; import * as nh from '../../native-helper'; import { AsiTreeViewService } from './asi-tree-view.service'; export class AsiTreeViewComponent { /** * @param {?} asiTreeViewService */ constructor(asiTreeViewService) { this.asiTreeViewService = asiTreeViewService; this.baseData = []; this.filteredData = []; /** * Open icon (fontawesome) */ this.iconOpen = 'fas fa-chevron-down'; /** * Close icon (fontawesome) */ this.iconClose = 'fas fa-chevron-up'; /** * define the name of the sub nodes to display */ this.nodeName = ''; /** * If this function is define it's used to define if the node is a leaf */ this.isLeaf = null; /** * Event emitted when a node is selected */ this.onNodeSelected = new EventEmitter(); } /** * List of data to display * @param {?} data * @return {?} */ set data(data) { this.baseData = data; this.filteredData = data; } ; /** * @param {?} nodeFinder * @return {?} */ openNode(nodeFinder) { this.asiTreeViewService.openNode(this.nodes.toArray(), nodeFinder); } /** * @return {?} */ closeAll() { this.asiTreeViewService.closeAll(this.nodes.toArray()); } /** * @return {?} */ openAll() { this.asiTreeViewService.openAll(this.nodes.toArray()); } /** * @param {?} nodeFinder * @param {?=} keepLeaves * @param {?=} isLeaf * @return {?} */ filterNodes(nodeFinder, keepLeaves, isLeaf) { this.filteredData = this.asiTreeViewService.filterNodes(nh.cloneDeep(this.baseData), this.nodeName, nodeFinder, keepLeaves, isLeaf); setTimeout(() => { this.openAll(); }); } /** * @param {?} node * @return {?} */ onNodeClicked(node) { this.onNodeSelected.emit(node); } } AsiTreeViewComponent.decorators = [ { type: Component, args: [{ selector: 'asi-tree-view', host: { 'class': 'asi-component asi-tree-view' }, template: "<asi-tree-view-node *ngFor=\"let nodeData of filteredData; let first = first; let last = last\"\r\n [iconOpen]=\"iconOpen\" [iconClose]=\"iconClose\" [nodeData]=\"nodeData\" [asiTreeView]=\"this\"\r\n [level]=\"1\" [nodeName]=\"nodeName\" [nodeDef]=\"nodeDef\" [leafDef]=\"leafDef\" [isLeaf]=\"isLeaf\"\r\n [firstNode]=\"first\" [lastNode]=\"last\"></asi-tree-view-node>\r\n" }] } ]; /** @nocollapse */ AsiTreeViewComponent.ctorParameters = () => [ { type: AsiTreeViewService } ]; AsiTreeViewComponent.propDecorators = { nodeDef: [{ type: ContentChild, args: [AsiComponentTemplateTreeNodeDef,] }], leafDef: [{ type: ContentChild, args: [AsiComponentTemplateTreeLeafDef,] }], iconOpen: [{ type: Input }], iconClose: [{ type: Input }], data: [{ type: Input }], nodeName: [{ type: Input }], isLeaf: [{ type: Input }], onNodeSelected: [{ type: Output }], nodes: [{ type: ViewChildren, args: [AsiTreeViewNodeComponent,] }] }; if (false) { /** @type {?} */ AsiTreeViewComponent.prototype.baseData; /** @type {?} */ AsiTreeViewComponent.prototype.filteredData; /** @type {?} */ AsiTreeViewComponent.prototype.nodeDef; /** @type {?} */ AsiTreeViewComponent.prototype.leafDef; /** * Open icon (fontawesome) * @type {?} */ AsiTreeViewComponent.prototype.iconOpen; /** * Close icon (fontawesome) * @type {?} */ AsiTreeViewComponent.prototype.iconClose; /** * define the name of the sub nodes to display * @type {?} */ AsiTreeViewComponent.prototype.nodeName; /** * If this function is define it's used to define if the node is a leaf * @type {?} */ AsiTreeViewComponent.prototype.isLeaf; /** * Event emitted when a node is selected * @type {?} */ AsiTreeViewComponent.prototype.onNodeSelected; /** @type {?} */ AsiTreeViewComponent.prototype.nodes; /** @type {?} */ AsiTreeViewComponent.prototype.asiTreeViewService; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNpLXRyZWUtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYXNpLW5ndG9vbHMvbGliLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvYXNpLXRyZWUtdmlldy9hc2ktdHJlZS12aWV3LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN0SCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMvRSxPQUFPLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBTzdELE1BQU07Ozs7SUErQkosWUFBb0Isa0JBQXNDO1FBQXRDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7d0JBN0IzQixFQUFFOzRCQUNOLEVBQUU7Ozs7d0JBTVQscUJBQXFCOzs7O3lCQUVwQixtQkFBbUI7Ozs7d0JBVXBCLEVBQUU7Ozs7c0JBR00sSUFBSTs7Ozs4QkFHTCxJQUFJLFlBQVksRUFBTztLQUtqRDs7Ozs7O0lBbEJELElBQ0ksSUFBSSxDQUFDLElBQWdCO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0tBQzFCO0lBQUEsQ0FBQzs7Ozs7SUFnQkssUUFBUSxDQUFDLFVBQW9CO1FBQ2xDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQzs7Ozs7SUFHOUQsUUFBUTtRQUNiLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDOzs7OztJQUdsRCxPQUFPO1FBQ1osSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7Ozs7Ozs7O0lBR3hELFdBQVcsQ0FBQyxVQUFvQixFQUFFLFVBQW9CLEVBQUUsTUFBaUI7UUFDdkUsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNwSSxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ2hCLENBQUMsQ0FBQztLQUNKOzs7OztJQUVNLGFBQWEsQ0FBQyxJQUE4QjtRQUNqRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzs7OztZQTNEbEMsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxlQUFlO2dCQUN6QixJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUU7Z0JBQ2hELDJiQUEyQzthQUM1Qzs7OztZQU5RLGtCQUFrQjs7O3NCQVl4QixZQUFZLFNBQUMsK0JBQStCO3NCQUM1QyxZQUFZLFNBQUMsK0JBQStCO3VCQUc1QyxLQUFLO3dCQUVMLEtBQUs7bUJBR0wsS0FBSzt1QkFPTCxLQUFLO3FCQUdMLEtBQUs7NkJBR0wsTUFBTTtvQkFFTixZQUFZLFNBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIElucHV0LCBWaWV3Q2hpbGRyZW4sIFF1ZXJ5TGlzdCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQXNpQ29tcG9uZW50VGVtcGxhdGVUcmVlTm9kZURlZiwgQXNpQ29tcG9uZW50VGVtcGxhdGVUcmVlTGVhZkRlZiB9IGZyb20gJy4vLi4vY29tbW9uL2FzaS1jb21wb25lbnQtdGVtcGxhdGUnO1xyXG5pbXBvcnQgeyBBc2lUcmVlVmlld05vZGVDb21wb25lbnQgfSBmcm9tICcuL25vZGUvYXNpLXRyZWUtdmlldy1ub2RlLmNvbXBvbmVudCc7XHJcbmltcG9ydCAqIGFzIG5oIGZyb20gJy4uLy4uL25hdGl2ZS1oZWxwZXInO1xyXG5pbXBvcnQgeyBBc2lUcmVlVmlld1NlcnZpY2UgfSBmcm9tICcuL2FzaS10cmVlLXZpZXcuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FzaS10cmVlLXZpZXcnLFxyXG4gIGhvc3Q6IHsgJ2NsYXNzJzogJ2FzaS1jb21wb25lbnQgYXNpLXRyZWUtdmlldycgfSxcclxuICB0ZW1wbGF0ZVVybDogJ2FzaS10cmVlLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXNpVHJlZVZpZXdDb21wb25lbnQge1xyXG5cclxuICBwcml2YXRlIGJhc2VEYXRhOiBBcnJheTxhbnk+ID0gW107XHJcbiAgZmlsdGVyZWREYXRhOiBBcnJheTxhbnk+ID0gW107XHJcblxyXG4gIEBDb250ZW50Q2hpbGQoQXNpQ29tcG9uZW50VGVtcGxhdGVUcmVlTm9kZURlZikgbm9kZURlZjogQXNpQ29tcG9uZW50VGVtcGxhdGVUcmVlTm9kZURlZjtcclxuICBAQ29udGVudENoaWxkKEFzaUNvbXBvbmVudFRlbXBsYXRlVHJlZUxlYWZEZWYpIGxlYWZEZWY6IEFzaUNvbXBvbmVudFRlbXBsYXRlVHJlZUxlYWZEZWY7XHJcblxyXG4gIC8qKiBPcGVuIGljb24gKGZvbnRhd2Vzb21lKSAqL1xyXG4gIEBJbnB1dCgpIGljb25PcGVuID0gJ2ZhcyBmYS1jaGV2cm9uLWRvd24nO1xyXG4gIC8qKiBDbG9zZSBpY29uIChmb250YXdlc29tZSkgKi9cclxuICBASW5wdXQoKSBpY29uQ2xvc2UgPSAnZmFzIGZhLWNoZXZyb24tdXAnO1xyXG5cclxuICAvKiogTGlzdCBvZiBkYXRhIHRvIGRpc3BsYXkgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCBkYXRhKGRhdGE6IEFycmF5PGFueT4pIHtcclxuICAgIHRoaXMuYmFzZURhdGEgPSBkYXRhO1xyXG4gICAgdGhpcy5maWx0ZXJlZERhdGEgPSBkYXRhO1xyXG4gIH07XHJcblxyXG4gIC8qKiBkZWZpbmUgdGhlIG5hbWUgb2YgdGhlIHN1YiBub2RlcyB0byBkaXNwbGF5ICAqL1xyXG4gIEBJbnB1dCgpIG5vZGVOYW1lID0gJyc7XHJcblxyXG4gIC8qKiBJZiB0aGlzIGZ1bmN0aW9uIGlzIGRlZmluZSBpdCdzIHVzZWQgdG8gZGVmaW5lIGlmIHRoZSBub2RlIGlzIGEgbGVhZiAqL1xyXG4gIEBJbnB1dCgpIGlzTGVhZjogRnVuY3Rpb24gPSBudWxsO1xyXG5cclxuICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIGEgbm9kZSBpcyBzZWxlY3RlZCAqL1xyXG4gIEBPdXRwdXQoKSBvbk5vZGVTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBAVmlld0NoaWxkcmVuKEFzaVRyZWVWaWV3Tm9kZUNvbXBvbmVudCkgbm9kZXM6IFF1ZXJ5TGlzdDxBc2lUcmVlVmlld05vZGVDb21wb25lbnQ+O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFzaVRyZWVWaWV3U2VydmljZTogQXNpVHJlZVZpZXdTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb3Blbk5vZGUobm9kZUZpbmRlcjogRnVuY3Rpb24pIHtcclxuICAgIHRoaXMuYXNpVHJlZVZpZXdTZXJ2aWNlLm9wZW5Ob2RlKHRoaXMubm9kZXMudG9BcnJheSgpLCBub2RlRmluZGVyKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbG9zZUFsbCgpIHtcclxuICAgIHRoaXMuYXNpVHJlZVZpZXdTZXJ2aWNlLmNsb3NlQWxsKHRoaXMubm9kZXMudG9BcnJheSgpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvcGVuQWxsKCkge1xyXG4gICAgdGhpcy5hc2lUcmVlVmlld1NlcnZpY2Uub3BlbkFsbCh0aGlzLm5vZGVzLnRvQXJyYXkoKSk7XHJcbiAgfVxyXG5cclxuICBmaWx0ZXJOb2Rlcyhub2RlRmluZGVyOiBGdW5jdGlvbiwga2VlcExlYXZlcz86IGJvb2xlYW4sIGlzTGVhZj86IEZ1bmN0aW9uKSB7XHJcbiAgICB0aGlzLmZpbHRlcmVkRGF0YSA9IHRoaXMuYXNpVHJlZVZpZXdTZXJ2aWNlLmZpbHRlck5vZGVzKG5oLmNsb25lRGVlcCh0aGlzLmJhc2VEYXRhKSwgdGhpcy5ub2RlTmFtZSwgbm9kZUZpbmRlciwga2VlcExlYXZlcywgaXNMZWFmKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLm9wZW5BbGwoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uTm9kZUNsaWNrZWQobm9kZTogQXNpVHJlZVZpZXdOb2RlQ29tcG9uZW50KSB7XHJcbiAgICB0aGlzLm9uTm9kZVNlbGVjdGVkLmVtaXQobm9kZSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==