@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.
Files changed (26) hide show
  1. package/esm2020/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.mjs +40 -21
  2. package/esm2020/lib/shared/components/case-editor/services/page-validation.service.mjs +10 -5
  3. package/esm2020/lib/shared/components/palette/address/write-address-field.component.mjs +20 -57
  4. package/esm2020/lib/shared/components/palette/base-field/abstract-form-field.component.mjs +1 -5
  5. package/esm2020/lib/shared/components/palette/document/write-document-field.component.mjs +2 -2
  6. package/esm2020/lib/shared/domain/http/http-error.model.mjs +2 -8
  7. package/esm2020/lib/shared/services/addresses/addresses.service.mjs +1 -9
  8. package/fesm2015/hmcts-ccd-case-ui-toolkit.mjs +68 -114
  9. package/fesm2015/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
  10. package/fesm2020/hmcts-ccd-case-ui-toolkit.mjs +68 -108
  11. package/fesm2020/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
  12. package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts +4 -4
  13. package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts.map +1 -1
  14. package/lib/shared/components/case-editor/services/page-validation.service.d.ts +1 -1
  15. package/lib/shared/components/case-editor/services/page-validation.service.d.ts.map +1 -1
  16. package/lib/shared/components/palette/address/write-address-field.component.d.ts +0 -5
  17. package/lib/shared/components/palette/address/write-address-field.component.d.ts.map +1 -1
  18. package/lib/shared/components/palette/base-field/abstract-form-field.component.d.ts.map +1 -1
  19. package/lib/shared/domain/http/http-error.model.d.ts +0 -1
  20. package/lib/shared/domain/http/http-error.model.d.ts.map +1 -1
  21. package/lib/shared/services/addresses/addresses.service.d.ts +0 -3
  22. package/lib/shared/services/addresses/addresses.service.d.ts.map +1 -1
  23. package/package.json +1 -1
  24. package/esm2020/lib/shared/commons/address-validation-constants.mjs +0 -13
  25. package/lib/shared/commons/address-validation-constants.d.ts +0 -7
  26. 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzc2VzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL3NlcnZpY2VzL2FkZHJlc3Nlcy9hZGRyZXNzZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXhELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDdEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7OztBQUdsRCxNQUFNLE9BQU8sZ0JBQWdCO0lBSTNCLFlBQTZCLElBQWlCLEVBQW1CLFNBQTRCO1FBQWhFLFNBQUksR0FBSixJQUFJLENBQWE7UUFBbUIsY0FBUyxHQUFULFNBQVMsQ0FBbUI7UUFGckYsbUJBQWMsR0FBNkIsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7SUFHdkYsQ0FBQztJQUVNLHVCQUF1QixDQUFDLFFBQWdCO1FBQzdDLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDYixHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsRUFBRTthQUN2QyxPQUFPLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUM7YUFDckQsSUFBSSxDQUNILEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUN6QixJQUFJLENBQ0gsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUNuQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksYUFBYSxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUNuRSxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7SUFFTSxpQkFBaUI7UUFDdEIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxLQUFjO1FBQ3JDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFTyxNQUFNLENBQUMsWUFBMEI7UUFDdkMsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVPLGtCQUFrQixDQUFDLFlBQTBCO1FBQ25ELENBQUMsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzNFLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2hFLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQUVPLG1CQUFtQixDQUFDLFlBQTBCO1FBQ3BELElBQUksWUFBWSxDQUFDLFlBQVksS0FBSyxFQUFFLEVBQUU7WUFDcEMsWUFBWSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUMsWUFBWSxDQUFDO1lBQ3RELFlBQVksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1NBQ2hDO1FBQ0QsSUFBSSxZQUFZLENBQUMsWUFBWSxLQUFLLEVBQUUsRUFBRTtZQUNwQyxZQUFZLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQyxZQUFZLENBQUM7WUFDdEQsWUFBWSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7U0FDaEM7UUFDRCxPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBRU8sYUFBYSxDQUFDLFFBQWdCO1FBQ3BDLFFBQVEsR0FBRyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbEMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDekMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RGLENBQUMsQ0FDRixDQUFDO1FBQ0YsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQzs7Z0ZBMURVLGdCQUFnQjtzRUFBaEIsZ0JBQWdCLFdBQWhCLGdCQUFnQjt1RkFBaEIsZ0JBQWdCO2NBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFic3RyYWN0QXBwQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vYXBwLmNvbmZpZyc7XG5pbXBvcnQgeyBBZGRyZXNzTW9kZWwgfSBmcm9tICcuLi8uLi9kb21haW4vYWRkcmVzc2VzJztcbmltcG9ydCB7IEh0dHBTZXJ2aWNlIH0gZnJvbSAnLi4vaHR0cCc7XG5pbXBvcnQgeyBBZGRyZXNzUGFyc2VyIH0gZnJvbSAnLi9hZGRyZXNzLXBhcnNlcic7XG5pbXBvcnQgeyBBZGRyZXNzVHlwZSB9IGZyb20gJy4vYWRkcmVzcy10eXBlLmVudW0nO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQWRkcmVzc2VzU2VydmljZSB7XG5cbiAgcHJpdmF0ZSBtYW5kYXRvcnlFcnJvcjogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwU2VydmljZSwgcHJpdmF0ZSByZWFkb25seSBhcHBDb25maWc6IEFic3RyYWN0QXBwQ29uZmlnKSB7XG4gIH1cblxuICBwdWJsaWMgZ2V0QWRkcmVzc2VzRm9yUG9zdGNvZGUocG9zdGNvZGU6IHN0cmluZyk6IE9ic2VydmFibGU8QWRkcmVzc01vZGVsW10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0KHRoaXMuYXBwQ29uZmlnLmdldFBvc3Rjb2RlTG9va3VwVXJsKClcbiAgICAgICAgLnJlcGxhY2UoJyR7cG9zdGNvZGV9JywgcG9zdGNvZGUpLCB1bmRlZmluZWQsIGZhbHNlKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChyZXMgPT4gcmVzLnJlc3VsdHMpKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChvdXRwdXQgPT4gb3V0cHV0Lm1hcChhZGRyZXNzZXMgPT5cbiAgICAgICAgICB0aGlzLmZvcm1hdChuZXcgQWRkcmVzc1BhcnNlcigpLnBhcnNlKGFkZHJlc3Nlc1tBZGRyZXNzVHlwZS5EUEFdKSlcbiAgICAgICAgKSlcbiAgICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0TWFuZGF0b3J5RXJyb3IoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMubWFuZGF0b3J5RXJyb3IuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0TWFuZGF0b3J5RXJyb3IodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLm1hbmRhdG9yeUVycm9yLm5leHQodmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXQoYWRkcmVzc01vZGVsOiBBZGRyZXNzTW9kZWwpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtYXRBZGRyZXNzTGluZXModGhpcy5zaGlmdEFkZHJlc3NMaW5lc1VwKGFkZHJlc3NNb2RlbCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXRBZGRyZXNzTGluZXMoYWRkcmVzc01vZGVsOiBBZGRyZXNzTW9kZWwpIHtcbiAgICBbJ0FkZHJlc3NMaW5lMScsICdBZGRyZXNzTGluZTInLCAnQWRkcmVzc0xpbmUzJywgJ1Bvc3RUb3duJ10uZm9yRWFjaCh2YWx1ZSA9PiB7XG4gICAgICBhZGRyZXNzTW9kZWxbdmFsdWVdID0gdGhpcy50b0NhcGl0YWxDYXNlKGFkZHJlc3NNb2RlbFt2YWx1ZV0pO1xuICAgIH0pO1xuICAgIHJldHVybiBhZGRyZXNzTW9kZWw7XG4gIH1cblxuICBwcml2YXRlIHNoaWZ0QWRkcmVzc0xpbmVzVXAoYWRkcmVzc01vZGVsOiBBZGRyZXNzTW9kZWwpIHtcbiAgICBpZiAoYWRkcmVzc01vZGVsLkFkZHJlc3NMaW5lMiA9PT0gJycpIHtcbiAgICAgIGFkZHJlc3NNb2RlbC5BZGRyZXNzTGluZTIgPSBhZGRyZXNzTW9kZWwuQWRkcmVzc0xpbmUzO1xuICAgICAgYWRkcmVzc01vZGVsLkFkZHJlc3NMaW5lMyA9ICcnO1xuICAgIH1cbiAgICBpZiAoYWRkcmVzc01vZGVsLkFkZHJlc3NMaW5lMSA9PT0gJycpIHtcbiAgICAgIGFkZHJlc3NNb2RlbC5BZGRyZXNzTGluZTEgPSBhZGRyZXNzTW9kZWwuQWRkcmVzc0xpbmUyO1xuICAgICAgYWRkcmVzc01vZGVsLkFkZHJlc3NMaW5lMiA9ICcnO1xuICAgIH1cbiAgICByZXR1cm4gYWRkcmVzc01vZGVsO1xuICB9XG5cbiAgcHJpdmF0ZSB0b0NhcGl0YWxDYXNlKHNlbnRlbmNlOiBzdHJpbmcpIHtcbiAgICBzZW50ZW5jZSA9IHNlbnRlbmNlLnRvTG93ZXJDYXNlKCk7XG4gICAgc2VudGVuY2Uuc3BsaXQoJyAnKS5mb3JFYWNoKCh2YWx1ZSwgaW5kZXgpID0+IHtcbiAgICAgICAgc2VudGVuY2UgPSBzZW50ZW5jZS5yZXBsYWNlKHZhbHVlLCB2YWx1ZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHZhbHVlLnN1YnN0cigxKSk7XG4gICAgICB9XG4gICAgKTtcbiAgICByZXR1cm4gc2VudGVuY2U7XG4gIH1cbn1cbiJdfQ==
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, BehaviorSubject, Observable, of, timer, fromEvent, forkJoin, Subscription, combineLatest } from 'rxjs';
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((key) => {
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
- isPageValid(page, editForm) {
8691
- return page.case_fields
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
- .every(caseField => {
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
- return this.checkDocumentField(caseField, theControl) && this.checkOptionalField(caseField, theControl);
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, addressService) {
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
- return !this.pageValidationService.isPageValid(this.currentPage, this.editForm) ||
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
- fields.filter(casefield => !this.caseFieldService.isReadOnly(casefield))
10147
- .filter(casefield => !this.pageValidationService.isHidden(casefield, this.editForm, path))
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
- if (casefield.id === 'AddressLine1') {
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.currentPage.case_fields);
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), i0.ɵɵdirectiveInject(AddressesService)); };
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 }, { type: AddressesService }]; }, null);
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, ctx_r5.errorMessage));
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 WriteAddressFieldComponent_div_1_div_5_span_5_Template(rf, ctx) {
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 addressOption_r10 = ctx.$implicit;
11154
- i0.ɵɵproperty("ngValue", addressOption_r10.value);
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, addressOption_r10.description), " ");
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 _r12 = i0.ɵɵgetCurrentView();
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.ɵɵtemplate(5, WriteAddressFieldComponent_div_1_div_5_span_5_Template, 3, 3, "span", 11);
11167
- i0.ɵɵelementStart(6, "select", 16);
11168
- i0.ɵɵlistener("change", function WriteAddressFieldComponent_div_1_div_5_Template_select_change_6_listener() { i0.ɵɵrestoreView(_r12); const ctx_r11 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r11.addressSelected()); });
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, 7, "Select an address"));
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 _r14 = i0.ɵɵgetCurrentView();
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(_r14); const ctx_r13 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r13.blankAddress()); });
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, 8, 11, "div", 6);
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('', [Validators.required]);
11237
- this.formGroup.addControl('postcode', this.postcode);
11209
+ this.postcode = new FormControl('');
11210
+ this.addressFormGroup.addControl('postcode', this.postcode);
11238
11211
  this.addressList = new FormControl('');
11239
- this.formGroup.addControl('address', this.addressList);
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", 3, "ngClass", 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", 3, "ngClass"], ["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) {
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\">{{errorMessage | 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\" [ngClass]=\"{'form-group-error': noAddressSelected}\">\n <label [for]=\"createElementId('addressList')\">\n <span class=\"form-label\">{{'Select an address' | rpxTranslate}}</span>\n </label>\n <span class=\"error-message\" *ngIf=\"noAddressSelected\">{{errorMessage | rpxTranslate}}</span>\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"] }]
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.case_id;
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
  });