@alauda-fe/common
Version:
Alauda frontend team common codes.
116 lines • 15.8 kB
JavaScript
import { __decorate, __metadata } from "tslib";
import { ComponentPortal, DomPortalOutlet } from '@angular/cdk/portal';
import { ApplicationRef, ChangeDetectionStrategy, ChangeDetectorRef, Component, ComponentFactoryResolver, Directive, Injector, Input, Optional, Self, } from '@angular/core';
import { FormGroupDirective, NgControl, NgForm } from '@angular/forms';
import { Observable, Subject, merge, of, debounceTime, map, switchMap, takeUntil, } from 'rxjs';
import { ObservableInput } from '../../core/public-api';
import { BaseErrorsMapper } from './base-errors-mapper';
import * as i0 from "@angular/core";
import * as i1 from "@angular/forms";
export class ErrorsMapperDirective extends BaseErrorsMapper {
constructor(injector, cdr,
// eslint-disable-next-line sonar/deprecation
cfr, appRef, control, ngForm, formGroup) {
super(injector);
this.injector = injector;
this.cdr = cdr;
this.cfr = cfr;
this.appRef = appRef;
this.control = control;
this.ngForm = ngForm;
this.formGroup = formGroup;
this.destroy$ = new Subject();
}
ngAfterViewInit() {
if (!this.control) {
throw new Error('Errors mapper is not properly configured. No valid control is found.');
}
this.initPortal();
const statusChange = [this.control.statusChanges];
if (this.ngForm) {
statusChange.push(this.ngForm.ngSubmit);
}
if (this.formGroup) {
statusChange.push(this.formGroup.ngSubmit);
}
this.aclErrorsMapperDisabled$
.pipe(switchMap(isDisable => isDisable
? of(null)
: merge(...statusChange, this.translate.locale$).pipe(debounceTime(50), map(() => this.getErrorMessage(this.control.errors, this.aclErrorsMapper || {}, this.aclErrorsMapperFn, this.aclErrorsMapperControlName)))), takeUntil(this.destroy$))
.subscribe(content => {
this.updateContent(content);
this.cdr.markForCheck();
});
}
updateContent(content) {
if (!content) {
if (this.portalHost.hasAttached()) {
this.portalHost.detach();
}
return;
}
if (!this.portalHost.hasAttached()) {
this.portalAttach = this.portalHost.attach(this.portal).instance;
}
this.portalAttach.data = content;
this.portalAttach.cdr.markForCheck();
}
initPortal() {
this.portalHost = new DomPortalOutlet(this.aclErrorsMapperOutlet, this.cfr, this.appRef, this.injector);
this.portal = new ComponentPortal(TextComponent);
}
ngOnDestroy() {
this.destroy$.next();
this.portalHost.dispose();
}
static { this.ɵfac = function ErrorsMapperDirective_Factory(t) { return new (t || ErrorsMapperDirective)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.ComponentFactoryResolver), i0.ɵɵdirectiveInject(i0.ApplicationRef), i0.ɵɵdirectiveInject(i1.NgControl, 2), i0.ɵɵdirectiveInject(i1.NgForm, 8), i0.ɵɵdirectiveInject(i1.FormGroupDirective, 8)); }; }
static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: ErrorsMapperDirective, selectors: [["", "aclErrorsMapper", ""]], inputs: { aclErrorsMapper: "aclErrorsMapper", aclErrorsMapperFn: "aclErrorsMapperFn", aclErrorsMapperDisabled: "aclErrorsMapperDisabled", aclErrorsMapperOutlet: "aclErrorsMapperOutlet", aclErrorsMapperControlName: "aclErrorsMapperControlName" }, standalone: true, features: [i0.ɵɵInheritDefinitionFeature] }); }
}
__decorate([
ObservableInput(),
__metadata("design:type", Observable)
], ErrorsMapperDirective.prototype, "aclErrorsMapperDisabled$", void 0);
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ErrorsMapperDirective, [{
type: Directive,
args: [{
selector: '[aclErrorsMapper]',
standalone: true,
}]
}], () => [{ type: i0.Injector }, { type: i0.ChangeDetectorRef }, { type: i0.ComponentFactoryResolver }, { type: i0.ApplicationRef }, { type: i1.NgControl, decorators: [{
type: Self
}] }, { type: i1.NgForm, decorators: [{
type: Optional
}] }, { type: i1.FormGroupDirective, decorators: [{
type: Optional
}] }], { aclErrorsMapper: [{
type: Input
}], aclErrorsMapperFn: [{
type: Input
}], aclErrorsMapperDisabled: [{
type: Input
}], aclErrorsMapperDisabled$: [], aclErrorsMapperOutlet: [{
type: Input
}], aclErrorsMapperControlName: [{
type: Input
}] }); })();
class TextComponent {
constructor(cdr) {
this.cdr = cdr;
}
static { this.ɵfac = function TextComponent_Factory(t) { return new (t || TextComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); }; }
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TextComponent, selectors: [["ng-component"]], standalone: true, features: [i0.ɵɵStandaloneFeature], decls: 1, vars: 1, template: function TextComponent_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵtext(0);
} if (rf & 2) {
i0.ɵɵtextInterpolate1(" ", ctx.data, " ");
} }, encapsulation: 2, changeDetection: 0 }); }
}
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TextComponent, [{
type: Component,
args: [{
template: ` {{ data }} `,
changeDetection: ChangeDetectionStrategy.OnPush,
standalone: true,
}]
}], () => [{ type: i0.ChangeDetectorRef }], null); })();
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TextComponent, { className: "TextComponent" }); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLW1hcHBlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvZm9ybS9lcnJvcnMtbWFwcGVyL2Vycm9ycy1tYXBwZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBVSxNQUFNLHFCQUFxQixDQUFDO0FBQy9FLE9BQU8sRUFFTCxjQUFjLEVBQ2QsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1Qsd0JBQXdCLEVBQ3hCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsS0FBSyxFQUVMLFFBQVEsRUFDUixJQUFJLEdBQ0wsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RSxPQUFPLEVBQ0wsVUFBVSxFQUNWLE9BQU8sRUFDUCxLQUFLLEVBQ0wsRUFBRSxFQUNGLFlBQVksRUFDWixHQUFHLEVBQ0gsU0FBUyxFQUNULFNBQVMsR0FDVixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFBYSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7O0FBT3hELE1BQU0sT0FBTyxxQkFDWCxTQUFRLGdCQUFnQjtJQWdDeEIsWUFDUyxRQUFrQixFQUNSLEdBQXNCO0lBQ3ZDLDZDQUE2QztJQUM1QixHQUE2QixFQUM3QixNQUFzQixFQUNkLE9BQWtCLEVBQ2QsTUFBYyxFQUUxQixTQUE2QjtRQUU5QyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFWVCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ1IsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFFdEIsUUFBRyxHQUFILEdBQUcsQ0FBMEI7UUFDN0IsV0FBTSxHQUFOLE1B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RUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDNUIsQ0FBQztzRkFuSFUscUJBQXFCO29FQUFyQixxQkFBcUI7O0FBaUJoQztJQURDLGVBQWUsRUFBRTs4QkFDUSxVQUFVO3VFQUFVO2lGQWpCbkMscUJBQXFCO2NBSmpDLFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUsbUJBQW1CO2dCQUM3QixVQUFVLEVBQUUsSUFBSTthQUNqQjs7c0JBd0NJLElBQUk7O3NCQUNKLFFBQVE7O3NCQUNSLFFBQVE7cUJBcENYLGVBQWU7a0JBRGQsS0FBSztZQUlOLGlCQUFpQjtrQkFEaEIsS0FBSztZQUlOLHVCQUF1QjtrQkFEdEIsS0FBSztZQU9OLHdCQUF3QixNQU14QixxQkFBcUI7a0JBRHBCLEtBQUs7WUFJTiwwQkFBMEI7a0JBRHpCLEtBQUs7O0FBNkZSLE1BS00sYUFBYTtJQUVqQixZQUFtQixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtJQUFHLENBQUM7OEVBRnpDLGFBQWE7b0VBQWIsYUFBYTtZQUpMLFlBQVc7O1lBQVgseUNBQVc7OztpRkFJbkIsYUFBYTtjQUxsQixTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLGNBQWM7Z0JBQ3hCLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2dCQUMvQyxVQUFVLEVBQUUsSUFBSTthQUNqQjs7a0ZBQ0ssYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudFBvcnRhbCwgRG9tUG9ydGFsT3V0bGV0LCBQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIEFwcGxpY2F0aW9uUmVmLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICBEaXJlY3RpdmUsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgU2VsZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXBEaXJlY3RpdmUsIE5nQ29udHJvbCwgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgT2JzZXJ2YWJsZSxcbiAgU3ViamVjdCxcbiAgbWVyZ2UsXG4gIG9mLFxuICBkZWJvdW5jZVRpbWUsXG4gIG1hcCxcbiAgc3dpdGNoTWFwLFxuICB0YWtlVW50aWwsXG59IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTdHJpbmdNYXAsIE9ic2VydmFibGVJbnB1dCB9IGZyb20gJy4uLy4uL2NvcmUvcHVibGljLWFwaSc7XG5cbmltcG9ydCB7IEJhc2VFcnJvcnNNYXBwZXIgfSBmcm9tICcuL2Jhc2UtZXJyb3JzLW1hcHBlcic7XG5pbXBvcnQgeyBFcnJvcnNNYXBwZXJGbiB9IGZyb20gJy4vdHlwZXMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYWNsRXJyb3JzTWFwcGVyXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEVycm9yc01hcHBlckRpcmVjdGl2ZVxuICBleHRlbmRzIEJhc2VFcnJvcnNNYXBwZXJcbiAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3lcbntcbiAgQElucHV0KClcbiAgYWNsRXJyb3JzTWFwcGVyOiBTdHJpbmdNYXAgfCAnJztcblxuICBASW5wdXQoKVxuICBhY2xFcnJvcnNNYXBwZXJGbjogRXJyb3JzTWFwcGVyRm47XG5cbiAgQElucHV0KClcbiAgYWNsRXJyb3JzTWFwcGVyRGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGRpc2FibGUgZXJyb3JzIG1hcHBlclxuICAgKi9cbiAgQE9ic2VydmFibGVJbnB1dCgpXG4gIGFjbEVycm9yc01hcHBlckRpc2FibGVkJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICAvKipcbiAgICogc3BlY2lmeSBvdXRsZXQsIGNvbnNpZGVyIHRoaXMgb3RoZXIgdGhhbiBzcGVjaWZpYyBjb250cm9sIGVudGl0eSB0byBtYWtlIHN1cmUgZGkgY2FuIGFsd2F5cyBnZXQgbmdGb3JtXG4gICAqL1xuICBASW5wdXQoKVxuICBhY2xFcnJvcnNNYXBwZXJPdXRsZXQ6IEVsZW1lbnQ7XG5cbiAgQElucHV0KClcbiAgYWNsRXJyb3JzTWFwcGVyQ29udHJvbE5hbWU6IHN0cmluZztcblxuICBwcml2YXRlIHBvcnRhbDogUG9ydGFsPGFueT47XG4gIHByaXZhdGUgcG9ydGFsSG9zdDogRG9tUG9ydGFsT3V0bGV0O1xuICBwcml2YXRlIHBvcnRhbEF0dGFjaDogVGV4dENvbXBvbmVudDtcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNvbmFyL2RlcHJlY2F0aW9uXG4gICAgcHJpdmF0ZSByZWFkb25seSBjZnI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFwcFJlZjogQXBwbGljYXRpb25SZWYsXG4gICAgQFNlbGYoKSBwcml2YXRlIHJlYWRvbmx5IGNvbnRyb2w6IE5nQ29udHJvbCxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IG5nRm9ybTogTmdGb3JtLFxuICAgIEBPcHRpb25hbCgpXG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtR3JvdXA6IEZvcm1Hcm91cERpcmVjdGl2ZSxcbiAgKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICghdGhpcy5jb250cm9sKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdFcnJvcnMgbWFwcGVyIGlzIG5vdCBwcm9wZXJseSBjb25maWd1cmVkLiBObyB2YWxpZCBjb250cm9sIGlzIGZvdW5kLicsXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLmluaXRQb3J0YWwoKTtcbiAgICBjb25zdCBzdGF0dXNDaGFuZ2UgPSBbdGhpcy5jb250cm9sLnN0YXR1c0NoYW5nZXNdO1xuXG4gICAgaWYgKHRoaXMubmdGb3JtKSB7XG4gICAgICBzdGF0dXNDaGFuZ2UucHVzaCh0aGlzLm5nRm9ybS5uZ1N1Ym1pdCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmZvcm1Hcm91cCkge1xuICAgICAgc3RhdHVzQ2hhbmdlLnB1c2godGhpcy5mb3JtR3JvdXAubmdTdWJtaXQpO1xuICAgIH1cblxuICAgIHRoaXMuYWNsRXJyb3JzTWFwcGVyRGlzYWJsZWQkXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKGlzRGlzYWJsZSA9PlxuICAgICAgICAgIGlzRGlzYWJsZVxuICAgICAgICAgICAgPyBvZihudWxsKVxuICAgICAgICAgICAgOiBtZXJnZSguLi5zdGF0dXNDaGFuZ2UsIHRoaXMudHJhbnNsYXRlLmxvY2FsZSQpLnBpcGUoXG4gICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKDUwKSxcbiAgICAgICAgICAgICAgICBtYXAoKCkgPT5cbiAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0RXJyb3JNZXNzYWdlKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2wuZXJyb3JzLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFjbEVycm9yc01hcHBlciB8fCB7fSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hY2xFcnJvcnNNYXBwZXJGbixcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hY2xFcnJvcnNNYXBwZXJDb250cm9sTmFtZSxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShjb250ZW50ID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVDb250ZW50KGNvbnRlbnQpO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgdXBkYXRlQ29udGVudChjb250ZW50OiBzdHJpbmcpIHtcbiAgICBpZiAoIWNvbnRlbnQpIHtcbiAgICAgIGlmICh0aGlzLnBvcnRhbEhvc3QuaGFzQXR0YWNoZWQoKSkge1xuICAgICAgICB0aGlzLnBvcnRhbEhvc3QuZGV0YWNoKCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghdGhpcy5wb3J0YWxIb3N0Lmhhc0F0dGFjaGVkKCkpIHtcbiAgICAgIHRoaXMucG9ydGFsQXR0YWNoID0gdGhpcy5wb3J0YWxIb3N0LmF0dGFjaCh0aGlzLnBvcnRhbCkuaW5zdGFuY2U7XG4gICAgfVxuICAgIHRoaXMucG9ydGFsQXR0YWNoLmRhdGEgPSBjb250ZW50O1xuICAgIHRoaXMucG9ydGFsQXR0YWNoLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGluaXRQb3J0YWwoKSB7XG4gICAgdGhpcy5wb3J0YWxIb3N0ID0gbmV3IERvbVBvcnRhbE91dGxldChcbiAgICAgIHRoaXMuYWNsRXJyb3JzTWFwcGVyT3V0bGV0LFxuICAgICAgdGhpcy5jZnIsXG4gICAgICB0aGlzLmFwcFJlZixcbiAgICAgIHRoaXMuaW5qZWN0b3IsXG4gICAgKTtcbiAgICB0aGlzLnBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWwoVGV4dENvbXBvbmVudCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLnBvcnRhbEhvc3QuZGlzcG9zZSgpO1xuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZTogYCB7eyBkYXRhIH19IGAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmNsYXNzIFRleHRDb21wb25lbnQge1xuICBkYXRhOiBzdHJpbmc7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxufVxuIl19