UNPKG

@bimeister/pupakit.kit

Version:

PupaKit is an open source collection of Angular components based on an atomic approach to building interfaces, which guarantees better performance and greater development flexibility.

55 lines 9.33 kB
import { Directive, } from '@angular/core'; import '@bimeister/pupakit.common'; import { filterNotNil, isNil } from '@bimeister/utilities'; import { BehaviorSubject, combineLatest, Subscription } from 'rxjs'; import '../../interfaces/content-template-name.interface'; import '../../interfaces/tab-template-ref.interface'; import './tabs-service-base.abstract'; import * as i0 from "@angular/core"; export class TabsContentBase { constructor(stateService) { this.stateService = stateService; this.subscription = new Subscription(); this.destroyable$ = new BehaviorSubject(true); this.activeTabName$ = this.stateService.activeTabName$.pipe(filterNotNil()); this.activeTemplateRef$ = new BehaviorSubject(null); this.nonDestroyableTemplateRefs$ = new BehaviorSubject([]); this.tabTrackBy = (index) => index; } ngOnChanges(changes) { this.processInputDestroyableChanges(changes.destroyable?.currentValue); } ngAfterContentInit() { this.subscription.add(this.processActiveTabChanges()); } ngOnDestroy() { this.subscription.unsubscribe(); } processInputDestroyableChanges(destroyable) { if (isNil(destroyable)) { return; } this.destroyable$.next(destroyable); } processActiveTabChanges() { return combineLatest([this.destroyable$, this.activeTabName$]).subscribe(([destroyable, activeTabName]) => { if (destroyable) { const targetTemplate = this.tabTemplates.find((template) => template.getTemplateName() === activeTabName); this.activeTemplateRef$.next(targetTemplate.templateRef); return; } const templates = this.tabTemplates.map((template) => ({ templateRef: template.templateRef, name: template.getTemplateName(), isActive: template.getTemplateName() === activeTabName, })); this.nonDestroyableTemplateRefs$.next(templates); }); } } TabsContentBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TabsContentBase, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive }); TabsContentBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: TabsContentBase, usesOnChanges: true, ngImport: i0 }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TabsContentBase, decorators: [{ type: Directive }], ctorParameters: function () { return [{ type: undefined }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy1jb250ZW50LWJhc2UuYWJzdHJhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZGVjbGFyYXRpb25zL2NsYXNzZXMvYWJzdHJhY3QvdGFicy1jb250ZW50LWJhc2UuYWJzdHJhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsR0FNVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFpQywyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBWSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFjLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRixPQUE2QyxrREFBa0QsQ0FBQztBQUNoRyxPQUErQiw2Q0FBNkMsQ0FBQztBQUM3RSxPQUFnQyw4QkFBOEIsQ0FBQzs7QUFHL0QsTUFBTSxPQUFnQixlQUFlO0lBbUJuQyxZQUErQixZQUFlO1FBQWYsaUJBQVksR0FBWixZQUFZLENBQUc7UUFoQjNCLGlCQUFZLEdBQWlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFHaEQsaUJBQVksR0FBNkIsSUFBSSxlQUFlLENBQVUsSUFBSSxDQUFDLENBQUM7UUFJNUUsbUJBQWMsR0FBa0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFFekYsdUJBQWtCLEdBQW9ELElBQUksZUFBZSxDQUV2RyxJQUFJLENBQUMsQ0FBQztRQUNRLGdDQUEyQixHQUF5QyxJQUFJLGVBQWUsQ0FFckcsRUFBRSxDQUFDLENBQUM7UUFJVSxlQUFVLEdBQXVDLENBQUMsS0FBYSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFGekMsQ0FBQztJQUkzQyxXQUFXLENBQUMsT0FBK0I7UUFDaEQsSUFBSSxDQUFDLDhCQUE4QixDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVNLGtCQUFrQjtRQUN2QixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVPLDhCQUE4QixDQUFDLFdBQThCO1FBQ25FLElBQUksS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQ3RCLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFTyx1QkFBdUI7UUFDN0IsT0FBTyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FDdEUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxhQUFhLENBQWUsRUFBRSxFQUFFO1lBQzdDLElBQUksV0FBVyxFQUFFO2dCQUNmLE1BQU0sY0FBYyxHQUFvQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDNUUsQ0FBQyxRQUF5QyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUFFLEtBQUssYUFBYSxDQUM1RixDQUFDO2dCQUNGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUN6RCxPQUFPO2FBQ1I7WUFFRCxNQUFNLFNBQVMsR0FBd0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUF5QyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUMzRyxXQUFXLEVBQUUsUUFBUSxDQUFDLFdBQVc7Z0JBQ2pDLElBQUksRUFBRSxRQUFRLENBQUMsZUFBZSxFQUFFO2dCQUNoQyxRQUFRLEVBQUUsUUFBUSxDQUFDLGVBQWUsRUFBRSxLQUFLLGFBQWE7YUFDdkQsQ0FBQyxDQUFDLENBQUM7WUFFSixJQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ25ELENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQzs7NkdBL0RtQixlQUFlO2lHQUFmLGVBQWU7NEZBQWYsZUFBZTtrQkFEcEMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIERpcmVjdGl2ZSxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIFF1ZXJ5TGlzdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFRyYWNrQnlGdW5jdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRDaGFuZ2VzIH0gZnJvbSAnQGJpbWVpc3Rlci9wdXBha2l0LmNvbW1vbic7XG5pbXBvcnQgeyBmaWx0ZXJOb3ROaWwsIGlzTmlsLCBOdWxsYWJsZSB9IGZyb20gJ0BiaW1laXN0ZXIvdXRpbGl0aWVzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb250ZW50VGVtcGxhdGVOYW1lRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9jb250ZW50LXRlbXBsYXRlLW5hbWUuaW50ZXJmYWNlJztcbmltcG9ydCB7IFRhYlRlbXBsYXRlUmVmIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy90YWItdGVtcGxhdGUtcmVmLmludGVyZmFjZSc7XG5pbXBvcnQgeyBUYWJzU2VydmljZUJhc2UgfSBmcm9tICcuL3RhYnMtc2VydmljZS1iYXNlLmFic3RyYWN0JztcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVGFic0NvbnRlbnRCYXNlPFQsIFMgZXh0ZW5kcyBUYWJzU2VydmljZUJhc2U8VD4+XG4gIGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3lcbntcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIHB1YmxpYyBhYnN0cmFjdCBkZXN0cm95YWJsZTogYm9vbGVhbjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRlc3Ryb3lhYmxlJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcblxuICBwdWJsaWMgYWJzdHJhY3QgdGFiVGVtcGxhdGVzOiBRdWVyeUxpc3Q8Q29udGVudFRlbXBsYXRlTmFtZURpcmVjdGl2ZTxUPj47XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFjdGl2ZVRhYk5hbWUkOiBPYnNlcnZhYmxlPFQ+ID0gdGhpcy5zdGF0ZVNlcnZpY2UuYWN0aXZlVGFiTmFtZSQucGlwZShmaWx0ZXJOb3ROaWwoKSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGFjdGl2ZVRlbXBsYXRlUmVmJDogQmVoYXZpb3JTdWJqZWN0PE51bGxhYmxlPFRlbXBsYXRlUmVmPHVua25vd24+Pj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFxuICAgIE51bGxhYmxlPFRlbXBsYXRlUmVmPHVua25vd24+PlxuICA+KG51bGwpO1xuICBwdWJsaWMgcmVhZG9ubHkgbm9uRGVzdHJveWFibGVUZW1wbGF0ZVJlZnMkOiBCZWhhdmlvclN1YmplY3Q8VGFiVGVtcGxhdGVSZWY8VD5bXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFxuICAgIFRhYlRlbXBsYXRlUmVmPFQ+W11cbiAgPihbXSk7XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHJlYWRvbmx5IHN0YXRlU2VydmljZTogUykge31cblxuICBwdWJsaWMgcmVhZG9ubHkgdGFiVHJhY2tCeTogVHJhY2tCeUZ1bmN0aW9uPFRhYlRlbXBsYXRlUmVmPFQ+PiA9IChpbmRleDogbnVtYmVyKSA9PiBpbmRleDtcblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogQ29tcG9uZW50Q2hhbmdlczx0aGlzPik6IHZvaWQge1xuICAgIHRoaXMucHJvY2Vzc0lucHV0RGVzdHJveWFibGVDaGFuZ2VzKGNoYW5nZXMuZGVzdHJveWFibGU/LmN1cnJlbnRWYWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZCh0aGlzLnByb2Nlc3NBY3RpdmVUYWJDaGFuZ2VzKCkpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NJbnB1dERlc3Ryb3lhYmxlQ2hhbmdlcyhkZXN0cm95YWJsZTogTnVsbGFibGU8Ym9vbGVhbj4pOiB2b2lkIHtcbiAgICBpZiAoaXNOaWwoZGVzdHJveWFibGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5kZXN0cm95YWJsZSQubmV4dChkZXN0cm95YWJsZSk7XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NBY3RpdmVUYWJDaGFuZ2VzKCk6IFN1YnNjcmlwdGlvbiB7XG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW3RoaXMuZGVzdHJveWFibGUkLCB0aGlzLmFjdGl2ZVRhYk5hbWUkXSkuc3Vic2NyaWJlKFxuICAgICAgKFtkZXN0cm95YWJsZSwgYWN0aXZlVGFiTmFtZV06IFtib29sZWFuLCBUXSkgPT4ge1xuICAgICAgICBpZiAoZGVzdHJveWFibGUpIHtcbiAgICAgICAgICBjb25zdCB0YXJnZXRUZW1wbGF0ZTogQ29udGVudFRlbXBsYXRlTmFtZURpcmVjdGl2ZTxUPiA9IHRoaXMudGFiVGVtcGxhdGVzLmZpbmQoXG4gICAgICAgICAgICAodGVtcGxhdGU6IENvbnRlbnRUZW1wbGF0ZU5hbWVEaXJlY3RpdmU8VD4pID0+IHRlbXBsYXRlLmdldFRlbXBsYXRlTmFtZSgpID09PSBhY3RpdmVUYWJOYW1lXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmFjdGl2ZVRlbXBsYXRlUmVmJC5uZXh0KHRhcmdldFRlbXBsYXRlLnRlbXBsYXRlUmVmKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0ZW1wbGF0ZXM6IFRhYlRlbXBsYXRlUmVmPFQ+W10gPSB0aGlzLnRhYlRlbXBsYXRlcy5tYXAoKHRlbXBsYXRlOiBDb250ZW50VGVtcGxhdGVOYW1lRGlyZWN0aXZlPFQ+KSA9PiAoe1xuICAgICAgICAgIHRlbXBsYXRlUmVmOiB0ZW1wbGF0ZS50ZW1wbGF0ZVJlZixcbiAgICAgICAgICBuYW1lOiB0ZW1wbGF0ZS5nZXRUZW1wbGF0ZU5hbWUoKSxcbiAgICAgICAgICBpc0FjdGl2ZTogdGVtcGxhdGUuZ2V0VGVtcGxhdGVOYW1lKCkgPT09IGFjdGl2ZVRhYk5hbWUsXG4gICAgICAgIH0pKTtcblxuICAgICAgICB0aGlzLm5vbkRlc3Ryb3lhYmxlVGVtcGxhdGVSZWZzJC5uZXh0KHRlbXBsYXRlcyk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxufVxuIl19