UNPKG

@netgrif/components-core

Version:

Netgrif Application engine frontend core Angular library

92 lines 10.2 kB
import { Component, Input } from '@angular/core'; import { TabView } from '../classes/tab-view'; import { ReplaySubject } from 'rxjs'; import { take } from 'rxjs/operators'; import * as i0 from "@angular/core"; import * as i1 from "../../routing/view-service/view.service"; import * as i2 from "../../logger/services/logger.service"; /** * Component that renders a tab view. * * See {@link TabView} for the class that holds the logic for this view. */ export class AbstractTabViewComponent { _viewService; _logger; _injector; /** * Tabs that are opened initially in the view */ initialTabs; /** * Flag if the height of the content has to stretch to fill the available window */ stretch; tabView; align = 'start'; offset = ''; /** * @ignore * lambda function that is passed to the {@link AbstractTabCreationDetectorComponent}s */ initializeTabLambda = (index) => { this.tabView.initializeTab(index); }; constructor(_viewService, _logger, _injector) { this._viewService = _viewService; this._logger = _logger; this._injector = _injector; } ngOnInit() { this.tabView = new TabView(this._viewService, this._logger, this.initialTabs, this._injector); } ngOnDestroy() { this.tabView.openedTabs.forEach(tab => tab.destroy()); } badgeHidden(tab) { const stream$ = new ReplaySubject(1); if (tab.label && tab.label.count) { tab.label.count.pipe(take(1)).subscribe(() => { stream$.next(false); stream$.complete(); }); } else { stream$.next(true); stream$.complete(); } return stream$; } badgeCount(tab) { const stream$ = new ReplaySubject(1); if (tab.label && tab.label.count) { tab.label.count.pipe(take(1)).subscribe(count => { stream$.next(count + ''); this.setOffset((count + '').length); stream$.complete(); }); } else { stream$.next('0'); stream$.complete(); } return stream$; } setOffset(count) { this.offset = Array(count * 2).join('\xa0'); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AbstractTabViewComponent, deps: [{ token: i1.ViewService }, { token: i2.LoggerService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AbstractTabViewComponent, selector: "ncc-abstract-tab-view", inputs: { initialTabs: "initialTabs", stretch: "stretch", align: "align" }, ngImport: i0, template: '', isInline: true }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AbstractTabViewComponent, decorators: [{ type: Component, args: [{ selector: 'ncc-abstract-tab-view', template: '' }] }], ctorParameters: () => [{ type: i1.ViewService }, { type: i2.LoggerService }, { type: i0.Injector }], propDecorators: { initialTabs: [{ type: Input }], stretch: [{ type: Input }], align: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtdGFiLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi90YWJzL3RhYi12aWV3L2Fic3RyYWN0LXRhYi12aWV3LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFZLEtBQUssRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFFNUUsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRzVDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDbkMsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7O0FBRXBDOzs7O0dBSUc7QUFLSCxNQUFNLE9BQWdCLHdCQUF3QjtJQXNCVjtJQUFxQztJQUFrQztJQXBCdkc7O09BRUc7SUFDYSxXQUFXLENBQW9CO0lBQy9DOztPQUVHO0lBQ2EsT0FBTyxDQUFVO0lBQzFCLE9BQU8sQ0FBVTtJQUVSLEtBQUssR0FBRyxPQUFPLENBQUM7SUFFekIsTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUVuQjs7O09BR0c7SUFDSSxtQkFBbUIsR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFLEdBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFdEYsWUFBZ0MsWUFBeUIsRUFBWSxPQUFzQixFQUFZLFNBQW1CO1FBQTFGLGlCQUFZLEdBQVosWUFBWSxDQUFhO1FBQVksWUFBTyxHQUFQLE9BQU8sQ0FBZTtRQUFZLGNBQVMsR0FBVCxTQUFTLENBQVU7SUFDMUgsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNsRyxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxXQUFXLENBQUMsR0FBZTtRQUN2QixNQUFNLE9BQU8sR0FBRyxJQUFJLGFBQWEsQ0FBVSxDQUFDLENBQUMsQ0FBQztRQUM5QyxJQUFJLEdBQUcsQ0FBQyxLQUFLLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUU7WUFDOUIsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3pDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3BCLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN2QixDQUFDLENBQUMsQ0FBQztTQUNOO2FBQU07WUFDSCxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ25CLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUN0QjtRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7SUFFRCxVQUFVLENBQUMsR0FBZTtRQUN0QixNQUFNLE9BQU8sR0FBRyxJQUFJLGFBQWEsQ0FBUyxDQUFDLENBQUMsQ0FBQztRQUM3QyxJQUFJLEdBQUcsQ0FBQyxLQUFLLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUU7WUFDOUIsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDNUMsT0FBTyxDQUFDLElBQUksQ0FBRSxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3BDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN2QixDQUFDLENBQUMsQ0FBQztTQUNOO2FBQU07WUFDSCxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2xCLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUN0QjtRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7SUFFTyxTQUFTLENBQUMsS0FBYTtRQUMzQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hELENBQUM7d0dBaEVpQix3QkFBd0I7NEZBQXhCLHdCQUF3Qix5SUFGaEMsRUFBRTs7NEZBRU0sd0JBQXdCO2tCQUo3QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFFBQVEsRUFBRSxFQUFFO2lCQUNmO21JQU1tQixXQUFXO3NCQUExQixLQUFLO2dCQUlVLE9BQU87c0JBQXRCLEtBQUs7Z0JBR1UsS0FBSztzQkFBcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbmplY3RvciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VGFiQ29udGVudH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQge1RhYlZpZXd9IGZyb20gJy4uL2NsYXNzZXMvdGFiLXZpZXcnO1xuaW1wb3J0IHtWaWV3U2VydmljZX0gZnJvbSAnLi4vLi4vcm91dGluZy92aWV3LXNlcnZpY2Uvdmlldy5zZXJ2aWNlJztcbmltcG9ydCB7TG9nZ2VyU2VydmljZX0gZnJvbSAnLi4vLi4vbG9nZ2VyL3NlcnZpY2VzL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7UmVwbGF5U3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge3Rha2V9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuLyoqXG4gKiBDb21wb25lbnQgdGhhdCByZW5kZXJzIGEgdGFiIHZpZXcuXG4gKlxuICogU2VlIHtAbGluayBUYWJWaWV3fSBmb3IgdGhlIGNsYXNzIHRoYXQgaG9sZHMgdGhlIGxvZ2ljIGZvciB0aGlzIHZpZXcuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmNjLWFic3RyYWN0LXRhYi12aWV3JyxcbiAgICB0ZW1wbGF0ZTogJydcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RUYWJWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgLyoqXG4gICAgICogVGFicyB0aGF0IGFyZSBvcGVuZWQgaW5pdGlhbGx5IGluIHRoZSB2aWV3XG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIGluaXRpYWxUYWJzOiBBcnJheTxUYWJDb250ZW50PjtcbiAgICAvKipcbiAgICAgKiBGbGFnIGlmIHRoZSBoZWlnaHQgb2YgdGhlIGNvbnRlbnQgaGFzIHRvIHN0cmV0Y2ggdG8gZmlsbCB0aGUgYXZhaWxhYmxlIHdpbmRvd1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBzdHJldGNoOiBib29sZWFuO1xuICAgIHB1YmxpYyB0YWJWaWV3OiBUYWJWaWV3O1xuXG4gICAgQElucHV0KCkgcHVibGljIGFsaWduID0gJ3N0YXJ0JztcblxuICAgIHB1YmxpYyBvZmZzZXQgPSAnJztcblxuICAgIC8qKlxuICAgICAqIEBpZ25vcmVcbiAgICAgKiBsYW1iZGEgZnVuY3Rpb24gdGhhdCBpcyBwYXNzZWQgdG8gdGhlIHtAbGluayBBYnN0cmFjdFRhYkNyZWF0aW9uRGV0ZWN0b3JDb21wb25lbnR9c1xuICAgICAqL1xuICAgIHB1YmxpYyBpbml0aWFsaXplVGFiTGFtYmRhID0gKGluZGV4OiBudW1iZXIpID0+IHt0aGlzLnRhYlZpZXcuaW5pdGlhbGl6ZVRhYihpbmRleCk7IH07XG5cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IocHJvdGVjdGVkIF92aWV3U2VydmljZTogVmlld1NlcnZpY2UsIHByb3RlY3RlZCBfbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlLCBwcm90ZWN0ZWQgX2luamVjdG9yOiBJbmplY3Rvcikge1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRhYlZpZXcgPSBuZXcgVGFiVmlldyh0aGlzLl92aWV3U2VydmljZSwgdGhpcy5fbG9nZ2VyLCB0aGlzLmluaXRpYWxUYWJzLCB0aGlzLl9pbmplY3Rvcik7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGFiVmlldy5vcGVuZWRUYWJzLmZvckVhY2godGFiID0+IHRhYi5kZXN0cm95KCkpO1xuICAgIH1cblxuICAgIGJhZGdlSGlkZGVuKHRhYjogVGFiQ29udGVudCkge1xuICAgICAgICBjb25zdCBzdHJlYW0kID0gbmV3IFJlcGxheVN1YmplY3Q8Ym9vbGVhbj4oMSk7XG4gICAgICAgIGlmICh0YWIubGFiZWwgJiYgdGFiLmxhYmVsLmNvdW50KSB7XG4gICAgICAgICAgICB0YWIubGFiZWwuY291bnQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHN0cmVhbSQubmV4dChmYWxzZSk7XG4gICAgICAgICAgICAgICAgc3RyZWFtJC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdHJlYW0kLm5leHQodHJ1ZSk7XG4gICAgICAgICAgICBzdHJlYW0kLmNvbXBsZXRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0cmVhbSQ7XG4gICAgfVxuXG4gICAgYmFkZ2VDb3VudCh0YWI6IFRhYkNvbnRlbnQpIHtcbiAgICAgICAgY29uc3Qgc3RyZWFtJCA9IG5ldyBSZXBsYXlTdWJqZWN0PHN0cmluZz4oMSk7XG4gICAgICAgIGlmICh0YWIubGFiZWwgJiYgdGFiLmxhYmVsLmNvdW50KSB7XG4gICAgICAgICAgICB0YWIubGFiZWwuY291bnQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoY291bnQgPT4ge1xuICAgICAgICAgICAgICAgIHN0cmVhbSQubmV4dCggY291bnQgKyAnJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRPZmZzZXQoKGNvdW50ICsgJycpLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgc3RyZWFtJC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdHJlYW0kLm5leHQoJzAnKTtcbiAgICAgICAgICAgIHN0cmVhbSQuY29tcGxldGUoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3RyZWFtJDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldE9mZnNldChjb3VudDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMub2Zmc2V0ID0gQXJyYXkoY291bnQgKiAyKS5qb2luKCdcXHhhMCcpO1xuICAgIH1cbn1cbiJdfQ==