@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
@@ -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, Observable, BehaviorSubject, 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, publish, refCount, switchMap, debounceTime, delay, distinctUntilChanged, finalize, timeout, mergeMap, retryWhen, tap, delayWhen, publishReplay, take, first, takeUntil, filter } from 'rxjs/operators';
@@ -1241,14 +1241,9 @@ class HttpError {
1241
1241
  }
1242
1242
  static from(response) {
1243
1243
  const error = new HttpError();
1244
- if (response?.status === 429) {
1245
- error.error = HttpError.MESSAGE_ERROR_429;
1246
- error.status = response.status;
1247
- error.message = response.message;
1248
- }
1249
1244
  // Check that the HttpErrorResponse contains an "error" object before mapping the error properties
1250
1245
  if (!!(response && response.error)) {
1251
- Object.keys(error).forEach((key) => {
1246
+ Object.keys(error).forEach(key => {
1252
1247
  error[key] = response.error.hasOwnProperty(key) && response.error[key] ? response.error[key] : error[key];
1253
1248
  });
1254
1249
  }
@@ -1265,7 +1260,6 @@ class HttpError {
1265
1260
  HttpError.DEFAULT_ERROR = 'Unknown error';
1266
1261
  HttpError.DEFAULT_MESSAGE = 'Something unexpected happened, our technical staff have been automatically notified';
1267
1262
  HttpError.DEFAULT_STATUS = 500;
1268
- HttpError.MESSAGE_ERROR_429 = 'Your request was rate limited. Please wait a few seconds before retrying your document upload';
1269
1263
 
1270
1264
  /**
1271
1265
  * `Oauth2Service` and `AuthService` cannot be merged as it creates a cyclic dependency on `AuthService` through `HttpErrorService`.
@@ -4612,11 +4606,7 @@ class AbstractFormFieldComponent {
4612
4606
  return control;
4613
4607
  }
4614
4608
  const existing = container.controls[this.caseField.id];
4615
- // update the field value which has been set in mid-event call back
4616
4609
  if (existing) {
4617
- if (existing.value === null && this.caseField?.value) {
4618
- existing.value = this.caseField.value;
4619
- }
4620
4610
  if (replace) {
4621
4611
  // Set the validators on the replacement with what already exists.
4622
4612
  control.setValidators(existing.validator);
@@ -6263,7 +6253,6 @@ class AddressesService {
6263
6253
  constructor(http, appConfig) {
6264
6254
  this.http = http;
6265
6255
  this.appConfig = appConfig;
6266
- this.mandatoryError = new BehaviorSubject(false);
6267
6256
  }
6268
6257
  getAddressesForPostcode(postcode) {
6269
6258
  return this.http
@@ -6272,12 +6261,6 @@ class AddressesService {
6272
6261
  .pipe(map(res => res.results))
6273
6262
  .pipe(map(output => output.map(addresses => this.format(new AddressParser().parse(addresses[AddressType.DPA])))));
6274
6263
  }
6275
- getMandatoryError() {
6276
- return this.mandatoryError.asObservable();
6277
- }
6278
- setMandatoryError(value) {
6279
- this.mandatoryError.next(value);
6280
- }
6281
6264
  format(addressModel) {
6282
6265
  return this.formatAddressLines(this.shiftAddressLinesUp(addressModel));
6283
6266
  }
@@ -8394,16 +8377,21 @@ class PageValidationService {
8394
8377
  constructor(caseFieldService) {
8395
8378
  this.caseFieldService = caseFieldService;
8396
8379
  }
8397
- isPageValid(page, editForm) {
8398
- return page.case_fields
8380
+ getInvalidFields(page, editForm) {
8381
+ const failingCaseFields = [];
8382
+ page.case_fields
8399
8383
  .filter(caseField => !this.caseFieldService.isReadOnly(caseField))
8400
8384
  .filter(caseField => !this.isHidden(caseField, editForm))
8401
- .every(caseField => {
8385
+ .map(caseField => {
8402
8386
  const theControl = FieldsUtils.isCaseFieldOfType(caseField, ['JudicialUser'])
8403
8387
  ? editForm.controls['data'].get(`${caseField.id}_judicialUserControl`)
8404
8388
  : editForm.controls['data'].get(caseField.id);
8405
- return this.checkDocumentField(caseField, theControl) && this.checkOptionalField(caseField, theControl);
8389
+ if (!(this.checkDocumentField(caseField, theControl) && this.checkOptionalField(caseField, theControl))) {
8390
+ failingCaseFields.push(caseField);
8391
+ }
8392
+ ;
8406
8393
  });
8394
+ return failingCaseFields;
8407
8395
  }
8408
8396
  isHidden(caseField, editForm, path) {
8409
8397
  const formFields = editForm.getRawValue();
@@ -9633,7 +9621,7 @@ function CaseEditPageComponent_ccd_case_event_completion_11_Template(rf, ctx) {
9633
9621
  i0.ɵɵproperty("eventCompletionParams", ctx_r8.caseEdit.eventCompletionParams);
9634
9622
  } }
9635
9623
  class CaseEditPageComponent {
9636
- constructor(caseEdit, route, formValueService, formErrorService, cdRef, pageValidationService, dialog, caseFieldService, caseEditDataService, loadingService, validPageListCaseFieldsService, addressService) {
9624
+ constructor(caseEdit, route, formValueService, formErrorService, cdRef, pageValidationService, dialog, caseFieldService, caseEditDataService, loadingService, validPageListCaseFieldsService) {
9637
9625
  this.caseEdit = caseEdit;
9638
9626
  this.route = route;
9639
9627
  this.formValueService = formValueService;
@@ -9645,7 +9633,6 @@ class CaseEditPageComponent {
9645
9633
  this.caseEditDataService = caseEditDataService;
9646
9634
  this.loadingService = loadingService;
9647
9635
  this.validPageListCaseFieldsService = validPageListCaseFieldsService;
9648
- this.addressService = addressService;
9649
9636
  this.triggerTextStart = CaseEditPageComponent.TRIGGER_TEXT_START;
9650
9637
  this.triggerTextIgnoreWarnings = CaseEditPageComponent.TRIGGER_TEXT_CONTINUE;
9651
9638
  this.formValuesChanged = false;
@@ -9728,7 +9715,8 @@ class CaseEditPageComponent {
9728
9715
  return this.caseEdit.first();
9729
9716
  }
9730
9717
  currentPageIsNotValid() {
9731
- return !this.pageValidationService.isPageValid(this.currentPage, this.editForm) ||
9718
+ this.failingCaseFields = this.pageValidationService.getInvalidFields(this.currentPage, this.editForm);
9719
+ return this.failingCaseFields.length > 0 ||
9732
9720
  (this.isLinkedCasesJourney() && !this.isLinkedCasesJourneyAtFinalStep);
9733
9721
  }
9734
9722
  isLinkedCasesJourney() {
@@ -9750,9 +9738,15 @@ class CaseEditPageComponent {
9750
9738
  // Adding validation message to show it as Error Summary
9751
9739
  generateErrorMessage(fields, container, path) {
9752
9740
  const group = container || this.editForm.controls['data'];
9753
- fields.filter(casefield => !this.caseFieldService.isReadOnly(casefield))
9754
- .filter(casefield => !this.pageValidationService.isHidden(casefield, this.editForm, path))
9741
+ let validErrorFieldFound = false;
9742
+ let validationErrorAmount = this.validationErrors.length;
9743
+ const failingFields = fields.filter(casefield => !this.caseFieldService.isReadOnly(casefield))
9744
+ .filter(casefield => !this.pageValidationService.isHidden(casefield, this.editForm, path));
9745
+ // note that thougn these checks are on getinvalidfields they are needed for sub field checks
9746
+ failingFields
9755
9747
  .forEach(casefield => {
9748
+ let errorPresent = true;
9749
+ validErrorFieldFound = true;
9756
9750
  const fieldElement = FieldsUtils.isCaseFieldOfType(casefield, ['JudicialUser'])
9757
9751
  ? group.get(`${casefield.id}_judicialUserControl`)
9758
9752
  : group.get(casefield.id);
@@ -9768,14 +9762,7 @@ class CaseEditPageComponent {
9768
9762
  }
9769
9763
  }
9770
9764
  if (fieldElement.hasError('required')) {
9771
- if (casefield.id === 'AddressLine1') {
9772
- // EUI-1067 - Display more relevant error message to user and correctly navigate to the field
9773
- this.addressService.setMandatoryError(true);
9774
- this.caseEditDataService.addFormValidationError({ id: `${path}_${path}`, message: `An address is required` });
9775
- }
9776
- else {
9777
- this.caseEditDataService.addFormValidationError({ id, message: `%FIELDLABEL% is required`, label });
9778
- }
9765
+ this.caseEditDataService.addFormValidationError({ id, message: `%FIELDLABEL% is required`, label });
9779
9766
  fieldElement.markAsDirty();
9780
9767
  // For the JudicialUser field type, an error needs to be set on the component so that an error message
9781
9768
  // can be displayed at field level
@@ -9797,7 +9784,7 @@ class CaseEditPageComponent {
9797
9784
  }
9798
9785
  else if (fieldElement.invalid) {
9799
9786
  if (casefield.isComplex()) {
9800
- this.generateErrorMessage(casefield.field_type.complex_fields, fieldElement, id);
9787
+ errorPresent = this.generateErrorMessage(casefield.field_type.complex_fields, fieldElement, id);
9801
9788
  }
9802
9789
  else if (casefield.isCollection() && casefield.field_type.collection_field_type.type === 'Complex') {
9803
9790
  const fieldArray = fieldElement;
@@ -9805,7 +9792,7 @@ class CaseEditPageComponent {
9805
9792
  id = `${fieldArray['component']['collItems'][0].prefix}`;
9806
9793
  }
9807
9794
  fieldArray.controls.forEach((c) => {
9808
- this.generateErrorMessage(casefield.field_type.collection_field_type.complex_fields, c.get('value'), id);
9795
+ errorPresent = this.generateErrorMessage(casefield.field_type.collection_field_type.complex_fields, c.get('value'), id);
9809
9796
  });
9810
9797
  }
9811
9798
  else if (FieldsUtils.isCaseFieldOfType(casefield, ['FlagLauncher'])) {
@@ -9820,8 +9807,29 @@ class CaseEditPageComponent {
9820
9807
  }
9821
9808
  }
9822
9809
  }
9810
+ else {
9811
+ validErrorFieldFound = false;
9812
+ }
9813
+ if (!errorPresent && this.validationErrors.length === validationErrorAmount) {
9814
+ // if no error messages have been added in internal field despite parent field failing
9815
+ 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` });
9816
+ }
9823
9817
  });
9818
+ if (!validErrorFieldFound) {
9819
+ 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` })
9820
+ : this.validationErrors.push({ id: null, message: `The field that is causing the error cannot be determined but there is an error present` });
9821
+ }
9822
+ else if (this.validationErrors.length === validationErrorAmount) {
9823
+ // if no error messages have been generated
9824
+ if (path) {
9825
+ return false;
9826
+ }
9827
+ else {
9828
+ 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` });
9829
+ }
9830
+ }
9824
9831
  CaseEditPageComponent.scrollToTop();
9832
+ return true;
9825
9833
  }
9826
9834
  navigateToErrorElement(elementId) {
9827
9835
  /* istanbul ignore else */
@@ -9846,11 +9854,10 @@ class CaseEditPageComponent {
9846
9854
  CaseEditPageComponent.scrollToTop();
9847
9855
  }
9848
9856
  else {
9849
- this.generateErrorMessage(this.currentPage.case_fields);
9857
+ this.generateErrorMessage(this.failingCaseFields);
9850
9858
  }
9851
9859
  }
9852
9860
  if (!this.caseEdit.isSubmitting && !this.currentPageIsNotValid()) {
9853
- this.addressService.setMandatoryError(false);
9854
9861
  console.log('Case Edit Error', this.caseEdit.error);
9855
9862
  if (this.caseEdit.validPageList.findIndex(page => page.id === this.currentPage.id) === -1) {
9856
9863
  this.caseEdit.validPageList.push(this.currentPage);
@@ -10150,7 +10157,7 @@ CaseEditPageComponent.RESUMED_FORM_SAVE = 'RESUMED_FORM_SAVE';
10150
10157
  CaseEditPageComponent.TRIGGER_TEXT_START = 'Continue';
10151
10158
  CaseEditPageComponent.TRIGGER_TEXT_SAVE = 'Save and continue';
10152
10159
  CaseEditPageComponent.TRIGGER_TEXT_CONTINUE = 'Ignore Warning and Continue';
10153
- 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)); };
10160
+ 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)); };
10154
10161
  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) { if (rf & 1) {
10155
10162
  i0.ɵɵtemplate(0, CaseEditPageComponent_ng_container_0_Template, 3, 2, "ng-container", 0);
10156
10163
  i0.ɵɵtemplate(1, CaseEditPageComponent_div_1_Template, 1, 0, "div", 1);
@@ -10185,7 +10192,7 @@ CaseEditPageComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CaseE
10185
10192
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaseEditPageComponent, [{
10186
10193
  type: Component,
10187
10194
  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"] }]
10188
- }], 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); })();
10195
+ }], 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); })();
10189
10196
 
10190
10197
  class CallbackErrorsContext {
10191
10198
  }
@@ -10632,17 +10639,6 @@ class AddressOption {
10632
10639
  }
10633
10640
  }
10634
10641
 
10635
- class AddressValidationConstants {
10636
- }
10637
- // allow alpha-numeric characters and spaces possibly between a connecting - character
10638
- // this applies validation while allowing partial postcodes
10639
- AddressValidationConstants.REGEX_POSTCODE = /^([A-Za-z0-9]-*| )+$/;
10640
- AddressValidationConstants.ɵfac = function AddressValidationConstants_Factory(t) { return new (t || AddressValidationConstants)(); };
10641
- AddressValidationConstants.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: AddressValidationConstants, factory: AddressValidationConstants.ɵfac });
10642
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AddressValidationConstants, [{
10643
- type: Injectable
10644
- }], null, null); })();
10645
-
10646
10642
  class FieldsFilterPipe {
10647
10643
  /**
10648
10644
  * Complex type should have at least on simple field descendant with a value.
@@ -10909,9 +10905,8 @@ function WriteAddressFieldComponent_div_1_div_4_span_5_Template(rf, ctx) { if (r
10909
10905
  i0.ɵɵpipe(2, "rpxTranslate");
10910
10906
  i0.ɵɵelementEnd();
10911
10907
  } if (rf & 2) {
10912
- const ctx_r5 = i0.ɵɵnextContext(3);
10913
10908
  i0.ɵɵadvance(1);
10914
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, ctx_r5.errorMessage));
10909
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, "Enter the Postcode"));
10915
10910
  } }
10916
10911
  const _c1$n = function (a0) { return { "form-group-error": a0 }; };
10917
10912
  const _c2$2 = function (a0) { return { "govuk-input--error": a0 }; };
@@ -10942,56 +10937,42 @@ function WriteAddressFieldComponent_div_1_div_4_Template(rf, ctx) { if (rf & 1)
10942
10937
  i0.ɵɵadvance(2);
10943
10938
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(9, 11, "Find address"));
10944
10939
  } }
10945
- function WriteAddressFieldComponent_div_1_div_5_span_5_Template(rf, ctx) { if (rf & 1) {
10946
- i0.ɵɵelementStart(0, "span", 14);
10947
- i0.ɵɵtext(1);
10948
- i0.ɵɵpipe(2, "rpxTranslate");
10949
- i0.ɵɵelementEnd();
10950
- } if (rf & 2) {
10951
- const ctx_r8 = i0.ɵɵnextContext(3);
10952
- i0.ɵɵadvance(1);
10953
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, ctx_r8.errorMessage));
10954
- } }
10955
- function WriteAddressFieldComponent_div_1_div_5_option_7_Template(rf, ctx) { if (rf & 1) {
10940
+ function WriteAddressFieldComponent_div_1_div_5_option_6_Template(rf, ctx) { if (rf & 1) {
10956
10941
  i0.ɵɵelementStart(0, "option", 18);
10957
10942
  i0.ɵɵtext(1);
10958
10943
  i0.ɵɵpipe(2, "rpxTranslate");
10959
10944
  i0.ɵɵelementEnd();
10960
10945
  } if (rf & 2) {
10961
- const addressOption_r10 = ctx.$implicit;
10962
- i0.ɵɵproperty("ngValue", addressOption_r10.value);
10946
+ const addressOption_r9 = ctx.$implicit;
10947
+ i0.ɵɵproperty("ngValue", addressOption_r9.value);
10963
10948
  i0.ɵɵadvance(1);
10964
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 2, addressOption_r10.description), " ");
10949
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 2, addressOption_r9.description), " ");
10965
10950
  } }
10966
10951
  function WriteAddressFieldComponent_div_1_div_5_Template(rf, ctx) { if (rf & 1) {
10967
- const _r12 = i0.ɵɵgetCurrentView();
10952
+ const _r11 = i0.ɵɵgetCurrentView();
10968
10953
  i0.ɵɵelementStart(0, "div", 15)(1, "label", 9)(2, "span", 10);
10969
10954
  i0.ɵɵtext(3);
10970
10955
  i0.ɵɵpipe(4, "rpxTranslate");
10971
10956
  i0.ɵɵelementEnd()();
10972
- i0.ɵɵtemplate(5, WriteAddressFieldComponent_div_1_div_5_span_5_Template, 3, 3, "span", 11);
10973
- i0.ɵɵelementStart(6, "select", 16);
10974
- 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()); });
10975
- i0.ɵɵtemplate(7, WriteAddressFieldComponent_div_1_div_5_option_7_Template, 3, 4, "option", 17);
10957
+ i0.ɵɵelementStart(5, "select", 16);
10958
+ 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()); });
10959
+ i0.ɵɵtemplate(6, WriteAddressFieldComponent_div_1_div_5_option_6_Template, 3, 4, "option", 17);
10976
10960
  i0.ɵɵelementEnd()();
10977
10961
  } if (rf & 2) {
10978
10962
  const ctx_r3 = i0.ɵɵnextContext(2);
10979
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(9, _c1$n, ctx_r3.noAddressSelected));
10980
10963
  i0.ɵɵadvance(1);
10981
10964
  i0.ɵɵproperty("for", ctx_r3.createElementId("addressList"));
10982
10965
  i0.ɵɵadvance(2);
10983
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 7, "Select an address"));
10966
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 5, "Select an address"));
10984
10967
  i0.ɵɵadvance(2);
10985
- i0.ɵɵproperty("ngIf", ctx_r3.noAddressSelected);
10986
- i0.ɵɵadvance(1);
10987
10968
  i0.ɵɵproperty("id", ctx_r3.createElementId("addressList"))("formControl", ctx_r3.addressList);
10988
10969
  i0.ɵɵadvance(1);
10989
10970
  i0.ɵɵproperty("ngForOf", ctx_r3.addressOptions);
10990
10971
  } }
10991
10972
  function WriteAddressFieldComponent_div_1_a_6_Template(rf, ctx) { if (rf & 1) {
10992
- const _r14 = i0.ɵɵgetCurrentView();
10973
+ const _r13 = i0.ɵɵgetCurrentView();
10993
10974
  i0.ɵɵelementStart(0, "a", 19);
10994
- 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()); });
10975
+ 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()); });
10995
10976
  i0.ɵɵtext(1);
10996
10977
  i0.ɵɵpipe(2, "rpxTranslate");
10997
10978
  i0.ɵɵelementEnd();
@@ -11005,7 +10986,7 @@ function WriteAddressFieldComponent_div_1_Template(rf, ctx) { if (rf & 1) {
11005
10986
  i0.ɵɵpipe(3, "ccdFieldLabel");
11006
10987
  i0.ɵɵelementEnd();
11007
10988
  i0.ɵɵtemplate(4, WriteAddressFieldComponent_div_1_div_4_Template, 10, 17, "div", 5);
11008
- i0.ɵɵtemplate(5, WriteAddressFieldComponent_div_1_div_5_Template, 8, 11, "div", 6);
10989
+ i0.ɵɵtemplate(5, WriteAddressFieldComponent_div_1_div_5_Template, 7, 7, "div", 6);
11009
10990
  i0.ɵɵtemplate(6, WriteAddressFieldComponent_div_1_a_6_Template, 3, 3, "a", 7);
11010
10991
  i0.ɵɵelementEnd();
11011
10992
  } if (rf & 2) {
@@ -11024,30 +11005,19 @@ class WriteAddressFieldComponent extends AbstractFieldWriteComponent {
11024
11005
  super();
11025
11006
  this.isCompoundPipe = isCompoundPipe;
11026
11007
  this.addressFormGroup = new FormGroup({});
11027
- this.errorMessage = WriteAddressFieldComponent.REQUIRED_ERROR_MESSAGE;
11028
11008
  this.missingPostcode = false;
11029
- this.noAddressSelected = false;
11030
11009
  this.addressesService = addressesService;
11031
11010
  }
11032
11011
  ngOnInit() {
11033
11012
  if (!this.isComplexWithHiddenFields()) {
11034
- this.postcode = new FormControl('', [Validators.required]);
11035
- this.formGroup.addControl('postcode', this.postcode);
11013
+ this.postcode = new FormControl('');
11014
+ this.addressFormGroup.addControl('postcode', this.postcode);
11036
11015
  this.addressList = new FormControl('');
11037
- this.formGroup.addControl('address', this.addressList);
11016
+ this.addressFormGroup.addControl('address', this.addressList);
11038
11017
  }
11039
- this.addressesService.getMandatoryError().subscribe((value) => {
11040
- this.updateErrorsOnContinue(value);
11041
- });
11042
11018
  }
11043
11019
  findAddress() {
11044
- this.noAddressSelected = false;
11045
11020
  if (!this.postcode.value) {
11046
- this.errorMessage = WriteAddressFieldComponent.REQUIRED_ERROR_MESSAGE;
11047
- this.missingPostcode = true;
11048
- }
11049
- else if (!this.postcode.value.trim().match(AddressValidationConstants.REGEX_POSTCODE)) {
11050
- this.errorMessage = WriteAddressFieldComponent.INVALID_ERROR_MESSAGE;
11051
11021
  this.missingPostcode = true;
11052
11022
  }
11053
11023
  else {
@@ -11076,8 +11046,6 @@ class WriteAddressFieldComponent extends AbstractFieldWriteComponent {
11076
11046
  blankAddress() {
11077
11047
  this.caseField.value = new AddressModel();
11078
11048
  this.setFormValue();
11079
- this.missingPostcode = false;
11080
- this.noAddressSelected = false;
11081
11049
  }
11082
11050
  isComplexWithHiddenFields() {
11083
11051
  if (this.caseField.isComplex() && this.caseField.field_type.complex_fields
@@ -11109,7 +11077,6 @@ class WriteAddressFieldComponent extends AbstractFieldWriteComponent {
11109
11077
  addressSelected() {
11110
11078
  this.caseField.value = this.addressList.value;
11111
11079
  this.setFormValue();
11112
- this.noAddressSelected = false;
11113
11080
  }
11114
11081
  ngOnChanges(changes) {
11115
11082
  super.ngOnChanges(changes);
@@ -11130,14 +11097,7 @@ class WriteAddressFieldComponent extends AbstractFieldWriteComponent {
11130
11097
  this.writeComplexFieldComponent.complexGroup.setValue(this.caseField.value);
11131
11098
  }
11132
11099
  }
11133
- updateErrorsOnContinue(value) {
11134
- this.missingPostcode = value && !this.shouldShowDetailFields() && !this.addressOptions;
11135
- this.noAddressSelected = value && !this.shouldShowDetailFields() && !!this.addressOptions;
11136
- this.errorMessage = this.noAddressSelected ? 'Select an address' : this.errorMessage;
11137
- }
11138
11100
  }
11139
- WriteAddressFieldComponent.REQUIRED_ERROR_MESSAGE = 'Enter a Postcode';
11140
- WriteAddressFieldComponent.INVALID_ERROR_MESSAGE = 'Enter a valid Postcode';
11141
11101
  WriteAddressFieldComponent.ɵfac = function WriteAddressFieldComponent_Factory(t) { return new (t || WriteAddressFieldComponent)(i0.ɵɵdirectiveInject(AddressesService), i0.ɵɵdirectiveInject(IsCompoundPipe)); };
11142
11102
  WriteAddressFieldComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: WriteAddressFieldComponent, selectors: [["ccd-write-address-field"]], viewQuery: function WriteAddressFieldComponent_Query(rf, ctx) { if (rf & 1) {
11143
11103
  i0.ɵɵviewQuery(_c0$U, 5);
@@ -11146,7 +11106,7 @@ WriteAddressFieldComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
11146
11106
  let _t;
11147
11107
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.writeComplexFieldComponent = _t.first);
11148
11108
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.focusElementDirectives = _t);
11149
- } }, 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) { if (rf & 1) {
11109
+ } }, 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) { if (rf & 1) {
11150
11110
  i0.ɵɵelementStart(0, "div", 0);
11151
11111
  i0.ɵɵtemplate(1, WriteAddressFieldComponent_div_1_Template, 7, 6, "div", 1);
11152
11112
  i0.ɵɵelement(2, "ccd-write-complex-type-field", 2, 3);
@@ -11160,7 +11120,7 @@ WriteAddressFieldComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
11160
11120
  } }, styles: [".manual-link[_ngcontent-%COMP%]{cursor:pointer;display:block;text-decoration:underline}"] });
11161
11121
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(WriteAddressFieldComponent, [{
11162
11122
  type: Component,
11163
- 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"] }]
11123
+ 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"] }]
11164
11124
  }], function () { return [{ type: AddressesService }, { type: IsCompoundPipe }]; }, { writeComplexFieldComponent: [{
11165
11125
  type: ViewChild,
11166
11126
  args: ['writeComplexFieldComponent', { static: false }]
@@ -13453,7 +13413,7 @@ class WriteDocumentFieldComponent extends AbstractFieldWriteComponent {
13453
13413
  subscribeToCaseDetails() {
13454
13414
  this.caseNotifierSubscription = this.caseNotifier.caseView.subscribe({
13455
13415
  next: (caseDetails) => {
13456
- this.caseTypeId = caseDetails?.case_id;
13416
+ this.caseTypeId = caseDetails?.case_type.id;
13457
13417
  this.jurisdictionId = caseDetails?.case_type?.jurisdiction?.id;
13458
13418
  }
13459
13419
  });