ngx-formly-tabs
Version:
ngx-formly-tabs is an Angular module that adds Components that enable flexible tab use for @ngx-formly.
157 lines • 10.1 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';
var TabsetComponent = /** @class */ (function () {
function TabsetComponent(tabsetService) {
this.tabsetService = tabsetService;
this.activeTabChange = new EventEmitter();
this._tabs = [];
this._visibleCount = 0;
}
Object.defineProperty(TabsetComponent.prototype, "tabs", {
get: /**
* @return {?}
*/
function () {
return this._tabs;
},
enumerable: true,
configurable: true
});
Object.defineProperty(TabsetComponent.prototype, "visibleCount", {
get: /**
* @return {?}
*/
function () {
return this._visibleCount;
},
enumerable: true,
configurable: true
});
/**
* @return {?}
*/
TabsetComponent.prototype.ngAfterContentInit = /**
* @return {?}
*/
function () {
var _this = this;
this.subscription = this.tabsetService.tabs$.subscribe((/**
* @return {?}
*/
function () {
_this.onTabsChanged();
}));
};
/**
* @return {?}
*/
TabsetComponent.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
if (this.subscription) {
this.subscription.unsubscribe();
}
};
/**
* @param {?} tab
* @return {?}
*/
TabsetComponent.prototype.select = /**
* @param {?} tab
* @return {?}
*/
function (tab) {
this.tabsetService.tabs.forEach((/**
* @param {?} t
* @return {?}
*/
function (t) {
t.active = t === tab;
}));
this.activeTabChange.emit(tab ? tab.title : null);
};
/**
* @private
* @return {?}
*/
TabsetComponent.prototype.onTabsChanged = /**
* @private
* @return {?}
*/
function () {
var _this = this;
Promise.resolve().then((/**
* @return {?}
*/
function () {
if (_this.subscription.closed) {
return;
}
/** @type {?} */
var tabs = _this.tabsetService.tabs;
_this._tabs = tabs;
_this._visibleCount = tabs.filter((/**
* @param {?} t
* @return {?}
*/
function (t) { return !t.hidden; })).length;
if (!tabs.some((/**
* @param {?} tab
* @return {?}
*/
function (tab) { return tab.active && !tab.disabled && !tab.hidden; }))) {
_this.select(tabs.find((/**
* @param {?} t
* @return {?}
*/
function (t) { return !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 = function () { return [
{ type: TabsetService }
]; };
TabsetComponent.propDecorators = {
activeTabChange: [{ type: Output }]
};
return TabsetComponent;
}());
export { TabsetComponent };
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFic2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1mb3JtbHktdGFicy8iLCJzb3VyY2VzIjpbImxpYi90YWJzZXQvdGFic2V0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFvQixTQUFTLEVBQUUsWUFBWSxFQUFhLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUc3RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFakQ7SUFZSSx5QkFDWSxhQUE0QjtRQUE1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQVA5QixvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFHL0MsVUFBSyxHQUFtQixFQUFFLENBQUM7UUFDM0Isa0JBQWEsR0FBRyxDQUFDLENBQUM7SUFJdEIsQ0FBQztJQUVMLHNCQUFJLGlDQUFJOzs7O1FBQVI7WUFDSSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDdEIsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSx5Q0FBWTs7OztRQUFoQjtZQUNJLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUM5QixDQUFDOzs7T0FBQTs7OztJQUVELDRDQUFrQjs7O0lBQWxCO1FBQUEsaUJBSUM7UUFIRyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFNBQVM7OztRQUFDO1lBQ25ELEtBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN6QixDQUFDLEVBQUMsQ0FBQztJQUNQLENBQUM7Ozs7SUFFRCxxQ0FBVzs7O0lBQVg7UUFDSSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNuQztJQUNMLENBQUM7Ozs7O0lBRUQsZ0NBQU07Ozs7SUFBTixVQUFPLEdBQWlCO1FBQ3BCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU87Ozs7UUFBQyxVQUFBLENBQUM7WUFDN0IsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDO1FBQ3pCLENBQUMsRUFBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0RCxDQUFDOzs7OztJQUVPLHVDQUFhOzs7O0lBQXJCO1FBQUEsaUJBY0M7UUFiRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSTs7O1FBQUM7WUFDbkIsSUFBSSxLQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRTtnQkFDMUIsT0FBTzthQUNWOztnQkFFSyxJQUFJLEdBQUcsS0FBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJO1lBQ3BDLEtBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ2xCLEtBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU07Ozs7WUFBQyxVQUFBLENBQUMsSUFBSSxPQUFBLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBVCxDQUFTLEVBQUMsQ0FBQyxNQUFNLENBQUM7WUFFeEQsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJOzs7O1lBQUMsVUFBQSxHQUFHLElBQUksT0FBQSxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQTFDLENBQTBDLEVBQUMsRUFBRTtnQkFDL0QsS0FBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSTs7OztnQkFBQyxVQUFBLENBQUMsSUFBSSxPQUFBLENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQXhCLENBQXdCLEVBQUMsQ0FBQyxDQUFDO2FBQ3pEO1FBQ0wsQ0FBQyxFQUFDLENBQUM7SUFDUCxDQUFDOztnQkF6REosU0FBUyxTQUFDO29CQUNQLFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLDJkQUFzQzs7aUJBRXpDOzs7O2dCQU5RLGFBQWE7OztrQ0FRakIsTUFBTTs7SUFvRFgsc0JBQUM7Q0FBQSxBQTFERCxJQTBEQztTQXJEWSxlQUFlOzs7SUFDeEIsMENBQXVEOzs7OztJQUV2RCx1Q0FBbUM7Ozs7O0lBQ25DLGdDQUFtQzs7Ozs7SUFDbkMsd0NBQTBCOzs7OztJQUd0Qix3Q0FBb0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlckNvbnRlbnRJbml0LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT25EZXN0cm95LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFRhYkNvbXBvbmVudCB9IGZyb20gJy4uL3RhYi90YWIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGFic2V0U2VydmljZSB9IGZyb20gJy4vdGFic2V0LnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2Zvcm1seS10YWJzLXRhYnNldCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGFic2V0LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3RhYnNldC5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFRhYnNldENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XHJcbiAgICBAT3V0cHV0KCkgYWN0aXZlVGFiQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICAgIHByaXZhdGUgX3RhYnM6IFRhYkNvbXBvbmVudFtdID0gW107XHJcbiAgICBwcml2YXRlIF92aXNpYmxlQ291bnQgPSAwO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgdGFic2V0U2VydmljZTogVGFic2V0U2VydmljZVxyXG4gICAgKSB7IH1cclxuXHJcbiAgICBnZXQgdGFicygpOiBUYWJDb21wb25lbnRbXSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYnM7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHZpc2libGVDb3VudCgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl92aXNpYmxlQ291bnQ7XHJcbiAgICB9XHJcblxyXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy50YWJzZXRTZXJ2aWNlLnRhYnMkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMub25UYWJzQ2hhbmdlZCgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZWxlY3QodGFiOiBUYWJDb21wb25lbnQpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnRhYnNldFNlcnZpY2UudGFicy5mb3JFYWNoKHQgPT4ge1xyXG4gICAgICAgICAgICB0LmFjdGl2ZSA9IHQgPT09IHRhYjtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmFjdGl2ZVRhYkNoYW5nZS5lbWl0KHRhYiA/IHRhYi50aXRsZSA6IG51bGwpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgb25UYWJzQ2hhbmdlZCgpOiB2b2lkIHtcclxuICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uLmNsb3NlZCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjb25zdCB0YWJzID0gdGhpcy50YWJzZXRTZXJ2aWNlLnRhYnM7XHJcbiAgICAgICAgICAgIHRoaXMuX3RhYnMgPSB0YWJzO1xyXG4gICAgICAgICAgICB0aGlzLl92aXNpYmxlQ291bnQgPSB0YWJzLmZpbHRlcih0ID0+ICF0LmhpZGRlbikubGVuZ3RoO1xyXG5cclxuICAgICAgICAgICAgaWYgKCF0YWJzLnNvbWUodGFiID0+IHRhYi5hY3RpdmUgJiYgIXRhYi5kaXNhYmxlZCAmJiAhdGFiLmhpZGRlbikpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0KHRhYnMuZmluZCh0ID0+ICF0LmRpc2FibGVkICYmICF0LmhpZGRlbikpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuIl19