UNPKG

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