@valtimo/components 12.47.0 → 12.48.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/components/form-io/form-io-iban/iban.component.mjs +5 -4
- package/esm2022/lib/components/form-io/form-io-iban/iban.formio.mjs +10 -4
- package/esm2022/lib/components/form-io/form-io-iban/iban.validators.mjs +20 -16
- package/esm2022/lib/components/timeline/timeline.component.mjs +3 -3
- package/esm2022/lib/modules/custom-formio-component/create-custom-component.mjs +27 -1
- package/esm2022/lib/modules/custom-formio-component/elements.common.mjs +1 -1
- package/fesm2022/valtimo-components.mjs +64 -29
- package/fesm2022/valtimo-components.mjs.map +1 -1
- package/lib/components/form-io/form-io-iban/iban.component.d.ts +2 -2
- package/lib/components/form-io/form-io-iban/iban.component.d.ts.map +1 -1
- package/lib/components/form-io/form-io-iban/iban.formio.d.ts.map +1 -1
- package/lib/components/form-io/form-io-iban/iban.validators.d.ts +6 -1
- package/lib/components/form-io/form-io-iban/iban.validators.d.ts.map +1 -1
- package/lib/modules/custom-formio-component/create-custom-component.d.ts +1 -0
- package/lib/modules/custom-formio-component/create-custom-component.d.ts.map +1 -1
- package/lib/modules/custom-formio-component/elements.common.d.ts +1 -0
- package/lib/modules/custom-formio-component/elements.common.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -24,6 +24,9 @@ export class FormIoIbanComponent {
|
|
|
24
24
|
this.ibanForm.controls.iban.setValue(this.value);
|
|
25
25
|
this.ibanForm.controls.iban.setValidators(this.required ? [Validators.required, ibanValidator()] : [ibanValidator()]);
|
|
26
26
|
this.ibanForm.controls.iban.updateValueAndValidity();
|
|
27
|
+
if (this.value) {
|
|
28
|
+
this.ibanForm.controls.iban.markAsTouched();
|
|
29
|
+
}
|
|
27
30
|
if (this.disabled) {
|
|
28
31
|
Object.keys(this.ibanForm.controls).forEach(key => {
|
|
29
32
|
this.ibanForm?.get(key)?.disable();
|
|
@@ -38,9 +41,7 @@ export class FormIoIbanComponent {
|
|
|
38
41
|
this._subscriptions.unsubscribe();
|
|
39
42
|
}
|
|
40
43
|
onValueChange() {
|
|
41
|
-
this.value = this.ibanForm.
|
|
42
|
-
? this.ibanForm.controls.iban.value
|
|
43
|
-
: [this.ibanForm.value];
|
|
44
|
+
this.value = this.ibanForm.controls.iban.value ?? '';
|
|
44
45
|
this.valueChange.emit(this.value);
|
|
45
46
|
}
|
|
46
47
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormIoIbanComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
@@ -58,4 +59,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
58
59
|
}], valueChange: [{
|
|
59
60
|
type: Output
|
|
60
61
|
}] } });
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWJhbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0taW8vZm9ybS1pby1pYmFuL2liYW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9mb3JtLWlvL2Zvcm0taW8taWJhbi9pYmFuLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7OztBQUdsQzs7R0FFRztBQU1ILE1BQU0sT0FBTyxtQkFBbUI7SUFMaEM7UUFTa0IsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNuRCxhQUFRLEdBQUcsSUFBSSxTQUFTLENBQUM7WUFDOUIsSUFBSSxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQztTQUMxQixDQUFDLENBQUM7UUFDYyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7S0FvQ3REO0lBbENRLGVBQWU7UUFDcEIsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQ3ZDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQzNFLENBQUM7WUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUVyRCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDZixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDOUMsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNsQixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUNoRCxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQztnQkFDckMsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1lBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3hDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2QixDQUFDLENBQUMsQ0FDSCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFTyxhQUFhO1FBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDckQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLENBQUM7K0dBN0NVLG1CQUFtQjttR0FBbkIsbUJBQW1CLHFLQ2RoQyxxbUJBa0JBOzs0RkRKYSxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsY0FBYzs4QkFPUixLQUFLO3NCQUFwQixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSztnQkFDVyxXQUFXO3NCQUEzQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtpYmFuVmFsaWRhdG9yfSBmcm9tICcuL2liYW4udmFsaWRhdG9ycyc7XG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0Zvcm1pb0N1c3RvbUNvbXBvbmVudH0gZnJvbSAnLi4vLi4vLi4vbW9kdWxlcyc7XG5cbi8qKlxuICogQ3VzdG9tIGZvcm1pbyBjb21wb25lbnQgZm9yIGliYW4gYmFuayBhY2NvdW50cy5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1pYmFuJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2liYW4uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pYmFuLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1Jb0liYW5Db21wb25lbnRcbiAgaW1wbGVtZW50cyBGb3JtaW9DdXN0b21Db21wb25lbnQ8c3RyaW5nPiwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95XG57XG4gIEBJbnB1dCgpIHB1YmxpYyB2YWx1ZTogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIHJlcXVpcmVkID0gZmFsc2U7XG4gIEBPdXRwdXQoKSBwdWJsaWMgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgcHVibGljIGliYW5Gb3JtID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgaWJhbjogbmV3IEZvcm1Db250cm9sKCcnKSxcbiAgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuaWJhbkZvcm0uY29udHJvbHMuaWJhbi5zZXRWYWx1ZSh0aGlzLnZhbHVlKTtcbiAgICAgIHRoaXMuaWJhbkZvcm0uY29udHJvbHMuaWJhbi5zZXRWYWxpZGF0b3JzKFxuICAgICAgICB0aGlzLnJlcXVpcmVkID8gW1ZhbGlkYXRvcnMucmVxdWlyZWQsIGliYW5WYWxpZGF0b3IoKV0gOiBbaWJhblZhbGlkYXRvcigpXVxuICAgICAgKTtcbiAgICAgIHRoaXMuaWJhbkZvcm0uY29udHJvbHMuaWJhbi51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG5cbiAgICAgIGlmICh0aGlzLnZhbHVlKSB7XG4gICAgICAgIHRoaXMuaWJhbkZvcm0uY29udHJvbHMuaWJhbi5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuaWJhbkZvcm0uY29udHJvbHMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICB0aGlzLmliYW5Gb3JtPy5nZXQoa2V5KT8uZGlzYWJsZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgIHRoaXMuaWJhbkZvcm0udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5vblZhbHVlQ2hhbmdlKCk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgb25WYWx1ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdGhpcy5pYmFuRm9ybS5jb250cm9scy5pYmFuLnZhbHVlID8/ICcnO1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImliYW5Gb3JtLWNvbnRhaW5lclwiIFtmb3JtR3JvdXBdPVwiaWJhbkZvcm1cIj5cbiAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XG4gICAgPGlucHV0IGNkc1RleHQgaWQ9XCJpYmFuXCIgdHlwZT1cInRleHRcIiBmb3JtQ29udHJvbE5hbWU9XCJpYmFuXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiAvPlxuXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJmb3JtaW8tZXJyb3JzIGludmFsaWQtZmVlZGJhY2tcIlxuICAgICAgKm5nSWY9XCJcbiAgICAgICAgaWJhbkZvcm0uY29udHJvbHMuaWJhbi5pbnZhbGlkICYmXG4gICAgICAgIChpYmFuRm9ybS5jb250cm9scy5pYmFuLnRvdWNoZWQgfHwgIWliYW5Gb3JtLmNvbnRyb2xzLmliYW4ucHJpc3RpbmUpICYmXG4gICAgICAgIGliYW5Gb3JtLmNvbnRyb2xzPy5pYmFuPy5lcnJvcnNcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tdGV4dCBlcnJvclwiPlxuICAgICAgICB7eyAnZm9ybWlvVHJhbnNsYXRpb25zLmZvcm1pb0liYW5Db21wb25lbnQuZXJyb3JNZXNzYWdlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
import { TranslateService } from '@ngx-translate/core';
|
|
1
2
|
import { FormIoIbanComponent } from './iban.component';
|
|
2
3
|
import { registerCustomFormioComponent } from '../../../modules';
|
|
3
|
-
|
|
4
|
+
import { isValidIban } from './iban.validators';
|
|
5
|
+
const ERROR_MESSAGE_TRANSLATION_KEY = 'formioTranslations.formioIbanComponent.errorMessage';
|
|
6
|
+
const getComponentOptions = (injector) => ({
|
|
4
7
|
type: 'iban',
|
|
5
8
|
selector: 'valtimo-iban',
|
|
6
9
|
title: 'Iban',
|
|
@@ -15,8 +18,11 @@ const COMPONENT_OPTIONS = {
|
|
|
15
18
|
required: false,
|
|
16
19
|
},
|
|
17
20
|
},
|
|
18
|
-
|
|
21
|
+
customValidator: (value) => isValidIban(value)
|
|
22
|
+
? null
|
|
23
|
+
: injector.get(TranslateService).instant(ERROR_MESSAGE_TRANSLATION_KEY),
|
|
24
|
+
});
|
|
19
25
|
export function registerFormioIbanComponent(injector) {
|
|
20
|
-
registerCustomFormioComponent(
|
|
26
|
+
registerCustomFormioComponent(getComponentOptions(injector), FormIoIbanComponent, injector);
|
|
21
27
|
}
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWJhbi5mb3JtaW8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0taW8vZm9ybS1pby1pYmFuL2liYW4uZm9ybWlvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3JELE9BQU8sRUFBNEIsNkJBQTZCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUMxRixPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFFOUMsTUFBTSw2QkFBNkIsR0FBRyxxREFBcUQsQ0FBQztBQUU1RixNQUFNLG1CQUFtQixHQUFHLENBQUMsUUFBa0IsRUFBNkIsRUFBRSxDQUFDLENBQUM7SUFDOUUsSUFBSSxFQUFFLE1BQU07SUFDWixRQUFRLEVBQUUsY0FBYztJQUN4QixLQUFLLEVBQUUsTUFBTTtJQUNiLEtBQUssRUFBRSxPQUFPO0lBQ2QsSUFBSSxFQUFFLE1BQU07SUFDWixNQUFNLEVBQUU7UUFDTixLQUFLLEVBQUUsZ0JBQWdCO1FBQ3ZCLEdBQUcsRUFBRSxNQUFNO1FBQ1gsU0FBUyxFQUFFLEtBQUs7UUFDaEIsU0FBUyxFQUFFLElBQUk7UUFDZixRQUFRLEVBQUU7WUFDUixRQUFRLEVBQUUsS0FBSztTQUNoQjtLQUNGO0lBQ0QsZUFBZSxFQUFFLENBQUMsS0FBYSxFQUFFLEVBQUUsQ0FDakMsV0FBVyxDQUFDLEtBQUssQ0FBQztRQUNoQixDQUFDLENBQUMsSUFBSTtRQUNOLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUMsT0FBTyxDQUFDLDZCQUE2QixDQUFDO0NBQzVFLENBQUMsQ0FBQztBQUVILE1BQU0sVUFBVSwyQkFBMkIsQ0FBQyxRQUFrQjtJQUM1RCw2QkFBNkIsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsRUFBRSxtQkFBbUIsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUM5RixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3Rvcn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtGb3JtSW9JYmFuQ29tcG9uZW50fSBmcm9tICcuL2liYW4uY29tcG9uZW50JztcbmltcG9ydCB7Rm9ybWlvQ3VzdG9tQ29tcG9uZW50SW5mbywgcmVnaXN0ZXJDdXN0b21Gb3JtaW9Db21wb25lbnR9IGZyb20gJy4uLy4uLy4uL21vZHVsZXMnO1xuaW1wb3J0IHtpc1ZhbGlkSWJhbn0gZnJvbSAnLi9pYmFuLnZhbGlkYXRvcnMnO1xuXG5jb25zdCBFUlJPUl9NRVNTQUdFX1RSQU5TTEFUSU9OX0tFWSA9ICdmb3JtaW9UcmFuc2xhdGlvbnMuZm9ybWlvSWJhbkNvbXBvbmVudC5lcnJvck1lc3NhZ2UnO1xuXG5jb25zdCBnZXRDb21wb25lbnRPcHRpb25zID0gKGluamVjdG9yOiBJbmplY3Rvcik6IEZvcm1pb0N1c3RvbUNvbXBvbmVudEluZm8gPT4gKHtcbiAgdHlwZTogJ2liYW4nLFxuICBzZWxlY3RvcjogJ3ZhbHRpbW8taWJhbicsXG4gIHRpdGxlOiAnSWJhbicsXG4gIGdyb3VwOiAnYmFzaWMnLFxuICBpY29uOiAnYmFuaycsXG4gIHNjaGVtYToge1xuICAgIGxhYmVsOiAnSWJhbiBjb21wb25lbnQnLFxuICAgIGtleTogJ2liYW4nLFxuICAgIGhpZGVMYWJlbDogZmFsc2UsXG4gICAgdGFibGVWaWV3OiB0cnVlLFxuICAgIHZhbGlkYXRlOiB7XG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgfSxcbiAgfSxcbiAgY3VzdG9tVmFsaWRhdG9yOiAodmFsdWU6IHN0cmluZykgPT5cbiAgICBpc1ZhbGlkSWJhbih2YWx1ZSlcbiAgICAgID8gbnVsbFxuICAgICAgOiBpbmplY3Rvci5nZXQoVHJhbnNsYXRlU2VydmljZSkuaW5zdGFudChFUlJPUl9NRVNTQUdFX1RSQU5TTEFUSU9OX0tFWSksXG59KTtcblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyRm9ybWlvSWJhbkNvbXBvbmVudChpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgcmVnaXN0ZXJDdXN0b21Gb3JtaW9Db21wb25lbnQoZ2V0Q29tcG9uZW50T3B0aW9ucyhpbmplY3RvciksIEZvcm1Jb0liYW5Db21wb25lbnQsIGluamVjdG9yKTtcbn1cbiJdfQ==
|
|
@@ -1,26 +1,30 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Custom iban validator for angular forms.
|
|
3
2
|
* Checks if the iban is valid.
|
|
4
3
|
* First move the first four chracters from the beginngin to the end of the string.
|
|
5
4
|
* Change the letter to a numeric representation.
|
|
6
5
|
* Calculate the modulo in a parts, because javascript cannot accuratly calculate the modulus for large numbers.
|
|
7
6
|
*
|
|
7
|
+
* @returns True if the iban is valid or the value is empty.
|
|
8
|
+
*/
|
|
9
|
+
export function isValidIban(value) {
|
|
10
|
+
const valueString = value == null ? '' : String(value);
|
|
11
|
+
if (!valueString) {
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
const rearranged = valueString.substring(4) + valueString.substring(0, 4);
|
|
15
|
+
const numeric = Array.from(rearranged)
|
|
16
|
+
.map(c => (isNaN(parseInt(c, 10)) ? (c.charCodeAt(0) - 55).toString() : c))
|
|
17
|
+
.join('');
|
|
18
|
+
return (Array.from(numeric)
|
|
19
|
+
.map(c => parseInt(c, 10))
|
|
20
|
+
.reduce((remainder, value) => (remainder * 10 + value) % 97, 0) === 1);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Custom iban validator for angular forms.
|
|
24
|
+
*
|
|
8
25
|
* @returns Null if the iban is valid or the value is an empty string, else return an object with isIbanValid property.
|
|
9
26
|
*/
|
|
10
27
|
export function ibanValidator() {
|
|
11
|
-
return (control) => {
|
|
12
|
-
const valueString = String(control.value);
|
|
13
|
-
if (valueString.match(/^$/)) {
|
|
14
|
-
return null;
|
|
15
|
-
}
|
|
16
|
-
const rearranged = valueString.substring(4, valueString.length) + valueString.substring(0, 4);
|
|
17
|
-
const numeric = Array.from(rearranged)
|
|
18
|
-
.map(c => (isNaN(parseInt(c, 10)) ? (c.charCodeAt(0) - 55).toString() : c))
|
|
19
|
-
.join('');
|
|
20
|
-
const isValidIban = Array.from(numeric)
|
|
21
|
-
.map(c => parseInt(c, 10))
|
|
22
|
-
.reduce((remainder, value) => (remainder * 10 + value) % 97, 0);
|
|
23
|
-
return isValidIban === 1 ? null : { isIbanValid: 'IBAN voldoet niet' };
|
|
24
|
-
};
|
|
28
|
+
return (control) => isValidIban(control.value) ? null : { isIbanValid: 'IBAN voldoet niet' };
|
|
25
29
|
}
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWJhbi52YWxpZGF0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9mb3JtLWlvL2Zvcm0taW8taWJhbi9pYmFuLnZhbGlkYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsS0FBYztJQUN4QyxNQUFNLFdBQVcsR0FBRyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2RCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxRSxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztTQUNuQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDMUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ1osT0FBTyxDQUNMLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1NBQ2hCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDekIsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLEdBQUcsRUFBRSxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQ3hFLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxhQUFhO0lBQzNCLE9BQU8sQ0FBQyxPQUF3QixFQUEyQixFQUFFLENBQzNELFdBQVcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUUsbUJBQW1CLEVBQUMsQ0FBQztBQUMzRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRvckZuLCBWYWxpZGF0aW9uRXJyb3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBpYmFuIGlzIHZhbGlkLlxuICogRmlyc3QgbW92ZSB0aGUgZmlyc3QgZm91ciBjaHJhY3RlcnMgZnJvbSB0aGUgYmVnaW5uZ2luIHRvIHRoZSBlbmQgb2YgdGhlIHN0cmluZy5cbiAqIENoYW5nZSB0aGUgbGV0dGVyIHRvIGEgbnVtZXJpYyByZXByZXNlbnRhdGlvbi5cbiAqIENhbGN1bGF0ZSB0aGUgbW9kdWxvIGluIGEgcGFydHMsIGJlY2F1c2UgamF2YXNjcmlwdCBjYW5ub3QgYWNjdXJhdGx5IGNhbGN1bGF0ZSB0aGUgbW9kdWx1cyBmb3IgbGFyZ2UgbnVtYmVycy5cbiAqXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBpYmFuIGlzIHZhbGlkIG9yIHRoZSB2YWx1ZSBpcyBlbXB0eS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRJYmFuKHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIGNvbnN0IHZhbHVlU3RyaW5nID0gdmFsdWUgPT0gbnVsbCA/ICcnIDogU3RyaW5nKHZhbHVlKTtcbiAgaWYgKCF2YWx1ZVN0cmluZykge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGNvbnN0IHJlYXJyYW5nZWQgPSB2YWx1ZVN0cmluZy5zdWJzdHJpbmcoNCkgKyB2YWx1ZVN0cmluZy5zdWJzdHJpbmcoMCwgNCk7XG4gIGNvbnN0IG51bWVyaWMgPSBBcnJheS5mcm9tKHJlYXJyYW5nZWQpXG4gICAgLm1hcChjID0+IChpc05hTihwYXJzZUludChjLCAxMCkpID8gKGMuY2hhckNvZGVBdCgwKSAtIDU1KS50b1N0cmluZygpIDogYykpXG4gICAgLmpvaW4oJycpO1xuICByZXR1cm4gKFxuICAgIEFycmF5LmZyb20obnVtZXJpYylcbiAgICAgIC5tYXAoYyA9PiBwYXJzZUludChjLCAxMCkpXG4gICAgICAucmVkdWNlKChyZW1haW5kZXIsIHZhbHVlKSA9PiAocmVtYWluZGVyICogMTAgKyB2YWx1ZSkgJSA5NywgMCkgPT09IDFcbiAgKTtcbn1cblxuLyoqXG4gKiBDdXN0b20gaWJhbiB2YWxpZGF0b3IgZm9yIGFuZ3VsYXIgZm9ybXMuXG4gKlxuICogQHJldHVybnMgTnVsbCBpZiB0aGUgaWJhbiBpcyB2YWxpZCBvciB0aGUgdmFsdWUgaXMgYW4gZW1wdHkgc3RyaW5nLCBlbHNlIHJldHVybiBhbiBvYmplY3Qgd2l0aCBpc0liYW5WYWxpZCBwcm9wZXJ0eS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGliYW5WYWxpZGF0b3IoKTogVmFsaWRhdG9yRm4ge1xuICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+XG4gICAgaXNWYWxpZEliYW4oY29udHJvbC52YWx1ZSkgPyBudWxsIDoge2lzSWJhblZhbGlkOiAnSUJBTiB2b2xkb2V0IG5pZXQnfTtcbn1cbiJdfQ==
|
|
@@ -29,14 +29,14 @@ export class TimelineComponent {
|
|
|
29
29
|
}) || []);
|
|
30
30
|
}
|
|
31
31
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TimelineComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
32
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TimelineComponent, selector: "valtimo-timeline", inputs: { items: "items", actions: "actions" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div id=\"no-results\" class=\"p-5\" *ngIf=\"items?.length === 0\"></div>\n\n<div class=\"pb-5\" *ngIf=\"items?.length > 0\">\n <ul class=\"timeline mb-0 py-5\">\n <li class=\"timeline-item status-done\" *ngFor=\"let item of items\">\n <div class=\"timeline-date\">\n <span>{{ item.date }}</span>\n\n <br />\n\n <span>{{ item.time }}</span>\n </div>\n\n <div\n class=\"timeline-content mt-1\"\n *ngIf=\"{supportedActions: getSupportedActions(item, actions)} as vars\"\n >\n <div class=\"timeline-header p-0\">\n <span class=\"timeline-author\">{{ item.user }}</span>\n\n <div class=\"dropdown actions-dropdown\" *ngIf=\"vars.supportedActions?.length > 0\">\n <a\n class=\"dropdown-toggle d-block\"\n id=\"dropdownMenu\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n <i class=\"action-icon icon mdi mdi-dots-vertical\"></i>\n </a>\n\n <div class=\"dropdown-menu\" aria-labelledby=\"dropdownMenu\">\n <a\n *ngFor=\"let action of vars.supportedActions\"\n (click)=\"action.callback(item, $event)\"\n class=\"dropdown-item p-2\"\n >\n <ng-container *ngIf=\"action.icon !== null\">\n <i class=\"icon mdi\" [ngClass]=\"action.icon\"></i>\n </ng-container>\n\n {{ action?.label || '-' }}\n </a>\n </div>\n </div>\n\n <br />\n\n <p class=\"timeline-activity\">{{ item.activity }}</p>\n\n <div class=\"timeline-summary\">\n <p>\n {{ item.summaryTranslationKey | translate: item.summaryTranslationParams }}\n </p>\n </div>\n </div>\n </div>\n </li>\n </ul>\n</div>\n", styles: [".timeline-activity{font-size:100%}.timeline-summary p{font-size:.8rem;white-space:pre-line}.actions-dropdown{position:absolute;top:12px;right:12px;cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
|
|
32
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TimelineComponent, selector: "valtimo-timeline", inputs: { items: "items", actions: "actions" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div id=\"no-results\" class=\"p-5\" *ngIf=\"items?.length === 0\"></div>\n\n<div class=\"pb-5\" *ngIf=\"items?.length > 0\">\n <ul class=\"timeline mb-0 py-5\">\n <li class=\"timeline-item status-done\" *ngFor=\"let item of items\">\n <div class=\"timeline-date\">\n <span>{{ item.date }}</span>\n\n <br />\n\n <span>{{ item.time }}</span>\n </div>\n\n <div\n class=\"timeline-content mt-1\"\n *ngIf=\"{supportedActions: getSupportedActions(item, actions)} as vars\"\n >\n <div class=\"timeline-header p-0\">\n <span class=\"timeline-author\">{{ item.user }}</span>\n\n <div class=\"dropdown actions-dropdown\" *ngIf=\"vars.supportedActions?.length > 0\">\n <a\n class=\"dropdown-toggle d-block\"\n id=\"dropdownMenu\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n <i class=\"action-icon icon mdi mdi-dots-vertical\"></i>\n </a>\n\n <div class=\"dropdown-menu\" aria-labelledby=\"dropdownMenu\">\n <a\n *ngFor=\"let action of vars.supportedActions\"\n (click)=\"action.callback(item, $event)\"\n class=\"dropdown-item p-2\"\n >\n <ng-container *ngIf=\"action.icon !== null\">\n <i class=\"icon mdi\" [ngClass]=\"action.icon\"></i>\n </ng-container>\n\n {{ (action?.label | translate) || '-' }}\n </a>\n </div>\n </div>\n\n <br />\n\n <p class=\"timeline-activity\">{{ item.activity }}</p>\n\n <div class=\"timeline-summary\">\n <p>\n {{ item.summaryTranslationKey | translate: item.summaryTranslationParams }}\n </p>\n </div>\n </div>\n </div>\n </li>\n </ul>\n</div>\n", styles: [".timeline-activity{font-size:100%}.timeline-summary p{font-size:.8rem;white-space:pre-line}.actions-dropdown{position:absolute;top:12px;right:12px;cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
|
|
33
33
|
}
|
|
34
34
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TimelineComponent, decorators: [{
|
|
35
35
|
type: Component,
|
|
36
|
-
args: [{ selector: 'valtimo-timeline', template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div id=\"no-results\" class=\"p-5\" *ngIf=\"items?.length === 0\"></div>\n\n<div class=\"pb-5\" *ngIf=\"items?.length > 0\">\n <ul class=\"timeline mb-0 py-5\">\n <li class=\"timeline-item status-done\" *ngFor=\"let item of items\">\n <div class=\"timeline-date\">\n <span>{{ item.date }}</span>\n\n <br />\n\n <span>{{ item.time }}</span>\n </div>\n\n <div\n class=\"timeline-content mt-1\"\n *ngIf=\"{supportedActions: getSupportedActions(item, actions)} as vars\"\n >\n <div class=\"timeline-header p-0\">\n <span class=\"timeline-author\">{{ item.user }}</span>\n\n <div class=\"dropdown actions-dropdown\" *ngIf=\"vars.supportedActions?.length > 0\">\n <a\n class=\"dropdown-toggle d-block\"\n id=\"dropdownMenu\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n <i class=\"action-icon icon mdi mdi-dots-vertical\"></i>\n </a>\n\n <div class=\"dropdown-menu\" aria-labelledby=\"dropdownMenu\">\n <a\n *ngFor=\"let action of vars.supportedActions\"\n (click)=\"action.callback(item, $event)\"\n class=\"dropdown-item p-2\"\n >\n <ng-container *ngIf=\"action.icon !== null\">\n <i class=\"icon mdi\" [ngClass]=\"action.icon\"></i>\n </ng-container>\n\n {{ action?.label || '-' }}\n </a>\n </div>\n </div>\n\n <br />\n\n <p class=\"timeline-activity\">{{ item.activity }}</p>\n\n <div class=\"timeline-summary\">\n <p>\n {{ item.summaryTranslationKey | translate: item.summaryTranslationParams }}\n </p>\n </div>\n </div>\n </div>\n </li>\n </ul>\n</div>\n", styles: [".timeline-activity{font-size:100%}.timeline-summary p{font-size:.8rem;white-space:pre-line}.actions-dropdown{position:absolute;top:12px;right:12px;cursor:pointer}\n"] }]
|
|
36
|
+
args: [{ selector: 'valtimo-timeline', template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div id=\"no-results\" class=\"p-5\" *ngIf=\"items?.length === 0\"></div>\n\n<div class=\"pb-5\" *ngIf=\"items?.length > 0\">\n <ul class=\"timeline mb-0 py-5\">\n <li class=\"timeline-item status-done\" *ngFor=\"let item of items\">\n <div class=\"timeline-date\">\n <span>{{ item.date }}</span>\n\n <br />\n\n <span>{{ item.time }}</span>\n </div>\n\n <div\n class=\"timeline-content mt-1\"\n *ngIf=\"{supportedActions: getSupportedActions(item, actions)} as vars\"\n >\n <div class=\"timeline-header p-0\">\n <span class=\"timeline-author\">{{ item.user }}</span>\n\n <div class=\"dropdown actions-dropdown\" *ngIf=\"vars.supportedActions?.length > 0\">\n <a\n class=\"dropdown-toggle d-block\"\n id=\"dropdownMenu\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n <i class=\"action-icon icon mdi mdi-dots-vertical\"></i>\n </a>\n\n <div class=\"dropdown-menu\" aria-labelledby=\"dropdownMenu\">\n <a\n *ngFor=\"let action of vars.supportedActions\"\n (click)=\"action.callback(item, $event)\"\n class=\"dropdown-item p-2\"\n >\n <ng-container *ngIf=\"action.icon !== null\">\n <i class=\"icon mdi\" [ngClass]=\"action.icon\"></i>\n </ng-container>\n\n {{ (action?.label | translate) || '-' }}\n </a>\n </div>\n </div>\n\n <br />\n\n <p class=\"timeline-activity\">{{ item.activity }}</p>\n\n <div class=\"timeline-summary\">\n <p>\n {{ item.summaryTranslationKey | translate: item.summaryTranslationParams }}\n </p>\n </div>\n </div>\n </div>\n </li>\n </ul>\n</div>\n", styles: [".timeline-activity{font-size:100%}.timeline-summary p{font-size:.8rem;white-space:pre-line}.actions-dropdown{position:absolute;top:12px;right:12px;cursor:pointer}\n"] }]
|
|
37
37
|
}], propDecorators: { items: [{
|
|
38
38
|
type: Input
|
|
39
39
|
}], actions: [{
|
|
40
40
|
type: Input
|
|
41
41
|
}] } });
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWxpbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy90aW1lbGluZS90aW1lbGluZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3RpbWVsaW5lL3RpbWVsaW5lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7Ozs7QUFRL0MsTUFBTSxPQUFPLGlCQUFpQjtJQUlyQixtQkFBbUIsQ0FBQyxJQUFrQixFQUFFLE9BQW1CO1FBQ2hFLE9BQU8sQ0FDTCxPQUFPLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3ZCLE1BQU0sUUFBUSxHQUFHLE1BQU0sRUFBRSxFQUFFLENBQUM7WUFDNUIsTUFBTSxvQkFBb0IsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBRXBFLElBQUksUUFBUSxJQUFJLG9CQUFvQixFQUFFLENBQUM7Z0JBQ3JDLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNwRCxDQUFDO1lBRUQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsSUFBSSxFQUFFLENBQ1QsQ0FBQztJQUNKLENBQUM7K0dBakJVLGlCQUFpQjttR0FBakIsaUJBQWlCLHdHQ3ZCOUIsaWtGQTRFQTs7NEZEckRhLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDRSxrQkFBa0I7OEJBS25CLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtDb21wb25lbnQsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VGltZWxpbmVJdGVtfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLXRpbWVsaW5lJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RpbWVsaW5lLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGltZWxpbmUuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgVGltZWxpbmVDb21wb25lbnQge1xuICBASW5wdXQoKSBpdGVtczogQXJyYXk8VGltZWxpbmVJdGVtPjtcbiAgQElucHV0KCkgYWN0aW9ucz86IGFueVtdO1xuXG4gIHB1YmxpYyBnZXRTdXBwb3J0ZWRBY3Rpb25zKGl0ZW06IFRpbWVsaW5lSXRlbSwgYWN0aW9uczogQXJyYXk8YW55Pik6IEFycmF5PGFueT4ge1xuICAgIHJldHVybiAoXG4gICAgICBhY3Rpb25zPy5maWx0ZXIoYWN0aW9uID0+IHtcbiAgICAgICAgY29uc3QgYWN0aW9uSWQgPSBhY3Rpb24/LmlkO1xuICAgICAgICBjb25zdCBpdGVtU3VwcG9ydGVkQWN0aW9ucyA9IEFycmF5LmlzQXJyYXkoaXRlbS5zdXBwb3J0ZWRBY3Rpb25JZHMpO1xuXG4gICAgICAgIGlmIChhY3Rpb25JZCAmJiBpdGVtU3VwcG9ydGVkQWN0aW9ucykge1xuICAgICAgICAgIHJldHVybiBpdGVtLnN1cHBvcnRlZEFjdGlvbklkcy5pbmNsdWRlcyhhY3Rpb25JZCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pIHx8IFtdXG4gICAgKTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48ZGl2IGlkPVwibm8tcmVzdWx0c1wiIGNsYXNzPVwicC01XCIgKm5nSWY9XCJpdGVtcz8ubGVuZ3RoID09PSAwXCI+PC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJwYi01XCIgKm5nSWY9XCJpdGVtcz8ubGVuZ3RoID4gMFwiPlxuICA8dWwgY2xhc3M9XCJ0aW1lbGluZSBtYi0wIHB5LTVcIj5cbiAgICA8bGkgY2xhc3M9XCJ0aW1lbGluZS1pdGVtIHN0YXR1cy1kb25lXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lbGluZS1kYXRlXCI+XG4gICAgICAgIDxzcGFuPnt7IGl0ZW0uZGF0ZSB9fTwvc3Bhbj5cblxuICAgICAgICA8YnIgLz5cblxuICAgICAgICA8c3Bhbj57eyBpdGVtLnRpbWUgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInRpbWVsaW5lLWNvbnRlbnQgbXQtMVwiXG4gICAgICAgICpuZ0lmPVwie3N1cHBvcnRlZEFjdGlvbnM6IGdldFN1cHBvcnRlZEFjdGlvbnMoaXRlbSwgYWN0aW9ucyl9IGFzIHZhcnNcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGltZWxpbmUtaGVhZGVyIHAtMFwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGltZWxpbmUtYXV0aG9yXCI+e3sgaXRlbS51c2VyIH19PC9zcGFuPlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duIGFjdGlvbnMtZHJvcGRvd25cIiAqbmdJZj1cInZhcnMuc3VwcG9ydGVkQWN0aW9ucz8ubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi10b2dnbGUgZC1ibG9ja1wiXG4gICAgICAgICAgICAgIGlkPVwiZHJvcGRvd25NZW51XCJcbiAgICAgICAgICAgICAgZGF0YS10b2dnbGU9XCJkcm9wZG93blwiXG4gICAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgYXJpYS1leHBhbmRlZD1cImZhbHNlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJhY3Rpb24taWNvbiBpY29uIG1kaSBtZGktZG90cy12ZXJ0aWNhbFwiPjwvaT5cbiAgICAgICAgICAgIDwvYT5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIiBhcmlhLWxhYmVsbGVkYnk9XCJkcm9wZG93bk1lbnVcIj5cbiAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIHZhcnMuc3VwcG9ydGVkQWN0aW9uc1wiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGlvbi5jYWxsYmFjayhpdGVtLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gcC0yXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3Rpb24uaWNvbiAhPT0gbnVsbFwiPlxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uIG1kaVwiIFtuZ0NsYXNzXT1cImFjdGlvbi5pY29uXCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAge3sgKGFjdGlvbj8ubGFiZWwgfCB0cmFuc2xhdGUpIHx8ICctJyB9fVxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxiciAvPlxuXG4gICAgICAgICAgPHAgY2xhc3M9XCJ0aW1lbGluZS1hY3Rpdml0eVwiPnt7IGl0ZW0uYWN0aXZpdHkgfX08L3A+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltZWxpbmUtc3VtbWFyeVwiPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIHt7IGl0ZW0uc3VtbWFyeVRyYW5zbGF0aW9uS2V5IHwgdHJhbnNsYXRlOiBpdGVtLnN1bW1hcnlUcmFuc2xhdGlvblBhcmFtcyB9fVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbGk+XG4gIDwvdWw+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -161,6 +161,32 @@ export function createCustomFormioComponent(customComponentOptions) {
|
|
|
161
161
|
this.bindCustomOptions();
|
|
162
162
|
return changed;
|
|
163
163
|
}
|
|
164
|
+
// Lets a custom component reject a value through customValidator, instead of having to encode
|
|
165
|
+
// the invalidity into the value itself.
|
|
166
|
+
// @ts-ignore
|
|
167
|
+
checkComponentValidity(data, dirty, row, options = {}) {
|
|
168
|
+
// @ts-ignore
|
|
169
|
+
const result = super.checkComponentValidity(data, dirty, row, options);
|
|
170
|
+
const customValidator = customComponentOptions.customValidator;
|
|
171
|
+
if (!customValidator ||
|
|
172
|
+
this.shouldSkipValidation(data, dirty, row) ||
|
|
173
|
+
this.isEmpty(this.dataValue)) {
|
|
174
|
+
return result;
|
|
175
|
+
}
|
|
176
|
+
const applyCustomValidator = (valid) => {
|
|
177
|
+
if (!valid)
|
|
178
|
+
return false;
|
|
179
|
+
const message = customValidator(this.dataValue);
|
|
180
|
+
if (!message)
|
|
181
|
+
return true;
|
|
182
|
+
if (!options.silentCheck)
|
|
183
|
+
this.setCustomValidity(message, dirty);
|
|
184
|
+
return false;
|
|
185
|
+
};
|
|
186
|
+
return typeof result?.then === 'function'
|
|
187
|
+
? Promise.resolve(result).then(applyCustomValidator)
|
|
188
|
+
: applyCustomValidator(result);
|
|
189
|
+
}
|
|
164
190
|
// Add extra option to support multiple value (e.g. datagrid) with single angular component (disableMultiValueWrapper)
|
|
165
191
|
useWrapper() {
|
|
166
192
|
return (this.component.hasOwnProperty('multiple') &&
|
|
@@ -181,4 +207,4 @@ export function createCustomFormioComponent(customComponentOptions) {
|
|
|
181
207
|
}
|
|
182
208
|
};
|
|
183
209
|
}
|
|
184
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWN1c3RvbS1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9tb2R1bGVzL2N1c3RvbS1mb3JtaW8tY29tcG9uZW50L2NyZWF0ZS1jdXN0b20tY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFjLFVBQVUsRUFBMkIsS0FBSyxJQUFJLFdBQVcsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUVoRyxPQUFPLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFFN0MsTUFBTSxrQkFBa0IsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztBQUN2RCxNQUFNLGtCQUFrQixHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDO0FBRTNELE1BQU0sVUFBVSwyQkFBMkIsQ0FBQyxzQkFBaUQ7SUFDM0YsT0FBTyxNQUFNLGVBQWdCLFNBQVEsa0JBQWtCO2lCQUM5QyxhQUFRLEdBQUcsc0JBQXNCLENBQUMsUUFBUSxJQUFJLGtCQUFrQixDQUFDLFFBQVEsQUFBakUsQ0FBa0U7UUFLakYsTUFBTSxDQUFDLE1BQU07WUFDWCxPQUFPLGtCQUFrQixDQUFDLE1BQU0sQ0FBQztnQkFDL0IsR0FBRyxzQkFBc0IsQ0FBQyxNQUFNO2dCQUNoQyxJQUFJLEVBQUUsc0JBQXNCLENBQUMsSUFBSTthQUNsQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsYUFBYTtRQUNiLElBQUksYUFBYTtZQUNmLE9BQU8sZUFBZSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2xDLENBQUM7UUFFRCxhQUFhO1FBQ2IsSUFBSSxVQUFVO1lBQ1osT0FBTyxzQkFBc0IsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDO1FBQ25ELENBQUM7UUFF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Z0JBQy9ELFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLEVBQUUsRUFBQyxLQUFLLEVBQUUsRUFBRSxFQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDeEYsQ0FBQztZQUVELE9BQU8sS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdCLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7QnVpbGRlckluZm8sIENvbXBvbmVudHMsIEV4dGVuZGVkQ29tcG9uZW50U2NoZW1hLCBVdGlscyBhcyBGb3JtaW9VdGlsc30gZnJvbSAnZm9ybWlvanMnO1xuaW1wb3J0IHtGb3JtaW9DdXN0b21Db21wb25lbnRJbmZvLCBGb3JtaW9DdXN0b21FbGVtZW50LCBGb3JtaW9FdmVudH0gZnJvbSAnLi9lbGVtZW50cy5jb21tb24nO1xuaW1wb3J0IHtjbG9uZSwgaXNBcnJheSwgaXNOaWx9IGZyb20gJ2xvZGFzaCc7XG5cbmNvbnN0IEJhc2VJbnB1dENvbXBvbmVudCA9IENvbXBvbmVudHMuY29tcG9uZW50cy5pbnB1dDtcbmNvbnN0IFRleHRmaWVsZENvbXBvbmVudCA9IENvbXBvbmVudHMuY29tcG9uZW50cy50ZXh0ZmllbGQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDdXN0b21Gb3JtaW9Db21wb25lbnQoY3VzdG9tQ29tcG9uZW50T3B0aW9uczogRm9ybWlvQ3VzdG9tQ29tcG9uZW50SW5mbykge1xuICByZXR1cm4gY2xhc3MgQ3VzdG9tQ29tcG9uZW50IGV4dGVuZHMgQmFzZUlucHV0Q29tcG9uZW50IHtcbiAgICBzdGF0aWMgZWRpdEZvcm0gPSBjdXN0b21Db21wb25lbnRPcHRpb25zLmVkaXRGb3JtIHx8IFRleHRmaWVsZENvbXBvbmVudC5lZGl0Rm9ybTtcbiAgICBpZCA9IEZvcm1pb1V0aWxzLmdldFJhbmRvbUNvbXBvbmVudElkKCk7XG4gICAgdHlwZSA9IGN1c3RvbUNvbXBvbmVudE9wdGlvbnMudHlwZTtcbiAgICBfY3VzdG9tQW5ndWxhckVsZW1lbnQ6IEZvcm1pb0N1c3RvbUVsZW1lbnQ7XG5cbiAgICBzdGF0aWMgc2NoZW1hKCkge1xuICAgICAgcmV0dXJuIEJhc2VJbnB1dENvbXBvbmVudC5zY2hlbWEoe1xuICAgICAgICAuLi5jdXN0b21Db21wb25lbnRPcHRpb25zLnNjaGVtYSxcbiAgICAgICAgdHlwZTogY3VzdG9tQ29tcG9uZW50T3B0aW9ucy50eXBlLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGdldCBkZWZhdWx0U2NoZW1hKCkge1xuICAgICAgcmV0dXJuIEN1c3RvbUNvbXBvbmVudC5zY2hlbWEoKTtcbiAgICB9XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgZ2V0IGVtcHR5VmFsdWUoKSB7XG4gICAgICByZXR1cm4gY3VzdG9tQ29tcG9uZW50T3B0aW9ucy5lbXB0eVZhbHVlIHx8IG51bGw7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldCBidWlsZGVySW5mbygpOiBCdWlsZGVySW5mbyB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0aXRsZTogY3VzdG9tQ29tcG9uZW50T3B0aW9ucy50aXRsZSxcbiAgICAgICAgZ3JvdXA6IGN1c3RvbUNvbXBvbmVudE9wdGlvbnMuZ3JvdXAsXG4gICAgICAgIGljb246IGN1c3RvbUNvbXBvbmVudE9wdGlvbnMuaWNvbixcbiAgICAgICAgd2VpZ2h0OiBjdXN0b21Db21wb25lbnRPcHRpb25zLndlaWdodCxcbiAgICAgICAgZG9jdW1lbnRhdGlvbjogY3VzdG9tQ29tcG9uZW50T3B0aW9ucy5kb2N1bWVudGF0aW9uLFxuICAgICAgICBzY2hlbWE6IEN1c3RvbUNvbXBvbmVudC5zY2hlbWEoKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICBwdWJsaWMgY29tcG9uZW50OiBFeHRlbmRlZENvbXBvbmVudFNjaGVtYSxcbiAgICAgIG9wdGlvbnM6IGFueSxcbiAgICAgIGRhdGE6IGFueVxuICAgICkge1xuICAgICAgc3VwZXIoXG4gICAgICAgIGNvbXBvbmVudCxcbiAgICAgICAge1xuICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgc2FuaXRpemVDb25maWc6IHtcbiAgICAgICAgICAgIGFkZFRhZ3M6IFtjdXN0b21Db21wb25lbnRPcHRpb25zLnNlbGVjdG9yXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBkYXRhXG4gICAgICApO1xuXG4gICAgICBpZiAoY3VzdG9tQ29tcG9uZW50T3B0aW9ucy5leHRyYVZhbGlkYXRvcnMpIHtcbiAgICAgICAgdGhpcy52YWxpZGF0b3JzID0gdGhpcy52YWxpZGF0b3JzLmNvbmNhdChjdXN0b21Db21wb25lbnRPcHRpb25zLmV4dHJhVmFsaWRhdG9ycyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZWxlbWVudEluZm8oKSB7XG4gICAgICBjb25zdCBpbmZvID0gc3VwZXIuZWxlbWVudEluZm8oKTtcbiAgICAgIGluZm8udHlwZSA9IGN1c3RvbUNvbXBvbmVudE9wdGlvbnMuc2VsZWN0b3I7XG4gICAgICBpbmZvLmNoYW5nZUV2ZW50ID0gY3VzdG9tQ29tcG9uZW50T3B0aW9ucy5jaGFuZ2VFdmVudCB8fCAndmFsdWVDaGFuZ2UnO1xuICAgICAgaW5mby5hdHRyID0ge1xuICAgICAgICAuLi5pbmZvLmF0dHIsXG4gICAgICAgIGNsYXNzOiBpbmZvLmF0dHIuY2xhc3MucmVwbGFjZSgnZm9ybS1jb250cm9sJywgJ2Zvcm0tY29udHJvbC1jdXN0b20tZmllbGQnKSwgLy8gcmVtb3ZlIHRoZSBmb3JtLWNvbnRyb2wgY2xhc3MgYXMgdGhlIGN1c3RvbSBhbmd1bGFyIGNvbXBvbmVudCBtYXkgbG9vayBkaWZmZXJlbnRcbiAgICAgIH07XG4gICAgICByZXR1cm4gaW5mbztcbiAgICB9XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgZ2V0IGlucHV0SW5mbygpIHtcbiAgICAgIGNvbnN0IGluZm8gPSB7XG4gICAgICAgIGlkOiB0aGlzLmtleSxcbiAgICAgICAgLi4udGhpcy5lbGVtZW50SW5mbygpLFxuICAgICAgfTtcbiAgICAgIHJldHVybiBpbmZvO1xuICAgIH1cblxuICAgIHJlbmRlckVsZW1lbnQodmFsdWU6IGFueSwgaW5kZXg6IG51bWJlcikge1xuICAgICAgY29uc3QgaW5mbyA9IHRoaXMuaW5wdXRJbmZvO1xuICAgICAgcmV0dXJuIHRoaXMucmVuZGVyVGVtcGxhdGUoY3VzdG9tQ29tcG9uZW50T3B0aW9ucy50ZW1wbGF0ZSB8fCAnaW5wdXQnLCB7XG4gICAgICAgIGlucHV0OiBpbmZvLFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgaW5kZXgsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBhdHRhY2goZWxlbWVudDogSFRNTEVsZW1lbnQpIHtcbiAgICAgIGxldCBzdXBlckF0dGFjaCA9IHN1cGVyLmF0dGFjaChlbGVtZW50KTtcblxuICAgICAgdGhpcy5fY3VzdG9tQW5ndWxhckVsZW1lbnQgPSBlbGVtZW50LnF1ZXJ5U2VsZWN0b3IoY3VzdG9tQ29tcG9uZW50T3B0aW9ucy5zZWxlY3Rvcik7XG5cbiAgICAgIC8vIEJpbmQgdGhlIGN1c3RvbSBvcHRpb25zIGFuZCB0aGUgdmFsaWRhdGlvbnMgdG8gdGhlIEFuZ3VsYXIgY29tcG9uZW50J3MgaW5wdXRzIChmbGF0dGVuZWQpXG4gICAgICBpZiAodGhpcy5fY3VzdG9tQW5ndWxhckVsZW1lbnQpIHtcbiAgICAgICAgLy8gVG8gbWFrZSBzdXJlIHdlIGhhdmUgd29ya2luZyBpbnB1dCBpbiBJRS4uLlxuICAgICAgICAvLyBJRSBkb2Vzbid0IHJlbmRlciBpdCBwcm9wZXJseSBpZiBpdCdzIG5vdCB2aXNpYmxlIG9uIHRoZSBzY3JlZW5cbiAgICAgICAgLy8gZHVlIHRvIHRoZSB3aG9sZSBzdHJ1Y3R1cmUgYXBwbGllZCB2aWEgaW5uZXJIVE1MIHRvIHRoZSBwYXJlbnRcbiAgICAgICAgLy8gc28gd2UgbmVlZCB0byB1c2UgYXBwZW5kQ2hpbGRcbiAgICAgICAgaWYgKCF0aGlzLl9jdXN0b21Bbmd1bGFyRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ25nLXZlcnNpb24nKSkge1xuICAgICAgICAgIHRoaXMuX2N1c3RvbUFuZ3VsYXJFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgncmVmJyk7XG5cbiAgICAgICAgICBjb25zdCBuZXdDdXN0b21FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgIGN1c3RvbUNvbXBvbmVudE9wdGlvbnMuc2VsZWN0b3JcbiAgICAgICAgICApIGFzIEZvcm1pb0N1c3RvbUVsZW1lbnQ7XG5cbiAgICAgICAgICBuZXdDdXN0b21FbGVtZW50LnNldEF0dHJpYnV0ZSgncmVmJywgJ2lucHV0Jyk7XG4gICAgICAgICAgT2JqZWN0LmtleXModGhpcy5pbnB1dEluZm8uYXR0cikuZm9yRWFjaCgoYXR0cjogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBuZXdDdXN0b21FbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyLCB0aGlzLmlucHV0SW5mby5hdHRyW2F0dHJdKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHRoaXMuX2N1c3RvbUFuZ3VsYXJFbGVtZW50LmFwcGVuZENoaWxkKG5ld0N1c3RvbUVsZW1lbnQpO1xuICAgICAgICAgIHRoaXMuX2N1c3RvbUFuZ3VsYXJFbGVtZW50ID0gbmV3Q3VzdG9tRWxlbWVudDtcblxuICAgICAgICAgIHN1cGVyQXR0YWNoID0gc3VwZXIuYXR0YWNoKGVsZW1lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQmluZCBjdXN0b21PcHRpb25zXG4gICAgICAgIHRoaXMuYmluZEN1c3RvbU9wdGlvbnMoKTtcbiAgICAgICAgLy8gQmluZCB2YWxpZGF0ZSBvcHRpb25zXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuY29tcG9uZW50LnZhbGlkYXRlKSB7XG4gICAgICAgICAgaWYgKHRoaXMuY29tcG9uZW50LnZhbGlkYXRlLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgIHRoaXMuX2N1c3RvbUFuZ3VsYXJFbGVtZW50W2tleV0gPSB0aGlzLmNvbXBvbmVudC52YWxpZGF0ZVtrZXldO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBCaW5kIG9wdGlvbnMgZXhwbGljaXRseSBzZXRcbiAgICAgICAgY29uc3QgZmllbGRPcHRpb25zID0gY3VzdG9tQ29tcG9uZW50T3B0aW9ucy5maWVsZE9wdGlvbnM7XG4gICAgICAgIGlmIChpc0FycmF5KGZpZWxkT3B0aW9ucykgJiYgZmllbGRPcHRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBmaWVsZE9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChmaWVsZE9wdGlvbnMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgICB0aGlzLl9jdXN0b21Bbmd1bGFyRWxlbWVudFtmaWVsZE9wdGlvbnNba2V5XV0gPSB0aGlzLmNvbXBvbmVudFtmaWVsZE9wdGlvbnNba2V5XV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gQXR0YWNoIGV2ZW50IGxpc3RlbmVyIGZvciBlbWl0IGV2ZW50XG4gICAgICAgIHRoaXMuX2N1c3RvbUFuZ3VsYXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgJ2Zvcm1pb0V2ZW50JyxcbiAgICAgICAgICAoZXZlbnQ6IEN1c3RvbUV2ZW50PEZvcm1pb0V2ZW50PikgPT4ge1xuICAgICAgICAgICAgdGhpcy5lbWl0KGV2ZW50LmRldGFpbC5ldmVudE5hbWUsIHtcbiAgICAgICAgICAgICAgLi4uZXZlbnQuZGV0YWlsLmRhdGEsXG4gICAgICAgICAgICAgIGNvbXBvbmVudDogdGhpcy5jb21wb25lbnQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gRW5zdXJlIHdlIGJpbmQgdGhlIHZhbHVlIChpZiBpdCBpc24ndCBhIG11bHRpcGxlLXZhbHVlIGNvbXBvbmVudCB3aXRoIG5vIHdyYXBwZXIpXG4gICAgICAgIGlmICghdGhpcy5fY3VzdG9tQW5ndWxhckVsZW1lbnQudmFsdWUgJiYgIXRoaXMuY29tcG9uZW50LmRpc2FibGVNdWx0aVZhbHVlV3JhcHBlcikge1xuICAgICAgICAgIHRoaXMucmVzdG9yZVZhbHVlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBzdXBlckF0dGFjaDtcbiAgICB9XG5cbiAgICAvLyBQdXNoIHRoZSAocG9zc2libHkgbXV0YXRlZCkgY3VzdG9tT3B0aW9ucyBvbnRvIHRoZSBBbmd1bGFyIGVsZW1lbnQuIEV4dHJhY3RlZCBmcm9tIGF0dGFjaCgpIHNvXG4gICAgLy8gaXQgY2FuIGFsc28gYmUgcmUtcnVuIGZyb20gc2V0VmFsdWUoKTogYSBjYWxjdWxhdGVWYWx1ZSBleHByZXNzaW9uIGNhbiBtdXRhdGVcbiAgICAvLyB0aGlzLmNvbXBvbmVudC5jdXN0b21PcHRpb25zIGFzIGEgc2lkZSBlZmZlY3QsIGJ1dCBhdHRhY2goKSAoYW5kIHRoZXJlZm9yZSB0aGUgb3JpZ2luYWwgaW5saW5lXG4gICAgLy8gYmluZGluZykgb25seSByZS1ydW5zIG9uIGEgcmVkcmF3LCB3aGljaCBpcyBub3QgZ3VhcmFudGVlZCB0byBmaXJlIGFmdGVyIHRoZSBjYWxjdWxhdGlvbi5cbiAgICAvLyBCaW5kaW5nIGlzIGlkZW1wb3RlbnQsIHNvIHJlLXJ1bm5pbmcgaXQgaXMgaGFybWxlc3MuXG4gICAgYmluZEN1c3RvbU9wdGlvbnMoKTogdm9pZCB7XG4gICAgICBpZiAoIXRoaXMuX2N1c3RvbUFuZ3VsYXJFbGVtZW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuY29tcG9uZW50LmN1c3RvbU9wdGlvbnMpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLmNvbXBvbmVudC5jdXN0b21PcHRpb25zLCBrZXkpICYmXG4gICAgICAgICAga2V5ICE9PSAnX19wcm90b19fJyAmJlxuICAgICAgICAgIGtleSAhPT0gJ2NvbnN0cnVjdG9yJyAmJlxuICAgICAgICAgIGtleSAhPT0gJ3Byb3RvdHlwZSdcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5fY3VzdG9tQW5ndWxhckVsZW1lbnRba2V5XSA9IHRoaXMuY29tcG9uZW50LmN1c3RvbU9wdGlvbnNba2V5XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBzZXRWYWx1ZSh2YWx1ZTogYW55LCBmbGFnczogYW55ID0ge30pIHtcbiAgICAgIGNvbnN0IGNoYW5nZWQgPSBzdXBlci5zZXRWYWx1ZSh2YWx1ZSwgZmxhZ3MpO1xuICAgICAgLy8gRm9ybUlPIGNhbGxzIHNldFZhbHVlKCkgaW1tZWRpYXRlbHkgYWZ0ZXIgZXZhbHVhdGluZyBjYWxjdWxhdGVWYWx1ZSwgc28gcmUtYXBwbHlpbmcgdGhlXG4gICAgICAvLyBjdXN0b21PcHRpb25zIGhlcmUgcmVhY2hlcyB0aGUgQW5ndWxhciBlbGVtZW50IHJpZ2h0IGF3YXksIGluZGVwZW5kZW50IG9mIHJlZHJhdyB0aW1pbmcuXG4gICAgICB0aGlzLmJpbmRDdXN0b21PcHRpb25zKCk7XG4gICAgICByZXR1cm4gY2hhbmdlZDtcbiAgICB9XG5cbiAgICAvLyBBZGQgZXh0cmEgb3B0aW9uIHRvIHN1cHBvcnQgbXVsdGlwbGUgdmFsdWUgKGUuZy4gZGF0YWdyaWQpIHdpdGggc2luZ2xlIGFuZ3VsYXIgY29tcG9uZW50IChkaXNhYmxlTXVsdGlWYWx1ZVdyYXBwZXIpXG4gICAgdXNlV3JhcHBlcigpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIHRoaXMuY29tcG9uZW50Lmhhc093blByb3BlcnR5KCdtdWx0aXBsZScpICYmXG4gICAgICAgIHRoaXMuY29tcG9uZW50Lm11bHRpcGxlICYmXG4gICAgICAgICF0aGlzLmNvbXBvbmVudC5kaXNhYmxlTXVsdGlWYWx1ZVdyYXBwZXJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGdldCBkZWZhdWx0VmFsdWUoKSB7XG4gICAgICBsZXQgZGVmYXVsdFZhbHVlID0gdGhpcy5lbXB0eVZhbHVlO1xuXG4gICAgICAvLyBoYW5kbGUgZmFsc3kgZGVmYXVsdCB2YWx1ZVxuICAgICAgaWYgKCFpc05pbCh0aGlzLmNvbXBvbmVudC5kZWZhdWx0VmFsdWUpKSB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IHRoaXMuY29tcG9uZW50LmRlZmF1bHRWYWx1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuY29tcG9uZW50LmN1c3RvbURlZmF1bHRWYWx1ZSAmJiAhdGhpcy5vcHRpb25zLnByZXZpZXcpIHtcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gdGhpcy5ldmFsdWF0ZSh0aGlzLmNvbXBvbmVudC5jdXN0b21EZWZhdWx0VmFsdWUsIHt2YWx1ZTogJyd9LCAndmFsdWUnKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNsb25lKGRlZmF1bHRWYWx1ZSk7XG4gICAgfVxuICB9O1xufVxuIl19
|
|
210
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWN1c3RvbS1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9tb2R1bGVzL2N1c3RvbS1mb3JtaW8tY29tcG9uZW50L2NyZWF0ZS1jdXN0b20tY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFjLFVBQVUsRUFBMkIsS0FBSyxJQUFJLFdBQVcsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUVoRyxPQUFPLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFFN0MsTUFBTSxrQkFBa0IsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztBQUN2RCxNQUFNLGtCQUFrQixHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDO0FBRTNELE1BQU0sVUFBVSwyQkFBMkIsQ0FBQyxzQkFBaUQ7SUFDM0YsT0FBTyxNQUFNLGVBQWdCLFNBQVEsa0JBQWtCO2lCQUM5QyxhQUFRLEdBQUcsc0JBQXNCLENBQUMsUUFBUSxJQUFJLGtCQUFrQixDQUFDLFFBQVEsQUFBakUsQ0FBa0U7UUFLakYsTUFBTSxDQUFDLE1BQU07WUFDWCxPQUFPLGtCQUFrQixDQUFDLE1BQU0sQ0FBQztnQkFDL0IsR0FBRyxzQkFBc0IsQ0FBQyxNQUFNO2dCQUNoQyxJQUFJLEVBQUUsc0JBQXNCLENBQUMsSUFBSTthQUNsQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsYUFBYTtRQUNiLElBQUksYUFBYTtZQUNmLE9BQU8sZUFBZSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2xDLENBQUM7UUFFRCxhQUFhO1FBQ2IsSUFBSSxVQUFVO1lBQ1osT0FBTyxzQkFBc0IsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDO1FBQ25ELENBQUM7UUFF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SSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixFQUFFLEVBQUMsS0FBSyxFQUFFLEVBQUUsRUFBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3hGLENBQUM7WUFFRCxPQUFPLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM3QixDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0J1aWxkZXJJbmZvLCBDb21wb25lbnRzLCBFeHRlbmRlZENvbXBvbmVudFNjaGVtYSwgVXRpbHMgYXMgRm9ybWlvVXRpbHN9IGZyb20gJ2Zvcm1pb2pzJztcbmltcG9ydCB7Rm9ybWlvQ3VzdG9tQ29tcG9uZW50SW5mbywgRm9ybWlvQ3VzdG9tRWxlbWVudCwgRm9ybWlvRXZlbnR9IGZyb20gJy4vZWxlbWVudHMuY29tbW9uJztcbmltcG9ydCB7Y2xvbmUsIGlzQXJyYXksIGlzTmlsfSBmcm9tICdsb2Rhc2gnO1xuXG5jb25zdCBCYXNlSW5wdXRDb21wb25lbnQgPSBDb21wb25lbnRzLmNvbXBvbmVudHMuaW5wdXQ7XG5jb25zdCBUZXh0ZmllbGRDb21wb25lbnQgPSBDb21wb25lbnRzLmNvbXBvbmVudHMudGV4dGZpZWxkO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ3VzdG9tRm9ybWlvQ29tcG9uZW50KGN1c3RvbUNvbXBvbmVudE9wdGlvbnM6IEZvcm1pb0N1c3RvbUNvbXBvbmVudEluZm8pIHtcbiAgcmV0dXJuIGNsYXNzIEN1c3RvbUNvbXBvbmVudCBleHRlbmRzIEJhc2VJbnB1dENvbXBvbmVudCB7XG4gICAgc3RhdGljIGVkaXRGb3JtID0gY3VzdG9tQ29tcG9uZW50T3B0aW9ucy5lZGl0Rm9ybSB8fCBUZXh0ZmllbGRDb21wb25lbnQuZWRpdEZvcm07XG4gICAgaWQgPSBGb3JtaW9VdGlscy5nZXRSYW5kb21Db21wb25lbnRJZCgpO1xuICAgIHR5cGUgPSBjdXN0b21Db21wb25lbnRPcHRpb25zLnR5cGU7XG4gICAgX2N1c3RvbUFuZ3VsYXJFbGVtZW50OiBGb3JtaW9DdXN0b21FbGVtZW50O1xuXG4gICAgc3RhdGljIHNjaGVtYSgpIHtcbiAgICAgIHJldHVybiBCYXNlSW5wdXRDb21wb25lbnQuc2NoZW1hKHtcbiAgICAgICAgLi4uY3VzdG9tQ29tcG9uZW50T3B0aW9ucy5zY2hlbWEsXG4gICAgICAgIHR5cGU6IGN1c3RvbUNvbXBvbmVudE9wdGlvbnMudHlwZSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBnZXQgZGVmYXVsdFNjaGVtYSgpIHtcbiAgICAgIHJldHVybiBDdXN0b21Db21wb25lbnQuc2NoZW1hKCk7XG4gICAgfVxuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGdldCBlbXB0eVZhbHVlKCkge1xuICAgICAgcmV0dXJuIGN1c3RvbUNvbXBvbmVudE9wdGlvbnMuZW1wdHlWYWx1ZSB8fCBudWxsO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXQgYnVpbGRlckluZm8oKTogQnVpbGRlckluZm8ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdGl0bGU6IGN1c3RvbUNvbXBvbmVudE9wdGlvbnMudGl0bGUsXG4gICAgICAgIGdyb3VwOiBjdXN0b21Db21wb25lbnRPcHRpb25zLmdyb3VwLFxuICAgICAgICBpY29uOiBjdXN0b21Db21wb25lbnRPcHRpb25zLmljb24sXG4gICAgICAgIHdlaWdodDogY3VzdG9tQ29tcG9uZW50T3B0aW9ucy53ZWlnaHQsXG4gICAgICAgIGRvY3VtZW50YXRpb246IGN1c3RvbUNvbXBvbmVudE9wdGlvbnMuZG9jdW1lbnRhdGlvbixcbiAgICAgICAgc2NoZW1hOiBDdXN0b21Db21wb25lbnQuc2NoZW1hKCksXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgcHVibGljIGNvbXBvbmVudDogRXh0ZW5kZWRDb21wb25lbnRTY2hlbWEsXG4gICAgICBvcHRpb25zOiBhbnksXG4gICAgICBkYXRhOiBhbnlcbiAgICApIHtcbiAgICAgIHN1cGVyKFxuICAgICAgICBjb21wb25lbnQsXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgIHNhbml0aXplQ29uZmlnOiB7XG4gICAgICAgICAgICBhZGRUYWdzOiBbY3VzdG9tQ29tcG9uZW50T3B0aW9ucy5zZWxlY3Rvcl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgZGF0YVxuICAgICAgKTtcblxuICAgICAgaWYgKGN1c3RvbUNvbXBvbmVudE9wdGlvbnMuZXh0cmFWYWxpZGF0b3JzKSB7XG4gICAgICAgIHRoaXMudmFsaWRhdG9ycyA9IHRoaXMudmFsaWRhdG9ycy5jb25jYXQoY3VzdG9tQ29tcG9uZW50T3B0aW9ucy5leHRyYVZhbGlkYXRvcnMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGVsZW1lbnRJbmZvKCkge1xuICAgICAgY29uc3QgaW5mbyA9IHN1cGVyLmVsZW1lbnRJbmZvKCk7XG4gICAgICBpbmZvLnR5cGUgPSBjdXN0b21Db21wb25lbnRPcHRpb25zLnNlbGVjdG9yO1xuICAgICAgaW5mby5jaGFuZ2VFdmVudCA9IGN1c3RvbUNvbXBvbmVudE9wdGlvbnMuY2hhbmdlRXZlbnQgfHwgJ3ZhbHVlQ2hhbmdlJztcbiAgICAgIGluZm8uYXR0ciA9IHtcbiAgICAgICAgLi4uaW5mby5hdHRyLFxuICAgICAgICBjbGFzczogaW5mby5hdHRyLmNsYXNzLnJlcGxhY2UoJ2Zvcm0tY29udHJvbCcsICdmb3JtLWNvbnRyb2wtY3VzdG9tLWZpZWxkJyksIC8vIHJlbW92ZSB0aGUgZm9ybS1jb250cm9sIGNsYXNzIGFzIHRoZSBjdXN0b20gYW5ndWxhciBjb21wb25lbnQgbWF5IGxvb2sgZGlmZmVyZW50XG4gICAgICB9O1xuICAgICAgcmV0dXJuIGluZm87XG4gICAgfVxuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGdldCBpbnB1dEluZm8oKSB7XG4gICAgICBjb25zdCBpbmZvID0ge1xuICAgICAgICBpZDogdGhpcy5rZXksXG4gICAgICAgIC4uLnRoaXMuZWxlbWVudEluZm8oKSxcbiAgICAgIH07XG4gICAgICByZXR1cm4gaW5mbztcbiAgICB9XG5cbiAgICByZW5kZXJFbGVtZW50KHZhbHVlOiBhbnksIGluZGV4OiBudW1iZXIpIHtcbiAgICAgIGNvbnN0IGluZm8gPSB0aGlzLmlucHV0SW5mbztcbiAgICAgIHJldHVybiB0aGlzLnJlbmRlclRlbXBsYXRlKGN1c3RvbUNvbXBvbmVudE9wdGlvbnMudGVtcGxhdGUgfHwgJ2lucHV0Jywge1xuICAgICAgICBpbnB1dDogaW5mbyxcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIGluZGV4LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgYXR0YWNoKGVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG4gICAgICBsZXQgc3VwZXJBdHRhY2ggPSBzdXBlci5hdHRhY2goZWxlbWVudCk7XG5cbiAgICAgIHRoaXMuX2N1c3RvbUFuZ3VsYXJFbGVtZW50ID0gZWxlbWVudC5xdWVyeVNlbGVjdG9yKGN1c3RvbUNvbXBvbmVudE9wdGlvbnMuc2VsZWN0b3IpO1xuXG4gICAgICAvLyBCaW5kIHRoZSBjdXN0b20gb3B0aW9ucyBhbmQgdGhlIHZhbGlkYXRpb25zIHRvIHRoZSBBbmd1bGFyIGNvbXBvbmVudCdzIGlucHV0cyAoZmxhdHRlbmVkKVxuICAgICAgaWYgKHRoaXMuX2N1c3RvbUFuZ3VsYXJFbGVtZW50KSB7XG4gICAgICAgIC8vIFRvIG1ha2Ugc3VyZSB3ZSBoYXZlIHdvcmtpbmcgaW5wdXQgaW4gSUUuLi5cbiAgICAgICAgLy8gSUUgZG9lc24ndCByZW5kZXIgaXQgcHJvcGVybHkgaWYgaXQncyBub3QgdmlzaWJsZSBvbiB0aGUgc2NyZWVuXG4gICAgICAgIC8vIGR1ZSB0byB0aGUgd2hvbGUgc3RydWN0dXJlIGFwcGxpZWQgdmlhIGlubmVySFRNTCB0byB0aGUgcGFyZW50XG4gICAgICAgIC8vIHNvIHdlIG5lZWQgdG8gdXNlIGFwcGVuZENoaWxkXG4gICAgICAgIGlmICghdGhpcy5fY3VzdG9tQW5ndWxhckVsZW1lbnQuZ2V0QXR0cmlidXRlKCduZy12ZXJzaW9uJykpIHtcbiAgICAgICAgICB0aGlzLl9jdXN0b21Bbmd1bGFyRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ3JlZicpO1xuXG4gICAgICAgICAgY29uc3QgbmV3Q3VzdG9tRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICBjdXN0b21Db21wb25lbnRPcHRpb25zLnNlbGVjdG9yXG4gICAgICAgICAgKSBhcyBGb3JtaW9DdXN0b21FbGVtZW50O1xuXG4gICAgICAgICAgbmV3Q3VzdG9tRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3JlZicsICdpbnB1dCcpO1xuICAgICAgICAgIE9iamVjdC5rZXlzKHRoaXMuaW5wdXRJbmZvLmF0dHIpLmZvckVhY2goKGF0dHI6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgbmV3Q3VzdG9tRWxlbWVudC5zZXRBdHRyaWJ1dGUoYXR0ciwgdGhpcy5pbnB1dEluZm8uYXR0clthdHRyXSk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICB0aGlzLl9jdXN0b21Bbmd1bGFyRWxlbWVudC5hcHBlbmRDaGlsZChuZXdDdXN0b21FbGVtZW50KTtcbiAgICAgICAgICB0aGlzLl9jdXN0b21Bbmd1bGFyRWxlbWVudCA9IG5ld0N1c3RvbUVsZW1lbnQ7XG5cbiAgICAgICAgICBzdXBlckF0dGFjaCA9IHN1cGVyLmF0dGFjaChlbGVtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEJpbmQgY3VzdG9tT3B0aW9uc1xuICAgICAgICB0aGlzLmJpbmRDdXN0b21PcHRpb25zKCk7XG4gICAgICAgIC8vIEJpbmQgdmFsaWRhdGUgb3B0aW9uc1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmNvbXBvbmVudC52YWxpZGF0ZSkge1xuICAgICAgICAgIGlmICh0aGlzLmNvbXBvbmVudC52YWxpZGF0ZS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICB0aGlzLl9jdXN0b21Bbmd1bGFyRWxlbWVudFtrZXldID0gdGhpcy5jb21wb25lbnQudmFsaWRhdGVba2V5XTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gQmluZCBvcHRpb25zIGV4cGxpY2l0bHkgc2V0XG4gICAgICAgIGNvbnN0IGZpZWxkT3B0aW9ucyA9IGN1c3RvbUNvbXBvbmVudE9wdGlvbnMuZmllbGRPcHRpb25zO1xuICAgICAgICBpZiAoaXNBcnJheShmaWVsZE9wdGlvbnMpICYmIGZpZWxkT3B0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gZmllbGRPcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAoZmllbGRPcHRpb25zLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgICAgdGhpcy5fY3VzdG9tQW5ndWxhckVsZW1lbnRbZmllbGRPcHRpb25zW2tleV1dID0gdGhpcy5jb21wb25lbnRbZmllbGRPcHRpb25zW2tleV1dO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEF0dGFjaCBldmVudCBsaXN0ZW5lciBmb3IgZW1pdCBldmVudFxuICAgICAgICB0aGlzLl9jdXN0b21Bbmd1bGFyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAgICdmb3JtaW9FdmVudCcsXG4gICAgICAgICAgKGV2ZW50OiBDdXN0b21FdmVudDxGb3JtaW9FdmVudD4pID0+IHtcbiAgICAgICAgICAgIHRoaXMuZW1pdChldmVudC5kZXRhaWwuZXZlbnROYW1lLCB7XG4gICAgICAgICAgICAgIC4uLmV2ZW50LmRldGFpbC5kYXRhLFxuICAgICAgICAgICAgICBjb21wb25lbnQ6IHRoaXMuY29tcG9uZW50LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIEVuc3VyZSB3ZSBiaW5kIHRoZSB2YWx1ZSAoaWYgaXQgaXNuJ3QgYSBtdWx0aXBsZS12YWx1ZSBjb21wb25lbnQgd2l0aCBubyB3cmFwcGVyKVxuICAgICAgICBpZiAoIXRoaXMuX2N1c3RvbUFuZ3VsYXJFbGVtZW50LnZhbHVlICYmICF0aGlzLmNvbXBvbmVudC5kaXNhYmxlTXVsdGlWYWx1ZVdyYXBwZXIpIHtcbiAgICAgICAgICB0aGlzLnJlc3RvcmVWYWx1ZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gc3VwZXJBdHRhY2g7XG4gICAgfVxuXG4gICAgLy8gUHVzaCB0aGUgKHBvc3NpYmx5IG11dGF0ZWQpIGN1c3RvbU9wdGlvbnMgb250byB0aGUgQW5ndWxhciBlbGVtZW50LiBFeHRyYWN0ZWQgZnJvbSBhdHRhY2goKSBzb1xuICAgIC8vIGl0IGNhbiBhbHNvIGJlIHJlLXJ1biBmcm9tIHNldFZhbHVlKCk6IGEgY2FsY3VsYXRlVmFsdWUgZXhwcmVzc2lvbiBjYW4gbXV0YXRlXG4gICAgLy8gdGhpcy5jb21wb25lbnQuY3VzdG9tT3B0aW9ucyBhcyBhIHNpZGUgZWZmZWN0LCBidXQgYXR0YWNoKCkgKGFuZCB0aGVyZWZvcmUgdGhlIG9yaWdpbmFsIGlubGluZVxuICAgIC8vIGJpbmRpbmcpIG9ubHkgcmUtcnVucyBvbiBhIHJlZHJhdywgd2hpY2ggaXMgbm90IGd1YXJhbnRlZWQgdG8gZmlyZSBhZnRlciB0aGUgY2FsY3VsYXRpb24uXG4gICAgLy8gQmluZGluZyBpcyBpZGVtcG90ZW50LCBzbyByZS1ydW5uaW5nIGl0IGlzIGhhcm1sZXNzLlxuICAgIGJpbmRDdXN0b21PcHRpb25zKCk6IHZvaWQge1xuICAgICAgaWYgKCF0aGlzLl9jdXN0b21Bbmd1bGFyRWxlbWVudCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmNvbXBvbmVudC5jdXN0b21PcHRpb25zKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5jb21wb25lbnQuY3VzdG9tT3B0aW9ucywga2V5KSAmJlxuICAgICAgICAgIGtleSAhPT0gJ19fcHJvdG9fXycgJiZcbiAgICAgICAgICBrZXkgIT09ICdjb25zdHJ1Y3RvcicgJiZcbiAgICAgICAgICBrZXkgIT09ICdwcm90b3R5cGUnXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuX2N1c3RvbUFuZ3VsYXJFbGVtZW50W2tleV0gPSB0aGlzLmNvbXBvbmVudC5jdXN0b21PcHRpb25zW2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgc2V0VmFsdWUodmFsdWU6IGFueSwgZmxhZ3M6IGFueSA9IHt9KSB7XG4gICAgICBjb25zdCBjaGFuZ2VkID0gc3VwZXIuc2V0VmFsdWUodmFsdWUsIGZsYWdzKTtcbiAgICAgIC8vIEZvcm1JTyBjYWxscyBzZXRWYWx1ZSgpIGltbWVkaWF0ZWx5IGFmdGVyIGV2YWx1YXRpbmcgY2FsY3VsYXRlVmFsdWUsIHNvIHJlLWFwcGx5aW5nIHRoZVxuICAgICAgLy8gY3VzdG9tT3B0aW9ucyBoZXJlIHJlYWNoZXMgdGhlIEFuZ3VsYXIgZWxlbWVudCByaWdodCBhd2F5LCBpbmRlcGVuZGVudCBvZiByZWRyYXcgdGltaW5nLlxuICAgICAgdGhpcy5iaW5kQ3VzdG9tT3B0aW9ucygpO1xuICAgICAgcmV0dXJuIGNoYW5nZWQ7XG4gICAgfVxuXG4gICAgLy8gTGV0cyBhIGN1c3RvbSBjb21wb25lbnQgcmVqZWN0IGEgdmFsdWUgdGhyb3VnaCBjdXN0b21WYWxpZGF0b3IsIGluc3RlYWQgb2YgaGF2aW5nIHRvIGVuY29kZVxuICAgIC8vIHRoZSBpbnZhbGlkaXR5IGludG8gdGhlIHZhbHVlIGl0c2VsZi5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY2hlY2tDb21wb25lbnRWYWxpZGl0eShkYXRhOiBhbnksIGRpcnR5OiBib29sZWFuLCByb3c6IGFueSwgb3B0aW9uczogYW55ID0ge30pIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHN1cGVyLmNoZWNrQ29tcG9uZW50VmFsaWRpdHkoZGF0YSwgZGlydHksIHJvdywgb3B0aW9ucyk7XG4gICAgICBjb25zdCBjdXN0b21WYWxpZGF0b3IgPSBjdXN0b21Db21wb25lbnRPcHRpb25zLmN1c3RvbVZhbGlkYXRvcjtcblxuICAgICAgaWYgKFxuICAgICAgICAhY3VzdG9tVmFsaWRhdG9yIHx8XG4gICAgICAgIHRoaXMuc2hvdWxkU2tpcFZhbGlkYXRpb24oZGF0YSwgZGlydHksIHJvdykgfHxcbiAgICAgICAgdGhpcy5pc0VtcHR5KHRoaXMuZGF0YVZhbHVlKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGFwcGx5Q3VzdG9tVmFsaWRhdG9yID0gKHZhbGlkOiBib29sZWFuKSA9PiB7XG4gICAgICAgIGlmICghdmFsaWQpIHJldHVybiBmYWxzZTtcblxuICAgICAgICBjb25zdCBtZXNzYWdlID0gY3VzdG9tVmFsaWRhdG9yKHRoaXMuZGF0YVZhbHVlKTtcbiAgICAgICAgaWYgKCFtZXNzYWdlKSByZXR1cm4gdHJ1ZTtcblxuICAgICAgICBpZiAoIW9wdGlvbnMuc2lsZW50Q2hlY2spIHRoaXMuc2V0Q3VzdG9tVmFsaWRpdHkobWVzc2FnZSwgZGlydHkpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gdHlwZW9mIHJlc3VsdD8udGhlbiA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICA/IFByb21pc2UucmVzb2x2ZShyZXN1bHQpLnRoZW4oYXBwbHlDdXN0b21WYWxpZGF0b3IpXG4gICAgICAgIDogYXBwbHlDdXN0b21WYWxpZGF0b3IocmVzdWx0KTtcbiAgICB9XG5cbiAgICAvLyBBZGQgZXh0cmEgb3B0aW9uIHRvIHN1cHBvcnQgbXVsdGlwbGUgdmFsdWUgKGUuZy4gZGF0YWdyaWQpIHdpdGggc2luZ2xlIGFuZ3VsYXIgY29tcG9uZW50IChkaXNhYmxlTXVsdGlWYWx1ZVdyYXBwZXIpXG4gICAgdXNlV3JhcHBlcigpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIHRoaXMuY29tcG9uZW50Lmhhc093blByb3BlcnR5KCdtdWx0aXBsZScpICYmXG4gICAgICAgIHRoaXMuY29tcG9uZW50Lm11bHRpcGxlICYmXG4gICAgICAgICF0aGlzLmNvbXBvbmVudC5kaXNhYmxlTXVsdGlWYWx1ZVdyYXBwZXJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGdldCBkZWZhdWx0VmFsdWUoKSB7XG4gICAgICBsZXQgZGVmYXVsdFZhbHVlID0gdGhpcy5lbXB0eVZhbHVlO1xuXG4gICAgICAvLyBoYW5kbGUgZmFsc3kgZGVmYXVsdCB2YWx1ZVxuICAgICAgaWYgKCFpc05pbCh0aGlzLmNvbXBvbmVudC5kZWZhdWx0VmFsdWUpKSB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IHRoaXMuY29tcG9uZW50LmRlZmF1bHRWYWx1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuY29tcG9uZW50LmN1c3RvbURlZmF1bHRWYWx1ZSAmJiAhdGhpcy5vcHRpb25zLnByZXZpZXcpIHtcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gdGhpcy5ldmFsdWF0ZSh0aGlzLmNvbXBvbmVudC5jdXN0b21EZWZhdWx0VmFsdWUsIHt2YWx1ZTogJyd9LCAndmFsdWUnKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNsb25lKGRlZmF1bHRWYWx1ZSk7XG4gICAgfVxuICB9O1xufVxuIl19
|
|
@@ -14,4 +14,4 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
export {};
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudHMuY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9jb21wb25lbnRzL3NyYy9saWIvbW9kdWxlcy9jdXN0b20tZm9ybWlvLWNvbXBvbmVudC9lbGVtZW50cy5jb21tb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0ciLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0J1aWxkZXJJbmZvLCBFeHRlbmRlZENvbXBvbmVudFNjaGVtYSwgVmFsaWRhdGVPcHRpb25zfSBmcm9tICdmb3JtaW9qcyc7XG5pbXBvcnQge0V2ZW50RW1pdHRlcn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05nRWxlbWVudCwgV2l0aFByb3BlcnRpZXN9IGZyb20gJ0Bhbmd1bGFyL2VsZW1lbnRzJztcblxuLy8gQ3VzdG9tIEFuZ3VsYXIgQ29tcG9uZW50c1xuZXhwb3J0IGludGVyZmFjZSBGb3JtaW9DdXN0b21Db21wb25lbnRJbmZvIGV4dGVuZHMgQnVpbGRlckluZm8ge1xuICB0eXBlOiBzdHJpbmc7XG4gIHNlbGVjdG9yOiBzdHJpbmc7XG4gIGVtcHR5VmFsdWU/OiBhbnk7XG4gIGV4dHJhVmFsaWRhdG9ycz86IChrZXlvZiBWYWxpZGF0ZU9wdGlvbnMpW107XG4gIGZpZWxkT3B0aW9ucz86IHN0cmluZ1tdO1xuICB0ZW1wbGF0ZT86IHN0cmluZztcbiAgY2hhbmdlRXZlbnQ/
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudHMuY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9jb21wb25lbnRzL3NyYy9saWIvbW9kdWxlcy9jdXN0b20tZm9ybWlvLWNvbXBvbmVudC9lbGVtZW50cy5jb21tb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0ciLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0J1aWxkZXJJbmZvLCBFeHRlbmRlZENvbXBvbmVudFNjaGVtYSwgVmFsaWRhdGVPcHRpb25zfSBmcm9tICdmb3JtaW9qcyc7XG5pbXBvcnQge0V2ZW50RW1pdHRlcn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05nRWxlbWVudCwgV2l0aFByb3BlcnRpZXN9IGZyb20gJ0Bhbmd1bGFyL2VsZW1lbnRzJztcblxuLy8gQ3VzdG9tIEFuZ3VsYXIgQ29tcG9uZW50c1xuZXhwb3J0IGludGVyZmFjZSBGb3JtaW9DdXN0b21Db21wb25lbnRJbmZvIGV4dGVuZHMgQnVpbGRlckluZm8ge1xuICB0eXBlOiBzdHJpbmc7XG4gIHNlbGVjdG9yOiBzdHJpbmc7XG4gIGVtcHR5VmFsdWU/OiBhbnk7XG4gIGV4dHJhVmFsaWRhdG9ycz86IChrZXlvZiBWYWxpZGF0ZU9wdGlvbnMpW107XG4gIGZpZWxkT3B0aW9ucz86IHN0cmluZ1tdO1xuICB0ZW1wbGF0ZT86IHN0cmluZztcbiAgY2hhbmdlRXZlbnQ/OiBzdHJpbmc7IC8vIERlZmF1bHQ6IHZhbHVlQ2hhbmdlXG4gIGVkaXRGb3JtPzogKCkgPT4ge2NvbXBvbmVudHM6IEV4dGVuZGVkQ29tcG9uZW50U2NoZW1hW119O1xuICBjdXN0b21WYWxpZGF0b3I/OiAodmFsdWU6IGFueSkgPT4gc3RyaW5nIHwgbnVsbDtcbn1cblxuZXhwb3J0IHR5cGUgRm9ybWlvQ3VzdG9tRWxlbWVudCA9IE5nRWxlbWVudCAmXG4gIFdpdGhQcm9wZXJ0aWVzPHt2YWx1ZTogYW55fSAmIEV4dGVuZGVkQ29tcG9uZW50U2NoZW1hPjtcblxuZXhwb3J0IGludGVyZmFjZSBGb3JtaW9FdmVudCB7XG4gIGV2ZW50TmFtZTogc3RyaW5nO1xuICBkYXRhPzoge1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb3JtaW9DdXN0b21Db21wb25lbnQ8VD4ge1xuICB2YWx1ZTogVDsgLy8gU2hvdWxkIGJlIGFuIEBJbnB1dFxuICB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPFQ+OyAvLyBTaG91bGQgYmUgYW4gQE91dHB1dFxuICBkaXNhYmxlZDogYm9vbGVhbjtcbiAgZm9ybWlvRXZlbnQ/OiBFdmVudEVtaXR0ZXI8Rm9ybWlvRXZlbnQ+OyAvLyBTaG91bGQgYmUgYW4gQE91dHB1dFxufVxuIl19
|
|
@@ -2426,6 +2426,32 @@ function createCustomFormioComponent(customComponentOptions) {
|
|
|
2426
2426
|
this.bindCustomOptions();
|
|
2427
2427
|
return changed;
|
|
2428
2428
|
}
|
|
2429
|
+
// Lets a custom component reject a value through customValidator, instead of having to encode
|
|
2430
|
+
// the invalidity into the value itself.
|
|
2431
|
+
// @ts-ignore
|
|
2432
|
+
checkComponentValidity(data, dirty, row, options = {}) {
|
|
2433
|
+
// @ts-ignore
|
|
2434
|
+
const result = super.checkComponentValidity(data, dirty, row, options);
|
|
2435
|
+
const customValidator = customComponentOptions.customValidator;
|
|
2436
|
+
if (!customValidator ||
|
|
2437
|
+
this.shouldSkipValidation(data, dirty, row) ||
|
|
2438
|
+
this.isEmpty(this.dataValue)) {
|
|
2439
|
+
return result;
|
|
2440
|
+
}
|
|
2441
|
+
const applyCustomValidator = (valid) => {
|
|
2442
|
+
if (!valid)
|
|
2443
|
+
return false;
|
|
2444
|
+
const message = customValidator(this.dataValue);
|
|
2445
|
+
if (!message)
|
|
2446
|
+
return true;
|
|
2447
|
+
if (!options.silentCheck)
|
|
2448
|
+
this.setCustomValidity(message, dirty);
|
|
2449
|
+
return false;
|
|
2450
|
+
};
|
|
2451
|
+
return typeof result?.then === 'function'
|
|
2452
|
+
? Promise.resolve(result).then(applyCustomValidator)
|
|
2453
|
+
: applyCustomValidator(result);
|
|
2454
|
+
}
|
|
2429
2455
|
// Add extra option to support multiple value (e.g. datagrid) with single angular component (disableMultiValueWrapper)
|
|
2430
2456
|
useWrapper() {
|
|
2431
2457
|
return (this.component.hasOwnProperty('multiple') &&
|
|
@@ -7523,11 +7549,11 @@ class TimelineComponent {
|
|
|
7523
7549
|
}) || []);
|
|
7524
7550
|
}
|
|
7525
7551
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TimelineComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7526
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TimelineComponent, selector: "valtimo-timeline", inputs: { items: "items", actions: "actions" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div id=\"no-results\" class=\"p-5\" *ngIf=\"items?.length === 0\"></div>\n\n<div class=\"pb-5\" *ngIf=\"items?.length > 0\">\n <ul class=\"timeline mb-0 py-5\">\n <li class=\"timeline-item status-done\" *ngFor=\"let item of items\">\n <div class=\"timeline-date\">\n <span>{{ item.date }}</span>\n\n <br />\n\n <span>{{ item.time }}</span>\n </div>\n\n <div\n class=\"timeline-content mt-1\"\n *ngIf=\"{supportedActions: getSupportedActions(item, actions)} as vars\"\n >\n <div class=\"timeline-header p-0\">\n <span class=\"timeline-author\">{{ item.user }}</span>\n\n <div class=\"dropdown actions-dropdown\" *ngIf=\"vars.supportedActions?.length > 0\">\n <a\n class=\"dropdown-toggle d-block\"\n id=\"dropdownMenu\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n <i class=\"action-icon icon mdi mdi-dots-vertical\"></i>\n </a>\n\n <div class=\"dropdown-menu\" aria-labelledby=\"dropdownMenu\">\n <a\n *ngFor=\"let action of vars.supportedActions\"\n (click)=\"action.callback(item, $event)\"\n class=\"dropdown-item p-2\"\n >\n <ng-container *ngIf=\"action.icon !== null\">\n <i class=\"icon mdi\" [ngClass]=\"action.icon\"></i>\n </ng-container>\n\n {{ action?.label || '-' }}\n </a>\n </div>\n </div>\n\n <br />\n\n <p class=\"timeline-activity\">{{ item.activity }}</p>\n\n <div class=\"timeline-summary\">\n <p>\n {{ item.summaryTranslationKey | translate: item.summaryTranslationParams }}\n </p>\n </div>\n </div>\n </div>\n </li>\n </ul>\n</div>\n", styles: [".timeline-activity{font-size:100%}.timeline-summary p{font-size:.8rem;white-space:pre-line}.actions-dropdown{position:absolute;top:12px;right:12px;cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] }); }
|
|
7552
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TimelineComponent, selector: "valtimo-timeline", inputs: { items: "items", actions: "actions" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div id=\"no-results\" class=\"p-5\" *ngIf=\"items?.length === 0\"></div>\n\n<div class=\"pb-5\" *ngIf=\"items?.length > 0\">\n <ul class=\"timeline mb-0 py-5\">\n <li class=\"timeline-item status-done\" *ngFor=\"let item of items\">\n <div class=\"timeline-date\">\n <span>{{ item.date }}</span>\n\n <br />\n\n <span>{{ item.time }}</span>\n </div>\n\n <div\n class=\"timeline-content mt-1\"\n *ngIf=\"{supportedActions: getSupportedActions(item, actions)} as vars\"\n >\n <div class=\"timeline-header p-0\">\n <span class=\"timeline-author\">{{ item.user }}</span>\n\n <div class=\"dropdown actions-dropdown\" *ngIf=\"vars.supportedActions?.length > 0\">\n <a\n class=\"dropdown-toggle d-block\"\n id=\"dropdownMenu\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n <i class=\"action-icon icon mdi mdi-dots-vertical\"></i>\n </a>\n\n <div class=\"dropdown-menu\" aria-labelledby=\"dropdownMenu\">\n <a\n *ngFor=\"let action of vars.supportedActions\"\n (click)=\"action.callback(item, $event)\"\n class=\"dropdown-item p-2\"\n >\n <ng-container *ngIf=\"action.icon !== null\">\n <i class=\"icon mdi\" [ngClass]=\"action.icon\"></i>\n </ng-container>\n\n {{ (action?.label | translate) || '-' }}\n </a>\n </div>\n </div>\n\n <br />\n\n <p class=\"timeline-activity\">{{ item.activity }}</p>\n\n <div class=\"timeline-summary\">\n <p>\n {{ item.summaryTranslationKey | translate: item.summaryTranslationParams }}\n </p>\n </div>\n </div>\n </div>\n </li>\n </ul>\n</div>\n", styles: [".timeline-activity{font-size:100%}.timeline-summary p{font-size:.8rem;white-space:pre-line}.actions-dropdown{position:absolute;top:12px;right:12px;cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] }); }
|
|
7527
7553
|
}
|
|
7528
7554
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TimelineComponent, decorators: [{
|
|
7529
7555
|
type: Component,
|
|
7530
|
-
args: [{ selector: 'valtimo-timeline', template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div id=\"no-results\" class=\"p-5\" *ngIf=\"items?.length === 0\"></div>\n\n<div class=\"pb-5\" *ngIf=\"items?.length > 0\">\n <ul class=\"timeline mb-0 py-5\">\n <li class=\"timeline-item status-done\" *ngFor=\"let item of items\">\n <div class=\"timeline-date\">\n <span>{{ item.date }}</span>\n\n <br />\n\n <span>{{ item.time }}</span>\n </div>\n\n <div\n class=\"timeline-content mt-1\"\n *ngIf=\"{supportedActions: getSupportedActions(item, actions)} as vars\"\n >\n <div class=\"timeline-header p-0\">\n <span class=\"timeline-author\">{{ item.user }}</span>\n\n <div class=\"dropdown actions-dropdown\" *ngIf=\"vars.supportedActions?.length > 0\">\n <a\n class=\"dropdown-toggle d-block\"\n id=\"dropdownMenu\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n <i class=\"action-icon icon mdi mdi-dots-vertical\"></i>\n </a>\n\n <div class=\"dropdown-menu\" aria-labelledby=\"dropdownMenu\">\n <a\n *ngFor=\"let action of vars.supportedActions\"\n (click)=\"action.callback(item, $event)\"\n class=\"dropdown-item p-2\"\n >\n <ng-container *ngIf=\"action.icon !== null\">\n <i class=\"icon mdi\" [ngClass]=\"action.icon\"></i>\n </ng-container>\n\n {{ action?.label || '-' }}\n </a>\n </div>\n </div>\n\n <br />\n\n <p class=\"timeline-activity\">{{ item.activity }}</p>\n\n <div class=\"timeline-summary\">\n <p>\n {{ item.summaryTranslationKey | translate: item.summaryTranslationParams }}\n </p>\n </div>\n </div>\n </div>\n </li>\n </ul>\n</div>\n", styles: [".timeline-activity{font-size:100%}.timeline-summary p{font-size:.8rem;white-space:pre-line}.actions-dropdown{position:absolute;top:12px;right:12px;cursor:pointer}\n"] }]
|
|
7556
|
+
args: [{ selector: 'valtimo-timeline', template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div id=\"no-results\" class=\"p-5\" *ngIf=\"items?.length === 0\"></div>\n\n<div class=\"pb-5\" *ngIf=\"items?.length > 0\">\n <ul class=\"timeline mb-0 py-5\">\n <li class=\"timeline-item status-done\" *ngFor=\"let item of items\">\n <div class=\"timeline-date\">\n <span>{{ item.date }}</span>\n\n <br />\n\n <span>{{ item.time }}</span>\n </div>\n\n <div\n class=\"timeline-content mt-1\"\n *ngIf=\"{supportedActions: getSupportedActions(item, actions)} as vars\"\n >\n <div class=\"timeline-header p-0\">\n <span class=\"timeline-author\">{{ item.user }}</span>\n\n <div class=\"dropdown actions-dropdown\" *ngIf=\"vars.supportedActions?.length > 0\">\n <a\n class=\"dropdown-toggle d-block\"\n id=\"dropdownMenu\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n <i class=\"action-icon icon mdi mdi-dots-vertical\"></i>\n </a>\n\n <div class=\"dropdown-menu\" aria-labelledby=\"dropdownMenu\">\n <a\n *ngFor=\"let action of vars.supportedActions\"\n (click)=\"action.callback(item, $event)\"\n class=\"dropdown-item p-2\"\n >\n <ng-container *ngIf=\"action.icon !== null\">\n <i class=\"icon mdi\" [ngClass]=\"action.icon\"></i>\n </ng-container>\n\n {{ (action?.label | translate) || '-' }}\n </a>\n </div>\n </div>\n\n <br />\n\n <p class=\"timeline-activity\">{{ item.activity }}</p>\n\n <div class=\"timeline-summary\">\n <p>\n {{ item.summaryTranslationKey | translate: item.summaryTranslationParams }}\n </p>\n </div>\n </div>\n </div>\n </li>\n </ul>\n</div>\n", styles: [".timeline-activity{font-size:100%}.timeline-summary p{font-size:.8rem;white-space:pre-line}.actions-dropdown{position:absolute;top:12px;right:12px;cursor:pointer}\n"] }]
|
|
7531
7557
|
}], propDecorators: { items: [{
|
|
7532
7558
|
type: Input
|
|
7533
7559
|
}], actions: [{
|
|
@@ -9196,29 +9222,33 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
9196
9222
|
}] } });
|
|
9197
9223
|
|
|
9198
9224
|
/**
|
|
9199
|
-
* Custom iban validator for angular forms.
|
|
9200
9225
|
* Checks if the iban is valid.
|
|
9201
9226
|
* First move the first four chracters from the beginngin to the end of the string.
|
|
9202
9227
|
* Change the letter to a numeric representation.
|
|
9203
9228
|
* Calculate the modulo in a parts, because javascript cannot accuratly calculate the modulus for large numbers.
|
|
9204
9229
|
*
|
|
9230
|
+
* @returns True if the iban is valid or the value is empty.
|
|
9231
|
+
*/
|
|
9232
|
+
function isValidIban(value) {
|
|
9233
|
+
const valueString = value == null ? '' : String(value);
|
|
9234
|
+
if (!valueString) {
|
|
9235
|
+
return true;
|
|
9236
|
+
}
|
|
9237
|
+
const rearranged = valueString.substring(4) + valueString.substring(0, 4);
|
|
9238
|
+
const numeric = Array.from(rearranged)
|
|
9239
|
+
.map(c => (isNaN(parseInt(c, 10)) ? (c.charCodeAt(0) - 55).toString() : c))
|
|
9240
|
+
.join('');
|
|
9241
|
+
return (Array.from(numeric)
|
|
9242
|
+
.map(c => parseInt(c, 10))
|
|
9243
|
+
.reduce((remainder, value) => (remainder * 10 + value) % 97, 0) === 1);
|
|
9244
|
+
}
|
|
9245
|
+
/**
|
|
9246
|
+
* Custom iban validator for angular forms.
|
|
9247
|
+
*
|
|
9205
9248
|
* @returns Null if the iban is valid or the value is an empty string, else return an object with isIbanValid property.
|
|
9206
9249
|
*/
|
|
9207
9250
|
function ibanValidator() {
|
|
9208
|
-
return (control) => {
|
|
9209
|
-
const valueString = String(control.value);
|
|
9210
|
-
if (valueString.match(/^$/)) {
|
|
9211
|
-
return null;
|
|
9212
|
-
}
|
|
9213
|
-
const rearranged = valueString.substring(4, valueString.length) + valueString.substring(0, 4);
|
|
9214
|
-
const numeric = Array.from(rearranged)
|
|
9215
|
-
.map(c => (isNaN(parseInt(c, 10)) ? (c.charCodeAt(0) - 55).toString() : c))
|
|
9216
|
-
.join('');
|
|
9217
|
-
const isValidIban = Array.from(numeric)
|
|
9218
|
-
.map(c => parseInt(c, 10))
|
|
9219
|
-
.reduce((remainder, value) => (remainder * 10 + value) % 97, 0);
|
|
9220
|
-
return isValidIban === 1 ? null : { isIbanValid: 'IBAN voldoet niet' };
|
|
9221
|
-
};
|
|
9251
|
+
return (control) => isValidIban(control.value) ? null : { isIbanValid: 'IBAN voldoet niet' };
|
|
9222
9252
|
}
|
|
9223
9253
|
|
|
9224
9254
|
/**
|
|
@@ -9239,6 +9269,9 @@ class FormIoIbanComponent {
|
|
|
9239
9269
|
this.ibanForm.controls.iban.setValue(this.value);
|
|
9240
9270
|
this.ibanForm.controls.iban.setValidators(this.required ? [Validators.required, ibanValidator()] : [ibanValidator()]);
|
|
9241
9271
|
this.ibanForm.controls.iban.updateValueAndValidity();
|
|
9272
|
+
if (this.value) {
|
|
9273
|
+
this.ibanForm.controls.iban.markAsTouched();
|
|
9274
|
+
}
|
|
9242
9275
|
if (this.disabled) {
|
|
9243
9276
|
Object.keys(this.ibanForm.controls).forEach(key => {
|
|
9244
9277
|
this.ibanForm?.get(key)?.disable();
|
|
@@ -9253,9 +9286,7 @@ class FormIoIbanComponent {
|
|
|
9253
9286
|
this._subscriptions.unsubscribe();
|
|
9254
9287
|
}
|
|
9255
9288
|
onValueChange() {
|
|
9256
|
-
this.value = this.ibanForm.
|
|
9257
|
-
? this.ibanForm.controls.iban.value
|
|
9258
|
-
: [this.ibanForm.value];
|
|
9289
|
+
this.value = this.ibanForm.controls.iban.value ?? '';
|
|
9259
9290
|
this.valueChange.emit(this.value);
|
|
9260
9291
|
}
|
|
9261
9292
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormIoIbanComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
@@ -10839,7 +10870,7 @@ const formIoUploaderEditForm = () => ({
|
|
|
10839
10870
|
* limitations under the License.
|
|
10840
10871
|
*/
|
|
10841
10872
|
const customUploaderType = 'valtimo-file';
|
|
10842
|
-
const COMPONENT_OPTIONS$
|
|
10873
|
+
const COMPONENT_OPTIONS$4 = {
|
|
10843
10874
|
type: customUploaderType,
|
|
10844
10875
|
selector: 'valtimo-form-io-uploader',
|
|
10845
10876
|
title: 'Valtimo File Upload',
|
|
@@ -10850,7 +10881,7 @@ const COMPONENT_OPTIONS$5 = {
|
|
|
10850
10881
|
editForm: formIoUploaderEditForm,
|
|
10851
10882
|
};
|
|
10852
10883
|
function registerFormioUploadComponent(injector) {
|
|
10853
|
-
const originalUploadComponent = createCustomFormioComponent(COMPONENT_OPTIONS$
|
|
10884
|
+
const originalUploadComponent = createCustomFormioComponent(COMPONENT_OPTIONS$4);
|
|
10854
10885
|
// override setValue function to allow for setting an array value
|
|
10855
10886
|
class UploaderComponent extends originalUploadComponent {
|
|
10856
10887
|
setValue(value) {
|
|
@@ -10864,8 +10895,8 @@ function registerFormioUploadComponent(injector) {
|
|
|
10864
10895
|
return true;
|
|
10865
10896
|
}
|
|
10866
10897
|
}
|
|
10867
|
-
if (!customElements.get(COMPONENT_OPTIONS$
|
|
10868
|
-
registerCustomFormioComponentWithClass(COMPONENT_OPTIONS$
|
|
10898
|
+
if (!customElements.get(COMPONENT_OPTIONS$4.selector)) {
|
|
10899
|
+
registerCustomFormioComponentWithClass(COMPONENT_OPTIONS$4, FormIoUploaderComponent, UploaderComponent, injector);
|
|
10869
10900
|
}
|
|
10870
10901
|
}
|
|
10871
10902
|
|
|
@@ -10948,7 +10979,7 @@ const formIoCurrentUserEditForm = () => ({
|
|
|
10948
10979
|
* See the License for the specific language governing permissions and
|
|
10949
10980
|
* limitations under the License.
|
|
10950
10981
|
*/
|
|
10951
|
-
const COMPONENT_OPTIONS$
|
|
10982
|
+
const COMPONENT_OPTIONS$3 = {
|
|
10952
10983
|
type: 'valtimo-current-user',
|
|
10953
10984
|
selector: 'valtimo-form-io-current-user',
|
|
10954
10985
|
title: 'Valtimo Current User',
|
|
@@ -10961,10 +10992,11 @@ const COMPONENT_OPTIONS$4 = {
|
|
|
10961
10992
|
},
|
|
10962
10993
|
};
|
|
10963
10994
|
function registerFormioCurrentUserComponent(injector) {
|
|
10964
|
-
registerCustomFormioComponent(COMPONENT_OPTIONS$
|
|
10995
|
+
registerCustomFormioComponent(COMPONENT_OPTIONS$3, FormIoCurrentUserComponent, injector);
|
|
10965
10996
|
}
|
|
10966
10997
|
|
|
10967
|
-
const
|
|
10998
|
+
const ERROR_MESSAGE_TRANSLATION_KEY = 'formioTranslations.formioIbanComponent.errorMessage';
|
|
10999
|
+
const getComponentOptions = (injector) => ({
|
|
10968
11000
|
type: 'iban',
|
|
10969
11001
|
selector: 'valtimo-iban',
|
|
10970
11002
|
title: 'Iban',
|
|
@@ -10979,9 +11011,12 @@ const COMPONENT_OPTIONS$3 = {
|
|
|
10979
11011
|
required: false,
|
|
10980
11012
|
},
|
|
10981
11013
|
},
|
|
10982
|
-
|
|
11014
|
+
customValidator: (value) => isValidIban(value)
|
|
11015
|
+
? null
|
|
11016
|
+
: injector.get(TranslateService).instant(ERROR_MESSAGE_TRANSLATION_KEY),
|
|
11017
|
+
});
|
|
10983
11018
|
function registerFormioIbanComponent(injector) {
|
|
10984
|
-
registerCustomFormioComponent(
|
|
11019
|
+
registerCustomFormioComponent(getComponentOptions(injector), FormIoIbanComponent, injector);
|
|
10985
11020
|
}
|
|
10986
11021
|
|
|
10987
11022
|
/*
|