@vismaux/ngx-nordic-cool
Version:
Common Nordic-Cool components for Angular.
50 lines • 7.33 kB
JavaScript
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==