ngx-formly-tabs
Version:
ngx-formly-tabs is an Angular module that adds Components that enable flexible tab use for @ngx-formly.
134 lines • 9.02 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component, EventEmitter, Output } from '@angular/core';
import { TabsetService } from './tabset.service';
export class TabsetComponent {
/**
* @param {?} tabsetService
*/
constructor(tabsetService) {
this.tabsetService = tabsetService;
this.activeTabChange = new EventEmitter();
this._tabs = [];
this._visibleCount = 0;
}
/**
* @return {?}
*/
get tabs() {
return this._tabs;
}
/**
* @return {?}
*/
get visibleCount() {
return this._visibleCount;
}
/**
* @return {?}
*/
ngAfterContentInit() {
this.subscription = this.tabsetService.tabs$.subscribe((/**
* @return {?}
*/
() => {
this.onTabsChanged();
}));
}
/**
* @return {?}
*/
ngOnDestroy() {
if (this.subscription) {
this.subscription.unsubscribe();
}
}
/**
* @param {?} tab
* @return {?}
*/
select(tab) {
this.tabsetService.tabs.forEach((/**
* @param {?} t
* @return {?}
*/
t => {
t.active = t === tab;
}));
this.activeTabChange.emit(tab ? tab.title : null);
}
/**
* @private
* @return {?}
*/
onTabsChanged() {
Promise.resolve().then((/**
* @return {?}
*/
() => {
if (this.subscription.closed) {
return;
}
/** @type {?} */
const tabs = this.tabsetService.tabs;
this._tabs = tabs;
this._visibleCount = tabs.filter((/**
* @param {?} t
* @return {?}
*/
t => !t.hidden)).length;
if (!tabs.some((/**
* @param {?} tab
* @return {?}
*/
tab => tab.active && !tab.disabled && !tab.hidden))) {
this.select(tabs.find((/**
* @param {?} t
* @return {?}
*/
t => !t.disabled && !t.hidden)));
}
}));
}
}
TabsetComponent.decorators = [
{ type: Component, args: [{
selector: 'formly-tabs-tabset',
template: "<ul class=\"nav nav-tabs\">\r\n <li class=\"nav-item\" *ngFor=\"let tab of tabs | visible\" role=\"presentation\" (click)=\"!tab.disabled && !tab.hidden && select(tab)\">\r\n <div class=\"nav-link\" [ngClass]=\"{active: tab.active && !tab.disabled && !tab.hidden, disabled: tab.disabled}\">\r\n {{ tab.title }}\r\n </div>\r\n </li>\r\n</ul>\r\n<div class=\"content\" [ngClass]=\"{empty: visibleCount === 0}\">\r\n <ng-content></ng-content>\r\n</div>",
styles: [".nav-link{cursor:pointer;cursor:hand}:host>.content{border:1px solid #ddd;border-top:0;padding:1em}"]
}] }
];
/** @nocollapse */
TabsetComponent.ctorParameters = () => [
{ type: TabsetService }
];
TabsetComponent.propDecorators = {
activeTabChange: [{ type: Output }]
};
if (false) {
/** @type {?} */
TabsetComponent.prototype.activeTabChange;
/**
* @type {?}
* @private
*/
TabsetComponent.prototype.subscription;
/**
* @type {?}
* @private
*/
TabsetComponent.prototype._tabs;
/**
* @type {?}
* @private
*/
TabsetComponent.prototype._visibleCount;
/**
* @type {?}
* @private
*/
TabsetComponent.prototype.tabsetService;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFic2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1mb3JtbHktdGFicy8iLCJzb3VyY2VzIjpbImxpYi90YWJzZXQvdGFic2V0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFvQixTQUFTLEVBQUUsWUFBWSxFQUFhLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUc3RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFPakQsTUFBTSxPQUFPLGVBQWU7Ozs7SUFPeEIsWUFDWSxhQUE0QjtRQUE1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQVA5QixvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFHL0MsVUFBSyxHQUFtQixFQUFFLENBQUM7UUFDM0Isa0JBQWEsR0FBRyxDQUFDLENBQUM7SUFJdEIsQ0FBQzs7OztJQUVMLElBQUksSUFBSTtRQUNKLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUN0QixDQUFDOzs7O0lBRUQsSUFBSSxZQUFZO1FBQ1osT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzlCLENBQUM7Ozs7SUFFRCxrQkFBa0I7UUFDZCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFNBQVM7OztRQUFDLEdBQUcsRUFBRTtZQUN4RCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDekIsQ0FBQyxFQUFDLENBQUM7SUFDUCxDQUFDOzs7O0lBRUQsV0FBVztRQUNQLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNuQixJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ25DO0lBQ0wsQ0FBQzs7Ozs7SUFFRCxNQUFNLENBQUMsR0FBaUI7UUFDcEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTzs7OztRQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2hDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQztRQUN6QixDQUFDLEVBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEQsQ0FBQzs7Ozs7SUFFTyxhQUFhO1FBQ2pCLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJOzs7UUFBQyxHQUFHLEVBQUU7WUFDeEIsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRTtnQkFDMUIsT0FBTzthQUNWOztrQkFFSyxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJO1lBQ3BDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU07Ozs7WUFBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBQyxDQUFDLE1BQU0sQ0FBQztZQUV4RCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUk7Ozs7WUFBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBQyxFQUFFO2dCQUMvRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJOzs7O2dCQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBQyxDQUFDLENBQUM7YUFDekQ7UUFDTCxDQUFDLEVBQUMsQ0FBQztJQUNQLENBQUM7OztZQXpESixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLG9CQUFvQjtnQkFDOUIsMmRBQXNDOzthQUV6Qzs7OztZQU5RLGFBQWE7Ozs4QkFRakIsTUFBTTs7OztJQUFQLDBDQUF1RDs7Ozs7SUFFdkQsdUNBQW1DOzs7OztJQUNuQyxnQ0FBbUM7Ozs7O0lBQ25DLHdDQUEwQjs7Ozs7SUFHdEIsd0NBQW9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE9uRGVzdHJveSwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBUYWJDb21wb25lbnQgfSBmcm9tICcuLi90YWIvdGFiLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRhYnNldFNlcnZpY2UgfSBmcm9tICcuL3RhYnNldC5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdmb3JtbHktdGFicy10YWJzZXQnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RhYnNldC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi90YWJzZXQuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYWJzZXRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xyXG4gICAgQE91dHB1dCgpIGFjdGl2ZVRhYkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICAgIHByaXZhdGUgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgICBwcml2YXRlIF90YWJzOiBUYWJDb21wb25lbnRbXSA9IFtdO1xyXG4gICAgcHJpdmF0ZSBfdmlzaWJsZUNvdW50ID0gMDtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIHRhYnNldFNlcnZpY2U6IFRhYnNldFNlcnZpY2VcclxuICAgICkgeyB9XHJcblxyXG4gICAgZ2V0IHRhYnMoKTogVGFiQ29tcG9uZW50W10ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl90YWJzO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCB2aXNpYmxlQ291bnQoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdmlzaWJsZUNvdW50O1xyXG4gICAgfVxyXG5cclxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMudGFic2V0U2VydmljZS50YWJzJC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm9uVGFic0NoYW5nZWQoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24pIHtcclxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2VsZWN0KHRhYjogVGFiQ29tcG9uZW50KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy50YWJzZXRTZXJ2aWNlLnRhYnMuZm9yRWFjaCh0ID0+IHtcclxuICAgICAgICAgICAgdC5hY3RpdmUgPSB0ID09PSB0YWI7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5hY3RpdmVUYWJDaGFuZ2UuZW1pdCh0YWIgPyB0YWIudGl0bGUgOiBudWxsKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIG9uVGFic0NoYW5nZWQoKTogdm9pZCB7XHJcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbi5jbG9zZWQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY29uc3QgdGFicyA9IHRoaXMudGFic2V0U2VydmljZS50YWJzO1xyXG4gICAgICAgICAgICB0aGlzLl90YWJzID0gdGFicztcclxuICAgICAgICAgICAgdGhpcy5fdmlzaWJsZUNvdW50ID0gdGFicy5maWx0ZXIodCA9PiAhdC5oaWRkZW4pLmxlbmd0aDtcclxuXHJcbiAgICAgICAgICAgIGlmICghdGFicy5zb21lKHRhYiA9PiB0YWIuYWN0aXZlICYmICF0YWIuZGlzYWJsZWQgJiYgIXRhYi5oaWRkZW4pKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdCh0YWJzLmZpbmQodCA9PiAhdC5kaXNhYmxlZCAmJiAhdC5oaWRkZW4pKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==