UNPKG

@vismaux/ngx-nordic-cool

Version:
50 lines 7.33 kB
import { Component, ChangeDetectionStrategy, ContentChildren, } from '@angular/core'; import { BehaviorSubject, Subject } from 'rxjs'; import { map, takeUntil } from 'rxjs/operators'; import { NcErrorDirective } from './error.directive'; import * as i0 from "@angular/core"; export class NcErrorsComponent { constructor(renderer, elRef) { this.renderer = renderer; this.elRef = elRef; this.destroyed$ = new Subject(); this.errorsSubject = new BehaviorSubject({}); this.errors$ = this.errorsSubject.asObservable(); this.getErrors = () => this.errorsSubject.getValue(); } ngOnInit() { /** * This is an virtual component only needed to pass-through the error list, * no actual component is needed in the DOM, therefore `hidden` attribute is set. */ this.renderer.setAttribute(this.elRef.nativeElement, 'hidden', ''); } ngAfterContentInit() { this.errorsSubject.next(this.getMappedErrors()); this.errors.changes .pipe(map(() => this.getMappedErrors()), takeUntil(this.destroyed$)) .subscribe(this.errorsSubject); } ngOnDestroy() { this.destroyed$.next(); this.destroyed$.unsubscribe(); } getMappedErrors() { return this.errors.reduce((errors, error) => ({ ...errors, [error.errorKey]: error.templateRef }), {}); } } NcErrorsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: NcErrorsComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); NcErrorsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: NcErrorsComponent, selector: "nc-errors", queries: [{ propertyName: "errors", predicate: NcErrorDirective }], exportAs: ["ncErrors"], ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: NcErrorsComponent, decorators: [{ type: Component, args: [{ selector: 'nc-errors', exportAs: 'ncErrors', template: '', changeDetection: ChangeDetectionStrategy.OnPush, }] }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { errors: [{ type: ContentChildren, args: [NcErrorDirective] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ub3JkaWMtY29vbC9zcmMvbGliL2Vycm9yLXRvb2x0aXAvZXJyb3ItbWVzc2FnZXMvZXJyb3JzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULHVCQUF1QixFQUN2QixlQUFlLEdBT2hCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBU3JELE1BQU0sT0FBTyxpQkFBaUI7SUFVNUIsWUFBb0IsUUFBbUIsRUFBVSxLQUFpQjtRQUE5QyxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQVQxRCxlQUFVLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUMzQixrQkFBYSxHQUFHLElBQUksZUFBZSxDQUFrQixFQUFFLENBQUMsQ0FBQztRQUt4RCxZQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM1QyxjQUFTLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUVZLENBQUM7SUFFdEUsUUFBUTtRQUNOOzs7V0FHRztRQUNILElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO1FBRWhELElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTzthQUNoQixJQUFJLENBQ0gsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxFQUNqQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUMzQjthQUNBLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVPLGVBQWU7UUFDckIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FDdkIsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQ3ZFLEVBQUUsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs7OEdBekNVLGlCQUFpQjtrR0FBakIsaUJBQWlCLHdFQUlYLGdCQUFnQixxREFQdkIsRUFBRTsyRkFHRCxpQkFBaUI7a0JBTjdCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLFFBQVEsRUFBRSxVQUFVO29CQUNwQixRQUFRLEVBQUUsRUFBRTtvQkFDWixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQ7eUhBTVUsTUFBTTtzQkFEZCxlQUFlO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgUXVlcnlMaXN0LFxuICBBZnRlckNvbnRlbnRJbml0LFxuICBSZW5kZXJlcjIsXG4gIEVsZW1lbnRSZWYsXG4gIE9uSW5pdCxcbiAgT25EZXN0cm95LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IE5jRXJyb3JEaXJlY3RpdmUgfSBmcm9tICcuL2Vycm9yLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBOY0Vycm9yTWVzc2FnZXMgfSBmcm9tICcuL2Vycm9yLW1lc3NhZ2VzLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmMtZXJyb3JzJyxcbiAgZXhwb3J0QXM6ICduY0Vycm9ycycsXG4gIHRlbXBsYXRlOiAnJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE5jRXJyb3JzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIGRlc3Ryb3llZCQgPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIGVycm9yc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE5jRXJyb3JNZXNzYWdlcz4oe30pO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oTmNFcnJvckRpcmVjdGl2ZSlcbiAgcmVhZG9ubHkgZXJyb3JzOiBRdWVyeUxpc3Q8TmNFcnJvckRpcmVjdGl2ZT47XG5cbiAgcmVhZG9ubHkgZXJyb3JzJCA9IHRoaXMuZXJyb3JzU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgcmVhZG9ubHkgZ2V0RXJyb3JzID0gKCkgPT4gdGhpcy5lcnJvcnNTdWJqZWN0LmdldFZhbHVlKCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLCBwcml2YXRlIGVsUmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgYW4gdmlydHVhbCBjb21wb25lbnQgb25seSBuZWVkZWQgdG8gcGFzcy10aHJvdWdoIHRoZSBlcnJvciBsaXN0LFxuICAgICAqIG5vIGFjdHVhbCBjb21wb25lbnQgaXMgbmVlZGVkIGluIHRoZSBET00sIHRoZXJlZm9yZSBgaGlkZGVuYCBhdHRyaWJ1dGUgaXMgc2V0LlxuICAgICAqL1xuICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCwgJ2hpZGRlbicsICcnKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmVycm9yc1N1YmplY3QubmV4dCh0aGlzLmdldE1hcHBlZEVycm9ycygpKTtcblxuICAgIHRoaXMuZXJyb3JzLmNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKCkgPT4gdGhpcy5nZXRNYXBwZWRFcnJvcnMoKSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHRoaXMuZXJyb3JzU3ViamVjdCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3llZCQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveWVkJC51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNYXBwZWRFcnJvcnMoKTogTmNFcnJvck1lc3NhZ2VzIHtcbiAgICByZXR1cm4gdGhpcy5lcnJvcnMucmVkdWNlKFxuICAgICAgKGVycm9ycywgZXJyb3IpID0+ICh7IC4uLmVycm9ycywgW2Vycm9yLmVycm9yS2V5XTogZXJyb3IudGVtcGxhdGVSZWYgfSksXG4gICAgICB7fVxuICAgICk7XG4gIH1cbn1cbiJdfQ==