@asi-ngtools/lib
Version:
This project is a little components library, simple to use, which will help you to simplify your project.
148 lines (147 loc) • 11.8 kB
JavaScript
/**
* @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';
var AsiTabGroup = /** @class */ (function () {
function AsiTabGroup() {
/**
* Event emitted when a tab is manually selected
*/
this.onTabChange = new EventEmitter();
this.currentTabId = null;
this.tabs = new Array();
}
/**
* @param {?} tab
* @return {?}
*/
AsiTabGroup.prototype.showTab = /**
* @param {?} tab
* @return {?}
*/
function (tab) {
this.asiTableContent.showTab(tab);
this.currentTabId = tab.tabId;
this.onTabChange.emit(tab);
};
/**
* @param {?} idTab
* @return {?}
*/
AsiTabGroup.prototype.showTabById = /**
* @param {?} idTab
* @return {?}
*/
function (idTab) {
this.asiTableContent.showTabById(idTab);
};
/**
* @return {?}
*/
AsiTabGroup.prototype.getTabs = /**
* @return {?}
*/
function () {
return this.tabs;
};
/**
* @return {?}
*/
AsiTabGroup.prototype.ngAfterContentInit = /**
* @return {?}
*/
function () {
var _this = this;
this.manageTabContent(this.queryTabs.toArray());
this.asiTableContent.setTabs(this.tabs);
/**Listen to content possible changes */
this.queryTabs.changes.subscribe(function (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 {?}
*/
AsiTabGroup.prototype.currentTabStillExist = /**
* @return {?}
*/
function () {
var _this = this;
return nh.find(this.tabs, function (tab) { return tab.tabId === _this.currentTabId; }) != null;
};
/**
* @param {?} asiTabs
* @return {?}
*/
AsiTabGroup.prototype.manageTabContent = /**
* @param {?} asiTabs
* @return {?}
*/
function (asiTabs) {
var _this = this;
/** @type {?} */
var index = -1;
this.tabs = [];
asiTabs.forEach(function (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 = function () { return []; };
AsiTabGroup.propDecorators = {
queryTabs: [{ type: ContentChildren, args: [AsiTab,] }],
asiTableContent: [{ type: ViewChild, args: [AsiTabContent,] }],
onTabChange: [{ type: Output }],
activeTabId: [{ type: Input }]
};
return AsiTabGroup;
}());
export { AsiTabGroup };
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNpLXRhYi1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYXNpLW5ndG9vbHMvbGliLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvYXNpLXRhYi1ncm91cC9hc2ktdGFiLWdyb3VwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNyRCxPQUFPLEVBQ0wsU0FBUyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUNoRCxNQUFNLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFDNUIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUFLLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7SUF1QnhDOzs7OzJCQVR3QixJQUFJLFlBQVksRUFBVTs0QkFLM0IsSUFBSTtvQkFFcEIsSUFBSSxLQUFLLEVBQVU7S0FFVDs7Ozs7SUFFakIsNkJBQU87Ozs7SUFBUCxVQUFRLEdBQVc7UUFDakIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO1FBQzlCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQzVCOzs7OztJQUVNLGlDQUFXOzs7O2NBQUMsS0FBYTtRQUM5QixJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQzs7Ozs7SUFHMUMsNkJBQU87OztJQUFQO1FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7S0FDbEI7Ozs7SUFFRCx3Q0FBa0I7OztJQUFsQjtRQUFBLGlCQW9CQztRQW5CQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzs7UUFFeEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFVBQUMsT0FBTztZQUN2QyxLQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDL0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsS0FBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pGLEtBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7YUFDeEM7WUFDRCxLQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxLQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDeEMsS0FBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsS0FBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ3JELENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztZQUM3QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7U0FDdEM7UUFDRCxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztTQUN4QztRQUNELElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztLQUNyRDs7OztJQUVPLDBDQUFvQjs7Ozs7UUFDMUIsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxVQUFDLEdBQUcsSUFBSyxPQUFBLEdBQUcsQ0FBQyxLQUFLLEtBQUssS0FBSSxDQUFDLFlBQVksRUFBL0IsQ0FBK0IsQ0FBQyxJQUFJLElBQUksQ0FBQzs7Ozs7O0lBR3RFLHNDQUFnQjs7OztjQUFDLE9BQWlCOzs7UUFDeEMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNmLE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFBQSxHQUFHO1lBQ2pCLEdBQUcsQ0FBQyxLQUFLLEdBQUcsRUFBRSxLQUFLLENBQUM7WUFDcEIsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDZixHQUFHLENBQUMsS0FBSyxHQUFHLEtBQUssR0FBRyxLQUFLLENBQUM7YUFDM0I7WUFDRCxLQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtTQUNwQixDQUFDLENBQUM7OztnQkF4RU4sU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO29CQUN6QixJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUU7b0JBQ2hELHV4QkFBMkM7aUJBQzVDOzs7Ozs0QkFHRSxlQUFlLFNBQUMsTUFBTTtrQ0FFdEIsU0FBUyxTQUFDLGFBQWE7OEJBR3ZCLE1BQU07OEJBR04sS0FBSzs7c0JBdkJSOztTQWFhLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc2lUYWJDb250ZW50IH0gZnJvbSAnLi9hc2ktdGFiLWNvbnRlbnQvYXNpLXRhYi1jb250ZW50LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFzaVRhYiB9IGZyb20gJy4vYXNpLXRhYi9hc2ktdGFiLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LCBRdWVyeUxpc3QsIENvbnRlbnRDaGlsZHJlbiwgVmlld0NoaWxkLCBBZnRlckNvbnRlbnRJbml0LFxyXG4gIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBJbnB1dFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgKiBhcyBuaCBmcm9tICcuLi8uLi9uYXRpdmUtaGVscGVyJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXNpLXRhYi1ncm91cCcsXHJcbiAgaG9zdDogeyAnY2xhc3MnOiAnYXNpLWNvbXBvbmVudCBhc2ktdGFiLWdyb3VwJyB9LFxyXG4gIHRlbXBsYXRlVXJsOiAnYXNpLXRhYi1ncm91cC5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEFzaVRhYkdyb3VwIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XHJcblxyXG4gIEBDb250ZW50Q2hpbGRyZW4oQXNpVGFiKSBxdWVyeVRhYnM6IFF1ZXJ5TGlzdDxBc2lUYWI+O1xyXG5cclxuICBAVmlld0NoaWxkKEFzaVRhYkNvbnRlbnQpIGFzaVRhYmxlQ29udGVudDogQXNpVGFiQ29udGVudDtcclxuXHJcbiAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBhIHRhYiBpcyBtYW51YWxseSBzZWxlY3RlZCAqL1xyXG4gIEBPdXRwdXQoKSBvblRhYkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8QXNpVGFiPigpXHJcblxyXG4gIC8qKiBBY3RpdmUgdGFiIGlkICovXHJcbiAgQElucHV0KCkgYWN0aXZlVGFiSWQ6IHN0cmluZztcclxuXHJcbiAgcHJpdmF0ZSBjdXJyZW50VGFiSWQgPSBudWxsO1xyXG5cclxuICB0YWJzID0gbmV3IEFycmF5PEFzaVRhYj4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgc2hvd1RhYih0YWI6IEFzaVRhYikge1xyXG4gICAgdGhpcy5hc2lUYWJsZUNvbnRlbnQuc2hvd1RhYih0YWIpO1xyXG4gICAgdGhpcy5jdXJyZW50VGFiSWQgPSB0YWIudGFiSWQ7XHJcbiAgICB0aGlzLm9uVGFiQ2hhbmdlLmVtaXQodGFiKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzaG93VGFiQnlJZChpZFRhYjogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmFzaVRhYmxlQ29udGVudC5zaG93VGFiQnlJZChpZFRhYik7XHJcbiAgfVxyXG5cclxuICBnZXRUYWJzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGFicztcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcclxuICAgIHRoaXMubWFuYWdlVGFiQ29udGVudCh0aGlzLnF1ZXJ5VGFicy50b0FycmF5KCkpO1xyXG4gICAgdGhpcy5hc2lUYWJsZUNvbnRlbnQuc2V0VGFicyh0aGlzLnRhYnMpO1xyXG4gICAgLyoqTGlzdGVuIHRvIGNvbnRlbnQgcG9zc2libGUgY2hhbmdlcyAqL1xyXG4gICAgdGhpcy5xdWVyeVRhYnMuY2hhbmdlcy5zdWJzY3JpYmUoKGFzaVRhYnMpID0+IHtcclxuICAgICAgdGhpcy5tYW5hZ2VUYWJDb250ZW50KGFzaVRhYnMpO1xyXG4gICAgICBpZiAoIW5oLmlzRW1wdHkoYXNpVGFicykgJiYgKCF0aGlzLmN1cnJlbnRUYWJJZCB8fCAhdGhpcy5jdXJyZW50VGFiU3RpbGxFeGlzdCgpKSkge1xyXG4gICAgICAgIHRoaXMuY3VycmVudFRhYklkID0gdGhpcy50YWJzWzBdLnRhYklkO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuYXNpVGFibGVDb250ZW50LnNldFRhYnModGhpcy50YWJzKTtcclxuICAgICAgdGhpcy5hc2lUYWJsZUNvbnRlbnQuc2hvd1RhYkJ5SWQodGhpcy5jdXJyZW50VGFiSWQpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKHRoaXMuYWN0aXZlVGFiSWQgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRUYWJJZCA9IHRoaXMuYWN0aXZlVGFiSWQ7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuY3VycmVudFRhYklkICYmICFuaC5pc0VtcHR5KHRoaXMudGFicykpIHtcclxuICAgICAgdGhpcy5jdXJyZW50VGFiSWQgPSB0aGlzLnRhYnNbMF0udGFiSWQ7XHJcbiAgICB9XHJcbiAgICB0aGlzLmFzaVRhYmxlQ29udGVudC5zaG93VGFiQnlJZCh0aGlzLmN1cnJlbnRUYWJJZCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGN1cnJlbnRUYWJTdGlsbEV4aXN0KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIG5oLmZpbmQodGhpcy50YWJzLCAodGFiKSA9PiB0YWIudGFiSWQgPT09IHRoaXMuY3VycmVudFRhYklkKSAhPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBtYW5hZ2VUYWJDb250ZW50KGFzaVRhYnM6IEFzaVRhYltdKSB7XHJcbiAgICBsZXQgaW5kZXggPSAtMTtcclxuICAgIHRoaXMudGFicyA9IFtdO1xyXG4gICAgYXNpVGFicy5mb3JFYWNoKHRhYiA9PiB7XHJcbiAgICAgIHRhYi5pbmRleCA9ICsraW5kZXg7XHJcbiAgICAgIGlmICghdGFiLnRhYklkKSB7XHJcbiAgICAgICAgdGFiLnRhYklkID0gJ3RhYicgKyBpbmRleDtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnRhYnMucHVzaCh0YWIpXHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19