@hmcts/ccd-case-ui-toolkit 7.0.14 → 7.0.15-ccd-field-error-handling
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/esm2020/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.mjs +40 -21
- package/esm2020/lib/shared/components/case-editor/services/page-validation.service.mjs +10 -5
- package/esm2020/lib/shared/components/palette/address/write-address-field.component.mjs +20 -57
- package/esm2020/lib/shared/components/palette/base-field/abstract-form-field.component.mjs +1 -5
- package/esm2020/lib/shared/components/palette/document/write-document-field.component.mjs +2 -2
- package/esm2020/lib/shared/domain/http/http-error.model.mjs +2 -8
- package/esm2020/lib/shared/services/addresses/addresses.service.mjs +1 -9
- package/fesm2015/hmcts-ccd-case-ui-toolkit.mjs +68 -114
- package/fesm2015/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
- package/fesm2020/hmcts-ccd-case-ui-toolkit.mjs +68 -108
- package/fesm2020/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
- package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts +4 -4
- package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts.map +1 -1
- package/lib/shared/components/case-editor/services/page-validation.service.d.ts +1 -1
- package/lib/shared/components/case-editor/services/page-validation.service.d.ts.map +1 -1
- package/lib/shared/components/palette/address/write-address-field.component.d.ts +0 -5
- package/lib/shared/components/palette/address/write-address-field.component.d.ts.map +1 -1
- package/lib/shared/components/palette/base-field/abstract-form-field.component.d.ts.map +1 -1
- package/lib/shared/domain/http/http-error.model.d.ts +0 -1
- package/lib/shared/domain/http/http-error.model.d.ts.map +1 -1
- package/lib/shared/services/addresses/addresses.service.d.ts +0 -3
- package/lib/shared/services/addresses/addresses.service.d.ts.map +1 -1
- package/package.json +1 -1
- package/esm2020/lib/shared/commons/address-validation-constants.mjs +0 -13
- package/lib/shared/commons/address-validation-constants.d.ts +0 -7
- package/lib/shared/commons/address-validation-constants.d.ts.map +0 -1
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
|
-
import { BehaviorSubject } from 'rxjs';
|
|
3
2
|
import { map } from 'rxjs/operators';
|
|
4
3
|
import { AbstractAppConfig } from '../../../app.config';
|
|
5
4
|
import { HttpService } from '../http';
|
|
@@ -12,7 +11,6 @@ export class AddressesService {
|
|
|
12
11
|
constructor(http, appConfig) {
|
|
13
12
|
this.http = http;
|
|
14
13
|
this.appConfig = appConfig;
|
|
15
|
-
this.mandatoryError = new BehaviorSubject(false);
|
|
16
14
|
}
|
|
17
15
|
getAddressesForPostcode(postcode) {
|
|
18
16
|
return this.http
|
|
@@ -21,12 +19,6 @@ export class AddressesService {
|
|
|
21
19
|
.pipe(map(res => res.results))
|
|
22
20
|
.pipe(map(output => output.map(addresses => this.format(new AddressParser().parse(addresses[AddressType.DPA])))));
|
|
23
21
|
}
|
|
24
|
-
getMandatoryError() {
|
|
25
|
-
return this.mandatoryError.asObservable();
|
|
26
|
-
}
|
|
27
|
-
setMandatoryError(value) {
|
|
28
|
-
this.mandatoryError.next(value);
|
|
29
|
-
}
|
|
30
22
|
format(addressModel) {
|
|
31
23
|
return this.formatAddressLines(this.shiftAddressLinesUp(addressModel));
|
|
32
24
|
}
|
|
@@ -60,4 +52,4 @@ AddressesService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: Address
|
|
|
60
52
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AddressesService, [{
|
|
61
53
|
type: Injectable
|
|
62
54
|
}], function () { return [{ type: i1.HttpService }, { type: i2.AbstractAppConfig }]; }, null); })();
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzc2VzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL3NlcnZpY2VzL2FkZHJlc3Nlcy9hZGRyZXNzZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV4RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFHbEQsTUFBTSxPQUFPLGdCQUFnQjtJQUUzQixZQUE2QixJQUFpQixFQUFtQixTQUE0QjtRQUFoRSxTQUFJLEdBQUosSUFBSSxDQUFhO1FBQW1CLGNBQVMsR0FBVCxTQUFTLENBQW1CO0lBQzdGLENBQUM7SUFFTSx1QkFBdUIsQ0FBQyxRQUFnQjtRQUM3QyxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsb0JBQW9CLEVBQUU7YUFDdkMsT0FBTyxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDO2FBQ3JELElBQUksQ0FDSCxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDekIsSUFBSSxDQUNILEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLGFBQWEsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FDbkUsQ0FBQyxDQUNILENBQUM7SUFDTixDQUFDO0lBRU8sTUFBTSxDQUFDLFlBQTBCO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxZQUEwQjtRQUNuRCxDQUFDLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMzRSxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNoRSxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxZQUEwQjtRQUNwRCxJQUFJLFlBQVksQ0FBQyxZQUFZLEtBQUssRUFBRSxFQUFFO1lBQ3BDLFlBQVksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDLFlBQVksQ0FBQztZQUN0RCxZQUFZLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztTQUNoQztRQUNELElBQUksWUFBWSxDQUFDLFlBQVksS0FBSyxFQUFFLEVBQUU7WUFDcEMsWUFBWSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUMsWUFBWSxDQUFDO1lBQ3RELFlBQVksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1NBQ2hDO1FBQ0QsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQUVPLGFBQWEsQ0FBQyxRQUFnQjtRQUNwQyxRQUFRLEdBQUcsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2xDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3pDLFFBQVEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0RixDQUFDLENBQ0YsQ0FBQztRQUNGLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7O2dGQWhEVSxnQkFBZ0I7c0VBQWhCLGdCQUFnQixXQUFoQixnQkFBZ0I7dUZBQWhCLGdCQUFnQjtjQUQ1QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQWJzdHJhY3RBcHBDb25maWcgfSBmcm9tICcuLi8uLi8uLi9hcHAuY29uZmlnJztcbmltcG9ydCB7IEFkZHJlc3NNb2RlbCB9IGZyb20gJy4uLy4uL2RvbWFpbi9hZGRyZXNzZXMnO1xuaW1wb3J0IHsgSHR0cFNlcnZpY2UgfSBmcm9tICcuLi9odHRwJztcbmltcG9ydCB7IEFkZHJlc3NQYXJzZXIgfSBmcm9tICcuL2FkZHJlc3MtcGFyc2VyJztcbmltcG9ydCB7IEFkZHJlc3NUeXBlIH0gZnJvbSAnLi9hZGRyZXNzLXR5cGUuZW51bSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBZGRyZXNzZXNTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGh0dHA6IEh0dHBTZXJ2aWNlLCBwcml2YXRlIHJlYWRvbmx5IGFwcENvbmZpZzogQWJzdHJhY3RBcHBDb25maWcpIHtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBZGRyZXNzZXNGb3JQb3N0Y29kZShwb3N0Y29kZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxBZGRyZXNzTW9kZWxbXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQodGhpcy5hcHBDb25maWcuZ2V0UG9zdGNvZGVMb29rdXBVcmwoKVxuICAgICAgICAucmVwbGFjZSgnJHtwb3N0Y29kZX0nLCBwb3N0Y29kZSksIHVuZGVmaW5lZCwgZmFsc2UpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKHJlcyA9PiByZXMucmVzdWx0cykpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKG91dHB1dCA9PiBvdXRwdXQubWFwKGFkZHJlc3NlcyA9PlxuICAgICAgICAgIHRoaXMuZm9ybWF0KG5ldyBBZGRyZXNzUGFyc2VyKCkucGFyc2UoYWRkcmVzc2VzW0FkZHJlc3NUeXBlLkRQQV0pKVxuICAgICAgICApKVxuICAgICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0KGFkZHJlc3NNb2RlbDogQWRkcmVzc01vZGVsKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybWF0QWRkcmVzc0xpbmVzKHRoaXMuc2hpZnRBZGRyZXNzTGluZXNVcChhZGRyZXNzTW9kZWwpKTtcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0QWRkcmVzc0xpbmVzKGFkZHJlc3NNb2RlbDogQWRkcmVzc01vZGVsKSB7XG4gICAgWydBZGRyZXNzTGluZTEnLCAnQWRkcmVzc0xpbmUyJywgJ0FkZHJlc3NMaW5lMycsICdQb3N0VG93biddLmZvckVhY2godmFsdWUgPT4ge1xuICAgICAgYWRkcmVzc01vZGVsW3ZhbHVlXSA9IHRoaXMudG9DYXBpdGFsQ2FzZShhZGRyZXNzTW9kZWxbdmFsdWVdKTtcbiAgICB9KTtcbiAgICByZXR1cm4gYWRkcmVzc01vZGVsO1xuICB9XG5cbiAgcHJpdmF0ZSBzaGlmdEFkZHJlc3NMaW5lc1VwKGFkZHJlc3NNb2RlbDogQWRkcmVzc01vZGVsKSB7XG4gICAgaWYgKGFkZHJlc3NNb2RlbC5BZGRyZXNzTGluZTIgPT09ICcnKSB7XG4gICAgICBhZGRyZXNzTW9kZWwuQWRkcmVzc0xpbmUyID0gYWRkcmVzc01vZGVsLkFkZHJlc3NMaW5lMztcbiAgICAgIGFkZHJlc3NNb2RlbC5BZGRyZXNzTGluZTMgPSAnJztcbiAgICB9XG4gICAgaWYgKGFkZHJlc3NNb2RlbC5BZGRyZXNzTGluZTEgPT09ICcnKSB7XG4gICAgICBhZGRyZXNzTW9kZWwuQWRkcmVzc0xpbmUxID0gYWRkcmVzc01vZGVsLkFkZHJlc3NMaW5lMjtcbiAgICAgIGFkZHJlc3NNb2RlbC5BZGRyZXNzTGluZTIgPSAnJztcbiAgICB9XG4gICAgcmV0dXJuIGFkZHJlc3NNb2RlbDtcbiAgfVxuXG4gIHByaXZhdGUgdG9DYXBpdGFsQ2FzZShzZW50ZW5jZTogc3RyaW5nKSB7XG4gICAgc2VudGVuY2UgPSBzZW50ZW5jZS50b0xvd2VyQ2FzZSgpO1xuICAgIHNlbnRlbmNlLnNwbGl0KCcgJykuZm9yRWFjaCgodmFsdWUsIGluZGV4KSA9PiB7XG4gICAgICAgIHNlbnRlbmNlID0gc2VudGVuY2UucmVwbGFjZSh2YWx1ZSwgdmFsdWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB2YWx1ZS5zdWJzdHIoMSkpO1xuICAgICAgfVxuICAgICk7XG4gICAgcmV0dXJuIHNlbnRlbmNlO1xuICB9XG59XG4iXX0=
|
|
@@ -8,7 +8,7 @@ import * as i1$1 from '@angular/router';
|
|
|
8
8
|
import { RouterModule, NavigationStart, NavigationEnd } from '@angular/router';
|
|
9
9
|
import * as i3 from '@angular/forms';
|
|
10
10
|
import { NG_VALUE_ACCESSOR, NG_VALIDATORS, FormArray, FormGroup, FormControl, Validators, ReactiveFormsModule, FormsModule } from '@angular/forms';
|
|
11
|
-
import { throwError, Subject, EMPTY,
|
|
11
|
+
import { throwError, Subject, EMPTY, Observable, of, BehaviorSubject, timer, fromEvent, forkJoin, Subscription, combineLatest } from 'rxjs';
|
|
12
12
|
import * as i1$2 from '@angular/common/http';
|
|
13
13
|
import { HttpErrorResponse, HttpHeaders, HttpParams } from '@angular/common/http';
|
|
14
14
|
import { catchError, map, switchMap, debounceTime, publish, refCount, delay, distinctUntilChanged, finalize, timeout, mergeMap, retryWhen, tap, delayWhen, publishReplay, take, first, takeUntil, filter } from 'rxjs/operators';
|
|
@@ -1333,14 +1333,9 @@ class HttpError {
|
|
|
1333
1333
|
}
|
|
1334
1334
|
static from(response) {
|
|
1335
1335
|
const error = new HttpError();
|
|
1336
|
-
if ((response === null || response === void 0 ? void 0 : response.status) === 429) {
|
|
1337
|
-
error.error = HttpError.MESSAGE_ERROR_429;
|
|
1338
|
-
error.status = response.status;
|
|
1339
|
-
error.message = response.message;
|
|
1340
|
-
}
|
|
1341
1336
|
// Check that the HttpErrorResponse contains an "error" object before mapping the error properties
|
|
1342
1337
|
if (!!(response && response.error)) {
|
|
1343
|
-
Object.keys(error).forEach(
|
|
1338
|
+
Object.keys(error).forEach(key => {
|
|
1344
1339
|
error[key] = response.error.hasOwnProperty(key) && response.error[key] ? response.error[key] : error[key];
|
|
1345
1340
|
});
|
|
1346
1341
|
}
|
|
@@ -1357,7 +1352,6 @@ class HttpError {
|
|
|
1357
1352
|
HttpError.DEFAULT_ERROR = 'Unknown error';
|
|
1358
1353
|
HttpError.DEFAULT_MESSAGE = 'Something unexpected happened, our technical staff have been automatically notified';
|
|
1359
1354
|
HttpError.DEFAULT_STATUS = 500;
|
|
1360
|
-
HttpError.MESSAGE_ERROR_429 = 'Your request was rate limited. Please wait a few seconds before retrying your document upload';
|
|
1361
1355
|
|
|
1362
1356
|
class AbstractAppConfig {
|
|
1363
1357
|
/**
|
|
@@ -4606,17 +4600,12 @@ class AbstractFormFieldComponent {
|
|
|
4606
4600
|
return this.idPrefix + this.caseField.id;
|
|
4607
4601
|
}
|
|
4608
4602
|
registerControl(control, replace = false) {
|
|
4609
|
-
var _a;
|
|
4610
4603
|
const container = this.parent || this.formGroup;
|
|
4611
4604
|
if (!container) {
|
|
4612
4605
|
return control;
|
|
4613
4606
|
}
|
|
4614
4607
|
const existing = container.controls[this.caseField.id];
|
|
4615
|
-
// update the field value which has been set in mid-event call back
|
|
4616
4608
|
if (existing) {
|
|
4617
|
-
if (existing.value === null && ((_a = this.caseField) === null || _a === void 0 ? void 0 : _a.value)) {
|
|
4618
|
-
existing.value = this.caseField.value;
|
|
4619
|
-
}
|
|
4620
4609
|
if (replace) {
|
|
4621
4610
|
// Set the validators on the replacement with what already exists.
|
|
4622
4611
|
control.setValidators(existing.validator);
|
|
@@ -6287,7 +6276,6 @@ class AddressesService {
|
|
|
6287
6276
|
constructor(http, appConfig) {
|
|
6288
6277
|
this.http = http;
|
|
6289
6278
|
this.appConfig = appConfig;
|
|
6290
|
-
this.mandatoryError = new BehaviorSubject(false);
|
|
6291
6279
|
}
|
|
6292
6280
|
getAddressesForPostcode(postcode) {
|
|
6293
6281
|
return this.http
|
|
@@ -6296,12 +6284,6 @@ class AddressesService {
|
|
|
6296
6284
|
.pipe(map(res => res.results))
|
|
6297
6285
|
.pipe(map(output => output.map(addresses => this.format(new AddressParser().parse(addresses[AddressType.DPA])))));
|
|
6298
6286
|
}
|
|
6299
|
-
getMandatoryError() {
|
|
6300
|
-
return this.mandatoryError.asObservable();
|
|
6301
|
-
}
|
|
6302
|
-
setMandatoryError(value) {
|
|
6303
|
-
this.mandatoryError.next(value);
|
|
6304
|
-
}
|
|
6305
6287
|
format(addressModel) {
|
|
6306
6288
|
return this.formatAddressLines(this.shiftAddressLinesUp(addressModel));
|
|
6307
6289
|
}
|
|
@@ -8687,16 +8669,21 @@ class PageValidationService {
|
|
|
8687
8669
|
constructor(caseFieldService) {
|
|
8688
8670
|
this.caseFieldService = caseFieldService;
|
|
8689
8671
|
}
|
|
8690
|
-
|
|
8691
|
-
|
|
8672
|
+
getInvalidFields(page, editForm) {
|
|
8673
|
+
const failingCaseFields = [];
|
|
8674
|
+
page.case_fields
|
|
8692
8675
|
.filter(caseField => !this.caseFieldService.isReadOnly(caseField))
|
|
8693
8676
|
.filter(caseField => !this.isHidden(caseField, editForm))
|
|
8694
|
-
.
|
|
8677
|
+
.map(caseField => {
|
|
8695
8678
|
const theControl = FieldsUtils.isCaseFieldOfType(caseField, ['JudicialUser'])
|
|
8696
8679
|
? editForm.controls['data'].get(`${caseField.id}_judicialUserControl`)
|
|
8697
8680
|
: editForm.controls['data'].get(caseField.id);
|
|
8698
|
-
|
|
8681
|
+
if (!(this.checkDocumentField(caseField, theControl) && this.checkOptionalField(caseField, theControl))) {
|
|
8682
|
+
failingCaseFields.push(caseField);
|
|
8683
|
+
}
|
|
8684
|
+
;
|
|
8699
8685
|
});
|
|
8686
|
+
return failingCaseFields;
|
|
8700
8687
|
}
|
|
8701
8688
|
isHidden(caseField, editForm, path) {
|
|
8702
8689
|
const formFields = editForm.getRawValue();
|
|
@@ -10024,7 +10011,7 @@ function CaseEditPageComponent_ccd_case_event_completion_11_Template(rf, ctx) {
|
|
|
10024
10011
|
}
|
|
10025
10012
|
}
|
|
10026
10013
|
class CaseEditPageComponent {
|
|
10027
|
-
constructor(caseEdit, route, formValueService, formErrorService, cdRef, pageValidationService, dialog, caseFieldService, caseEditDataService, loadingService, validPageListCaseFieldsService
|
|
10014
|
+
constructor(caseEdit, route, formValueService, formErrorService, cdRef, pageValidationService, dialog, caseFieldService, caseEditDataService, loadingService, validPageListCaseFieldsService) {
|
|
10028
10015
|
this.caseEdit = caseEdit;
|
|
10029
10016
|
this.route = route;
|
|
10030
10017
|
this.formValueService = formValueService;
|
|
@@ -10036,7 +10023,6 @@ class CaseEditPageComponent {
|
|
|
10036
10023
|
this.caseEditDataService = caseEditDataService;
|
|
10037
10024
|
this.loadingService = loadingService;
|
|
10038
10025
|
this.validPageListCaseFieldsService = validPageListCaseFieldsService;
|
|
10039
|
-
this.addressService = addressService;
|
|
10040
10026
|
this.triggerTextStart = CaseEditPageComponent.TRIGGER_TEXT_START;
|
|
10041
10027
|
this.triggerTextIgnoreWarnings = CaseEditPageComponent.TRIGGER_TEXT_CONTINUE;
|
|
10042
10028
|
this.formValuesChanged = false;
|
|
@@ -10121,7 +10107,8 @@ class CaseEditPageComponent {
|
|
|
10121
10107
|
return this.caseEdit.first();
|
|
10122
10108
|
}
|
|
10123
10109
|
currentPageIsNotValid() {
|
|
10124
|
-
|
|
10110
|
+
this.failingCaseFields = this.pageValidationService.getInvalidFields(this.currentPage, this.editForm);
|
|
10111
|
+
return this.failingCaseFields.length > 0 ||
|
|
10125
10112
|
(this.isLinkedCasesJourney() && !this.isLinkedCasesJourneyAtFinalStep);
|
|
10126
10113
|
}
|
|
10127
10114
|
isLinkedCasesJourney() {
|
|
@@ -10143,9 +10130,15 @@ class CaseEditPageComponent {
|
|
|
10143
10130
|
// Adding validation message to show it as Error Summary
|
|
10144
10131
|
generateErrorMessage(fields, container, path) {
|
|
10145
10132
|
const group = container || this.editForm.controls['data'];
|
|
10146
|
-
|
|
10147
|
-
|
|
10133
|
+
let validErrorFieldFound = false;
|
|
10134
|
+
let validationErrorAmount = this.validationErrors.length;
|
|
10135
|
+
const failingFields = fields.filter(casefield => !this.caseFieldService.isReadOnly(casefield))
|
|
10136
|
+
.filter(casefield => !this.pageValidationService.isHidden(casefield, this.editForm, path));
|
|
10137
|
+
// note that thougn these checks are on getinvalidfields they are needed for sub field checks
|
|
10138
|
+
failingFields
|
|
10148
10139
|
.forEach(casefield => {
|
|
10140
|
+
let errorPresent = true;
|
|
10141
|
+
validErrorFieldFound = true;
|
|
10149
10142
|
const fieldElement = FieldsUtils.isCaseFieldOfType(casefield, ['JudicialUser'])
|
|
10150
10143
|
? group.get(`${casefield.id}_judicialUserControl`)
|
|
10151
10144
|
: group.get(casefield.id);
|
|
@@ -10161,14 +10154,7 @@ class CaseEditPageComponent {
|
|
|
10161
10154
|
}
|
|
10162
10155
|
}
|
|
10163
10156
|
if (fieldElement.hasError('required')) {
|
|
10164
|
-
|
|
10165
|
-
// EUI-1067 - Display more relevant error message to user and correctly navigate to the field
|
|
10166
|
-
this.addressService.setMandatoryError(true);
|
|
10167
|
-
this.caseEditDataService.addFormValidationError({ id: `${path}_${path}`, message: `An address is required` });
|
|
10168
|
-
}
|
|
10169
|
-
else {
|
|
10170
|
-
this.caseEditDataService.addFormValidationError({ id, message: `%FIELDLABEL% is required`, label });
|
|
10171
|
-
}
|
|
10157
|
+
this.caseEditDataService.addFormValidationError({ id, message: `%FIELDLABEL% is required`, label });
|
|
10172
10158
|
fieldElement.markAsDirty();
|
|
10173
10159
|
// For the JudicialUser field type, an error needs to be set on the component so that an error message
|
|
10174
10160
|
// can be displayed at field level
|
|
@@ -10190,7 +10176,7 @@ class CaseEditPageComponent {
|
|
|
10190
10176
|
}
|
|
10191
10177
|
else if (fieldElement.invalid) {
|
|
10192
10178
|
if (casefield.isComplex()) {
|
|
10193
|
-
this.generateErrorMessage(casefield.field_type.complex_fields, fieldElement, id);
|
|
10179
|
+
errorPresent = this.generateErrorMessage(casefield.field_type.complex_fields, fieldElement, id);
|
|
10194
10180
|
}
|
|
10195
10181
|
else if (casefield.isCollection() && casefield.field_type.collection_field_type.type === 'Complex') {
|
|
10196
10182
|
const fieldArray = fieldElement;
|
|
@@ -10198,7 +10184,7 @@ class CaseEditPageComponent {
|
|
|
10198
10184
|
id = `${fieldArray['component']['collItems'][0].prefix}`;
|
|
10199
10185
|
}
|
|
10200
10186
|
fieldArray.controls.forEach((c) => {
|
|
10201
|
-
this.generateErrorMessage(casefield.field_type.collection_field_type.complex_fields, c.get('value'), id);
|
|
10187
|
+
errorPresent = this.generateErrorMessage(casefield.field_type.collection_field_type.complex_fields, c.get('value'), id);
|
|
10202
10188
|
});
|
|
10203
10189
|
}
|
|
10204
10190
|
else if (FieldsUtils.isCaseFieldOfType(casefield, ['FlagLauncher'])) {
|
|
@@ -10213,8 +10199,29 @@ class CaseEditPageComponent {
|
|
|
10213
10199
|
}
|
|
10214
10200
|
}
|
|
10215
10201
|
}
|
|
10202
|
+
else {
|
|
10203
|
+
validErrorFieldFound = false;
|
|
10204
|
+
}
|
|
10205
|
+
if (!errorPresent && this.validationErrors.length === validationErrorAmount) {
|
|
10206
|
+
// if no error messages have been added in internal field despite parent field failing
|
|
10207
|
+
this.validationErrors.push({ id: casefield.id, message: `A field that is causing an error is ${casefield.id} but it is not producing a valid error message. Please ensure all details are correct` });
|
|
10208
|
+
}
|
|
10216
10209
|
});
|
|
10210
|
+
if (!validErrorFieldFound) {
|
|
10211
|
+
path ? this.validationErrors.push({ id: path, message: `There is an internal issue with ${path} fields. The field that is causing the error cannot be determined but there is an error present` })
|
|
10212
|
+
: this.validationErrors.push({ id: null, message: `The field that is causing the error cannot be determined but there is an error present` });
|
|
10213
|
+
}
|
|
10214
|
+
else if (this.validationErrors.length === validationErrorAmount) {
|
|
10215
|
+
// if no error messages have been generated
|
|
10216
|
+
if (path) {
|
|
10217
|
+
return false;
|
|
10218
|
+
}
|
|
10219
|
+
else {
|
|
10220
|
+
this.validationErrors.push({ id: null, message: `The field that is causing the error cannot be determined but there is an error present. Please fill in more of the form` });
|
|
10221
|
+
}
|
|
10222
|
+
}
|
|
10217
10223
|
CaseEditPageComponent.scrollToTop();
|
|
10224
|
+
return true;
|
|
10218
10225
|
}
|
|
10219
10226
|
navigateToErrorElement(elementId) {
|
|
10220
10227
|
/* istanbul ignore else */
|
|
@@ -10239,11 +10246,10 @@ class CaseEditPageComponent {
|
|
|
10239
10246
|
CaseEditPageComponent.scrollToTop();
|
|
10240
10247
|
}
|
|
10241
10248
|
else {
|
|
10242
|
-
this.generateErrorMessage(this.
|
|
10249
|
+
this.generateErrorMessage(this.failingCaseFields);
|
|
10243
10250
|
}
|
|
10244
10251
|
}
|
|
10245
10252
|
if (!this.caseEdit.isSubmitting && !this.currentPageIsNotValid()) {
|
|
10246
|
-
this.addressService.setMandatoryError(false);
|
|
10247
10253
|
console.log('Case Edit Error', this.caseEdit.error);
|
|
10248
10254
|
if (this.caseEdit.validPageList.findIndex(page => page.id === this.currentPage.id) === -1) {
|
|
10249
10255
|
this.caseEdit.validPageList.push(this.currentPage);
|
|
@@ -10539,7 +10545,7 @@ CaseEditPageComponent.RESUMED_FORM_SAVE = 'RESUMED_FORM_SAVE';
|
|
|
10539
10545
|
CaseEditPageComponent.TRIGGER_TEXT_START = 'Continue';
|
|
10540
10546
|
CaseEditPageComponent.TRIGGER_TEXT_SAVE = 'Save and continue';
|
|
10541
10547
|
CaseEditPageComponent.TRIGGER_TEXT_CONTINUE = 'Ignore Warning and Continue';
|
|
10542
|
-
CaseEditPageComponent.ɵfac = function CaseEditPageComponent_Factory(t) { return new (t || CaseEditPageComponent)(i0.ɵɵdirectiveInject(CaseEditComponent), i0.ɵɵdirectiveInject(i1$1.ActivatedRoute), i0.ɵɵdirectiveInject(FormValueService), i0.ɵɵdirectiveInject(FormErrorService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(PageValidationService), i0.ɵɵdirectiveInject(i1$3.MatLegacyDialog), i0.ɵɵdirectiveInject(CaseFieldService), i0.ɵɵdirectiveInject(CaseEditDataService), i0.ɵɵdirectiveInject(LoadingService), i0.ɵɵdirectiveInject(ValidPageListCaseFieldsService)
|
|
10548
|
+
CaseEditPageComponent.ɵfac = function CaseEditPageComponent_Factory(t) { return new (t || CaseEditPageComponent)(i0.ɵɵdirectiveInject(CaseEditComponent), i0.ɵɵdirectiveInject(i1$1.ActivatedRoute), i0.ɵɵdirectiveInject(FormValueService), i0.ɵɵdirectiveInject(FormErrorService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(PageValidationService), i0.ɵɵdirectiveInject(i1$3.MatLegacyDialog), i0.ɵɵdirectiveInject(CaseFieldService), i0.ɵɵdirectiveInject(CaseEditDataService), i0.ɵɵdirectiveInject(LoadingService), i0.ɵɵdirectiveInject(ValidPageListCaseFieldsService)); };
|
|
10543
10549
|
CaseEditPageComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CaseEditPageComponent, selectors: [["ccd-case-edit-page"]], decls: 12, vars: 11, consts: [[4, "ngIf"], [4, "ngIf", "ngIfThen", "ngIfElse"], ["titleBlock", ""], ["idBlock", ""], ["class", "govuk-error-summary", "aria-labelledby", "error-summary-title", "role", "alert", "tabindex", "-1", "data-module", "govuk-error-summary", 4, "ngIf"], [3, "error"], [3, "triggerTextContinue", "triggerTextIgnore", "callbackErrorsSubject", "callbackErrorsContext"], [1, "width-50"], ["class", "form", 3, "formGroup", "submit", 4, "ngIf"], [3, "eventCompletionParams", "eventCanBeCompleted", 4, "ngIf"], ["class", "govuk-heading-l", 4, "ngIf"], [1, "govuk-heading-l"], [1, "govuk-caption-l"], [3, "content"], ["class", "heading-h2", 4, "ngIf"], [1, "heading-h2"], ["aria-labelledby", "error-summary-title", "role", "alert", "tabindex", "-1", "data-module", "govuk-error-summary", 1, "govuk-error-summary"], ["id", "error-summary-title", 1, "govuk-error-summary__title"], ["class", "govuk-error-summary__body", 4, "ngFor", "ngForOf"], [1, "govuk-error-summary__body"], [1, "govuk-list", "govuk-error-summary__list"], [1, "validation-error", 3, "click"], [1, "form", 3, "formGroup", "submit"], ["id", "fieldset-case-data"], [2, "display", "none"], ["id", "caseEditForm", 3, "fields", "formGroup", "caseFields", "pageChangeSubject", "valuesChanged", 4, "ngIf"], ["class", "grid-row", 4, "ngIf"], [1, "form-group", "form-group-related"], ["type", "button", 1, "button", "button-secondary", 3, "disabled", "click"], ["type", "submit", 1, "button", 3, "disabled"], [1, "cancel"], ["href", "javascript:void(0)", 3, "click"], ["id", "caseEditForm", 3, "fields", "formGroup", "caseFields", "pageChangeSubject", "valuesChanged"], [1, "grid-row"], [1, "column-two-thirds", "rightBorderSeparator"], ["id", "caseEditForm1", 3, "fields", "formGroup", "caseFields"], [1, "column-one-third"], ["id", "caseEditForm2", 3, "fields", "formGroup", "caseFields"], [3, "eventCompletionParams", "eventCanBeCompleted"]], template: function CaseEditPageComponent_Template(rf, ctx) {
|
|
10544
10550
|
if (rf & 1) {
|
|
10545
10551
|
i0.ɵɵtemplate(0, CaseEditPageComponent_ng_container_0_Template, 3, 2, "ng-container", 0);
|
|
@@ -10578,7 +10584,7 @@ CaseEditPageComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CaseE
|
|
|
10578
10584
|
(typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaseEditPageComponent, [{
|
|
10579
10585
|
type: Component,
|
|
10580
10586
|
args: [{ selector: 'ccd-case-edit-page', template: "<ng-container *ngIf=\"currentPage\">\n <h1 *ngIf=\"!currentPage.label\" class=\"govuk-heading-l\">{{eventTrigger.name | rpxTranslate}}</h1>\n <ng-container *ngIf=\"currentPage.label\">\n <span class=\"govuk-caption-l\">{{ eventTrigger.name | rpxTranslate}}</span>\n <h1 class=\"govuk-heading-l\">{{currentPage.label | rpxTranslate}}</h1>\n </ng-container>\n</ng-container>\n\n<!--Case ID or Title -->\n<div *ngIf=\"getCaseTitle(); then titleBlock; else idBlock\"></div>\n<ng-template #titleBlock>\n <ccd-markdown [content]=\"getCaseTitle() | ccdCaseTitle: caseFields : editForm.controls['data']\"></ccd-markdown>\n</ng-template>\n<ng-template #idBlock>\n <h2 *ngIf=\"getCaseId()\" class=\"heading-h2\">#{{ getCaseId() | ccdCaseReference }}</h2>\n</ng-template>\n\n<!-- Error message summary -->\n<div *ngIf=\"validationErrors.length > 0\" class=\"govuk-error-summary\" aria-labelledby=\"error-summary-title\" role=\"alert\" tabindex=\"-1\" data-module=\"govuk-error-summary\">\n <h2 class=\"govuk-error-summary__title\" id=\"error-summary-title\">\n {{'There is a problem' | rpxTranslate}}\n </h2>\n <div *ngFor=\"let validationError of validationErrors\" class=\"govuk-error-summary__body\">\n <ul class=\"govuk-list govuk-error-summary__list\">\n <li>\n <a (click)=\"navigateToErrorElement(validationError.id)\" class=\"validation-error\">\n {{ validationError.message | rpxTranslate: getRpxTranslatePipeArgs(validationError.label | rpxTranslate): null }}\n </a>\n </li>\n </ul>\n </div>\n</div>\n\n<ccd-case-edit-generic-errors [error]=\"caseEdit.error\"></ccd-case-edit-generic-errors>\n\n<ccd-callback-errors\n [triggerTextContinue]=\"triggerTextStart\"\n [triggerTextIgnore]=\"triggerTextIgnoreWarnings\"\n [callbackErrorsSubject]=\"caseEdit.callbackErrorsSubject\"\n (callbackErrorsContext)=\"callbackErrorsNotify($event)\">\n</ccd-callback-errors>\n<div class=\"width-50\">\n <form *ngIf=\"currentPage\" class=\"form\" [formGroup]=\"editForm\" (submit)=\"submit()\">\n <fieldset id=\"fieldset-case-data\">\n <legend style=\"display: none;\"></legend>\n <!-- single column -->\n <ccd-case-edit-form id='caseEditForm' *ngIf=\"!currentPage.isMultiColumn()\" [fields]=\"currentPage.getCol1Fields()\"\n [formGroup]=\"editForm.controls['data']\" [caseFields]=\"caseFields\"\n [pageChangeSubject]=\"pageChangeSubject\"\n (valuesChanged)=\"applyValuesChanged($event)\"></ccd-case-edit-form>\n <!-- two columns -->\n <div *ngIf=\"currentPage.isMultiColumn()\" class=\"grid-row\">\n <div class=\"column-two-thirds rightBorderSeparator\">\n <ccd-case-edit-form id='caseEditForm1' [fields]=\"currentPage.getCol1Fields()\"\n [formGroup]=\"editForm.controls['data']\" [caseFields]=\"caseFields\"></ccd-case-edit-form>\n </div>\n <div class=\"column-one-third\">\n <ccd-case-edit-form id='caseEditForm2' [fields]=\"currentPage.getCol2Fields()\"\n [formGroup]=\"editForm.controls['data']\" [caseFields]=\"caseFields\"></ccd-case-edit-form>\n </div>\n </div>\n </fieldset>\n\n <div class=\"form-group form-group-related\">\n <button class=\"button button-secondary\" type=\"button\" [disabled]=\"!(hasPreviousPage$ | async)\" (click)=\"toPreviousPage()\">\n {{'Previous' | rpxTranslate}}\n </button>\n <button class=\"button\" type=\"submit\" [disabled]=\"submitting()\">{{triggerText | rpxTranslate}}</button>\n </div>\n\n <p class=\"cancel\"><a (click)=\"cancel()\" href=\"javascript:void(0)\">{{getCancelText() | rpxTranslate}}</a></p>\n </form>\n</div>\n\n<ccd-case-event-completion *ngIf=\"caseEdit.isEventCompletionChecksRequired\"\n [eventCompletionParams]=\"caseEdit.eventCompletionParams\"\n (eventCanBeCompleted)=\"onEventCanBeCompleted($event)\">\n</ccd-case-event-completion>\n", styles: [".rightBorderSeparator{border-right-width:4px;border-right-color:#ffcc02;border-right-style:solid}.validation-error{cursor:pointer;text-decoration:underline;color:#d4351c}\n"] }]
|
|
10581
|
-
}], function () { return [{ type: CaseEditComponent }, { type: i1$1.ActivatedRoute }, { type: FormValueService }, { type: FormErrorService }, { type: i0.ChangeDetectorRef }, { type: PageValidationService }, { type: i1$3.MatLegacyDialog }, { type: CaseFieldService }, { type: CaseEditDataService }, { type: LoadingService }, { type: ValidPageListCaseFieldsService }
|
|
10587
|
+
}], function () { return [{ type: CaseEditComponent }, { type: i1$1.ActivatedRoute }, { type: FormValueService }, { type: FormErrorService }, { type: i0.ChangeDetectorRef }, { type: PageValidationService }, { type: i1$3.MatLegacyDialog }, { type: CaseFieldService }, { type: CaseEditDataService }, { type: LoadingService }, { type: ValidPageListCaseFieldsService }]; }, null);
|
|
10582
10588
|
})();
|
|
10583
10589
|
|
|
10584
10590
|
class CallbackErrorsContext {
|
|
@@ -11070,19 +11076,6 @@ class AddressOption {
|
|
|
11070
11076
|
}
|
|
11071
11077
|
}
|
|
11072
11078
|
|
|
11073
|
-
class AddressValidationConstants {
|
|
11074
|
-
}
|
|
11075
|
-
// allow alpha-numeric characters and spaces possibly between a connecting - character
|
|
11076
|
-
// this applies validation while allowing partial postcodes
|
|
11077
|
-
AddressValidationConstants.REGEX_POSTCODE = /^([A-Za-z0-9]-*| )+$/;
|
|
11078
|
-
AddressValidationConstants.ɵfac = function AddressValidationConstants_Factory(t) { return new (t || AddressValidationConstants)(); };
|
|
11079
|
-
AddressValidationConstants.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: AddressValidationConstants, factory: AddressValidationConstants.ɵfac });
|
|
11080
|
-
(function () {
|
|
11081
|
-
(typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AddressValidationConstants, [{
|
|
11082
|
-
type: Injectable
|
|
11083
|
-
}], null, null);
|
|
11084
|
-
})();
|
|
11085
|
-
|
|
11086
11079
|
const _c0$U = ["writeComplexFieldComponent"];
|
|
11087
11080
|
function WriteAddressFieldComponent_div_1_div_4_span_5_Template(rf, ctx) {
|
|
11088
11081
|
if (rf & 1) {
|
|
@@ -11092,9 +11085,8 @@ function WriteAddressFieldComponent_div_1_div_4_span_5_Template(rf, ctx) {
|
|
|
11092
11085
|
i0.ɵɵelementEnd();
|
|
11093
11086
|
}
|
|
11094
11087
|
if (rf & 2) {
|
|
11095
|
-
const ctx_r5 = i0.ɵɵnextContext(3);
|
|
11096
11088
|
i0.ɵɵadvance(1);
|
|
11097
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1,
|
|
11089
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, "Enter the Postcode"));
|
|
11098
11090
|
}
|
|
11099
11091
|
}
|
|
11100
11092
|
const _c1$n = function (a0) { return { "form-group-error": a0 }; };
|
|
@@ -11129,20 +11121,7 @@ function WriteAddressFieldComponent_div_1_div_4_Template(rf, ctx) {
|
|
|
11129
11121
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(9, 11, "Find address"));
|
|
11130
11122
|
}
|
|
11131
11123
|
}
|
|
11132
|
-
function
|
|
11133
|
-
if (rf & 1) {
|
|
11134
|
-
i0.ɵɵelementStart(0, "span", 14);
|
|
11135
|
-
i0.ɵɵtext(1);
|
|
11136
|
-
i0.ɵɵpipe(2, "rpxTranslate");
|
|
11137
|
-
i0.ɵɵelementEnd();
|
|
11138
|
-
}
|
|
11139
|
-
if (rf & 2) {
|
|
11140
|
-
const ctx_r8 = i0.ɵɵnextContext(3);
|
|
11141
|
-
i0.ɵɵadvance(1);
|
|
11142
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, ctx_r8.errorMessage));
|
|
11143
|
-
}
|
|
11144
|
-
}
|
|
11145
|
-
function WriteAddressFieldComponent_div_1_div_5_option_7_Template(rf, ctx) {
|
|
11124
|
+
function WriteAddressFieldComponent_div_1_div_5_option_6_Template(rf, ctx) {
|
|
11146
11125
|
if (rf & 1) {
|
|
11147
11126
|
i0.ɵɵelementStart(0, "option", 18);
|
|
11148
11127
|
i0.ɵɵtext(1);
|
|
@@ -11150,35 +11129,31 @@ function WriteAddressFieldComponent_div_1_div_5_option_7_Template(rf, ctx) {
|
|
|
11150
11129
|
i0.ɵɵelementEnd();
|
|
11151
11130
|
}
|
|
11152
11131
|
if (rf & 2) {
|
|
11153
|
-
const
|
|
11154
|
-
i0.ɵɵproperty("ngValue",
|
|
11132
|
+
const addressOption_r9 = ctx.$implicit;
|
|
11133
|
+
i0.ɵɵproperty("ngValue", addressOption_r9.value);
|
|
11155
11134
|
i0.ɵɵadvance(1);
|
|
11156
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 2,
|
|
11135
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 2, addressOption_r9.description), " ");
|
|
11157
11136
|
}
|
|
11158
11137
|
}
|
|
11159
11138
|
function WriteAddressFieldComponent_div_1_div_5_Template(rf, ctx) {
|
|
11160
11139
|
if (rf & 1) {
|
|
11161
|
-
const
|
|
11140
|
+
const _r11 = i0.ɵɵgetCurrentView();
|
|
11162
11141
|
i0.ɵɵelementStart(0, "div", 15)(1, "label", 9)(2, "span", 10);
|
|
11163
11142
|
i0.ɵɵtext(3);
|
|
11164
11143
|
i0.ɵɵpipe(4, "rpxTranslate");
|
|
11165
11144
|
i0.ɵɵelementEnd()();
|
|
11166
|
-
i0.ɵɵ
|
|
11167
|
-
i0.ɵɵ
|
|
11168
|
-
i0.ɵɵ
|
|
11169
|
-
i0.ɵɵtemplate(7, WriteAddressFieldComponent_div_1_div_5_option_7_Template, 3, 4, "option", 17);
|
|
11145
|
+
i0.ɵɵelementStart(5, "select", 16);
|
|
11146
|
+
i0.ɵɵlistener("change", function WriteAddressFieldComponent_div_1_div_5_Template_select_change_5_listener() { i0.ɵɵrestoreView(_r11); const ctx_r10 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r10.addressSelected()); });
|
|
11147
|
+
i0.ɵɵtemplate(6, WriteAddressFieldComponent_div_1_div_5_option_6_Template, 3, 4, "option", 17);
|
|
11170
11148
|
i0.ɵɵelementEnd()();
|
|
11171
11149
|
}
|
|
11172
11150
|
if (rf & 2) {
|
|
11173
11151
|
const ctx_r3 = i0.ɵɵnextContext(2);
|
|
11174
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(9, _c1$n, ctx_r3.noAddressSelected));
|
|
11175
11152
|
i0.ɵɵadvance(1);
|
|
11176
11153
|
i0.ɵɵproperty("for", ctx_r3.createElementId("addressList"));
|
|
11177
11154
|
i0.ɵɵadvance(2);
|
|
11178
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4,
|
|
11155
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 5, "Select an address"));
|
|
11179
11156
|
i0.ɵɵadvance(2);
|
|
11180
|
-
i0.ɵɵproperty("ngIf", ctx_r3.noAddressSelected);
|
|
11181
|
-
i0.ɵɵadvance(1);
|
|
11182
11157
|
i0.ɵɵproperty("id", ctx_r3.createElementId("addressList"))("formControl", ctx_r3.addressList);
|
|
11183
11158
|
i0.ɵɵadvance(1);
|
|
11184
11159
|
i0.ɵɵproperty("ngForOf", ctx_r3.addressOptions);
|
|
@@ -11186,9 +11161,9 @@ function WriteAddressFieldComponent_div_1_div_5_Template(rf, ctx) {
|
|
|
11186
11161
|
}
|
|
11187
11162
|
function WriteAddressFieldComponent_div_1_a_6_Template(rf, ctx) {
|
|
11188
11163
|
if (rf & 1) {
|
|
11189
|
-
const
|
|
11164
|
+
const _r13 = i0.ɵɵgetCurrentView();
|
|
11190
11165
|
i0.ɵɵelementStart(0, "a", 19);
|
|
11191
|
-
i0.ɵɵlistener("click", function WriteAddressFieldComponent_div_1_a_6_Template_a_click_0_listener() { i0.ɵɵrestoreView(
|
|
11166
|
+
i0.ɵɵlistener("click", function WriteAddressFieldComponent_div_1_a_6_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r13); const ctx_r12 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r12.blankAddress()); });
|
|
11192
11167
|
i0.ɵɵtext(1);
|
|
11193
11168
|
i0.ɵɵpipe(2, "rpxTranslate");
|
|
11194
11169
|
i0.ɵɵelementEnd();
|
|
@@ -11205,7 +11180,7 @@ function WriteAddressFieldComponent_div_1_Template(rf, ctx) {
|
|
|
11205
11180
|
i0.ɵɵpipe(3, "ccdFieldLabel");
|
|
11206
11181
|
i0.ɵɵelementEnd();
|
|
11207
11182
|
i0.ɵɵtemplate(4, WriteAddressFieldComponent_div_1_div_4_Template, 10, 17, "div", 5);
|
|
11208
|
-
i0.ɵɵtemplate(5, WriteAddressFieldComponent_div_1_div_5_Template,
|
|
11183
|
+
i0.ɵɵtemplate(5, WriteAddressFieldComponent_div_1_div_5_Template, 7, 7, "div", 6);
|
|
11209
11184
|
i0.ɵɵtemplate(6, WriteAddressFieldComponent_div_1_a_6_Template, 3, 3, "a", 7);
|
|
11210
11185
|
i0.ɵɵelementEnd();
|
|
11211
11186
|
}
|
|
@@ -11226,30 +11201,19 @@ class WriteAddressFieldComponent extends AbstractFieldWriteComponent {
|
|
|
11226
11201
|
super();
|
|
11227
11202
|
this.isCompoundPipe = isCompoundPipe;
|
|
11228
11203
|
this.addressFormGroup = new FormGroup({});
|
|
11229
|
-
this.errorMessage = WriteAddressFieldComponent.REQUIRED_ERROR_MESSAGE;
|
|
11230
11204
|
this.missingPostcode = false;
|
|
11231
|
-
this.noAddressSelected = false;
|
|
11232
11205
|
this.addressesService = addressesService;
|
|
11233
11206
|
}
|
|
11234
11207
|
ngOnInit() {
|
|
11235
11208
|
if (!this.isComplexWithHiddenFields()) {
|
|
11236
|
-
this.postcode = new FormControl(''
|
|
11237
|
-
this.
|
|
11209
|
+
this.postcode = new FormControl('');
|
|
11210
|
+
this.addressFormGroup.addControl('postcode', this.postcode);
|
|
11238
11211
|
this.addressList = new FormControl('');
|
|
11239
|
-
this.
|
|
11212
|
+
this.addressFormGroup.addControl('address', this.addressList);
|
|
11240
11213
|
}
|
|
11241
|
-
this.addressesService.getMandatoryError().subscribe((value) => {
|
|
11242
|
-
this.updateErrorsOnContinue(value);
|
|
11243
|
-
});
|
|
11244
11214
|
}
|
|
11245
11215
|
findAddress() {
|
|
11246
|
-
this.noAddressSelected = false;
|
|
11247
11216
|
if (!this.postcode.value) {
|
|
11248
|
-
this.errorMessage = WriteAddressFieldComponent.REQUIRED_ERROR_MESSAGE;
|
|
11249
|
-
this.missingPostcode = true;
|
|
11250
|
-
}
|
|
11251
|
-
else if (!this.postcode.value.trim().match(AddressValidationConstants.REGEX_POSTCODE)) {
|
|
11252
|
-
this.errorMessage = WriteAddressFieldComponent.INVALID_ERROR_MESSAGE;
|
|
11253
11217
|
this.missingPostcode = true;
|
|
11254
11218
|
}
|
|
11255
11219
|
else {
|
|
@@ -11278,8 +11242,6 @@ class WriteAddressFieldComponent extends AbstractFieldWriteComponent {
|
|
|
11278
11242
|
blankAddress() {
|
|
11279
11243
|
this.caseField.value = new AddressModel();
|
|
11280
11244
|
this.setFormValue();
|
|
11281
|
-
this.missingPostcode = false;
|
|
11282
|
-
this.noAddressSelected = false;
|
|
11283
11245
|
}
|
|
11284
11246
|
isComplexWithHiddenFields() {
|
|
11285
11247
|
if (this.caseField.isComplex() && this.caseField.field_type.complex_fields
|
|
@@ -11311,7 +11273,6 @@ class WriteAddressFieldComponent extends AbstractFieldWriteComponent {
|
|
|
11311
11273
|
addressSelected() {
|
|
11312
11274
|
this.caseField.value = this.addressList.value;
|
|
11313
11275
|
this.setFormValue();
|
|
11314
|
-
this.noAddressSelected = false;
|
|
11315
11276
|
}
|
|
11316
11277
|
ngOnChanges(changes) {
|
|
11317
11278
|
super.ngOnChanges(changes);
|
|
@@ -11332,14 +11293,7 @@ class WriteAddressFieldComponent extends AbstractFieldWriteComponent {
|
|
|
11332
11293
|
this.writeComplexFieldComponent.complexGroup.setValue(this.caseField.value);
|
|
11333
11294
|
}
|
|
11334
11295
|
}
|
|
11335
|
-
updateErrorsOnContinue(value) {
|
|
11336
|
-
this.missingPostcode = value && !this.shouldShowDetailFields() && !this.addressOptions;
|
|
11337
|
-
this.noAddressSelected = value && !this.shouldShowDetailFields() && !!this.addressOptions;
|
|
11338
|
-
this.errorMessage = this.noAddressSelected ? 'Select an address' : this.errorMessage;
|
|
11339
|
-
}
|
|
11340
11296
|
}
|
|
11341
|
-
WriteAddressFieldComponent.REQUIRED_ERROR_MESSAGE = 'Enter a Postcode';
|
|
11342
|
-
WriteAddressFieldComponent.INVALID_ERROR_MESSAGE = 'Enter a valid Postcode';
|
|
11343
11297
|
WriteAddressFieldComponent.ɵfac = function WriteAddressFieldComponent_Factory(t) { return new (t || WriteAddressFieldComponent)(i0.ɵɵdirectiveInject(AddressesService), i0.ɵɵdirectiveInject(IsCompoundPipe)); };
|
|
11344
11298
|
WriteAddressFieldComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: WriteAddressFieldComponent, selectors: [["ccd-write-address-field"]], viewQuery: function WriteAddressFieldComponent_Query(rf, ctx) {
|
|
11345
11299
|
if (rf & 1) {
|
|
@@ -11351,7 +11305,7 @@ WriteAddressFieldComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
|
|
|
11351
11305
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.writeComplexFieldComponent = _t.first);
|
|
11352
11306
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.focusElementDirectives = _t);
|
|
11353
11307
|
}
|
|
11354
|
-
}, inputs: { formGroup: "formGroup" }, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 4, vars: 9, consts: [[1, "form-group", 3, "id"], [4, "ngIf"], [3, "hidden", "caseField", "renderLabel", "parent", "formGroup", "ignoreMandatory", "idPrefix"], ["writeComplexFieldComponent", ""], [1, "heading-h2"], ["class", "form-group bottom-30 postcodeLookup", 3, "id", "ngClass", 4, "ngIf"], ["class", "form-group", "id", "selectAddress",
|
|
11308
|
+
}, inputs: { formGroup: "formGroup" }, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 4, vars: 9, consts: [[1, "form-group", 3, "id"], [4, "ngIf"], [3, "hidden", "caseField", "renderLabel", "parent", "formGroup", "ignoreMandatory", "idPrefix"], ["writeComplexFieldComponent", ""], [1, "heading-h2"], ["class", "form-group bottom-30 postcodeLookup", 3, "id", "ngClass", 4, "ngIf"], ["class", "form-group", "id", "selectAddress", 4, "ngIf"], ["class", "manual-link bottom-30", "href", "javascript:void(0)", 3, "click", 4, "ngIf"], [1, "form-group", "bottom-30", "postcodeLookup", 3, "id", "ngClass"], [3, "for"], [1, "form-label"], ["class", "error-message", 4, "ngIf"], ["type", "text", "name", "postcode", 1, "form-control", "postcodeinput", "inline-block", 3, "ngClass", "id", "formControl"], ["type", "button", 1, "button", "button-30", 3, "click"], [1, "error-message"], ["id", "selectAddress", 1, "form-group"], ["name", "address", "focusElement", "", 1, "form-control", "ccd-dropdown", "addressList", 3, "id", "formControl", "change"], [3, "ngValue", 4, "ngFor", "ngForOf"], [3, "ngValue"], ["href", "javascript:void(0)", 1, "manual-link", "bottom-30", 3, "click"]], template: function WriteAddressFieldComponent_Template(rf, ctx) {
|
|
11355
11309
|
if (rf & 1) {
|
|
11356
11310
|
i0.ɵɵelementStart(0, "div", 0);
|
|
11357
11311
|
i0.ɵɵtemplate(1, WriteAddressFieldComponent_div_1_Template, 7, 6, "div", 1);
|
|
@@ -11369,7 +11323,7 @@ WriteAddressFieldComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
|
|
|
11369
11323
|
(function () {
|
|
11370
11324
|
(typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(WriteAddressFieldComponent, [{
|
|
11371
11325
|
type: Component,
|
|
11372
|
-
args: [{ selector: 'ccd-write-address-field', template: "<div class=\"form-group\" [id]=\"id()\">\n <div *ngIf=\"!isComplexWithHiddenFields()\">\n <h2 class=\"heading-h2\">{{caseField | ccdFieldLabel}}</h2>\n\n <div class=\"form-group bottom-30 postcodeLookup\" [id]=\"createElementId('postcodeLookup')\" [ngClass]=\"{'form-group-error': missingPostcode}\" *ngIf=\"!isExpanded\">\n <label [for]=\"createElementId('postcodeInput')\">\n <span class=\"form-label\">{{'Enter a UK postcode' | rpxTranslate}}</span>\n </label>\n <span class=\"error-message\" *ngIf=\"missingPostcode\">{{
|
|
11326
|
+
args: [{ selector: 'ccd-write-address-field', template: "<div class=\"form-group\" [id]=\"id()\">\n <div *ngIf=\"!isComplexWithHiddenFields()\">\n <h2 class=\"heading-h2\">{{caseField | ccdFieldLabel}}</h2>\n\n <div class=\"form-group bottom-30 postcodeLookup\" [id]=\"createElementId('postcodeLookup')\" [ngClass]=\"{'form-group-error': missingPostcode}\" *ngIf=\"!isExpanded\">\n <label [for]=\"createElementId('postcodeInput')\">\n <span class=\"form-label\">{{'Enter a UK postcode' | rpxTranslate}}</span>\n </label>\n <span class=\"error-message\" *ngIf=\"missingPostcode\">{{'Enter the Postcode' | rpxTranslate}}</span>\n <input type=\"text\" [ngClass]=\"{'govuk-input--error': missingPostcode}\"\n [id]=\"createElementId('postcodeInput')\" name=\"postcode\" class=\"form-control postcodeinput inline-block\" [formControl]=\"postcode\">\n <button type=\"button\" class=\"button button-30\" (click)=\"findAddress()\">{{'Find address' | rpxTranslate}}</button>\n </div>\n\n <div class=\"form-group\" *ngIf=\"addressOptions\" id=\"selectAddress\">\n <label [for]=\"createElementId('addressList')\">\n <span class=\"form-label\">{{'Select an address' | rpxTranslate}}</span>\n </label>\n\n <select class=\"form-control ccd-dropdown addressList\" [id]=\"createElementId('addressList')\" name=\"address\" [formControl]=\"addressList\" (change)=\"addressSelected()\" focusElement>\n <option *ngFor=\"let addressOption of addressOptions\" [ngValue]=\"addressOption.value\">\n {{addressOption.description | rpxTranslate}}\n </option>\n </select>\n </div>\n\n <a class=\"manual-link bottom-30\" *ngIf=\"!shouldShowDetailFields()\" (click)=\"blankAddress()\" href=\"javascript:void(0)\">\n {{\"I can't enter a UK postcode\" | rpxTranslate}}\n </a>\n </div>\n\n <ccd-write-complex-type-field\n [hidden]=\"!shouldShowDetailFields()\"\n [caseField]=\"caseField\"\n [renderLabel]=\"false\"\n [parent]=\"parent\"\n [formGroup]=\"formGroup\"\n [ignoreMandatory]=\"true\"\n [idPrefix]=\"buildIdPrefix('detail')\"\n #writeComplexFieldComponent>\n </ccd-write-complex-type-field>\n</div>\n", styles: [".manual-link{cursor:pointer;display:block;text-decoration:underline}\n"] }]
|
|
11373
11327
|
}], function () { return [{ type: AddressesService }, { type: IsCompoundPipe }]; }, { writeComplexFieldComponent: [{
|
|
11374
11328
|
type: ViewChild,
|
|
11375
11329
|
args: ['writeComplexFieldComponent', { static: false }]
|
|
@@ -14189,7 +14143,7 @@ class WriteDocumentFieldComponent extends AbstractFieldWriteComponent {
|
|
|
14189
14143
|
this.caseNotifierSubscription = this.caseNotifier.caseView.subscribe({
|
|
14190
14144
|
next: (caseDetails) => {
|
|
14191
14145
|
var _a, _b;
|
|
14192
|
-
this.caseTypeId = caseDetails === null || caseDetails === void 0 ? void 0 : caseDetails.
|
|
14146
|
+
this.caseTypeId = caseDetails === null || caseDetails === void 0 ? void 0 : caseDetails.case_type.id;
|
|
14193
14147
|
this.jurisdictionId = (_b = (_a = caseDetails === null || caseDetails === void 0 ? void 0 : caseDetails.case_type) === null || _a === void 0 ? void 0 : _a.jurisdiction) === null || _b === void 0 ? void 0 : _b.id;
|
|
14194
14148
|
}
|
|
14195
14149
|
});
|