UNPKG

@asi-ngtools/lib

Version:

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

122 lines (121 loc) 11 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import { AsiTabContent } from './asi-tab-content/asi-tab-content.component'; import { AsiTab } from './asi-tab/asi-tab.component'; import { Component, QueryList, ContentChildren, ViewChild, Output, EventEmitter, Input } from '@angular/core'; import * as nh from '../../native-helper'; export class AsiTabGroup { constructor() { /** * Event emitted when a tab is manually selected */ this.onTabChange = new EventEmitter(); this.currentTabId = null; this.tabs = new Array(); } /** * @param {?} tab * @return {?} */ showTab(tab) { this.asiTableContent.showTab(tab); this.currentTabId = tab.tabId; this.onTabChange.emit(tab); } /** * @param {?} idTab * @return {?} */ showTabById(idTab) { this.asiTableContent.showTabById(idTab); } /** * @return {?} */ getTabs() { return this.tabs; } /** * @return {?} */ ngAfterContentInit() { this.manageTabContent(this.queryTabs.toArray()); this.asiTableContent.setTabs(this.tabs); /**Listen to content possible changes */ this.queryTabs.changes.subscribe((asiTabs) => { this.manageTabContent(asiTabs); if (!nh.isEmpty(asiTabs) && (!this.currentTabId || !this.currentTabStillExist())) { this.currentTabId = this.tabs[0].tabId; } this.asiTableContent.setTabs(this.tabs); this.asiTableContent.showTabById(this.currentTabId); }); if (this.activeTabId != null) { this.currentTabId = this.activeTabId; } if (!this.currentTabId && !nh.isEmpty(this.tabs)) { this.currentTabId = this.tabs[0].tabId; } this.asiTableContent.showTabById(this.currentTabId); } /** * @return {?} */ currentTabStillExist() { return nh.find(this.tabs, (tab) => tab.tabId === this.currentTabId) != null; } /** * @param {?} asiTabs * @return {?} */ manageTabContent(asiTabs) { /** @type {?} */ let index = -1; this.tabs = []; asiTabs.forEach(tab => { tab.index = ++index; if (!tab.tabId) { tab.tabId = 'tab' + index; } this.tabs.push(tab); }); } } AsiTabGroup.decorators = [ { type: Component, args: [{ selector: 'asi-tab-group', host: { 'class': 'asi-component asi-tab-group' }, template: "<div class=\"asi-tab-group\" [ngClass]=\"asiTableContent?.currentTab?.tabClass || ''\">\r\n <div class=\"tab-header\">\r\n <ng-container *ngFor=\"let tab of getTabs()\">\r\n <button type=\"button\" *ngIf=\"tab.headerDef == null\" (click)=\"showTab(tab)\" [translate]=\"tab.label\" [ngClass]=\"{ 'active' : tab.active}\"></button>\r\n <button type=\"button\" *ngIf=\"tab.headerDef != null\" (click)=\"showTab(tab)\" [ngClass]=\"{'active' : tab.active}\">\r\n <ng-template [ngTemplateOutlet]=\"tab.headerDef.template\" [ngTemplateOutletContext]=\"{$implicit : tab}\"></ng-template>\r\n </button>\r\n </ng-container>\r\n </div>\r\n <div class=\"tab-content\">\r\n <asi-tab-content [tabs]=\"getTabs()\"></asi-tab-content>\r\n </div>\r\n</div>\r\n" }] } ]; /** @nocollapse */ AsiTabGroup.ctorParameters = () => []; AsiTabGroup.propDecorators = { queryTabs: [{ type: ContentChildren, args: [AsiTab,] }], asiTableContent: [{ type: ViewChild, args: [AsiTabContent,] }], onTabChange: [{ type: Output }], activeTabId: [{ type: Input }] }; if (false) { /** @type {?} */ AsiTabGroup.prototype.queryTabs; /** @type {?} */ AsiTabGroup.prototype.asiTableContent; /** * Event emitted when a tab is manually selected * @type {?} */ AsiTabGroup.prototype.onTabChange; /** * Active tab id * @type {?} */ AsiTabGroup.prototype.activeTabId; /** @type {?} */ AsiTabGroup.prototype.currentTabId; /** @type {?} */ AsiTabGroup.prototype.tabs; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNpLXRhYi1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYXNpLW5ndG9vbHMvbGliLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvYXNpLXRhYi1ncm91cC9hc2ktdGFiLWdyb3VwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNyRCxPQUFPLEVBQ0wsU0FBUyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUNoRCxNQUFNLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFDNUIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUFLLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQU8xQyxNQUFNO0lBZ0JKOzs7OzJCQVR3QixJQUFJLFlBQVksRUFBVTs0QkFLM0IsSUFBSTtvQkFFcEIsSUFBSSxLQUFLLEVBQVU7S0FFVDs7Ozs7SUFFakIsT0FBTyxDQUFDLEdBQVc7UUFDakIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO1FBQzlCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQzVCOzs7OztJQUVNLFdBQVcsQ0FBQyxLQUFhO1FBQzlCLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDOzs7OztJQUcxQyxPQUFPO1FBQ0wsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7S0FDbEI7Ozs7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7O1FBRXhDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQzNDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMvQixFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDakYsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQzthQUN4QztZQUNELElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDckQsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQzdCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztTQUN0QztRQUNELEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1NBQ3hDO1FBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0tBQ3JEOzs7O0lBRU8sb0JBQW9CO1FBQzFCLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLElBQUksQ0FBQzs7Ozs7O0lBR3RFLGdCQUFnQixDQUFDLE9BQWlCOztRQUN4QyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2YsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNwQixHQUFHLENBQUMsS0FBSyxHQUFHLEVBQUUsS0FBSyxDQUFDO1lBQ3BCLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQ2YsR0FBRyxDQUFDLEtBQUssR0FBRyxLQUFLLEdBQUcsS0FBSyxDQUFDO2FBQzNCO1lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7U0FDcEIsQ0FBQyxDQUFDOzs7O1lBeEVOLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsZUFBZTtnQkFDekIsSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLDZCQUE2QixFQUFFO2dCQUNoRCx1eEJBQTJDO2FBQzVDOzs7Ozt3QkFHRSxlQUFlLFNBQUMsTUFBTTs4QkFFdEIsU0FBUyxTQUFDLGFBQWE7MEJBR3ZCLE1BQU07MEJBR04sS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzaVRhYkNvbnRlbnQgfSBmcm9tICcuL2FzaS10YWItY29udGVudC9hc2ktdGFiLWNvbnRlbnQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQXNpVGFiIH0gZnJvbSAnLi9hc2ktdGFiL2FzaS10YWIuY29tcG9uZW50JztcclxuaW1wb3J0IHtcclxuICBDb21wb25lbnQsIFF1ZXJ5TGlzdCwgQ29udGVudENoaWxkcmVuLCBWaWV3Q2hpbGQsIEFmdGVyQ29udGVudEluaXQsXHJcbiAgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIElucHV0XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCAqIGFzIG5oIGZyb20gJy4uLy4uL25hdGl2ZS1oZWxwZXInO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhc2ktdGFiLWdyb3VwJyxcclxuICBob3N0OiB7ICdjbGFzcyc6ICdhc2ktY29tcG9uZW50IGFzaS10YWItZ3JvdXAnIH0sXHJcbiAgdGVtcGxhdGVVcmw6ICdhc2ktdGFiLWdyb3VwLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQXNpVGFiR3JvdXAgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcclxuXHJcbiAgQENvbnRlbnRDaGlsZHJlbihBc2lUYWIpIHF1ZXJ5VGFiczogUXVlcnlMaXN0PEFzaVRhYj47XHJcblxyXG4gIEBWaWV3Q2hpbGQoQXNpVGFiQ29udGVudCkgYXNpVGFibGVDb250ZW50OiBBc2lUYWJDb250ZW50O1xyXG5cclxuICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIGEgdGFiIGlzIG1hbnVhbGx5IHNlbGVjdGVkICovXHJcbiAgQE91dHB1dCgpIG9uVGFiQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxBc2lUYWI+KClcclxuXHJcbiAgLyoqIEFjdGl2ZSB0YWIgaWQgKi9cclxuICBASW5wdXQoKSBhY3RpdmVUYWJJZDogc3RyaW5nO1xyXG5cclxuICBwcml2YXRlIGN1cnJlbnRUYWJJZCA9IG51bGw7XHJcblxyXG4gIHRhYnMgPSBuZXcgQXJyYXk8QXNpVGFiPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBzaG93VGFiKHRhYjogQXNpVGFiKSB7XHJcbiAgICB0aGlzLmFzaVRhYmxlQ29udGVudC5zaG93VGFiKHRhYik7XHJcbiAgICB0aGlzLmN1cnJlbnRUYWJJZCA9IHRhYi50YWJJZDtcclxuICAgIHRoaXMub25UYWJDaGFuZ2UuZW1pdCh0YWIpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNob3dUYWJCeUlkKGlkVGFiOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuYXNpVGFibGVDb250ZW50LnNob3dUYWJCeUlkKGlkVGFiKTtcclxuICB9XHJcblxyXG4gIGdldFRhYnMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJzO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xyXG4gICAgdGhpcy5tYW5hZ2VUYWJDb250ZW50KHRoaXMucXVlcnlUYWJzLnRvQXJyYXkoKSk7XHJcbiAgICB0aGlzLmFzaVRhYmxlQ29udGVudC5zZXRUYWJzKHRoaXMudGFicyk7XHJcbiAgICAvKipMaXN0ZW4gdG8gY29udGVudCBwb3NzaWJsZSBjaGFuZ2VzICovXHJcbiAgICB0aGlzLnF1ZXJ5VGFicy5jaGFuZ2VzLnN1YnNjcmliZSgoYXNpVGFicykgPT4ge1xyXG4gICAgICB0aGlzLm1hbmFnZVRhYkNvbnRlbnQoYXNpVGFicyk7XHJcbiAgICAgIGlmICghbmguaXNFbXB0eShhc2lUYWJzKSAmJiAoIXRoaXMuY3VycmVudFRhYklkIHx8ICF0aGlzLmN1cnJlbnRUYWJTdGlsbEV4aXN0KCkpKSB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50VGFiSWQgPSB0aGlzLnRhYnNbMF0udGFiSWQ7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5hc2lUYWJsZUNvbnRlbnQuc2V0VGFicyh0aGlzLnRhYnMpO1xyXG4gICAgICB0aGlzLmFzaVRhYmxlQ29udGVudC5zaG93VGFiQnlJZCh0aGlzLmN1cnJlbnRUYWJJZCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAodGhpcy5hY3RpdmVUYWJJZCAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFRhYklkID0gdGhpcy5hY3RpdmVUYWJJZDtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5jdXJyZW50VGFiSWQgJiYgIW5oLmlzRW1wdHkodGhpcy50YWJzKSkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRUYWJJZCA9IHRoaXMudGFic1swXS50YWJJZDtcclxuICAgIH1cclxuICAgIHRoaXMuYXNpVGFibGVDb250ZW50LnNob3dUYWJCeUlkKHRoaXMuY3VycmVudFRhYklkKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3VycmVudFRhYlN0aWxsRXhpc3QoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gbmguZmluZCh0aGlzLnRhYnMsICh0YWIpID0+IHRhYi50YWJJZCA9PT0gdGhpcy5jdXJyZW50VGFiSWQpICE9IG51bGw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG1hbmFnZVRhYkNvbnRlbnQoYXNpVGFiczogQXNpVGFiW10pIHtcclxuICAgIGxldCBpbmRleCA9IC0xO1xyXG4gICAgdGhpcy50YWJzID0gW107XHJcbiAgICBhc2lUYWJzLmZvckVhY2godGFiID0+IHtcclxuICAgICAgdGFiLmluZGV4ID0gKytpbmRleDtcclxuICAgICAgaWYgKCF0YWIudGFiSWQpIHtcclxuICAgICAgICB0YWIudGFiSWQgPSAndGFiJyArIGluZGV4O1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudGFicy5wdXNoKHRhYilcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=