@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
JavaScript
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