@hmcts/ccd-case-ui-toolkit 7.0.21 → 7.0.22-rc2

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 (41) hide show
  1. package/esm2020/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.mjs +35 -7
  2. package/esm2020/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.mjs +83 -38
  3. package/esm2020/lib/shared/components/case-editor/case-editor.module.mjs +6 -5
  4. package/esm2020/lib/shared/components/case-editor/services/page-validation.service.mjs +10 -5
  5. package/esm2020/lib/shared/components/case-history/case-history.component.mjs +13 -13
  6. package/esm2020/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.mjs +3 -3
  7. package/esm2020/lib/shared/components/palette/base-field/abstract-form-field.component.mjs +1 -1
  8. package/esm2020/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder.component.mjs +3 -3
  9. package/esm2020/lib/shared/components/palette/complex/read-complex-field.component.mjs +14 -12
  10. package/esm2020/lib/shared/components/palette/document/write-document-field.component.mjs +25 -16
  11. package/esm2020/lib/shared/components/palette/dynamic-list/dynamic-list.pipe.mjs +2 -2
  12. package/esm2020/lib/shared/components/palette/dynamic-multi-select-list/write-dynamic-multi-select-list-field.component.mjs +5 -5
  13. package/esm2020/lib/shared/components/palette/markdown/markdown.component.mjs +20 -3
  14. package/esm2020/lib/shared/components/palette/text/write-text-field.component.mjs +1 -1
  15. package/esm2020/lib/shared/components/palette/utils/first-error.pipe.mjs +4 -1
  16. package/esm2020/lib/shared/domain/http/http-error.model.mjs +7 -1
  17. package/esm2020/lib/shared/services/fields/fields.purger.mjs +4 -3
  18. package/esm2020/lib/shared/services/form/form-validators.service.mjs +27 -2
  19. package/fesm2015/hmcts-ccd-case-ui-toolkit.mjs +309 -159
  20. package/fesm2015/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
  21. package/fesm2020/hmcts-ccd-case-ui-toolkit.mjs +298 -157
  22. package/fesm2020/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
  23. package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts +2 -1
  24. package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts.map +1 -1
  25. package/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.d.ts +8 -3
  26. package/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.d.ts.map +1 -1
  27. package/lib/shared/components/case-editor/services/page-validation.service.d.ts +1 -1
  28. package/lib/shared/components/case-editor/services/page-validation.service.d.ts.map +1 -1
  29. package/lib/shared/components/palette/base-field/abstract-form-field.component.d.ts.map +1 -1
  30. package/lib/shared/components/palette/complex/read-complex-field.component.d.ts.map +1 -1
  31. package/lib/shared/components/palette/document/write-document-field.component.d.ts +1 -0
  32. package/lib/shared/components/palette/document/write-document-field.component.d.ts.map +1 -1
  33. package/lib/shared/components/palette/markdown/markdown.component.d.ts +3 -1
  34. package/lib/shared/components/palette/markdown/markdown.component.d.ts.map +1 -1
  35. package/lib/shared/components/palette/utils/first-error.pipe.d.ts.map +1 -1
  36. package/lib/shared/domain/http/http-error.model.d.ts +1 -0
  37. package/lib/shared/domain/http/http-error.model.d.ts.map +1 -1
  38. package/lib/shared/services/fields/fields.purger.d.ts.map +1 -1
  39. package/lib/shared/services/form/form-validators.service.d.ts +4 -0
  40. package/lib/shared/services/form/form-validators.service.d.ts.map +1 -1
  41. package/package.json +1 -1
@@ -27,6 +27,7 @@ import { MatDialogConfig } from '@angular/material/dialog';
27
27
  import { ComponentPortal, PortalModule } from '@angular/cdk/portal';
28
28
  import * as i2 from '@nicky-lenaers/ngx-scroll-to';
29
29
  import { ScrollToModule } from '@nicky-lenaers/ngx-scroll-to';
30
+ import * as marked from 'marked';
30
31
  import * as i1$4 from 'ngx-md';
31
32
  import { NgxMdModule } from 'ngx-md';
32
33
  import * as i5 from '@angular/material/legacy-autocomplete';
@@ -133,11 +134,11 @@ function FooterComponent_div_3_Template(rf, ctx) {
133
134
  }
134
135
  }
135
136
  const _c0$13 = [[["", "footerSolsNavLinks", ""]], [["", "footerCaseWorkerNavLinks", ""]]];
136
- const _c1$t = ["[footerSolsNavLinks]", "[footerCaseWorkerNavLinks]"];
137
+ const _c1$u = ["[footerSolsNavLinks]", "[footerCaseWorkerNavLinks]"];
137
138
  class FooterComponent {
138
139
  }
139
140
  FooterComponent.ɵfac = function FooterComponent_Factory(t) { return new (t || FooterComponent)(); };
140
- FooterComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FooterComponent, selectors: [["cut-footer-bar"]], inputs: { email: "email", isSolicitor: "isSolicitor", phone: "phone", workhours: "workhours" }, ngContentSelectors: _c1$t, decls: 4, vars: 4, consts: [["id", "footer", "role", "footer", 1, "group", "js-footer"], [1, "footer-wrapper"], ["class", "footer-meta", 4, "ngIf"], [1, "footer-meta"], [1, "footer-meta-inner"], [1, "open-government-licence"], [1, "logo"], ["href", "https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/", "rel", "license"], [1, "copyright"], ["href", "https://www.nationalarchives.gov.uk/information-management/re-using-public-sector-information/copyright-and-re-use/crown-copyright/"], [1, "title"], [1, "footer-text"], [1, "email"], [3, "href"], [1, "phone"], [1, "work-hours"]], template: function FooterComponent_Template(rf, ctx) {
141
+ FooterComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FooterComponent, selectors: [["cut-footer-bar"]], inputs: { email: "email", isSolicitor: "isSolicitor", phone: "phone", workhours: "workhours" }, ngContentSelectors: _c1$u, decls: 4, vars: 4, consts: [["id", "footer", "role", "footer", 1, "group", "js-footer"], [1, "footer-wrapper"], ["class", "footer-meta", 4, "ngIf"], [1, "footer-meta"], [1, "footer-meta-inner"], [1, "open-government-licence"], [1, "logo"], ["href", "https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/", "rel", "license"], [1, "copyright"], ["href", "https://www.nationalarchives.gov.uk/information-management/re-using-public-sector-information/copyright-and-re-use/crown-copyright/"], [1, "title"], [1, "footer-text"], [1, "email"], [3, "href"], [1, "phone"], [1, "work-hours"]], template: function FooterComponent_Template(rf, ctx) {
141
142
  if (rf & 1) {
142
143
  i0.ɵɵprojectionDef(_c0$13);
143
144
  i0.ɵɵelementStart(0, "footer", 0)(1, "div", 1);
@@ -211,7 +212,7 @@ function HeaderBarComponent_div_10_Template(rf, ctx) {
211
212
  }
212
213
  }
213
214
  const _c0$12 = [[["", "headerNavigation", ""]]];
214
- const _c1$s = ["[headerNavigation]"];
215
+ const _c1$t = ["[headerNavigation]"];
215
216
  class HeaderBarComponent {
216
217
  constructor() {
217
218
  this.signOutRequest = new EventEmitter();
@@ -221,7 +222,7 @@ class HeaderBarComponent {
221
222
  }
222
223
  }
223
224
  HeaderBarComponent.ɵfac = function HeaderBarComponent_Factory(t) { return new (t || HeaderBarComponent)(); };
224
- HeaderBarComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: HeaderBarComponent, selectors: [["cut-header-bar"]], inputs: { title: "title", isSolicitor: "isSolicitor", username: "username" }, outputs: { signOutRequest: "signOutRequest" }, ngContentSelectors: _c1$s, decls: 17, vars: 14, consts: [["role", "banner", "id", "global-header", 1, "with-proposition"], [1, "header-wrapper"], [1, "header-global"], [4, "ngIf"], ["class", "global-header", 4, "ngIf"], [1, "header-proposition"], [1, "content"], ["href", "#proposition-links", 1, "js-header-toggle", "menu"], ["id", "proposition-menu", 4, "ngIf"], [1, "proposition-right"], ["id", "user-name"], ["id", "sign-out", "href", "javascript:void(0)", 3, "click"], ["href", "https://www.gov.uk", "title", "Go to the GOV.UK homepage", "id", "logo", 1, "content", 2, "margin-left", "0px"], ["src", "/img/gov.uk_logotype_crown_invert_trans.png?0.23.0", "width", "36", "height", "32", "alt", ""], [1, "global-header"], [1, "title"], ["id", "proposition-menu"], [1, "title-solicitor"], ["id", "proposition-name"]], template: function HeaderBarComponent_Template(rf, ctx) {
225
+ HeaderBarComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: HeaderBarComponent, selectors: [["cut-header-bar"]], inputs: { title: "title", isSolicitor: "isSolicitor", username: "username" }, outputs: { signOutRequest: "signOutRequest" }, ngContentSelectors: _c1$t, decls: 17, vars: 14, consts: [["role", "banner", "id", "global-header", 1, "with-proposition"], [1, "header-wrapper"], [1, "header-global"], [4, "ngIf"], ["class", "global-header", 4, "ngIf"], [1, "header-proposition"], [1, "content"], ["href", "#proposition-links", 1, "js-header-toggle", "menu"], ["id", "proposition-menu", 4, "ngIf"], [1, "proposition-right"], ["id", "user-name"], ["id", "sign-out", "href", "javascript:void(0)", 3, "click"], ["href", "https://www.gov.uk", "title", "Go to the GOV.UK homepage", "id", "logo", 1, "content", 2, "margin-left", "0px"], ["src", "/img/gov.uk_logotype_crown_invert_trans.png?0.23.0", "width", "36", "height", "32", "alt", ""], [1, "global-header"], [1, "title"], ["id", "proposition-menu"], [1, "title-solicitor"], ["id", "proposition-name"]], template: function HeaderBarComponent_Template(rf, ctx) {
225
226
  if (rf & 1) {
226
227
  i0.ɵɵprojectionDef(_c0$12);
227
228
  i0.ɵɵelementStart(0, "header", 0)(1, "div", 1)(2, "div", 2);
@@ -277,11 +278,11 @@ HeaderBarComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: HeaderBa
277
278
  })();
278
279
 
279
280
  const _c0$11 = [[["", "leftNavLinks", ""]], [["", "rightNavLinks", ""]]];
280
- const _c1$r = ["[leftNavLinks]", "[rightNavLinks]"];
281
+ const _c1$s = ["[leftNavLinks]", "[rightNavLinks]"];
281
282
  class NavigationComponent {
282
283
  }
283
284
  NavigationComponent.ɵfac = function NavigationComponent_Factory(t) { return new (t || NavigationComponent)(); };
284
- NavigationComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: NavigationComponent, selectors: [["cut-nav-bar"]], inputs: { isSolicitor: "isSolicitor" }, ngContentSelectors: _c1$r, decls: 4, vars: 2, consts: [[1, "cut-nav-bar"]], template: function NavigationComponent_Template(rf, ctx) {
285
+ NavigationComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: NavigationComponent, selectors: [["cut-nav-bar"]], inputs: { isSolicitor: "isSolicitor" }, ngContentSelectors: _c1$s, decls: 4, vars: 2, consts: [[1, "cut-nav-bar"]], template: function NavigationComponent_Template(rf, ctx) {
285
286
  if (rf & 1) {
286
287
  i0.ɵɵprojectionDef(_c0$11);
287
288
  i0.ɵɵelementStart(0, "div")(1, "nav", 0);
@@ -412,11 +413,11 @@ HeadersModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [CommonModu
412
413
  (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(HeadersModule, { declarations: [PhaseComponent, HeaderBarComponent, NavigationComponent, NavigationItemComponent], imports: [CommonModule, RouterModule, i1.RpxTranslationModule], exports: [PhaseComponent, HeaderBarComponent, NavigationComponent, NavigationItemComponent] }); })();
413
414
 
414
415
  const _c0$10 = [[["", "topBody", ""]], [["", "leftBody", ""]], [["", "rightBody", ""]]];
415
- const _c1$q = ["[topBody]", "[leftBody]", "[rightBody]"];
416
+ const _c1$r = ["[topBody]", "[leftBody]", "[rightBody]"];
416
417
  class BodyComponent {
417
418
  }
418
419
  BodyComponent.ɵfac = function BodyComponent_Factory(t) { return new (t || BodyComponent)(); };
419
- BodyComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: BodyComponent, selectors: [["cut-body"]], ngContentSelectors: _c1$q, decls: 4, vars: 0, consts: [[1, "global-display"]], template: function BodyComponent_Template(rf, ctx) {
420
+ BodyComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: BodyComponent, selectors: [["cut-body"]], ngContentSelectors: _c1$r, decls: 4, vars: 0, consts: [[1, "global-display"]], template: function BodyComponent_Template(rf, ctx) {
420
421
  if (rf & 1) {
421
422
  i0.ɵɵprojectionDef(_c0$10);
422
423
  i0.ɵɵelementStart(0, "div", 0);
@@ -1085,11 +1086,11 @@ NotificationBannerComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
1085
1086
  })();
1086
1087
 
1087
1088
  const _c0$Z = function (a0) { return { "js-hidden": a0 }; };
1088
- const _c1$p = ["*"];
1089
+ const _c1$q = ["*"];
1089
1090
  class TabComponent {
1090
1091
  }
1091
1092
  TabComponent.ɵfac = function TabComponent_Factory(t) { return new (t || TabComponent)(); };
1092
- TabComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TabComponent, selectors: [["cut-tab"]], inputs: { id: "id", title: "title", selected: "selected" }, ngContentSelectors: _c1$p, decls: 2, vars: 5, consts: [["role", "tabpanel", 1, "tabs-panel", 3, "id", "ngClass"]], template: function TabComponent_Template(rf, ctx) {
1093
+ TabComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TabComponent, selectors: [["cut-tab"]], inputs: { id: "id", title: "title", selected: "selected" }, ngContentSelectors: _c1$q, decls: 2, vars: 5, consts: [["role", "tabpanel", 1, "tabs-panel", 3, "id", "ngClass"]], template: function TabComponent_Template(rf, ctx) {
1093
1094
  if (rf & 1) {
1094
1095
  i0.ɵɵprojectionDef();
1095
1096
  i0.ɵɵelementStart(0, "div", 0);
@@ -1115,8 +1116,8 @@ TabComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TabComponent,
1115
1116
  })();
1116
1117
 
1117
1118
  const _c0$Y = ["tab"];
1118
- const _c1$o = function () { return ["."]; };
1119
- const _c2$3 = function (a0) { return { "tabs-toggle-selected": a0 }; };
1119
+ const _c1$p = function () { return ["."]; };
1120
+ const _c2$4 = function (a0) { return { "tabs-toggle-selected": a0 }; };
1120
1121
  function TabsComponent_li_2_Template(rf, ctx) {
1121
1122
  if (rf & 1) {
1122
1123
  const _r4 = i0.ɵɵgetCurrentView();
@@ -1129,7 +1130,7 @@ function TabsComponent_li_2_Template(rf, ctx) {
1129
1130
  if (rf & 2) {
1130
1131
  const panel_r1 = ctx.$implicit;
1131
1132
  i0.ɵɵadvance(1);
1132
- i0.ɵɵproperty("routerLink", i0.ɵɵpureFunction0(8, _c1$o))("fragment", panel_r1.id)("ngClass", i0.ɵɵpureFunction1(9, _c2$3, panel_r1.selected));
1133
+ i0.ɵɵproperty("routerLink", i0.ɵɵpureFunction0(8, _c1$p))("fragment", panel_r1.id)("ngClass", i0.ɵɵpureFunction1(9, _c2$4, panel_r1.selected));
1133
1134
  i0.ɵɵattribute("aria-controls", panel_r1.id)("aria-selected", panel_r1.selected);
1134
1135
  i0.ɵɵadvance(2);
1135
1136
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 6, panel_r1.title));
@@ -1333,6 +1334,11 @@ class HttpError {
1333
1334
  }
1334
1335
  static from(response) {
1335
1336
  const error = new HttpError();
1337
+ if ((response === null || response === void 0 ? void 0 : response.status) === 429) {
1338
+ error.error = HttpError.MESSAGE_ERROR_429;
1339
+ error.status = response.status;
1340
+ error.message = response.message;
1341
+ }
1336
1342
  // Check that the HttpErrorResponse contains an "error" object before mapping the error properties
1337
1343
  if (!!(response && response.error)) {
1338
1344
  Object.keys(error).forEach((key) => {
@@ -1352,6 +1358,7 @@ class HttpError {
1352
1358
  HttpError.DEFAULT_ERROR = 'Unknown error';
1353
1359
  HttpError.DEFAULT_MESSAGE = 'Something unexpected happened, our technical staff have been automatically notified';
1354
1360
  HttpError.DEFAULT_STATUS = 500;
1361
+ HttpError.MESSAGE_ERROR_429 = 'Your request was rate limited. Please wait a few seconds before retrying your document upload';
1355
1362
 
1356
1363
  class AbstractAppConfig {
1357
1364
  /**
@@ -2696,6 +2703,9 @@ class FirstErrorPipe {
2696
2703
  else if (keys[0] === 'pattern') {
2697
2704
  errorMessage = 'The data entered is not valid for %FIELDLABEL%';
2698
2705
  }
2706
+ else if (keys[0] === 'markDownPattern') {
2707
+ errorMessage = 'The data entered is not valid for %FIELDLABEL%. Link mark up characters are not allowed in this field';
2708
+ }
2699
2709
  else if (keys[0] === 'minlength') {
2700
2710
  errorMessage = '%FIELDLABEL% is below the minimum length';
2701
2711
  }
@@ -4544,6 +4554,7 @@ class FormValidatorsService {
4544
4554
  FormValidatorsService.CUSTOM_VALIDATED_TYPES.indexOf(caseField.field_type.type) === -1) {
4545
4555
  const validators = [Validators.required];
4546
4556
  if (caseField.field_type.type === 'Text') {
4557
+ validators.push(this.markDownPatternValidator());
4547
4558
  if (caseField.field_type.regular_expression) {
4548
4559
  validators.push(Validators.pattern(caseField.field_type.regular_expression));
4549
4560
  }
@@ -4557,22 +4568,38 @@ class FormValidatorsService {
4557
4568
  validators.push(Validators.maxLength(caseField.field_type.max));
4558
4569
  }
4559
4570
  }
4571
+ if (caseField.field_type.type === 'TextArea') {
4572
+ validators.push(this.emptyValidator());
4573
+ validators.push(this.markDownPatternValidator());
4574
+ }
4560
4575
  if (control.validator) {
4561
4576
  validators.push(control.validator);
4562
4577
  }
4563
4578
  control.setValidators(validators);
4564
4579
  }
4580
+ else if (caseField.display_context === 'OPTIONAL' && (caseField.field_type.type === 'Text' || caseField.field_type.type === 'TextArea')) {
4581
+ control.setValidators(this.markDownPatternValidator());
4582
+ }
4565
4583
  return control;
4566
4584
  }
4567
4585
  static emptyValidator() {
4568
4586
  const validator = (control) => {
4569
- if (control && control.value && control.value.toString().trim().length === 0) {
4587
+ var _a;
4588
+ if (((_a = control === null || control === void 0 ? void 0 : control.value) === null || _a === void 0 ? void 0 : _a.toString().trim().length) === 0) {
4570
4589
  return { required: {} };
4571
4590
  }
4572
4591
  return null;
4573
4592
  };
4574
4593
  return validator;
4575
4594
  }
4595
+ static markDownPatternValidator() {
4596
+ const pattern = /(\[[^\]]{0,500}\]\([^)]{0,500}\)|!\[[^\]]{0,500}\]\([^)]{0,500}\)|<img[^>]{0,500}>|<a[^>]{0,500}>.*?<\/a>)/;
4597
+ return (control) => {
4598
+ var _a;
4599
+ const value = (_a = control === null || control === void 0 ? void 0 : control.value) === null || _a === void 0 ? void 0 : _a.toString().trim();
4600
+ return (value && pattern.test(value)) ? { markDownPattern: {} } : null;
4601
+ };
4602
+ }
4576
4603
  // TODO: Strip this out as it's only here for the moment because
4577
4604
  // the service is being injected all over the place but it doesn't
4578
4605
  // need to be as FormValidatorsService.addValidators is perfectly
@@ -4580,10 +4607,20 @@ class FormValidatorsService {
4580
4607
  addValidators(caseField, control) {
4581
4608
  return FormValidatorsService.addValidators(caseField, control);
4582
4609
  }
4610
+ addMarkDownValidators(formGroup, controlPath) {
4611
+ const control = formGroup.get(controlPath);
4612
+ if (control) {
4613
+ control.setValidators(FormValidatorsService.markDownPatternValidator());
4614
+ control.updateValueAndValidity();
4615
+ }
4616
+ return control;
4617
+ }
4583
4618
  }
4584
4619
  FormValidatorsService.CUSTOM_VALIDATED_TYPES = [
4585
4620
  'Date', 'MoneyGBP', 'Label', 'JudicialUser'
4586
4621
  ];
4622
+ FormValidatorsService.DEFAULT_INPUT_TEXT = 'text';
4623
+ FormValidatorsService.DEFAULT_INPUT_TEXTAREA = 'textAreas';
4587
4624
  FormValidatorsService.ɵfac = function FormValidatorsService_Factory(t) { return new (t || FormValidatorsService)(); };
4588
4625
  FormValidatorsService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: FormValidatorsService, factory: FormValidatorsService.ɵfac });
4589
4626
  (function () {
@@ -5034,8 +5071,9 @@ class FieldsPurger {
5034
5071
  }
5035
5072
  }
5036
5073
  else {
5037
- // Delete the field value
5038
- this.deleteFieldValue(form.get('data'), field);
5074
+ // Delete the field from formGroup
5075
+ const dataGroup = form.get('data');
5076
+ dataGroup.removeControl(field.id);
5039
5077
  }
5040
5078
  }
5041
5079
  resetPage(form, wizardPage) {
@@ -8678,16 +8716,21 @@ class PageValidationService {
8678
8716
  constructor(caseFieldService) {
8679
8717
  this.caseFieldService = caseFieldService;
8680
8718
  }
8681
- isPageValid(page, editForm) {
8682
- return page.case_fields
8719
+ getInvalidFields(page, editForm) {
8720
+ const failingCaseFields = [];
8721
+ page.case_fields
8683
8722
  .filter(caseField => !this.caseFieldService.isReadOnly(caseField))
8684
8723
  .filter(caseField => !this.isHidden(caseField, editForm))
8685
- .every(caseField => {
8724
+ .map(caseField => {
8686
8725
  const theControl = FieldsUtils.isCaseFieldOfType(caseField, ['JudicialUser'])
8687
8726
  ? editForm.controls['data'].get(`${caseField.id}_judicialUserControl`)
8688
8727
  : editForm.controls['data'].get(caseField.id);
8689
- return this.checkDocumentField(caseField, theControl) && this.checkOptionalField(caseField, theControl);
8728
+ if (!(this.checkDocumentField(caseField, theControl) && this.checkOptionalField(caseField, theControl))) {
8729
+ failingCaseFields.push(caseField);
8730
+ }
8731
+ ;
8690
8732
  });
8733
+ return failingCaseFields;
8691
8734
  }
8692
8735
  isHidden(caseField, editForm, path) {
8693
8736
  const formFields = editForm.getRawValue();
@@ -10112,7 +10155,8 @@ class CaseEditPageComponent {
10112
10155
  return this.caseEdit.first();
10113
10156
  }
10114
10157
  currentPageIsNotValid() {
10115
- return !this.pageValidationService.isPageValid(this.currentPage, this.editForm) ||
10158
+ this.failingCaseFields = this.pageValidationService.getInvalidFields(this.currentPage, this.editForm);
10159
+ return this.failingCaseFields.length > 0 ||
10116
10160
  (this.isLinkedCasesJourney() && !this.isLinkedCasesJourneyAtFinalStep);
10117
10161
  }
10118
10162
  isLinkedCasesJourney() {
@@ -10134,9 +10178,15 @@ class CaseEditPageComponent {
10134
10178
  // Adding validation message to show it as Error Summary
10135
10179
  generateErrorMessage(fields, container, path) {
10136
10180
  const group = container || this.editForm.controls['data'];
10137
- fields.filter(casefield => !this.caseFieldService.isReadOnly(casefield))
10138
- .filter(casefield => !this.pageValidationService.isHidden(casefield, this.editForm, path))
10181
+ let validErrorFieldFound = false;
10182
+ let validationErrorAmount = this.validationErrors.length;
10183
+ const failingFields = fields.filter(casefield => !this.caseFieldService.isReadOnly(casefield))
10184
+ .filter(casefield => !this.pageValidationService.isHidden(casefield, this.editForm, path));
10185
+ // note that thougn these checks are on getinvalidfields they are needed for sub field checks
10186
+ failingFields
10139
10187
  .forEach(casefield => {
10188
+ let errorPresent = true;
10189
+ validErrorFieldFound = true;
10140
10190
  const fieldElement = FieldsUtils.isCaseFieldOfType(casefield, ['JudicialUser'])
10141
10191
  ? group.get(`${casefield.id}_judicialUserControl`)
10142
10192
  : group.get(casefield.id);
@@ -10181,7 +10231,7 @@ class CaseEditPageComponent {
10181
10231
  }
10182
10232
  else if (fieldElement.invalid) {
10183
10233
  if (casefield.isComplex()) {
10184
- this.generateErrorMessage(casefield.field_type.complex_fields, fieldElement, id);
10234
+ errorPresent = this.generateErrorMessage(casefield.field_type.complex_fields, fieldElement, id);
10185
10235
  }
10186
10236
  else if (casefield.isCollection() && casefield.field_type.collection_field_type.type === 'Complex') {
10187
10237
  const fieldArray = fieldElement;
@@ -10189,7 +10239,7 @@ class CaseEditPageComponent {
10189
10239
  id = `${fieldArray['component']['collItems'][0].prefix}`;
10190
10240
  }
10191
10241
  fieldArray.controls.forEach((c) => {
10192
- this.generateErrorMessage(casefield.field_type.collection_field_type.complex_fields, c.get('value'), id);
10242
+ errorPresent = this.generateErrorMessage(casefield.field_type.collection_field_type.complex_fields, c.get('value'), id);
10193
10243
  });
10194
10244
  }
10195
10245
  else if (FieldsUtils.isCaseFieldOfType(casefield, ['FlagLauncher'])) {
@@ -10204,8 +10254,29 @@ class CaseEditPageComponent {
10204
10254
  }
10205
10255
  }
10206
10256
  }
10257
+ else {
10258
+ validErrorFieldFound = false;
10259
+ }
10260
+ if (!errorPresent && this.validationErrors.length === validationErrorAmount) {
10261
+ // if no error messages have been added in internal field despite parent field failing
10262
+ 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` });
10263
+ }
10207
10264
  });
10265
+ if (!validErrorFieldFound) {
10266
+ 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` })
10267
+ : this.validationErrors.push({ id: null, message: `The field that is causing the error cannot be determined but there is an error present` });
10268
+ }
10269
+ else if (this.validationErrors.length === validationErrorAmount) {
10270
+ // if no error messages have been generated
10271
+ if (path) {
10272
+ return false;
10273
+ }
10274
+ else {
10275
+ 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` });
10276
+ }
10277
+ }
10208
10278
  CaseEditPageComponent.scrollToTop();
10279
+ return true;
10209
10280
  }
10210
10281
  navigateToErrorElement(elementId) {
10211
10282
  /* istanbul ignore else */
@@ -10230,7 +10301,7 @@ class CaseEditPageComponent {
10230
10301
  CaseEditPageComponent.scrollToTop();
10231
10302
  }
10232
10303
  else {
10233
- this.generateErrorMessage(this.currentPage.case_fields);
10304
+ this.generateErrorMessage(this.failingCaseFields);
10234
10305
  }
10235
10306
  }
10236
10307
  if (!this.caseEdit.isSubmitting && !this.currentPageIsNotValid()) {
@@ -11088,8 +11159,8 @@ function WriteAddressFieldComponent_div_1_div_4_span_5_Template(rf, ctx) {
11088
11159
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, ctx_r5.errorMessage));
11089
11160
  }
11090
11161
  }
11091
- const _c1$n = function (a0) { return { "form-group-error": a0 }; };
11092
- const _c2$2 = function (a0) { return { "govuk-input--error": a0 }; };
11162
+ const _c1$o = function (a0) { return { "form-group-error": a0 }; };
11163
+ const _c2$3 = function (a0) { return { "govuk-input--error": a0 }; };
11093
11164
  function WriteAddressFieldComponent_div_1_div_4_Template(rf, ctx) {
11094
11165
  if (rf & 1) {
11095
11166
  const _r7 = i0.ɵɵgetCurrentView();
@@ -11107,7 +11178,7 @@ function WriteAddressFieldComponent_div_1_div_4_Template(rf, ctx) {
11107
11178
  }
11108
11179
  if (rf & 2) {
11109
11180
  const ctx_r2 = i0.ɵɵnextContext(2);
11110
- i0.ɵɵproperty("id", ctx_r2.createElementId("postcodeLookup"))("ngClass", i0.ɵɵpureFunction1(13, _c1$n, ctx_r2.missingPostcode));
11181
+ i0.ɵɵproperty("id", ctx_r2.createElementId("postcodeLookup"))("ngClass", i0.ɵɵpureFunction1(13, _c1$o, ctx_r2.missingPostcode));
11111
11182
  i0.ɵɵadvance(1);
11112
11183
  i0.ɵɵproperty("for", ctx_r2.createElementId("postcodeInput"));
11113
11184
  i0.ɵɵadvance(2);
@@ -11115,7 +11186,7 @@ function WriteAddressFieldComponent_div_1_div_4_Template(rf, ctx) {
11115
11186
  i0.ɵɵadvance(2);
11116
11187
  i0.ɵɵproperty("ngIf", ctx_r2.missingPostcode);
11117
11188
  i0.ɵɵadvance(1);
11118
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(15, _c2$2, ctx_r2.missingPostcode))("id", ctx_r2.createElementId("postcodeInput"))("formControl", ctx_r2.postcode);
11189
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(15, _c2$3, ctx_r2.missingPostcode))("id", ctx_r2.createElementId("postcodeInput"))("formControl", ctx_r2.postcode);
11119
11190
  i0.ɵɵadvance(2);
11120
11191
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(9, 11, "Find address"));
11121
11192
  }
@@ -11162,7 +11233,7 @@ function WriteAddressFieldComponent_div_1_div_5_Template(rf, ctx) {
11162
11233
  }
11163
11234
  if (rf & 2) {
11164
11235
  const ctx_r3 = i0.ɵɵnextContext(2);
11165
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(9, _c1$n, ctx_r3.noAddressSelected));
11236
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(9, _c1$o, ctx_r3.noAddressSelected));
11166
11237
  i0.ɵɵadvance(1);
11167
11238
  i0.ɵɵproperty("for", ctx_r3.createElementId("addressList"));
11168
11239
  i0.ɵɵadvance(2);
@@ -12731,7 +12802,7 @@ function WriteCaseLinkFieldComponent_span_4_Template(rf, ctx) {
12731
12802
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1, ctx_r2.caseReferenceControl.errors, ctx_r2.caseField.label), " ");
12732
12803
  }
12733
12804
  }
12734
- const _c1$m = function (a0) { return { "form-group-error": a0 }; };
12805
+ const _c1$n = function (a0) { return { "form-group-error": a0 }; };
12735
12806
  class WriteCaseLinkFieldComponent extends AbstractFieldWriteComponent {
12736
12807
  ngOnInit() {
12737
12808
  if (this.caseField.value) {
@@ -12797,7 +12868,7 @@ WriteCaseLinkFieldComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
12797
12868
  i0.ɵɵelementEnd();
12798
12869
  }
12799
12870
  if (rf & 2) {
12800
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(7, _c1$m, !ctx.caseReferenceControl.valid && (ctx.caseReferenceControl.dirty || ctx.caseReferenceControl.touched)));
12871
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(7, _c1$n, !ctx.caseReferenceControl.valid && (ctx.caseReferenceControl.dirty || ctx.caseReferenceControl.touched)));
12801
12872
  i0.ɵɵadvance(1);
12802
12873
  i0.ɵɵproperty("for", ctx.id());
12803
12874
  i0.ɵɵadvance(1);
@@ -12835,7 +12906,7 @@ function ReadCollectionFieldComponent_table_0_tbody_2_Template(rf, ctx) {
12835
12906
  i0.ɵɵproperty("caseField", i0.ɵɵpureFunction6(3, _c0$S, ctx_r1.caseField.label, ctx_r1.caseField.label, ctx_r1.caseField.field_type.collection_field_type, ctx_r1.caseField.display_context_parameter, ctx_r1.caseField.value, ctx_r1.caseField.hidden))("context", ctx_r1.context)("topLevelFormGroup", ctx_r1.topLevelFormGroup);
12836
12907
  }
12837
12908
  }
12838
- const _c1$l = function (a0, a1, a2, a3, a4) { return { id: a0, label: a1, field_type: a2, value: a3, hidden: a4 }; };
12909
+ const _c1$m = function (a0, a1, a2, a3, a4) { return { id: a0, label: a1, field_type: a2, value: a3, hidden: a4 }; };
12839
12910
  function ReadCollectionFieldComponent_table_0_tbody_3_tr_1_Template(rf, ctx) {
12840
12911
  if (rf & 1) {
12841
12912
  i0.ɵɵelementStart(0, "tr")(1, "td");
@@ -12847,7 +12918,7 @@ function ReadCollectionFieldComponent_table_0_tbody_3_tr_1_Template(rf, ctx) {
12847
12918
  const i_r5 = ctx.index;
12848
12919
  const ctx_r3 = i0.ɵɵnextContext(3);
12849
12920
  i0.ɵɵadvance(2);
12850
- i0.ɵɵproperty("caseField", i0.ɵɵpureFunction5(4, _c1$l, i_r5, ctx_r3.caseField.label + " " + (i_r5 + 1), ctx_r3.caseField.field_type.collection_field_type, item_r4.value, ctx_r3.caseField.hidden))("context", ctx_r3.context)("topLevelFormGroup", ctx_r3.topLevelFormGroup)("idPrefix", ctx_r3.buildIdPrefix(i_r5));
12921
+ i0.ɵɵproperty("caseField", i0.ɵɵpureFunction5(4, _c1$m, i_r5, ctx_r3.caseField.label + " " + (i_r5 + 1), ctx_r3.caseField.field_type.collection_field_type, item_r4.value, ctx_r3.caseField.hidden))("context", ctx_r3.context)("topLevelFormGroup", ctx_r3.topLevelFormGroup)("idPrefix", ctx_r3.buildIdPrefix(i_r5));
12851
12922
  }
12852
12923
  }
12853
12924
  function ReadCollectionFieldComponent_table_0_tbody_3_Template(rf, ctx) {
@@ -13460,7 +13531,7 @@ class ReadComplexFieldComponent extends AbstractFieldReadComponent {
13460
13531
  this.paletteContext = PaletteContext;
13461
13532
  }
13462
13533
  ngOnInit() {
13463
- var _a, _b, _c;
13534
+ var _a, _b, _c, _d;
13464
13535
  super.ngOnInit();
13465
13536
  if (this.caseField.display_context_parameter) {
13466
13537
  this.context = PaletteContext.TABLE_VIEW;
@@ -13471,18 +13542,20 @@ class ReadComplexFieldComponent extends AbstractFieldReadComponent {
13471
13542
  this.context = PaletteContext.DEFAULT;
13472
13543
  }
13473
13544
  }
13474
- (_c = (_b = (_a = this.caseField) === null || _a === void 0 ? void 0 : _a.field_type) === null || _b === void 0 ? void 0 : _b.complex_fields) === null || _c === void 0 ? void 0 : _c.forEach((field) => {
13475
- var _a, _b, _c;
13476
- if (field === null || field === void 0 ? void 0 : field.isDynamic()) {
13477
- field.list_items = (_a = this.caseField.value[field.id]) === null || _a === void 0 ? void 0 : _a.list_items;
13478
- field.value = {
13479
- list_items: field.list_items,
13480
- value: ((_b = this.caseField.value[field.id]) === null || _b === void 0 ? void 0 : _b.value) && this.caseField.value[field.id].value.code ?
13481
- this.caseField.value[field.id].value.code :
13482
- (_c = this.caseField.value[field.id]) === null || _c === void 0 ? void 0 : _c.value
13483
- };
13484
- }
13485
- });
13545
+ if (((_a = this.caseField) === null || _a === void 0 ? void 0 : _a.field_type) && this.caseField.field_type.complex_fields) {
13546
+ (_d = (_c = (_b = this.caseField) === null || _b === void 0 ? void 0 : _b.field_type) === null || _c === void 0 ? void 0 : _c.complex_fields) === null || _d === void 0 ? void 0 : _d.forEach((field) => {
13547
+ var _a, _b, _c;
13548
+ if (field === null || field === void 0 ? void 0 : field.isDynamic()) {
13549
+ field.list_items = (_a = this.caseField.value[field.id]) === null || _a === void 0 ? void 0 : _a.list_items;
13550
+ field.value = {
13551
+ list_items: field.list_items,
13552
+ value: ((_b = this.caseField.value[field.id]) === null || _b === void 0 ? void 0 : _b.value) && this.caseField.value[field.id].value.code ?
13553
+ this.caseField.value[field.id].value.code :
13554
+ (_c = this.caseField.value[field.id]) === null || _c === void 0 ? void 0 : _c.value
13555
+ };
13556
+ }
13557
+ });
13558
+ }
13486
13559
  }
13487
13560
  }
13488
13561
  ReadComplexFieldComponent.ɵfac = /*@__PURE__*/ function () { let ɵReadComplexFieldComponent_BaseFactory; return function ReadComplexFieldComponent_Factory(t) { return (ɵReadComplexFieldComponent_BaseFactory || (ɵReadComplexFieldComponent_BaseFactory = i0.ɵɵgetInheritedFactory(ReadComplexFieldComponent)))(t || ReadComplexFieldComponent); }; }();
@@ -14043,7 +14116,7 @@ function WriteDocumentFieldComponent_ccd_read_document_field_9_Template(rf, ctx)
14043
14116
  i0.ɵɵproperty("caseField", ctx_r2.caseField);
14044
14117
  }
14045
14118
  }
14046
- const _c1$k = function (a0) { return { "form-group-error bottom-30": a0 }; };
14119
+ const _c1$l = function (a0) { return { "form-group-error bottom-30": a0 }; };
14047
14120
  class WriteDocumentFieldComponent extends AbstractFieldWriteComponent {
14048
14121
  constructor(appConfig, caseNotifier, documentManagement, dialog, fileUploadStateService, jurisdictionService) {
14049
14122
  super();
@@ -14244,23 +14317,31 @@ class WriteDocumentFieldComponent extends AbstractFieldWriteComponent {
14244
14317
  this.uploadedDocument = this.registerControl(new FormGroup(documentFormGroup), true);
14245
14318
  }
14246
14319
  getErrorMessage(error) {
14247
- // Document Management unavailable
14248
- if (0 === error.status || 502 === error.status) {
14249
- return WriteDocumentFieldComponent.UPLOAD_ERROR_NOT_AVAILABLE;
14250
- }
14251
- let errorMsg = 'Error uploading file';
14252
- if (error === null || error === void 0 ? void 0 : error.error) {
14253
- const fullError = error.error;
14254
- const start = fullError.indexOf('{');
14255
- if (start >= 0) {
14256
- const json = fullError.substring(start, fullError.length - 1).split('<EOL>').join('');
14257
- const obj = JSON.parse(json);
14258
- if (obj === null || obj === void 0 ? void 0 : obj.error) {
14259
- errorMsg = obj.error;
14320
+ switch (error.status) {
14321
+ case 0:
14322
+ case 502:
14323
+ return WriteDocumentFieldComponent.UPLOAD_ERROR_NOT_AVAILABLE;
14324
+ case 422:
14325
+ {
14326
+ let errorMsg = WriteDocumentFieldComponent.ERROR_UPLOADING_FILE;
14327
+ if (error === null || error === void 0 ? void 0 : error.error) {
14328
+ const fullError = error.error;
14329
+ const start = fullError.indexOf('{');
14330
+ if (start >= 0) {
14331
+ const json = fullError.substring(start, fullError.length - 1).split('<EOL>').join('');
14332
+ const obj = JSON.parse(json);
14333
+ if (obj === null || obj === void 0 ? void 0 : obj.error) {
14334
+ errorMsg = obj.error;
14335
+ }
14336
+ }
14337
+ }
14338
+ return errorMsg;
14260
14339
  }
14261
- }
14340
+ case 429:
14341
+ return error === null || error === void 0 ? void 0 : error.error;
14342
+ default:
14343
+ return WriteDocumentFieldComponent.ERROR_UPLOADING_FILE;
14262
14344
  }
14263
- return errorMsg;
14264
14345
  }
14265
14346
  buildDocumentUploadData(selectedFile) {
14266
14347
  const documentUpload = new FormData();
@@ -14315,6 +14396,7 @@ WriteDocumentFieldComponent.DOCUMENT_HASH = 'document_hash';
14315
14396
  WriteDocumentFieldComponent.UPLOAD_ERROR_FILE_REQUIRED = 'File required';
14316
14397
  WriteDocumentFieldComponent.UPLOAD_ERROR_NOT_AVAILABLE = 'Document upload facility is not available at the moment';
14317
14398
  WriteDocumentFieldComponent.UPLOAD_WAITING_FILE_STATUS = 'Uploading...';
14399
+ WriteDocumentFieldComponent.ERROR_UPLOADING_FILE = 'Error Uploading File';
14318
14400
  WriteDocumentFieldComponent.ɵfac = function WriteDocumentFieldComponent_Factory(t) { return new (t || WriteDocumentFieldComponent)(i0.ɵɵdirectiveInject(AbstractAppConfig), i0.ɵɵdirectiveInject(CaseNotifier), i0.ɵɵdirectiveInject(DocumentManagementService), i0.ɵɵdirectiveInject(i1$3.MatLegacyDialog), i0.ɵɵdirectiveInject(FileUploadStateService), i0.ɵɵdirectiveInject(JurisdictionService)); };
14319
14401
  WriteDocumentFieldComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: WriteDocumentFieldComponent, selectors: [["ccd-write-document-field"]], viewQuery: function WriteDocumentFieldComponent_Query(rf, ctx) {
14320
14402
  if (rf & 1) {
@@ -14349,7 +14431,7 @@ WriteDocumentFieldComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
14349
14431
  i0.ɵɵelementEnd()();
14350
14432
  }
14351
14433
  if (rf & 2) {
14352
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(18, _c1$k, !ctx.valid));
14434
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(18, _c1$l, !ctx.valid));
14353
14435
  i0.ɵɵadvance(1);
14354
14436
  i0.ɵɵproperty("for", ctx.id());
14355
14437
  i0.ɵɵadvance(1);
@@ -14385,7 +14467,7 @@ WriteDocumentFieldComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
14385
14467
 
14386
14468
  class DynamicListPipe {
14387
14469
  transform(value, items) {
14388
- const item = items.find(i => i.code === value);
14470
+ const item = items === null || items === void 0 ? void 0 : items.find(i => i.code === value);
14389
14471
  return item ? item.label : DynamicListPipe.EMPTY;
14390
14472
  }
14391
14473
  }
@@ -14573,9 +14655,14 @@ WriteDynamicListFieldComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ ty
14573
14655
  })();
14574
14656
 
14575
14657
  class MarkdownComponent {
14576
- constructor() { }
14658
+ constructor() {
14659
+ this.renderUrlToTextFeature = true;
14660
+ }
14577
14661
  ngOnInit() {
14578
14662
  this.content = this.content.replace(/ \n/g, '<br>');
14663
+ if (this.renderUrlToTextFeature) {
14664
+ this.renderUrlToText();
14665
+ }
14579
14666
  }
14580
14667
  onMarkdownClick(event) {
14581
14668
  // If we don't have an anchor tag, we don't need to do anything.
@@ -14584,13 +14671,22 @@ class MarkdownComponent {
14584
14671
  }
14585
14672
  return true;
14586
14673
  }
14674
+ renderUrlToText() {
14675
+ const renderer = new marked.Renderer();
14676
+ renderer.link = (href, title, text) => {
14677
+ return text; // Return the text without turning it into a link
14678
+ };
14679
+ marked.setOptions({
14680
+ renderer: renderer
14681
+ });
14682
+ }
14587
14683
  }
14588
14684
  MarkdownComponent.ɵfac = function MarkdownComponent_Factory(t) { return new (t || MarkdownComponent)(); };
14589
14685
  MarkdownComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MarkdownComponent, selectors: [["ccd-markdown"]], hostBindings: function MarkdownComponent_HostBindings(rf, ctx) {
14590
14686
  if (rf & 1) {
14591
14687
  i0.ɵɵlistener("click", function MarkdownComponent_click_HostBindingHandler($event) { return ctx.onMarkdownClick($event); });
14592
14688
  }
14593
- }, inputs: { content: "content", markdownUseHrefAsRouterLink: "markdownUseHrefAsRouterLink" }, decls: 4, vars: 5, consts: [[1, "markdown", 3, "data"]], template: function MarkdownComponent_Template(rf, ctx) {
14689
+ }, inputs: { content: "content", markdownUseHrefAsRouterLink: "markdownUseHrefAsRouterLink", renderUrlToTextFeature: "renderUrlToTextFeature" }, decls: 4, vars: 5, consts: [[1, "markdown", 3, "data"]], template: function MarkdownComponent_Template(rf, ctx) {
14594
14690
  if (rf & 1) {
14595
14691
  i0.ɵɵelementStart(0, "div");
14596
14692
  i0.ɵɵelement(1, "markdown", 0);
@@ -14611,6 +14707,8 @@ MarkdownComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MarkdownC
14611
14707
  type: Input
14612
14708
  }], markdownUseHrefAsRouterLink: [{
14613
14709
  type: Input
14710
+ }], renderUrlToTextFeature: [{
14711
+ type: Input
14614
14712
  }], onMarkdownClick: [{
14615
14713
  type: HostListener,
14616
14714
  args: ['click', ['$event']]
@@ -14745,7 +14843,7 @@ function WriteDynamicMultiSelectListFieldComponent_ng_container_6_Template(rf, c
14745
14843
  i0.ɵɵadvance(1);
14746
14844
  i0.ɵɵpropertyInterpolate("for", ctx_r3.createElementId(checkbox_r4.code));
14747
14845
  i0.ɵɵadvance(1);
14748
- i0.ɵɵproperty("content", checkbox_r4.label);
14846
+ i0.ɵɵproperty("content", checkbox_r4.label)("renderUrlToTextFeature", false);
14749
14847
  }
14750
14848
  }
14751
14849
  const _c0$O = function (a0) { return { "error": a0 }; };
@@ -14810,14 +14908,14 @@ class WriteDynamicMultiSelectListFieldComponent extends AbstractFieldWriteCompon
14810
14908
  }
14811
14909
  }
14812
14910
  WriteDynamicMultiSelectListFieldComponent.ɵfac = /*@__PURE__*/ function () { let ɵWriteDynamicMultiSelectListFieldComponent_BaseFactory; return function WriteDynamicMultiSelectListFieldComponent_Factory(t) { return (ɵWriteDynamicMultiSelectListFieldComponent_BaseFactory || (ɵWriteDynamicMultiSelectListFieldComponent_BaseFactory = i0.ɵɵgetInheritedFactory(WriteDynamicMultiSelectListFieldComponent)))(t || WriteDynamicMultiSelectListFieldComponent); }; }();
14813
- WriteDynamicMultiSelectListFieldComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: WriteDynamicMultiSelectListFieldComponent, selectors: [["ccd-write-dynamic-multi-select-list-field"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 7, vars: 8, consts: [[1, "form-group", "bottom-30", 3, "ngClass", "id"], ["class", "form-label", 4, "ngIf"], ["class", "form-hint", 4, "ngIf"], ["class", "error-message", 4, "ngIf"], [4, "ngFor", "ngForOf"], [1, "form-label"], [1, "form-hint"], [1, "error-message"], [1, "multiple-choice"], ["type", "checkbox", 1, "form-control", 3, "id", "name", "value", "checked", "change"], [1, "form-label", 3, "for"], [3, "content"]], template: function WriteDynamicMultiSelectListFieldComponent_Template(rf, ctx) {
14911
+ WriteDynamicMultiSelectListFieldComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: WriteDynamicMultiSelectListFieldComponent, selectors: [["ccd-write-dynamic-multi-select-list-field"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 7, vars: 8, consts: [[1, "form-group", "bottom-30", 3, "ngClass", "id"], ["class", "form-label", 4, "ngIf"], ["class", "form-hint", 4, "ngIf"], ["class", "error-message", 4, "ngIf"], [4, "ngFor", "ngForOf"], [1, "form-label"], [1, "form-hint"], [1, "error-message"], [1, "multiple-choice"], ["type", "checkbox", 1, "form-control", 3, "id", "name", "value", "checked", "change"], [1, "form-label", 3, "for"], [3, "content", "renderUrlToTextFeature"]], template: function WriteDynamicMultiSelectListFieldComponent_Template(rf, ctx) {
14814
14912
  if (rf & 1) {
14815
14913
  i0.ɵɵelementStart(0, "div", 0)(1, "fieldset")(2, "legend");
14816
14914
  i0.ɵɵtemplate(3, WriteDynamicMultiSelectListFieldComponent_span_3_Template, 3, 3, "span", 1);
14817
14915
  i0.ɵɵtemplate(4, WriteDynamicMultiSelectListFieldComponent_span_4_Template, 2, 1, "span", 2);
14818
14916
  i0.ɵɵtemplate(5, WriteDynamicMultiSelectListFieldComponent_span_5_Template, 3, 3, "span", 3);
14819
14917
  i0.ɵɵelementEnd();
14820
- i0.ɵɵtemplate(6, WriteDynamicMultiSelectListFieldComponent_ng_container_6_Template, 5, 6, "ng-container", 4);
14918
+ i0.ɵɵtemplate(6, WriteDynamicMultiSelectListFieldComponent_ng_container_6_Template, 5, 7, "ng-container", 4);
14821
14919
  i0.ɵɵelementEnd()();
14822
14920
  }
14823
14921
  if (rf & 2) {
@@ -14835,7 +14933,7 @@ WriteDynamicMultiSelectListFieldComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineCom
14835
14933
  (function () {
14836
14934
  (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(WriteDynamicMultiSelectListFieldComponent, [{
14837
14935
  type: Component,
14838
- args: [{ selector: 'ccd-write-dynamic-multi-select-list-field', template: "<div class=\"form-group bottom-30\" [ngClass]=\"{'error': !checkboxes.valid && checkboxes.touched}\" [id]=\"id()\">\n\n <fieldset>\n\n <legend>\n <span *ngIf=\"caseField.label\" class=\"form-label\">{{caseField | ccdFieldLabel}}</span>\n <span *ngIf=\"caseField.hint_text\" class=\"form-hint\">{{caseField.hint_text}}</span>\n <span *ngIf=\"checkboxes.errors && checkboxes.touched\" class=\"error-message\">{{checkboxes.errors |\n ccdFirstError}}</span>\n </legend>\n\n <ng-container *ngFor=\"let checkbox of caseField.list_items\">\n\n <div class=\"multiple-choice\">\n <input class=\"form-control\" id=\"{{ createElementId(checkbox.code) }}\" name=\"{{ id() }}\" type=\"checkbox\"\n [value]=\"checkbox.code\" [checked]=\"isSelected(checkbox.code)\" (change)=\"onCheckChange($event)\">\n <label class=\"form-label\" for=\"{{ createElementId(checkbox.code) }}\">\n <ccd-markdown [content]=\"checkbox.label\"></ccd-markdown>\n </label>\n </div>\n\n </ng-container>\n\n </fieldset>\n\n</div>\n", styles: ["ccd-markdown{display:inline-block}\n"] }]
14936
+ args: [{ selector: 'ccd-write-dynamic-multi-select-list-field', template: "<div class=\"form-group bottom-30\" [ngClass]=\"{'error': !checkboxes.valid && checkboxes.touched}\" [id]=\"id()\">\n\n <fieldset>\n\n <legend>\n <span *ngIf=\"caseField.label\" class=\"form-label\">{{caseField | ccdFieldLabel}}</span>\n <span *ngIf=\"caseField.hint_text\" class=\"form-hint\">{{caseField.hint_text}}</span>\n <span *ngIf=\"checkboxes.errors && checkboxes.touched\" class=\"error-message\">{{checkboxes.errors |\n ccdFirstError}}</span>\n </legend>\n\n <ng-container *ngFor=\"let checkbox of caseField.list_items\">\n\n <div class=\"multiple-choice\">\n <input class=\"form-control\" id=\"{{ createElementId(checkbox.code) }}\" name=\"{{ id() }}\" type=\"checkbox\"\n [value]=\"checkbox.code\" [checked]=\"isSelected(checkbox.code)\" (change)=\"onCheckChange($event)\">\n <label class=\"form-label\" for=\"{{ createElementId(checkbox.code) }}\">\n <ccd-markdown [content]=\"checkbox.label\" [renderUrlToTextFeature]=\"false\"></ccd-markdown>\n </label>\n </div>\n\n </ng-container>\n\n </fieldset>\n\n</div>\n", styles: ["ccd-markdown{display:inline-block}\n"] }]
14839
14937
  }], null, null);
14840
14938
  })();
14841
14939
 
@@ -14979,7 +15077,7 @@ function WriteDynamicRadioListFieldComponent_div_9_Template(rf, ctx) {
14979
15077
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 7, radioButton_r5.label));
14980
15078
  }
14981
15079
  }
14982
- const _c1$j = function (a0) { return { "form-group-error": a0 }; };
15080
+ const _c1$k = function (a0) { return { "form-group-error": a0 }; };
14983
15081
  class WriteDynamicRadioListFieldComponent extends AbstractFieldWriteComponent {
14984
15082
  ngOnInit() {
14985
15083
  /**
@@ -15019,7 +15117,7 @@ WriteDynamicRadioListFieldComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent
15019
15117
  i0.ɵɵelementEnd()();
15020
15118
  }
15021
15119
  if (rf & 2) {
15022
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(8, _c1$j, !ctx.dynamicRadioListControl.valid && ctx.dynamicRadioListControl.dirty))("id", ctx.id());
15120
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(8, _c1$k, !ctx.dynamicRadioListControl.valid && ctx.dynamicRadioListControl.dirty))("id", ctx.id());
15023
15121
  i0.ɵɵadvance(3);
15024
15122
  i0.ɵɵproperty("for", ctx.id());
15025
15123
  i0.ɵɵadvance(1);
@@ -15120,7 +15218,7 @@ function WriteEmailFieldComponent_span_4_Template(rf, ctx) {
15120
15218
  }
15121
15219
  }
15122
15220
  const _c0$M = function (a0) { return { "form-group-error": a0 }; };
15123
- const _c1$i = function (a0) { return { "govuk-input--error": a0 }; };
15221
+ const _c1$j = function (a0) { return { "govuk-input--error": a0 }; };
15124
15222
  class WriteEmailFieldComponent extends AbstractFieldWriteComponent {
15125
15223
  ngOnInit() {
15126
15224
  this.emailControl = this.registerControl(new FormControl(this.caseField.value));
@@ -15148,7 +15246,7 @@ WriteEmailFieldComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Wr
15148
15246
  i0.ɵɵadvance(1);
15149
15247
  i0.ɵɵproperty("ngIf", ctx.emailControl.errors && (ctx.emailControl.dirty || ctx.emailControl.touched));
15150
15248
  i0.ɵɵadvance(1);
15151
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(10, _c1$i, ctx.emailControl.errors && (ctx.emailControl.dirty || ctx.emailControl.touched)))("id", ctx.id())("formControl", ctx.emailControl);
15249
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(10, _c1$j, ctx.emailControl.errors && (ctx.emailControl.dirty || ctx.emailControl.touched)))("id", ctx.id())("formControl", ctx.emailControl);
15152
15250
  }
15153
15251
  }, dependencies: [i4.NgClass, i4.NgIf, i3.DefaultValueAccessor, i3.NgControlStatus, i3.FormControlDirective, FieldLabelPipe, FirstErrorPipe, i1.RpxTranslatePipe], encapsulation: 2 });
15154
15252
  (function () {
@@ -15403,7 +15501,7 @@ function WriteFixedRadioListFieldComponent_div_8_Template(rf, ctx) {
15403
15501
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 7, radioButton_r4.label));
15404
15502
  }
15405
15503
  }
15406
- const _c1$h = function (a0) { return { "form-group-error": a0 }; };
15504
+ const _c1$i = function (a0) { return { "form-group-error": a0 }; };
15407
15505
  class WriteFixedRadioListFieldComponent extends AbstractFieldWriteComponent {
15408
15506
  ngOnInit() {
15409
15507
  const notEmpty = this.caseField.value !== null && this.caseField.value !== undefined;
@@ -15425,7 +15523,7 @@ WriteFixedRadioListFieldComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({
15425
15523
  i0.ɵɵelementEnd()();
15426
15524
  }
15427
15525
  if (rf & 2) {
15428
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(7, _c1$h, !ctx.fixedRadioListControl.valid && (ctx.fixedRadioListControl.dirty || ctx.fixedRadioListControl.touched)))("id", ctx.id());
15526
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(7, _c1$i, !ctx.fixedRadioListControl.valid && (ctx.fixedRadioListControl.dirty || ctx.fixedRadioListControl.touched)))("id", ctx.id());
15429
15527
  i0.ɵɵadvance(3);
15430
15528
  i0.ɵɵproperty("for", ctx.id());
15431
15529
  i0.ɵɵadvance(1);
@@ -15579,7 +15677,7 @@ function WriteJudicialUserFieldComponent_mat_option_11_Template(rf, ctx) {
15579
15677
  i0.ɵɵelementEnd();
15580
15678
  }
15581
15679
  }
15582
- const _c1$g = function (a0) { return { "form-group-error": a0 }; };
15680
+ const _c1$h = function (a0) { return { "form-group-error": a0 }; };
15583
15681
  class WriteJudicialUserFieldComponent extends WriteComplexFieldComponent {
15584
15682
  constructor(jurisdictionService, sessionStorageService, caseFlagRefDataService, compoundPipe, validatorsService) {
15585
15683
  super(compoundPipe, validatorsService);
@@ -15732,7 +15830,7 @@ WriteJudicialUserFieldComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ t
15732
15830
  }
15733
15831
  if (rf & 2) {
15734
15832
  const _r3 = i0.ɵɵreference(7);
15735
- i0.ɵɵproperty("formGroup", ctx.formGroup)("ngClass", i0.ɵɵpureFunction1(15, _c1$g, !!ctx.judicialUserControl && ctx.errors));
15833
+ i0.ɵɵproperty("formGroup", ctx.formGroup)("ngClass", i0.ɵɵpureFunction1(15, _c1$h, !!ctx.judicialUserControl && ctx.errors));
15736
15834
  i0.ɵɵadvance(1);
15737
15835
  i0.ɵɵproperty("for", ctx.id());
15738
15836
  i0.ɵɵadvance(1);
@@ -16519,7 +16617,7 @@ function LinkCasesComponent_tr_31_span_15_Template(rf, ctx) {
16519
16617
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, reason_r19));
16520
16618
  }
16521
16619
  }
16522
- const _c1$f = function (a0) { return { "table-group-error": a0 }; };
16620
+ const _c1$g = function (a0) { return { "table-group-error": a0 }; };
16523
16621
  function LinkCasesComponent_tr_31_Template(rf, ctx) {
16524
16622
  if (rf & 1) {
16525
16623
  const _r21 = i0.ɵɵgetCurrentView();
@@ -16552,7 +16650,7 @@ function LinkCasesComponent_tr_31_Template(rf, ctx) {
16552
16650
  const case_r16 = ctx.$implicit;
16553
16651
  const ctx_r2 = i0.ɵɵnextContext();
16554
16652
  i0.ɵɵadvance(2);
16555
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(12, _c1$f, ctx_r2.caseSelectionError && case_r16.caseReference === ctx_r2.linkCaseForm.value.caseNumber));
16653
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(12, _c1$g, ctx_r2.caseSelectionError && case_r16.caseReference === ctx_r2.linkCaseForm.value.caseNumber));
16556
16654
  i0.ɵɵadvance(2);
16557
16655
  i0.ɵɵtextInterpolate1("", case_r16.caseName, " ");
16558
16656
  i0.ɵɵadvance(2);
@@ -18639,7 +18737,7 @@ function WriteNumberFieldComponent_span_4_Template(rf, ctx) {
18639
18737
  }
18640
18738
  }
18641
18739
  const _c0$E = function (a0) { return { "form-group-error": a0 }; };
18642
- const _c1$e = function (a0) { return { "govuk-input--error": a0 }; };
18740
+ const _c1$f = function (a0) { return { "govuk-input--error": a0 }; };
18643
18741
  class WriteNumberFieldComponent extends AbstractFieldWriteComponent {
18644
18742
  ngOnInit() {
18645
18743
  this.numberControl = this.registerControl(new FormControl(this.caseField.value));
@@ -18667,7 +18765,7 @@ WriteNumberFieldComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: W
18667
18765
  i0.ɵɵadvance(1);
18668
18766
  i0.ɵɵproperty("ngIf", ctx.numberControl.errors && ctx.numberControl.dirty);
18669
18767
  i0.ɵɵadvance(1);
18670
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(10, _c1$e, ctx.numberControl.errors && ctx.numberControl.dirty))("id", ctx.id())("formControl", ctx.numberControl);
18768
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(10, _c1$f, ctx.numberControl.errors && ctx.numberControl.dirty))("id", ctx.id())("formControl", ctx.numberControl);
18671
18769
  }
18672
18770
  }, dependencies: [i4.NgClass, i4.NgIf, i3.DefaultValueAccessor, i3.NumberValueAccessor, i3.NgControlStatus, i3.FormControlDirective, FieldLabelPipe, FirstErrorPipe, i1.RpxTranslatePipe], encapsulation: 2 });
18673
18771
  (function () {
@@ -19383,7 +19481,7 @@ function WritePhoneUKFieldComponent_span_4_Template(rf, ctx) {
19383
19481
  }
19384
19482
  }
19385
19483
  const _c0$C = function (a0) { return { "form-group-error": a0 }; };
19386
- const _c1$d = function (a0) { return { "govuk-input--error": a0 }; };
19484
+ const _c1$e = function (a0) { return { "govuk-input--error": a0 }; };
19387
19485
  class WritePhoneUKFieldComponent extends AbstractFieldWriteComponent {
19388
19486
  ngOnInit() {
19389
19487
  this.phoneUkControl = this.registerControl(new FormControl(this.caseField.value));
@@ -19411,7 +19509,7 @@ WritePhoneUKFieldComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
19411
19509
  i0.ɵɵadvance(1);
19412
19510
  i0.ɵɵproperty("ngIf", ctx.phoneUkControl.errors && (ctx.phoneUkControl.dirty || ctx.phoneUkControl.touched));
19413
19511
  i0.ɵɵadvance(1);
19414
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(10, _c1$d, ctx.phoneUkControl.errors && ctx.phoneUkControl.dirty))("id", ctx.id())("formControl", ctx.phoneUkControl);
19512
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(10, _c1$e, ctx.phoneUkControl.errors && ctx.phoneUkControl.dirty))("id", ctx.id())("formControl", ctx.phoneUkControl);
19415
19513
  }
19416
19514
  }, dependencies: [i4.NgClass, i4.NgIf, i3.DefaultValueAccessor, i3.NgControlStatus, i3.FormControlDirective, FieldLabelPipe, FirstErrorPipe, i1.RpxTranslatePipe], encapsulation: 2 });
19417
19515
  (function () {
@@ -21653,7 +21751,7 @@ function WriteTextAreaFieldComponent_span_4_Template(rf, ctx) {
21653
21751
  }
21654
21752
  }
21655
21753
  const _c0$z = function (a0) { return { "form-group-error": a0 }; };
21656
- const _c1$c = function (a0) { return { "govuk-textarea--error": a0 }; };
21754
+ const _c1$d = function (a0) { return { "govuk-textarea--error": a0 }; };
21657
21755
  class WriteTextAreaFieldComponent extends AbstractFieldWriteComponent {
21658
21756
  constructor(browserService) {
21659
21757
  super();
@@ -21693,7 +21791,7 @@ WriteTextAreaFieldComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
21693
21791
  i0.ɵɵadvance(1);
21694
21792
  i0.ɵɵproperty("ngIf", ctx.textareaControl.errors && (ctx.textareaControl.dirty || ctx.textareaControl.touched));
21695
21793
  i0.ɵɵadvance(1);
21696
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(10, _c1$c, ctx.textareaControl.errors && (ctx.textareaControl.dirty || ctx.textareaControl.touched)))("id", ctx.id())("formControl", ctx.textareaControl);
21794
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(10, _c1$d, ctx.textareaControl.errors && (ctx.textareaControl.dirty || ctx.textareaControl.touched)))("id", ctx.id())("formControl", ctx.textareaControl);
21697
21795
  }
21698
21796
  }, dependencies: [i4.NgClass, i4.NgIf, i3.DefaultValueAccessor, i3.NgControlStatus, i3.FormControlDirective, FieldLabelPipe, FirstErrorPipe, i1.RpxTranslatePipe], encapsulation: 2 });
21699
21797
  (function () {
@@ -21768,7 +21866,7 @@ function WriteTextFieldComponent_span_4_Template(rf, ctx) {
21768
21866
  }
21769
21867
  }
21770
21868
  const _c0$y = function (a0) { return { "form-group-error": a0 }; };
21771
- const _c1$b = function (a0) { return { "govuk-input--error": a0 }; };
21869
+ const _c1$c = function (a0) { return { "govuk-input--error": a0 }; };
21772
21870
  class WriteTextFieldComponent extends AbstractFieldWriteComponent {
21773
21871
  ngOnInit() {
21774
21872
  this.textControl = this.registerControl(new FormControl(this.caseField.value));
@@ -21800,7 +21898,7 @@ WriteTextFieldComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Wri
21800
21898
  i0.ɵɵadvance(1);
21801
21899
  i0.ɵɵproperty("ngIf", (ctx.textControl == null ? null : ctx.textControl.errors) && (ctx.textControl.dirty || ctx.textControl.touched));
21802
21900
  i0.ɵɵadvance(1);
21803
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(10, _c1$b, (ctx.textControl == null ? null : ctx.textControl.errors) && (ctx.textControl.dirty || ctx.textControl.touched)))("id", ctx.id())("formControl", ctx.textControl);
21901
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(10, _c1$c, (ctx.textControl == null ? null : ctx.textControl.errors) && (ctx.textControl.dirty || ctx.textControl.touched)))("id", ctx.id())("formControl", ctx.textControl);
21804
21902
  }
21805
21903
  }, dependencies: [i4.NgClass, i4.NgIf, i3.DefaultValueAccessor, i3.NgControlStatus, i3.FormControlDirective, FieldLabelPipe, FirstErrorPipe, i1.RpxTranslatePipe], encapsulation: 2 });
21806
21904
  (function () {
@@ -22007,7 +22105,7 @@ function WriteYesNoFieldComponent_div_7_Template(rf, ctx) {
22007
22105
  i0.ɵɵtextInterpolate(ctx_r3.caseField.label ? i0.ɵɵpipeBind3(4, 8, ctx_r3.caseField.label, null, value_r4) : value_r4);
22008
22106
  }
22009
22107
  }
22010
- const _c1$a = function (a0) { return { "form-group-error": a0 }; };
22108
+ const _c1$b = function (a0) { return { "form-group-error": a0 }; };
22011
22109
  class WriteYesNoFieldComponent extends AbstractFieldWriteComponent {
22012
22110
  constructor(yesNoService) {
22013
22111
  super();
@@ -22031,7 +22129,7 @@ WriteYesNoFieldComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Wr
22031
22129
  i0.ɵɵelementEnd()()();
22032
22130
  }
22033
22131
  if (rf & 2) {
22034
- i0.ɵɵproperty("id", ctx.id())("ngClass", i0.ɵɵpureFunction1(7, _c1$a, !ctx.yesNoControl.valid && (ctx.yesNoControl.dirty || ctx.yesNoControl.touched)));
22132
+ i0.ɵɵproperty("id", ctx.id())("ngClass", i0.ɵɵpureFunction1(7, _c1$b, !ctx.yesNoControl.valid && (ctx.yesNoControl.dirty || ctx.yesNoControl.touched)));
22035
22133
  i0.ɵɵadvance(3);
22036
22134
  i0.ɵɵproperty("ngIf", ctx.caseField.label);
22037
22135
  i0.ɵɵadvance(1);
@@ -22429,7 +22527,7 @@ function CaseFileViewFolderSelectorComponent_ng_template_12_ng_container_5_ng_co
22429
22527
  i0.ɵɵelementContainer(0);
22430
22528
  }
22431
22529
  }
22432
- const _c1$9 = function (a0, a1) { return { cat: a0, level: a1 }; };
22530
+ const _c1$a = function (a0, a1) { return { cat: a0, level: a1 }; };
22433
22531
  function CaseFileViewFolderSelectorComponent_ng_template_12_ng_container_5_Template(rf, ctx) {
22434
22532
  if (rf & 1) {
22435
22533
  i0.ɵɵelementContainerStart(0);
@@ -22442,7 +22540,7 @@ function CaseFileViewFolderSelectorComponent_ng_template_12_ng_container_5_Templ
22442
22540
  i0.ɵɵnextContext();
22443
22541
  const _r1 = i0.ɵɵreference(13);
22444
22542
  i0.ɵɵadvance(1);
22445
- i0.ɵɵproperty("ngTemplateOutlet", _r1)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c1$9, subcat_r8, level_r6 + 1));
22543
+ i0.ɵɵproperty("ngTemplateOutlet", _r1)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c1$a, subcat_r8, level_r6 + 1));
22446
22544
  }
22447
22545
  }
22448
22546
  function CaseFileViewFolderSelectorComponent_ng_template_12_Template(rf, ctx) {
@@ -22633,7 +22731,7 @@ function CaseFileViewOverlayMenuComponent_ng_template_4_Template(rf, ctx) {
22633
22731
  }
22634
22732
  }
22635
22733
  const _c0$s = [[["", "trigger", ""]]];
22636
- const _c1$8 = ["[trigger]"];
22734
+ const _c1$9 = ["[trigger]"];
22637
22735
  class CaseFileViewOverlayMenuComponent {
22638
22736
  constructor() {
22639
22737
  this.title = '';
@@ -22647,7 +22745,7 @@ class CaseFileViewOverlayMenuComponent {
22647
22745
  }
22648
22746
  }
22649
22747
  CaseFileViewOverlayMenuComponent.ɵfac = function CaseFileViewOverlayMenuComponent_Factory(t) { return new (t || CaseFileViewOverlayMenuComponent)(); };
22650
- CaseFileViewOverlayMenuComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CaseFileViewOverlayMenuComponent, selectors: [["ccd-case-file-view-overlay-menu"]], inputs: { title: "title", menuItems: "menuItems", isOpen: "isOpen" }, outputs: { isOpenChange: "isOpenChange" }, ngContentSelectors: _c1$8, decls: 5, vars: 4, consts: [["type", "button", "cdkOverlayOrigin", "", 1, "overlay-toggle", 3, "click"], ["trigger", "cdkOverlayOrigin"], ["cdkConnectedOverlay", "", 3, "cdkConnectedOverlayOrigin", "cdkConnectedOverlayOpen", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayBackdropClass", "backdropClick"], [1, "overlay-menu"], [4, "ngIf"], [4, "ngFor", "ngForOf"], [1, "overlay-menu__title"], [1, "overlay-menu__item", 3, "click"], ["class", "overlay-menu__itemIcon", 3, "src", "alt", 4, "ngIf"], [1, "overlay-menu__actionText"], [1, "overlay-menu__itemIcon", 3, "src", "alt"]], template: function CaseFileViewOverlayMenuComponent_Template(rf, ctx) {
22748
+ CaseFileViewOverlayMenuComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CaseFileViewOverlayMenuComponent, selectors: [["ccd-case-file-view-overlay-menu"]], inputs: { title: "title", menuItems: "menuItems", isOpen: "isOpen" }, outputs: { isOpenChange: "isOpenChange" }, ngContentSelectors: _c1$9, decls: 5, vars: 4, consts: [["type", "button", "cdkOverlayOrigin", "", 1, "overlay-toggle", 3, "click"], ["trigger", "cdkOverlayOrigin"], ["cdkConnectedOverlay", "", 3, "cdkConnectedOverlayOrigin", "cdkConnectedOverlayOpen", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayBackdropClass", "backdropClick"], [1, "overlay-menu"], [4, "ngIf"], [4, "ngFor", "ngForOf"], [1, "overlay-menu__title"], [1, "overlay-menu__item", 3, "click"], ["class", "overlay-menu__itemIcon", 3, "src", "alt", 4, "ngIf"], [1, "overlay-menu__actionText"], [1, "overlay-menu__itemIcon", 3, "src", "alt"]], template: function CaseFileViewOverlayMenuComponent_Template(rf, ctx) {
22651
22749
  if (rf & 1) {
22652
22750
  i0.ɵɵprojectionDef(_c0$s);
22653
22751
  i0.ɵɵelementStart(0, "div")(1, "button", 0, 1);
@@ -23216,7 +23314,7 @@ CaseFileViewFolderComponent.UNCATEGORISED_DOCUMENTS_TITLE = 'Uncategorised docum
23216
23314
  CaseFileViewFolderComponent.DOCUMENT_SEARCH_FORM_CONTROL_NAME = 'documentSearchFormControl';
23217
23315
  CaseFileViewFolderComponent.MINIMUM_SEARCH_CHARACTERS = 1;
23218
23316
  CaseFileViewFolderComponent.ɵfac = function CaseFileViewFolderComponent_Factory(t) { return new (t || CaseFileViewFolderComponent)(i0.ɵɵdirectiveInject(WindowService), i0.ɵɵdirectiveInject(i1$1.Router), i0.ɵɵdirectiveInject(DocumentManagementService), i0.ɵɵdirectiveInject(i1$3.MatLegacyDialog), i0.ɵɵdirectiveInject(AbstractAppConfig)); };
23219
- CaseFileViewFolderComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CaseFileViewFolderComponent, selectors: [["ccd-case-file-view-folder"]], inputs: { categoriesAndDocuments: "categoriesAndDocuments", allowMoving: "allowMoving" }, outputs: { clickedDocument: "clickedDocument", moveDocument: "moveDocument" }, decls: 9, vars: 3, consts: [[1, "document-filter-container"], [1, "form-group", "document-filter", 3, "formGroup"], ["type", "search", "id", "document-search", "name", "documentSearchFormControl", "formControlName", "documentSearchFormControl", "placeholder", "Search by document name", 1, "form-control", "document-search"], [1, "document-folders-header"], [1, "document-folders-header__title"], [3, "sortAscending", "sortDescending"], ["class", "document-tree-container", 4, "ngIf"], [1, "document-tree-container"], [4, "ngIf"], [3, "dataSource", "treeControl"], ["class", "document-tree-container__node document-tree-container__node--document", 4, "cdkTreeNodeDef"], ["class", "document-tree-container__node document-tree-container__folder", 4, "cdkTreeNodeDef", "cdkTreeNodeDefWhen"], [1, "document-tree-container__node", "document-tree-container__node--document"], [1, "node", 3, "click"], ["disabled", "", 1, "node__icon"], ["src", "/assets/img/case-file-view/case-file-view-document.svg", "alt", "Document icon", 1, "node__iconImg"], [1, "node__name", "node-name-document"], [1, "node__document-upload-timestamp"], [1, "node__document-options"], [3, "allowMoving", "changeFolderAction", "openInANewTabAction", "downloadAction", "printAction"], [1, "document-tree-container__node", "document-tree-container__folder"], ["cdkTreeNodeToggle", "", 1, "node"], [1, "node__icon"], ["alt", "Folder icon", 1, "node__iconImg", 3, "src"], [1, "node__count"], [1, "node__name", "node__name--folder"], ["cdkTreeNodeOutlet", ""]], template: function CaseFileViewFolderComponent_Template(rf, ctx) {
23317
+ CaseFileViewFolderComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CaseFileViewFolderComponent, selectors: [["ccd-case-file-view-folder"]], inputs: { categoriesAndDocuments: "categoriesAndDocuments", allowMoving: "allowMoving" }, outputs: { clickedDocument: "clickedDocument", moveDocument: "moveDocument" }, decls: 9, vars: 3, consts: [[1, "document-filter-container"], [1, "form-group", "document-filter", 3, "formGroup"], ["type", "search", "id", "document-search", "name", "documentSearchFormControl", "formControlName", "documentSearchFormControl", "placeholder", "Search by document name", "aria-label", "Search by document name", 1, "form-control", "document-search"], [1, "document-folders-header"], [1, "document-folders-header__title"], [3, "sortAscending", "sortDescending"], ["class", "document-tree-container", 4, "ngIf"], [1, "document-tree-container"], [4, "ngIf"], [3, "dataSource", "treeControl"], ["class", "document-tree-container__node document-tree-container__node--document", 4, "cdkTreeNodeDef"], ["class", "document-tree-container__node document-tree-container__folder", 4, "cdkTreeNodeDef", "cdkTreeNodeDefWhen"], [1, "document-tree-container__node", "document-tree-container__node--document"], [1, "node", 3, "click"], ["disabled", "", 1, "node__icon"], ["src", "/assets/img/case-file-view/case-file-view-document.svg", "alt", "Document icon", 1, "node__iconImg"], [1, "node__name", "node-name-document"], [1, "node__document-upload-timestamp"], [1, "node__document-options"], [3, "allowMoving", "changeFolderAction", "openInANewTabAction", "downloadAction", "printAction"], [1, "document-tree-container__node", "document-tree-container__folder"], ["cdkTreeNodeToggle", "", 1, "node"], [1, "node__icon"], ["alt", "Folder icon", 1, "node__iconImg", 3, "src"], [1, "node__count"], [1, "node__name", "node__name--folder"], ["cdkTreeNodeOutlet", ""]], template: function CaseFileViewFolderComponent_Template(rf, ctx) {
23220
23318
  if (rf & 1) {
23221
23319
  i0.ɵɵelementStart(0, "div", 0)(1, "div", 1);
23222
23320
  i0.ɵɵelement(2, "input", 2);
@@ -23241,7 +23339,7 @@ CaseFileViewFolderComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
23241
23339
  (function () {
23242
23340
  (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaseFileViewFolderComponent, [{
23243
23341
  type: Component,
23244
- args: [{ selector: 'ccd-case-file-view-folder', template: "<div class=\"document-filter-container\">\n <div class=\"form-group document-filter\" [formGroup]=\"documentFilterFormGroup\">\n <input class=\"form-control document-search\"\n type=\"search\"\n id=\"document-search\"\n name=\"documentSearchFormControl\"\n formControlName=\"documentSearchFormControl\"\n placeholder=\"Search by document name\">\n </div>\n</div>\n\n<div class=\"document-folders-header\">\n <div class=\"document-folders-header__title\">Documents ({{ documentCount }})</div>\n <div>\n <ccd-case-file-view-folder-sort\n (sortAscending)=\"sortDataSourceAscending($event)\"\n (sortDescending)=\"sortDataSourceDescending($event)\"\n ></ccd-case-file-view-folder-sort>\n </div>\n</div>\n\n<div class=\"document-tree-container\" *ngIf=\"documentTreeData\">\n <div *ngIf=\"!nestedDataSource || nestedDataSource.length === 0\">\n No results found\n </div>\n <div>\n <cdk-tree [dataSource]=\"nestedDataSource\" [treeControl]=\"nestedTreeControl\">\n <!-- document -->\n <cdk-nested-tree-node class=\"document-tree-container__node document-tree-container__node--document\" *cdkTreeNodeDef=\"let node\">\n <button class=\"node\" (click)=\"selectedNodeItem = node; clickedDocument.emit(node)\"\n [class.node--selected]=\"selectedNodeItem?.name === node.name\">\n <div class=\"node__icon\" disabled>\n <img src=\"/assets/img/case-file-view/case-file-view-document.svg\" class=\"node__iconImg\" alt=\"Document icon\">\n </div>\n <span class=\"node__name node-name-document\">\n {{node.name}}\n <br>\n <span class=\"node__document-upload-timestamp\">{{node.upload_timestamp}}</span>\n </span>\n <div class=\"node__document-options\">\n <ccd-case-file-view-folder-document-actions\n (changeFolderAction)=\"triggerDocumentAction('changeFolder', node)\"\n (openInANewTabAction)=\"triggerDocumentAction('openInANewTab', node)\"\n (downloadAction)=\"triggerDocumentAction('download', node)\"\n (printAction)=\"triggerDocumentAction('print', node)\"\n [allowMoving]=\"allowMoving\"\n >\n </ccd-case-file-view-folder-document-actions>\n </div>\n </button>\n </cdk-nested-tree-node>\n <!-- folder-->\n <cdk-nested-tree-node class=\"document-tree-container__node document-tree-container__folder\" *cdkTreeNodeDef=\"let node; when: nestedChildren\">\n <button class=\"node\" cdkTreeNodeToggle>\n <div class=\"node__icon\" [attr.aria-label]=\"'toggle ' + node.name\" >\n <img class=\"node__iconImg\"\n [src]=\"nestedTreeControl.isExpanded(node) ? '/assets/images/folder-open.png' : '/assets/images/folder.png'\" alt=\"Folder icon\">\n <span class=\"node__count\">{{node.childDocumentCount}}</span>\n </div>\n <span class=\"node__name node__name--folder\">{{node.name}}</span>\n </button>\n\n <div [class.document-tree-invisible]=\"!nestedTreeControl.isExpanded(node)\">\n <ng-container cdkTreeNodeOutlet></ng-container>\n </div>\n </cdk-nested-tree-node>\n </cdk-tree>\n </div>\n</div>\n", styles: [":host{display:flex;height:100%;flex-direction:column}:host .document-tree-container{flex:1 0}.document-filter-container{border-bottom:2px solid #C9C9C9}.document-filter-container .document-filter{padding:10px}.document-filter-container .document-filter .document-search{background:url(/assets/images/icon-search-black.svg) no-repeat right #FFF;background-position-x:calc(100% - 4px);padding-right:30px;width:100%}.document-filter-container .documents-title{height:30%;margin-left:8px;font-weight:700}.document-tree-container{padding:4px;overflow-x:hidden;overflow-y:scroll}.document-tree-container__node{display:block}.document-tree-container__node .document-tree-container__node{padding-left:40px}.document-tree-container .document-tree-invisible{display:none}.document-tree-container::-webkit-scrollbar{width:7px}.document-tree-container::-webkit-scrollbar-thumb{border:4px solid rgba(0,0,0,0);background-clip:padding-box;border-radius:9999px;background-color:#aaa}.document-tree-container::-webkit-scrollbar-button{display:none}.document-tree-container::-webkit-scrollbar-track-piece{background:#EEE}.document-tree-container::-webkit-scrollbar-thumb{background:#CCC}.document-folders-header{display:flex;align-items:center;justify-content:space-between;border-bottom:2px solid #C9C9C9;padding:10px}.document-folders-header__title{font-weight:700}.node{display:flex;align-items:center;width:100%;padding:10px;background:none;border:0;cursor:pointer;white-space:nowrap}.node--selected{background:#fff2cc}.node__icon{position:relative;display:inline-block}.node__count{color:#fff;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:.875rem;padding-top:4px}.node__iconImg{display:block;height:30px;width:30px}.node__name{margin-left:6px;font-size:1rem;overflow:hidden;text-overflow:ellipsis}.node__document-options{margin-left:auto;margin-right:0}.node__document-upload-timestamp{font-size:.8rem;float:left;padding-left:10px}\n"] }]
23342
+ args: [{ selector: 'ccd-case-file-view-folder', template: "<div class=\"document-filter-container\">\n <div class=\"form-group document-filter\" [formGroup]=\"documentFilterFormGroup\">\n <input class=\"form-control document-search\"\n type=\"search\"\n id=\"document-search\"\n name=\"documentSearchFormControl\"\n formControlName=\"documentSearchFormControl\"\n placeholder=\"Search by document name\"\n aria-label=\"Search by document name\">\n </div>\n</div>\n\n<div class=\"document-folders-header\">\n <div class=\"document-folders-header__title\">Documents ({{ documentCount }})</div>\n <div>\n <ccd-case-file-view-folder-sort\n (sortAscending)=\"sortDataSourceAscending($event)\"\n (sortDescending)=\"sortDataSourceDescending($event)\"\n ></ccd-case-file-view-folder-sort>\n </div>\n</div>\n\n<div class=\"document-tree-container\" *ngIf=\"documentTreeData\">\n <div *ngIf=\"!nestedDataSource || nestedDataSource.length === 0\">\n No results found\n </div>\n <div>\n <cdk-tree [dataSource]=\"nestedDataSource\" [treeControl]=\"nestedTreeControl\">\n <!-- document -->\n <cdk-nested-tree-node class=\"document-tree-container__node document-tree-container__node--document\" *cdkTreeNodeDef=\"let node\">\n <button class=\"node\" (click)=\"selectedNodeItem = node; clickedDocument.emit(node)\"\n [class.node--selected]=\"selectedNodeItem?.name === node.name\">\n <div class=\"node__icon\" disabled>\n <img src=\"/assets/img/case-file-view/case-file-view-document.svg\" class=\"node__iconImg\" alt=\"Document icon\">\n </div>\n <span class=\"node__name node-name-document\">\n {{node.name}}\n <br>\n <span class=\"node__document-upload-timestamp\">{{node.upload_timestamp}}</span>\n </span>\n <div class=\"node__document-options\">\n <ccd-case-file-view-folder-document-actions\n (changeFolderAction)=\"triggerDocumentAction('changeFolder', node)\"\n (openInANewTabAction)=\"triggerDocumentAction('openInANewTab', node)\"\n (downloadAction)=\"triggerDocumentAction('download', node)\"\n (printAction)=\"triggerDocumentAction('print', node)\"\n [allowMoving]=\"allowMoving\"\n >\n </ccd-case-file-view-folder-document-actions>\n </div>\n </button>\n </cdk-nested-tree-node>\n <!-- folder-->\n <cdk-nested-tree-node class=\"document-tree-container__node document-tree-container__folder\" *cdkTreeNodeDef=\"let node; when: nestedChildren\">\n <button class=\"node\" cdkTreeNodeToggle>\n <div class=\"node__icon\" [attr.aria-label]=\"'toggle ' + node.name\" >\n <img class=\"node__iconImg\"\n [src]=\"nestedTreeControl.isExpanded(node) ? '/assets/images/folder-open.png' : '/assets/images/folder.png'\" alt=\"Folder icon\">\n <span class=\"node__count\">{{node.childDocumentCount}}</span>\n </div>\n <span class=\"node__name node__name--folder\">{{node.name}}</span>\n </button>\n\n <div [class.document-tree-invisible]=\"!nestedTreeControl.isExpanded(node)\">\n <ng-container cdkTreeNodeOutlet></ng-container>\n </div>\n </cdk-nested-tree-node>\n </cdk-tree>\n </div>\n</div>\n", styles: [":host{display:flex;height:100%;flex-direction:column}:host .document-tree-container{flex:1 0}.document-filter-container{border-bottom:2px solid #C9C9C9}.document-filter-container .document-filter{padding:10px}.document-filter-container .document-filter .document-search{background:url(/assets/images/icon-search-black.svg) no-repeat right #FFF;background-position-x:calc(100% - 4px);padding-right:30px;width:100%}.document-filter-container .documents-title{height:30%;margin-left:8px;font-weight:700}.document-tree-container{padding:4px;overflow-x:hidden;overflow-y:scroll}.document-tree-container__node{display:block}.document-tree-container__node .document-tree-container__node{padding-left:40px}.document-tree-container .document-tree-invisible{display:none}.document-tree-container::-webkit-scrollbar{width:7px}.document-tree-container::-webkit-scrollbar-thumb{border:4px solid rgba(0,0,0,0);background-clip:padding-box;border-radius:9999px;background-color:#aaa}.document-tree-container::-webkit-scrollbar-button{display:none}.document-tree-container::-webkit-scrollbar-track-piece{background:#EEE}.document-tree-container::-webkit-scrollbar-thumb{background:#CCC}.document-folders-header{display:flex;align-items:center;justify-content:space-between;border-bottom:2px solid #C9C9C9;padding:10px}.document-folders-header__title{font-weight:700}.node{display:flex;align-items:center;width:100%;padding:10px;background:none;border:0;cursor:pointer;white-space:nowrap}.node--selected{background:#fff2cc}.node__icon{position:relative;display:inline-block}.node__count{color:#fff;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:.875rem;padding-top:4px}.node__iconImg{display:block;height:30px;width:30px}.node__name{margin-left:6px;font-size:1rem;overflow:hidden;text-overflow:ellipsis}.node__document-options{margin-left:auto;margin-right:0}.node__document-upload-timestamp{font-size:.8rem;float:left;padding-left:10px}\n"] }]
23245
23343
  }], function () { return [{ type: WindowService }, { type: i1$1.Router }, { type: DocumentManagementService }, { type: i1$3.MatLegacyDialog }, { type: AbstractAppConfig }]; }, { categoriesAndDocuments: [{
23246
23344
  type: Input
23247
23345
  }], allowMoving: [{
@@ -24908,7 +25006,7 @@ function SelectFlagTypeComponent_ng_container_0_div_11_div_8_Template(rf, ctx) {
24908
25006
  }
24909
25007
  }
24910
25008
  const _c0$n = function (a0) { return { "form-group-error": a0 }; };
24911
- const _c1$7 = function (a0) { return { "govuk-input--error": a0 }; };
25009
+ const _c1$8 = function (a0) { return { "govuk-input--error": a0 }; };
24912
25010
  function SelectFlagTypeComponent_ng_container_0_div_11_Template(rf, ctx) {
24913
25011
  if (rf & 1) {
24914
25012
  i0.ɵɵelementStart(0, "div", 18)(1, "div", 3)(2, "label", 19);
@@ -24930,7 +25028,7 @@ function SelectFlagTypeComponent_ng_container_0_div_11_Template(rf, ctx) {
24930
25028
  i0.ɵɵadvance(3);
24931
25029
  i0.ɵɵproperty("ngIf", ctx_r7.flagTypeErrorMessage.length > 0);
24932
25030
  i0.ɵɵadvance(1);
24933
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(13, _c1$7, ctx_r7.flagTypeErrorMessage.length > 0))("name", ctx_r7.caseFlagFormField.OTHER_FLAG_DESCRIPTION)("formControlName", ctx_r7.caseFlagFormField.OTHER_FLAG_DESCRIPTION);
25031
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(13, _c1$8, ctx_r7.flagTypeErrorMessage.length > 0))("name", ctx_r7.caseFlagFormField.OTHER_FLAG_DESCRIPTION)("formControlName", ctx_r7.caseFlagFormField.OTHER_FLAG_DESCRIPTION);
24934
25032
  i0.ɵɵadvance(1);
24935
25033
  i0.ɵɵproperty("ngIf", !ctx_r7.isDisplayContextParameterExternal && !ctx_r7.isCaseLevelFlag && ctx_r7.isDisplayContextParameter2Point1Enabled);
24936
25034
  }
@@ -25500,7 +25598,7 @@ function UpdateFlagComponent_div_22_Template(rf, ctx) {
25500
25598
  i0.ɵɵproperty("ngIf", ctx_r9.selectedFlag.flagDetailDisplay.flagDetail.status === "Active");
25501
25599
  }
25502
25600
  }
25503
- const _c1$6 = function (a0) { return { "form-group-error": a0 }; };
25601
+ const _c1$7 = function (a0) { return { "form-group-error": a0 }; };
25504
25602
  class UpdateFlagComponent {
25505
25603
  constructor(rpxTranslationService) {
25506
25604
  this.rpxTranslationService = rpxTranslationService;
@@ -25709,7 +25807,7 @@ UpdateFlagComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UpdateF
25709
25807
  const _r3 = i0.ɵɵreference(17);
25710
25808
  i0.ɵɵproperty("formGroup", ctx.formGroup);
25711
25809
  i0.ɵɵadvance(2);
25712
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(23, _c1$6, ctx.errorMessages.length > 0));
25810
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(23, _c1$7, ctx.errorMessages.length > 0));
25713
25811
  i0.ɵɵadvance(3);
25714
25812
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(6, 13, ctx.updateFlagTitle), " ");
25715
25813
  i0.ɵɵadvance(2);
@@ -27105,7 +27203,7 @@ const CUSTOM_MOMENT_FORMATS = {
27105
27203
  };
27106
27204
 
27107
27205
  const _c0$g = ["picker"];
27108
- const _c1$5 = ["input"];
27206
+ const _c1$6 = ["input"];
27109
27207
  function DatetimePickerComponent_span_3_Template(rf, ctx) {
27110
27208
  if (rf & 1) {
27111
27209
  i0.ɵɵelementStart(0, "span", 11);
@@ -27169,7 +27267,7 @@ function DatetimePickerComponent_span_7_Template(rf, ctx) {
27169
27267
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, "This date is later than the maximum date allowed"));
27170
27268
  }
27171
27269
  }
27172
- const _c2$1 = function (a0) { return { "form-group-error": a0 }; };
27270
+ const _c2$2 = function (a0) { return { "form-group-error": a0 }; };
27173
27271
  class DatetimePickerComponent extends AbstractFormFieldComponent {
27174
27272
  constructor(formatTranslationService, ngxMatDateFormats) {
27175
27273
  super();
@@ -27335,7 +27433,7 @@ DatetimePickerComponent.ɵfac = function DatetimePickerComponent_Factory(t) { re
27335
27433
  DatetimePickerComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DatetimePickerComponent, selectors: [["ccd-datetime-picker"]], viewQuery: function DatetimePickerComponent_Query(rf, ctx) {
27336
27434
  if (rf & 1) {
27337
27435
  i0.ɵɵviewQuery(_c0$g, 5);
27338
- i0.ɵɵviewQuery(_c1$5, 5);
27436
+ i0.ɵɵviewQuery(_c1$6, 5);
27339
27437
  }
27340
27438
  if (rf & 2) {
27341
27439
  let _t;
@@ -27371,7 +27469,7 @@ DatetimePickerComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Dat
27371
27469
  }
27372
27470
  if (rf & 2) {
27373
27471
  const _r6 = i0.ɵɵreference(13);
27374
- i0.ɵɵproperty("id", ctx.caseField.id)("ngClass", i0.ɵɵpureFunction1(24, _c2$1, ctx.dateControl && !ctx.dateControl.valid && ctx.dateControl.dirty));
27472
+ i0.ɵɵproperty("id", ctx.caseField.id)("ngClass", i0.ɵɵpureFunction1(24, _c2$2, ctx.dateControl && !ctx.dateControl.valid && ctx.dateControl.dirty));
27375
27473
  i0.ɵɵadvance(3);
27376
27474
  i0.ɵɵproperty("ngIf", ctx.caseField.label);
27377
27475
  i0.ɵɵadvance(1);
@@ -27625,7 +27723,7 @@ function EventLogTableComponent_tr_20_div_6_Template(rf, ctx) {
27625
27723
  i0.ɵɵtextInterpolate(ctx_r5.getSignificantItemDesc(event_r1));
27626
27724
  }
27627
27725
  }
27628
- const _c1$4 = function (a0) { return { "EventLogTable-Selected": a0 }; };
27726
+ const _c1$5 = function (a0) { return { "EventLogTable-Selected": a0 }; };
27629
27727
  function EventLogTableComponent_tr_20_Template(rf, ctx) {
27630
27728
  if (rf & 1) {
27631
27729
  const _r18 = i0.ɵɵgetCurrentView();
@@ -27658,7 +27756,7 @@ function EventLogTableComponent_tr_20_Template(rf, ctx) {
27658
27756
  if (rf & 2) {
27659
27757
  const event_r1 = ctx.$implicit;
27660
27758
  const ctx_r0 = i0.ɵɵnextContext();
27661
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(25, _c1$4, ctx_r0.selected === event_r1));
27759
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(25, _c1$5, ctx_r0.selected === event_r1));
27662
27760
  i0.ɵɵattribute("aria-label", ctx_r0.getAriaLabelforRow(event_r1));
27663
27761
  i0.ɵɵadvance(2);
27664
27762
  i0.ɵɵproperty("ngSwitch", ctx_r0.isPartOfCaseTimeline);
@@ -29726,6 +29824,36 @@ function CaseEditSubmitComponent_div_0_ng_container_13_Template(rf, ctx) {
29726
29824
  i0.ɵɵproperty("ngForOf", ctx_r8.showSummaryFields);
29727
29825
  }
29728
29826
  }
29827
+ function CaseEditSubmitComponent_div_0_ng_container_14_span_8_Template(rf, ctx) {
29828
+ if (rf & 1) {
29829
+ i0.ɵɵelementStart(0, "span", 48);
29830
+ i0.ɵɵtext(1);
29831
+ i0.ɵɵpipe(2, "rpxTranslate");
29832
+ i0.ɵɵpipe(3, "ccdFirstError");
29833
+ i0.ɵɵelementEnd();
29834
+ }
29835
+ if (rf & 2) {
29836
+ const ctx_r36 = i0.ɵɵnextContext(3);
29837
+ i0.ɵɵadvance(1);
29838
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, i0.ɵɵpipeBind2(3, 3, ctx_r36.summary.errors, ctx_r36.eventSummaryLabel)), " ");
29839
+ }
29840
+ }
29841
+ function CaseEditSubmitComponent_div_0_ng_container_14_span_13_Template(rf, ctx) {
29842
+ if (rf & 1) {
29843
+ i0.ɵɵelementStart(0, "span", 48);
29844
+ i0.ɵɵtext(1);
29845
+ i0.ɵɵpipe(2, "rpxTranslate");
29846
+ i0.ɵɵpipe(3, "ccdFirstError");
29847
+ i0.ɵɵelementEnd();
29848
+ }
29849
+ if (rf & 2) {
29850
+ const ctx_r37 = i0.ɵɵnextContext(3);
29851
+ i0.ɵɵadvance(1);
29852
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, i0.ɵɵpipeBind2(3, 3, ctx_r37.description.errors, ctx_r37.eventDescriptionLabel)), " ");
29853
+ }
29854
+ }
29855
+ const _c1$4 = function (a0) { return { "form-group-error": a0 }; };
29856
+ const _c2$1 = function (a0) { return { "govuk-input--error": a0 }; };
29729
29857
  function CaseEditSubmitComponent_div_0_ng_container_14_Template(rf, ctx) {
29730
29858
  if (rf & 1) {
29731
29859
  i0.ɵɵelementContainerStart(0);
@@ -29736,21 +29864,38 @@ function CaseEditSubmitComponent_div_0_ng_container_14_Template(rf, ctx) {
29736
29864
  i0.ɵɵelementStart(6, "span", 43);
29737
29865
  i0.ɵɵtext(7, "A few words describing the purpose of the event.");
29738
29866
  i0.ɵɵelementEnd()();
29739
- i0.ɵɵelement(8, "input", 44);
29867
+ i0.ɵɵtemplate(8, CaseEditSubmitComponent_div_0_ng_container_14_span_8_Template, 4, 6, "span", 44);
29868
+ i0.ɵɵelement(9, "input", 45);
29740
29869
  i0.ɵɵelementEnd();
29741
- i0.ɵɵelementStart(9, "div", 41)(10, "label", 45);
29742
- i0.ɵɵtext(11, "Event description (optional)");
29870
+ i0.ɵɵelementStart(10, "div", 41)(11, "label", 46);
29871
+ i0.ɵɵtext(12, "Event description (optional)");
29743
29872
  i0.ɵɵelementEnd();
29744
- i0.ɵɵelement(12, "textarea", 46);
29873
+ i0.ɵɵtemplate(13, CaseEditSubmitComponent_div_0_ng_container_14_span_13_Template, 4, 6, "span", 44);
29874
+ i0.ɵɵelement(14, "textarea", 47);
29745
29875
  i0.ɵɵelementEnd()();
29746
29876
  i0.ɵɵelementContainerEnd();
29747
29877
  }
29878
+ if (rf & 2) {
29879
+ const ctx_r9 = i0.ɵɵnextContext(2);
29880
+ i0.ɵɵadvance(3);
29881
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(6, _c1$4, !!ctx_r9.summary && !ctx_r9.summary.valid && (ctx_r9.summary.dirty || ctx_r9.summary.touched)));
29882
+ i0.ɵɵadvance(5);
29883
+ i0.ɵɵproperty("ngIf", (ctx_r9.summary == null ? null : ctx_r9.summary.errors) && (ctx_r9.summary.dirty || ctx_r9.summary.touched));
29884
+ i0.ɵɵadvance(1);
29885
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(8, _c2$1, (ctx_r9.summary == null ? null : ctx_r9.summary.errors) && (ctx_r9.summary.dirty || ctx_r9.summary.touched)));
29886
+ i0.ɵɵadvance(1);
29887
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(10, _c1$4, !!ctx_r9.description && !ctx_r9.description.valid && (ctx_r9.description.dirty || ctx_r9.description.touched)));
29888
+ i0.ɵɵadvance(3);
29889
+ i0.ɵɵproperty("ngIf", (ctx_r9.description == null ? null : ctx_r9.description.errors) && (ctx_r9.description.dirty || ctx_r9.description.touched));
29890
+ i0.ɵɵadvance(1);
29891
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(12, _c2$1, (ctx_r9.description == null ? null : ctx_r9.description.errors) && (ctx_r9.description.dirty || ctx_r9.description.touched)));
29892
+ }
29748
29893
  }
29749
29894
  function CaseEditSubmitComponent_div_0_button_16_Template(rf, ctx) {
29750
29895
  if (rf & 1) {
29751
- const _r37 = i0.ɵɵgetCurrentView();
29752
- i0.ɵɵelementStart(0, "button", 47);
29753
- i0.ɵɵlistener("click", function CaseEditSubmitComponent_div_0_button_16_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r37); const ctx_r36 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r36.previous()); });
29896
+ const _r39 = i0.ɵɵgetCurrentView();
29897
+ i0.ɵɵelementStart(0, "button", 49);
29898
+ i0.ɵɵlistener("click", function CaseEditSubmitComponent_div_0_button_16_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r39); const ctx_r38 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r38.previous()); });
29754
29899
  i0.ɵɵtext(1);
29755
29900
  i0.ɵɵpipe(2, "rpxTranslate");
29756
29901
  i0.ɵɵelementEnd();
@@ -29764,7 +29909,7 @@ function CaseEditSubmitComponent_div_0_button_16_Template(rf, ctx) {
29764
29909
  }
29765
29910
  function CaseEditSubmitComponent_div_0_Template(rf, ctx) {
29766
29911
  if (rf & 1) {
29767
- const _r39 = i0.ɵɵgetCurrentView();
29912
+ const _r41 = i0.ɵɵgetCurrentView();
29768
29913
  i0.ɵɵelementStart(0, "div")(1, "h1", 2);
29769
29914
  i0.ɵɵtext(2);
29770
29915
  i0.ɵɵpipe(3, "rpxTranslate");
@@ -29774,13 +29919,13 @@ function CaseEditSubmitComponent_div_0_Template(rf, ctx) {
29774
29919
  i0.ɵɵtemplate(7, CaseEditSubmitComponent_div_0_ng_template_7_Template, 1, 1, "ng-template", null, 5, i0.ɵɵtemplateRefExtractor);
29775
29920
  i0.ɵɵelement(9, "ccd-case-edit-generic-errors", 6);
29776
29921
  i0.ɵɵelementStart(10, "ccd-callback-errors", 7);
29777
- i0.ɵɵlistener("callbackErrorsContext", function CaseEditSubmitComponent_div_0_Template_ccd_callback_errors_callbackErrorsContext_10_listener($event) { i0.ɵɵrestoreView(_r39); const ctx_r38 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r38.callbackErrorsNotify($event)); });
29922
+ i0.ɵɵlistener("callbackErrorsContext", function CaseEditSubmitComponent_div_0_Template_ccd_callback_errors_callbackErrorsContext_10_listener($event) { i0.ɵɵrestoreView(_r41); const ctx_r40 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r40.callbackErrorsNotify($event)); });
29778
29923
  i0.ɵɵelementEnd();
29779
29924
  i0.ɵɵelementStart(11, "form", 8);
29780
- i0.ɵɵlistener("submit", function CaseEditSubmitComponent_div_0_Template_form_submit_11_listener() { i0.ɵɵrestoreView(_r39); const ctx_r40 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r40.submit()); });
29925
+ i0.ɵɵlistener("submit", function CaseEditSubmitComponent_div_0_Template_form_submit_11_listener() { i0.ɵɵrestoreView(_r41); const ctx_r42 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r42.submit()); });
29781
29926
  i0.ɵɵtemplate(12, CaseEditSubmitComponent_div_0_ng_container_12_Template, 8, 5, "ng-container", 0);
29782
29927
  i0.ɵɵtemplate(13, CaseEditSubmitComponent_div_0_ng_container_13_Template, 4, 1, "ng-container", 0);
29783
- i0.ɵɵtemplate(14, CaseEditSubmitComponent_div_0_ng_container_14_Template, 13, 0, "ng-container", 0);
29928
+ i0.ɵɵtemplate(14, CaseEditSubmitComponent_div_0_ng_container_14_Template, 15, 14, "ng-container", 0);
29784
29929
  i0.ɵɵelementStart(15, "div", 9);
29785
29930
  i0.ɵɵtemplate(16, CaseEditSubmitComponent_div_0_button_16_Template, 3, 4, "button", 10);
29786
29931
  i0.ɵɵelementStart(17, "button", 11);
@@ -29788,7 +29933,7 @@ function CaseEditSubmitComponent_div_0_Template(rf, ctx) {
29788
29933
  i0.ɵɵpipe(19, "rpxTranslate");
29789
29934
  i0.ɵɵelementEnd()();
29790
29935
  i0.ɵɵelementStart(20, "p", 12)(21, "a", 13);
29791
- i0.ɵɵlistener("click", function CaseEditSubmitComponent_div_0_Template_a_click_21_listener() { i0.ɵɵrestoreView(_r39); const ctx_r41 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r41.cancel()); });
29936
+ i0.ɵɵlistener("click", function CaseEditSubmitComponent_div_0_Template_a_click_21_listener() { i0.ɵɵrestoreView(_r41); const ctx_r43 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r43.cancel()); });
29792
29937
  i0.ɵɵtext(22);
29793
29938
  i0.ɵɵpipe(23, "rpxTranslate");
29794
29939
  i0.ɵɵelementEnd()()()();
@@ -29827,9 +29972,9 @@ function CaseEditSubmitComponent_div_0_Template(rf, ctx) {
29827
29972
  }
29828
29973
  function CaseEditSubmitComponent_ccd_case_event_completion_1_Template(rf, ctx) {
29829
29974
  if (rf & 1) {
29830
- const _r43 = i0.ɵɵgetCurrentView();
29831
- i0.ɵɵelementStart(0, "ccd-case-event-completion", 48);
29832
- i0.ɵɵlistener("eventCanBeCompleted", function CaseEditSubmitComponent_ccd_case_event_completion_1_Template_ccd_case_event_completion_eventCanBeCompleted_0_listener($event) { i0.ɵɵrestoreView(_r43); const ctx_r42 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r42.onEventCanBeCompleted($event)); });
29975
+ const _r45 = i0.ɵɵgetCurrentView();
29976
+ i0.ɵɵelementStart(0, "ccd-case-event-completion", 50);
29977
+ i0.ɵɵlistener("eventCanBeCompleted", function CaseEditSubmitComponent_ccd_case_event_completion_1_Template_ccd_case_event_completion_eventCanBeCompleted_0_listener($event) { i0.ɵɵrestoreView(_r45); const ctx_r44 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r44.onEventCanBeCompleted($event)); });
29833
29978
  i0.ɵɵelementEnd();
29834
29979
  }
29835
29980
  if (rf & 2) {
@@ -29839,14 +29984,17 @@ function CaseEditSubmitComponent_ccd_case_event_completion_1_Template(rf, ctx) {
29839
29984
  }
29840
29985
  // @dynamic
29841
29986
  class CaseEditSubmitComponent {
29842
- constructor(caseEdit, fieldsUtils, caseFieldService, route, orderService, profileNotifier) {
29987
+ constructor(caseEdit, fieldsUtils, caseFieldService, route, orderService, profileNotifier, formValidatorsService) {
29843
29988
  this.caseEdit = caseEdit;
29844
29989
  this.fieldsUtils = fieldsUtils;
29845
29990
  this.caseFieldService = caseFieldService;
29846
29991
  this.route = route;
29847
29992
  this.orderService = orderService;
29848
29993
  this.profileNotifier = profileNotifier;
29994
+ this.formValidatorsService = formValidatorsService;
29849
29995
  this.paletteContext = PaletteContext.CHECK_YOUR_ANSWER;
29996
+ this.eventSummaryLabel = 'Event summary';
29997
+ this.eventDescriptionLabel = 'Event description';
29850
29998
  }
29851
29999
  get isDisabled() {
29852
30000
  // EUI-3452.
@@ -29857,7 +30005,7 @@ class CaseEditSubmitComponent {
29857
30005
  }
29858
30006
  ngOnInit() {
29859
30007
  var _a, _b, _c;
29860
- this.profileSubscription = this.profileNotifier.profile.subscribe(_ => this.profile = _);
30008
+ this.profileSubscription = this.profileNotifier.profile.subscribe((_) => this.profile = _);
29861
30009
  this.eventTrigger = this.caseEdit.eventTrigger;
29862
30010
  this.triggerText = this.eventTrigger.end_button_label || CallbackErrorsComponent.TRIGGER_TEXT_SUBMIT;
29863
30011
  this.editForm = this.caseEdit.form;
@@ -29870,10 +30018,12 @@ class CaseEditSubmitComponent {
29870
30018
  // Indicates if the submission is for a Case Flag, as opposed to a "regular" form submission, by the presence of
29871
30019
  // a FlagLauncher field in the event trigger
29872
30020
  this.caseEdit.isCaseFlagSubmission =
29873
- this.eventTrigger.case_fields.some(caseField => FieldsUtils.isCaseFieldOfType(caseField, ['FlagLauncher']));
30021
+ this.eventTrigger.case_fields.some((caseField) => FieldsUtils.isCaseFieldOfType(caseField, ['FlagLauncher']));
29874
30022
  this.caseEdit.isLinkedCasesSubmission =
29875
30023
  this.eventTrigger.case_fields.some(caseField => FieldsUtils.isCaseFieldOfType(caseField, ['ComponentLauncher']));
29876
30024
  this.pageTitle = this.getPageTitle();
30025
+ this.summary = this.formValidatorsService.addMarkDownValidators(this.editForm, 'event.summary');
30026
+ this.description = this.formValidatorsService.addMarkDownValidators(this.editForm, 'event.description');
29877
30027
  }
29878
30028
  ngOnDestroy() {
29879
30029
  /* istanbul ignore else */
@@ -29882,12 +30032,14 @@ class CaseEditSubmitComponent {
29882
30032
  }
29883
30033
  }
29884
30034
  submit() {
29885
- this.caseEdit.submitForm({
29886
- eventTrigger: this.eventTrigger,
29887
- form: this.editForm,
29888
- submit: this.caseEdit.submit,
29889
- caseDetails: this.caseEdit.caseDetails,
29890
- });
30035
+ if (this.summary.valid && this.description.valid) {
30036
+ this.caseEdit.submitForm({
30037
+ eventTrigger: this.eventTrigger,
30038
+ form: this.editForm,
30039
+ submit: this.caseEdit.submit,
30040
+ caseDetails: this.caseEdit.caseDetails
30041
+ });
30042
+ }
29891
30043
  }
29892
30044
  onEventCanBeCompleted(eventCanBeCompleted) {
29893
30045
  this.caseEdit.onEventCanBeCompleted({
@@ -29895,7 +30047,7 @@ class CaseEditSubmitComponent {
29895
30047
  eventCanBeCompleted,
29896
30048
  caseDetails: this.caseEdit.caseDetails,
29897
30049
  form: this.editForm,
29898
- submit: this.caseEdit.submit,
30050
+ submit: this.caseEdit.submit
29899
30051
  });
29900
30052
  }
29901
30053
  getPageTitle() {
@@ -29971,7 +30123,7 @@ class CaseEditSubmitComponent {
29971
30123
  }
29972
30124
  }
29973
30125
  readOnlySummaryFieldsToDisplayExists() {
29974
- return this.eventTrigger.case_fields.some(field => field.show_summary_content_option >= 0);
30126
+ return this.eventTrigger.case_fields.some((field) => field.show_summary_content_option >= 0);
29975
30127
  }
29976
30128
  showEventNotes() {
29977
30129
  var _a;
@@ -29987,7 +30139,7 @@ class CaseEditSubmitComponent {
29987
30139
  }
29988
30140
  getLastPageShown() {
29989
30141
  let lastPage;
29990
- this.wizard.reverse().forEach(page => {
30142
+ this.wizard.reverse().forEach((page) => {
29991
30143
  if (!lastPage && this.isShown(page)) {
29992
30144
  lastPage = page;
29993
30145
  }
@@ -30006,7 +30158,7 @@ class CaseEditSubmitComponent {
30006
30158
  }
30007
30159
  isShown(page) {
30008
30160
  const fields = this.fieldsUtils
30009
- .mergeCaseFieldsAndFormFields(this.eventTrigger.case_fields, this.editForm.controls['data'].value);
30161
+ .mergeCaseFieldsAndFormFields(this.eventTrigger.case_fields, this.editForm.controls.data.value);
30010
30162
  return page.parsedShowCondition.match(fields);
30011
30163
  }
30012
30164
  canShowFieldInCYA(field) {
@@ -30015,7 +30167,7 @@ class CaseEditSubmitComponent {
30015
30167
  sortFieldsByShowSummaryContent(fields) {
30016
30168
  return this.orderService
30017
30169
  .sort(fields, CaseEditSubmitComponent.SHOW_SUMMARY_CONTENT_COMPARE_FUNCTION)
30018
- .filter(cf => cf.show_summary_content_option);
30170
+ .filter((cf) => cf.show_summary_content_option);
30019
30171
  }
30020
30172
  getCaseFields() {
30021
30173
  if (this.caseEdit.caseDetails) {
@@ -30034,9 +30186,7 @@ class CaseEditSubmitComponent {
30034
30186
  if (this.eventTrigger.can_save_draft) {
30035
30187
  return 'Return to case list';
30036
30188
  }
30037
- else {
30038
- return 'Cancel';
30039
- }
30189
+ return 'Cancel';
30040
30190
  }
30041
30191
  }
30042
30192
  CaseEditSubmitComponent.SHOW_SUMMARY_CONTENT_COMPARE_FUNCTION = (a, b) => {
@@ -30050,8 +30200,8 @@ CaseEditSubmitComponent.SHOW_SUMMARY_CONTENT_COMPARE_FUNCTION = (a, b) => {
30050
30200
  }
30051
30201
  return a.show_summary_content_option - b.show_summary_content_option;
30052
30202
  };
30053
- CaseEditSubmitComponent.ɵfac = function CaseEditSubmitComponent_Factory(t) { return new (t || CaseEditSubmitComponent)(i0.ɵɵdirectiveInject(CaseEditComponent), i0.ɵɵdirectiveInject(FieldsUtils), i0.ɵɵdirectiveInject(CaseFieldService), i0.ɵɵdirectiveInject(i1$1.ActivatedRoute), i0.ɵɵdirectiveInject(OrderService), i0.ɵɵdirectiveInject(ProfileNotifier)); };
30054
- CaseEditSubmitComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CaseEditSubmitComponent, selectors: [["ccd-case-edit-submit"]], decls: 2, vars: 2, consts: [[4, "ngIf"], [3, "eventCompletionParams", "eventCanBeCompleted", 4, "ngIf"], [1, "govuk-heading-l"], [4, "ngIf", "ngIfThen", "ngIfElse"], ["titleBlock", ""], ["idBlock", ""], [3, "error"], [3, "callbackErrorsSubject", "callbackErrorsContext"], [1, "check-your-answers", 3, "formGroup", "submit"], [1, "form-group", "form-group-related"], ["class", "button button-secondary", "type", "button", 3, "disabled", "click", 4, "ngIf"], ["type", "submit", 1, "button", 3, "disabled"], [1, "cancel"], ["href", "javascript:void(0)", 3, "click"], [3, "content"], ["class", "heading-h2", 4, "ngIf"], [1, "heading-h2"], ["class", "text-16", 4, "ngIf"], ["aria-describedby", "check your answers table", 1, "form-table"], [4, "ngFor", "ngForOf"], [1, "text-16"], ["ccdLabelSubstitutor", "", 3, "caseField", "hidden", "formGroup", "contextFields"], ["class", "valign-top case-field-label", 4, "ngIf"], [1, "form-cell", "case-field-content"], [3, "formGroup", "topLevelFormGroup", "caseField", "context", "caseFields"], [1, "valign-top", "case-field-label"], [1, "valign-top", "check-your-answers__change", "case-field-change"], ["href", "javascript:void(0)", 3, "click", 4, "ngIf"], ["aria-describedby", "summary fields table", 1, "summary-fields"], [3, "ngSwitch"], ["ccdLabelSubstitutor", "", 3, "caseField", "formGroup", "contextFields", 4, "ngSwitchCase"], ["class", "compound-field", "ccdLabelSubstitutor", "", 3, "caseField", "formGroup", "contextFields", 4, "ngSwitchCase"], ["ccdLabelSubstitutor", "", 3, "caseField", "formGroup", "contextFields"], ["id", "summary-field-label"], [1, "form-cell"], [3, "formGroup", "caseField"], ["ccdLabelSubstitutor", "", 1, "compound-field", 3, "caseField", "formGroup", "contextFields"], ["colspan", "2"], [3, "formGroup", "caseField", "caseFields"], ["id", "fieldset-event", "formGroupName", "event"], [2, "display", "none"], [1, "form-group"], ["for", "field-trigger-summary", 1, "form-label"], [1, "form-hint"], ["type", "text", "id", "field-trigger-summary", "formControlName", "summary", "maxlength", "1024", 1, "form-control", "bottom-30", "width-50"], ["for", "field-trigger-description", 1, "form-label"], ["id", "field-trigger-description", "formControlName", "description", "maxlength", "65536", 1, "form-control", "bottom-30", "width-50"], ["type", "button", 1, "button", "button-secondary", 3, "disabled", "click"], [3, "eventCompletionParams", "eventCanBeCompleted"]], template: function CaseEditSubmitComponent_Template(rf, ctx) {
30203
+ CaseEditSubmitComponent.ɵfac = function CaseEditSubmitComponent_Factory(t) { return new (t || CaseEditSubmitComponent)(i0.ɵɵdirectiveInject(CaseEditComponent), i0.ɵɵdirectiveInject(FieldsUtils), i0.ɵɵdirectiveInject(CaseFieldService), i0.ɵɵdirectiveInject(i1$1.ActivatedRoute), i0.ɵɵdirectiveInject(OrderService), i0.ɵɵdirectiveInject(ProfileNotifier), i0.ɵɵdirectiveInject(FormValidatorsService)); };
30204
+ CaseEditSubmitComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CaseEditSubmitComponent, selectors: [["ccd-case-edit-submit"]], decls: 2, vars: 2, consts: [[4, "ngIf"], [3, "eventCompletionParams", "eventCanBeCompleted", 4, "ngIf"], [1, "govuk-heading-l"], [4, "ngIf", "ngIfThen", "ngIfElse"], ["titleBlock", ""], ["idBlock", ""], [3, "error"], [3, "callbackErrorsSubject", "callbackErrorsContext"], [1, "check-your-answers", 3, "formGroup", "submit"], [1, "form-group", "form-group-related"], ["class", "button button-secondary", "type", "button", 3, "disabled", "click", 4, "ngIf"], ["type", "submit", 1, "button", 3, "disabled"], [1, "cancel"], ["href", "javascript:void(0)", 3, "click"], [3, "content"], ["class", "heading-h2", 4, "ngIf"], [1, "heading-h2"], ["class", "text-16", 4, "ngIf"], ["aria-describedby", "check your answers table", 1, "form-table"], [4, "ngFor", "ngForOf"], [1, "text-16"], ["ccdLabelSubstitutor", "", 3, "caseField", "hidden", "formGroup", "contextFields"], ["class", "valign-top case-field-label", 4, "ngIf"], [1, "form-cell", "case-field-content"], [3, "formGroup", "topLevelFormGroup", "caseField", "context", "caseFields"], [1, "valign-top", "case-field-label"], [1, "valign-top", "check-your-answers__change", "case-field-change"], ["href", "javascript:void(0)", 3, "click", 4, "ngIf"], ["aria-describedby", "summary fields table", 1, "summary-fields"], [3, "ngSwitch"], ["ccdLabelSubstitutor", "", 3, "caseField", "formGroup", "contextFields", 4, "ngSwitchCase"], ["class", "compound-field", "ccdLabelSubstitutor", "", 3, "caseField", "formGroup", "contextFields", 4, "ngSwitchCase"], ["ccdLabelSubstitutor", "", 3, "caseField", "formGroup", "contextFields"], ["id", "summary-field-label"], [1, "form-cell"], [3, "formGroup", "caseField"], ["ccdLabelSubstitutor", "", 1, "compound-field", 3, "caseField", "formGroup", "contextFields"], ["colspan", "2"], [3, "formGroup", "caseField", "caseFields"], ["id", "fieldset-event", "formGroupName", "event"], [2, "display", "none"], [1, "form-group", 3, "ngClass"], ["for", "field-trigger-summary", 1, "form-label"], [1, "form-hint"], ["class", "error-message", 4, "ngIf"], ["type", "text", "id", "field-trigger-summary", "formControlName", "summary", "maxlength", "1024", 1, "form-control", "bottom-30", "width-50", 3, "ngClass"], ["for", "field-trigger-description", 1, "form-label"], ["id", "field-trigger-description", "formControlName", "description", "maxlength", "65536", 1, "form-control", "bottom-30", "width-50", 3, "ngClass"], [1, "error-message"], ["type", "button", 1, "button", "button-secondary", 3, "disabled", "click"], [3, "eventCompletionParams", "eventCanBeCompleted"]], template: function CaseEditSubmitComponent_Template(rf, ctx) {
30055
30205
  if (rf & 1) {
30056
30206
  i0.ɵɵtemplate(0, CaseEditSubmitComponent_div_0_Template, 24, 22, "div", 0);
30057
30207
  i0.ɵɵtemplate(1, CaseEditSubmitComponent_ccd_case_event_completion_1_Template, 1, 1, "ccd-case-event-completion", 1);
@@ -30065,8 +30215,8 @@ CaseEditSubmitComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Cas
30065
30215
  (function () {
30066
30216
  (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaseEditSubmitComponent, [{
30067
30217
  type: Component,
30068
- args: [{ selector: 'ccd-case-edit-submit', template: "<div *ngIf=\"!caseEdit.isEventCompletionChecksRequired\">\n <!-- Event trigger name -->\n <h1 class=\"govuk-heading-l\">{{eventTrigger.name | rpxTranslate}}</h1>\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: contextFields : 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 <ccd-case-edit-generic-errors [error]=\"caseEdit.error\"></ccd-case-edit-generic-errors>\n\n <ccd-callback-errors [callbackErrorsSubject]=\"caseEdit.callbackErrorsSubject\"\n (callbackErrorsContext)=\"callbackErrorsNotify($event)\"></ccd-callback-errors>\n\n <form class=\"check-your-answers\" [formGroup]=\"editForm\" (submit)=\"submit()\">\n <ng-container *ngIf=\"checkYourAnswerFieldsToDisplayExists()\">\n\n <h2 class=\"heading-h2\">{{pageTitle | rpxTranslate }}</h2>\n <span class=\"text-16\" *ngIf=\"!caseEdit.isCaseFlagSubmission\">{{'Check the information below carefully.' | rpxTranslate}}</span>\n\n <table class=\"form-table\" aria-describedby=\"check your answers table\">\n <tbody>\n <ng-container *ngFor=\"let page of wizard.pages\">\n <ng-container *ngIf=\"isShown(page)\">\n <ng-container *ngFor=\"let field of page\n | ccdPageFields: editForm\n | ccdReadFieldsFilter: false :undefined :true :allFieldsValues\n | ccdCYAPageLabelFilter\">\n <ng-container *ngIf=\"canShowFieldInCYA(field)\">\n <tr ccdLabelSubstitutor [caseField]=\"field\" [hidden]=\"field.hidden\"\n [formGroup]=\"editForm.controls['data']\" [contextFields]=\"contextFields\">\n <th *ngIf=\"!isLabel(field) && !caseEdit.isCaseFlagSubmission\" class=\"valign-top case-field-label\">\n <span class=\"text-16\">{{field.label | rpxTranslate}}</span>\n </th>\n <td class=\"form-cell case-field-content\" [attr.colspan]=\"isLabel(field) ? '2' : '1'\">\n <ccd-field-read\n [formGroup]=\"editForm.controls['data']\" [topLevelFormGroup]=\"editForm.controls['data']\"\n [caseField]=\"summaryCaseField(field)\" [context]=\"paletteContext\" [caseFields]=\"contextFields\"></ccd-field-read>\n </td>\n <ng-container *ngIf=\"!caseEdit.isCaseFlagSubmission\">\n <td class=\"valign-top check-your-answers__change case-field-change\">\n <a *ngIf=\"isChangeAllowed(field)\" (click)=\"navigateToPage(page.id)\"\n href=\"javascript:void(0)\">\n <span class=\"text-16\" attr.aria-label=\"{{'Change' | rpxTranslate}} {{ field.label | rpxTranslate }}\">\n {{'Change' | rpxTranslate}}\n </span>\n </a>\n </td>\n </ng-container>\n </tr>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n </tbody>\n </table>\n </ng-container>\n <ng-container *ngIf=\"readOnlySummaryFieldsToDisplayExists()\">\n\n <table class=\"summary-fields\" aria-describedby=\"summary fields table\">\n <tbody>\n <ng-container *ngFor=\"let field of showSummaryFields\">\n <ng-container [ngSwitch]=\"!(field | ccdIsCompound)\">\n <tr *ngSwitchCase=\"true\" ccdLabelSubstitutor [caseField]=\"field\" [formGroup]=\"editForm.controls['data']\" [contextFields]=\"contextFields\">\n <th id=\"summary-field-label\">{{field.label}}</th>\n <td class=\"form-cell\">\n <ccd-field-read [formGroup]=\"editForm.controls['data']\" [caseField]=\"summaryCaseField(field)\"></ccd-field-read>\n </td>\n </tr>\n <tr *ngSwitchCase=\"false\" class=\"compound-field\" ccdLabelSubstitutor [caseField]=\"field\" [formGroup]=\"editForm.controls['data']\" [contextFields]=\"contextFields\">\n <td colspan=\"2\">\n <ccd-field-read [formGroup]=\"editForm.controls['data']\" [caseField]=\"summaryCaseField(field)\" [caseFields]=\"contextFields\"></ccd-field-read>\n </td>\n </tr>\n </ng-container>\n </ng-container>\n </tbody>\n </table>\n </ng-container>\n <ng-container *ngIf=\"showEventNotes()\">\n <fieldset id=\"fieldset-event\" formGroupName=\"event\">\n <legend style=\"display: none;\"></legend>\n <div class=\"form-group\">\n <label for=\"field-trigger-summary\" class=\"form-label\">\n Event summary (optional)\n <span class=\"form-hint\">A few words describing the purpose of the event.</span>\n </label>\n <input type=\"text\" id=\"field-trigger-summary\" class=\"form-control bottom-30 width-50\" formControlName=\"summary\" maxlength=\"1024\">\n </div>\n <div class=\"form-group\">\n <label for=\"field-trigger-description\" class=\"form-label\">Event description (optional)</label>\n <textarea id=\"field-trigger-description\" class=\"form-control bottom-30 width-50\" formControlName=\"description\"\n maxlength=\"65536\"></textarea>\n </div>\n </fieldset>\n </ng-container>\n <div class=\"form-group form-group-related\">\n <button *ngIf=\"!caseEdit.isCaseFlagSubmission\" class=\"button button-secondary\" type=\"button\" [disabled]=\"!hasPrevious() || caseEdit.isSubmitting\" (click)=\"previous()\">\n {{'Previous' | rpxTranslate}}\n </button>\n <button type=\"submit\" [disabled]=\"isDisabled\" class=\"button\">\n {{triggerText | rpxTranslate}}\n </button>\n </div>\n <p class=\"cancel\">\n <a (click)=\"cancel()\" href=\"javascript:void(0)\" [class.disabled]=\"caseEdit.isSubmitting\">{{getCancelText() | rpxTranslate}}</a>\n </p>\n </form>\n</div>\n<ccd-case-event-completion *ngIf=\"caseEdit.isEventCompletionChecksRequired\"\n [eventCompletionParams]=\"caseEdit.eventCompletionParams\"\n (eventCanBeCompleted)=\"onEventCanBeCompleted($event)\">\n</ccd-case-event-completion>\n", styles: ["#fieldset-case-data{margin-bottom:30px}#fieldset-case-data th{width:1%;white-space:nowrap;vertical-align:top}.compound-field td{padding:0}#confirmation-header{width:630px;background-color:#17958b;border:solid 1px #979797;color:#fff;text-align:center}#confirmation-body{width:630px;background-color:#fff}.valign-top{vertical-align:top}.summary-fields{margin-bottom:30px}.summary-fields tbody tr th,.summary-fields tbody tr td{border-bottom:0px}a.disabled{pointer-events:none;cursor:default}.case-field-label{width:45%}.case-field-content{width:50%}.no-bottom-border{border-bottom:none}.case-field-change{width:5%}\n"] }]
30069
- }], function () { return [{ type: CaseEditComponent }, { type: FieldsUtils }, { type: CaseFieldService }, { type: i1$1.ActivatedRoute }, { type: OrderService }, { type: ProfileNotifier }]; }, null);
30218
+ args: [{ selector: 'ccd-case-edit-submit', template: "<div *ngIf=\"!caseEdit.isEventCompletionChecksRequired\">\n <!-- Event trigger name -->\n <h1 class=\"govuk-heading-l\">{{eventTrigger.name | rpxTranslate}}</h1>\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: contextFields : 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 <ccd-case-edit-generic-errors [error]=\"caseEdit.error\"></ccd-case-edit-generic-errors>\n\n <ccd-callback-errors [callbackErrorsSubject]=\"caseEdit.callbackErrorsSubject\"\n (callbackErrorsContext)=\"callbackErrorsNotify($event)\"></ccd-callback-errors>\n\n <form class=\"check-your-answers\" [formGroup]=\"editForm\" (submit)=\"submit()\">\n <ng-container *ngIf=\"checkYourAnswerFieldsToDisplayExists()\">\n\n <h2 class=\"heading-h2\">{{pageTitle | rpxTranslate }}</h2>\n <span class=\"text-16\" *ngIf=\"!caseEdit.isCaseFlagSubmission\">{{'Check the information below carefully.' | rpxTranslate}}</span>\n\n <table class=\"form-table\" aria-describedby=\"check your answers table\">\n <tbody>\n <ng-container *ngFor=\"let page of wizard.pages\">\n <ng-container *ngIf=\"isShown(page)\">\n <ng-container *ngFor=\"let field of page\n | ccdPageFields: editForm\n | ccdReadFieldsFilter: false :undefined :true :allFieldsValues\n | ccdCYAPageLabelFilter\">\n <ng-container *ngIf=\"canShowFieldInCYA(field)\">\n <tr ccdLabelSubstitutor [caseField]=\"field\" [hidden]=\"field.hidden\"\n [formGroup]=\"editForm.controls['data']\" [contextFields]=\"contextFields\">\n <th *ngIf=\"!isLabel(field) && !caseEdit.isCaseFlagSubmission\" class=\"valign-top case-field-label\">\n <span class=\"text-16\">{{field.label | rpxTranslate}}</span>\n </th>\n <td class=\"form-cell case-field-content\" [attr.colspan]=\"isLabel(field) ? '2' : '1'\">\n <ccd-field-read\n [formGroup]=\"editForm.controls['data']\" [topLevelFormGroup]=\"editForm.controls['data']\"\n [caseField]=\"summaryCaseField(field)\" [context]=\"paletteContext\" [caseFields]=\"contextFields\"></ccd-field-read>\n </td>\n <ng-container *ngIf=\"!caseEdit.isCaseFlagSubmission\">\n <td class=\"valign-top check-your-answers__change case-field-change\">\n <a *ngIf=\"isChangeAllowed(field)\" (click)=\"navigateToPage(page.id)\"\n href=\"javascript:void(0)\">\n <span class=\"text-16\" attr.aria-label=\"{{'Change' | rpxTranslate}} {{ field.label | rpxTranslate }}\">\n {{'Change' | rpxTranslate}}\n </span>\n </a>\n </td>\n </ng-container>\n </tr>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n </tbody>\n </table>\n </ng-container>\n <ng-container *ngIf=\"readOnlySummaryFieldsToDisplayExists()\">\n\n <table class=\"summary-fields\" aria-describedby=\"summary fields table\">\n <tbody>\n <ng-container *ngFor=\"let field of showSummaryFields\">\n <ng-container [ngSwitch]=\"!(field | ccdIsCompound)\">\n <tr *ngSwitchCase=\"true\" ccdLabelSubstitutor [caseField]=\"field\" [formGroup]=\"editForm.controls['data']\" [contextFields]=\"contextFields\">\n <th id=\"summary-field-label\">{{field.label}}</th>\n <td class=\"form-cell\">\n <ccd-field-read [formGroup]=\"editForm.controls['data']\" [caseField]=\"summaryCaseField(field)\"></ccd-field-read>\n </td>\n </tr>\n <tr *ngSwitchCase=\"false\" class=\"compound-field\" ccdLabelSubstitutor [caseField]=\"field\" [formGroup]=\"editForm.controls['data']\" [contextFields]=\"contextFields\">\n <td colspan=\"2\">\n <ccd-field-read [formGroup]=\"editForm.controls['data']\" [caseField]=\"summaryCaseField(field)\" [caseFields]=\"contextFields\"></ccd-field-read>\n </td>\n </tr>\n </ng-container>\n </ng-container>\n </tbody>\n </table>\n </ng-container>\n <ng-container *ngIf=\"showEventNotes()\">\n <fieldset id=\"fieldset-event\" formGroupName=\"event\">\n <legend style=\"display: none;\"></legend>\n <div class=\"form-group\" [ngClass]=\"{'form-group-error': !!summary && !summary.valid && (summary.dirty || summary.touched)}\">\n <label for=\"field-trigger-summary\" class=\"form-label\">\n Event summary (optional)\n <span class=\"form-hint\">A few words describing the purpose of the event.</span>\n </label>\n <span class=\"error-message\" *ngIf=\"summary?.errors && (summary.dirty || summary.touched)\">\n {{summary.errors | ccdFirstError: eventSummaryLabel | rpxTranslate}}\n </span>\n <input type=\"text\" id=\"field-trigger-summary\" class=\"form-control bottom-30 width-50\"\n [ngClass]=\"{'govuk-input--error': summary?.errors && (summary.dirty || summary.touched)}\" formControlName=\"summary\" maxlength=\"1024\">\n </div>\n <div class=\"form-group\" [ngClass]=\"{'form-group-error': !!description && !description.valid && (description.dirty || description.touched)}\">\n <label for=\"field-trigger-description\" class=\"form-label\">Event description (optional)</label>\n <span class=\"error-message\" *ngIf=\"description?.errors && (description.dirty || description.touched)\">\n {{description.errors | ccdFirstError: eventDescriptionLabel | rpxTranslate}}\n </span>\n <textarea id=\"field-trigger-description\" class=\"form-control bottom-30 width-50\" formControlName=\"description\"\n [ngClass]=\"{'govuk-input--error': description?.errors && (description.dirty || description.touched)}\" maxlength=\"65536\"></textarea>\n </div>\n </fieldset>\n </ng-container>\n <div class=\"form-group form-group-related\">\n <button *ngIf=\"!caseEdit.isCaseFlagSubmission\" class=\"button button-secondary\" type=\"button\" [disabled]=\"!hasPrevious() || caseEdit.isSubmitting\" (click)=\"previous()\">\n {{'Previous' | rpxTranslate}}\n </button>\n <button type=\"submit\" [disabled]=\"isDisabled\" class=\"button\">\n {{triggerText | rpxTranslate}}\n </button>\n </div>\n <p class=\"cancel\">\n <a (click)=\"cancel()\" href=\"javascript:void(0)\" [class.disabled]=\"caseEdit.isSubmitting\">{{getCancelText() | rpxTranslate}}</a>\n </p>\n </form>\n</div>\n<ccd-case-event-completion *ngIf=\"caseEdit.isEventCompletionChecksRequired\"\n [eventCompletionParams]=\"caseEdit.eventCompletionParams\"\n (eventCanBeCompleted)=\"onEventCanBeCompleted($event)\">\n</ccd-case-event-completion>\n", styles: ["#fieldset-case-data{margin-bottom:30px}#fieldset-case-data th{width:1%;white-space:nowrap;vertical-align:top}.compound-field td{padding:0}#confirmation-header{width:630px;background-color:#17958b;border:solid 1px #979797;color:#fff;text-align:center}#confirmation-body{width:630px;background-color:#fff}.valign-top{vertical-align:top}.summary-fields{margin-bottom:30px}.summary-fields tbody tr th,.summary-fields tbody tr td{border-bottom:0px}a.disabled{pointer-events:none;cursor:default}.case-field-label{width:45%}.case-field-content{width:50%}.no-bottom-border{border-bottom:none}.case-field-change{width:5%}\n"] }]
30219
+ }], function () { return [{ type: CaseEditComponent }, { type: FieldsUtils }, { type: CaseFieldService }, { type: i1$1.ActivatedRoute }, { type: OrderService }, { type: ProfileNotifier }, { type: FormValidatorsService }]; }, null);
30070
30220
  })();
30071
30221
 
30072
30222
  function CaseProgressComponent_div_0_Template(rf, ctx) {
@@ -30464,7 +30614,7 @@ i0.ɵɵsetComponentScope(CaseEditPageComponent, function () {
30464
30614
  CaseEditGenericErrorsComponent];
30465
30615
  }, function () { return [i4.AsyncPipe, CaseReferencePipe, CcdCaseTitlePipe, i1.RpxTranslatePipe]; });
30466
30616
  i0.ɵɵsetComponentScope(CaseEditFormComponent, function () { return [i4.NgForOf, i4.NgIf, i4.NgSwitch, i4.NgSwitchCase, i3.NgControlStatusGroup, i3.FormGroupDirective, LabelSubstitutorDirective, ConditionalShowFormDirective, FieldReadComponent, FieldWriteComponent]; }, function () { return [IsCompoundPipe, IsReadOnlyAndNotCollectionPipe]; });
30467
- i0.ɵɵsetComponentScope(CaseEditSubmitComponent, function () { return [i4.NgForOf, i4.NgIf, i4.NgSwitch, i4.NgSwitchCase, i3.ɵNgNoValidate, i3.DefaultValueAccessor, i3.NgControlStatus, i3.NgControlStatusGroup, i3.MaxLengthValidator, i3.FormGroupDirective, i3.FormControlName, i3.FormGroupName, LabelSubstitutorDirective, CallbackErrorsComponent, MarkdownComponent, FieldReadComponent, CaseEventCompletionComponent, CaseEditGenericErrorsComponent]; }, function () { return [IsCompoundPipe, CaseReferencePipe, CcdCaseTitlePipe, CcdCYAPageLabelFilterPipe, ReadFieldsFilterPipe, CcdPageFieldsPipe, i1.RpxTranslatePipe]; });
30617
+ i0.ɵɵsetComponentScope(CaseEditSubmitComponent, function () { return [i4.NgClass, i4.NgForOf, i4.NgIf, i4.NgSwitch, i4.NgSwitchCase, i3.ɵNgNoValidate, i3.DefaultValueAccessor, i3.NgControlStatus, i3.NgControlStatusGroup, i3.MaxLengthValidator, i3.FormGroupDirective, i3.FormControlName, i3.FormGroupName, LabelSubstitutorDirective, CallbackErrorsComponent, MarkdownComponent, FieldReadComponent, CaseEventCompletionComponent, CaseEditGenericErrorsComponent]; }, function () { return [FirstErrorPipe, IsCompoundPipe, CaseReferencePipe, CcdCaseTitlePipe, CcdCYAPageLabelFilterPipe, ReadFieldsFilterPipe, CcdPageFieldsPipe, i1.RpxTranslatePipe]; });
30468
30618
  i0.ɵɵsetComponentScope(CaseCreateComponent, function () { return [i4.NgIf, CaseEditComponent]; }, []);
30469
30619
  i0.ɵɵsetComponentScope(CaseProgressComponent, function () { return [i4.NgIf, CaseEditComponent]; }, []);
30470
30620
 
@@ -32215,29 +32365,29 @@ function CaseHistoryComponent_div_0_Template(rf, ctx) {
32215
32365
  i0.ɵɵadvance(6);
32216
32366
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(15, 19, "Date"));
32217
32367
  i0.ɵɵadvance(3);
32218
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(18, 21, ctx_r0.caseHistory.event.timestamp));
32368
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(18, 21, ctx_r0.caseHistory.event.timestamp, "local"));
32219
32369
  i0.ɵɵadvance(4);
32220
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(22, 23, "Author"));
32370
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(22, 24, "Author"));
32221
32371
  i0.ɵɵadvance(3);
32222
- i0.ɵɵtextInterpolate2("", i0.ɵɵpipeBind1(25, 25, ctx_r0.caseHistory.event.user_first_name), " ", i0.ɵɵpipeBind1(26, 27, ctx_r0.caseHistory.event.user_last_name), "");
32372
+ i0.ɵɵtextInterpolate2("", i0.ɵɵpipeBind1(25, 26, ctx_r0.caseHistory.event.user_first_name), " ", i0.ɵɵpipeBind1(26, 28, ctx_r0.caseHistory.event.user_last_name), "");
32223
32373
  i0.ɵɵadvance(5);
32224
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(30, 29, "End state"));
32374
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(30, 30, "End state"));
32225
32375
  i0.ɵɵadvance(3);
32226
32376
  i0.ɵɵtextInterpolate(ctx_r0.caseHistory.event.state_name);
32227
32377
  i0.ɵɵadvance(3);
32228
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(36, 31, "Event"));
32378
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(36, 32, "Event"));
32229
32379
  i0.ɵɵadvance(3);
32230
32380
  i0.ɵɵtextInterpolate(ctx_r0.caseHistory.event.event_name);
32231
32381
  i0.ɵɵadvance(3);
32232
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(42, 33, "Summary"));
32382
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(42, 34, "Summary"));
32233
32383
  i0.ɵɵadvance(3);
32234
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(45, 35, ctx_r0.caseHistory.event.summary));
32384
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(45, 36, ctx_r0.caseHistory.event.summary));
32235
32385
  i0.ɵɵadvance(4);
32236
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(49, 37, "Comment"));
32386
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(49, 38, "Comment"));
32237
32387
  i0.ɵɵadvance(3);
32238
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(52, 39, ctx_r0.caseHistory.event.comment));
32388
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(52, 40, ctx_r0.caseHistory.event.comment));
32239
32389
  i0.ɵɵadvance(4);
32240
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(56, 41, "Case Details"));
32390
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(56, 42, "Case Details"));
32241
32391
  i0.ɵɵadvance(2);
32242
32392
  i0.ɵɵproperty("ngForOf", ctx_r0.tabs);
32243
32393
  }
@@ -32293,7 +32443,7 @@ CaseHistoryComponent.ERROR_MESSAGE = 'No case history to show';
32293
32443
  CaseHistoryComponent.ɵfac = function CaseHistoryComponent_Factory(t) { return new (t || CaseHistoryComponent)(i0.ɵɵdirectiveInject(i1$1.ActivatedRoute), i0.ɵɵdirectiveInject(AlertService), i0.ɵɵdirectiveInject(OrderService), i0.ɵɵdirectiveInject(CaseNotifier), i0.ɵɵdirectiveInject(CaseHistoryService)); };
32294
32444
  CaseHistoryComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CaseHistoryComponent, selectors: [["ccd-case-history"]], inputs: { event: "event" }, decls: 1, vars: 1, consts: [[4, "ngIf"], [1, "grid-row"], [1, "column-full"], [3, "caseDetails"], [1, "heading-h2"], ["aria-describedby", "event details table", 1, "EventDetails"], [4, "ngFor", "ngForOf"], [1, "caseHistorySection"], [1, "heading-h3"], [1, "CaseHistory", 3, "id"], ["ccdLabelSubstitutor", "", 3, "caseField", "contextFields", "hidden"], [3, "ngSwitch"], [4, "ngSwitchCase"], ["class", "compound-field", 4, "ngSwitchCase"], ["id", "case-viewer-label-header"], [1, "case-viewer-label"], [3, "caseField", "caseReference"], [1, "compound-field"], ["colspan", "2"]], template: function CaseHistoryComponent_Template(rf, ctx) {
32295
32445
  if (rf & 1) {
32296
- i0.ɵɵtemplate(0, CaseHistoryComponent_div_0_Template, 58, 43, "div", 0);
32446
+ i0.ɵɵtemplate(0, CaseHistoryComponent_div_0_Template, 58, 44, "div", 0);
32297
32447
  }
32298
32448
  if (rf & 2) {
32299
32449
  i0.ɵɵproperty("ngIf", ctx.isDataLoaded());
@@ -32302,7 +32452,7 @@ CaseHistoryComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CaseHi
32302
32452
  (function () {
32303
32453
  (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaseHistoryComponent, [{
32304
32454
  type: Component,
32305
- args: [{ selector: 'ccd-case-history', template: "<div *ngIf=\"isDataLoaded()\">\n <div class=\"grid-row\">\n <div class=\"column-full\">\n <ccd-case-header [caseDetails]=\"caseDetails\"></ccd-case-header>\n </div>\n </div>\n <div class=\"grid-row\">\n <div class=\"column-full\">\n <div>\n <h2 class=\"heading-h2\">{{'Event Details' | rpxTranslate}}</h2>\n <table class=\"EventDetails\" aria-describedby=\"event details table\">\n <tbody>\n <tr>\n <th>{{'Date' | rpxTranslate}}</th>\n <td>{{caseHistory.event.timestamp | ccdDate}}</td>\n </tr>\n <tr>\n <th>{{'Author' | rpxTranslate}}</th>\n <td>{{caseHistory.event.user_first_name | titlecase}} {{caseHistory.event.user_last_name | uppercase}}</td>\n </tr>\n <tr>\n <th>{{'End state' | rpxTranslate}}</th>\n <td>{{caseHistory.event.state_name}}</td>\n </tr>\n <tr>\n <th>{{'Event' | rpxTranslate}}</th>\n <td>{{caseHistory.event.event_name}}</td>\n </tr>\n <tr>\n <th>{{'Summary' | rpxTranslate}}</th>\n <td>{{caseHistory.event.summary | ccdDash}}</td>\n </tr>\n <tr>\n <th>{{'Comment' | rpxTranslate}}</th>\n <td>{{caseHistory.event.comment | ccdDash}}</td>\n </tr>\n </tbody>\n </table>\n </div>\n <div>\n <h2 class=\"heading-h2\">{{'Case Details' | rpxTranslate}}</h2>\n <ng-container *ngFor=\"let tab of tabs\">\n <div class=\"caseHistorySection\">\n <h3 class=\"heading-h3\">{{tab.label}}</h3>\n <table class=\"CaseHistory\" id=\"{{tab.id}}\" [attr.aria-describedby]=\"'case history table' | rpxTranslate\">\n <ng-container *ngFor=\"let field of tab | ccdTabFields | ccdReadFieldsFilter:false :undefined :true\">\n <div ccdLabelSubstitutor [caseField]=\"field\" [contextFields]=\"tab.fields\" [hidden]=\"field.hidden\">\n <ng-container [ngSwitch]=\"!(field | ccdIsCompound)\">\n <tr *ngSwitchCase=\"true\">\n <th id=\"case-viewer-label-header\">\n <div class=\"case-viewer-label\">{{field.label}}</div>\n </th>\n <td>\n <ccd-field-read [caseField]=\"field\" [caseReference]=\"caseHistory.case_id\"></ccd-field-read>\n </td>\n </tr>\n <tr *ngSwitchCase=\"false\" class=\"compound-field\">\n <td colspan=\"2\">\n <ccd-field-read [caseField]=\"field\" [caseReference]=\"caseHistory.case_id\"></ccd-field-read>\n </td>\n </tr>\n </ng-container>\n </div>\n </ng-container>\n </table>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n</div>\n", styles: [".CaseHistory th,.CaseHistory td{border-bottom:none}.caseHistorySection{margin-top:40px}.EventDetails th,.EventDetails td{border-bottom:none}th{width:1%;white-space:nowrap;vertical-align:top}.compound-field td{padding:0}.case-viewer-controls{margin-top:47px;margin-bottom:20px}ccd-case-header{float:left;margin-right:10px}ccd-event-trigger{float:right}.case-viewer-label{min-width:300px;white-space:normal}\n"] }]
32455
+ args: [{ selector: 'ccd-case-history', template: "<div *ngIf=\"isDataLoaded()\">\n <div class=\"grid-row\">\n <div class=\"column-full\">\n <ccd-case-header [caseDetails]=\"caseDetails\"></ccd-case-header>\n </div>\n </div>\n <div class=\"grid-row\">\n <div class=\"column-full\">\n <div>\n <h2 class=\"heading-h2\">{{'Event Details' | rpxTranslate}}</h2>\n <table class=\"EventDetails\" aria-describedby=\"event details table\">\n <tbody>\n <tr>\n <th>{{'Date' | rpxTranslate}}</th>\n <td>{{caseHistory.event.timestamp | ccdDate : 'local'}}</td>\n </tr>\n <tr>\n <th>{{'Author' | rpxTranslate}}</th>\n <td>{{caseHistory.event.user_first_name | titlecase}} {{caseHistory.event.user_last_name | uppercase}}</td>\n </tr>\n <tr>\n <th>{{'End state' | rpxTranslate}}</th>\n <td>{{caseHistory.event.state_name}}</td>\n </tr>\n <tr>\n <th>{{'Event' | rpxTranslate}}</th>\n <td>{{caseHistory.event.event_name}}</td>\n </tr>\n <tr>\n <th>{{'Summary' | rpxTranslate}}</th>\n <td>{{caseHistory.event.summary | ccdDash}}</td>\n </tr>\n <tr>\n <th>{{'Comment' | rpxTranslate}}</th>\n <td>{{caseHistory.event.comment | ccdDash}}</td>\n </tr>\n </tbody>\n </table>\n </div>\n <div>\n <h2 class=\"heading-h2\">{{'Case Details' | rpxTranslate}}</h2>\n <ng-container *ngFor=\"let tab of tabs\">\n <div class=\"caseHistorySection\">\n <h3 class=\"heading-h3\">{{tab.label}}</h3>\n <table class=\"CaseHistory\" id=\"{{tab.id}}\" [attr.aria-describedby]=\"'case history table' | rpxTranslate\">\n <ng-container *ngFor=\"let field of tab | ccdTabFields | ccdReadFieldsFilter:false :undefined :true\">\n <div ccdLabelSubstitutor [caseField]=\"field\" [contextFields]=\"tab.fields\" [hidden]=\"field.hidden\">\n <ng-container [ngSwitch]=\"!(field | ccdIsCompound)\">\n <tr *ngSwitchCase=\"true\">\n <th id=\"case-viewer-label-header\">\n <div class=\"case-viewer-label\">{{field.label}}</div>\n </th>\n <td>\n <ccd-field-read [caseField]=\"field\" [caseReference]=\"caseHistory.case_id\"></ccd-field-read>\n </td>\n </tr>\n <tr *ngSwitchCase=\"false\" class=\"compound-field\">\n <td colspan=\"2\">\n <ccd-field-read [caseField]=\"field\" [caseReference]=\"caseHistory.case_id\"></ccd-field-read>\n </td>\n </tr>\n </ng-container>\n </div>\n </ng-container>\n </table>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n</div>\n", styles: [".CaseHistory th,.CaseHistory td{border-bottom:none}.caseHistorySection{margin-top:40px}.EventDetails th,.EventDetails td{border-bottom:none}th{width:1%;white-space:nowrap;vertical-align:top}.compound-field td{padding:0}.case-viewer-controls{margin-top:47px;margin-bottom:20px}ccd-case-header{float:left;margin-right:10px}ccd-event-trigger{float:right}.case-viewer-label{min-width:300px;white-space:normal}\n"] }]
32306
32456
  }], function () { return [{ type: i1$1.ActivatedRoute }, { type: AlertService }, { type: OrderService }, { type: CaseNotifier }, { type: CaseHistoryService }]; }, { event: [{
32307
32457
  type: Input
32308
32458
  }] });
@@ -33504,7 +33654,7 @@ function CaseFullAccessViewComponent_ng_container_12_mat_tab_4_ng_template_2_Tem
33504
33654
  const tab_r20 = i0.ɵɵnextContext().$implicit;
33505
33655
  const ctx_r22 = i0.ɵɵnextContext(2);
33506
33656
  i0.ɵɵclassMap(tab_r20.id);
33507
- i0.ɵɵattribute("aria-describedby", i0.ɵɵpipeBind1(1, 4, "case viewer table"));
33657
+ i0.ɵɵattribute("aria-label", i0.ɵɵpipeBind1(1, 4, "case viewer table"));
33508
33658
  i0.ɵɵadvance(3);
33509
33659
  i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBindV(4, 6, i0.ɵɵpureFunction2(14, _c1$3, i0.ɵɵpipeBind1(5, 12, tab_r20), ctx_r22.formGroup.controls["data"])));
33510
33660
  }
@@ -33988,7 +34138,7 @@ CaseFullAccessViewComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
33988
34138
  (function () {
33989
34139
  (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaseFullAccessViewComponent, [{
33990
34140
  type: Component,
33991
- args: [{ selector: 'ccd-case-full-access-view', template: "<!-- Generic error heading and error message to be displayed only if there are no specific callback errors or warnings, or no error details -->\n<div *ngIf=\"error && !(error.callbackErrors || error.callbackWarnings || error.details)\" class=\"error-summary\"\n role=\"group\" aria-labelledby=\"edit-case-event_error-summary-heading\" tabindex=\"-1\">\n <h1 class=\"heading-h1 error-summary-heading\" id=\"edit-case-event_error-summary-heading\">\n {{'Something went wrong' | rpxTranslate}}\n </h1>\n <div class=\"govuk-error-summary__body\" id=\"edit-case-event_error-summary-body\">\n <p>{{\"We're working to fix the problem. Try again shortly.\" | rpxTranslate}}</p>\n <p>\n <a href=\"get-help\" target=\"_blank\">\n {{\"Contact us\" | rpxTranslate}}</a> {{\"if you're still having problems.\" | rpxTranslate}}\n </p>\n </div>\n</div>\n<!-- Callback error heading and error message to be displayed if there are specific error details -->\n<div *ngIf=\"error && error.details\" class=\"error-summary\" role=\"group\"\n aria-labelledby=\"edit-case-event_error-summary-heading\" tabindex=\"-1\">\n <h2 class=\"heading-h2 error-summary-heading\" id=\"edit-case-event_error-summary-heading\">\n {{'The callback data failed validation' | rpxTranslate}}\n </h2>\n <p>{{error.message | rpxTranslate}}</p>\n <ul *ngIf=\"error.details?.field_errors\" class=\"error-summary-list\">\n <li *ngFor=\"let fieldError of error.details.field_errors\">\n {{fieldError.message | rpxTranslate}}\n </li>\n </ul>\n</div>\n<ccd-callback-errors\n [triggerTextContinue]=\"triggerTextStart\"\n [triggerTextIgnore]=\"triggerTextIgnoreWarnings\"\n [callbackErrorsSubject]=\"callbackErrorsSubject\"\n (callbackErrorsContext)=\"callbackErrorsNotify($event)\">\n</ccd-callback-errors>\n<ccd-activity [caseId]=\"caseDetails.case_id\" [displayMode]=\"BANNER\"></ccd-activity>\n<div class=\"grid-row\">\n <div class=\"column-one-half\">\n <ccd-case-header [caseDetails]=\"caseDetails\"></ccd-case-header>\n <div class=\"case-viewer-controls\" *ngIf=\"hasPrint && !isDraft() && isPrintEnabled()\">\n <a id=\"case-viewer-control-print\" routerLink=\"print\" class=\"button button-secondary\">{{'Print' | rpxTranslate}}</a>\n </div>\n </div>\n <div *ngIf=\"hasEventSelector\" class=\"column-one-half\">\n <ccd-event-trigger [isDisabled]=\"isTriggerButtonDisabled()\" [triggers]=\"caseDetails.triggers\"\n [triggerText]=\"triggerText\" (onTriggerChange)=\"clearErrorsAndWarnings()\"\n (onTriggerSubmit)=\"applyTrigger($event)\"></ccd-event-trigger>\n </div>\n</div>\n<div class=\"grid-row\" *ngIf=\"activeCaseFlags && !caseFlagsExternalUser\">\n <div class=\"column-full\">\n <ccd-notification-banner [notificationBannerConfig]=\"notificationBannerConfig\" (linkClicked)=\"onLinkClicked($event)\">\n </ccd-notification-banner>\n </div>\n</div>\n<div class=\"grid-row\">\n <div class=\"column-full\">\n <ng-container *ngIf=\"hasTabsPresent()\">\n <mat-tab-group #tabGroup animationDuration=\"0ms\" (selectedIndexChange)=\"tabChanged($event)\" [disableRipple]=\"true\"\n [selectedIndex]=\"selectedTabIndex\">\n <mat-tab *ngFor=\"let tab of prependedTabs\" [id]=\"tab.id\" [label]=\"tab.label | rpxTranslate\">\n </mat-tab>\n <mat-tab *ngFor=\"let tab of sortedTabs; let curIdx=index\" [id]=\"tab.id\" [label]=\"tab.label | rpxTranslate\">\n <ng-template matTabContent>\n <table [class]=\"tab.id\" [attr.aria-describedby]=\"'case viewer table' | rpxTranslate\">\n <tbody>\n <ng-container *ngFor=\"let field of tab | ccdTabFields | ccdReadFieldsFilter:false :undefined :true : formGroup.controls['data']\">\n <div ccdLabelSubstitutor [caseField]=\"field\" [contextFields]=\"caseFields\" [hidden]=\"field.hidden\">\n <ng-container [ngSwitch]=\"!(field | ccdIsCompound)\">\n <tr *ngSwitchCase=\"true\">\n <th id=\"case-viewer-field-label\" *ngIf=\"!isFieldToHaveNoLabel(field)\">\n <div class=\"case-viewer-label text-16\">\n {{field.label | rpxTranslate}}</div>\n </th>\n <td [id]=\"'case-viewer-field-read--' + field.id\" scope=\"col\">\n <span class=\"text-16\">\n <ccd-field-read [topLevelFormGroup]=\"formGroup.controls['data']\"\n [caseField]=\"field\" [caseReference]=\"caseDetails.case_id\"\n [markdownUseHrefAsRouterLink]=\"markdownUseHrefAsRouterLink\">\n </ccd-field-read>\n </span>\n </td>\n </tr>\n <tr *ngSwitchCase=\"false\" class=\"compound-field\">\n <th [id]=\"'case-viewer-field-read--' + field.id\" scope=\"col\">\n <span class=\"text-16\">\n <ccd-field-read [topLevelFormGroup]=\"formGroup.controls['data']\"\n [caseField]=\"field\" [caseReference]=\"caseDetails.case_id\"\n [markdownUseHrefAsRouterLink]=\"markdownUseHrefAsRouterLink\">\n </ccd-field-read>\n </span>\n </th>\n </tr>\n </ng-container>\n </div>\n </ng-container>\n </tbody>\n </table>\n </ng-template>\n </mat-tab>\n <mat-tab *ngFor=\"let tab of appendedTabs\" [id]=\"tab.id\" [label]=\"tab.label | rpxTranslate\">\n </mat-tab>\n </mat-tab-group>\n <router-outlet *ngIf=\"(prependedTabs && prependedTabs.length) || (appendedTabs && appendedTabs.length)\"></router-outlet>\n </ng-container>\n </div>\n</div>\n", styles: ["th{width:1%;white-space:nowrap;vertical-align:top}.compound-field th{padding:0}.case-viewer-controls{margin-top:47px;margin-bottom:20px}ccd-case-header{float:left;margin-right:10px}ccd-event-trigger{float:right}.case-viewer-label{min-width:300px;white-space:normal}.markdown h3{margin-bottom:0}\n"] }]
34141
+ args: [{ selector: 'ccd-case-full-access-view', template: "<!-- Generic error heading and error message to be displayed only if there are no specific callback errors or warnings, or no error details -->\n<div *ngIf=\"error && !(error.callbackErrors || error.callbackWarnings || error.details)\" class=\"error-summary\"\n role=\"group\" aria-labelledby=\"edit-case-event_error-summary-heading\" tabindex=\"-1\">\n <h1 class=\"heading-h1 error-summary-heading\" id=\"edit-case-event_error-summary-heading\">\n {{'Something went wrong' | rpxTranslate}}\n </h1>\n <div class=\"govuk-error-summary__body\" id=\"edit-case-event_error-summary-body\">\n <p>{{\"We're working to fix the problem. Try again shortly.\" | rpxTranslate}}</p>\n <p>\n <a href=\"get-help\" target=\"_blank\">\n {{\"Contact us\" | rpxTranslate}}</a> {{\"if you're still having problems.\" | rpxTranslate}}\n </p>\n </div>\n</div>\n<!-- Callback error heading and error message to be displayed if there are specific error details -->\n<div *ngIf=\"error && error.details\" class=\"error-summary\" role=\"group\"\n aria-labelledby=\"edit-case-event_error-summary-heading\" tabindex=\"-1\">\n <h2 class=\"heading-h2 error-summary-heading\" id=\"edit-case-event_error-summary-heading\">\n {{'The callback data failed validation' | rpxTranslate}}\n </h2>\n <p>{{error.message | rpxTranslate}}</p>\n <ul *ngIf=\"error.details?.field_errors\" class=\"error-summary-list\">\n <li *ngFor=\"let fieldError of error.details.field_errors\">\n {{fieldError.message | rpxTranslate}}\n </li>\n </ul>\n</div>\n<ccd-callback-errors\n [triggerTextContinue]=\"triggerTextStart\"\n [triggerTextIgnore]=\"triggerTextIgnoreWarnings\"\n [callbackErrorsSubject]=\"callbackErrorsSubject\"\n (callbackErrorsContext)=\"callbackErrorsNotify($event)\">\n</ccd-callback-errors>\n<ccd-activity [caseId]=\"caseDetails.case_id\" [displayMode]=\"BANNER\"></ccd-activity>\n<div class=\"grid-row\">\n <div class=\"column-one-half\">\n <ccd-case-header [caseDetails]=\"caseDetails\"></ccd-case-header>\n <div class=\"case-viewer-controls\" *ngIf=\"hasPrint && !isDraft() && isPrintEnabled()\">\n <a id=\"case-viewer-control-print\" routerLink=\"print\" class=\"button button-secondary\">{{'Print' | rpxTranslate}}</a>\n </div>\n </div>\n <div *ngIf=\"hasEventSelector\" class=\"column-one-half\">\n <ccd-event-trigger [isDisabled]=\"isTriggerButtonDisabled()\" [triggers]=\"caseDetails.triggers\"\n [triggerText]=\"triggerText\" (onTriggerChange)=\"clearErrorsAndWarnings()\"\n (onTriggerSubmit)=\"applyTrigger($event)\"></ccd-event-trigger>\n </div>\n</div>\n<div class=\"grid-row\" *ngIf=\"activeCaseFlags && !caseFlagsExternalUser\">\n <div class=\"column-full\">\n <ccd-notification-banner [notificationBannerConfig]=\"notificationBannerConfig\" (linkClicked)=\"onLinkClicked($event)\">\n </ccd-notification-banner>\n </div>\n</div>\n<div class=\"grid-row\">\n <div class=\"column-full\">\n <ng-container *ngIf=\"hasTabsPresent()\">\n <mat-tab-group #tabGroup animationDuration=\"0ms\" (selectedIndexChange)=\"tabChanged($event)\" [disableRipple]=\"true\"\n [selectedIndex]=\"selectedTabIndex\">\n <mat-tab *ngFor=\"let tab of prependedTabs\" [id]=\"tab.id\" [label]=\"tab.label | rpxTranslate\">\n </mat-tab>\n <mat-tab *ngFor=\"let tab of sortedTabs; let curIdx=index\" [id]=\"tab.id\" [label]=\"tab.label | rpxTranslate\">\n <ng-template matTabContent>\n <table [class]=\"tab.id\" [attr.aria-label]=\"'case viewer table' | rpxTranslate\">\n <tbody>\n <ng-container *ngFor=\"let field of tab | ccdTabFields | ccdReadFieldsFilter:false :undefined :true : formGroup.controls['data']\">\n <div ccdLabelSubstitutor [caseField]=\"field\" [contextFields]=\"caseFields\" [hidden]=\"field.hidden\">\n <ng-container [ngSwitch]=\"!(field | ccdIsCompound)\">\n <tr *ngSwitchCase=\"true\">\n <th id=\"case-viewer-field-label\" *ngIf=\"!isFieldToHaveNoLabel(field)\">\n <div class=\"case-viewer-label text-16\">\n {{field.label | rpxTranslate}}</div>\n </th>\n <td [id]=\"'case-viewer-field-read--' + field.id\" scope=\"col\">\n <span class=\"text-16\">\n <ccd-field-read [topLevelFormGroup]=\"formGroup.controls['data']\"\n [caseField]=\"field\" [caseReference]=\"caseDetails.case_id\"\n [markdownUseHrefAsRouterLink]=\"markdownUseHrefAsRouterLink\">\n </ccd-field-read>\n </span>\n </td>\n </tr>\n <tr *ngSwitchCase=\"false\" class=\"compound-field\">\n <th [id]=\"'case-viewer-field-read--' + field.id\" scope=\"col\">\n <span class=\"text-16\">\n <ccd-field-read [topLevelFormGroup]=\"formGroup.controls['data']\"\n [caseField]=\"field\" [caseReference]=\"caseDetails.case_id\"\n [markdownUseHrefAsRouterLink]=\"markdownUseHrefAsRouterLink\">\n </ccd-field-read>\n </span>\n </th>\n </tr>\n </ng-container>\n </div>\n </ng-container>\n </tbody>\n </table>\n </ng-template>\n </mat-tab>\n <mat-tab *ngFor=\"let tab of appendedTabs\" [id]=\"tab.id\" [label]=\"tab.label | rpxTranslate\">\n </mat-tab>\n </mat-tab-group>\n <router-outlet *ngIf=\"(prependedTabs && prependedTabs.length) || (appendedTabs && appendedTabs.length)\"></router-outlet>\n </ng-container>\n </div>\n</div>\n", styles: ["th{width:1%;white-space:nowrap;vertical-align:top}.compound-field th{padding:0}.case-viewer-controls{margin-top:47px;margin-bottom:20px}ccd-case-header{float:left;margin-right:10px}ccd-event-trigger{float:right}.case-viewer-label{min-width:300px;white-space:normal}.markdown h3{margin-bottom:0}\n"] }]
33992
34142
  }], function () { return [{ type: i0.NgZone }, { type: i1$1.ActivatedRoute }, { type: i1$1.Router }, { type: NavigationNotifierService }, { type: OrderService }, { type: ActivityPollingService }, { type: i1$3.MatLegacyDialog }, { type: AlertService }, { type: DraftService }, { type: ErrorNotifierService }, { type: ConvertHrefToRouterService }, { type: i4.Location }, { type: i0.ChangeDetectorRef }, { type: SessionStorageService }, { type: i1.RpxTranslatePipe }]; }, { hasPrint: [{
33993
34143
  type: Input
33994
34144
  }], hasEventSelector: [{