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