ets-fe-ng-sdk 17.0.422 → 17.0.423
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -40,13 +40,15 @@ export class FormErrorComponent {
|
|
|
40
40
|
this.destroyerRef = destroyerRef;
|
|
41
41
|
this.sub = this.uS.createSubscriptionManager();
|
|
42
42
|
this.errors = signal([]);
|
|
43
|
+
this.cErrors = computed(() => this.errors()?.filter((x) => x.formControl.invalid || x.formControl.pending));
|
|
43
44
|
// protected form?: Form;
|
|
44
45
|
// protected forms?: Form[];
|
|
45
46
|
this.lgGridNo = input(2);
|
|
46
47
|
this.xxlGridNo = input(3);
|
|
47
|
-
this.hasError = computed(() => this.
|
|
48
|
+
this.hasError = computed(() => this.cErrors()?.length > 0);
|
|
48
49
|
effect(() => {
|
|
49
50
|
console.log('errored forms', this.errors());
|
|
51
|
+
console.log('cErrored forms', this.cErrors());
|
|
50
52
|
});
|
|
51
53
|
this.destroyerRef.onDestroy(() => {
|
|
52
54
|
this.sub?.clear();
|
|
@@ -83,7 +85,7 @@ export class FormErrorComponent {
|
|
|
83
85
|
// console.log('message', this.message);
|
|
84
86
|
}
|
|
85
87
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: FormErrorComponent, deps: [{ token: i0.ElementRef }, { token: i1.UtilityService }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
86
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: FormErrorComponent, isStandalone: true, selector: "form-error", inputs: { form: { classPropertyName: "form", publicName: "form", isSignal: false, isRequired: false, transformFunction: null }, lgGridNo: { classPropertyName: "lgGridNo", publicName: "lgGridNo", isSignal: true, isRequired: false, transformFunction: null }, xxlGridNo: { classPropertyName: "xxlGridNo", publicName: "xxlGridNo", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (hasError()) {\n <div class=\"d-flex justify-content-end mt-2\">\n <app-btn\n text=\"Form Errors\"\n icon=\"info\"\n type=\"clear\"\n mclass=\"btn-outline-warning\"\n (mclick)=\"errCont.hidden = !errCont.hidden\" />\n </div>\n <div class=\"border form-error-container p-3 mt-2\" #errCont [hidden]=\"true\">\n <div class=\"row row-cols-lg-{{ lgGridNo() }} row-cols-xxl-{{ xxlGridNo() }}\">\n @if (false) {\n <div class=\"col-lg-12 d-flex\">\n <div>\n <div class=\"pe-3\">{{ 'Form errors' | appTranslate | async }}</div>\n <!-- <hr class=\"my-0\"> -->\n </div>\n </div>\n }\n @for (item of
|
|
88
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: FormErrorComponent, isStandalone: true, selector: "form-error", inputs: { form: { classPropertyName: "form", publicName: "form", isSignal: false, isRequired: false, transformFunction: null }, lgGridNo: { classPropertyName: "lgGridNo", publicName: "lgGridNo", isSignal: true, isRequired: false, transformFunction: null }, xxlGridNo: { classPropertyName: "xxlGridNo", publicName: "xxlGridNo", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (hasError()) {\n <div class=\"d-flex justify-content-end mt-2\">\n <app-btn\n text=\"Form Errors\"\n icon=\"info\"\n type=\"clear\"\n mclass=\"btn-outline-warning\"\n (mclick)=\"errCont.hidden = !errCont.hidden\" />\n </div>\n <div class=\"border form-error-container p-3 mt-2\" #errCont [hidden]=\"true\">\n <div class=\"row row-cols-lg-{{ lgGridNo() }} row-cols-xxl-{{ xxlGridNo() }}\">\n @if (false) {\n <div class=\"col-lg-12 d-flex\">\n <div>\n <div class=\"pe-3\">{{ 'Form errors' | appTranslate | async }}</div>\n <!-- <hr class=\"my-0\"> -->\n </div>\n </div>\n }\n @for (item of cErrors(); track item) {\n @if (item.formControl) {\n <div class=\"error-item-case\">\n @if (item.parent) {\n <app-info-icon text=\"Group: {{ item.parent }}\" />\n <!-- <div class=\"\" [matTooltip]=\"item.parent\">Parent</div> -->\n }\n <app-validation-message\n [label]=\"item.label | titlecase\"\n [ignoreDirtiness]=\"true\"\n [control]=\"item.formControl\" />\n </div>\n }\n }\n </div>\n </div>\n}\n", styles: [":host ::ng-deep .errormssg{color:#870000}:host .form-error-container{border-radius:10px}:host app-info-icon{margin-right:5px}:host .error-item-case{display:flex;align-items:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: SDKTranslatePipe, name: "appTranslate" }, { kind: "component", type: ValidationMessageComponent, selector: "app-validation-message", inputs: ["debug", "label", "hideOverflow", "minLength", "maxLength", "ignoreDirtiness", "customMessage", "control", "input"], outputs: ["labelChange"] }, { kind: "component", type: BtnComponent, selector: "app-btn", inputs: ["formSchema", "debug", "centerBtn", "danger", "warning", "verbose", "loading", "icon", "rightIcon", "leftIcon", "type", "group", "actionType", "animate", "excludeLogging", "loggingValue", "badge", "class", "customIcon", "form", "forms", "help", "iconBtn", "mclass", "showHelpIcon", "rightCustomIcon", "leftCustomIcon", "text", "valid", "mini", "onFormInvalid", "disabled"], outputs: ["loadingChange", "leftCustomIconChange", "mclick", "disabledChange"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "component", type: InfoIconComponent, selector: "app-info-icon", inputs: ["text", "coloured", "left", "right"] }] }); }
|
|
87
89
|
}
|
|
88
90
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: FormErrorComponent, decorators: [{
|
|
89
91
|
type: Component,
|
|
@@ -94,17 +96,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
|
|
|
94
96
|
BtnComponent,
|
|
95
97
|
MatTooltipModule,
|
|
96
98
|
InfoIconComponent,
|
|
97
|
-
], template: "@if (hasError()) {\n <div class=\"d-flex justify-content-end mt-2\">\n <app-btn\n text=\"Form Errors\"\n icon=\"info\"\n type=\"clear\"\n mclass=\"btn-outline-warning\"\n (mclick)=\"errCont.hidden = !errCont.hidden\" />\n </div>\n <div class=\"border form-error-container p-3 mt-2\" #errCont [hidden]=\"true\">\n <div class=\"row row-cols-lg-{{ lgGridNo() }} row-cols-xxl-{{ xxlGridNo() }}\">\n @if (false) {\n <div class=\"col-lg-12 d-flex\">\n <div>\n <div class=\"pe-3\">{{ 'Form errors' | appTranslate | async }}</div>\n <!-- <hr class=\"my-0\"> -->\n </div>\n </div>\n }\n @for (item of
|
|
99
|
+
], template: "@if (hasError()) {\n <div class=\"d-flex justify-content-end mt-2\">\n <app-btn\n text=\"Form Errors\"\n icon=\"info\"\n type=\"clear\"\n mclass=\"btn-outline-warning\"\n (mclick)=\"errCont.hidden = !errCont.hidden\" />\n </div>\n <div class=\"border form-error-container p-3 mt-2\" #errCont [hidden]=\"true\">\n <div class=\"row row-cols-lg-{{ lgGridNo() }} row-cols-xxl-{{ xxlGridNo() }}\">\n @if (false) {\n <div class=\"col-lg-12 d-flex\">\n <div>\n <div class=\"pe-3\">{{ 'Form errors' | appTranslate | async }}</div>\n <!-- <hr class=\"my-0\"> -->\n </div>\n </div>\n }\n @for (item of cErrors(); track item) {\n @if (item.formControl) {\n <div class=\"error-item-case\">\n @if (item.parent) {\n <app-info-icon text=\"Group: {{ item.parent }}\" />\n <!-- <div class=\"\" [matTooltip]=\"item.parent\">Parent</div> -->\n }\n <app-validation-message\n [label]=\"item.label | titlecase\"\n [ignoreDirtiness]=\"true\"\n [control]=\"item.formControl\" />\n </div>\n }\n }\n </div>\n </div>\n}\n", styles: [":host ::ng-deep .errormssg{color:#870000}:host .form-error-container{border-radius:10px}:host app-info-icon{margin-right:5px}:host .error-item-case{display:flex;align-items:center}\n"] }]
|
|
98
100
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.UtilityService }, { type: i0.DestroyRef }], propDecorators: { form: [{
|
|
99
101
|
type: Input
|
|
100
102
|
}] } });
|
|
101
103
|
function hasError(control) {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
104
|
+
return control?.pending
|
|
105
|
+
? true
|
|
106
|
+
: !control?.errors
|
|
107
|
+
? false
|
|
108
|
+
: Object.keys(control.errors).length
|
|
109
|
+
? true
|
|
110
|
+
: false;
|
|
109
111
|
}
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lcnJvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvU2hhcmVkL2NvbXBvbmVudHMvZm9ybS1lcnJvci9mb3JtLWVycm9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9mb3JtLWVycm9yL2Zvcm0tZXJyb3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxTQUFTLEVBR1QsS0FBSyxFQUNMLFFBQVEsRUFDUixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQW1CLFNBQVMsRUFBZSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRixPQUFPLEVBQUUsWUFBWSxFQUFVLEdBQUcsRUFBRSxLQUFLLEVBQWEsTUFBTSxNQUFNLENBQUM7QUFDbkUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDdEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTlELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFN0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7QUFpQnJFLE1BQU0sT0FBTyxrQkFBa0I7SUFFN0Isb0dBQW9HO0lBQ3BHLElBQWEsSUFBSSxDQUFDLENBQWdCO1FBQ2hDLFlBQVk7UUFDWixJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUNYLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDZixDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUMxQyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQ2pCLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO2dCQUNqQixJQUNFLFVBQVUsSUFBSSxTQUFTO29CQUN2QixVQUFVLElBQUksU0FBUztvQkFDdkIsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxTQUFTLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxTQUFTLENBQUM7b0JBRTdELE9BQU8sQ0FDTCxNQUFNLENBQ0osQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQzFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUNmLElBQUksRUFBRSxDQUNSLENBQUM7cUJBQ0M7b0JBQ0gsT0FBTyxFQUFFLENBQUM7aUJBQ1g7WUFDSCxDQUFDLENBQUMsQ0FDSDtZQUNILENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDbEIsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUNqQixHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtnQkFDakIsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLFNBQVMsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLFNBQVM7b0JBQUUsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQy9FO29CQUNILE9BQU8sRUFBRSxDQUFDO2lCQUNYO1lBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FDSixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDdkMsQ0FBQztJQUNKLENBQUM7SUFVRCxZQUNTLEVBQTJCLEVBQzNCLEVBQWtCLEVBQ2xCLFlBQXdCO1FBRnhCLE9BQUUsR0FBRixFQUFFLENBQXlCO1FBQzNCLE9BQUUsR0FBRixFQUFFLENBQWdCO1FBQ2xCLGlCQUFZLEdBQVosWUFBWSxDQUFZO1FBbER4QixRQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1FBc0MxQyxXQUFNLEdBQUcsTUFBTSxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBRXJDLHlCQUF5QjtRQUN6Qiw0QkFBNEI7UUFDbkIsYUFBUSxHQUFHLEtBQUssQ0FBa0IsQ0FBQyxDQUFDLENBQUM7UUFDckMsY0FBUyxHQUFHLEtBQUssQ0FBa0IsQ0FBQyxDQUFDLENBQUM7UUFFdEMsYUFBUSxHQUFHLFFBQVEsQ0FBVSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBT3JFLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDVixPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUMvQixJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGdCQUFnQixDQUNkLElBQTRCLEVBQzVCLFFBQWlCLEVBQ2pCLE1BQWUsRUFDZixNQUFlO1FBRWYsWUFBWTtRQUNaLElBQUksUUFBUSxHQUFXLEVBQUUsQ0FBQztRQUMxQixJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNsQixZQUFZO1lBQ1osUUFBUSxDQUFDLElBQUksQ0FBQztnQkFDWixXQUFXLEVBQUUsSUFBSTtnQkFDakIsS0FBSyxFQUNILENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ2xDLENBQUMsSUFBSSxDQUFDLFVBQVU7d0JBQ2QsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztnQkFDNUUsTUFBTTthQUNQLENBQUMsQ0FBQztTQUNKO1FBQ0QsSUFBSSxJQUFJLFlBQVksU0FBUztZQUMzQixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQy9CLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLEVBQUU7b0JBQzVELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ25DLFFBQVEsQ0FBQyxJQUFJLENBQ1gsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQ3RCLE9BQU8sRUFDUCxHQUFHLEVBQ0gsTUFBTSxFQUNOLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FDdkUsQ0FDRixDQUFDO2lCQUNIO2FBQ0Y7YUFDRSxJQUFJLElBQUksWUFBWSxTQUFTO1lBQ2hDLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO2dCQUNoRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNyQyxZQUFZO2dCQUNaLFFBQVEsQ0FBQyxJQUFJLENBQ1gsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQ3RCLE9BQU8sRUFDUCxTQUFTLEVBQ1QsS0FBSyxHQUFHLENBQUMsRUFDVCxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQ3ZFLENBQ0YsQ0FBQzthQUNIO1FBQ0gsT0FBTyxRQUFRLENBQUM7UUFDaEIsWUFBWTtRQUNaLHdDQUF3QztJQUMxQyxDQUFDOzhHQTlHVSxrQkFBa0I7a0dBQWxCLGtCQUFrQiw2Y0NyQy9CLHF0Q0FvQ0EsK09EUEksWUFBWSw0SUFDWixnQkFBZ0IscURBQ2hCLDBCQUEwQiwyTkFDMUIsWUFBWSxrZ0JBQ1osZ0JBQWdCLCtCQUNoQixpQkFBaUI7OzJGQUdSLGtCQUFrQjtrQkFmOUIsU0FBUzsrQkFDRSxZQUFZLGNBQ1YsSUFBSSxXQUlQO3dCQUNQLFlBQVk7d0JBQ1osZ0JBQWdCO3dCQUNoQiwwQkFBMEI7d0JBQzFCLFlBQVk7d0JBQ1osZ0JBQWdCO3dCQUNoQixpQkFBaUI7cUJBQ2xCO3FJQUtZLElBQUk7c0JBQWhCLEtBQUs7O0FBK0dSLFNBQVMsUUFBUSxDQUFDLE9BQXdCO0lBQ3hDLElBQUksT0FBTyxFQUFFLE9BQU87UUFBRSxPQUFPLElBQUksQ0FBQztTQUM3QixJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU07UUFBRSxPQUFPLEtBQUssQ0FBQztTQUNuQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU07UUFBRSxPQUFPLElBQUksQ0FBQztJQUN6RCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBEZXN0cm95UmVmLFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgaW5wdXQsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1BcnJheSwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlsdGVyLCBtYXAsIG1lcmdlLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFZhbGlkYXRpb25NZXNzYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vaW5wdXQvdmFsaWRhdGlvbi1tZXNzYWdlL3ZhbGlkYXRpb24tbWVzc2FnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnRuQ29tcG9uZW50IH0gZnJvbSAnLi4vYnRuL2J0bi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU0RLVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3RyYW5zbGF0ZS5waXBlJztcbmltcG9ydCB7IFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vU2VydmljZXMvdXRpbGl0eS5zZXJ2aWNlJztcbmltcG9ydCB7IHVuaXFCeSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQgeyB0b09ic2VydmFibGUsIHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgSW5mb0ljb25Db21wb25lbnQgfSBmcm9tICcuLi9pbmZvLWljb24vaW5mby1pY29uLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Zvcm0tZXJyb3InLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1lcnJvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tZXJyb3IuY29tcG9uZW50LnNjc3MnXSxcbiAgLy8gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFNES1RyYW5zbGF0ZVBpcGUsXG4gICAgVmFsaWRhdGlvbk1lc3NhZ2VDb21wb25lbnQsXG4gICAgQnRuQ29tcG9uZW50LFxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXG4gICAgSW5mb0ljb25Db21wb25lbnQsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1FcnJvckNvbXBvbmVudCB7XG4gIHJlYWRvbmx5IHN1YiA9IHRoaXMudVMuY3JlYXRlU3Vic2NyaXB0aW9uTWFuYWdlcigpO1xuICAvLyByZWFkb25seSBlcnJvcnMgPSBzaWduYWw8eyBmb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sOyBsYWJlbDogc3RyaW5nOyBwYXJlbnQ/OiBzdHJpbmcgfVtdPihbXSk7XG4gIEBJbnB1dCgpIHNldCBmb3JtKHY6IEZvcm0gfCBGb3JtW10pIHtcbiAgICAvLyBkZWJ1Z2dlcjtcbiAgICB0aGlzLnN1Yj8uY2xlYXIoKTtcbiAgICB0aGlzLnN1Yi5wdXNoKFxuICAgICAgKEFycmF5LmlzQXJyYXkodilcbiAgICAgICAgPyBtZXJnZSguLi52Lm1hcCgoZikgPT4gZi5zdGF0dXNDaGFuZ2VzKSkucGlwZShcbiAgICAgICAgICAgIGRlYm91bmNlVGltZSg2MDApLFxuICAgICAgICAgICAgbWFwKChmb3JtU3RhdHVzKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBmb3JtU3RhdHVzID09ICdJTlZBTElEJyB8fFxuICAgICAgICAgICAgICAgIGZvcm1TdGF0dXMgPT0gJ1BFTkRJTkcnIHx8XG4gICAgICAgICAgICAgICAgdi5zb21lKChmKSA9PiBmLnN0YXR1cyA9PSAnSU5WQUxJRCcgfHwgZi5zdGF0dXMgPT0gJ1BFTkRJTkcnKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgIHVuaXFCeShcbiAgICAgICAgICAgICAgICAgICAgdi5mbGF0TWFwKChmKSA9PiB0aGlzLmdldEVycm9yTWVzc2FnZXMoZikpLFxuICAgICAgICAgICAgICAgICAgICAoaSkgPT4gaS5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICkgfHwgW11cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIClcbiAgICAgICAgOiB2LnN0YXR1c0NoYW5nZXMucGlwZShcbiAgICAgICAgICAgIGRlYm91bmNlVGltZSg2MDApLFxuICAgICAgICAgICAgbWFwKChmb3JtU3RhdHVzKSA9PiB7XG4gICAgICAgICAgICAgIGlmICh2LnN0YXR1cyA9PSAnSU5WQUxJRCcgfHwgdi5zdGF0dXMgPT0gJ1BFTkRJTkcnKSByZXR1cm4gdGhpcy5nZXRFcnJvck1lc3NhZ2VzKHYpO1xuICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIClcbiAgICAgICkuc3Vic2NyaWJlKChyKSA9PiB0aGlzLmVycm9ycy5zZXQocikpLFxuICAgICk7XG4gIH1cbiAgcmVhZG9ubHkgZXJyb3JzID0gc2lnbmFsPElFcnJvcj4oW10pO1xuXG4gIC8vIHByb3RlY3RlZCBmb3JtPzogRm9ybTtcbiAgLy8gcHJvdGVjdGVkIGZvcm1zPzogRm9ybVtdO1xuICByZWFkb25seSBsZ0dyaWRObyA9IGlucHV0PG51bWJlciB8ICdhdXRvJz4oMik7XG4gIHJlYWRvbmx5IHh4bEdyaWRObyA9IGlucHV0PG51bWJlciB8ICdhdXRvJz4oMyk7XG5cbiAgcmVhZG9ubHkgaGFzRXJyb3IgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiB0aGlzLmVycm9ycygpPy5sZW5ndGggPiAwKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZWw6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHB1YmxpYyB1UzogVXRpbGl0eVNlcnZpY2UsXG4gICAgcHVibGljIGRlc3Ryb3llclJlZjogRGVzdHJveVJlZixcbiAgKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKCdlcnJvcmVkIGZvcm1zJywgdGhpcy5lcnJvcnMoKSk7XG4gICAgfSk7XG4gICAgdGhpcy5kZXN0cm95ZXJSZWYub25EZXN0cm95KCgpID0+IHtcbiAgICAgIHRoaXMuc3ViPy5jbGVhcigpO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0RXJyb3JNZXNzYWdlcyhcbiAgICBmb3JtOiBGb3JtIHwgQWJzdHJhY3RDb250cm9sLFxuICAgIGZvcm1OYW1lPzogc3RyaW5nLFxuICAgIF9pbmRleD86IG51bWJlcixcbiAgICBwYXJlbnQ/OiBzdHJpbmcsXG4gICk6IElFcnJvciB7XG4gICAgLy8gZGVidWdnZXI7XG4gICAgbGV0IG1lc3NhZ2VzOiBJRXJyb3IgPSBbXTtcbiAgICBpZiAoaGFzRXJyb3IoZm9ybSkpIHtcbiAgICAgIC8vIGRlYnVnZ2VyO1xuICAgICAgbWVzc2FnZXMucHVzaCh7XG4gICAgICAgIGZvcm1Db250cm9sOiBmb3JtLFxuICAgICAgICBsYWJlbDpcbiAgICAgICAgICAoX2luZGV4ID8gYEl0ZW0gJHtfaW5kZXh9OiBgIDogJycpICtcbiAgICAgICAgICAoZm9ybS5sYWJlbFZhbHVlIHx8XG4gICAgICAgICAgICAoZm9ybU5hbWUgPyB0aGlzLnVTLmZvcm1hdEZpZWxkKGZvcm1OYW1lKSA6IGZvcm1OYW1lPy50b1NlbnRlbmNlQ2FzZSgpKSksXG4gICAgICAgIHBhcmVudCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoZm9ybSBpbnN0YW5jZW9mIEZvcm1Hcm91cClcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIGZvcm0uY29udHJvbHMpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChmb3JtLmNvbnRyb2xzLCBrZXkpKSB7XG4gICAgICAgICAgY29uc3QgY29udHJvbCA9IGZvcm0uY29udHJvbHNba2V5XTtcbiAgICAgICAgICBtZXNzYWdlcy5wdXNoKFxuICAgICAgICAgICAgLi4udGhpcy5nZXRFcnJvck1lc3NhZ2VzKFxuICAgICAgICAgICAgICBjb250cm9sLFxuICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgIF9pbmRleCxcbiAgICAgICAgICAgICAgZm9ybS5sYWJlbFZhbHVlIHx8IChmb3JtTmFtZSA/IHRoaXMudVMuZm9ybWF0RmllbGQoZm9ybU5hbWUpIDogcGFyZW50KSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIGVsc2UgaWYgKGZvcm0gaW5zdGFuY2VvZiBGb3JtQXJyYXkpXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgZm9ybS5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgY29uc3QgY29udHJvbCA9IGZvcm0uY29udHJvbHNbaW5kZXhdO1xuICAgICAgICAvLyBkZWJ1Z2dlcjtcbiAgICAgICAgbWVzc2FnZXMucHVzaChcbiAgICAgICAgICAuLi50aGlzLmdldEVycm9yTWVzc2FnZXMoXG4gICAgICAgICAgICBjb250cm9sLFxuICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgaW5kZXggKyAxLFxuICAgICAgICAgICAgZm9ybS5sYWJlbFZhbHVlIHx8IChmb3JtTmFtZSA/IHRoaXMudVMuZm9ybWF0RmllbGQoZm9ybU5hbWUpIDogcGFyZW50KSxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIHJldHVybiBtZXNzYWdlcztcbiAgICAvLyBkZWJ1Z2dlcjtcbiAgICAvLyBjb25zb2xlLmxvZygnbWVzc2FnZScsIHRoaXMubWVzc2FnZSk7XG4gIH1cbn1cbnR5cGUgRm9ybSA9IEZvcm1Hcm91cCB8IEZvcm1Db250cm9sIHwgRm9ybUFycmF5O1xudHlwZSBJRXJyb3IgPSB7IGZvcm1Db250cm9sOiBBYnN0cmFjdENvbnRyb2w7IGxhYmVsOiBzdHJpbmc7IHBhcmVudDogc3RyaW5nIHwgbnVsbCB9W107XG5mdW5jdGlvbiBoYXNFcnJvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpIHtcbiAgaWYgKGNvbnRyb2w/LnBlbmRpbmcpIHJldHVybiB0cnVlO1xuICBlbHNlIGlmICghY29udHJvbD8uZXJyb3JzKSByZXR1cm4gZmFsc2U7XG4gIGVsc2UgaWYgKE9iamVjdC5rZXlzKGNvbnRyb2wuZXJyb3JzKS5sZW5ndGgpIHJldHVybiB0cnVlO1xuICByZXR1cm4gZmFsc2U7XG59XG4iLCJAaWYgKGhhc0Vycm9yKCkpIHtcbiAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIG10LTJcIj5cbiAgICA8YXBwLWJ0blxuICAgICAgdGV4dD1cIkZvcm0gRXJyb3JzXCJcbiAgICAgIGljb249XCJpbmZvXCJcbiAgICAgIHR5cGU9XCJjbGVhclwiXG4gICAgICBtY2xhc3M9XCJidG4tb3V0bGluZS13YXJuaW5nXCJcbiAgICAgIChtY2xpY2spPVwiZXJyQ29udC5oaWRkZW4gPSAhZXJyQ29udC5oaWRkZW5cIiAvPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImJvcmRlciBmb3JtLWVycm9yLWNvbnRhaW5lciBwLTMgbXQtMlwiICNlcnJDb250IFtoaWRkZW5dPVwidHJ1ZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJyb3cgcm93LWNvbHMtbGcte3sgbGdHcmlkTm8oKSB9fSByb3ctY29scy14eGwte3sgeHhsR3JpZE5vKCkgfX1cIj5cbiAgICAgIEBpZiAoZmFsc2UpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMiBkLWZsZXhcIj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBlLTNcIj57eyAnRm9ybSBlcnJvcnMnIHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMgfX08L2Rpdj5cbiAgICAgICAgICAgIDwhLS0gPGhyIGNsYXNzPVwibXktMFwiPiAtLT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgICBAZm9yIChpdGVtIG9mIGVycm9ycygpOyB0cmFjayBpdGVtKSB7XG4gICAgICAgIEBpZiAoaXRlbS5mb3JtQ29udHJvbCkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJlcnJvci1pdGVtLWNhc2VcIj5cbiAgICAgICAgICAgIEBpZiAoaXRlbS5wYXJlbnQpIHtcbiAgICAgICAgICAgICAgPGFwcC1pbmZvLWljb24gdGV4dD1cIkdyb3VwOiB7eyBpdGVtLnBhcmVudCB9fVwiIC8+XG4gICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cIlwiIFttYXRUb29sdGlwXT1cIml0ZW0ucGFyZW50XCI+UGFyZW50PC9kaXY+IC0tPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPGFwcC12YWxpZGF0aW9uLW1lc3NhZ2VcbiAgICAgICAgICAgICAgW2xhYmVsXT1cIml0ZW0ubGFiZWwgfCB0aXRsZWNhc2VcIlxuICAgICAgICAgICAgICBbaWdub3JlRGlydGluZXNzXT1cInRydWVcIlxuICAgICAgICAgICAgICBbY29udHJvbF09XCJpdGVtLmZvcm1Db250cm9sXCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbn1cbiJdfQ==
|
|
112
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lcnJvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvU2hhcmVkL2NvbXBvbmVudHMvZm9ybS1lcnJvci9mb3JtLWVycm9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9mb3JtLWVycm9yL2Zvcm0tZXJyb3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxTQUFTLEVBR1QsS0FBSyxFQUNMLFFBQVEsRUFDUixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQW1CLFNBQVMsRUFBZSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRixPQUFPLEVBQUUsWUFBWSxFQUFVLEdBQUcsRUFBRSxLQUFLLEVBQWEsTUFBTSxNQUFNLENBQUM7QUFDbkUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDdEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTlELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFN0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7QUFpQnJFLE1BQU0sT0FBTyxrQkFBa0I7SUFFN0Isb0dBQW9HO0lBQ3BHLElBQWEsSUFBSSxDQUFDLENBQWdCO1FBQ2hDLFlB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LE9BQU8sT0FBTyxFQUFFLE9BQU87UUFDckIsQ0FBQyxDQUFDLElBQUk7UUFDTixDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTTtZQUNoQixDQUFDLENBQUMsS0FBSztZQUNQLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNO2dCQUNsQyxDQUFDLENBQUMsSUFBSTtnQkFDTixDQUFDLENBQUMsS0FBSyxDQUFDO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBEZXN0cm95UmVmLFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgaW5wdXQsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1BcnJheSwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlsdGVyLCBtYXAsIG1lcmdlLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFZhbGlkYXRpb25NZXNzYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vaW5wdXQvdmFsaWRhdGlvbi1tZXNzYWdlL3ZhbGlkYXRpb24tbWVzc2FnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnRuQ29tcG9uZW50IH0gZnJvbSAnLi4vYnRuL2J0bi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU0RLVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3RyYW5zbGF0ZS5waXBlJztcbmltcG9ydCB7IFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vU2VydmljZXMvdXRpbGl0eS5zZXJ2aWNlJztcbmltcG9ydCB7IHVuaXFCeSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQgeyB0b09ic2VydmFibGUsIHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgSW5mb0ljb25Db21wb25lbnQgfSBmcm9tICcuLi9pbmZvLWljb24vaW5mby1pY29uLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Zvcm0tZXJyb3InLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1lcnJvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tZXJyb3IuY29tcG9uZW50LnNjc3MnXSxcbiAgLy8gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFNES1RyYW5zbGF0ZVBpcGUsXG4gICAgVmFsaWRhdGlvbk1lc3NhZ2VDb21wb25lbnQsXG4gICAgQnRuQ29tcG9uZW50LFxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXG4gICAgSW5mb0ljb25Db21wb25lbnQsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1FcnJvckNvbXBvbmVudCB7XG4gIHJlYWRvbmx5IHN1YiA9IHRoaXMudVMuY3JlYXRlU3Vic2NyaXB0aW9uTWFuYWdlcigpO1xuICAvLyByZWFkb25seSBlcnJvcnMgPSBzaWduYWw8eyBmb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sOyBsYWJlbDogc3RyaW5nOyBwYXJlbnQ/OiBzdHJpbmcgfVtdPihbXSk7XG4gIEBJbnB1dCgpIHNldCBmb3JtKHY6IEZvcm0gfCBGb3JtW10pIHtcbiAgICAvLyBkZWJ1Z2dlcjtcbiAgICB0aGlzLnN1Yj8uY2xlYXIoKTtcbiAgICB0aGlzLnN1Yi5wdXNoKFxuICAgICAgKEFycmF5LmlzQXJyYXkodilcbiAgICAgICAgPyBtZXJnZSguLi52Lm1hcCgoZikgPT4gZi5zdGF0dXNDaGFuZ2VzKSkucGlwZShcbiAgICAgICAgICAgIGRlYm91bmNlVGltZSg2MDApLFxuICAgICAgICAgICAgbWFwKChmb3JtU3RhdHVzKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBmb3JtU3RhdHVzID09ICdJTlZBTElEJyB8fFxuICAgICAgICAgICAgICAgIGZvcm1TdGF0dXMgPT0gJ1BFTkRJTkcnIHx8XG4gICAgICAgICAgICAgICAgdi5zb21lKChmKSA9PiBmLnN0YXR1cyA9PSAnSU5WQUxJRCcgfHwgZi5zdGF0dXMgPT0gJ1BFTkRJTkcnKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgIHVuaXFCeShcbiAgICAgICAgICAgICAgICAgICAgdi5mbGF0TWFwKChmKSA9PiB0aGlzLmdldEVycm9yTWVzc2FnZXMoZikpLFxuICAgICAgICAgICAgICAgICAgICAoaSkgPT4gaS5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICkgfHwgW11cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIClcbiAgICAgICAgOiB2LnN0YXR1c0NoYW5nZXMucGlwZShcbiAgICAgICAgICAgIGRlYm91bmNlVGltZSg2MDApLFxuICAgICAgICAgICAgbWFwKChmb3JtU3RhdHVzKSA9PiB7XG4gICAgICAgICAgICAgIGlmICh2LnN0YXR1cyA9PSAnSU5WQUxJRCcgfHwgdi5zdGF0dXMgPT0gJ1BFTkRJTkcnKSByZXR1cm4gdGhpcy5nZXRFcnJvck1lc3NhZ2VzKHYpO1xuICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIClcbiAgICAgICkuc3Vic2NyaWJlKChyKSA9PiB0aGlzLmVycm9ycy5zZXQocikpLFxuICAgICk7XG4gIH1cbiAgcmVhZG9ubHkgZXJyb3JzID0gc2lnbmFsPElFcnJvcj4oW10pO1xuICByZWFkb25seSBjRXJyb3JzID0gY29tcHV0ZWQ8SUVycm9yPihcbiAgICAoKSA9PiB0aGlzLmVycm9ycygpPy5maWx0ZXIoKHgpID0+IHguZm9ybUNvbnRyb2wuaW52YWxpZCB8fCB4LmZvcm1Db250cm9sLnBlbmRpbmcpLFxuICApO1xuXG4gIC8vIHByb3RlY3RlZCBmb3JtPzogRm9ybTtcbiAgLy8gcHJvdGVjdGVkIGZvcm1zPzogRm9ybVtdO1xuICByZWFkb25seSBsZ0dyaWRObyA9IGlucHV0PG51bWJlciB8ICdhdXRvJz4oMik7XG4gIHJlYWRvbmx5IHh4bEdyaWRObyA9IGlucHV0PG51bWJlciB8ICdhdXRvJz4oMyk7XG5cbiAgcmVhZG9ubHkgaGFzRXJyb3IgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiB0aGlzLmNFcnJvcnMoKT8ubGVuZ3RoID4gMCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGVsOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBwdWJsaWMgdVM6IFV0aWxpdHlTZXJ2aWNlLFxuICAgIHB1YmxpYyBkZXN0cm95ZXJSZWY6IERlc3Ryb3lSZWYsXG4gICkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZygnZXJyb3JlZCBmb3JtcycsIHRoaXMuZXJyb3JzKCkpO1xuICAgICAgY29uc29sZS5sb2coJ2NFcnJvcmVkIGZvcm1zJywgdGhpcy5jRXJyb3JzKCkpO1xuICAgIH0pO1xuICAgIHRoaXMuZGVzdHJveWVyUmVmLm9uRGVzdHJveSgoKSA9PiB7XG4gICAgICB0aGlzLnN1Yj8uY2xlYXIoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldEVycm9yTWVzc2FnZXMoXG4gICAgZm9ybTogRm9ybSB8IEFic3RyYWN0Q29udHJvbCxcbiAgICBmb3JtTmFtZT86IHN0cmluZyxcbiAgICBfaW5kZXg/OiBudW1iZXIsXG4gICAgcGFyZW50Pzogc3RyaW5nLFxuICApOiBJRXJyb3Ige1xuICAgIC8vIGRlYnVnZ2VyO1xuICAgIGxldCBtZXNzYWdlczogSUVycm9yID0gW107XG4gICAgaWYgKGhhc0Vycm9yKGZvcm0pKSB7XG4gICAgICAvLyBkZWJ1Z2dlcjtcbiAgICAgIG1lc3NhZ2VzLnB1c2goe1xuICAgICAgICBmb3JtQ29udHJvbDogZm9ybSxcbiAgICAgICAgbGFiZWw6XG4gICAgICAgICAgKF9pbmRleCA/IGBJdGVtICR7X2luZGV4fTogYCA6ICcnKSArXG4gICAgICAgICAgKGZvcm0ubGFiZWxWYWx1ZSB8fFxuICAgICAgICAgICAgKGZvcm1OYW1lID8gdGhpcy51Uy5mb3JtYXRGaWVsZChmb3JtTmFtZSkgOiBmb3JtTmFtZT8udG9TZW50ZW5jZUNhc2UoKSkpLFxuICAgICAgICBwYXJlbnQsXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKGZvcm0gaW5zdGFuY2VvZiBGb3JtR3JvdXApXG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBmb3JtLmNvbnRyb2xzKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZm9ybS5jb250cm9scywga2V5KSkge1xuICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtLmNvbnRyb2xzW2tleV07XG4gICAgICAgICAgbWVzc2FnZXMucHVzaChcbiAgICAgICAgICAgIC4uLnRoaXMuZ2V0RXJyb3JNZXNzYWdlcyhcbiAgICAgICAgICAgICAgY29udHJvbCxcbiAgICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgICBfaW5kZXgsXG4gICAgICAgICAgICAgIGZvcm0ubGFiZWxWYWx1ZSB8fCAoZm9ybU5hbWUgPyB0aGlzLnVTLmZvcm1hdEZpZWxkKGZvcm1OYW1lKSA6IHBhcmVudCksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBlbHNlIGlmIChmb3JtIGluc3RhbmNlb2YgRm9ybUFycmF5KVxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGZvcm0ubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtLmNvbnRyb2xzW2luZGV4XTtcbiAgICAgICAgLy8gZGVidWdnZXI7XG4gICAgICAgIG1lc3NhZ2VzLnB1c2goXG4gICAgICAgICAgLi4udGhpcy5nZXRFcnJvck1lc3NhZ2VzKFxuICAgICAgICAgICAgY29udHJvbCxcbiAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGluZGV4ICsgMSxcbiAgICAgICAgICAgIGZvcm0ubGFiZWxWYWx1ZSB8fCAoZm9ybU5hbWUgPyB0aGlzLnVTLmZvcm1hdEZpZWxkKGZvcm1OYW1lKSA6IHBhcmVudCksXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICByZXR1cm4gbWVzc2FnZXM7XG4gICAgLy8gZGVidWdnZXI7XG4gICAgLy8gY29uc29sZS5sb2coJ21lc3NhZ2UnLCB0aGlzLm1lc3NhZ2UpO1xuICB9XG59XG50eXBlIEZvcm0gPSBGb3JtR3JvdXAgfCBGb3JtQ29udHJvbCB8IEZvcm1BcnJheTtcbnR5cGUgSUVycm9yID0geyBmb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sOyBsYWJlbDogc3RyaW5nOyBwYXJlbnQ6IHN0cmluZyB8IG51bGwgfVtdO1xuZnVuY3Rpb24gaGFzRXJyb3IoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSB7XG4gIHJldHVybiBjb250cm9sPy5wZW5kaW5nXG4gICAgPyB0cnVlXG4gICAgOiAhY29udHJvbD8uZXJyb3JzXG4gICAgICA/IGZhbHNlXG4gICAgICA6IE9iamVjdC5rZXlzKGNvbnRyb2wuZXJyb3JzKS5sZW5ndGhcbiAgICAgICAgPyB0cnVlXG4gICAgICAgIDogZmFsc2U7XG59XG4iLCJAaWYgKGhhc0Vycm9yKCkpIHtcbiAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIG10LTJcIj5cbiAgICA8YXBwLWJ0blxuICAgICAgdGV4dD1cIkZvcm0gRXJyb3JzXCJcbiAgICAgIGljb249XCJpbmZvXCJcbiAgICAgIHR5cGU9XCJjbGVhclwiXG4gICAgICBtY2xhc3M9XCJidG4tb3V0bGluZS13YXJuaW5nXCJcbiAgICAgIChtY2xpY2spPVwiZXJyQ29udC5oaWRkZW4gPSAhZXJyQ29udC5oaWRkZW5cIiAvPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImJvcmRlciBmb3JtLWVycm9yLWNvbnRhaW5lciBwLTMgbXQtMlwiICNlcnJDb250IFtoaWRkZW5dPVwidHJ1ZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJyb3cgcm93LWNvbHMtbGcte3sgbGdHcmlkTm8oKSB9fSByb3ctY29scy14eGwte3sgeHhsR3JpZE5vKCkgfX1cIj5cbiAgICAgIEBpZiAoZmFsc2UpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMiBkLWZsZXhcIj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBlLTNcIj57eyAnRm9ybSBlcnJvcnMnIHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMgfX08L2Rpdj5cbiAgICAgICAgICAgIDwhLS0gPGhyIGNsYXNzPVwibXktMFwiPiAtLT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgICBAZm9yIChpdGVtIG9mIGNFcnJvcnMoKTsgdHJhY2sgaXRlbSkge1xuICAgICAgICBAaWYgKGl0ZW0uZm9ybUNvbnRyb2wpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXJyb3ItaXRlbS1jYXNlXCI+XG4gICAgICAgICAgICBAaWYgKGl0ZW0ucGFyZW50KSB7XG4gICAgICAgICAgICAgIDxhcHAtaW5mby1pY29uIHRleHQ9XCJHcm91cDoge3sgaXRlbS5wYXJlbnQgfX1cIiAvPlxuICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJcIiBbbWF0VG9vbHRpcF09XCJpdGVtLnBhcmVudFwiPlBhcmVudDwvZGl2PiAtLT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxhcHAtdmFsaWRhdGlvbi1tZXNzYWdlXG4gICAgICAgICAgICAgIFtsYWJlbF09XCJpdGVtLmxhYmVsIHwgdGl0bGVjYXNlXCJcbiAgICAgICAgICAgICAgW2lnbm9yZURpcnRpbmVzc109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiaXRlbS5mb3JtQ29udHJvbFwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG59XG4iXX0=
|
|
@@ -12679,13 +12679,15 @@ class FormErrorComponent {
|
|
|
12679
12679
|
this.destroyerRef = destroyerRef;
|
|
12680
12680
|
this.sub = this.uS.createSubscriptionManager();
|
|
12681
12681
|
this.errors = signal([]);
|
|
12682
|
+
this.cErrors = computed(() => this.errors()?.filter((x) => x.formControl.invalid || x.formControl.pending));
|
|
12682
12683
|
// protected form?: Form;
|
|
12683
12684
|
// protected forms?: Form[];
|
|
12684
12685
|
this.lgGridNo = input(2);
|
|
12685
12686
|
this.xxlGridNo = input(3);
|
|
12686
|
-
this.hasError = computed(() => this.
|
|
12687
|
+
this.hasError = computed(() => this.cErrors()?.length > 0);
|
|
12687
12688
|
effect(() => {
|
|
12688
12689
|
console.log('errored forms', this.errors());
|
|
12690
|
+
console.log('cErrored forms', this.cErrors());
|
|
12689
12691
|
});
|
|
12690
12692
|
this.destroyerRef.onDestroy(() => {
|
|
12691
12693
|
this.sub?.clear();
|
|
@@ -12722,7 +12724,7 @@ class FormErrorComponent {
|
|
|
12722
12724
|
// console.log('message', this.message);
|
|
12723
12725
|
}
|
|
12724
12726
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: FormErrorComponent, deps: [{ token: i0.ElementRef }, { token: UtilityService }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12725
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: FormErrorComponent, isStandalone: true, selector: "form-error", inputs: { form: { classPropertyName: "form", publicName: "form", isSignal: false, isRequired: false, transformFunction: null }, lgGridNo: { classPropertyName: "lgGridNo", publicName: "lgGridNo", isSignal: true, isRequired: false, transformFunction: null }, xxlGridNo: { classPropertyName: "xxlGridNo", publicName: "xxlGridNo", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (hasError()) {\n <div class=\"d-flex justify-content-end mt-2\">\n <app-btn\n text=\"Form Errors\"\n icon=\"info\"\n type=\"clear\"\n mclass=\"btn-outline-warning\"\n (mclick)=\"errCont.hidden = !errCont.hidden\" />\n </div>\n <div class=\"border form-error-container p-3 mt-2\" #errCont [hidden]=\"true\">\n <div class=\"row row-cols-lg-{{ lgGridNo() }} row-cols-xxl-{{ xxlGridNo() }}\">\n @if (false) {\n <div class=\"col-lg-12 d-flex\">\n <div>\n <div class=\"pe-3\">{{ 'Form errors' | appTranslate | async }}</div>\n <!-- <hr class=\"my-0\"> -->\n </div>\n </div>\n }\n @for (item of
|
|
12727
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: FormErrorComponent, isStandalone: true, selector: "form-error", inputs: { form: { classPropertyName: "form", publicName: "form", isSignal: false, isRequired: false, transformFunction: null }, lgGridNo: { classPropertyName: "lgGridNo", publicName: "lgGridNo", isSignal: true, isRequired: false, transformFunction: null }, xxlGridNo: { classPropertyName: "xxlGridNo", publicName: "xxlGridNo", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (hasError()) {\n <div class=\"d-flex justify-content-end mt-2\">\n <app-btn\n text=\"Form Errors\"\n icon=\"info\"\n type=\"clear\"\n mclass=\"btn-outline-warning\"\n (mclick)=\"errCont.hidden = !errCont.hidden\" />\n </div>\n <div class=\"border form-error-container p-3 mt-2\" #errCont [hidden]=\"true\">\n <div class=\"row row-cols-lg-{{ lgGridNo() }} row-cols-xxl-{{ xxlGridNo() }}\">\n @if (false) {\n <div class=\"col-lg-12 d-flex\">\n <div>\n <div class=\"pe-3\">{{ 'Form errors' | appTranslate | async }}</div>\n <!-- <hr class=\"my-0\"> -->\n </div>\n </div>\n }\n @for (item of cErrors(); track item) {\n @if (item.formControl) {\n <div class=\"error-item-case\">\n @if (item.parent) {\n <app-info-icon text=\"Group: {{ item.parent }}\" />\n <!-- <div class=\"\" [matTooltip]=\"item.parent\">Parent</div> -->\n }\n <app-validation-message\n [label]=\"item.label | titlecase\"\n [ignoreDirtiness]=\"true\"\n [control]=\"item.formControl\" />\n </div>\n }\n }\n </div>\n </div>\n}\n", styles: [":host ::ng-deep .errormssg{color:#870000}:host .form-error-container{border-radius:10px}:host app-info-icon{margin-right:5px}:host .error-item-case{display:flex;align-items:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: SDKTranslatePipe, name: "appTranslate" }, { kind: "component", type: ValidationMessageComponent, selector: "app-validation-message", inputs: ["debug", "label", "hideOverflow", "minLength", "maxLength", "ignoreDirtiness", "customMessage", "control", "input"], outputs: ["labelChange"] }, { kind: "component", type: BtnComponent, selector: "app-btn", inputs: ["formSchema", "debug", "centerBtn", "danger", "warning", "verbose", "loading", "icon", "rightIcon", "leftIcon", "type", "group", "actionType", "animate", "excludeLogging", "loggingValue", "badge", "class", "customIcon", "form", "forms", "help", "iconBtn", "mclass", "showHelpIcon", "rightCustomIcon", "leftCustomIcon", "text", "valid", "mini", "onFormInvalid", "disabled"], outputs: ["loadingChange", "leftCustomIconChange", "mclick", "disabledChange"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "component", type: InfoIconComponent, selector: "app-info-icon", inputs: ["text", "coloured", "left", "right"] }] }); }
|
|
12726
12728
|
}
|
|
12727
12729
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: FormErrorComponent, decorators: [{
|
|
12728
12730
|
type: Component,
|
|
@@ -12733,18 +12735,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
|
|
|
12733
12735
|
BtnComponent,
|
|
12734
12736
|
MatTooltipModule,
|
|
12735
12737
|
InfoIconComponent,
|
|
12736
|
-
], template: "@if (hasError()) {\n <div class=\"d-flex justify-content-end mt-2\">\n <app-btn\n text=\"Form Errors\"\n icon=\"info\"\n type=\"clear\"\n mclass=\"btn-outline-warning\"\n (mclick)=\"errCont.hidden = !errCont.hidden\" />\n </div>\n <div class=\"border form-error-container p-3 mt-2\" #errCont [hidden]=\"true\">\n <div class=\"row row-cols-lg-{{ lgGridNo() }} row-cols-xxl-{{ xxlGridNo() }}\">\n @if (false) {\n <div class=\"col-lg-12 d-flex\">\n <div>\n <div class=\"pe-3\">{{ 'Form errors' | appTranslate | async }}</div>\n <!-- <hr class=\"my-0\"> -->\n </div>\n </div>\n }\n @for (item of
|
|
12738
|
+
], template: "@if (hasError()) {\n <div class=\"d-flex justify-content-end mt-2\">\n <app-btn\n text=\"Form Errors\"\n icon=\"info\"\n type=\"clear\"\n mclass=\"btn-outline-warning\"\n (mclick)=\"errCont.hidden = !errCont.hidden\" />\n </div>\n <div class=\"border form-error-container p-3 mt-2\" #errCont [hidden]=\"true\">\n <div class=\"row row-cols-lg-{{ lgGridNo() }} row-cols-xxl-{{ xxlGridNo() }}\">\n @if (false) {\n <div class=\"col-lg-12 d-flex\">\n <div>\n <div class=\"pe-3\">{{ 'Form errors' | appTranslate | async }}</div>\n <!-- <hr class=\"my-0\"> -->\n </div>\n </div>\n }\n @for (item of cErrors(); track item) {\n @if (item.formControl) {\n <div class=\"error-item-case\">\n @if (item.parent) {\n <app-info-icon text=\"Group: {{ item.parent }}\" />\n <!-- <div class=\"\" [matTooltip]=\"item.parent\">Parent</div> -->\n }\n <app-validation-message\n [label]=\"item.label | titlecase\"\n [ignoreDirtiness]=\"true\"\n [control]=\"item.formControl\" />\n </div>\n }\n }\n </div>\n </div>\n}\n", styles: [":host ::ng-deep .errormssg{color:#870000}:host .form-error-container{border-radius:10px}:host app-info-icon{margin-right:5px}:host .error-item-case{display:flex;align-items:center}\n"] }]
|
|
12737
12739
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: UtilityService }, { type: i0.DestroyRef }], propDecorators: { form: [{
|
|
12738
12740
|
type: Input
|
|
12739
12741
|
}] } });
|
|
12740
12742
|
function hasError(control) {
|
|
12741
|
-
|
|
12742
|
-
|
|
12743
|
-
|
|
12744
|
-
|
|
12745
|
-
|
|
12746
|
-
|
|
12747
|
-
|
|
12743
|
+
return control?.pending
|
|
12744
|
+
? true
|
|
12745
|
+
: !control?.errors
|
|
12746
|
+
? false
|
|
12747
|
+
: Object.keys(control.errors).length
|
|
12748
|
+
? true
|
|
12749
|
+
: false;
|
|
12748
12750
|
}
|
|
12749
12751
|
|
|
12750
12752
|
class TextCaseService {
|