@qbs-origin/origin-form 0.5.0 → 0.6.0
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.
- package/esm2022/lib/action-step-handler.mjs +3 -3
- package/esm2022/lib/auth-client.service.mjs +3 -3
- package/esm2022/lib/formly/baseFormlyControlComponent.mjs +3 -3
- package/esm2022/lib/formly/baseFormlyStepComponent.mjs +3 -3
- package/esm2022/lib/formly/custom-section-separator.component.mjs +3 -3
- package/esm2022/lib/formly/form-section-separator.component.mjs +3 -3
- package/esm2022/lib/formly/formly-action.mjs +3 -3
- package/esm2022/lib/formly/formly-checkbox/formly-checkbox.component.mjs +3 -3
- package/esm2022/lib/formly/formly-dictionary-dropdown-tree/formly-dictionary-dropdown-tree.component.mjs +3 -3
- package/esm2022/lib/formly/formly-download-documents/formly-download-documents.component.mjs +3 -3
- package/esm2022/lib/formly/formly-enrol-card/formly-enrol-card.component.mjs +3 -3
- package/esm2022/lib/formly/formly-field-stepper/formly-field-stepper.component.mjs +3 -3
- package/esm2022/lib/formly/formly-generate-documents/formly-generate-documents.component.mjs +3 -3
- package/esm2022/lib/formly/formly-identification.component.mjs +3 -3
- package/esm2022/lib/formly/formly-open-banking/formly-open-banking.component.mjs +3 -3
- package/esm2022/lib/formly/formly-paragraph/formly-paragraph.component.mjs +3 -3
- package/esm2022/lib/formly/formly-radio/formly-radio-component.mjs +3 -3
- package/esm2022/lib/formly/formly-row-fille.mjs +3 -3
- package/esm2022/lib/formly/formly-scan-id/formly-scan-id.component.mjs +3 -3
- package/esm2022/lib/formly/formly-sign/formly-sign.component.mjs +5 -5
- package/esm2022/lib/formly/formly-upload-documents/formly-upload-documents.component.mjs +3 -3
- package/esm2022/lib/formly/formly-validate-contact-info/formly-validate-contact-info.component.mjs +3 -3
- package/esm2022/lib/formly/formly-view-documents/formly-view-documents.component.mjs +3 -3
- package/esm2022/lib/formly/formly-view-offers/formly-view-offers.component.mjs +3 -3
- package/esm2022/lib/origin-form-auth.service.mjs +3 -3
- package/esm2022/lib/origin-form-token.interceptor.mjs +3 -3
- package/esm2022/lib/origin-form.component.mjs +3 -3
- package/esm2022/lib/origin-form.module.mjs +6 -6
- package/esm2022/lib/origin-form.service.mjs +3 -3
- package/esm2022/lib/others/check-list.database.mjs +3 -3
- package/esm2022/lib/others/config-service.mjs +3 -3
- package/esm2022/lib/others/external-link.directive.mjs +3 -3
- package/esm2022/lib/others/flux-helper.mjs +3 -3
- package/esm2022/lib/others/picker.component.mjs +3 -3
- package/esm2022/lib/others/translation.pipe.mjs +3 -3
- package/esm2022/lib/others/translations-helper.mjs +3 -3
- package/esm2022/lib/services/applicationData.service.mjs +3 -3
- package/esm2022/lib/services/auth-http.service.mjs +3 -3
- package/esm2022/lib/services/dialog.service.mjs +3 -3
- package/esm2022/lib/services/dictionary.service.mjs +3 -3
- package/esm2022/lib/services/forms.service.mjs +3 -3
- package/esm2022/lib/services/labels.service.mjs +3 -3
- package/esm2022/lib/services/language.service.mjs +3 -3
- package/esm2022/lib/services/open-banking.service.mjs +3 -3
- package/esm2022/lib/services/origin-form-signalr-handler.service.mjs +3 -3
- package/esm2022/lib/services/origin-form-signalr.service.mjs +3 -3
- package/esm2022/lib/services/otp.service.mjs +3 -3
- package/esm2022/lib/services/proxy.service.mjs +3 -3
- package/esm2022/lib/services/scroll-to-error.service.mjs +3 -3
- package/esm2022/lib/services/translation.service.mjs +3 -3
- package/esm2022/lib/shared-components/confirmation.component.mjs +3 -3
- package/esm2022/lib/shared-components/dictionaries-tree.component.mjs +3 -3
- package/esm2022/lib/shared-components/grid.component.mjs +3 -3
- package/esm2022/lib/shared-components/treeview/treeview.component.mjs +3 -3
- package/esm2022/lib/theme-injector.service.mjs +3 -3
- package/fesm2022/qbs-origin-origin-form.mjs +168 -168
- package/fesm2022/qbs-origin-origin-form.mjs.map +1 -1
- package/lib/formly/formly-sign/formly-sign.component.d.ts +1 -1
- package/lib/origin-form.module.d.ts +1 -1
- package/package.json +2 -2
|
@@ -265,10 +265,10 @@ export class FormlyScanIdComponent extends FieldType {
|
|
|
265
265
|
}
|
|
266
266
|
return null;
|
|
267
267
|
}
|
|
268
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
269
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.
|
|
268
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormlyScanIdComponent, deps: [{ token: i1.ApplicationDataService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
269
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: FormlyScanIdComponent, selector: "app-formly-scan-id", viewQueries: [{ propertyName: "fileInputFront", first: true, predicate: ["fileInputFront"], descendants: true }, { propertyName: "fileInputBack", first: true, predicate: ["fileInputBack"], descendants: true }, { propertyName: "videoElement", first: true, predicate: ["videoElement"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"scan-id-container\">\n <h2 class=\"title\">{{ props[\"name\"] }}</h2>\n <p class=\"description\">{{ props[\"description\"] }}</p>\n\n <!-- Selection Step -->\n <div class=\"card-selection-container\">\n <div class=\"card-options\">\n <div class=\"card-option\"\n [class.selected]=\"oldIdCard === true && cardTypeSelected\"\n (click)=\"selectCardType(true)\">\n <img src=\"assets/images/origin-form/old-id-card.png\" alt=\"Old ID Card\" />\n </div>\n <div class=\"card-option\"\n [class.selected]=\"oldIdCard === false && cardTypeSelected\"\n (click)=\"selectCardType(false)\">\n <img src=\"assets/images/origin-form/new-id-card.png\" alt=\"New ID Card\" />\n </div>\n </div>\n </div>\n\n <div *ngIf=\"isLoading\" class=\"loading-spinner\">\n <mat-spinner></mat-spinner>\n </div>\n\n <div *ngIf=\"cardTypeSelected && !isLoading\" class=\"actions\">\n <!-- Step 1: Upload Front Photo -->\n <div *ngIf=\"!frontPhotoUploaded\" class=\"upload-button-container\">\n <p>{{ props['labels'].uploadFrontPrompt || 'Please upload the front photo of your ID card.' }}</p>\n <input type=\"file\" #fileInputFront (change)=\"onFileSelected($event, true)\" hidden />\n <button mat-flat-button color=\"primary\" (click)=\"fileInputFront.click()\">\n <mat-icon>cloud_upload</mat-icon>\n {{ fileNameFront ? fileNameFront : props['labels'].uploadFileButtonTranslations || 'Upload Front Photo' }}\n </button>\n <div *ngIf=\"fileError\" class=\"error-message\">\n {{ fileError }}\n </div>\n </div>\n\n <!-- Step 2: Upload Back Photo (Only for New ID Cards) -->\n <div *ngIf=\"frontPhotoUploaded && !oldIdCard && !isLoading\" class=\"upload-button-container\">\n <p>{{ props['labels'].uploadBackPrompt || 'Please upload the back photo of your ID card.' }}</p>\n <input type=\"file\" #fileInputBack (change)=\"onFileSelected($event, false)\" hidden />\n <button mat-flat-button color=\"primary\" (click)=\"fileInputBack.click()\">\n <mat-icon>cloud_upload</mat-icon>\n {{ fileNameBack ? fileNameBack : props['labels'].uploadFileButtonTranslations || 'Upload Back Photo' }}\n </button>\n <div *ngIf=\"fileError\" class=\"error-message\">\n {{ fileError }}\n </div>\n </div> \n <!-- Take Photo Button (Optional) -->\n <div *ngIf=\"props['config'].showTakePictureButton\" class=\"take-photo-container\">\n <button mat-flat-button color=\"accent\" (click)=\"takePicture()\">\n <mat-icon>camera_alt</mat-icon>\n {{ props['labels'].takePictureButtonTranslations || 'Take a photo' }}\n </button>\n <video #videoElement *ngIf=\"videoStream\" width=\"100%\" class=\"video-preview\" autoplay></video>\n\n <!-- Take Front Photo -->\n <button mat-flat-button color=\"warn\" *ngIf=\"videoStream && !frontPhotoUploaded\" (click)=\"capturePhoto(true)\">\n <mat-icon>photo_camera</mat-icon>\n {{ this.props['errorMessages']?.frontId || 'Take a photo' }}\n </button>\n\n <!-- Take Back Photo -->\n <button mat-flat-button color=\"warn\" *ngIf=\"videoStream && frontPhotoUploaded && !oldIdCard\" (click)=\"capturePhoto(false)\">\n <mat-icon>photo_camera</mat-icon>\n {{ this.props['errorMessages']?.backId || 'Take a photo' }}\n </button>\n </div>\n </div>\n <div *ngIf=\"successMessage && isScanValid\" class=\"success-message-container\">\n <mat-icon class=\"large-icon\" color=\"primary\">check_circle</mat-icon>\n </div>\n</div>", styles: [".loading-spinner{display:flex;justify-content:center;align-items:center;margin-top:20px}.success-message-container{display:flex;align-items:center;gap:8px;color:green;font-weight:700;justify-content:center}.large-icon{font-size:36px;width:36px;height:36px}.scan-id-container{max-width:600px;margin:0 auto 16px;padding:20px;background-color:#fff;border-radius:8px;box-shadow:0 4px 8px #0000001a;text-align:center}.scan-id-container .card-selection-container{margin-bottom:20px}.scan-id-container .card-options{display:flex;justify-content:space-around}.scan-id-container .card-option{border:2px solid transparent;border-radius:10px;cursor:pointer;padding:10px;text-align:center;transition:border-color .3s,background-color .3s}.scan-id-container .card-option:hover{border-color:#3f51b5}.scan-id-container .card-option img{max-width:100%;height:auto;margin-bottom:10px}.scan-id-container .card-option p{font-weight:700}.scan-id-container .card-option.selected{border-color:#3f51b5;background-color:#e3f2fd;box-shadow:0 0 10px #0000001a}.scan-id-container .title{font-size:24px;font-weight:700;color:#333;margin-bottom:10px}.scan-id-container .description{font-size:16px;color:#666;margin-bottom:20px}.scan-id-container .actions{display:flex;flex-direction:column;gap:20px}.scan-id-container .actions .upload-button-container,.scan-id-container .actions .take-photo-container{display:flex;flex-direction:column;align-items:center}.scan-id-container .actions .upload-button-container button,.scan-id-container .actions .take-photo-container button{display:flex;align-items:center;gap:8px;padding:10px 20px;font-size:16px;font-weight:600;border-radius:50px;transition:background-color .3s}.scan-id-container .actions .upload-button-container button mat-icon,.scan-id-container .actions .take-photo-container button mat-icon{font-size:20px}.scan-id-container .actions .upload-button-container button:hover,.scan-id-container .actions .take-photo-container button:hover{background-color:#0069c0}.scan-id-container .actions .upload-button-container .error-message,.scan-id-container .actions .take-photo-container .error-message{color:#e53935;font-size:14px;margin-top:10px}.scan-id-container .actions .video-preview{margin-top:20px;border-radius:8px;box-shadow:0 2px 4px #0003}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }] }); }
|
|
270
270
|
}
|
|
271
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
271
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormlyScanIdComponent, decorators: [{
|
|
272
272
|
type: Component,
|
|
273
273
|
args: [{ selector: 'app-formly-scan-id', template: "<div class=\"scan-id-container\">\n <h2 class=\"title\">{{ props[\"name\"] }}</h2>\n <p class=\"description\">{{ props[\"description\"] }}</p>\n\n <!-- Selection Step -->\n <div class=\"card-selection-container\">\n <div class=\"card-options\">\n <div class=\"card-option\"\n [class.selected]=\"oldIdCard === true && cardTypeSelected\"\n (click)=\"selectCardType(true)\">\n <img src=\"assets/images/origin-form/old-id-card.png\" alt=\"Old ID Card\" />\n </div>\n <div class=\"card-option\"\n [class.selected]=\"oldIdCard === false && cardTypeSelected\"\n (click)=\"selectCardType(false)\">\n <img src=\"assets/images/origin-form/new-id-card.png\" alt=\"New ID Card\" />\n </div>\n </div>\n </div>\n\n <div *ngIf=\"isLoading\" class=\"loading-spinner\">\n <mat-spinner></mat-spinner>\n </div>\n\n <div *ngIf=\"cardTypeSelected && !isLoading\" class=\"actions\">\n <!-- Step 1: Upload Front Photo -->\n <div *ngIf=\"!frontPhotoUploaded\" class=\"upload-button-container\">\n <p>{{ props['labels'].uploadFrontPrompt || 'Please upload the front photo of your ID card.' }}</p>\n <input type=\"file\" #fileInputFront (change)=\"onFileSelected($event, true)\" hidden />\n <button mat-flat-button color=\"primary\" (click)=\"fileInputFront.click()\">\n <mat-icon>cloud_upload</mat-icon>\n {{ fileNameFront ? fileNameFront : props['labels'].uploadFileButtonTranslations || 'Upload Front Photo' }}\n </button>\n <div *ngIf=\"fileError\" class=\"error-message\">\n {{ fileError }}\n </div>\n </div>\n\n <!-- Step 2: Upload Back Photo (Only for New ID Cards) -->\n <div *ngIf=\"frontPhotoUploaded && !oldIdCard && !isLoading\" class=\"upload-button-container\">\n <p>{{ props['labels'].uploadBackPrompt || 'Please upload the back photo of your ID card.' }}</p>\n <input type=\"file\" #fileInputBack (change)=\"onFileSelected($event, false)\" hidden />\n <button mat-flat-button color=\"primary\" (click)=\"fileInputBack.click()\">\n <mat-icon>cloud_upload</mat-icon>\n {{ fileNameBack ? fileNameBack : props['labels'].uploadFileButtonTranslations || 'Upload Back Photo' }}\n </button>\n <div *ngIf=\"fileError\" class=\"error-message\">\n {{ fileError }}\n </div>\n </div> \n <!-- Take Photo Button (Optional) -->\n <div *ngIf=\"props['config'].showTakePictureButton\" class=\"take-photo-container\">\n <button mat-flat-button color=\"accent\" (click)=\"takePicture()\">\n <mat-icon>camera_alt</mat-icon>\n {{ props['labels'].takePictureButtonTranslations || 'Take a photo' }}\n </button>\n <video #videoElement *ngIf=\"videoStream\" width=\"100%\" class=\"video-preview\" autoplay></video>\n\n <!-- Take Front Photo -->\n <button mat-flat-button color=\"warn\" *ngIf=\"videoStream && !frontPhotoUploaded\" (click)=\"capturePhoto(true)\">\n <mat-icon>photo_camera</mat-icon>\n {{ this.props['errorMessages']?.frontId || 'Take a photo' }}\n </button>\n\n <!-- Take Back Photo -->\n <button mat-flat-button color=\"warn\" *ngIf=\"videoStream && frontPhotoUploaded && !oldIdCard\" (click)=\"capturePhoto(false)\">\n <mat-icon>photo_camera</mat-icon>\n {{ this.props['errorMessages']?.backId || 'Take a photo' }}\n </button>\n </div>\n </div>\n <div *ngIf=\"successMessage && isScanValid\" class=\"success-message-container\">\n <mat-icon class=\"large-icon\" color=\"primary\">check_circle</mat-icon>\n </div>\n</div>", styles: [".loading-spinner{display:flex;justify-content:center;align-items:center;margin-top:20px}.success-message-container{display:flex;align-items:center;gap:8px;color:green;font-weight:700;justify-content:center}.large-icon{font-size:36px;width:36px;height:36px}.scan-id-container{max-width:600px;margin:0 auto 16px;padding:20px;background-color:#fff;border-radius:8px;box-shadow:0 4px 8px #0000001a;text-align:center}.scan-id-container .card-selection-container{margin-bottom:20px}.scan-id-container .card-options{display:flex;justify-content:space-around}.scan-id-container .card-option{border:2px solid transparent;border-radius:10px;cursor:pointer;padding:10px;text-align:center;transition:border-color .3s,background-color .3s}.scan-id-container .card-option:hover{border-color:#3f51b5}.scan-id-container .card-option img{max-width:100%;height:auto;margin-bottom:10px}.scan-id-container .card-option p{font-weight:700}.scan-id-container .card-option.selected{border-color:#3f51b5;background-color:#e3f2fd;box-shadow:0 0 10px #0000001a}.scan-id-container .title{font-size:24px;font-weight:700;color:#333;margin-bottom:10px}.scan-id-container .description{font-size:16px;color:#666;margin-bottom:20px}.scan-id-container .actions{display:flex;flex-direction:column;gap:20px}.scan-id-container .actions .upload-button-container,.scan-id-container .actions .take-photo-container{display:flex;flex-direction:column;align-items:center}.scan-id-container .actions .upload-button-container button,.scan-id-container .actions .take-photo-container button{display:flex;align-items:center;gap:8px;padding:10px 20px;font-size:16px;font-weight:600;border-radius:50px;transition:background-color .3s}.scan-id-container .actions .upload-button-container button mat-icon,.scan-id-container .actions .take-photo-container button mat-icon{font-size:20px}.scan-id-container .actions .upload-button-container button:hover,.scan-id-container .actions .take-photo-container button:hover{background-color:#0069c0}.scan-id-container .actions .upload-button-container .error-message,.scan-id-container .actions .take-photo-container .error-message{color:#e53935;font-size:14px;margin-top:10px}.scan-id-container .actions .video-preview{margin-top:20px;border-radius:8px;box-shadow:0 2px 4px #0003}\n"] }]
|
|
274
274
|
}], ctorParameters: () => [{ type: i1.ApplicationDataService }, { type: i0.ChangeDetectorRef }], propDecorators: { fileInputFront: [{
|
|
@@ -5,7 +5,7 @@ import { BaseFormlyStepComponent } from '../baseFormlyStepComponent';
|
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
import * as i1 from "../../origin-form-auth.service";
|
|
7
7
|
import * as i2 from "../../services/dialog.service";
|
|
8
|
-
import * as i3 from "sign-lib";
|
|
8
|
+
import * as i3 from "@qbs-origin/sign-lib";
|
|
9
9
|
export class FormlySignComponent extends BaseFormlyStepComponent {
|
|
10
10
|
constructor(authService, cdr, dialog) {
|
|
11
11
|
super(cdr);
|
|
@@ -160,14 +160,14 @@ export class FormlySignComponent extends BaseFormlyStepComponent {
|
|
|
160
160
|
this.config = null;
|
|
161
161
|
console.log('🔷 FormlySignComponent: Component cleanup completed');
|
|
162
162
|
}
|
|
163
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
164
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.
|
|
163
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormlySignComponent, deps: [{ token: i1.OriginFormAuthService }, { token: i0.ChangeDetectorRef }, { token: i2.DialogService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
164
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: FormlySignComponent, selector: "formly-sign", viewQueries: [{ propertyName: "signLib", first: true, predicate: ["signLib"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<lib-sign #signLib [config]=\"config\" (event)=\"libEvent($event)\"> </lib-sign>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "component", type: i3.SignLibComponent, selector: "lib-sign", inputs: ["config", "instanceId"], outputs: ["event"] }] }); }
|
|
165
165
|
}
|
|
166
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
166
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormlySignComponent, decorators: [{
|
|
167
167
|
type: Component,
|
|
168
168
|
args: [{ selector: 'formly-sign', template: "<lib-sign #signLib [config]=\"config\" (event)=\"libEvent($event)\"> </lib-sign>\n", styles: [":host{display:block}\n"] }]
|
|
169
169
|
}], ctorParameters: () => [{ type: i1.OriginFormAuthService }, { type: i0.ChangeDetectorRef }, { type: i2.DialogService }], propDecorators: { signLib: [{
|
|
170
170
|
type: ViewChild,
|
|
171
171
|
args: ['signLib']
|
|
172
172
|
}] } });
|
|
173
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LXNpZ24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb3JpZ2luLWZvcm0vc3JjL2xpYi9mb3JtbHkvZm9ybWx5LXNpZ24vZm9ybWx5LXNpZ24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb3JpZ2luLWZvcm0vc3JjL2xpYi9mb3JtbHkvZm9ybWx5LXNpZ24vZm9ybWx5LXNpZ24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxTQUFTLEVBQ1QsTUFBTSxHQUdQLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUc1RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDcEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7O0FBT3JFLE1BQU0sT0FBTyxtQkFDWCxTQUFRLHVCQUF1QjtJQVEvQixZQUNTLFdBQWtDLEVBQ3pDLEdBQXNCLEVBQ2QsTUFBcUI7UUFFN0IsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBSkosZ0JBQVcsR0FBWCxXQUFXLENBQXVCO1FBRWpDLFdBQU0sR0FBTixNQUFNLENBQWU7UUFQL0IsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUNwQixxQkFBZ0IsR0FBOEIsRUFBRSxDQUFDO1FBRXpELGtCQUFhLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBT3RDLENBQUM7SUFFUSxNQUFNLEtBQUksQ0FBQztJQUVYLEtBQUssQ0FBQyxtQkFBbUI7UUFDaEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUMvRCxJQUFJLFFBQVEsRUFBRSxDQUFDO1lB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O1FBRW5CLE9BQU8sQ0FBQyxHQUFHLENBQUMscURBQXFELENBQUMsQ0FBQztJQUNyRSxDQUFDOytHQTFNVSxtQkFBbUI7bUdBQW5CLG1CQUFtQiw4S0NwQmhDLG9GQUNBOzs0RkRtQmEsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGFBQWE7c0pBUUQsT0FBTztzQkFBNUIsU0FBUzt1QkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBWaWV3Q2hpbGQsXG4gIGluamVjdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIE9uRGVzdHJveSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTaWduTGliQ29tcG9uZW50IH0gZnJvbSAnc2lnbi1saWInO1xuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9vdGhlcnMvY29uZmlnLXNlcnZpY2UnO1xuaW1wb3J0IHsgT3JpZ2luRm9ybUF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vb3JpZ2luLWZvcm0tYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kaWFsb2cuc2VydmljZSc7XG5pbXBvcnQgeyBGbHV4VHlwZSB9IGZyb20gJy4uLy4uL21vZGVscy9mb3Jtcy5tb2RlbCc7XG5pbXBvcnQgeyBCYXNlRm9ybWx5U3RlcENvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2VGb3JtbHlTdGVwQ29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZm9ybWx5LXNpZ24nLFxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybWx5LXNpZ24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZm9ybWx5LXNpZ24uY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtbHlTaWduQ29tcG9uZW50XG4gIGV4dGVuZHMgQmFzZUZvcm1seVN0ZXBDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkRlc3Ryb3lcbntcbiAgQFZpZXdDaGlsZCgnc2lnbkxpYicpIHNpZ25MaWI6IFNpZ25MaWJDb21wb25lbnQ7XG4gIGNhblByb2NlZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfc2lnbkJ1dHRvblN0eWxlOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG4gIHB1YmxpYyBjb25maWc6IGFueTtcbiAgY29uZmlnU2VydmljZSA9IGluamVjdChDb25maWdTZXJ2aWNlKTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGF1dGhTZXJ2aWNlOiBPcmlnaW5Gb3JtQXV0aFNlcnZpY2UsXG4gICAgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGRpYWxvZzogRGlhbG9nU2VydmljZVxuICApIHtcbiAgICBzdXBlcihjZHIpO1xuICB9XG5cbiAgb3ZlcnJpZGUgb25Jbml0KCkge31cblxuICBvdmVycmlkZSBhc3luYyBvblBhZ2VTZWxlY3RlZEFzeW5jKCkge1xuICAgIGNvbnN0IHN0eWxlT2JqID0gdGhpcy5wcm9wcz8uWydkZXNpZ24nXT8uWycuYnV0dG9uLW90cGFjdGlvbiddO1xuICAgIGlmIChzdHlsZU9iaikge1xuICAgICAgY29uc3QgY2FtZWxDYXNlU3R5bGU6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcbiAgICAgIE9iamVjdC5rZXlzKHN0eWxlT2JqKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgY29uc3QgY2FtZWxLZXkgPSBrZXkucmVwbGFjZSgvLShbYS16XSkvZywgKGcpID0+IGdbMV0udG9VcHBlckNhc2UoKSk7XG4gICAgICAgIGNhbWVsQ2FzZVN0eWxlW2NhbWVsS2V5XSA9IHN0eWxlT2JqW2tleV07XG4gICAgICB9KTtcbiAgICAgIHRoaXMuX3NpZ25CdXR0b25TdHlsZSA9IGNhbWVsQ2FzZVN0eWxlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9zaWduQnV0dG9uU3R5bGUgPSB7fTtcbiAgICB9XG4gICAgLy8gUmVzZXQgY29tcG9uZW50IHN0YXRlIHdoZW4gcGFnZSBpcyBzZWxlY3RlZFxuICAgIHRoaXMuY2FuUHJvY2VlZCA9IGZhbHNlO1xuXG4gICAgdGhpcy5jb25maWcgPSBhd2FpdCB0aGlzLmdldENvbmZpZygpO1xuICAgIHRoaXMuYWRkUGhvbmVOdW1iZXJ0b0NvbmZpZygpO1xuXG4gICAgdGhpcy5jb25maWcgPSB7XG4gICAgICAuLi50aGlzLmNvbmZpZyxcbiAgICAgIFNob3dDb25maXJtOiB0aGlzLnN0ZXBEYXRhLmNvbmZpZy5zaG93Q29uZmlybSA/PyBmYWxzZSxcbiAgICAgIFNpZ25Nb2RlOiB0aGlzLnN0ZXBEYXRhLmNvbmZpZy5jb21wYW55U2lnbiA/PyBmYWxzZSA/ICdib3RoJyA6ICdjbGllbnQnLFxuICAgICAgLi4uKE9iamVjdC5rZXlzKHRoaXMuc2lnbkJ1dHRvblN0eWxlKS5sZW5ndGggPiAwXG4gICAgICAgID8ge1xuICAgICAgICAgICAgU3R5bGVzOiB7XG4gICAgICAgICAgICAgIC4uLih0aGlzLmNvbmZpZy5TdHlsZXMgfHwge30pLFxuICAgICAgICAgICAgICBidXR0b25TdHlsZXM6IHRoaXMuc2lnbkJ1dHRvblN0eWxlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9XG4gICAgICAgIDoge30pLFxuICAgIH07XG5cbiAgICBpZiAodGhpcy5jb25maWcuU3R5bGVzPy5idXR0b25TdHlsZXMpIHtcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBg8J+nqyBGb3JtbHlTaWduQ29tcG9uZW50OiBTdHlsZXMgZm9yIHNpZ24gYnV0dG9uIGFyZSBzZW50OmAsXG4gICAgICAgIHRoaXMuY29uZmlnLlN0eWxlcy5idXR0b25TdHlsZXNcbiAgICAgICk7XG4gICAgICBjb25zb2xlLmxvZygnY29uZmlnJywgdGhpcy5jb25maWcpO1xuICAgIH1cblxuICAgIGNvbnNvbGUubG9nKFxuICAgICAgYPCflLcgRm9ybWx5U2lnbkNvbXBvbmVudDogSW5pdGlhbGl6aW5nIHNpZ24gY29tcG9uZW50IGZvciBzdGVwICR7dGhpcy5zdGVwRGF0YS5pZGVudGlmaWVyfWBcbiAgICApO1xuXG4gICAgLy92ZXJ5IGltcG9ydGFudCB0byB0cmlnZ2VyIGlucHV0IHBhcmFtZXRlciBwYXNzIHRvIFNpZ25MaWIgY29tcG9uZW50XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgLy8gV2FpdCBhIGJpdCBmb3IgVmlld0NoaWxkIHRvIGJlIGF2YWlsYWJsZSBhbmQgdGhlbiBpbml0aWFsaXplXG4gICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgNTApKTtcblxuICAgIC8vIEVuc3VyZSBTaWduTGliQ29tcG9uZW50IGlzIHByb3Blcmx5IGluaXRpYWxpemVkXG4gICAgaWYgKHRoaXMuc2lnbkxpYikge1xuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGDwn5S3IEZvcm1seVNpZ25Db21wb25lbnQ6IFNpZ25MaWJDb21wb25lbnQgZm91bmQsIGNhbGxpbmcgbmdPbkluaXQgZm9yIHN0ZXAgJHt0aGlzLnN0ZXBEYXRhLmlkZW50aWZpZXJ9YFxuICAgICAgKTtcbiAgICAgIGF3YWl0IHRoaXMuc2lnbkxpYi5uZ09uSW5pdCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGDwn5S3IEZvcm1seVNpZ25Db21wb25lbnQ6IFNpZ25MaWJDb21wb25lbnQgbm90IGZvdW5kIGZvciBzdGVwICR7dGhpcy5zdGVwRGF0YS5pZGVudGlmaWVyfWBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcmV0cnlBc3luYygpIHtcbiAgICBhd2FpdCB0aGlzLm9uUGFnZVNlbGVjdGVkQXN5bmMoKTtcbiAgfVxuXG4gIGFzeW5jIGdldENvbmZpZygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgQXBwRGF0YUlkOiB0aGlzLnByb3BzWydhcHBEYXRhSWQnXSxcbiAgICAgIFN0ZXBJZDogdGhpcy5zdGVwRGF0YS5pZGVudGlmaWVyLFxuICAgICAgVG9rZW46IHRoaXMuYXV0aFNlcnZpY2UuZ2V0VG9rZW4oKSxcbiAgICAgIEJhc2VVcmw6IHRoaXMuY29uZmlnU2VydmljZS5yZWFkQ29uZmlnKCkuYmFzZVVybEdhdGV3YXksXG4gICAgICBBdXRvU2lnbjogdGhpcy5zdGVwRGF0YS5pc1Zpc2libGUgPT09IGZhbHNlLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFkZFBob25lTnVtYmVydG9Db25maWcoKTogdm9pZCB7XG4gICAgY29uc3QgcGhvbmVLZXkgPSB0aGlzLnN0ZXBEYXRhLmNvbmZpZy5jb21wb25lbnRDb2xsZWN0ZWQ7XG5cbiAgICBpZiAocGhvbmVLZXkpIHtcbiAgICAgIGxldCBwaG9uZU51bWJlciA9IG51bGw7XG5cbiAgICAgIC8vIEdldCByZWZlcmVuY2VzIHRvIHBhcmVudCBmb3JtIGFuZCBtb2RlbCBmcm9tIHByb3BzXG4gICAgICBjb25zdCBwYXJlbnRGb3JtID0gdGhpcy5wcm9wc1sncGFyZW50Rm9ybSddO1xuICAgICAgY29uc3QgbW9kZWwgPSB0aGlzLnByb3BzWydnZXRNb2RlbCddKCk7XG4gICAgICBjb25zdCBmbHV4ID0gdGhpcy5wcm9wc1snZmx1eCddO1xuXG4gICAgICAvLyBGaXJzdCB0cnkgdG8gZ2V0IGZyb20gcGFyZW50IGZvcm0gY29udHJvbCAoZm9yIHZhbGlkYXRlZCBwaG9uZSBudW1iZXJzKVxuICAgICAgY29uc3QgZm9ybUNvbnRyb2wgPSBwYXJlbnRGb3JtPy5nZXQocGhvbmVLZXkpO1xuICAgICAgcGhvbmVOdW1iZXIgPSBmb3JtQ29udHJvbD8udmFsdWU7XG5cbiAgICAgIC8vIElmIG5vdCBmb3VuZCBpbiBmb3JtIGNvbnRyb2wsIHRyeSBmcm9tIG1vZGVsXG4gICAgICBpZiAoIXBob25lTnVtYmVyICYmIG1vZGVsICYmIG1vZGVsW3Bob25lS2V5XSkge1xuICAgICAgICBwaG9uZU51bWJlciA9IG1vZGVsW3Bob25lS2V5XTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFwaG9uZU51bWJlciAmJiBwaG9uZUtleSA9PT0gJ3ZhbGlkYXRlZC1waG9uZScgJiYgZmx1eCkge1xuICAgICAgICBjb25zdCBwaG9uZVN0ZXAgPSBmbHV4LmZpbmQoXG4gICAgICAgICAgKHN0ZXA6IGFueSkgPT4gc3RlcC50eXBlID09PSBGbHV4VHlwZS5QaG9uZVxuICAgICAgICApO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgcGhvbmVTdGVwICYmXG4gICAgICAgICAgcGhvbmVTdGVwLmNvbmZpZyAmJlxuICAgICAgICAgIHBob25lU3RlcC5jb25maWcuY29tcG9uZW50Q29sbGVjdGVkXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IG9yaWdpbmFsUGhvbmVLZXkgPSBwaG9uZVN0ZXAuY29uZmlnLmNvbXBvbmVudENvbGxlY3RlZDtcbiAgICAgICAgICAvLyBUcnkgZnJvbSBwYXJlbnQgZm9ybSBmaXJzdCwgdGhlbiBtb2RlbFxuICAgICAgICAgIHBob25lTnVtYmVyID1cbiAgICAgICAgICAgIHBhcmVudEZvcm0/LmdldChvcmlnaW5hbFBob25lS2V5KT8udmFsdWUgfHxcbiAgICAgICAgICAgIChtb2RlbCAmJiBtb2RlbFtvcmlnaW5hbFBob25lS2V5XSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHBob25lTnVtYmVyKSB7XG4gICAgICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgICAgIC4uLnRoaXMuY29uZmlnLFxuICAgICAgICAgIFBob25lTnVtYmVyOiBwaG9uZU51bWJlcixcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAn8J+UtyBGb3JtbHlTaWduQ29tcG9uZW50OiBObyBwaG9uZSBudW1iZXIgZm91bmQgZm9yIGtleTonLFxuICAgICAgICAgIHBob25lS2V5XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgJ/CflLcgRm9ybWx5U2lnbkNvbXBvbmVudDogTm8gY29tcG9uZW50Q29sbGVjdGVkIGtleSBmb3VuZCBpbiBzdGVwIGNvbmZpZydcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgb3ZlcnJpZGUgY2FuQWR2YW5jZSgpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuY2FuUHJvY2VlZCkge1xuICAgICAgdGhpcy5kaWFsb2cucG9wRXJyb3IoJ3NpZ25Db21wb25lbnQudmlld2ZpbGVzLndhaXRGb3JTaWduJyk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgbGliRXZlbnQoZXZlbnQ6IGFueSkge1xuICAgIGlmIChldmVudCAmJiBldmVudC50b0xvd2VyQ2FzZSgpID09PSAnc3VjY2VzcycpIHtcbiAgICAgIHRoaXMuY2FuUHJvY2VlZCA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMub25FdmVudChldmVudCk7XG4gIH1cblxuICBnZXQgc2lnbkJ1dHRvblN0eWxlKCk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIHJldHVybiB0aGlzLl9zaWduQnV0dG9uU3R5bGU7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgICfwn5S3IEZvcm1seVNpZ25Db21wb25lbnQ6IERlc3Ryb3lpbmcgY29tcG9uZW50IGFuZCBjbGVhbmluZyB1cCBTaWduTGliQ29tcG9uZW50J1xuICAgICk7XG5cbiAgICAvLyBDbGVhbnVwIFNpZ25MaWJDb21wb25lbnQgaWYgaXQgZXhpc3RzXG4gICAgaWYgKHRoaXMuc2lnbkxpYikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gQ2FsbCBkZXN0cm95IG1ldGhvZCBpZiBpdCBleGlzdHMgKGNoZWNrIGZvciB2YXJpb3VzIHBvc3NpYmxlIGNsZWFudXAgbWV0aG9kcylcbiAgICAgICAgaWYgKHR5cGVvZiAodGhpcy5zaWduTGliIGFzIGFueSkubmdPbkRlc3Ryb3kgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAodGhpcy5zaWduTGliIGFzIGFueSkubmdPbkRlc3Ryb3koKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgKHRoaXMuc2lnbkxpYiBhcyBhbnkpLmRlc3Ryb3kgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAodGhpcy5zaWduTGliIGFzIGFueSkuZGVzdHJveSgpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiAodGhpcy5zaWduTGliIGFzIGFueSkuY2xlYW51cCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICh0aGlzLnNpZ25MaWIgYXMgYW55KS5jbGVhbnVwKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDbGVhciBhbnkgcmVmZXJlbmNlc1xuICAgICAgICAodGhpcy5zaWduTGliIGFzIGFueSkgPSBudWxsO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICfwn5S3IEZvcm1seVNpZ25Db21wb25lbnQ6IEVycm9yIGR1cmluZyBTaWduTGliQ29tcG9uZW50IGNsZWFudXA6JyxcbiAgICAgICAgICBlcnJvclxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlc2V0IGNvbXBvbmVudCBzdGF0ZVxuICAgIHRoaXMuY2FuUHJvY2VlZCA9IGZhbHNlO1xuICAgIHRoaXMuY29uZmlnID0gbnVsbDtcblxuICAgIGNvbnNvbGUubG9nKCfwn5S3IEZvcm1seVNpZ25Db21wb25lbnQ6IENvbXBvbmVudCBjbGVhbnVwIGNvbXBsZXRlZCcpO1xuICB9XG59XG4iLCI8bGliLXNpZ24gI3NpZ25MaWIgW2NvbmZpZ109XCJjb25maWdcIiAoZXZlbnQpPVwibGliRXZlbnQoJGV2ZW50KVwiPiA8L2xpYi1zaWduPlxuIl19
|
|
173
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LXNpZ24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb3JpZ2luLWZvcm0vc3JjL2xpYi9mb3JtbHkvZm9ybWx5LXNpZ24vZm9ybWx5LXNpZ24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb3JpZ2luLWZvcm0vc3JjL2xpYi9mb3JtbHkvZm9ybWx5LXNpZ24vZm9ybWx5LXNpZ24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxTQUFTLEVBQ1QsTUFBTSxHQUdQLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUc1RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDcEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7O0FBT3JFLE1BQU0sT0FBTyxtQkFDWCxTQUFRLHVCQUF1QjtJQVEvQixZQUNTLFdBQWtDLEVBQ3pDLEdBQXNCLEVBQ2QsTUFBcUI7UUFFN0IsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBSkosZ0JBQVcsR0FBWCxXQUFXLENBQXVCO1FBRWpDLFdBQU0sR0FBTixNQUFNLENBQWU7UUFQL0IsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUNwQixxQkFBZ0IsR0FBOEIsRUFBRSxDQUFDO1FBRXpELGtCQUFhLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBT3RDLENBQUM7SUFFUSxNQUFNLEtBQUksQ0FBQztJQUVYLEtBQUssQ0FBQyxtQkFBbUI7UUFDaEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUMvRCxJQUFJLFFBQVEsRUFBRSxDQUFDO1lB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O1FBRW5CLE9BQU8sQ0FBQyxHQUFHLENBQUMscURBQXFELENBQUMsQ0FBQztJQUNyRSxDQUFDOytHQTFNVSxtQkFBbUI7bUdBQW5CLG1CQUFtQiw4S0NwQmhDLG9GQUNBOzs0RkRtQmEsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGFBQWE7c0pBUUQsT0FBTztzQkFBNUIsU0FBUzt1QkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBWaWV3Q2hpbGQsXG4gIGluamVjdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIE9uRGVzdHJveSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTaWduTGliQ29tcG9uZW50IH0gZnJvbSAnQHFicy1vcmlnaW4vc2lnbi1saWInO1xuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9vdGhlcnMvY29uZmlnLXNlcnZpY2UnO1xuaW1wb3J0IHsgT3JpZ2luRm9ybUF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vb3JpZ2luLWZvcm0tYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kaWFsb2cuc2VydmljZSc7XG5pbXBvcnQgeyBGbHV4VHlwZSB9IGZyb20gJy4uLy4uL21vZGVscy9mb3Jtcy5tb2RlbCc7XG5pbXBvcnQgeyBCYXNlRm9ybWx5U3RlcENvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2VGb3JtbHlTdGVwQ29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZm9ybWx5LXNpZ24nLFxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybWx5LXNpZ24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZm9ybWx5LXNpZ24uY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtbHlTaWduQ29tcG9uZW50XG4gIGV4dGVuZHMgQmFzZUZvcm1seVN0ZXBDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkRlc3Ryb3lcbntcbiAgQFZpZXdDaGlsZCgnc2lnbkxpYicpIHNpZ25MaWI6IFNpZ25MaWJDb21wb25lbnQ7XG4gIGNhblByb2NlZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfc2lnbkJ1dHRvblN0eWxlOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG4gIHB1YmxpYyBjb25maWc6IGFueTtcbiAgY29uZmlnU2VydmljZSA9IGluamVjdChDb25maWdTZXJ2aWNlKTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGF1dGhTZXJ2aWNlOiBPcmlnaW5Gb3JtQXV0aFNlcnZpY2UsXG4gICAgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGRpYWxvZzogRGlhbG9nU2VydmljZVxuICApIHtcbiAgICBzdXBlcihjZHIpO1xuICB9XG5cbiAgb3ZlcnJpZGUgb25Jbml0KCkge31cblxuICBvdmVycmlkZSBhc3luYyBvblBhZ2VTZWxlY3RlZEFzeW5jKCkge1xuICAgIGNvbnN0IHN0eWxlT2JqID0gdGhpcy5wcm9wcz8uWydkZXNpZ24nXT8uWycuYnV0dG9uLW90cGFjdGlvbiddO1xuICAgIGlmIChzdHlsZU9iaikge1xuICAgICAgY29uc3QgY2FtZWxDYXNlU3R5bGU6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcbiAgICAgIE9iamVjdC5rZXlzKHN0eWxlT2JqKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgY29uc3QgY2FtZWxLZXkgPSBrZXkucmVwbGFjZSgvLShbYS16XSkvZywgKGcpID0+IGdbMV0udG9VcHBlckNhc2UoKSk7XG4gICAgICAgIGNhbWVsQ2FzZVN0eWxlW2NhbWVsS2V5XSA9IHN0eWxlT2JqW2tleV07XG4gICAgICB9KTtcbiAgICAgIHRoaXMuX3NpZ25CdXR0b25TdHlsZSA9IGNhbWVsQ2FzZVN0eWxlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9zaWduQnV0dG9uU3R5bGUgPSB7fTtcbiAgICB9XG4gICAgLy8gUmVzZXQgY29tcG9uZW50IHN0YXRlIHdoZW4gcGFnZSBpcyBzZWxlY3RlZFxuICAgIHRoaXMuY2FuUHJvY2VlZCA9IGZhbHNlO1xuXG4gICAgdGhpcy5jb25maWcgPSBhd2FpdCB0aGlzLmdldENvbmZpZygpO1xuICAgIHRoaXMuYWRkUGhvbmVOdW1iZXJ0b0NvbmZpZygpO1xuXG4gICAgdGhpcy5jb25maWcgPSB7XG4gICAgICAuLi50aGlzLmNvbmZpZyxcbiAgICAgIFNob3dDb25maXJtOiB0aGlzLnN0ZXBEYXRhLmNvbmZpZy5zaG93Q29uZmlybSA/PyBmYWxzZSxcbiAgICAgIFNpZ25Nb2RlOiB0aGlzLnN0ZXBEYXRhLmNvbmZpZy5jb21wYW55U2lnbiA/PyBmYWxzZSA/ICdib3RoJyA6ICdjbGllbnQnLFxuICAgICAgLi4uKE9iamVjdC5rZXlzKHRoaXMuc2lnbkJ1dHRvblN0eWxlKS5sZW5ndGggPiAwXG4gICAgICAgID8ge1xuICAgICAgICAgICAgU3R5bGVzOiB7XG4gICAgICAgICAgICAgIC4uLih0aGlzLmNvbmZpZy5TdHlsZXMgfHwge30pLFxuICAgICAgICAgICAgICBidXR0b25TdHlsZXM6IHRoaXMuc2lnbkJ1dHRvblN0eWxlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9XG4gICAgICAgIDoge30pLFxuICAgIH07XG5cbiAgICBpZiAodGhpcy5jb25maWcuU3R5bGVzPy5idXR0b25TdHlsZXMpIHtcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBg8J+nqyBGb3JtbHlTaWduQ29tcG9uZW50OiBTdHlsZXMgZm9yIHNpZ24gYnV0dG9uIGFyZSBzZW50OmAsXG4gICAgICAgIHRoaXMuY29uZmlnLlN0eWxlcy5idXR0b25TdHlsZXNcbiAgICAgICk7XG4gICAgICBjb25zb2xlLmxvZygnY29uZmlnJywgdGhpcy5jb25maWcpO1xuICAgIH1cblxuICAgIGNvbnNvbGUubG9nKFxuICAgICAgYPCflLcgRm9ybWx5U2lnbkNvbXBvbmVudDogSW5pdGlhbGl6aW5nIHNpZ24gY29tcG9uZW50IGZvciBzdGVwICR7dGhpcy5zdGVwRGF0YS5pZGVudGlmaWVyfWBcbiAgICApO1xuXG4gICAgLy92ZXJ5IGltcG9ydGFudCB0byB0cmlnZ2VyIGlucHV0IHBhcmFtZXRlciBwYXNzIHRvIFNpZ25MaWIgY29tcG9uZW50XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgLy8gV2FpdCBhIGJpdCBmb3IgVmlld0NoaWxkIHRvIGJlIGF2YWlsYWJsZSBhbmQgdGhlbiBpbml0aWFsaXplXG4gICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgNTApKTtcblxuICAgIC8vIEVuc3VyZSBTaWduTGliQ29tcG9uZW50IGlzIHByb3Blcmx5IGluaXRpYWxpemVkXG4gICAgaWYgKHRoaXMuc2lnbkxpYikge1xuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGDwn5S3IEZvcm1seVNpZ25Db21wb25lbnQ6IFNpZ25MaWJDb21wb25lbnQgZm91bmQsIGNhbGxpbmcgbmdPbkluaXQgZm9yIHN0ZXAgJHt0aGlzLnN0ZXBEYXRhLmlkZW50aWZpZXJ9YFxuICAgICAgKTtcbiAgICAgIGF3YWl0IHRoaXMuc2lnbkxpYi5uZ09uSW5pdCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGDwn5S3IEZvcm1seVNpZ25Db21wb25lbnQ6IFNpZ25MaWJDb21wb25lbnQgbm90IGZvdW5kIGZvciBzdGVwICR7dGhpcy5zdGVwRGF0YS5pZGVudGlmaWVyfWBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcmV0cnlBc3luYygpIHtcbiAgICBhd2FpdCB0aGlzLm9uUGFnZVNlbGVjdGVkQXN5bmMoKTtcbiAgfVxuXG4gIGFzeW5jIGdldENvbmZpZygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgQXBwRGF0YUlkOiB0aGlzLnByb3BzWydhcHBEYXRhSWQnXSxcbiAgICAgIFN0ZXBJZDogdGhpcy5zdGVwRGF0YS5pZGVudGlmaWVyLFxuICAgICAgVG9rZW46IHRoaXMuYXV0aFNlcnZpY2UuZ2V0VG9rZW4oKSxcbiAgICAgIEJhc2VVcmw6IHRoaXMuY29uZmlnU2VydmljZS5yZWFkQ29uZmlnKCkuYmFzZVVybEdhdGV3YXksXG4gICAgICBBdXRvU2lnbjogdGhpcy5zdGVwRGF0YS5pc1Zpc2libGUgPT09IGZhbHNlLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFkZFBob25lTnVtYmVydG9Db25maWcoKTogdm9pZCB7XG4gICAgY29uc3QgcGhvbmVLZXkgPSB0aGlzLnN0ZXBEYXRhLmNvbmZpZy5jb21wb25lbnRDb2xsZWN0ZWQ7XG5cbiAgICBpZiAocGhvbmVLZXkpIHtcbiAgICAgIGxldCBwaG9uZU51bWJlciA9IG51bGw7XG5cbiAgICAgIC8vIEdldCByZWZlcmVuY2VzIHRvIHBhcmVudCBmb3JtIGFuZCBtb2RlbCBmcm9tIHByb3BzXG4gICAgICBjb25zdCBwYXJlbnRGb3JtID0gdGhpcy5wcm9wc1sncGFyZW50Rm9ybSddO1xuICAgICAgY29uc3QgbW9kZWwgPSB0aGlzLnByb3BzWydnZXRNb2RlbCddKCk7XG4gICAgICBjb25zdCBmbHV4ID0gdGhpcy5wcm9wc1snZmx1eCddO1xuXG4gICAgICAvLyBGaXJzdCB0cnkgdG8gZ2V0IGZyb20gcGFyZW50IGZvcm0gY29udHJvbCAoZm9yIHZhbGlkYXRlZCBwaG9uZSBudW1iZXJzKVxuICAgICAgY29uc3QgZm9ybUNvbnRyb2wgPSBwYXJlbnRGb3JtPy5nZXQocGhvbmVLZXkpO1xuICAgICAgcGhvbmVOdW1iZXIgPSBmb3JtQ29udHJvbD8udmFsdWU7XG5cbiAgICAgIC8vIElmIG5vdCBmb3VuZCBpbiBmb3JtIGNvbnRyb2wsIHRyeSBmcm9tIG1vZGVsXG4gICAgICBpZiAoIXBob25lTnVtYmVyICYmIG1vZGVsICYmIG1vZGVsW3Bob25lS2V5XSkge1xuICAgICAgICBwaG9uZU51bWJlciA9IG1vZGVsW3Bob25lS2V5XTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFwaG9uZU51bWJlciAmJiBwaG9uZUtleSA9PT0gJ3ZhbGlkYXRlZC1waG9uZScgJiYgZmx1eCkge1xuICAgICAgICBjb25zdCBwaG9uZVN0ZXAgPSBmbHV4LmZpbmQoXG4gICAgICAgICAgKHN0ZXA6IGFueSkgPT4gc3RlcC50eXBlID09PSBGbHV4VHlwZS5QaG9uZVxuICAgICAgICApO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgcGhvbmVTdGVwICYmXG4gICAgICAgICAgcGhvbmVTdGVwLmNvbmZpZyAmJlxuICAgICAgICAgIHBob25lU3RlcC5jb25maWcuY29tcG9uZW50Q29sbGVjdGVkXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IG9yaWdpbmFsUGhvbmVLZXkgPSBwaG9uZVN0ZXAuY29uZmlnLmNvbXBvbmVudENvbGxlY3RlZDtcbiAgICAgICAgICAvLyBUcnkgZnJvbSBwYXJlbnQgZm9ybSBmaXJzdCwgdGhlbiBtb2RlbFxuICAgICAgICAgIHBob25lTnVtYmVyID1cbiAgICAgICAgICAgIHBhcmVudEZvcm0/LmdldChvcmlnaW5hbFBob25lS2V5KT8udmFsdWUgfHxcbiAgICAgICAgICAgIChtb2RlbCAmJiBtb2RlbFtvcmlnaW5hbFBob25lS2V5XSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHBob25lTnVtYmVyKSB7XG4gICAgICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgICAgIC4uLnRoaXMuY29uZmlnLFxuICAgICAgICAgIFBob25lTnVtYmVyOiBwaG9uZU51bWJlcixcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAn8J+UtyBGb3JtbHlTaWduQ29tcG9uZW50OiBObyBwaG9uZSBudW1iZXIgZm91bmQgZm9yIGtleTonLFxuICAgICAgICAgIHBob25lS2V5XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgJ/CflLcgRm9ybWx5U2lnbkNvbXBvbmVudDogTm8gY29tcG9uZW50Q29sbGVjdGVkIGtleSBmb3VuZCBpbiBzdGVwIGNvbmZpZydcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgb3ZlcnJpZGUgY2FuQWR2YW5jZSgpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuY2FuUHJvY2VlZCkge1xuICAgICAgdGhpcy5kaWFsb2cucG9wRXJyb3IoJ3NpZ25Db21wb25lbnQudmlld2ZpbGVzLndhaXRGb3JTaWduJyk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgbGliRXZlbnQoZXZlbnQ6IGFueSkge1xuICAgIGlmIChldmVudCAmJiBldmVudC50b0xvd2VyQ2FzZSgpID09PSAnc3VjY2VzcycpIHtcbiAgICAgIHRoaXMuY2FuUHJvY2VlZCA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMub25FdmVudChldmVudCk7XG4gIH1cblxuICBnZXQgc2lnbkJ1dHRvblN0eWxlKCk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIHJldHVybiB0aGlzLl9zaWduQnV0dG9uU3R5bGU7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgICfwn5S3IEZvcm1seVNpZ25Db21wb25lbnQ6IERlc3Ryb3lpbmcgY29tcG9uZW50IGFuZCBjbGVhbmluZyB1cCBTaWduTGliQ29tcG9uZW50J1xuICAgICk7XG5cbiAgICAvLyBDbGVhbnVwIFNpZ25MaWJDb21wb25lbnQgaWYgaXQgZXhpc3RzXG4gICAgaWYgKHRoaXMuc2lnbkxpYikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gQ2FsbCBkZXN0cm95IG1ldGhvZCBpZiBpdCBleGlzdHMgKGNoZWNrIGZvciB2YXJpb3VzIHBvc3NpYmxlIGNsZWFudXAgbWV0aG9kcylcbiAgICAgICAgaWYgKHR5cGVvZiAodGhpcy5zaWduTGliIGFzIGFueSkubmdPbkRlc3Ryb3kgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAodGhpcy5zaWduTGliIGFzIGFueSkubmdPbkRlc3Ryb3koKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgKHRoaXMuc2lnbkxpYiBhcyBhbnkpLmRlc3Ryb3kgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAodGhpcy5zaWduTGliIGFzIGFueSkuZGVzdHJveSgpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiAodGhpcy5zaWduTGliIGFzIGFueSkuY2xlYW51cCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICh0aGlzLnNpZ25MaWIgYXMgYW55KS5jbGVhbnVwKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDbGVhciBhbnkgcmVmZXJlbmNlc1xuICAgICAgICAodGhpcy5zaWduTGliIGFzIGFueSkgPSBudWxsO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICfwn5S3IEZvcm1seVNpZ25Db21wb25lbnQ6IEVycm9yIGR1cmluZyBTaWduTGliQ29tcG9uZW50IGNsZWFudXA6JyxcbiAgICAgICAgICBlcnJvclxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlc2V0IGNvbXBvbmVudCBzdGF0ZVxuICAgIHRoaXMuY2FuUHJvY2VlZCA9IGZhbHNlO1xuICAgIHRoaXMuY29uZmlnID0gbnVsbDtcblxuICAgIGNvbnNvbGUubG9nKCfwn5S3IEZvcm1seVNpZ25Db21wb25lbnQ6IENvbXBvbmVudCBjbGVhbnVwIGNvbXBsZXRlZCcpO1xuICB9XG59XG4iLCI8bGliLXNpZ24gI3NpZ25MaWIgW2NvbmZpZ109XCJjb25maWdcIiAoZXZlbnQpPVwibGliRXZlbnQoJGV2ZW50KVwiPiA8L2xpYi1zaWduPlxuIl19
|
|
@@ -188,10 +188,10 @@ export class FormlyUploadDocumentsComponent extends BaseFormlyControlComponent {
|
|
|
188
188
|
uploadPayload.documents = [];
|
|
189
189
|
return uploadPayload;
|
|
190
190
|
}
|
|
191
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
192
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.
|
|
191
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormlyUploadDocumentsComponent, deps: [{ token: i1.DialogService }, { token: i2.ApplicationDataService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
192
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: FormlyUploadDocumentsComponent, selector: "app-formly-upload-documents", usesInheritance: true, ngImport: i0, template: "<p *ngIf=\"title\">\n {{ title }}\n</p>\n\n<table>\n <thead class=\"table-head\">\n <tr>\n <th>\n {{ \"document\" | translate }}\n </th>\n <th>\n {{ \"format\" | translate }}\n </th>\n <th>\n {{ \"flux.components.uploadDocument.maxSize\" | translate }}\n </th>\n <th>\n {{ \"stepControl.mandatory\" | translate }}\n </th>\n </tr>\n </thead>\n <tbody class=\"table-detail\">\n <tr *ngFor=\"let doc of documents; let i = index\">\n <td>\n {{ doc.documentName }}\n </td>\n <td>\n {{ doc.documentExtensions }}\n </td>\n <td>\n {{ doc.documentMaxSize }}\n </td>\n <td>\n {{ (doc.isMandatory ? \"yes\" : \"no\") | translate }}\n </td>\n <td>\n <div>\n <input\n type=\"file\"\n #fileInput\n (change)=\"selectFile($event, doc)\"\n hidden\n />\n <button\n mat-flat-button\n color=\"primary\"\n (click)=\"fileInput.click()\"\n [disabled]=\"this.isDisabled\"\n >\n <mat-icon>cloud_upload</mat-icon>\n {{\n doc.fileName\n ? doc.fileName\n : (\"common.actions.upload\" | translate)\n }}\n </button>\n </div>\n </td>\n <td *ngIf=\"doc.fileName\">\n <i-tabler\n *ngIf=\"\n doc.isUploading === false &&\n doc.isUploadSuccess === true &&\n doc.fileName\n \"\n class=\"icon-25 text-white bg-primary rounded\"\n name=\"check\"\n ></i-tabler>\n <mat-spinner\n *ngIf=\"doc.isUploading === true\"\n class=\"m-x-auto upload-spinner\"\n ></mat-spinner>\n </td>\n </tr>\n </tbody>\n</table>\n", styles: [".upload-spinner{width:30px!important}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] }); }
|
|
193
193
|
}
|
|
194
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
194
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormlyUploadDocumentsComponent, decorators: [{
|
|
195
195
|
type: Component,
|
|
196
196
|
args: [{ selector: 'app-formly-upload-documents', template: "<p *ngIf=\"title\">\n {{ title }}\n</p>\n\n<table>\n <thead class=\"table-head\">\n <tr>\n <th>\n {{ \"document\" | translate }}\n </th>\n <th>\n {{ \"format\" | translate }}\n </th>\n <th>\n {{ \"flux.components.uploadDocument.maxSize\" | translate }}\n </th>\n <th>\n {{ \"stepControl.mandatory\" | translate }}\n </th>\n </tr>\n </thead>\n <tbody class=\"table-detail\">\n <tr *ngFor=\"let doc of documents; let i = index\">\n <td>\n {{ doc.documentName }}\n </td>\n <td>\n {{ doc.documentExtensions }}\n </td>\n <td>\n {{ doc.documentMaxSize }}\n </td>\n <td>\n {{ (doc.isMandatory ? \"yes\" : \"no\") | translate }}\n </td>\n <td>\n <div>\n <input\n type=\"file\"\n #fileInput\n (change)=\"selectFile($event, doc)\"\n hidden\n />\n <button\n mat-flat-button\n color=\"primary\"\n (click)=\"fileInput.click()\"\n [disabled]=\"this.isDisabled\"\n >\n <mat-icon>cloud_upload</mat-icon>\n {{\n doc.fileName\n ? doc.fileName\n : (\"common.actions.upload\" | translate)\n }}\n </button>\n </div>\n </td>\n <td *ngIf=\"doc.fileName\">\n <i-tabler\n *ngIf=\"\n doc.isUploading === false &&\n doc.isUploadSuccess === true &&\n doc.fileName\n \"\n class=\"icon-25 text-white bg-primary rounded\"\n name=\"check\"\n ></i-tabler>\n <mat-spinner\n *ngIf=\"doc.isUploading === true\"\n class=\"m-x-auto upload-spinner\"\n ></mat-spinner>\n </td>\n </tr>\n </tbody>\n</table>\n", styles: [".upload-spinner{width:30px!important}\n"] }]
|
|
197
197
|
}], ctorParameters: () => [{ type: i1.DialogService }, { type: i2.ApplicationDataService }, { type: i0.ChangeDetectorRef }] });
|
package/esm2022/lib/formly/formly-validate-contact-info/formly-validate-contact-info.component.mjs
CHANGED
|
@@ -114,10 +114,10 @@ export class FormlyValidateContactInfoComponent extends BaseFormlyStepComponent
|
|
|
114
114
|
});
|
|
115
115
|
}
|
|
116
116
|
}
|
|
117
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
118
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.
|
|
117
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormlyValidateContactInfoComponent, deps: [{ token: i1.OtpService }, { token: i2.DialogService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
118
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: FormlyValidateContactInfoComponent, selector: "app-formly-validate-contact-info", usesInheritance: true, ngImport: i0, template: "<div class=\"component-text-field\">\n <div *ngIf=\"!(sent | async); else otpTemplate\">\n <mat-form-field class=\"full-width\">\n <mat-label>\n {{ isEmail ? props[\"labels\"].emailLabel : props[\"labels\"].phoneLabel }}\n </mat-label>\n <input\n matInput\n type=\"text\"\n [formControl]=\"control\"\n [readonly]=\"stepData.config.collected\"\n />\n </mat-form-field>\n <div\n *ngIf=\"\n control.invalid &&\n (control.dirty || control.touched) &&\n control.hasError('required')\n \"\n class=\"alert alert-danger\"\n >\n {{\n isEmail\n ? props[\"labels\"].emailRequiredLabel\n : props[\"labels\"].phoneRequiredLabel\n }}\n </div>\n <div\n *ngIf=\"\n control.invalid &&\n (control.dirty || control.touched) &&\n !control.hasError('required')\n \"\n class=\"alert alert-danger\"\n >\n {{\n isEmail\n ? props[\"labels\"].emailErrorLabel\n : props[\"labels\"].phoneErrorLabel\n }}\n </div>\n <button\n mat-button\n type=\"button\"\n [ngStyle]=\"otpButtonStyle\"\n (click)=\"sendOtp()\"\n >\n {{ buttonText }}\n </button>\n </div>\n</div>\n\n<ng-template #otpTemplate>\n <mat-form-field class=\"full-width\">\n <mat-label>\n {{ props[\"labels\"].otpLabel }}\n </mat-label>\n <input matInput type=\"text\" [formControl]=\"otp\" />\n </mat-form-field>\n <button\n mat-button\n type=\"button\"\n *ngIf=\"!(otpValidated | async)\"\n [ngStyle]=\"otpButtonStyle\"\n (click)=\"validateOtp()\"\n >\n {{ props[\"labels\"].otpButtonLabel }}\n </button>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "component", type: i7.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] }); }
|
|
119
119
|
}
|
|
120
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
120
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormlyValidateContactInfoComponent, decorators: [{
|
|
121
121
|
type: Component,
|
|
122
122
|
args: [{ selector: 'app-formly-validate-contact-info', template: "<div class=\"component-text-field\">\n <div *ngIf=\"!(sent | async); else otpTemplate\">\n <mat-form-field class=\"full-width\">\n <mat-label>\n {{ isEmail ? props[\"labels\"].emailLabel : props[\"labels\"].phoneLabel }}\n </mat-label>\n <input\n matInput\n type=\"text\"\n [formControl]=\"control\"\n [readonly]=\"stepData.config.collected\"\n />\n </mat-form-field>\n <div\n *ngIf=\"\n control.invalid &&\n (control.dirty || control.touched) &&\n control.hasError('required')\n \"\n class=\"alert alert-danger\"\n >\n {{\n isEmail\n ? props[\"labels\"].emailRequiredLabel\n : props[\"labels\"].phoneRequiredLabel\n }}\n </div>\n <div\n *ngIf=\"\n control.invalid &&\n (control.dirty || control.touched) &&\n !control.hasError('required')\n \"\n class=\"alert alert-danger\"\n >\n {{\n isEmail\n ? props[\"labels\"].emailErrorLabel\n : props[\"labels\"].phoneErrorLabel\n }}\n </div>\n <button\n mat-button\n type=\"button\"\n [ngStyle]=\"otpButtonStyle\"\n (click)=\"sendOtp()\"\n >\n {{ buttonText }}\n </button>\n </div>\n</div>\n\n<ng-template #otpTemplate>\n <mat-form-field class=\"full-width\">\n <mat-label>\n {{ props[\"labels\"].otpLabel }}\n </mat-label>\n <input matInput type=\"text\" [formControl]=\"otp\" />\n </mat-form-field>\n <button\n mat-button\n type=\"button\"\n *ngIf=\"!(otpValidated | async)\"\n [ngStyle]=\"otpButtonStyle\"\n (click)=\"validateOtp()\"\n >\n {{ props[\"labels\"].otpButtonLabel }}\n </button>\n</ng-template>\n" }]
|
|
123
123
|
}], ctorParameters: () => [{ type: i1.OtpService }, { type: i2.DialogService }, { type: i0.ChangeDetectorRef }] });
|
|
@@ -235,10 +235,10 @@ export class FormlyViewDocumentsComponent extends BaseFormlyControlComponent {
|
|
|
235
235
|
return null;
|
|
236
236
|
}
|
|
237
237
|
}
|
|
238
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
239
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.
|
|
238
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormlyViewDocumentsComponent, deps: [{ token: i1.ApplicationDataService }, { token: i2.DialogService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
239
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: FormlyViewDocumentsComponent, selector: "app-formly-view-documents", usesInheritance: true, ngImport: i0, template: "<p *ngIf=\"isLoading === false && (!documents || documents.length === 0)\">\n {{ getErrorTranslationMessage(\"noDocumentsToShow\") }}\n</p>\n\n<div class=\"buttons-container\">\n <button (click)=\"prevDocument()\"\n [disabled]=\"!canGoBack\"\n class=\"nav-button larger-width-nav-buttons\">\n ←\n </button>\n\n <p class=\"file-info font-paragraph\" *ngIf=\"currentDocument\">\n {{ this.currentDocument.name }}\n </p>\n\n <button (click)=\"nextDocument()\"\n [disabled]=\"!canGoNext\"\n class=\"nav-button larger-width-nav-buttons\">\n →\n </button>\n</div>\n\n<mat-spinner *ngIf=\"isLoading === true\" class=\"m-x-auto\"></mat-spinner>\n<pdf-viewer *ngIf=\"isLoading === false\"\n [src]=\"currentPdf\"\n [render-text]=\"true\"\n [original-size]=\"false\"\n [external-link-target]=\"'blank'\"\n class=\"pdf-viewer\"></pdf-viewer>\n", styles: [".buttons-container button{margin-right:5px;margin-bottom:10px;margin-top:10px}ng2-pdf-viewer{display:block;margin:0 auto;width:80%;height:600px}.pdf-viewer-container{display:flex;flex-direction:column;align-items:center;margin:20px}.pdf-viewer{width:80vw;height:86.254vw;max-width:1000px;max-height:1414px;min-width:300px;min-height:424px;overflow:auto;margin:auto}.nav-button{width:60px;height:35px;background-color:#7f81ff;display:flex;justify-content:center;align-items:center;color:#fff;text-align:center;border:none;padding:5px 10px;border-radius:10px;cursor:pointer;font-size:1.4rem;font-weight:700;transition:background-color .3s ease-in}.smaller-width-nav-buttons-section{display:none}.nav-button:hover{background-color:#9091ff}.nav-button:disabled{background-color:#ccc;cursor:not-allowed}.file-info{margin:0 10px;font-weight:700;font-size:1.8rem}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.PdfViewerComponent, selector: "pdf-viewer", inputs: ["src", "c-maps-url", "page", "render-text", "render-text-mode", "original-size", "show-all", "stick-to-page", "zoom", "zoom-scale", "rotation", "external-link-target", "autoresize", "fit-to-page", "show-borders"], outputs: ["after-load-complete", "page-rendered", "pages-initialized", "text-layer-rendered", "error", "on-progress", "pageChange"] }, { kind: "component", type: i5.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }] }); }
|
|
240
240
|
}
|
|
241
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
241
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormlyViewDocumentsComponent, decorators: [{
|
|
242
242
|
type: Component,
|
|
243
243
|
args: [{ selector: 'app-formly-view-documents', template: "<p *ngIf=\"isLoading === false && (!documents || documents.length === 0)\">\n {{ getErrorTranslationMessage(\"noDocumentsToShow\") }}\n</p>\n\n<div class=\"buttons-container\">\n <button (click)=\"prevDocument()\"\n [disabled]=\"!canGoBack\"\n class=\"nav-button larger-width-nav-buttons\">\n ←\n </button>\n\n <p class=\"file-info font-paragraph\" *ngIf=\"currentDocument\">\n {{ this.currentDocument.name }}\n </p>\n\n <button (click)=\"nextDocument()\"\n [disabled]=\"!canGoNext\"\n class=\"nav-button larger-width-nav-buttons\">\n →\n </button>\n</div>\n\n<mat-spinner *ngIf=\"isLoading === true\" class=\"m-x-auto\"></mat-spinner>\n<pdf-viewer *ngIf=\"isLoading === false\"\n [src]=\"currentPdf\"\n [render-text]=\"true\"\n [original-size]=\"false\"\n [external-link-target]=\"'blank'\"\n class=\"pdf-viewer\"></pdf-viewer>\n", styles: [".buttons-container button{margin-right:5px;margin-bottom:10px;margin-top:10px}ng2-pdf-viewer{display:block;margin:0 auto;width:80%;height:600px}.pdf-viewer-container{display:flex;flex-direction:column;align-items:center;margin:20px}.pdf-viewer{width:80vw;height:86.254vw;max-width:1000px;max-height:1414px;min-width:300px;min-height:424px;overflow:auto;margin:auto}.nav-button{width:60px;height:35px;background-color:#7f81ff;display:flex;justify-content:center;align-items:center;color:#fff;text-align:center;border:none;padding:5px 10px;border-radius:10px;cursor:pointer;font-size:1.4rem;font-weight:700;transition:background-color .3s ease-in}.smaller-width-nav-buttons-section{display:none}.nav-button:hover{background-color:#9091ff}.nav-button:disabled{background-color:#ccc;cursor:not-allowed}.file-info{margin:0 10px;font-weight:700;font-size:1.8rem}\n"] }]
|
|
244
244
|
}], ctorParameters: () => [{ type: i1.ApplicationDataService }, { type: i2.DialogService }, { type: i0.ChangeDetectorRef }] });
|
|
@@ -150,10 +150,10 @@ export class FormlyViewOffersComponent extends BaseFormlyStepComponent {
|
|
|
150
150
|
this.props['event'](selectedOffer.offerId);
|
|
151
151
|
}
|
|
152
152
|
}
|
|
153
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
154
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.
|
|
153
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormlyViewOffersComponent, deps: [{ token: i1.ApplicationDataService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
154
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: FormlyViewOffersComponent, selector: "app-formly-view-offers", usesInheritance: true, ngImport: i0, template: "<mat-spinner *ngIf=\"isLoading\" class=\"m-x-auto upload-spinner\"></mat-spinner>\n<ng-container class=\"d-flex flex-row\" *ngIf=\"!isLoading\">\n <mat-card class=\"cardWithShadow blue_theme theme-card align-items-stretch\">\n <mat-card-content class=\"p-24\">\n <shared-grid [data]=\"datasource\"\n [count]=\"datasource.length\"\n [columns]=\"columns\"\n [config]=\"config\"\n (open)=\"offerSelected($event)\"></shared-grid>\n </mat-card-content>\n </mat-card>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i4.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i5.GridComponent, selector: "shared-grid", inputs: ["data", "count", "columns", "config"], outputs: ["reload", "delete", "duplicate", "open"] }] }); }
|
|
155
155
|
}
|
|
156
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
156
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormlyViewOffersComponent, decorators: [{
|
|
157
157
|
type: Component,
|
|
158
158
|
args: [{ selector: 'app-formly-view-offers', template: "<mat-spinner *ngIf=\"isLoading\" class=\"m-x-auto upload-spinner\"></mat-spinner>\n<ng-container class=\"d-flex flex-row\" *ngIf=\"!isLoading\">\n <mat-card class=\"cardWithShadow blue_theme theme-card align-items-stretch\">\n <mat-card-content class=\"p-24\">\n <shared-grid [data]=\"datasource\"\n [count]=\"datasource.length\"\n [columns]=\"columns\"\n [config]=\"config\"\n (open)=\"offerSelected($event)\"></shared-grid>\n </mat-card-content>\n </mat-card>\n</ng-container>\n" }]
|
|
159
159
|
}], ctorParameters: () => [{ type: i1.ApplicationDataService }, { type: i0.ChangeDetectorRef }] });
|
|
@@ -28,10 +28,10 @@ export class OriginFormAuthService {
|
|
|
28
28
|
tokenObservable() {
|
|
29
29
|
return this.tokenSubject.asObservable();
|
|
30
30
|
}
|
|
31
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
32
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.
|
|
31
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: OriginFormAuthService, deps: [{ token: i1.AuthenticationClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
32
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: OriginFormAuthService, providedIn: 'root' }); }
|
|
33
33
|
}
|
|
34
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
34
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: OriginFormAuthService, decorators: [{
|
|
35
35
|
type: Injectable,
|
|
36
36
|
args: [{
|
|
37
37
|
providedIn: 'root',
|
|
@@ -26,10 +26,10 @@ export class OriginFormTokenInterceptor {
|
|
|
26
26
|
return next.handle(newReq);
|
|
27
27
|
}), catchError(err => throwError(err)));
|
|
28
28
|
}
|
|
29
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
30
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.
|
|
29
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: OriginFormTokenInterceptor, deps: [{ token: i1.OriginFormAuthService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
30
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: OriginFormTokenInterceptor }); }
|
|
31
31
|
}
|
|
32
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
32
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: OriginFormTokenInterceptor, decorators: [{
|
|
33
33
|
type: Injectable
|
|
34
34
|
}], ctorParameters: () => [{ type: i1.OriginFormAuthService }] });
|
|
35
35
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JpZ2luLWZvcm0tdG9rZW4uaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9vcmlnaW4tZm9ybS9zcmMvbGliL29yaWdpbi1mb3JtLXRva2VuLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFJdkQsTUFBTSxPQUFPLDBCQUEwQjtJQUNyQyxZQUFvQixXQUFrQztRQUFsQyxnQkFBVyxHQUFYLFdBQVcsQ0FBdUI7SUFBRyxDQUFDO0lBRTFELFNBQVMsQ0FBQyxHQUFxQixFQUFFLElBQWlCO1FBQ2hELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDMUMsSUFBSSxPQUFPLEdBQUcsR0FBRyxDQUFDO1FBQ2xCLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixPQUFPLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLFVBQVUsRUFBRSxFQUFFLGFBQWEsRUFBRSxVQUFVLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUM5QixVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDakIsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO2dCQUN6QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzVDLENBQUM7WUFDRCxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVPLGNBQWMsQ0FBQyxHQUFxQixFQUFFLElBQWlCO1FBQzdELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQ3pDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNuQixNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsVUFBVSxFQUFFLEVBQUUsYUFBYSxFQUFFLFVBQVUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbEYsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdCLENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUNuQyxDQUFDO0lBQ0osQ0FBQzsrR0EzQlUsMEJBQTBCO21IQUExQiwwQkFBMEI7OzRGQUExQiwwQkFBMEI7a0JBRHRDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwSW50ZXJjZXB0b3IsIEh0dHBSZXF1ZXN0LCBIdHRwSGFuZGxlciwgSHR0cEV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgT3JpZ2luRm9ybUF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9vcmlnaW4tZm9ybS1hdXRoLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgT3JpZ2luRm9ybVRva2VuSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGF1dGhTZXJ2aWNlOiBPcmlnaW5Gb3JtQXV0aFNlcnZpY2UpIHt9XG5cbiAgaW50ZXJjZXB0KHJlcTogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLmF1dGhTZXJ2aWNlLmdldFRva2VuKCk7XG4gICAgbGV0IGF1dGhSZXEgPSByZXE7XG4gICAgaWYgKHRva2VuKSB7XG4gICAgICBhdXRoUmVxID0gcmVxLmNsb25lKHsgc2V0SGVhZGVyczogeyBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dG9rZW59YCB9IH0pO1xuICAgIH1cbiAgICByZXR1cm4gbmV4dC5oYW5kbGUoYXV0aFJlcSkucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09PSA0MDEpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGU0MDFFcnJvcihhdXRoUmVxLCBuZXh0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZTQwMUVycm9yKHJlcTogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgcmV0dXJuIHRoaXMuYXV0aFNlcnZpY2UucmVmcmVzaFRva2VuKCkucGlwZShcbiAgICAgIHN3aXRjaE1hcChuZXdUb2tlbiA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1JlcSA9IHJlcS5jbG9uZSh7IHNldEhlYWRlcnM6IHsgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke25ld1Rva2VufWAgfSB9KTtcbiAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKG5ld1JlcSk7XG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHRocm93RXJyb3IoZXJyKSlcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -2344,10 +2344,10 @@ export class CollectorFormComponent {
|
|
|
2344
2344
|
this.cdRef.detectChanges();
|
|
2345
2345
|
}
|
|
2346
2346
|
}
|
|
2347
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
2348
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.
|
|
2347
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CollectorFormComponent, deps: [{ token: i1.DictionaryService }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i2.ProxyService }, { token: i3.LabelService }, { token: i4.ApplicationDataService }, { token: i5.LanguageService }, { token: i6.OriginFormAuthService }, { token: i7.FormsService }, { token: i8.ConfigService }, { token: i9.TranslationService }, { token: i10.OriginFormSignalrHandlerService }, { token: i11.ActionStepHandler }, { token: i12.ScrollToErrorService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2348
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: CollectorFormComponent, selector: "app-origin-form", inputs: { configComponent: "configComponent", configUuid: "configUuid", currentStepId: "currentStepId", appModel: "appModel", signBaseUrl: "signBaseUrl", currentLanguageIso: "currentLanguageIso", fillData: "fillData", env: "env", showDisplayMode: "showDisplayMode", showLanguageSelector: "showLanguageSelector", isDemoMode: "isDemoMode", isDebug: "isDebug", appDataUuid: "appDataUuid", blockPreviousStep: "blockPreviousStep", dataUrlId: "dataUrlId", noButtonsInView: "noButtonsInView" }, outputs: { completionEvent: "completionEvent" }, viewQueries: [{ propertyName: "formlyFields", predicate: FormlyField, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"isLoading\" class=\"loading-overlay\">\n <mat-spinner></mat-spinner>\n</div>\n<div [hidden]=\"isLoading\">\n <div *ngIf=\"showLanguageSelector\" appearance=\"outline\" class=\"right-aligned\">\n <button [matMenuTriggerFor]=\"flags\" mat-icon-button class=\"m-r-5\">\n <img\n [src]=\"returnFLag(currentLanguageIso)\"\n class=\"rounded-circle object-cover icon-20\"\n />\n </button>\n <mat-menu #flags=\"matMenu\" class=\"cardWithShadow\">\n <button\n mat-menu-item\n *ngFor=\"let lang of applicationLanguages()\"\n (click)=\"changeLanguage(lang.iso)\"\n >\n <div class=\"d-flex align-items-center\">\n <img\n [src]=\"returnFLag(lang.iso)\"\n class=\"rounded-circle object-cover icon-20\"\n />\n <span class=\"mat-subtitle-1 f-s-14\">{{ lang.name }}</span>\n </div>\n </button>\n </mat-menu>\n </div>\n\n <br />\n <div class=\"form-container\">\n <form [formGroup]=\"form\" (ngSubmit)=\"submit()\">\n <formly-form\n [model]=\"model\"\n [fields]=\"formlyConfig\"\n [options]=\"options\"\n [form]=\"form\"\n ></formly-form>\n </form>\n </div>\n</div>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@300;400;500;600;700&display=swap\";@import\"https://fonts.googleapis.com/icon?family=Material+Icons\";@font-face{font-family:ttrounds;src:url(/assets/fonts/ttrounds-bold-webfont.woff2) format(\"woff2\"),url(/assets/fonts/ttrounds-bold-webfont.woff) format(\"woff\");font-weight:700;font-style:normal}@font-face{font-family:ttrounds;src:url(/assets/fonts/ttrounds-regular-webfont.woff2) format(\"woff2\"),url(/assets/fonts/ttrounds-regular-webfont.woff) format(\"woff\");font-weight:400;font-style:normal}@font-face{font-family:ttrounds;src:url(/assets/fonts/ttrounds-thin-webfont.woff2) format(\"woff2\"),url(/assets/fonts/ttrounds-thin-webfont.woff) format(\"woff\");font-weight:200;font-style:normal}@font-face{font-family:Sora Light;src:url(/assets/fonts/Sora-Light.ttf) format(\"truetype\");font-weight:400;font-style:normal}@font-face{font-family:Sora Regular;src:url(/assets/fonts/Sora-Regular.ttf) format(\"truetype\");font-weight:400;font-style:normal}@font-face{font-family:Sora ExtraBold;src:url(/assets/fonts/Sora-ExtraBold.ttf) format(\"truetype\");font-weight:400;font-style:normal}@font-face{font-family:Figtree Light;src:url(/assets/fonts/Figtree-Light.ttf) format(\"truetype\");font-weight:400;font-style:normal}@font-face{font-family:Figtree Regular;src:url(/assets/fonts/Figtree-Regular.ttf) format(\"truetype\");font-weight:400;font-style:normal}@font-face{font-family:Figtree Bold;src:url(/assets/fonts/Figtree-Bold.ttf) format(\"truetype\");font-weight:400;font-style:normal}.loader{border-top:16px solid blue;border-right:16px solid green;border-bottom:16px solid red;border-left:16px solid pink}:host ::ng-deep .mat-mdc-text-field-wrapper .mdc-line-ripple{display:none!important}.right-aligned{display:flex;justify-content:flex-end!important}.flag-icon{width:20px;height:20px;margin-right:8px;vertical-align:middle}.rounded-circle{border-radius:50%}.object-cover{object-fit:cover}.m-r-8{margin-right:8px}.icon-20{width:20px;height:20px}.loading-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#ffffffb3;display:flex;justify-content:center;align-items:center;z-index:9999}\n"], dependencies: [{ kind: "directive", type: i13.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i13.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i14.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i14.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i14.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i15.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i15.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i15.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i16.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i17.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i18.FormlyForm, selector: "formly-form", inputs: ["form", "model", "fields", "options"], outputs: ["modelChange"] }] }); }
|
|
2349
2349
|
}
|
|
2350
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
2350
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CollectorFormComponent, decorators: [{
|
|
2351
2351
|
type: Component,
|
|
2352
2352
|
args: [{ selector: 'app-origin-form', template: "<div *ngIf=\"isLoading\" class=\"loading-overlay\">\n <mat-spinner></mat-spinner>\n</div>\n<div [hidden]=\"isLoading\">\n <div *ngIf=\"showLanguageSelector\" appearance=\"outline\" class=\"right-aligned\">\n <button [matMenuTriggerFor]=\"flags\" mat-icon-button class=\"m-r-5\">\n <img\n [src]=\"returnFLag(currentLanguageIso)\"\n class=\"rounded-circle object-cover icon-20\"\n />\n </button>\n <mat-menu #flags=\"matMenu\" class=\"cardWithShadow\">\n <button\n mat-menu-item\n *ngFor=\"let lang of applicationLanguages()\"\n (click)=\"changeLanguage(lang.iso)\"\n >\n <div class=\"d-flex align-items-center\">\n <img\n [src]=\"returnFLag(lang.iso)\"\n class=\"rounded-circle object-cover icon-20\"\n />\n <span class=\"mat-subtitle-1 f-s-14\">{{ lang.name }}</span>\n </div>\n </button>\n </mat-menu>\n </div>\n\n <br />\n <div class=\"form-container\">\n <form [formGroup]=\"form\" (ngSubmit)=\"submit()\">\n <formly-form\n [model]=\"model\"\n [fields]=\"formlyConfig\"\n [options]=\"options\"\n [form]=\"form\"\n ></formly-form>\n </form>\n </div>\n</div>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@300;400;500;600;700&display=swap\";@import\"https://fonts.googleapis.com/icon?family=Material+Icons\";@font-face{font-family:ttrounds;src:url(/assets/fonts/ttrounds-bold-webfont.woff2) format(\"woff2\"),url(/assets/fonts/ttrounds-bold-webfont.woff) format(\"woff\");font-weight:700;font-style:normal}@font-face{font-family:ttrounds;src:url(/assets/fonts/ttrounds-regular-webfont.woff2) format(\"woff2\"),url(/assets/fonts/ttrounds-regular-webfont.woff) format(\"woff\");font-weight:400;font-style:normal}@font-face{font-family:ttrounds;src:url(/assets/fonts/ttrounds-thin-webfont.woff2) format(\"woff2\"),url(/assets/fonts/ttrounds-thin-webfont.woff) format(\"woff\");font-weight:200;font-style:normal}@font-face{font-family:Sora Light;src:url(/assets/fonts/Sora-Light.ttf) format(\"truetype\");font-weight:400;font-style:normal}@font-face{font-family:Sora Regular;src:url(/assets/fonts/Sora-Regular.ttf) format(\"truetype\");font-weight:400;font-style:normal}@font-face{font-family:Sora ExtraBold;src:url(/assets/fonts/Sora-ExtraBold.ttf) format(\"truetype\");font-weight:400;font-style:normal}@font-face{font-family:Figtree Light;src:url(/assets/fonts/Figtree-Light.ttf) format(\"truetype\");font-weight:400;font-style:normal}@font-face{font-family:Figtree Regular;src:url(/assets/fonts/Figtree-Regular.ttf) format(\"truetype\");font-weight:400;font-style:normal}@font-face{font-family:Figtree Bold;src:url(/assets/fonts/Figtree-Bold.ttf) format(\"truetype\");font-weight:400;font-style:normal}.loader{border-top:16px solid blue;border-right:16px solid green;border-bottom:16px solid red;border-left:16px solid pink}:host ::ng-deep .mat-mdc-text-field-wrapper .mdc-line-ripple{display:none!important}.right-aligned{display:flex;justify-content:flex-end!important}.flag-icon{width:20px;height:20px;margin-right:8px;vertical-align:middle}.rounded-circle{border-radius:50%}.object-cover{object-fit:cover}.m-r-8{margin-right:8px}.icon-20{width:20px;height:20px}.loading-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#ffffffb3;display:flex;justify-content:center;align-items:center;z-index:9999}\n"] }]
|
|
2353
2353
|
}], ctorParameters: () => [{ type: i1.DictionaryService }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i2.ProxyService }, { type: i3.LabelService }, { type: i4.ApplicationDataService }, { type: i5.LanguageService }, { type: i6.OriginFormAuthService }, { type: i7.FormsService }, { type: i8.ConfigService }, { type: i9.TranslationService }, { type: i10.OriginFormSignalrHandlerService }, { type: i11.ActionStepHandler }, { type: i12.ScrollToErrorService }], propDecorators: { formlyFields: [{
|