@hmcts/ccd-case-ui-toolkit 7.0.22-upload-timestamp → 7.0.23-pre-release-markdown

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 (45) 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 +12 -11
  9. package/esm2020/lib/shared/components/palette/case-file-view/test-data/categories-and-documents-test-data.mjs +12 -12
  10. package/esm2020/lib/shared/components/palette/complex/read-complex-field.component.mjs +14 -12
  11. package/esm2020/lib/shared/components/palette/document/write-document-field.component.mjs +25 -16
  12. package/esm2020/lib/shared/components/palette/dynamic-list/dynamic-list.pipe.mjs +2 -2
  13. package/esm2020/lib/shared/components/palette/dynamic-multi-select-list/write-dynamic-multi-select-list-field.component.mjs +5 -5
  14. package/esm2020/lib/shared/components/palette/markdown/markdown.component.mjs +26 -3
  15. package/esm2020/lib/shared/components/palette/text/write-text-field.component.mjs +1 -1
  16. package/esm2020/lib/shared/components/palette/utils/first-error.pipe.mjs +4 -1
  17. package/esm2020/lib/shared/domain/document/document-data.model.mjs +1 -1
  18. package/esm2020/lib/shared/domain/http/http-error.model.mjs +7 -1
  19. package/esm2020/lib/shared/services/fields/fields.purger.mjs +4 -3
  20. package/esm2020/lib/shared/services/form/form-validators.service.mjs +27 -2
  21. package/fesm2015/hmcts-ccd-case-ui-toolkit.mjs +324 -167
  22. package/fesm2015/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
  23. package/fesm2020/hmcts-ccd-case-ui-toolkit.mjs +313 -165
  24. package/fesm2020/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
  25. package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts +2 -1
  26. package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts.map +1 -1
  27. package/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.d.ts +8 -3
  28. package/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.d.ts.map +1 -1
  29. package/lib/shared/components/case-editor/services/page-validation.service.d.ts +1 -1
  30. package/lib/shared/components/case-editor/services/page-validation.service.d.ts.map +1 -1
  31. package/lib/shared/components/palette/base-field/abstract-form-field.component.d.ts.map +1 -1
  32. package/lib/shared/components/palette/complex/read-complex-field.component.d.ts.map +1 -1
  33. package/lib/shared/components/palette/document/write-document-field.component.d.ts +1 -0
  34. package/lib/shared/components/palette/document/write-document-field.component.d.ts.map +1 -1
  35. package/lib/shared/components/palette/markdown/markdown.component.d.ts +4 -1
  36. package/lib/shared/components/palette/markdown/markdown.component.d.ts.map +1 -1
  37. package/lib/shared/components/palette/utils/first-error.pipe.d.ts.map +1 -1
  38. package/lib/shared/domain/document/document-data.model.d.ts +1 -1
  39. package/lib/shared/domain/document/document-data.model.d.ts.map +1 -1
  40. package/lib/shared/domain/http/http-error.model.d.ts +1 -0
  41. package/lib/shared/domain/http/http-error.model.d.ts.map +1 -1
  42. package/lib/shared/services/fields/fields.purger.d.ts.map +1 -1
  43. package/lib/shared/services/form/form-validators.service.d.ts +4 -0
  44. package/lib/shared/services/form/form-validators.service.d.ts.map +1 -1
  45. 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();
@@ -14253,23 +14326,31 @@ class WriteDocumentFieldComponent extends AbstractFieldWriteComponent {
14253
14326
  this.uploadedDocument = this.registerControl(new FormGroup(documentFormGroup), true);
14254
14327
  }
14255
14328
  getErrorMessage(error) {
14256
- // Document Management unavailable
14257
- if (0 === error.status || 502 === error.status) {
14258
- return WriteDocumentFieldComponent.UPLOAD_ERROR_NOT_AVAILABLE;
14259
- }
14260
- let errorMsg = 'Error uploading file';
14261
- if (error === null || error === void 0 ? void 0 : error.error) {
14262
- const fullError = error.error;
14263
- const start = fullError.indexOf('{');
14264
- if (start >= 0) {
14265
- const json = fullError.substring(start, fullError.length - 1).split('<EOL>').join('');
14266
- const obj = JSON.parse(json);
14267
- if (obj === null || obj === void 0 ? void 0 : obj.error) {
14268
- errorMsg = obj.error;
14329
+ switch (error.status) {
14330
+ case 0:
14331
+ case 502:
14332
+ return WriteDocumentFieldComponent.UPLOAD_ERROR_NOT_AVAILABLE;
14333
+ case 422:
14334
+ {
14335
+ let errorMsg = WriteDocumentFieldComponent.ERROR_UPLOADING_FILE;
14336
+ if (error === null || error === void 0 ? void 0 : error.error) {
14337
+ const fullError = error.error;
14338
+ const start = fullError.indexOf('{');
14339
+ if (start >= 0) {
14340
+ const json = fullError.substring(start, fullError.length - 1).split('<EOL>').join('');
14341
+ const obj = JSON.parse(json);
14342
+ if (obj === null || obj === void 0 ? void 0 : obj.error) {
14343
+ errorMsg = obj.error;
14344
+ }
14345
+ }
14346
+ }
14347
+ return errorMsg;
14269
14348
  }
14270
- }
14349
+ case 429:
14350
+ return error === null || error === void 0 ? void 0 : error.error;
14351
+ default:
14352
+ return WriteDocumentFieldComponent.ERROR_UPLOADING_FILE;
14271
14353
  }
14272
- return errorMsg;
14273
14354
  }
14274
14355
  buildDocumentUploadData(selectedFile) {
14275
14356
  const documentUpload = new FormData();
@@ -14325,6 +14406,7 @@ WriteDocumentFieldComponent.UPLOAD_TIMESTAMP = 'upload_timestamp';
14325
14406
  WriteDocumentFieldComponent.UPLOAD_ERROR_FILE_REQUIRED = 'File required';
14326
14407
  WriteDocumentFieldComponent.UPLOAD_ERROR_NOT_AVAILABLE = 'Document upload facility is not available at the moment';
14327
14408
  WriteDocumentFieldComponent.UPLOAD_WAITING_FILE_STATUS = 'Uploading...';
14409
+ WriteDocumentFieldComponent.ERROR_UPLOADING_FILE = 'Error Uploading File';
14328
14410
  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)); };
14329
14411
  WriteDocumentFieldComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: WriteDocumentFieldComponent, selectors: [["ccd-write-document-field"]], viewQuery: function WriteDocumentFieldComponent_Query(rf, ctx) {
14330
14412
  if (rf & 1) {
@@ -14359,7 +14441,7 @@ WriteDocumentFieldComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
14359
14441
  i0.ɵɵelementEnd()();
14360
14442
  }
14361
14443
  if (rf & 2) {
14362
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(18, _c1$k, !ctx.valid));
14444
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(18, _c1$l, !ctx.valid));
14363
14445
  i0.ɵɵadvance(1);
14364
14446
  i0.ɵɵproperty("for", ctx.id());
14365
14447
  i0.ɵɵadvance(1);
@@ -14395,7 +14477,7 @@ WriteDocumentFieldComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
14395
14477
 
14396
14478
  class DynamicListPipe {
14397
14479
  transform(value, items) {
14398
- const item = items.find(i => i.code === value);
14480
+ const item = items === null || items === void 0 ? void 0 : items.find(i => i.code === value);
14399
14481
  return item ? item.label : DynamicListPipe.EMPTY;
14400
14482
  }
14401
14483
  }
@@ -14583,9 +14665,14 @@ WriteDynamicListFieldComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ ty
14583
14665
  })();
14584
14666
 
14585
14667
  class MarkdownComponent {
14586
- constructor() { }
14668
+ constructor() {
14669
+ this.renderUrlToTextFeature = true;
14670
+ }
14587
14671
  ngOnInit() {
14588
14672
  this.content = this.content.replace(/ \n/g, '<br>');
14673
+ if (this.renderUrlToTextFeature) {
14674
+ this.renderUrlToText();
14675
+ }
14589
14676
  }
14590
14677
  onMarkdownClick(event) {
14591
14678
  // If we don't have an anchor tag, we don't need to do anything.
@@ -14594,13 +14681,28 @@ class MarkdownComponent {
14594
14681
  }
14595
14682
  return true;
14596
14683
  }
14684
+ renderUrlToText() {
14685
+ const renderer = new marked.Renderer();
14686
+ renderer.link = (href, title, text) => {
14687
+ // Return the text without turning it into a link if it's not an internal link
14688
+ return this.isAllowedUrl(href) ? `<a href="${href}">${text}</a>` : text;
14689
+ };
14690
+ marked.setOptions({
14691
+ renderer: renderer
14692
+ });
14693
+ }
14694
+ isAllowedUrl(url) {
14695
+ const currentOrigin = window.location.origin;
14696
+ const urlOrigin = new URL(url, window.location.href).origin;
14697
+ return urlOrigin === currentOrigin || url.startsWith('/'); // Check if same origin or relative
14698
+ }
14597
14699
  }
14598
14700
  MarkdownComponent.ɵfac = function MarkdownComponent_Factory(t) { return new (t || MarkdownComponent)(); };
14599
14701
  MarkdownComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MarkdownComponent, selectors: [["ccd-markdown"]], hostBindings: function MarkdownComponent_HostBindings(rf, ctx) {
14600
14702
  if (rf & 1) {
14601
14703
  i0.ɵɵlistener("click", function MarkdownComponent_click_HostBindingHandler($event) { return ctx.onMarkdownClick($event); });
14602
14704
  }
14603
- }, inputs: { content: "content", markdownUseHrefAsRouterLink: "markdownUseHrefAsRouterLink" }, decls: 4, vars: 5, consts: [[1, "markdown", 3, "data"]], template: function MarkdownComponent_Template(rf, ctx) {
14705
+ }, inputs: { content: "content", markdownUseHrefAsRouterLink: "markdownUseHrefAsRouterLink", renderUrlToTextFeature: "renderUrlToTextFeature" }, decls: 4, vars: 5, consts: [[1, "markdown", 3, "data"]], template: function MarkdownComponent_Template(rf, ctx) {
14604
14706
  if (rf & 1) {
14605
14707
  i0.ɵɵelementStart(0, "div");
14606
14708
  i0.ɵɵelement(1, "markdown", 0);
@@ -14621,6 +14723,8 @@ MarkdownComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MarkdownC
14621
14723
  type: Input
14622
14724
  }], markdownUseHrefAsRouterLink: [{
14623
14725
  type: Input
14726
+ }], renderUrlToTextFeature: [{
14727
+ type: Input
14624
14728
  }], onMarkdownClick: [{
14625
14729
  type: HostListener,
14626
14730
  args: ['click', ['$event']]
@@ -14755,7 +14859,7 @@ function WriteDynamicMultiSelectListFieldComponent_ng_container_6_Template(rf, c
14755
14859
  i0.ɵɵadvance(1);
14756
14860
  i0.ɵɵpropertyInterpolate("for", ctx_r3.createElementId(checkbox_r4.code));
14757
14861
  i0.ɵɵadvance(1);
14758
- i0.ɵɵproperty("content", checkbox_r4.label);
14862
+ i0.ɵɵproperty("content", checkbox_r4.label)("renderUrlToTextFeature", false);
14759
14863
  }
14760
14864
  }
14761
14865
  const _c0$O = function (a0) { return { "error": a0 }; };
@@ -14820,14 +14924,14 @@ class WriteDynamicMultiSelectListFieldComponent extends AbstractFieldWriteCompon
14820
14924
  }
14821
14925
  }
14822
14926
  WriteDynamicMultiSelectListFieldComponent.ɵfac = /*@__PURE__*/ function () { let ɵWriteDynamicMultiSelectListFieldComponent_BaseFactory; return function WriteDynamicMultiSelectListFieldComponent_Factory(t) { return (ɵWriteDynamicMultiSelectListFieldComponent_BaseFactory || (ɵWriteDynamicMultiSelectListFieldComponent_BaseFactory = i0.ɵɵgetInheritedFactory(WriteDynamicMultiSelectListFieldComponent)))(t || WriteDynamicMultiSelectListFieldComponent); }; }();
14823
- 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) {
14927
+ 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) {
14824
14928
  if (rf & 1) {
14825
14929
  i0.ɵɵelementStart(0, "div", 0)(1, "fieldset")(2, "legend");
14826
14930
  i0.ɵɵtemplate(3, WriteDynamicMultiSelectListFieldComponent_span_3_Template, 3, 3, "span", 1);
14827
14931
  i0.ɵɵtemplate(4, WriteDynamicMultiSelectListFieldComponent_span_4_Template, 2, 1, "span", 2);
14828
14932
  i0.ɵɵtemplate(5, WriteDynamicMultiSelectListFieldComponent_span_5_Template, 3, 3, "span", 3);
14829
14933
  i0.ɵɵelementEnd();
14830
- i0.ɵɵtemplate(6, WriteDynamicMultiSelectListFieldComponent_ng_container_6_Template, 5, 6, "ng-container", 4);
14934
+ i0.ɵɵtemplate(6, WriteDynamicMultiSelectListFieldComponent_ng_container_6_Template, 5, 7, "ng-container", 4);
14831
14935
  i0.ɵɵelementEnd()();
14832
14936
  }
14833
14937
  if (rf & 2) {
@@ -14845,7 +14949,7 @@ WriteDynamicMultiSelectListFieldComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineCom
14845
14949
  (function () {
14846
14950
  (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(WriteDynamicMultiSelectListFieldComponent, [{
14847
14951
  type: Component,
14848
- 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"] }]
14952
+ 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"] }]
14849
14953
  }], null, null);
14850
14954
  })();
14851
14955
 
@@ -14989,7 +15093,7 @@ function WriteDynamicRadioListFieldComponent_div_9_Template(rf, ctx) {
14989
15093
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 7, radioButton_r5.label));
14990
15094
  }
14991
15095
  }
14992
- const _c1$j = function (a0) { return { "form-group-error": a0 }; };
15096
+ const _c1$k = function (a0) { return { "form-group-error": a0 }; };
14993
15097
  class WriteDynamicRadioListFieldComponent extends AbstractFieldWriteComponent {
14994
15098
  ngOnInit() {
14995
15099
  /**
@@ -15029,7 +15133,7 @@ WriteDynamicRadioListFieldComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent
15029
15133
  i0.ɵɵelementEnd()();
15030
15134
  }
15031
15135
  if (rf & 2) {
15032
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(8, _c1$j, !ctx.dynamicRadioListControl.valid && ctx.dynamicRadioListControl.dirty))("id", ctx.id());
15136
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(8, _c1$k, !ctx.dynamicRadioListControl.valid && ctx.dynamicRadioListControl.dirty))("id", ctx.id());
15033
15137
  i0.ɵɵadvance(3);
15034
15138
  i0.ɵɵproperty("for", ctx.id());
15035
15139
  i0.ɵɵadvance(1);
@@ -15130,7 +15234,7 @@ function WriteEmailFieldComponent_span_4_Template(rf, ctx) {
15130
15234
  }
15131
15235
  }
15132
15236
  const _c0$M = function (a0) { return { "form-group-error": a0 }; };
15133
- const _c1$i = function (a0) { return { "govuk-input--error": a0 }; };
15237
+ const _c1$j = function (a0) { return { "govuk-input--error": a0 }; };
15134
15238
  class WriteEmailFieldComponent extends AbstractFieldWriteComponent {
15135
15239
  ngOnInit() {
15136
15240
  this.emailControl = this.registerControl(new FormControl(this.caseField.value));
@@ -15158,7 +15262,7 @@ WriteEmailFieldComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Wr
15158
15262
  i0.ɵɵadvance(1);
15159
15263
  i0.ɵɵproperty("ngIf", ctx.emailControl.errors && (ctx.emailControl.dirty || ctx.emailControl.touched));
15160
15264
  i0.ɵɵadvance(1);
15161
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(10, _c1$i, ctx.emailControl.errors && (ctx.emailControl.dirty || ctx.emailControl.touched)))("id", ctx.id())("formControl", ctx.emailControl);
15265
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(10, _c1$j, ctx.emailControl.errors && (ctx.emailControl.dirty || ctx.emailControl.touched)))("id", ctx.id())("formControl", ctx.emailControl);
15162
15266
  }
15163
15267
  }, dependencies: [i4.NgClass, i4.NgIf, i3.DefaultValueAccessor, i3.NgControlStatus, i3.FormControlDirective, FieldLabelPipe, FirstErrorPipe, i1.RpxTranslatePipe], encapsulation: 2 });
15164
15268
  (function () {
@@ -15413,7 +15517,7 @@ function WriteFixedRadioListFieldComponent_div_8_Template(rf, ctx) {
15413
15517
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 7, radioButton_r4.label));
15414
15518
  }
15415
15519
  }
15416
- const _c1$h = function (a0) { return { "form-group-error": a0 }; };
15520
+ const _c1$i = function (a0) { return { "form-group-error": a0 }; };
15417
15521
  class WriteFixedRadioListFieldComponent extends AbstractFieldWriteComponent {
15418
15522
  ngOnInit() {
15419
15523
  const notEmpty = this.caseField.value !== null && this.caseField.value !== undefined;
@@ -15435,7 +15539,7 @@ WriteFixedRadioListFieldComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({
15435
15539
  i0.ɵɵelementEnd()();
15436
15540
  }
15437
15541
  if (rf & 2) {
15438
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(7, _c1$h, !ctx.fixedRadioListControl.valid && (ctx.fixedRadioListControl.dirty || ctx.fixedRadioListControl.touched)))("id", ctx.id());
15542
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(7, _c1$i, !ctx.fixedRadioListControl.valid && (ctx.fixedRadioListControl.dirty || ctx.fixedRadioListControl.touched)))("id", ctx.id());
15439
15543
  i0.ɵɵadvance(3);
15440
15544
  i0.ɵɵproperty("for", ctx.id());
15441
15545
  i0.ɵɵadvance(1);
@@ -15589,7 +15693,7 @@ function WriteJudicialUserFieldComponent_mat_option_11_Template(rf, ctx) {
15589
15693
  i0.ɵɵelementEnd();
15590
15694
  }
15591
15695
  }
15592
- const _c1$g = function (a0) { return { "form-group-error": a0 }; };
15696
+ const _c1$h = function (a0) { return { "form-group-error": a0 }; };
15593
15697
  class WriteJudicialUserFieldComponent extends WriteComplexFieldComponent {
15594
15698
  constructor(jurisdictionService, sessionStorageService, caseFlagRefDataService, compoundPipe, validatorsService) {
15595
15699
  super(compoundPipe, validatorsService);
@@ -15742,7 +15846,7 @@ WriteJudicialUserFieldComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ t
15742
15846
  }
15743
15847
  if (rf & 2) {
15744
15848
  const _r3 = i0.ɵɵreference(7);
15745
- i0.ɵɵproperty("formGroup", ctx.formGroup)("ngClass", i0.ɵɵpureFunction1(15, _c1$g, !!ctx.judicialUserControl && ctx.errors));
15849
+ i0.ɵɵproperty("formGroup", ctx.formGroup)("ngClass", i0.ɵɵpureFunction1(15, _c1$h, !!ctx.judicialUserControl && ctx.errors));
15746
15850
  i0.ɵɵadvance(1);
15747
15851
  i0.ɵɵproperty("for", ctx.id());
15748
15852
  i0.ɵɵadvance(1);
@@ -16529,7 +16633,7 @@ function LinkCasesComponent_tr_31_span_15_Template(rf, ctx) {
16529
16633
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, reason_r19));
16530
16634
  }
16531
16635
  }
16532
- const _c1$f = function (a0) { return { "table-group-error": a0 }; };
16636
+ const _c1$g = function (a0) { return { "table-group-error": a0 }; };
16533
16637
  function LinkCasesComponent_tr_31_Template(rf, ctx) {
16534
16638
  if (rf & 1) {
16535
16639
  const _r21 = i0.ɵɵgetCurrentView();
@@ -16562,7 +16666,7 @@ function LinkCasesComponent_tr_31_Template(rf, ctx) {
16562
16666
  const case_r16 = ctx.$implicit;
16563
16667
  const ctx_r2 = i0.ɵɵnextContext();
16564
16668
  i0.ɵɵadvance(2);
16565
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(12, _c1$f, ctx_r2.caseSelectionError && case_r16.caseReference === ctx_r2.linkCaseForm.value.caseNumber));
16669
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(12, _c1$g, ctx_r2.caseSelectionError && case_r16.caseReference === ctx_r2.linkCaseForm.value.caseNumber));
16566
16670
  i0.ɵɵadvance(2);
16567
16671
  i0.ɵɵtextInterpolate1("", case_r16.caseName, " ");
16568
16672
  i0.ɵɵadvance(2);
@@ -18649,7 +18753,7 @@ function WriteNumberFieldComponent_span_4_Template(rf, ctx) {
18649
18753
  }
18650
18754
  }
18651
18755
  const _c0$E = function (a0) { return { "form-group-error": a0 }; };
18652
- const _c1$e = function (a0) { return { "govuk-input--error": a0 }; };
18756
+ const _c1$f = function (a0) { return { "govuk-input--error": a0 }; };
18653
18757
  class WriteNumberFieldComponent extends AbstractFieldWriteComponent {
18654
18758
  ngOnInit() {
18655
18759
  this.numberControl = this.registerControl(new FormControl(this.caseField.value));
@@ -18677,7 +18781,7 @@ WriteNumberFieldComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: W
18677
18781
  i0.ɵɵadvance(1);
18678
18782
  i0.ɵɵproperty("ngIf", ctx.numberControl.errors && ctx.numberControl.dirty);
18679
18783
  i0.ɵɵadvance(1);
18680
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(10, _c1$e, ctx.numberControl.errors && ctx.numberControl.dirty))("id", ctx.id())("formControl", ctx.numberControl);
18784
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(10, _c1$f, ctx.numberControl.errors && ctx.numberControl.dirty))("id", ctx.id())("formControl", ctx.numberControl);
18681
18785
  }
18682
18786
  }, dependencies: [i4.NgClass, i4.NgIf, i3.DefaultValueAccessor, i3.NumberValueAccessor, i3.NgControlStatus, i3.FormControlDirective, FieldLabelPipe, FirstErrorPipe, i1.RpxTranslatePipe], encapsulation: 2 });
18683
18787
  (function () {
@@ -19393,7 +19497,7 @@ function WritePhoneUKFieldComponent_span_4_Template(rf, ctx) {
19393
19497
  }
19394
19498
  }
19395
19499
  const _c0$C = function (a0) { return { "form-group-error": a0 }; };
19396
- const _c1$d = function (a0) { return { "govuk-input--error": a0 }; };
19500
+ const _c1$e = function (a0) { return { "govuk-input--error": a0 }; };
19397
19501
  class WritePhoneUKFieldComponent extends AbstractFieldWriteComponent {
19398
19502
  ngOnInit() {
19399
19503
  this.phoneUkControl = this.registerControl(new FormControl(this.caseField.value));
@@ -19421,7 +19525,7 @@ WritePhoneUKFieldComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
19421
19525
  i0.ɵɵadvance(1);
19422
19526
  i0.ɵɵproperty("ngIf", ctx.phoneUkControl.errors && (ctx.phoneUkControl.dirty || ctx.phoneUkControl.touched));
19423
19527
  i0.ɵɵadvance(1);
19424
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(10, _c1$d, ctx.phoneUkControl.errors && ctx.phoneUkControl.dirty))("id", ctx.id())("formControl", ctx.phoneUkControl);
19528
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(10, _c1$e, ctx.phoneUkControl.errors && ctx.phoneUkControl.dirty))("id", ctx.id())("formControl", ctx.phoneUkControl);
19425
19529
  }
19426
19530
  }, dependencies: [i4.NgClass, i4.NgIf, i3.DefaultValueAccessor, i3.NgControlStatus, i3.FormControlDirective, FieldLabelPipe, FirstErrorPipe, i1.RpxTranslatePipe], encapsulation: 2 });
19427
19531
  (function () {
@@ -21663,7 +21767,7 @@ function WriteTextAreaFieldComponent_span_4_Template(rf, ctx) {
21663
21767
  }
21664
21768
  }
21665
21769
  const _c0$z = function (a0) { return { "form-group-error": a0 }; };
21666
- const _c1$c = function (a0) { return { "govuk-textarea--error": a0 }; };
21770
+ const _c1$d = function (a0) { return { "govuk-textarea--error": a0 }; };
21667
21771
  class WriteTextAreaFieldComponent extends AbstractFieldWriteComponent {
21668
21772
  constructor(browserService) {
21669
21773
  super();
@@ -21703,7 +21807,7 @@ WriteTextAreaFieldComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
21703
21807
  i0.ɵɵadvance(1);
21704
21808
  i0.ɵɵproperty("ngIf", ctx.textareaControl.errors && (ctx.textareaControl.dirty || ctx.textareaControl.touched));
21705
21809
  i0.ɵɵadvance(1);
21706
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(10, _c1$c, ctx.textareaControl.errors && (ctx.textareaControl.dirty || ctx.textareaControl.touched)))("id", ctx.id())("formControl", ctx.textareaControl);
21810
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(10, _c1$d, ctx.textareaControl.errors && (ctx.textareaControl.dirty || ctx.textareaControl.touched)))("id", ctx.id())("formControl", ctx.textareaControl);
21707
21811
  }
21708
21812
  }, dependencies: [i4.NgClass, i4.NgIf, i3.DefaultValueAccessor, i3.NgControlStatus, i3.FormControlDirective, FieldLabelPipe, FirstErrorPipe, i1.RpxTranslatePipe], encapsulation: 2 });
21709
21813
  (function () {
@@ -21778,7 +21882,7 @@ function WriteTextFieldComponent_span_4_Template(rf, ctx) {
21778
21882
  }
21779
21883
  }
21780
21884
  const _c0$y = function (a0) { return { "form-group-error": a0 }; };
21781
- const _c1$b = function (a0) { return { "govuk-input--error": a0 }; };
21885
+ const _c1$c = function (a0) { return { "govuk-input--error": a0 }; };
21782
21886
  class WriteTextFieldComponent extends AbstractFieldWriteComponent {
21783
21887
  ngOnInit() {
21784
21888
  this.textControl = this.registerControl(new FormControl(this.caseField.value));
@@ -21810,7 +21914,7 @@ WriteTextFieldComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Wri
21810
21914
  i0.ɵɵadvance(1);
21811
21915
  i0.ɵɵproperty("ngIf", (ctx.textControl == null ? null : ctx.textControl.errors) && (ctx.textControl.dirty || ctx.textControl.touched));
21812
21916
  i0.ɵɵadvance(1);
21813
- 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);
21917
+ 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);
21814
21918
  }
21815
21919
  }, dependencies: [i4.NgClass, i4.NgIf, i3.DefaultValueAccessor, i3.NgControlStatus, i3.FormControlDirective, FieldLabelPipe, FirstErrorPipe, i1.RpxTranslatePipe], encapsulation: 2 });
21816
21920
  (function () {
@@ -22017,7 +22121,7 @@ function WriteYesNoFieldComponent_div_7_Template(rf, ctx) {
22017
22121
  i0.ɵɵtextInterpolate(ctx_r3.caseField.label ? i0.ɵɵpipeBind3(4, 8, ctx_r3.caseField.label, null, value_r4) : value_r4);
22018
22122
  }
22019
22123
  }
22020
- const _c1$a = function (a0) { return { "form-group-error": a0 }; };
22124
+ const _c1$b = function (a0) { return { "form-group-error": a0 }; };
22021
22125
  class WriteYesNoFieldComponent extends AbstractFieldWriteComponent {
22022
22126
  constructor(yesNoService) {
22023
22127
  super();
@@ -22041,7 +22145,7 @@ WriteYesNoFieldComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Wr
22041
22145
  i0.ɵɵelementEnd()()();
22042
22146
  }
22043
22147
  if (rf & 2) {
22044
- i0.ɵɵproperty("id", ctx.id())("ngClass", i0.ɵɵpureFunction1(7, _c1$a, !ctx.yesNoControl.valid && (ctx.yesNoControl.dirty || ctx.yesNoControl.touched)));
22148
+ i0.ɵɵproperty("id", ctx.id())("ngClass", i0.ɵɵpureFunction1(7, _c1$b, !ctx.yesNoControl.valid && (ctx.yesNoControl.dirty || ctx.yesNoControl.touched)));
22045
22149
  i0.ɵɵadvance(3);
22046
22150
  i0.ɵɵproperty("ngIf", ctx.caseField.label);
22047
22151
  i0.ɵɵadvance(1);
@@ -22439,7 +22543,7 @@ function CaseFileViewFolderSelectorComponent_ng_template_12_ng_container_5_ng_co
22439
22543
  i0.ɵɵelementContainer(0);
22440
22544
  }
22441
22545
  }
22442
- const _c1$9 = function (a0, a1) { return { cat: a0, level: a1 }; };
22546
+ const _c1$a = function (a0, a1) { return { cat: a0, level: a1 }; };
22443
22547
  function CaseFileViewFolderSelectorComponent_ng_template_12_ng_container_5_Template(rf, ctx) {
22444
22548
  if (rf & 1) {
22445
22549
  i0.ɵɵelementContainerStart(0);
@@ -22452,7 +22556,7 @@ function CaseFileViewFolderSelectorComponent_ng_template_12_ng_container_5_Templ
22452
22556
  i0.ɵɵnextContext();
22453
22557
  const _r1 = i0.ɵɵreference(13);
22454
22558
  i0.ɵɵadvance(1);
22455
- i0.ɵɵproperty("ngTemplateOutlet", _r1)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c1$9, subcat_r8, level_r6 + 1));
22559
+ i0.ɵɵproperty("ngTemplateOutlet", _r1)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c1$a, subcat_r8, level_r6 + 1));
22456
22560
  }
22457
22561
  }
22458
22562
  function CaseFileViewFolderSelectorComponent_ng_template_12_Template(rf, ctx) {
@@ -22643,7 +22747,7 @@ function CaseFileViewOverlayMenuComponent_ng_template_4_Template(rf, ctx) {
22643
22747
  }
22644
22748
  }
22645
22749
  const _c0$s = [[["", "trigger", ""]]];
22646
- const _c1$8 = ["[trigger]"];
22750
+ const _c1$9 = ["[trigger]"];
22647
22751
  class CaseFileViewOverlayMenuComponent {
22648
22752
  constructor() {
22649
22753
  this.title = '';
@@ -22657,7 +22761,7 @@ class CaseFileViewOverlayMenuComponent {
22657
22761
  }
22658
22762
  }
22659
22763
  CaseFileViewOverlayMenuComponent.ɵfac = function CaseFileViewOverlayMenuComponent_Factory(t) { return new (t || CaseFileViewOverlayMenuComponent)(); };
22660
- 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) {
22764
+ 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) {
22661
22765
  if (rf & 1) {
22662
22766
  i0.ɵɵprojectionDef(_c0$s);
22663
22767
  i0.ɵɵelementStart(0, "div")(1, "button", 0, 1);
@@ -22947,9 +23051,10 @@ function CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template(rf, c
22947
23051
  i0.ɵɵelement(6, "br");
22948
23052
  i0.ɵɵelementStart(7, "span", 17);
22949
23053
  i0.ɵɵtext(8);
23054
+ i0.ɵɵpipe(9, "date");
22950
23055
  i0.ɵɵelementEnd()();
22951
- i0.ɵɵelementStart(9, "div", 18)(10, "ccd-case-file-view-folder-document-actions", 19);
22952
- i0.ɵɵlistener("changeFolderAction", function CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template_ccd_case_file_view_folder_document_actions_changeFolderAction_10_listener() { const restoredCtx = i0.ɵɵrestoreView(_r6); const node_r4 = restoredCtx.$implicit; const ctx_r7 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r7.triggerDocumentAction("changeFolder", node_r4)); })("openInANewTabAction", function CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template_ccd_case_file_view_folder_document_actions_openInANewTabAction_10_listener() { const restoredCtx = i0.ɵɵrestoreView(_r6); const node_r4 = restoredCtx.$implicit; const ctx_r8 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r8.triggerDocumentAction("openInANewTab", node_r4)); })("downloadAction", function CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template_ccd_case_file_view_folder_document_actions_downloadAction_10_listener() { const restoredCtx = i0.ɵɵrestoreView(_r6); const node_r4 = restoredCtx.$implicit; const ctx_r9 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r9.triggerDocumentAction("download", node_r4)); })("printAction", function CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template_ccd_case_file_view_folder_document_actions_printAction_10_listener() { const restoredCtx = i0.ɵɵrestoreView(_r6); const node_r4 = restoredCtx.$implicit; const ctx_r10 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r10.triggerDocumentAction("print", node_r4)); });
23056
+ i0.ɵɵelementStart(10, "div", 18)(11, "ccd-case-file-view-folder-document-actions", 19);
23057
+ i0.ɵɵlistener("changeFolderAction", function CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template_ccd_case_file_view_folder_document_actions_changeFolderAction_11_listener() { const restoredCtx = i0.ɵɵrestoreView(_r6); const node_r4 = restoredCtx.$implicit; const ctx_r7 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r7.triggerDocumentAction("changeFolder", node_r4)); })("openInANewTabAction", function CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template_ccd_case_file_view_folder_document_actions_openInANewTabAction_11_listener() { const restoredCtx = i0.ɵɵrestoreView(_r6); const node_r4 = restoredCtx.$implicit; const ctx_r8 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r8.triggerDocumentAction("openInANewTab", node_r4)); })("downloadAction", function CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template_ccd_case_file_view_folder_document_actions_downloadAction_11_listener() { const restoredCtx = i0.ɵɵrestoreView(_r6); const node_r4 = restoredCtx.$implicit; const ctx_r9 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r9.triggerDocumentAction("download", node_r4)); })("printAction", function CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template_ccd_case_file_view_folder_document_actions_printAction_11_listener() { const restoredCtx = i0.ɵɵrestoreView(_r6); const node_r4 = restoredCtx.$implicit; const ctx_r10 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r10.triggerDocumentAction("print", node_r4)); });
22953
23058
  i0.ɵɵelementEnd()()()();
22954
23059
  }
22955
23060
  if (rf & 2) {
@@ -22960,8 +23065,8 @@ function CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template(rf, c
22960
23065
  i0.ɵɵadvance(4);
22961
23066
  i0.ɵɵtextInterpolate1(" ", node_r4.name, " ");
22962
23067
  i0.ɵɵadvance(3);
22963
- i0.ɵɵtextInterpolate(node_r4.upload_timestamp);
22964
- i0.ɵɵadvance(2);
23068
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(9, 5, node_r4.upload_timestamp, "dd MMM YYYY"));
23069
+ i0.ɵɵadvance(3);
22965
23070
  i0.ɵɵproperty("allowMoving", ctx_r2.allowMoving);
22966
23071
  }
22967
23072
  }
@@ -22999,7 +23104,7 @@ function CaseFileViewFolderComponent_div_8_Template(rf, ctx) {
22999
23104
  i0.ɵɵelementStart(0, "div", 7);
23000
23105
  i0.ɵɵtemplate(1, CaseFileViewFolderComponent_div_8_div_1_Template, 2, 0, "div", 8);
23001
23106
  i0.ɵɵelementStart(2, "div")(3, "cdk-tree", 9);
23002
- i0.ɵɵtemplate(4, CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template, 11, 5, "cdk-nested-tree-node", 10);
23107
+ i0.ɵɵtemplate(4, CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template, 12, 8, "cdk-nested-tree-node", 10);
23003
23108
  i0.ɵɵtemplate(5, CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_5_Template, 10, 6, "cdk-nested-tree-node", 11);
23004
23109
  i0.ɵɵelementEnd()()();
23005
23110
  }
@@ -23089,7 +23194,7 @@ class CaseFileViewFolderComponent {
23089
23194
  documentTreeNode.document_binary_url = document.document_binary_url;
23090
23195
  documentTreeNode.attribute_path = document.attribute_path;
23091
23196
  documentTreeNode.upload_timestamp = this.appConfig.getEnableCaseFileViewVersion1_1()
23092
- && document.upload_timestamp ? moment$1(document.upload_timestamp).format('DD MMM YYYY') : '';
23197
+ && document.upload_timestamp ? moment$1(document.upload_timestamp).format('DD MMM YYYY HH:mm:ss') : '';
23093
23198
  documentsToReturn.push(documentTreeNode);
23094
23199
  });
23095
23200
  return documentsToReturn;
@@ -23104,7 +23209,7 @@ class CaseFileViewFolderComponent {
23104
23209
  documentTreeNode.document_binary_url = document.document_binary_url;
23105
23210
  documentTreeNode.attribute_path = document.attribute_path;
23106
23211
  documentTreeNode.upload_timestamp = this.appConfig.getEnableCaseFileViewVersion1_1()
23107
- && document.upload_timestamp ? moment$1(document.upload_timestamp).format('DD MMM YYYY') : '';
23212
+ && document.upload_timestamp ? moment$1(document.upload_timestamp).format('DD MMM YYYY HH:mm:ss') : '';
23108
23213
  documents.push(documentTreeNode);
23109
23214
  });
23110
23215
  const uncategorisedNode = new DocumentTreeNode();
@@ -23226,7 +23331,7 @@ CaseFileViewFolderComponent.UNCATEGORISED_DOCUMENTS_TITLE = 'Uncategorised docum
23226
23331
  CaseFileViewFolderComponent.DOCUMENT_SEARCH_FORM_CONTROL_NAME = 'documentSearchFormControl';
23227
23332
  CaseFileViewFolderComponent.MINIMUM_SEARCH_CHARACTERS = 1;
23228
23333
  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)); };
23229
- 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) {
23334
+ 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) {
23230
23335
  if (rf & 1) {
23231
23336
  i0.ɵɵelementStart(0, "div", 0)(1, "div", 1);
23232
23337
  i0.ɵɵelement(2, "input", 2);
@@ -23247,11 +23352,11 @@ CaseFileViewFolderComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
23247
23352
  i0.ɵɵadvance(3);
23248
23353
  i0.ɵɵproperty("ngIf", ctx.documentTreeData);
23249
23354
  }
23250
- }, dependencies: [i4.NgIf, i3.DefaultValueAccessor, i3.NgControlStatus, i3.NgControlStatusGroup, i3.FormGroupDirective, i3.FormControlName, i7.CdkNestedTreeNode, i7.CdkTreeNodeDef, i7.CdkTreeNodeToggle, i7.CdkTree, i7.CdkTreeNodeOutlet, CaseFileViewFolderSortComponent, CaseFileViewFolderDocumentActionsComponent], styles: ["[_nghost-%COMP%]{display:flex;height:100%;flex-direction:column}[_nghost-%COMP%] .document-tree-container[_ngcontent-%COMP%]{flex:1 0}.document-filter-container[_ngcontent-%COMP%]{border-bottom:2px solid #C9C9C9}.document-filter-container[_ngcontent-%COMP%] .document-filter[_ngcontent-%COMP%]{padding:10px}.document-filter-container[_ngcontent-%COMP%] .document-filter[_ngcontent-%COMP%] .document-search[_ngcontent-%COMP%]{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[_ngcontent-%COMP%] .documents-title[_ngcontent-%COMP%]{height:30%;margin-left:8px;font-weight:700}.document-tree-container[_ngcontent-%COMP%]{padding:4px;overflow-x:hidden;overflow-y:scroll}.document-tree-container__node[_ngcontent-%COMP%]{display:block}.document-tree-container__node[_ngcontent-%COMP%] .document-tree-container__node[_ngcontent-%COMP%]{padding-left:40px}.document-tree-container[_ngcontent-%COMP%] .document-tree-invisible[_ngcontent-%COMP%]{display:none}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar{width:7px}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{border:4px solid rgba(0,0,0,0);background-clip:padding-box;border-radius:9999px;background-color:#aaa}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar-button{display:none}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar-track-piece{background:#EEE}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{background:#CCC}.document-folders-header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;border-bottom:2px solid #C9C9C9;padding:10px}.document-folders-header__title[_ngcontent-%COMP%]{font-weight:700}.node[_ngcontent-%COMP%]{display:flex;align-items:center;width:100%;padding:10px;background:none;border:0;cursor:pointer;white-space:nowrap}.node--selected[_ngcontent-%COMP%]{background:#fff2cc}.node__icon[_ngcontent-%COMP%]{position:relative;display:inline-block}.node__count[_ngcontent-%COMP%]{color:#fff;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:.875rem;padding-top:4px}.node__iconImg[_ngcontent-%COMP%]{display:block;height:30px;width:30px}.node__name[_ngcontent-%COMP%]{margin-left:6px;font-size:1rem;overflow:hidden;text-overflow:ellipsis}.node__document-options[_ngcontent-%COMP%]{margin-left:auto;margin-right:0}.node__document-upload-timestamp[_ngcontent-%COMP%]{font-size:.8rem;float:left;padding-left:10px}"] });
23355
+ }, dependencies: [i4.NgIf, i3.DefaultValueAccessor, i3.NgControlStatus, i3.NgControlStatusGroup, i3.FormGroupDirective, i3.FormControlName, i7.CdkNestedTreeNode, i7.CdkTreeNodeDef, i7.CdkTreeNodeToggle, i7.CdkTree, i7.CdkTreeNodeOutlet, CaseFileViewFolderSortComponent, CaseFileViewFolderDocumentActionsComponent, i4.DatePipe], styles: ["[_nghost-%COMP%]{display:flex;height:100%;flex-direction:column}[_nghost-%COMP%] .document-tree-container[_ngcontent-%COMP%]{flex:1 0}.document-filter-container[_ngcontent-%COMP%]{border-bottom:2px solid #C9C9C9}.document-filter-container[_ngcontent-%COMP%] .document-filter[_ngcontent-%COMP%]{padding:10px}.document-filter-container[_ngcontent-%COMP%] .document-filter[_ngcontent-%COMP%] .document-search[_ngcontent-%COMP%]{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[_ngcontent-%COMP%] .documents-title[_ngcontent-%COMP%]{height:30%;margin-left:8px;font-weight:700}.document-tree-container[_ngcontent-%COMP%]{padding:4px;overflow-x:hidden;overflow-y:scroll}.document-tree-container__node[_ngcontent-%COMP%]{display:block}.document-tree-container__node[_ngcontent-%COMP%] .document-tree-container__node[_ngcontent-%COMP%]{padding-left:40px}.document-tree-container[_ngcontent-%COMP%] .document-tree-invisible[_ngcontent-%COMP%]{display:none}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar{width:7px}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{border:4px solid rgba(0,0,0,0);background-clip:padding-box;border-radius:9999px;background-color:#aaa}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar-button{display:none}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar-track-piece{background:#EEE}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{background:#CCC}.document-folders-header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;border-bottom:2px solid #C9C9C9;padding:10px}.document-folders-header__title[_ngcontent-%COMP%]{font-weight:700}.node[_ngcontent-%COMP%]{display:flex;align-items:center;width:100%;padding:10px;background:none;border:0;cursor:pointer;white-space:nowrap}.node--selected[_ngcontent-%COMP%]{background:#fff2cc}.node__icon[_ngcontent-%COMP%]{position:relative;display:inline-block}.node__count[_ngcontent-%COMP%]{color:#fff;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:.875rem;padding-top:4px}.node__iconImg[_ngcontent-%COMP%]{display:block;height:30px;width:30px}.node__name[_ngcontent-%COMP%]{margin-left:6px;font-size:1rem;overflow:hidden;text-overflow:ellipsis}.node__document-options[_ngcontent-%COMP%]{margin-left:auto;margin-right:0}.node__document-upload-timestamp[_ngcontent-%COMP%]{font-size:.8rem;float:left;padding-left:10px}"] });
23251
23356
  (function () {
23252
23357
  (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaseFileViewFolderComponent, [{
23253
23358
  type: Component,
23254
- 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"] }]
23359
+ 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 | date:\"dd MMM YYYY\"}}</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"] }]
23255
23360
  }], function () { return [{ type: WindowService }, { type: i1$1.Router }, { type: DocumentManagementService }, { type: i1$3.MatLegacyDialog }, { type: AbstractAppConfig }]; }, { categoriesAndDocuments: [{
23256
23361
  type: Input
23257
23362
  }], allowMoving: [{
@@ -24918,7 +25023,7 @@ function SelectFlagTypeComponent_ng_container_0_div_11_div_8_Template(rf, ctx) {
24918
25023
  }
24919
25024
  }
24920
25025
  const _c0$n = function (a0) { return { "form-group-error": a0 }; };
24921
- const _c1$7 = function (a0) { return { "govuk-input--error": a0 }; };
25026
+ const _c1$8 = function (a0) { return { "govuk-input--error": a0 }; };
24922
25027
  function SelectFlagTypeComponent_ng_container_0_div_11_Template(rf, ctx) {
24923
25028
  if (rf & 1) {
24924
25029
  i0.ɵɵelementStart(0, "div", 18)(1, "div", 3)(2, "label", 19);
@@ -24940,7 +25045,7 @@ function SelectFlagTypeComponent_ng_container_0_div_11_Template(rf, ctx) {
24940
25045
  i0.ɵɵadvance(3);
24941
25046
  i0.ɵɵproperty("ngIf", ctx_r7.flagTypeErrorMessage.length > 0);
24942
25047
  i0.ɵɵadvance(1);
24943
- 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);
25048
+ 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);
24944
25049
  i0.ɵɵadvance(1);
24945
25050
  i0.ɵɵproperty("ngIf", !ctx_r7.isDisplayContextParameterExternal && !ctx_r7.isCaseLevelFlag && ctx_r7.isDisplayContextParameter2Point1Enabled);
24946
25051
  }
@@ -25510,7 +25615,7 @@ function UpdateFlagComponent_div_22_Template(rf, ctx) {
25510
25615
  i0.ɵɵproperty("ngIf", ctx_r9.selectedFlag.flagDetailDisplay.flagDetail.status === "Active");
25511
25616
  }
25512
25617
  }
25513
- const _c1$6 = function (a0) { return { "form-group-error": a0 }; };
25618
+ const _c1$7 = function (a0) { return { "form-group-error": a0 }; };
25514
25619
  class UpdateFlagComponent {
25515
25620
  constructor(rpxTranslationService) {
25516
25621
  this.rpxTranslationService = rpxTranslationService;
@@ -25719,7 +25824,7 @@ UpdateFlagComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UpdateF
25719
25824
  const _r3 = i0.ɵɵreference(17);
25720
25825
  i0.ɵɵproperty("formGroup", ctx.formGroup);
25721
25826
  i0.ɵɵadvance(2);
25722
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(23, _c1$6, ctx.errorMessages.length > 0));
25827
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(23, _c1$7, ctx.errorMessages.length > 0));
25723
25828
  i0.ɵɵadvance(3);
25724
25829
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(6, 13, ctx.updateFlagTitle), " ");
25725
25830
  i0.ɵɵadvance(2);
@@ -27115,7 +27220,7 @@ const CUSTOM_MOMENT_FORMATS = {
27115
27220
  };
27116
27221
 
27117
27222
  const _c0$g = ["picker"];
27118
- const _c1$5 = ["input"];
27223
+ const _c1$6 = ["input"];
27119
27224
  function DatetimePickerComponent_span_3_Template(rf, ctx) {
27120
27225
  if (rf & 1) {
27121
27226
  i0.ɵɵelementStart(0, "span", 11);
@@ -27179,7 +27284,7 @@ function DatetimePickerComponent_span_7_Template(rf, ctx) {
27179
27284
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, "This date is later than the maximum date allowed"));
27180
27285
  }
27181
27286
  }
27182
- const _c2$1 = function (a0) { return { "form-group-error": a0 }; };
27287
+ const _c2$2 = function (a0) { return { "form-group-error": a0 }; };
27183
27288
  class DatetimePickerComponent extends AbstractFormFieldComponent {
27184
27289
  constructor(formatTranslationService, ngxMatDateFormats) {
27185
27290
  super();
@@ -27345,7 +27450,7 @@ DatetimePickerComponent.ɵfac = function DatetimePickerComponent_Factory(t) { re
27345
27450
  DatetimePickerComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DatetimePickerComponent, selectors: [["ccd-datetime-picker"]], viewQuery: function DatetimePickerComponent_Query(rf, ctx) {
27346
27451
  if (rf & 1) {
27347
27452
  i0.ɵɵviewQuery(_c0$g, 5);
27348
- i0.ɵɵviewQuery(_c1$5, 5);
27453
+ i0.ɵɵviewQuery(_c1$6, 5);
27349
27454
  }
27350
27455
  if (rf & 2) {
27351
27456
  let _t;
@@ -27381,7 +27486,7 @@ DatetimePickerComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Dat
27381
27486
  }
27382
27487
  if (rf & 2) {
27383
27488
  const _r6 = i0.ɵɵreference(13);
27384
- i0.ɵɵproperty("id", ctx.caseField.id)("ngClass", i0.ɵɵpureFunction1(24, _c2$1, ctx.dateControl && !ctx.dateControl.valid && ctx.dateControl.dirty));
27489
+ i0.ɵɵproperty("id", ctx.caseField.id)("ngClass", i0.ɵɵpureFunction1(24, _c2$2, ctx.dateControl && !ctx.dateControl.valid && ctx.dateControl.dirty));
27385
27490
  i0.ɵɵadvance(3);
27386
27491
  i0.ɵɵproperty("ngIf", ctx.caseField.label);
27387
27492
  i0.ɵɵadvance(1);
@@ -27635,7 +27740,7 @@ function EventLogTableComponent_tr_20_div_6_Template(rf, ctx) {
27635
27740
  i0.ɵɵtextInterpolate(ctx_r5.getSignificantItemDesc(event_r1));
27636
27741
  }
27637
27742
  }
27638
- const _c1$4 = function (a0) { return { "EventLogTable-Selected": a0 }; };
27743
+ const _c1$5 = function (a0) { return { "EventLogTable-Selected": a0 }; };
27639
27744
  function EventLogTableComponent_tr_20_Template(rf, ctx) {
27640
27745
  if (rf & 1) {
27641
27746
  const _r18 = i0.ɵɵgetCurrentView();
@@ -27668,7 +27773,7 @@ function EventLogTableComponent_tr_20_Template(rf, ctx) {
27668
27773
  if (rf & 2) {
27669
27774
  const event_r1 = ctx.$implicit;
27670
27775
  const ctx_r0 = i0.ɵɵnextContext();
27671
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(25, _c1$4, ctx_r0.selected === event_r1));
27776
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(25, _c1$5, ctx_r0.selected === event_r1));
27672
27777
  i0.ɵɵattribute("aria-label", ctx_r0.getAriaLabelforRow(event_r1));
27673
27778
  i0.ɵɵadvance(2);
27674
27779
  i0.ɵɵproperty("ngSwitch", ctx_r0.isPartOfCaseTimeline);
@@ -29736,6 +29841,36 @@ function CaseEditSubmitComponent_div_0_ng_container_13_Template(rf, ctx) {
29736
29841
  i0.ɵɵproperty("ngForOf", ctx_r8.showSummaryFields);
29737
29842
  }
29738
29843
  }
29844
+ function CaseEditSubmitComponent_div_0_ng_container_14_span_8_Template(rf, ctx) {
29845
+ if (rf & 1) {
29846
+ i0.ɵɵelementStart(0, "span", 48);
29847
+ i0.ɵɵtext(1);
29848
+ i0.ɵɵpipe(2, "rpxTranslate");
29849
+ i0.ɵɵpipe(3, "ccdFirstError");
29850
+ i0.ɵɵelementEnd();
29851
+ }
29852
+ if (rf & 2) {
29853
+ const ctx_r36 = i0.ɵɵnextContext(3);
29854
+ i0.ɵɵadvance(1);
29855
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, i0.ɵɵpipeBind2(3, 3, ctx_r36.summary.errors, ctx_r36.eventSummaryLabel)), " ");
29856
+ }
29857
+ }
29858
+ function CaseEditSubmitComponent_div_0_ng_container_14_span_13_Template(rf, ctx) {
29859
+ if (rf & 1) {
29860
+ i0.ɵɵelementStart(0, "span", 48);
29861
+ i0.ɵɵtext(1);
29862
+ i0.ɵɵpipe(2, "rpxTranslate");
29863
+ i0.ɵɵpipe(3, "ccdFirstError");
29864
+ i0.ɵɵelementEnd();
29865
+ }
29866
+ if (rf & 2) {
29867
+ const ctx_r37 = i0.ɵɵnextContext(3);
29868
+ i0.ɵɵadvance(1);
29869
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, i0.ɵɵpipeBind2(3, 3, ctx_r37.description.errors, ctx_r37.eventDescriptionLabel)), " ");
29870
+ }
29871
+ }
29872
+ const _c1$4 = function (a0) { return { "form-group-error": a0 }; };
29873
+ const _c2$1 = function (a0) { return { "govuk-input--error": a0 }; };
29739
29874
  function CaseEditSubmitComponent_div_0_ng_container_14_Template(rf, ctx) {
29740
29875
  if (rf & 1) {
29741
29876
  i0.ɵɵelementContainerStart(0);
@@ -29746,21 +29881,38 @@ function CaseEditSubmitComponent_div_0_ng_container_14_Template(rf, ctx) {
29746
29881
  i0.ɵɵelementStart(6, "span", 43);
29747
29882
  i0.ɵɵtext(7, "A few words describing the purpose of the event.");
29748
29883
  i0.ɵɵelementEnd()();
29749
- i0.ɵɵelement(8, "input", 44);
29884
+ i0.ɵɵtemplate(8, CaseEditSubmitComponent_div_0_ng_container_14_span_8_Template, 4, 6, "span", 44);
29885
+ i0.ɵɵelement(9, "input", 45);
29750
29886
  i0.ɵɵelementEnd();
29751
- i0.ɵɵelementStart(9, "div", 41)(10, "label", 45);
29752
- i0.ɵɵtext(11, "Event description (optional)");
29887
+ i0.ɵɵelementStart(10, "div", 41)(11, "label", 46);
29888
+ i0.ɵɵtext(12, "Event description (optional)");
29753
29889
  i0.ɵɵelementEnd();
29754
- i0.ɵɵelement(12, "textarea", 46);
29890
+ i0.ɵɵtemplate(13, CaseEditSubmitComponent_div_0_ng_container_14_span_13_Template, 4, 6, "span", 44);
29891
+ i0.ɵɵelement(14, "textarea", 47);
29755
29892
  i0.ɵɵelementEnd()();
29756
29893
  i0.ɵɵelementContainerEnd();
29757
29894
  }
29895
+ if (rf & 2) {
29896
+ const ctx_r9 = i0.ɵɵnextContext(2);
29897
+ i0.ɵɵadvance(3);
29898
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(6, _c1$4, !!ctx_r9.summary && !ctx_r9.summary.valid && (ctx_r9.summary.dirty || ctx_r9.summary.touched)));
29899
+ i0.ɵɵadvance(5);
29900
+ i0.ɵɵproperty("ngIf", (ctx_r9.summary == null ? null : ctx_r9.summary.errors) && (ctx_r9.summary.dirty || ctx_r9.summary.touched));
29901
+ i0.ɵɵadvance(1);
29902
+ 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)));
29903
+ i0.ɵɵadvance(1);
29904
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(10, _c1$4, !!ctx_r9.description && !ctx_r9.description.valid && (ctx_r9.description.dirty || ctx_r9.description.touched)));
29905
+ i0.ɵɵadvance(3);
29906
+ i0.ɵɵproperty("ngIf", (ctx_r9.description == null ? null : ctx_r9.description.errors) && (ctx_r9.description.dirty || ctx_r9.description.touched));
29907
+ i0.ɵɵadvance(1);
29908
+ 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)));
29909
+ }
29758
29910
  }
29759
29911
  function CaseEditSubmitComponent_div_0_button_16_Template(rf, ctx) {
29760
29912
  if (rf & 1) {
29761
- const _r37 = i0.ɵɵgetCurrentView();
29762
- i0.ɵɵelementStart(0, "button", 47);
29763
- 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()); });
29913
+ const _r39 = i0.ɵɵgetCurrentView();
29914
+ i0.ɵɵelementStart(0, "button", 49);
29915
+ 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()); });
29764
29916
  i0.ɵɵtext(1);
29765
29917
  i0.ɵɵpipe(2, "rpxTranslate");
29766
29918
  i0.ɵɵelementEnd();
@@ -29774,7 +29926,7 @@ function CaseEditSubmitComponent_div_0_button_16_Template(rf, ctx) {
29774
29926
  }
29775
29927
  function CaseEditSubmitComponent_div_0_Template(rf, ctx) {
29776
29928
  if (rf & 1) {
29777
- const _r39 = i0.ɵɵgetCurrentView();
29929
+ const _r41 = i0.ɵɵgetCurrentView();
29778
29930
  i0.ɵɵelementStart(0, "div")(1, "h1", 2);
29779
29931
  i0.ɵɵtext(2);
29780
29932
  i0.ɵɵpipe(3, "rpxTranslate");
@@ -29784,13 +29936,13 @@ function CaseEditSubmitComponent_div_0_Template(rf, ctx) {
29784
29936
  i0.ɵɵtemplate(7, CaseEditSubmitComponent_div_0_ng_template_7_Template, 1, 1, "ng-template", null, 5, i0.ɵɵtemplateRefExtractor);
29785
29937
  i0.ɵɵelement(9, "ccd-case-edit-generic-errors", 6);
29786
29938
  i0.ɵɵelementStart(10, "ccd-callback-errors", 7);
29787
- 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)); });
29939
+ 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)); });
29788
29940
  i0.ɵɵelementEnd();
29789
29941
  i0.ɵɵelementStart(11, "form", 8);
29790
- 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()); });
29942
+ 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()); });
29791
29943
  i0.ɵɵtemplate(12, CaseEditSubmitComponent_div_0_ng_container_12_Template, 8, 5, "ng-container", 0);
29792
29944
  i0.ɵɵtemplate(13, CaseEditSubmitComponent_div_0_ng_container_13_Template, 4, 1, "ng-container", 0);
29793
- i0.ɵɵtemplate(14, CaseEditSubmitComponent_div_0_ng_container_14_Template, 13, 0, "ng-container", 0);
29945
+ i0.ɵɵtemplate(14, CaseEditSubmitComponent_div_0_ng_container_14_Template, 15, 14, "ng-container", 0);
29794
29946
  i0.ɵɵelementStart(15, "div", 9);
29795
29947
  i0.ɵɵtemplate(16, CaseEditSubmitComponent_div_0_button_16_Template, 3, 4, "button", 10);
29796
29948
  i0.ɵɵelementStart(17, "button", 11);
@@ -29798,7 +29950,7 @@ function CaseEditSubmitComponent_div_0_Template(rf, ctx) {
29798
29950
  i0.ɵɵpipe(19, "rpxTranslate");
29799
29951
  i0.ɵɵelementEnd()();
29800
29952
  i0.ɵɵelementStart(20, "p", 12)(21, "a", 13);
29801
- 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()); });
29953
+ 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()); });
29802
29954
  i0.ɵɵtext(22);
29803
29955
  i0.ɵɵpipe(23, "rpxTranslate");
29804
29956
  i0.ɵɵelementEnd()()()();
@@ -29837,9 +29989,9 @@ function CaseEditSubmitComponent_div_0_Template(rf, ctx) {
29837
29989
  }
29838
29990
  function CaseEditSubmitComponent_ccd_case_event_completion_1_Template(rf, ctx) {
29839
29991
  if (rf & 1) {
29840
- const _r43 = i0.ɵɵgetCurrentView();
29841
- i0.ɵɵelementStart(0, "ccd-case-event-completion", 48);
29842
- 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)); });
29992
+ const _r45 = i0.ɵɵgetCurrentView();
29993
+ i0.ɵɵelementStart(0, "ccd-case-event-completion", 50);
29994
+ 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)); });
29843
29995
  i0.ɵɵelementEnd();
29844
29996
  }
29845
29997
  if (rf & 2) {
@@ -29849,14 +30001,17 @@ function CaseEditSubmitComponent_ccd_case_event_completion_1_Template(rf, ctx) {
29849
30001
  }
29850
30002
  // @dynamic
29851
30003
  class CaseEditSubmitComponent {
29852
- constructor(caseEdit, fieldsUtils, caseFieldService, route, orderService, profileNotifier) {
30004
+ constructor(caseEdit, fieldsUtils, caseFieldService, route, orderService, profileNotifier, formValidatorsService) {
29853
30005
  this.caseEdit = caseEdit;
29854
30006
  this.fieldsUtils = fieldsUtils;
29855
30007
  this.caseFieldService = caseFieldService;
29856
30008
  this.route = route;
29857
30009
  this.orderService = orderService;
29858
30010
  this.profileNotifier = profileNotifier;
30011
+ this.formValidatorsService = formValidatorsService;
29859
30012
  this.paletteContext = PaletteContext.CHECK_YOUR_ANSWER;
30013
+ this.eventSummaryLabel = 'Event summary';
30014
+ this.eventDescriptionLabel = 'Event description';
29860
30015
  }
29861
30016
  get isDisabled() {
29862
30017
  // EUI-3452.
@@ -29867,7 +30022,7 @@ class CaseEditSubmitComponent {
29867
30022
  }
29868
30023
  ngOnInit() {
29869
30024
  var _a, _b, _c;
29870
- this.profileSubscription = this.profileNotifier.profile.subscribe(_ => this.profile = _);
30025
+ this.profileSubscription = this.profileNotifier.profile.subscribe((_) => this.profile = _);
29871
30026
  this.eventTrigger = this.caseEdit.eventTrigger;
29872
30027
  this.triggerText = this.eventTrigger.end_button_label || CallbackErrorsComponent.TRIGGER_TEXT_SUBMIT;
29873
30028
  this.editForm = this.caseEdit.form;
@@ -29880,10 +30035,12 @@ class CaseEditSubmitComponent {
29880
30035
  // Indicates if the submission is for a Case Flag, as opposed to a "regular" form submission, by the presence of
29881
30036
  // a FlagLauncher field in the event trigger
29882
30037
  this.caseEdit.isCaseFlagSubmission =
29883
- this.eventTrigger.case_fields.some(caseField => FieldsUtils.isCaseFieldOfType(caseField, ['FlagLauncher']));
30038
+ this.eventTrigger.case_fields.some((caseField) => FieldsUtils.isCaseFieldOfType(caseField, ['FlagLauncher']));
29884
30039
  this.caseEdit.isLinkedCasesSubmission =
29885
30040
  this.eventTrigger.case_fields.some(caseField => FieldsUtils.isCaseFieldOfType(caseField, ['ComponentLauncher']));
29886
30041
  this.pageTitle = this.getPageTitle();
30042
+ this.summary = this.formValidatorsService.addMarkDownValidators(this.editForm, 'event.summary');
30043
+ this.description = this.formValidatorsService.addMarkDownValidators(this.editForm, 'event.description');
29887
30044
  }
29888
30045
  ngOnDestroy() {
29889
30046
  /* istanbul ignore else */
@@ -29892,12 +30049,14 @@ class CaseEditSubmitComponent {
29892
30049
  }
29893
30050
  }
29894
30051
  submit() {
29895
- this.caseEdit.submitForm({
29896
- eventTrigger: this.eventTrigger,
29897
- form: this.editForm,
29898
- submit: this.caseEdit.submit,
29899
- caseDetails: this.caseEdit.caseDetails,
29900
- });
30052
+ if (this.summary.valid && this.description.valid) {
30053
+ this.caseEdit.submitForm({
30054
+ eventTrigger: this.eventTrigger,
30055
+ form: this.editForm,
30056
+ submit: this.caseEdit.submit,
30057
+ caseDetails: this.caseEdit.caseDetails
30058
+ });
30059
+ }
29901
30060
  }
29902
30061
  onEventCanBeCompleted(eventCanBeCompleted) {
29903
30062
  this.caseEdit.onEventCanBeCompleted({
@@ -29905,7 +30064,7 @@ class CaseEditSubmitComponent {
29905
30064
  eventCanBeCompleted,
29906
30065
  caseDetails: this.caseEdit.caseDetails,
29907
30066
  form: this.editForm,
29908
- submit: this.caseEdit.submit,
30067
+ submit: this.caseEdit.submit
29909
30068
  });
29910
30069
  }
29911
30070
  getPageTitle() {
@@ -29981,7 +30140,7 @@ class CaseEditSubmitComponent {
29981
30140
  }
29982
30141
  }
29983
30142
  readOnlySummaryFieldsToDisplayExists() {
29984
- return this.eventTrigger.case_fields.some(field => field.show_summary_content_option >= 0);
30143
+ return this.eventTrigger.case_fields.some((field) => field.show_summary_content_option >= 0);
29985
30144
  }
29986
30145
  showEventNotes() {
29987
30146
  var _a;
@@ -29997,7 +30156,7 @@ class CaseEditSubmitComponent {
29997
30156
  }
29998
30157
  getLastPageShown() {
29999
30158
  let lastPage;
30000
- this.wizard.reverse().forEach(page => {
30159
+ this.wizard.reverse().forEach((page) => {
30001
30160
  if (!lastPage && this.isShown(page)) {
30002
30161
  lastPage = page;
30003
30162
  }
@@ -30016,7 +30175,7 @@ class CaseEditSubmitComponent {
30016
30175
  }
30017
30176
  isShown(page) {
30018
30177
  const fields = this.fieldsUtils
30019
- .mergeCaseFieldsAndFormFields(this.eventTrigger.case_fields, this.editForm.controls['data'].value);
30178
+ .mergeCaseFieldsAndFormFields(this.eventTrigger.case_fields, this.editForm.controls.data.value);
30020
30179
  return page.parsedShowCondition.match(fields);
30021
30180
  }
30022
30181
  canShowFieldInCYA(field) {
@@ -30025,7 +30184,7 @@ class CaseEditSubmitComponent {
30025
30184
  sortFieldsByShowSummaryContent(fields) {
30026
30185
  return this.orderService
30027
30186
  .sort(fields, CaseEditSubmitComponent.SHOW_SUMMARY_CONTENT_COMPARE_FUNCTION)
30028
- .filter(cf => cf.show_summary_content_option);
30187
+ .filter((cf) => cf.show_summary_content_option);
30029
30188
  }
30030
30189
  getCaseFields() {
30031
30190
  if (this.caseEdit.caseDetails) {
@@ -30044,9 +30203,7 @@ class CaseEditSubmitComponent {
30044
30203
  if (this.eventTrigger.can_save_draft) {
30045
30204
  return 'Return to case list';
30046
30205
  }
30047
- else {
30048
- return 'Cancel';
30049
- }
30206
+ return 'Cancel';
30050
30207
  }
30051
30208
  }
30052
30209
  CaseEditSubmitComponent.SHOW_SUMMARY_CONTENT_COMPARE_FUNCTION = (a, b) => {
@@ -30060,8 +30217,8 @@ CaseEditSubmitComponent.SHOW_SUMMARY_CONTENT_COMPARE_FUNCTION = (a, b) => {
30060
30217
  }
30061
30218
  return a.show_summary_content_option - b.show_summary_content_option;
30062
30219
  };
30063
- 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)); };
30064
- 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) {
30220
+ 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)); };
30221
+ 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) {
30065
30222
  if (rf & 1) {
30066
30223
  i0.ɵɵtemplate(0, CaseEditSubmitComponent_div_0_Template, 24, 22, "div", 0);
30067
30224
  i0.ɵɵtemplate(1, CaseEditSubmitComponent_ccd_case_event_completion_1_Template, 1, 1, "ccd-case-event-completion", 1);
@@ -30075,8 +30232,8 @@ CaseEditSubmitComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Cas
30075
30232
  (function () {
30076
30233
  (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaseEditSubmitComponent, [{
30077
30234
  type: Component,
30078
- 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"] }]
30079
- }], function () { return [{ type: CaseEditComponent }, { type: FieldsUtils }, { type: CaseFieldService }, { type: i1$1.ActivatedRoute }, { type: OrderService }, { type: ProfileNotifier }]; }, null);
30235
+ 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"] }]
30236
+ }], function () { return [{ type: CaseEditComponent }, { type: FieldsUtils }, { type: CaseFieldService }, { type: i1$1.ActivatedRoute }, { type: OrderService }, { type: ProfileNotifier }, { type: FormValidatorsService }]; }, null);
30080
30237
  })();
30081
30238
 
30082
30239
  function CaseProgressComponent_div_0_Template(rf, ctx) {
@@ -30474,7 +30631,7 @@ i0.ɵɵsetComponentScope(CaseEditPageComponent, function () {
30474
30631
  CaseEditGenericErrorsComponent];
30475
30632
  }, function () { return [i4.AsyncPipe, CaseReferencePipe, CcdCaseTitlePipe, i1.RpxTranslatePipe]; });
30476
30633
  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]; });
30477
- 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]; });
30634
+ 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]; });
30478
30635
  i0.ɵɵsetComponentScope(CaseCreateComponent, function () { return [i4.NgIf, CaseEditComponent]; }, []);
30479
30636
  i0.ɵɵsetComponentScope(CaseProgressComponent, function () { return [i4.NgIf, CaseEditComponent]; }, []);
30480
30637
 
@@ -32225,29 +32382,29 @@ function CaseHistoryComponent_div_0_Template(rf, ctx) {
32225
32382
  i0.ɵɵadvance(6);
32226
32383
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(15, 19, "Date"));
32227
32384
  i0.ɵɵadvance(3);
32228
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(18, 21, ctx_r0.caseHistory.event.timestamp));
32385
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(18, 21, ctx_r0.caseHistory.event.timestamp, "local"));
32229
32386
  i0.ɵɵadvance(4);
32230
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(22, 23, "Author"));
32387
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(22, 24, "Author"));
32231
32388
  i0.ɵɵadvance(3);
32232
- i0.ɵɵtextInterpolate2("", i0.ɵɵpipeBind1(25, 25, ctx_r0.caseHistory.event.user_first_name), " ", i0.ɵɵpipeBind1(26, 27, ctx_r0.caseHistory.event.user_last_name), "");
32389
+ i0.ɵɵtextInterpolate2("", i0.ɵɵpipeBind1(25, 26, ctx_r0.caseHistory.event.user_first_name), " ", i0.ɵɵpipeBind1(26, 28, ctx_r0.caseHistory.event.user_last_name), "");
32233
32390
  i0.ɵɵadvance(5);
32234
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(30, 29, "End state"));
32391
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(30, 30, "End state"));
32235
32392
  i0.ɵɵadvance(3);
32236
32393
  i0.ɵɵtextInterpolate(ctx_r0.caseHistory.event.state_name);
32237
32394
  i0.ɵɵadvance(3);
32238
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(36, 31, "Event"));
32395
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(36, 32, "Event"));
32239
32396
  i0.ɵɵadvance(3);
32240
32397
  i0.ɵɵtextInterpolate(ctx_r0.caseHistory.event.event_name);
32241
32398
  i0.ɵɵadvance(3);
32242
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(42, 33, "Summary"));
32399
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(42, 34, "Summary"));
32243
32400
  i0.ɵɵadvance(3);
32244
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(45, 35, ctx_r0.caseHistory.event.summary));
32401
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(45, 36, ctx_r0.caseHistory.event.summary));
32245
32402
  i0.ɵɵadvance(4);
32246
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(49, 37, "Comment"));
32403
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(49, 38, "Comment"));
32247
32404
  i0.ɵɵadvance(3);
32248
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(52, 39, ctx_r0.caseHistory.event.comment));
32405
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(52, 40, ctx_r0.caseHistory.event.comment));
32249
32406
  i0.ɵɵadvance(4);
32250
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(56, 41, "Case Details"));
32407
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(56, 42, "Case Details"));
32251
32408
  i0.ɵɵadvance(2);
32252
32409
  i0.ɵɵproperty("ngForOf", ctx_r0.tabs);
32253
32410
  }
@@ -32303,7 +32460,7 @@ CaseHistoryComponent.ERROR_MESSAGE = 'No case history to show';
32303
32460
  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)); };
32304
32461
  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) {
32305
32462
  if (rf & 1) {
32306
- i0.ɵɵtemplate(0, CaseHistoryComponent_div_0_Template, 58, 43, "div", 0);
32463
+ i0.ɵɵtemplate(0, CaseHistoryComponent_div_0_Template, 58, 44, "div", 0);
32307
32464
  }
32308
32465
  if (rf & 2) {
32309
32466
  i0.ɵɵproperty("ngIf", ctx.isDataLoaded());
@@ -32312,7 +32469,7 @@ CaseHistoryComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CaseHi
32312
32469
  (function () {
32313
32470
  (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaseHistoryComponent, [{
32314
32471
  type: Component,
32315
- 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"] }]
32472
+ 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"] }]
32316
32473
  }], function () { return [{ type: i1$1.ActivatedRoute }, { type: AlertService }, { type: OrderService }, { type: CaseNotifier }, { type: CaseHistoryService }]; }, { event: [{
32317
32474
  type: Input
32318
32475
  }] });
@@ -33514,7 +33671,7 @@ function CaseFullAccessViewComponent_ng_container_12_mat_tab_4_ng_template_2_Tem
33514
33671
  const tab_r20 = i0.ɵɵnextContext().$implicit;
33515
33672
  const ctx_r22 = i0.ɵɵnextContext(2);
33516
33673
  i0.ɵɵclassMap(tab_r20.id);
33517
- i0.ɵɵattribute("aria-describedby", i0.ɵɵpipeBind1(1, 4, "case viewer table"));
33674
+ i0.ɵɵattribute("aria-label", i0.ɵɵpipeBind1(1, 4, "case viewer table"));
33518
33675
  i0.ɵɵadvance(3);
33519
33676
  i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBindV(4, 6, i0.ɵɵpureFunction2(14, _c1$3, i0.ɵɵpipeBind1(5, 12, tab_r20), ctx_r22.formGroup.controls["data"])));
33520
33677
  }
@@ -33998,7 +34155,7 @@ CaseFullAccessViewComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
33998
34155
  (function () {
33999
34156
  (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaseFullAccessViewComponent, [{
34000
34157
  type: Component,
34001
- 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"] }]
34158
+ 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"] }]
34002
34159
  }], 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: [{
34003
34160
  type: Input
34004
34161
  }], hasEventSelector: [{