@hmcts/ccd-case-ui-toolkit 6.18.0-restricted-case-access-v3 → 6.18.0-restricted-case-access-v4

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 (49) hide show
  1. package/bundles/hmcts-ccd-case-ui-toolkit.umd.js +394 -142
  2. package/bundles/hmcts-ccd-case-ui-toolkit.umd.js.map +1 -1
  3. package/bundles/hmcts-ccd-case-ui-toolkit.umd.min.js +1 -1
  4. package/bundles/hmcts-ccd-case-ui-toolkit.umd.min.js.map +1 -1
  5. package/esm2015/lib/app.config.js +13 -1
  6. package/esm2015/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.js +20 -2
  7. package/esm2015/lib/shared/components/case-editor/services/case.notifier.js +8 -1
  8. package/esm2015/lib/shared/components/case-editor/services/cases.service.js +27 -9
  9. package/esm2015/lib/shared/components/case-editor/services/page-validation.service.js +5 -2
  10. package/esm2015/lib/shared/components/case-viewer/case-view/case-view.component.js +4 -3
  11. package/esm2015/lib/shared/components/case-viewer/case-viewer.component.js +5 -1
  12. package/esm2015/lib/shared/components/case-viewer/services/case.resolver.js +11 -4
  13. package/esm2015/lib/shared/components/palette/judicial-user/write-judicial-user-field.component.js +150 -63
  14. package/esm2015/lib/shared/domain/definition/field-type-enum.model.js +1 -1
  15. package/esm2015/lib/shared/services/fields/fields.utils.js +2 -2
  16. package/esm2015/lib/shared/services/form/form-validators.service.js +2 -2
  17. package/esm2015/lib/shared/services/http/http-error.service.js +3 -1
  18. package/esm2015/lib/shared/services/index.js +2 -1
  19. package/esm2015/lib/shared/services/loading/loading.service.js +5 -1
  20. package/esm2015/lib/shared/services/utils/retry/index.js +2 -0
  21. package/esm2015/lib/shared/services/utils/retry/retry.service.js +86 -0
  22. package/fesm2015/hmcts-ccd-case-ui-toolkit.js +344 -105
  23. package/fesm2015/hmcts-ccd-case-ui-toolkit.js.map +1 -1
  24. package/lib/app.config.d.ts +5 -0
  25. package/lib/app.config.d.ts.map +1 -1
  26. package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts +1 -0
  27. package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts.map +1 -1
  28. package/lib/shared/components/case-editor/services/case.notifier.d.ts.map +1 -1
  29. package/lib/shared/components/case-editor/services/cases.service.d.ts +5 -2
  30. package/lib/shared/components/case-editor/services/cases.service.d.ts.map +1 -1
  31. package/lib/shared/components/case-editor/services/page-validation.service.d.ts.map +1 -1
  32. package/lib/shared/components/case-viewer/case-view/case-view.component.d.ts +1 -1
  33. package/lib/shared/components/case-viewer/case-view/case-view.component.d.ts.map +1 -1
  34. package/lib/shared/components/case-viewer/case-viewer.component.d.ts.map +1 -1
  35. package/lib/shared/components/case-viewer/services/case.resolver.d.ts +1 -1
  36. package/lib/shared/components/case-viewer/services/case.resolver.d.ts.map +1 -1
  37. package/lib/shared/components/palette/judicial-user/write-judicial-user-field.component.d.ts +22 -17
  38. package/lib/shared/components/palette/judicial-user/write-judicial-user-field.component.d.ts.map +1 -1
  39. package/lib/shared/domain/definition/field-type-enum.model.d.ts +1 -1
  40. package/lib/shared/domain/definition/field-type-enum.model.d.ts.map +1 -1
  41. package/lib/shared/services/http/http-error.service.d.ts.map +1 -1
  42. package/lib/shared/services/index.d.ts +1 -0
  43. package/lib/shared/services/index.d.ts.map +1 -1
  44. package/lib/shared/services/loading/loading.service.d.ts.map +1 -1
  45. package/lib/shared/services/utils/retry/index.d.ts +2 -0
  46. package/lib/shared/services/utils/retry/index.d.ts.map +1 -0
  47. package/lib/shared/services/utils/retry/retry.service.d.ts +11 -0
  48. package/lib/shared/services/utils/retry/retry.service.d.ts.map +1 -0
  49. package/package.json +1 -1
@@ -2,7 +2,7 @@
2
2
  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('rpx-xui-translation'), require('@angular/router'), require('@angular/forms'), require('rx-polling'), require('rxjs'), require('@angular/common/http'), require('rxjs/operators'), require('class-transformer'), require('moment'), require('underscore'), require('pegjs'), require('util'), require('@edium/fsm'), require('@angular/material/dialog'), require('@nicky-lenaers/ngx-scroll-to'), require('ngx-md'), require('@angular/material/autocomplete'), require('@angular/material/core'), require('@hmcts/ccpay-web-component'), require('@angular/cdk/overlay'), require('@angular/cdk/tree'), require('@angular/material/input'), require('@angular-material-components/datetime-picker'), require('@angular-material-components/moment-adapter'), require('@angular/material/datepicker'), require('@angular/material/form-field'), require('@hmcts/media-viewer'), require('@angular/cdk/portal'), require('ngx-pagination'), require('@angular/material/tabs')) :
3
3
  typeof define === 'function' && define.amd ? define('@hmcts/ccd-case-ui-toolkit', ['exports', '@angular/core', '@angular/common', 'rpx-xui-translation', '@angular/router', '@angular/forms', 'rx-polling', 'rxjs', '@angular/common/http', 'rxjs/operators', 'class-transformer', 'moment', 'underscore', 'pegjs', 'util', '@edium/fsm', '@angular/material/dialog', '@nicky-lenaers/ngx-scroll-to', 'ngx-md', '@angular/material/autocomplete', '@angular/material/core', '@hmcts/ccpay-web-component', '@angular/cdk/overlay', '@angular/cdk/tree', '@angular/material/input', '@angular-material-components/datetime-picker', '@angular-material-components/moment-adapter', '@angular/material/datepicker', '@angular/material/form-field', '@hmcts/media-viewer', '@angular/cdk/portal', 'ngx-pagination', '@angular/material/tabs'], factory) :
4
4
  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.hmcts = global.hmcts || {}, global.hmcts["ccd-case-ui-toolkit"] = {}), global.ng.core, global.ng.common, global.i1, global.ng.router, global.ng.forms, global["rx-polling"], global.rxjs, global.ng.common.http, global.rxjs.operators, global["class-transformer"], global.moment, global.underscore, global.pegjs, global.util, global["@edium/fsm"], global.ng.material.dialog, global["@nicky-lenaers/ngx-scroll-to"], global["ngx-md"], global.ng.material.autocomplete, global.ng.material.core, global["@hmcts/ccpay-web-component"], global.ng.cdk.overlay, global.ng.cdk.tree, global.ng.material.input, global["@angular-material-components/datetime-picker"], global["@angular-material-components/moment-adapter"], global.ng.material.datepicker, global.ng.material.formField, global.i12, global.ng.cdk.portal, global["ngx-pagination"], global.ng.material.tabs));
5
- })(this, (function (exports, i0, i2, i1, i1$1, i2$1, polling, rxjs, i1$2, operators, classTransformer, moment, _, pegjs, util, fsm, i1$3, i2$2, i1$4, i4, i5, i3, i1$5, i7, i3$1, i4$1, momentAdapter, i5$1, i6, i12, i6$1, i1$6, i10) { 'use strict';
5
+ })(this, (function (exports, i0, i2, i1, i1$1, i2$1, polling, rxjs, i1$2, operators, classTransformer, moment, _, pegjs, util, fsm, i1$3, i2$2, i1$4, i5, i6, i3, i1$5, i7, i3$1, i4, momentAdapter, i5$1, i6$1, i12, i6$2, i1$6, i10) { 'use strict';
6
6
 
7
7
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
8
 
@@ -36,17 +36,17 @@
36
36
  var i1__namespace$3 = /*#__PURE__*/_interopNamespace(i1$3);
37
37
  var i2__namespace$2 = /*#__PURE__*/_interopNamespace(i2$2);
38
38
  var i1__namespace$4 = /*#__PURE__*/_interopNamespace(i1$4);
39
- var i4__namespace = /*#__PURE__*/_interopNamespace(i4);
40
39
  var i5__namespace = /*#__PURE__*/_interopNamespace(i5);
40
+ var i6__namespace = /*#__PURE__*/_interopNamespace(i6);
41
41
  var i3__namespace = /*#__PURE__*/_interopNamespace(i3);
42
42
  var i1__namespace$5 = /*#__PURE__*/_interopNamespace(i1$5);
43
43
  var i7__namespace = /*#__PURE__*/_interopNamespace(i7);
44
44
  var i3__namespace$1 = /*#__PURE__*/_interopNamespace(i3$1);
45
- var i4__namespace$1 = /*#__PURE__*/_interopNamespace(i4$1);
45
+ var i4__namespace = /*#__PURE__*/_interopNamespace(i4);
46
46
  var i5__namespace$1 = /*#__PURE__*/_interopNamespace(i5$1);
47
- var i6__namespace = /*#__PURE__*/_interopNamespace(i6);
48
- var i12__namespace = /*#__PURE__*/_interopNamespace(i12);
49
47
  var i6__namespace$1 = /*#__PURE__*/_interopNamespace(i6$1);
48
+ var i12__namespace = /*#__PURE__*/_interopNamespace(i12);
49
+ var i6__namespace$2 = /*#__PURE__*/_interopNamespace(i6$2);
50
50
  var i1__namespace$6 = /*#__PURE__*/_interopNamespace(i1$6);
51
51
  var i10__namespace = /*#__PURE__*/_interopNamespace(i10);
52
52
 
@@ -145,14 +145,14 @@
145
145
  }
146
146
  }
147
147
  var _c0$$ = [[["", "footerSolsNavLinks", ""]], [["", "footerCaseWorkerNavLinks", ""]]];
148
- var _c1$s = ["[footerSolsNavLinks]", "[footerCaseWorkerNavLinks]"];
148
+ var _c1$t = ["[footerSolsNavLinks]", "[footerCaseWorkerNavLinks]"];
149
149
  var FooterComponent = /** @class */ (function () {
150
150
  function FooterComponent() {
151
151
  }
152
152
  return FooterComponent;
153
153
  }());
154
154
  FooterComponent.ɵfac = function FooterComponent_Factory(t) { return new (t || FooterComponent)(); };
155
- FooterComponent.ɵcmp = i0__namespace.ɵɵdefineComponent({ type: FooterComponent, selectors: [["cut-footer-bar"]], inputs: { email: "email", isSolicitor: "isSolicitor", phone: "phone", workhours: "workhours" }, ngContentSelectors: _c1$s, 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) {
155
+ FooterComponent.ɵcmp = i0__namespace.ɵɵ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) {
156
156
  if (rf & 1) {
157
157
  i0__namespace.ɵɵprojectionDef(_c0$$);
158
158
  i0__namespace.ɵɵelementStart(0, "footer", 0);
@@ -241,7 +241,7 @@
241
241
  }
242
242
  }
243
243
  var _c0$_ = [[["", "headerNavigation", ""]]];
244
- var _c1$r = ["[headerNavigation]"];
244
+ var _c1$s = ["[headerNavigation]"];
245
245
  var HeaderBarComponent = /** @class */ (function () {
246
246
  function HeaderBarComponent() {
247
247
  this.signOutRequest = new i0.EventEmitter();
@@ -252,7 +252,7 @@
252
252
  return HeaderBarComponent;
253
253
  }());
254
254
  HeaderBarComponent.ɵfac = function HeaderBarComponent_Factory(t) { return new (t || HeaderBarComponent)(); };
255
- HeaderBarComponent.ɵcmp = i0__namespace.ɵɵdefineComponent({ type: HeaderBarComponent, selectors: [["cut-header-bar"]], inputs: { title: "title", isSolicitor: "isSolicitor", username: "username" }, outputs: { signOutRequest: "signOutRequest" }, ngContentSelectors: _c1$r, 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) {
255
+ HeaderBarComponent.ɵcmp = i0__namespace.ɵɵ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) {
256
256
  if (rf & 1) {
257
257
  i0__namespace.ɵɵprojectionDef(_c0$_);
258
258
  i0__namespace.ɵɵelementStart(0, "header", 0);
@@ -322,14 +322,14 @@
322
322
  })();
323
323
 
324
324
  var _c0$Z = [[["", "leftNavLinks", ""]], [["", "rightNavLinks", ""]]];
325
- var _c1$q = ["[leftNavLinks]", "[rightNavLinks]"];
325
+ var _c1$r = ["[leftNavLinks]", "[rightNavLinks]"];
326
326
  var NavigationComponent = /** @class */ (function () {
327
327
  function NavigationComponent() {
328
328
  }
329
329
  return NavigationComponent;
330
330
  }());
331
331
  NavigationComponent.ɵfac = function NavigationComponent_Factory(t) { return new (t || NavigationComponent)(); };
332
- NavigationComponent.ɵcmp = i0__namespace.ɵɵdefineComponent({ type: NavigationComponent, selectors: [["cut-nav-bar"]], inputs: { isSolicitor: "isSolicitor" }, ngContentSelectors: _c1$q, decls: 4, vars: 2, consts: [[1, "cut-nav-bar"]], template: function NavigationComponent_Template(rf, ctx) {
332
+ NavigationComponent.ɵcmp = i0__namespace.ɵɵ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) {
333
333
  if (rf & 1) {
334
334
  i0__namespace.ɵɵprojectionDef(_c0$Z);
335
335
  i0__namespace.ɵɵelementStart(0, "div");
@@ -488,14 +488,14 @@
488
488
  })();
489
489
 
490
490
  var _c0$Y = [[["", "topBody", ""]], [["", "leftBody", ""]], [["", "rightBody", ""]]];
491
- var _c1$p = ["[topBody]", "[leftBody]", "[rightBody]"];
491
+ var _c1$q = ["[topBody]", "[leftBody]", "[rightBody]"];
492
492
  var BodyComponent = /** @class */ (function () {
493
493
  function BodyComponent() {
494
494
  }
495
495
  return BodyComponent;
496
496
  }());
497
497
  BodyComponent.ɵfac = function BodyComponent_Factory(t) { return new (t || BodyComponent)(); };
498
- BodyComponent.ɵcmp = i0__namespace.ɵɵdefineComponent({ type: BodyComponent, selectors: [["cut-body"]], ngContentSelectors: _c1$p, decls: 4, vars: 0, consts: [[1, "global-display"]], template: function BodyComponent_Template(rf, ctx) {
498
+ BodyComponent.ɵcmp = i0__namespace.ɵɵdefineComponent({ type: BodyComponent, selectors: [["cut-body"]], ngContentSelectors: _c1$q, decls: 4, vars: 0, consts: [[1, "global-display"]], template: function BodyComponent_Template(rf, ctx) {
499
499
  if (rf & 1) {
500
500
  i0__namespace.ɵɵprojectionDef(_c0$Y);
501
501
  i0__namespace.ɵɵelementStart(0, "div", 0);
@@ -1684,14 +1684,14 @@
1684
1684
  })();
1685
1685
 
1686
1686
  var _c0$V = function (a0) { return { "js-hidden": a0 }; };
1687
- var _c1$o = ["*"];
1687
+ var _c1$p = ["*"];
1688
1688
  var TabComponent = /** @class */ (function () {
1689
1689
  function TabComponent() {
1690
1690
  }
1691
1691
  return TabComponent;
1692
1692
  }());
1693
1693
  TabComponent.ɵfac = function TabComponent_Factory(t) { return new (t || TabComponent)(); };
1694
- TabComponent.ɵcmp = i0__namespace.ɵɵdefineComponent({ type: TabComponent, selectors: [["cut-tab"]], inputs: { id: "id", title: "title", selected: "selected" }, ngContentSelectors: _c1$o, decls: 2, vars: 5, consts: [["role", "tabpanel", 1, "tabs-panel", 3, "id", "ngClass"]], template: function TabComponent_Template(rf, ctx) {
1694
+ TabComponent.ɵcmp = i0__namespace.ɵɵ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) {
1695
1695
  if (rf & 1) {
1696
1696
  i0__namespace.ɵɵprojectionDef();
1697
1697
  i0__namespace.ɵɵelementStart(0, "div", 0);
@@ -1723,7 +1723,7 @@
1723
1723
  })();
1724
1724
 
1725
1725
  var _c0$U = ["tab"];
1726
- var _c1$n = function () { return ["."]; };
1726
+ var _c1$o = function () { return ["."]; };
1727
1727
  var _c2$3 = function (a0) { return { "tabs-toggle-selected": a0 }; };
1728
1728
  function TabsComponent_li_2_Template(rf, ctx) {
1729
1729
  if (rf & 1) {
@@ -1739,7 +1739,7 @@
1739
1739
  if (rf & 2) {
1740
1740
  var panel_r1 = ctx.$implicit;
1741
1741
  i0__namespace.ɵɵadvance(1);
1742
- i0__namespace.ɵɵproperty("routerLink", i0__namespace.ɵɵpureFunction0(8, _c1$n))("fragment", panel_r1.id)("ngClass", i0__namespace.ɵɵpureFunction1(9, _c2$3, panel_r1.selected));
1742
+ i0__namespace.ɵɵproperty("routerLink", i0__namespace.ɵɵpureFunction0(8, _c1$o))("fragment", panel_r1.id)("ngClass", i0__namespace.ɵɵpureFunction1(9, _c2$3, panel_r1.selected));
1743
1743
  i0__namespace.ɵɵattribute("aria-controls", panel_r1.id)("aria-selected", panel_r1.selected);
1744
1744
  i0__namespace.ɵɵadvance(2);
1745
1745
  i0__namespace.ɵɵtextInterpolate(i0__namespace.ɵɵpipeBind1(4, 6, panel_r1.title));
@@ -2022,6 +2022,18 @@
2022
2022
  AbstractAppConfig.prototype.getLocationRefApiUrl = function () {
2023
2023
  return undefined;
2024
2024
  };
2025
+ AbstractAppConfig.prototype.getEnvironment = function () {
2026
+ var _a, _b, _c, _d;
2027
+ if ((_a = this.getActivityUrl()) === null || _a === void 0 ? void 0 : _a.includes('.aat.'))
2028
+ return 'aat';
2029
+ else if ((_b = this.getActivityUrl()) === null || _b === void 0 ? void 0 : _b.includes('.preview.'))
2030
+ return 'preview';
2031
+ else if ((_c = this.getActivityUrl()) === null || _c === void 0 ? void 0 : _c.includes('.demo.'))
2032
+ return 'demo';
2033
+ else if ((_d = this.getActivityUrl()) === null || _d === void 0 ? void 0 : _d.includes('.ithc.'))
2034
+ return 'ithc';
2035
+ return 'prod';
2036
+ };
2025
2037
  AbstractAppConfig.prototype.getCamRoleAssignmentsApiUrl = function () {
2026
2038
  return undefined;
2027
2039
  };
@@ -2110,6 +2122,8 @@
2110
2122
  };
2111
2123
  HttpErrorService.prototype.handle = function (error, redirectIfNotAuthorised) {
2112
2124
  if (redirectIfNotAuthorised === void 0) { redirectIfNotAuthorised = true; }
2125
+ console.error('Handling error in http error service.');
2126
+ console.error(error);
2113
2127
  var httpError = HttpErrorService.convertToHttpError(error);
2114
2128
  if (redirectIfNotAuthorised && (httpError.status === 401 || httpError.status === 403)) {
2115
2129
  this.authService.signIn();
@@ -4328,7 +4342,7 @@
4328
4342
  if (!caseField || !types) {
4329
4343
  return false;
4330
4344
  }
4331
- return types.some(function (type) { return type === caseField.field_type.type; });
4345
+ return types.some(function (type) { return type === caseField.field_type.type || type === caseField.field_type.id; });
4332
4346
  };
4333
4347
  FieldsUtils.isLinkedCasesCaseField = function (caseField) {
4334
4348
  return FieldsUtils.isComponentLauncherCaseField(caseField) &&
@@ -5160,7 +5174,7 @@
5160
5174
  return FormValidatorsService;
5161
5175
  }());
5162
5176
  FormValidatorsService.CUSTOM_VALIDATED_TYPES = [
5163
- 'Date', 'MoneyGBP', 'Label'
5177
+ 'Date', 'MoneyGBP', 'Label', 'JudicialUser'
5164
5178
  ];
5165
5179
  FormValidatorsService.ɵfac = function FormValidatorsService_Factory(t) { return new (t || FormValidatorsService)(); };
5166
5180
  FormValidatorsService.ɵprov = i0__namespace.ɵɵdefineInjectable({ token: FormValidatorsService, factory: FormValidatorsService.ɵfac });
@@ -7943,13 +7957,17 @@
7943
7957
  });
7944
7958
  LoadingService.prototype.register = function () {
7945
7959
  var token = this.generateToken();
7960
+ console.info("registering [" + token + "]");
7946
7961
  this.registered.set(token, token);
7947
7962
  this.loading.next(true);
7963
+ console.info("registered [" + token + "]");
7948
7964
  return token;
7949
7965
  };
7950
7966
  LoadingService.prototype.unregister = function (token) {
7967
+ console.info("unregistering [" + token + "]");
7951
7968
  this.registered.delete(token);
7952
7969
  this.loading.next(this.registered.size > 0);
7970
+ console.info("unregistered [" + token + "]");
7953
7971
  };
7954
7972
  LoadingService.prototype.generateToken = function () {
7955
7973
  var timestamp = window.performance.now();
@@ -8068,6 +8086,94 @@
8068
8086
  }], null, null);
8069
8087
  })();
8070
8088
 
8089
+ var ArtificialDelayContext = /** @class */ (function () {
8090
+ function ArtificialDelayContext(preferredDelay) {
8091
+ this.preferredDelay = preferredDelay;
8092
+ this.artificialDelayOn = true;
8093
+ this.selectedDelay = this.selectActualDelayTime();
8094
+ }
8095
+ ;
8096
+ ArtificialDelayContext.prototype.switchArtificialDelays = function (status) {
8097
+ this.artificialDelayOn = status;
8098
+ this.selectedDelay = this.selectActualDelayTime();
8099
+ };
8100
+ ArtificialDelayContext.prototype.turnOnArtificialDelays = function () {
8101
+ this.switchArtificialDelays(true);
8102
+ };
8103
+ ArtificialDelayContext.prototype.turnOffArtificialDelays = function () {
8104
+ this.switchArtificialDelays(false);
8105
+ };
8106
+ ArtificialDelayContext.prototype.getActualDelay = function () {
8107
+ return this.artificialDelayOn ? this.selectedDelay : 0;
8108
+ };
8109
+ ArtificialDelayContext.prototype.shouldApplyArtificialDelay = function () {
8110
+ return this.preferredDelay > 0;
8111
+ };
8112
+ ArtificialDelayContext.prototype.selectActualDelayTime = function () {
8113
+ return Date.now() % 2 == 0 ? this.preferredDelay : 1;
8114
+ };
8115
+ return ArtificialDelayContext;
8116
+ }());
8117
+ var RetryUtil = /** @class */ (function () {
8118
+ function RetryUtil() {
8119
+ }
8120
+ RetryUtil.prototype.pipeTimeoutMechanismOn = function (in$, preferredArtificialDelay, timeoutPeriods) {
8121
+ var artificialDelayContext = new ArtificialDelayContext(preferredArtificialDelay);
8122
+ console.info("Piping a retry mechanism with timeouts {" + timeoutPeriods + "}.");
8123
+ console.info("Artificial delay will be applied: " + artificialDelayContext.shouldApplyArtificialDelay() + ".");
8124
+ var out$ = in$;
8125
+ if (artificialDelayContext.shouldApplyArtificialDelay()) {
8126
+ console.info("Preferred artificial delay: " + preferredArtificialDelay + " seconds. Actual delay selected: " + artificialDelayContext.getActualDelay());
8127
+ out$ = this.pipeArtificialDelayOn(out$, artificialDelayContext);
8128
+ }
8129
+ out$ = this.pipeTimeOutControlOn(out$, timeoutPeriods);
8130
+ out$ = this.pipeRetryMechanismOn(out$, artificialDelayContext);
8131
+ return out$;
8132
+ };
8133
+ RetryUtil.prototype.pipeTimeOutControlOn = function (in$, timeoutPeriods) {
8134
+ var timeOutAfterSeconds = timeoutPeriods[0];
8135
+ var out$ = in$.pipe(operators.timeout(timeOutAfterSeconds * 1000));
8136
+ return out$;
8137
+ };
8138
+ RetryUtil.prototype.pipeRetryMechanismOn = function (in$, artificialDelayContext) {
8139
+ var retryStrategy = function (errors) {
8140
+ return errors.pipe(operators.mergeMap(function (error, i) {
8141
+ console.error("Mapping error " + (error === null || error === void 0 ? void 0 : error.name) + ", " + i);
8142
+ console.error(error);
8143
+ if ((error === null || error === void 0 ? void 0 : error.name) === 'TimeoutError' && i === 0) {
8144
+ artificialDelayContext.turnOffArtificialDelays();
8145
+ console.info('Will retry, after a timeout error.');
8146
+ }
8147
+ else {
8148
+ console.error('Will NOT retry.');
8149
+ rxjs.throwError(error);
8150
+ }
8151
+ return rxjs.timer(0);
8152
+ }), operators.finalize(function () { return console.log('We are done!'); }));
8153
+ };
8154
+ var out$ = in$.pipe(operators.retryWhen(retryStrategy));
8155
+ return out$;
8156
+ };
8157
+ RetryUtil.prototype.pipeArtificialDelayOn = function (in$, artificialDelayContext) {
8158
+ var out$ = in$.pipe(operators.tap(function () {
8159
+ console.log("Artificially delaying for " + artificialDelayContext.getActualDelay() + " seconds..");
8160
+ }));
8161
+ out$ = out$.pipe(operators.delayWhen(function () { return rxjs.timer(artificialDelayContext.getActualDelay() * 1000); }));
8162
+ out$ = out$.pipe(operators.tap(function () {
8163
+ console.log("Artificially delayed for " + artificialDelayContext.getActualDelay() + " seconds..");
8164
+ }));
8165
+ return out$;
8166
+ };
8167
+ return RetryUtil;
8168
+ }());
8169
+ RetryUtil.ɵfac = function RetryUtil_Factory(t) { return new (t || RetryUtil)(); };
8170
+ RetryUtil.ɵprov = i0__namespace.ɵɵdefineInjectable({ token: RetryUtil, factory: RetryUtil.ɵfac });
8171
+ (function () {
8172
+ (typeof ngDevMode === "undefined" || ngDevMode) && i0__namespace.ɵsetClassMetadata(RetryUtil, [{
8173
+ type: i0.Injectable
8174
+ }], null, null);
8175
+ })();
8176
+
8071
8177
  var WindowService = /** @class */ (function () {
8072
8178
  function WindowService() {
8073
8179
  }
@@ -8619,7 +8725,7 @@
8619
8725
  })();
8620
8726
 
8621
8727
  var CasesService = /** @class */ (function () {
8622
- function CasesService(http, appConfig, orderService, errorService, wizardPageFieldToCaseFieldMapper, loadingService, sessionStorageService) {
8728
+ function CasesService(http, appConfig, orderService, errorService, wizardPageFieldToCaseFieldMapper, loadingService, sessionStorageService, retryUtil) {
8623
8729
  this.http = http;
8624
8730
  this.appConfig = appConfig;
8625
8731
  this.orderService = orderService;
@@ -8627,6 +8733,7 @@
8627
8733
  this.wizardPageFieldToCaseFieldMapper = wizardPageFieldToCaseFieldMapper;
8628
8734
  this.loadingService = loadingService;
8629
8735
  this.sessionStorageService = sessionStorageService;
8736
+ this.retryUtil = retryUtil;
8630
8737
  this.get = this.getCaseView;
8631
8738
  }
8632
8739
  CasesService.updateChallengedAccessRequestAttributes = function (httpClient, caseId, attributesToUpdate) {
@@ -8660,12 +8767,30 @@
8660
8767
  .set('Accept', CasesService.V2_MEDIATYPE_CASE_VIEW)
8661
8768
  .set('Content-Type', 'application/json');
8662
8769
  var loadingToken = this.loadingService.register();
8663
- return this.http
8664
- .get(url, { headers: headers, observe: 'body' })
8665
- .pipe(operators.catchError(function (error) {
8770
+ var http$ = this.http.get(url, { headers: headers, observe: 'body' });
8771
+ var artificialDelay = this.appConfig.getTimeoutsCaseRetrievalArtificialDelay();
8772
+ var timeoutPeriods = this.appConfig.getTimeoutsForCaseRetrieval();
8773
+ if (timeoutPeriods && timeoutPeriods.length > 0 && timeoutPeriods[1] > 0) {
8774
+ http$ = this.retryUtil.pipeTimeoutMechanismOn(http$, artificialDelay, timeoutPeriods);
8775
+ }
8776
+ http$ = this.pipeErrorProcessor(http$);
8777
+ http$ = http$.pipe(operators.finalize(function () { return _this.finalizeGetCaseViewWith(caseId, loadingToken); }));
8778
+ return http$;
8779
+ };
8780
+ CasesService.prototype.pipeErrorProcessor = function (in$) {
8781
+ var _this = this;
8782
+ var out$ = in$.pipe(operators.catchError(function (error) {
8783
+ console.error("Error while getting case view with getCaseViewV2! Error type: '" + typeof error + ", Error name: '" + (error === null || error === void 0 ? void 0 : error.name) + "'");
8784
+ console.error(error);
8666
8785
  _this.errorService.setError(error);
8667
8786
  return rxjs.throwError(error);
8668
- }), operators.finalize(function () { return _this.loadingService.unregister(loadingToken); }));
8787
+ }));
8788
+ return out$;
8789
+ };
8790
+ CasesService.prototype.finalizeGetCaseViewWith = function (caseId, loadingToken) {
8791
+ console.info("finalizeGetCaseViewWith started for " + caseId + ".");
8792
+ this.loadingService.unregister(loadingToken);
8793
+ console.info("finalizeGetCaseViewWith finished for " + caseId + ".");
8669
8794
  };
8670
8795
  CasesService.prototype.getEventTrigger = function (caseTypeId, eventTriggerId, caseId, ignoreWarning) {
8671
8796
  var _this = this;
@@ -8851,12 +8976,12 @@
8851
8976
  CasesService.V2_MEDIATYPE_CREATE_EVENT = 'application/vnd.uk.gov.hmcts.ccd-data-store-api.create-event.v2+json;charset=UTF-8';
8852
8977
  CasesService.V2_MEDIATYPE_CREATE_CASE = 'application/vnd.uk.gov.hmcts.ccd-data-store-api.create-case.v2+json;charset=UTF-8';
8853
8978
  CasesService.PUI_CASE_MANAGER = 'pui-case-manager';
8854
- CasesService.ɵfac = function CasesService_Factory(t) { return new (t || CasesService)(i0__namespace.ɵɵinject(HttpService), i0__namespace.ɵɵinject(AbstractAppConfig), i0__namespace.ɵɵinject(OrderService), i0__namespace.ɵɵinject(HttpErrorService), i0__namespace.ɵɵinject(WizardPageFieldToCaseFieldMapper), i0__namespace.ɵɵinject(LoadingService), i0__namespace.ɵɵinject(SessionStorageService)); };
8979
+ CasesService.ɵfac = function CasesService_Factory(t) { return new (t || CasesService)(i0__namespace.ɵɵinject(HttpService), i0__namespace.ɵɵinject(AbstractAppConfig), i0__namespace.ɵɵinject(OrderService), i0__namespace.ɵɵinject(HttpErrorService), i0__namespace.ɵɵinject(WizardPageFieldToCaseFieldMapper), i0__namespace.ɵɵinject(LoadingService), i0__namespace.ɵɵinject(SessionStorageService), i0__namespace.ɵɵinject(RetryUtil)); };
8855
8980
  CasesService.ɵprov = i0__namespace.ɵɵdefineInjectable({ token: CasesService, factory: CasesService.ɵfac });
8856
8981
  (function () {
8857
8982
  (typeof ngDevMode === "undefined" || ngDevMode) && i0__namespace.ɵsetClassMetadata(CasesService, [{
8858
8983
  type: i0.Injectable
8859
- }], function () { return [{ type: HttpService }, { type: AbstractAppConfig }, { type: OrderService }, { type: HttpErrorService }, { type: WizardPageFieldToCaseFieldMapper }, { type: LoadingService }, { type: SessionStorageService }]; }, null);
8984
+ }], function () { return [{ type: HttpService }, { type: AbstractAppConfig }, { type: OrderService }, { type: HttpErrorService }, { type: WizardPageFieldToCaseFieldMapper }, { type: LoadingService }, { type: SessionStorageService }, { type: RetryUtil }]; }, null);
8860
8985
  })();
8861
8986
 
8862
8987
  var EventTriggerService = /** @class */ (function () {
@@ -9240,16 +9365,23 @@
9240
9365
  this.cachedCaseView = null;
9241
9366
  };
9242
9367
  CaseNotifier.prototype.announceCase = function (c) {
9368
+ console.info('announceCase started.');
9243
9369
  this.caseViewSource.next(c);
9370
+ console.info('announceCase finished.');
9244
9371
  };
9245
9372
  CaseNotifier.prototype.fetchAndRefresh = function (cid) {
9246
9373
  var _this = this;
9374
+ console.info('fetchAndRefresh started.');
9247
9375
  return this.casesService
9248
9376
  .getCaseViewV2(cid)
9249
9377
  .pipe(operators.map(function (caseView) {
9378
+ console.info('mapping caseView started.');
9379
+ // this.casesService.syncWait(10);
9380
+ // throw new Error('******************************************************');
9250
9381
  _this.cachedCaseView = classTransformer.plainToClassFromExist(new CaseView(), caseView);
9251
9382
  _this.setBasicFields(_this.cachedCaseView.tabs);
9252
9383
  _this.announceCase(_this.cachedCaseView);
9384
+ console.info('mapping caseView finished. Returning it.');
9253
9385
  return _this.cachedCaseView;
9254
9386
  }));
9255
9387
  };
@@ -9501,7 +9633,9 @@
9501
9633
  .filter(function (caseField) { return !_this.caseFieldService.isReadOnly(caseField); })
9502
9634
  .filter(function (caseField) { return !_this.isHidden(caseField, editForm); })
9503
9635
  .every(function (caseField) {
9504
- var theControl = editForm.controls['data'].get(caseField.id);
9636
+ var theControl = FieldsUtils.isCaseFieldOfType(caseField, ['JudicialUser'])
9637
+ ? editForm.controls['data'].get(caseField.id + "_judicialUserControl")
9638
+ : editForm.controls['data'].get(caseField.id);
9505
9639
  return _this.checkDocumentField(caseField, theControl) && _this.checkOptionalField(caseField, theControl);
9506
9640
  });
9507
9641
  };
@@ -10935,7 +11069,9 @@
10935
11069
  fields.filter(function (casefield) { return !_this.caseFieldService.isReadOnly(casefield); })
10936
11070
  .filter(function (casefield) { return !_this.pageValidationService.isHidden(casefield, _this.editForm, path); })
10937
11071
  .forEach(function (casefield) {
10938
- var fieldElement = group.get(casefield.id);
11072
+ var fieldElement = FieldsUtils.isCaseFieldOfType(casefield, ['JudicialUser'])
11073
+ ? group.get(casefield.id + "_judicialUserControl")
11074
+ : group.get(casefield.id);
10939
11075
  if (fieldElement) {
10940
11076
  var label = casefield.label || 'Field';
10941
11077
  var id_1 = casefield.id;
@@ -10950,6 +11086,11 @@
10950
11086
  if (fieldElement.hasError('required')) {
10951
11087
  _this.caseEditDataService.addFormValidationError({ id: id_1, message: "%FIELDLABEL% is required", label: label });
10952
11088
  fieldElement.markAsDirty();
11089
+ // For the JudicialUser field type, an error needs to be set on the component so that an error message
11090
+ // can be displayed at field level
11091
+ if (FieldsUtils.isCaseFieldOfType(casefield, ['JudicialUser'])) {
11092
+ fieldElement['component'].errors = { required: true };
11093
+ }
10953
11094
  }
10954
11095
  else if (fieldElement.hasError('pattern')) {
10955
11096
  _this.caseEditDataService.addFormValidationError({ id: id_1, message: "%FIELDLABEL% is not valid", label: label });
@@ -11046,6 +11187,10 @@
11046
11187
  _this.handleError(error);
11047
11188
  });
11048
11189
  CaseEditPageComponent.scrollToTop();
11190
+ // Remove all JudicialUser FormControls with the ID suffix "_judicialUserControl" because these are not
11191
+ // intended to be present in the Case Event data (they are added only for value selection and validation
11192
+ // purposes)
11193
+ this.removeAllJudicialUserFormControls(this.currentPage, this.editForm);
11049
11194
  }
11050
11195
  CaseEditPageComponent.setFocusToTop();
11051
11196
  };
@@ -11317,6 +11462,13 @@
11317
11462
  submit: this.caseEdit.submit,
11318
11463
  });
11319
11464
  };
11465
+ CaseEditPageComponent.prototype.removeAllJudicialUserFormControls = function (page, editForm) {
11466
+ page.case_fields.forEach(function (caseField) {
11467
+ if (FieldsUtils.isCaseFieldOfType(caseField, ['JudicialUser'])) {
11468
+ editForm.controls['data'].removeControl(caseField.id + "_judicialUserControl");
11469
+ }
11470
+ });
11471
+ };
11320
11472
  return CaseEditPageComponent;
11321
11473
  }());
11322
11474
  CaseEditPageComponent.RESUMED_FORM_DISCARD = 'RESUMED_FORM_DISCARD';
@@ -11582,7 +11734,7 @@
11582
11734
  i0__namespace.ɵɵtextInterpolate(i0__namespace.ɵɵpipeBind1(2, 1, "Enter the Postcode"));
11583
11735
  }
11584
11736
  }
11585
- var _c1$m = function (a0) { return { "form-group-error": a0 }; };
11737
+ var _c1$n = function (a0) { return { "form-group-error": a0 }; };
11586
11738
  var _c2$2 = function (a0) { return { "govuk-input--error": a0 }; };
11587
11739
  function WriteAddressFieldComponent_div_1_div_5_Template(rf, ctx) {
11588
11740
  if (rf & 1) {
@@ -11605,7 +11757,7 @@
11605
11757
  }
11606
11758
  if (rf & 2) {
11607
11759
  var ctx_r2 = i0__namespace.ɵɵnextContext(2);
11608
- i0__namespace.ɵɵproperty("id", ctx_r2.createElementId("postcodeLookup"))("ngClass", i0__namespace.ɵɵpureFunction1(13, _c1$m, ctx_r2.missingPostcode));
11760
+ i0__namespace.ɵɵproperty("id", ctx_r2.createElementId("postcodeLookup"))("ngClass", i0__namespace.ɵɵpureFunction1(13, _c1$n, ctx_r2.missingPostcode));
11609
11761
  i0__namespace.ɵɵadvance(1);
11610
11762
  i0__namespace.ɵɵproperty("for", ctx_r2.createElementId("postcodeInput"));
11611
11763
  i0__namespace.ɵɵadvance(2);
@@ -12998,7 +13150,7 @@
12998
13150
  i0__namespace.ɵɵtextInterpolate1(" ", i0__namespace.ɵɵpipeBind1(2, 1, i0__namespace.ɵɵpipeBind2(3, 3, ctx_r2.caseReferenceControl.errors, ctx_r2.caseField.label)), " ");
12999
13151
  }
13000
13152
  }
13001
- var _c1$l = function (a0) { return { "form-group-error": a0 }; };
13153
+ var _c1$m = function (a0) { return { "form-group-error": a0 }; };
13002
13154
  var WriteCaseLinkFieldComponent = /** @class */ (function (_super) {
13003
13155
  __extends(WriteCaseLinkFieldComponent, _super);
13004
13156
  function WriteCaseLinkFieldComponent() {
@@ -13082,7 +13234,7 @@
13082
13234
  i0__namespace.ɵɵelementEnd();
13083
13235
  }
13084
13236
  if (rf & 2) {
13085
- i0__namespace.ɵɵproperty("ngClass", i0__namespace.ɵɵpureFunction1(7, _c1$l, !ctx.caseReferenceControl.valid && (ctx.caseReferenceControl.dirty || ctx.caseReferenceControl.touched)));
13237
+ i0__namespace.ɵɵproperty("ngClass", i0__namespace.ɵɵpureFunction1(7, _c1$m, !ctx.caseReferenceControl.valid && (ctx.caseReferenceControl.dirty || ctx.caseReferenceControl.touched)));
13086
13238
  i0__namespace.ɵɵadvance(1);
13087
13239
  i0__namespace.ɵɵproperty("for", ctx.id());
13088
13240
  i0__namespace.ɵɵadvance(1);
@@ -13127,7 +13279,7 @@
13127
13279
  i0__namespace.ɵɵproperty("caseField", i0__namespace.ɵɵpureFunction6(3, _c0$P, 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);
13128
13280
  }
13129
13281
  }
13130
- var _c1$k = function (a0, a1, a2, a3, a4) { return { id: a0, label: a1, field_type: a2, value: a3, hidden: a4 }; };
13282
+ var _c1$l = function (a0, a1, a2, a3, a4) { return { id: a0, label: a1, field_type: a2, value: a3, hidden: a4 }; };
13131
13283
  function ReadCollectionFieldComponent_table_0_tbody_3_tr_1_Template(rf, ctx) {
13132
13284
  if (rf & 1) {
13133
13285
  i0__namespace.ɵɵelementStart(0, "tr");
@@ -13141,7 +13293,7 @@
13141
13293
  var i_r5 = ctx.index;
13142
13294
  var ctx_r3 = i0__namespace.ɵɵnextContext(3);
13143
13295
  i0__namespace.ɵɵadvance(2);
13144
- i0__namespace.ɵɵproperty("caseField", i0__namespace.ɵɵpureFunction5(4, _c1$k, 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));
13296
+ i0__namespace.ɵɵproperty("caseField", i0__namespace.ɵɵ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));
13145
13297
  }
13146
13298
  }
13147
13299
  function ReadCollectionFieldComponent_table_0_tbody_3_Template(rf, ctx) {
@@ -14471,7 +14623,7 @@
14471
14623
  i0__namespace.ɵɵproperty("caseField", ctx_r2.caseField);
14472
14624
  }
14473
14625
  }
14474
- var _c1$j = function (a0) { return { "form-group-error bottom-30": a0 }; };
14626
+ var _c1$k = function (a0) { return { "form-group-error bottom-30": a0 }; };
14475
14627
  var WriteDocumentFieldComponent = /** @class */ (function (_super) {
14476
14628
  __extends(WriteDocumentFieldComponent, _super);
14477
14629
  function WriteDocumentFieldComponent(appConfig, caseNotifier, documentManagement, dialog, fileUploadStateService) {
@@ -14775,7 +14927,7 @@
14775
14927
  i0__namespace.ɵɵelementEnd();
14776
14928
  }
14777
14929
  if (rf & 2) {
14778
- i0__namespace.ɵɵproperty("ngClass", i0__namespace.ɵɵpureFunction1(20, _c1$j, !ctx.valid));
14930
+ i0__namespace.ɵɵproperty("ngClass", i0__namespace.ɵɵpureFunction1(20, _c1$k, !ctx.valid));
14779
14931
  i0__namespace.ɵɵadvance(1);
14780
14932
  i0__namespace.ɵɵproperty("for", ctx.id());
14781
14933
  i0__namespace.ɵɵadvance(1);
@@ -15480,7 +15632,7 @@
15480
15632
  i0__namespace.ɵɵtextInterpolate(i0__namespace.ɵɵpipeBind1(4, 7, radioButton_r5.label));
15481
15633
  }
15482
15634
  }
15483
- var _c1$i = function (a0) { return { "form-group-error": a0 }; };
15635
+ var _c1$j = function (a0) { return { "form-group-error": a0 }; };
15484
15636
  var WriteDynamicRadioListFieldComponent = /** @class */ (function (_super) {
15485
15637
  __extends(WriteDynamicRadioListFieldComponent, _super);
15486
15638
  function WriteDynamicRadioListFieldComponent() {
@@ -15527,7 +15679,7 @@
15527
15679
  i0__namespace.ɵɵelementEnd();
15528
15680
  }
15529
15681
  if (rf & 2) {
15530
- i0__namespace.ɵɵproperty("ngClass", i0__namespace.ɵɵpureFunction1(8, _c1$i, !ctx.dynamicRadioListControl.valid && ctx.dynamicRadioListControl.dirty))("id", ctx.id());
15682
+ i0__namespace.ɵɵproperty("ngClass", i0__namespace.ɵɵpureFunction1(8, _c1$j, !ctx.dynamicRadioListControl.valid && ctx.dynamicRadioListControl.dirty))("id", ctx.id());
15531
15683
  i0__namespace.ɵɵadvance(3);
15532
15684
  i0__namespace.ɵɵproperty("for", ctx.id());
15533
15685
  i0__namespace.ɵɵadvance(1);
@@ -15638,7 +15790,7 @@
15638
15790
  }
15639
15791
  }
15640
15792
  var _c0$J = function (a0) { return { "form-group-error": a0 }; };
15641
- var _c1$h = function (a0) { return { "govuk-input--error": a0 }; };
15793
+ var _c1$i = function (a0) { return { "govuk-input--error": a0 }; };
15642
15794
  var WriteEmailFieldComponent = /** @class */ (function (_super) {
15643
15795
  __extends(WriteEmailFieldComponent, _super);
15644
15796
  function WriteEmailFieldComponent() {
@@ -15672,7 +15824,7 @@
15672
15824
  i0__namespace.ɵɵadvance(1);
15673
15825
  i0__namespace.ɵɵproperty("ngIf", ctx.emailControl.errors && (ctx.emailControl.dirty || ctx.emailControl.touched));
15674
15826
  i0__namespace.ɵɵadvance(1);
15675
- i0__namespace.ɵɵproperty("ngClass", i0__namespace.ɵɵpureFunction1(10, _c1$h, ctx.emailControl.errors && (ctx.emailControl.dirty || ctx.emailControl.touched)))("id", ctx.id())("formControl", ctx.emailControl);
15827
+ i0__namespace.ɵɵproperty("ngClass", i0__namespace.ɵɵpureFunction1(10, _c1$i, ctx.emailControl.errors && (ctx.emailControl.dirty || ctx.emailControl.touched)))("id", ctx.id())("formControl", ctx.emailControl);
15676
15828
  }
15677
15829
  }, directives: [i2__namespace.NgClass, i2__namespace.NgIf, i2__namespace$1.DefaultValueAccessor, i2__namespace$1.NgControlStatus, i2__namespace$1.FormControlDirective], pipes: [i1__namespace.RpxTranslatePipe, FieldLabelPipe, FirstErrorPipe], encapsulation: 2 });
15678
15830
  var ɵWriteEmailFieldComponent_BaseFactory = /*@__PURE__*/ i0__namespace.ɵɵgetInheritedFactory(WriteEmailFieldComponent);
@@ -15967,7 +16119,7 @@
15967
16119
  i0__namespace.ɵɵtextInterpolate(i0__namespace.ɵɵpipeBind1(4, 7, radioButton_r4.label));
15968
16120
  }
15969
16121
  }
15970
- var _c1$g = function (a0) { return { "form-group-error": a0 }; };
16122
+ var _c1$h = function (a0) { return { "form-group-error": a0 }; };
15971
16123
  var WriteFixedRadioListFieldComponent = /** @class */ (function (_super) {
15972
16124
  __extends(WriteFixedRadioListFieldComponent, _super);
15973
16125
  function WriteFixedRadioListFieldComponent() {
@@ -15998,7 +16150,7 @@
15998
16150
  i0__namespace.ɵɵelementEnd();
15999
16151
  }
16000
16152
  if (rf & 2) {
16001
- i0__namespace.ɵɵproperty("ngClass", i0__namespace.ɵɵpureFunction1(7, _c1$g, !ctx.fixedRadioListControl.valid && (ctx.fixedRadioListControl.dirty || ctx.fixedRadioListControl.touched)))("id", ctx.id());
16153
+ i0__namespace.ɵɵproperty("ngClass", i0__namespace.ɵɵpureFunction1(7, _c1$h, !ctx.fixedRadioListControl.valid && (ctx.fixedRadioListControl.dirty || ctx.fixedRadioListControl.touched)))("id", ctx.id());
16002
16154
  i0__namespace.ɵɵadvance(3);
16003
16155
  i0__namespace.ɵɵproperty("for", ctx.id());
16004
16156
  i0__namespace.ɵɵadvance(1);
@@ -16105,7 +16257,7 @@
16105
16257
 
16106
16258
  function WriteJudicialUserFieldComponent_span_2_Template(rf, ctx) {
16107
16259
  if (rf & 1) {
16108
- i0__namespace.ɵɵelementStart(0, "span", 9);
16260
+ i0__namespace.ɵɵelementStart(0, "span", 10);
16109
16261
  i0__namespace.ɵɵtext(1);
16110
16262
  i0__namespace.ɵɵpipe(2, "ccdFieldLabel");
16111
16263
  i0__namespace.ɵɵelementEnd();
@@ -16118,7 +16270,7 @@
16118
16270
  }
16119
16271
  function WriteJudicialUserFieldComponent_span_3_Template(rf, ctx) {
16120
16272
  if (rf & 1) {
16121
- i0__namespace.ɵɵelementStart(0, "span", 10);
16273
+ i0__namespace.ɵɵelementStart(0, "span", 11);
16122
16274
  i0__namespace.ɵɵtext(1);
16123
16275
  i0__namespace.ɵɵelementEnd();
16124
16276
  }
@@ -16128,56 +16280,92 @@
16128
16280
  i0__namespace.ɵɵtextInterpolate1(" ", ctx_r1.caseField.hint_text, " ");
16129
16281
  }
16130
16282
  }
16131
- var _c0$G = function (a0) { return { "hide-autocomplete": a0 }; };
16132
- function WriteJudicialUserFieldComponent_mat_option_7_Template(rf, ctx) {
16283
+ function WriteJudicialUserFieldComponent_span_4_Template(rf, ctx) {
16133
16284
  if (rf & 1) {
16134
- var _r7_1 = i0__namespace.ɵɵgetCurrentView();
16135
- i0__namespace.ɵɵelementStart(0, "mat-option", 11);
16136
- i0__namespace.ɵɵlistener("onSelectionChange", function WriteJudicialUserFieldComponent_mat_option_7_Template_mat_option_onSelectionChange_0_listener() { i0__namespace.ɵɵrestoreView(_r7_1); var judicialUser_r5 = ctx.$implicit; var ctx_r6 = i0__namespace.ɵɵnextContext(); return ctx_r6.onSelectionChange(judicialUser_r5); });
16285
+ i0__namespace.ɵɵelementStart(0, "span", 12);
16137
16286
  i0__namespace.ɵɵtext(1);
16287
+ i0__namespace.ɵɵpipe(2, "ccdFirstError");
16138
16288
  i0__namespace.ɵɵelementEnd();
16139
16289
  }
16140
16290
  if (rf & 2) {
16141
- var judicialUser_r5 = ctx.$implicit;
16142
- var ctx_r3 = i0__namespace.ɵɵnextContext();
16143
- i0__namespace.ɵɵproperty("ngClass", i0__namespace.ɵɵpureFunction1(4, _c0$G, !ctx_r3.showAutocomplete))("value", judicialUser_r5.idamId);
16291
+ var ctx_r2 = i0__namespace.ɵɵnextContext();
16144
16292
  i0__namespace.ɵɵadvance(1);
16145
- i0__namespace.ɵɵtextInterpolate2(" ", judicialUser_r5.fullName, " (", judicialUser_r5.emailId, ") ");
16293
+ i0__namespace.ɵɵtextInterpolate1(" ", i0__namespace.ɵɵpipeBind2(2, 1, ctx_r2.errors, ctx_r2.caseField.label), " ");
16146
16294
  }
16147
16295
  }
16296
+ var _c0$G = function (a0) { return { "hide-autocomplete": a0 }; };
16148
16297
  function WriteJudicialUserFieldComponent_mat_option_8_Template(rf, ctx) {
16149
16298
  if (rf & 1) {
16150
- i0__namespace.ɵɵelementStart(0, "mat-option", 12);
16299
+ var _r9_1 = i0__namespace.ɵɵgetCurrentView();
16300
+ i0__namespace.ɵɵelementStart(0, "mat-option", 13);
16301
+ i0__namespace.ɵɵlistener("onSelectionChange", function WriteJudicialUserFieldComponent_mat_option_8_Template_mat_option_onSelectionChange_0_listener($event) { i0__namespace.ɵɵrestoreView(_r9_1); var ctx_r8 = i0__namespace.ɵɵnextContext(); return ctx_r8.onSelectionChange($event); });
16302
+ i0__namespace.ɵɵtext(1);
16303
+ i0__namespace.ɵɵelementEnd();
16304
+ }
16305
+ if (rf & 2) {
16306
+ var judicialUser_r7 = ctx.$implicit;
16307
+ var ctx_r4 = i0__namespace.ɵɵnextContext();
16308
+ i0__namespace.ɵɵproperty("ngClass", i0__namespace.ɵɵpureFunction1(4, _c0$G, !ctx_r4.showAutocomplete))("value", judicialUser_r7);
16309
+ i0__namespace.ɵɵadvance(1);
16310
+ i0__namespace.ɵɵtextInterpolate2(" ", (judicialUser_r7 == null ? null : judicialUser_r7.fullName) ? judicialUser_r7.fullName : "", "", (judicialUser_r7 == null ? null : judicialUser_r7.emailId) ? " (" + judicialUser_r7.emailId + ")" : "", " ");
16311
+ }
16312
+ }
16313
+ function WriteJudicialUserFieldComponent_mat_option_10_Template(rf, ctx) {
16314
+ if (rf & 1) {
16315
+ i0__namespace.ɵɵelementStart(0, "mat-option", 14);
16151
16316
  i0__namespace.ɵɵtext(1, " No results found ");
16152
16317
  i0__namespace.ɵɵelementEnd();
16153
16318
  }
16154
16319
  }
16320
+ function WriteJudicialUserFieldComponent_mat_option_11_Template(rf, ctx) {
16321
+ if (rf & 1) {
16322
+ i0__namespace.ɵɵelementStart(0, "mat-option", 14);
16323
+ i0__namespace.ɵɵtext(1, " Invalid search term ");
16324
+ i0__namespace.ɵɵelementEnd();
16325
+ }
16326
+ }
16327
+ var _c1$g = function (a0) { return { "form-group-error": a0 }; };
16155
16328
  var WriteJudicialUserFieldComponent = /** @class */ (function (_super) {
16156
16329
  __extends(WriteJudicialUserFieldComponent, _super);
16157
- function WriteJudicialUserFieldComponent(jurisdictionService, sessionStorageService, caseFlagRefDataService) {
16158
- var _this = _super.call(this) || this;
16330
+ function WriteJudicialUserFieldComponent(jurisdictionService, sessionStorageService, caseFlagRefDataService, compoundPipe, validatorsService) {
16331
+ var _this = _super.call(this, compoundPipe, validatorsService) || this;
16159
16332
  _this.jurisdictionService = jurisdictionService;
16160
16333
  _this.sessionStorageService = sessionStorageService;
16161
16334
  _this.caseFlagRefDataService = caseFlagRefDataService;
16162
- _this.MINIMUM_SEARCH_CHARACTERS = 2;
16163
- _this.IDAM_ID = 'idamId';
16164
- _this.PERSONAL_CODE = 'personalCode';
16165
- _this.filteredJudicialUsers = [];
16335
+ _this.compoundPipe = compoundPipe;
16336
+ _this.validatorsService = validatorsService;
16337
+ _this.minSearchCharacters = 2;
16166
16338
  _this.showAutocomplete = false;
16339
+ _this.searchTerm = '';
16340
+ _this.noResults = false;
16341
+ _this.invalidSearchTerm = false;
16342
+ _this.judicialUserSelected = false;
16167
16343
  return _this;
16168
16344
  }
16169
16345
  WriteJudicialUserFieldComponent.prototype.ngOnInit = function () {
16170
16346
  var _this = this;
16171
16347
  var _a;
16172
- this.judicialUserFormGroup = this.registerControl(new i2$1.FormGroup({}), true);
16173
- this.idamIdFormControl = new i2$1.FormControl('');
16174
- this.judicialUserFormGroup.addControl(this.IDAM_ID, this.idamIdFormControl);
16175
- this.personalCodeFormControl = new i2$1.FormControl('');
16176
- this.judicialUserFormGroup.addControl(this.PERSONAL_CODE, this.personalCodeFormControl);
16348
+ _super.prototype.ngOnInit.call(this);
16349
+ this.judicialUserControl = new i2$1.FormControl(this.caseField.value);
16350
+ // FormControl needs to be added to the main FormGroup so it can be picked up by the PageValidationService when
16351
+ // checking if the page is valid. FormGroup.setControl() is used here to ensure any existing JudicialUser
16352
+ // FormControl is replaced when the component is re-initialised, for example, if the user navigates away then
16353
+ // back to the page containing the JudicialUser field
16354
+ this.formGroup.setControl(this.caseField.id + "_judicialUserControl", this.judicialUserControl);
16355
+ // Ensure that this FormControl has links to the JudicialUser case field and this component
16356
+ FieldsUtils.addCaseFieldAndComponentReferences(this.judicialUserControl, this.caseField, this);
16357
+ this.setupValidation();
16177
16358
  this.setJurisdictionAndCaseType();
16178
- this.sub = this.idamIdFormControl.valueChanges.pipe(operators.tap(function () { return _this.showAutocomplete = false; }), operators.tap(function () { return _this.filteredJudicialUsers = []; }), operators.debounceTime(300), operators.filter(function (searchTerm) { return searchTerm && searchTerm.length > _this.MINIMUM_SEARCH_CHARACTERS; }), operators.switchMap(function (searchTerm) { return _this.filterJudicialUsers(searchTerm).pipe(operators.tap(function () { return _this.showAutocomplete = true; }), operators.catchError(function () { return _this.filteredJudicialUsers = []; })); })).subscribe(function (judicialUsers) {
16179
- _this.filteredJudicialUsers = judicialUsers;
16180
- });
16359
+ this.filteredJudicialUsers$ = this.judicialUserControl.valueChanges.pipe(operators.tap(function () { return _this.showAutocomplete = false; }), operators.debounceTime(300),
16360
+ // Need to check type of input because it changes to object (i.e. JudicialUser) when a value is selected from the
16361
+ // autocomplete panel, instead of string when a value is being typed in
16362
+ operators.map(function (input) { return typeof input === 'string' ? input : input === null || input === void 0 ? void 0 : input.fullName; }), operators.tap(function (searchTerm) {
16363
+ _this.searchTerm = searchTerm;
16364
+ _this.invalidSearchTerm = false;
16365
+ }), operators.filter(function (searchTerm) { return searchTerm && searchTerm.length > _this.minSearchCharacters; }), operators.switchMap(function (searchTerm) { return _this.filterJudicialUsers(searchTerm).pipe(operators.tap(function (judicialUsers) {
16366
+ _this.showAutocomplete = true;
16367
+ _this.noResults = !_this.invalidSearchTerm && judicialUsers.length === 0;
16368
+ })); }));
16181
16369
  if ((_a = this.caseField.value) === null || _a === void 0 ? void 0 : _a.personalCode) {
16182
16370
  this.loadJudicialUser(this.caseField.value.personalCode);
16183
16371
  }
@@ -16187,17 +16375,22 @@
16187
16375
  return this.caseFlagRefDataService.getHmctsServiceDetailsByCaseType(this.caseType).pipe(
16188
16376
  // If an error occurs retrieving HMCTS service details by case type ID, try by service name instead
16189
16377
  operators.catchError(function (_) { return _this.caseFlagRefDataService.getHmctsServiceDetailsByServiceName(_this.jurisdiction); }),
16190
- // Use switchMap to return an inner Observable of the flag types data, having received the service details
16378
+ // Use switchMap to return an inner Observable of the judicial users data, having received the service details
16191
16379
  // including service_code. This avoids having nested `subscribe`s, which is an anti-pattern!
16192
- operators.switchMap(function (serviceDetails) { return _this.jurisdictionService.searchJudicialUsers(searchTerm, serviceDetails[0].service_code); }));
16380
+ operators.switchMap(function (serviceDetails) {
16381
+ return _this.jurisdictionService.searchJudicialUsers(searchTerm, serviceDetails[0].service_code).pipe(
16382
+ // Handle any errors here rather than outside of the function, so that the outer Observable is kept live
16383
+ operators.catchError(function (_) {
16384
+ _this.invalidSearchTerm = true;
16385
+ return rxjs.of(undefined);
16386
+ }));
16387
+ }));
16193
16388
  };
16194
16389
  WriteJudicialUserFieldComponent.prototype.loadJudicialUser = function (personalCode) {
16195
16390
  var _this = this;
16196
16391
  if (personalCode) {
16197
- this.jurisdictionService.searchJudicialUsersByPersonalCodes([personalCode]).subscribe(function (judicialUsers) {
16198
- var judicialUser = judicialUsers[0];
16199
- _this.idamIdFormControl.setValue(judicialUser.fullName + " (" + judicialUser.emailId + ")");
16200
- _this.personalCodeFormControl.setValue(judicialUser.personalCode);
16392
+ this.jurisdictionService.searchJudicialUsersByPersonalCodes([personalCode]).pipe(operators.take(1)).subscribe(function (judicialUsers) {
16393
+ _this.judicialUserControl.setValue(judicialUsers[0]);
16201
16394
  });
16202
16395
  }
16203
16396
  };
@@ -16209,35 +16402,75 @@
16209
16402
  this.caseType = caseInfo === null || caseInfo === void 0 ? void 0 : caseInfo.caseType;
16210
16403
  }
16211
16404
  };
16212
- WriteJudicialUserFieldComponent.prototype.onSelectionChange = function (judicialUser) {
16213
- this.idamIdFormControl.setValue(judicialUser.fullName + " (" + judicialUser.emailId + ")");
16214
- this.personalCodeFormControl.setValue(judicialUser.personalCode);
16405
+ WriteJudicialUserFieldComponent.prototype.displayJudicialUser = function (judicialUser) {
16406
+ return judicialUser
16407
+ ? "" + (judicialUser.fullName ? judicialUser.fullName : '') + (judicialUser.emailId ? " (" + judicialUser.emailId + ")" : '')
16408
+ : undefined;
16215
16409
  };
16216
- WriteJudicialUserFieldComponent.prototype.ngOnDestroy = function () {
16217
- if (this.sub) {
16218
- this.sub.unsubscribe();
16410
+ WriteJudicialUserFieldComponent.prototype.onSelectionChange = function (event) {
16411
+ var _a, _b;
16412
+ // The event.source.value property is a JudicialUserModel object instance; use this to update both the caseField
16413
+ // value and the values of the two FormControls for the idamId and personalCode properties of the JudicialUser
16414
+ // complex field type (these values will appear in the data payload for validation and submission)
16415
+ this.caseField.value = {
16416
+ idamId: event.source.value.idamId,
16417
+ personalCode: event.source.value.personalCode
16418
+ };
16419
+ (_a = this.complexGroup.get('idamId')) === null || _a === void 0 ? void 0 : _a.setValue(this.caseField.value.idamId);
16420
+ (_b = this.complexGroup.get('personalCode')) === null || _b === void 0 ? void 0 : _b.setValue(this.caseField.value.personalCode);
16421
+ this.judicialUserSelected = true;
16422
+ };
16423
+ WriteJudicialUserFieldComponent.prototype.onBlur = function (event) {
16424
+ var _a, _b, _c;
16425
+ // If the user types into the JudicialUser field but doesn't select a value from the autocomplete list, reset the
16426
+ // FormControl value to null to ensure it fails validation (can check the event.relatedTarget property)
16427
+ if (((_a = event.relatedTarget) === null || _a === void 0 ? void 0 : _a.role) !== 'option' && !this.judicialUserSelected) {
16428
+ // If relatedTarget.role is not "option", it means the user didn't select a value
16429
+ this.judicialUserControl.setValue(null);
16430
+ }
16431
+ if (!this.judicialUserControl.value) {
16432
+ // If the user deletes the field value, set the caseField value and the values of the two FormControls for
16433
+ // idamId and personalCode to null. This is to avoid judicial user data being present in the data payload
16434
+ // unintentionally
16435
+ this.caseField.value = null;
16436
+ (_b = this.complexGroup.get('idamId')) === null || _b === void 0 ? void 0 : _b.setValue(null);
16437
+ (_c = this.complexGroup.get('personalCode')) === null || _c === void 0 ? void 0 : _c.setValue(null);
16438
+ }
16439
+ };
16440
+ WriteJudicialUserFieldComponent.prototype.setupValidation = function () {
16441
+ // Need to remove validators from the two FormControls, idamId and personalCode, for the JudicialUser complex
16442
+ // field type. This prevents these hidden fields being listed in an error message if there are validation errors
16443
+ this.complexGroup.get('idamId').clearValidators();
16444
+ this.complexGroup.get('personalCode').clearValidators();
16445
+ if (this.caseField.display_context === Constants.MANDATORY) {
16446
+ this.judicialUserControl.setValidators(i2$1.Validators.required);
16219
16447
  }
16220
16448
  };
16221
16449
  return WriteJudicialUserFieldComponent;
16222
- }(AbstractFieldWriteComponent));
16223
- WriteJudicialUserFieldComponent.ɵfac = function WriteJudicialUserFieldComponent_Factory(t) { return new (t || WriteJudicialUserFieldComponent)(i0__namespace.ɵɵdirectiveInject(JurisdictionService), i0__namespace.ɵɵdirectiveInject(SessionStorageService), i0__namespace.ɵɵdirectiveInject(CaseFlagRefdataService)); };
16224
- WriteJudicialUserFieldComponent.ɵcmp = i0__namespace.ɵɵdefineComponent({ type: WriteJudicialUserFieldComponent, selectors: [["ccd-write-judicial-user-field"]], features: [i0__namespace.ɵɵInheritDefinitionFeature], decls: 9, vars: 9, consts: [[1, "form-group", 3, "formGroup"], [3, "for"], ["class", "form-label", 4, "ngIf"], ["class", "form-hint", 4, "ngIf"], [1, "form-control", "bottom-30", 3, "id", "formControl", "matAutocomplete"], ["autoActiveFirstOption", ""], ["autoComplete", "matAutocomplete"], ["class", "select-option", 3, "ngClass", "value", "onSelectionChange", 4, "ngFor", "ngForOf"], ["class", "select-option", 4, "ngIf"], [1, "form-label"], [1, "form-hint"], [1, "select-option", 3, "ngClass", "value", "onSelectionChange"], [1, "select-option"]], template: function WriteJudicialUserFieldComponent_Template(rf, ctx) {
16450
+ }(WriteComplexFieldComponent));
16451
+ WriteJudicialUserFieldComponent.ɵfac = function WriteJudicialUserFieldComponent_Factory(t) { return new (t || WriteJudicialUserFieldComponent)(i0__namespace.ɵɵdirectiveInject(JurisdictionService), i0__namespace.ɵɵdirectiveInject(SessionStorageService), i0__namespace.ɵɵdirectiveInject(CaseFlagRefdataService), i0__namespace.ɵɵdirectiveInject(IsCompoundPipe), i0__namespace.ɵɵdirectiveInject(FormValidatorsService)); };
16452
+ WriteJudicialUserFieldComponent.ɵcmp = i0__namespace.ɵɵdefineComponent({ type: WriteJudicialUserFieldComponent, selectors: [["ccd-write-judicial-user-field"]], features: [i0__namespace.ɵɵInheritDefinitionFeature], decls: 12, vars: 17, consts: [[1, "form-group", 3, "formGroup", "ngClass"], [3, "for"], ["class", "form-label", 4, "ngIf"], ["class", "form-hint", 4, "ngIf"], ["class", "error-message", 4, "ngIf"], [1, "form-control", "bottom-30", 3, "id", "formControl", "matAutocomplete", "blur"], ["autoActiveFirstOption", "", 3, "displayWith"], ["autoComplete", "matAutocomplete"], ["class", "select-option", 3, "ngClass", "value", "onSelectionChange", 4, "ngFor", "ngForOf"], ["class", "select-option", "disabled", "", 4, "ngIf"], [1, "form-label"], [1, "form-hint"], [1, "error-message"], [1, "select-option", 3, "ngClass", "value", "onSelectionChange"], ["disabled", "", 1, "select-option"]], template: function WriteJudicialUserFieldComponent_Template(rf, ctx) {
16225
16453
  if (rf & 1) {
16226
16454
  i0__namespace.ɵɵelementStart(0, "div", 0);
16227
16455
  i0__namespace.ɵɵelementStart(1, "label", 1);
16228
16456
  i0__namespace.ɵɵtemplate(2, WriteJudicialUserFieldComponent_span_2_Template, 3, 3, "span", 2);
16229
16457
  i0__namespace.ɵɵelementEnd();
16230
16458
  i0__namespace.ɵɵtemplate(3, WriteJudicialUserFieldComponent_span_3_Template, 2, 1, "span", 3);
16231
- i0__namespace.ɵɵelement(4, "input", 4);
16232
- i0__namespace.ɵɵelementStart(5, "mat-autocomplete", 5, 6);
16233
- i0__namespace.ɵɵtemplate(7, WriteJudicialUserFieldComponent_mat_option_7_Template, 2, 6, "mat-option", 7);
16234
- i0__namespace.ɵɵtemplate(8, WriteJudicialUserFieldComponent_mat_option_8_Template, 2, 0, "mat-option", 8);
16459
+ i0__namespace.ɵɵtemplate(4, WriteJudicialUserFieldComponent_span_4_Template, 3, 4, "span", 4);
16460
+ i0__namespace.ɵɵelementStart(5, "input", 5);
16461
+ i0__namespace.ɵɵlistener("blur", function WriteJudicialUserFieldComponent_Template_input_blur_5_listener($event) { return ctx.onBlur($event); });
16462
+ i0__namespace.ɵɵelementEnd();
16463
+ i0__namespace.ɵɵelementStart(6, "mat-autocomplete", 6, 7);
16464
+ i0__namespace.ɵɵtemplate(8, WriteJudicialUserFieldComponent_mat_option_8_Template, 2, 6, "mat-option", 8);
16465
+ i0__namespace.ɵɵpipe(9, "async");
16466
+ i0__namespace.ɵɵtemplate(10, WriteJudicialUserFieldComponent_mat_option_10_Template, 2, 0, "mat-option", 9);
16467
+ i0__namespace.ɵɵtemplate(11, WriteJudicialUserFieldComponent_mat_option_11_Template, 2, 0, "mat-option", 9);
16235
16468
  i0__namespace.ɵɵelementEnd();
16236
16469
  i0__namespace.ɵɵelementEnd();
16237
16470
  }
16238
16471
  if (rf & 2) {
16239
- var _r2 = i0__namespace.ɵɵreference(6);
16240
- i0__namespace.ɵɵproperty("formGroup", ctx.judicialUserFormGroup);
16472
+ var _r3 = i0__namespace.ɵɵreference(7);
16473
+ i0__namespace.ɵɵproperty("formGroup", ctx.formGroup)("ngClass", i0__namespace.ɵɵpureFunction1(15, _c1$g, !!ctx.judicialUserControl && ctx.errors));
16241
16474
  i0__namespace.ɵɵadvance(1);
16242
16475
  i0__namespace.ɵɵproperty("for", ctx.id());
16243
16476
  i0__namespace.ɵɵadvance(1);
@@ -16245,13 +16478,19 @@
16245
16478
  i0__namespace.ɵɵadvance(1);
16246
16479
  i0__namespace.ɵɵproperty("ngIf", ctx.caseField.hint_text);
16247
16480
  i0__namespace.ɵɵadvance(1);
16248
- i0__namespace.ɵɵproperty("id", ctx.id())("formControl", ctx.idamIdFormControl)("matAutocomplete", _r2);
16249
- i0__namespace.ɵɵadvance(3);
16250
- i0__namespace.ɵɵproperty("ngForOf", ctx.filteredJudicialUsers);
16481
+ i0__namespace.ɵɵproperty("ngIf", ctx.errors);
16482
+ i0__namespace.ɵɵadvance(1);
16483
+ i0__namespace.ɵɵproperty("id", ctx.id())("formControl", ctx.judicialUserControl)("matAutocomplete", _r3);
16484
+ i0__namespace.ɵɵadvance(1);
16485
+ i0__namespace.ɵɵproperty("displayWith", ctx.displayJudicialUser);
16486
+ i0__namespace.ɵɵadvance(2);
16487
+ i0__namespace.ɵɵproperty("ngForOf", i0__namespace.ɵɵpipeBind1(9, 13, ctx.filteredJudicialUsers$));
16488
+ i0__namespace.ɵɵadvance(2);
16489
+ i0__namespace.ɵɵproperty("ngIf", ctx.noResults && ctx.searchTerm && ctx.searchTerm.length > ctx.minSearchCharacters && ctx.showAutocomplete);
16251
16490
  i0__namespace.ɵɵadvance(1);
16252
- i0__namespace.ɵɵproperty("ngIf", !(ctx.filteredJudicialUsers == null ? null : ctx.filteredJudicialUsers.length) && ctx.showAutocomplete);
16491
+ i0__namespace.ɵɵproperty("ngIf", ctx.invalidSearchTerm);
16253
16492
  }
16254
- }, directives: [i2__namespace$1.NgControlStatusGroup, i2__namespace$1.FormGroupDirective, i2__namespace.NgIf, i2__namespace$1.DefaultValueAccessor, i4__namespace.MatAutocompleteTrigger, i2__namespace$1.NgControlStatus, i2__namespace$1.FormControlDirective, i4__namespace.MatAutocomplete, i2__namespace.NgForOf, i5__namespace.MatOption, i2__namespace.NgClass], pipes: [FieldLabelPipe], styles: [".mat-option[_ngcontent-%COMP%]:hover{background:#2596be}.mat-option.select-option[_ngcontent-%COMP%]:hover{background:#1d70b8;color:#fff}.hide-autocomplete[_ngcontent-%COMP%]{display:none}"] });
16493
+ }, directives: [i2__namespace$1.NgControlStatusGroup, i2__namespace$1.FormGroupDirective, i2__namespace.NgClass, i2__namespace.NgIf, i2__namespace$1.DefaultValueAccessor, i5__namespace.MatAutocompleteTrigger, i2__namespace$1.NgControlStatus, i2__namespace$1.FormControlDirective, i5__namespace.MatAutocomplete, i2__namespace.NgForOf, i6__namespace.MatOption], pipes: [i2__namespace.AsyncPipe, FieldLabelPipe, FirstErrorPipe], styles: [".mat-option[_ngcontent-%COMP%]:hover{background:#2596be}.mat-option.select-option[_ngcontent-%COMP%]:hover{background:#1d70b8;color:#fff}.hide-autocomplete[_ngcontent-%COMP%]{display:none}"] });
16255
16494
  (function () {
16256
16495
  (typeof ngDevMode === "undefined" || ngDevMode) && i0__namespace.ɵsetClassMetadata(WriteJudicialUserFieldComponent, [{
16257
16496
  type: i0.Component,
@@ -16260,7 +16499,7 @@
16260
16499
  styleUrls: ['./write-judicial-user-field.component.scss'],
16261
16500
  templateUrl: './write-judicial-user-field.component.html'
16262
16501
  }]
16263
- }], function () { return [{ type: JurisdictionService }, { type: SessionStorageService }, { type: CaseFlagRefdataService }]; }, null);
16502
+ }], function () { return [{ type: JurisdictionService }, { type: SessionStorageService }, { type: CaseFlagRefdataService }, { type: IsCompoundPipe }, { type: FormValidatorsService }]; }, null);
16264
16503
  })();
16265
16504
 
16266
16505
  function LabelFieldComponent_ccd_markdown_2_Template(rf, ctx) {
@@ -23168,7 +23407,7 @@
23168
23407
  i0__namespace.ɵɵadvance(1);
23169
23408
  i0__namespace.ɵɵproperty("ngIf", ctx.isCheckboxEnabled);
23170
23409
  }
23171
- }, directives: [i2__namespace$1.NgControlStatusGroup, i2__namespace$1.FormGroupDirective, i2__namespace.NgClass, i2__namespace.NgIf, i3__namespace$1.MatInput, i2__namespace$1.DefaultValueAccessor, i4__namespace.MatAutocompleteTrigger, i2__namespace$1.NgControlStatus, i2__namespace$1.FormControlName, i4__namespace.MatAutocomplete, i2__namespace.NgForOf, i5__namespace.MatOption], pipes: [i2__namespace.AsyncPipe], styles: [".autocomplete__input--show-all-values[_ngcontent-%COMP%]{padding:5px 34px 5px 5px;cursor:pointer}.autocomplete__dropdown-arrow-down[_ngcontent-%COMP%]{z-index:-1;display:inline-block;position:absolute;right:8px;width:24px;height:24px;top:10px}.autocomplete__menu[_ngcontent-%COMP%]{background-color:#fff;border:2px solid #0b0c0c;border-top:0;color:#0b0c0c;margin:0;max-height:342px;overflow-x:hidden;padding:0;width:100%;width:calc(100% - 4px)}.autocomplete__menu--visible[_ngcontent-%COMP%]{display:block}.autocomplete__menu--hidden[_ngcontent-%COMP%]{display:none}.autocomplete__menu--overlay[_ngcontent-%COMP%]{box-shadow:0 2px 6px rgba(0,0,0,.256863);left:0;position:absolute;top:100%;z-index:100}.autocomplete__menu--inline[_ngcontent-%COMP%]{position:relative}.autocomplete__option[_ngcontent-%COMP%]{border-left-width:0;border-bottom:1px solid #b1b4b6;border-right-width:0;border-top-width:1px;cursor:pointer;display:block;position:relative}.autocomplete__option[_ngcontent-%COMP%] > *[_ngcontent-%COMP%]{pointer-events:none}.autocomplete__option[_ngcontent-%COMP%]:first-of-type{border-top-width:0}.autocomplete__option[_ngcontent-%COMP%]:last-of-type{border-bottom-width:0}.autocomplete__option--odd[_ngcontent-%COMP%]{background-color:#fafafa}.autocomplete__option--focused[_ngcontent-%COMP%], .autocomplete__option[_ngcontent-%COMP%]:hover{background-color:#1d70b8;border-color:#1d70b8;color:#fff;outline:0}.autocomplete__option--no-results[_ngcontent-%COMP%]{background-color:#fafafa;color:#646b6f;cursor:not-allowed}.autocomplete__hint[_ngcontent-%COMP%], .autocomplete__input[_ngcontent-%COMP%], .autocomplete__option[_ngcontent-%COMP%]{font-size:13px;line-height:1.25}.autocomplete__hint[_ngcontent-%COMP%], .autocomplete__option[_ngcontent-%COMP%]{padding:5px}@media (min-width:641px){.autocomplete__hint[_ngcontent-%COMP%], .autocomplete__input[_ngcontent-%COMP%], .autocomplete__option[_ngcontent-%COMP%]{font-size:13px;line-height:1.31579}}.div-action[_ngcontent-%COMP%]{display:inline-block}.add-location[_ngcontent-%COMP%]{display:inline}.remove-location-button[_ngcontent-%COMP%]{margin:5px}.hide-autocomplete[_ngcontent-%COMP%]{display:none}.auto-complete-container[_ngcontent-%COMP%]{min-width:550px;display:inline-block;margin-right:4px}.autocomplete__input[_ngcontent-%COMP%]{line-height:24px;font-size:19px}.hidden[_ngcontent-%COMP%]{display:none}.search-language__input[_ngcontent-%COMP%]{position:relative;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 36 36' width='40' height='40'%3E%3Cpath d='M25.7 24.8L21.9 21c.7-1 1.1-2.2 1.1-3.5 0-3.6-2.9-6.5-6.5-6.5S10 13.9 10 17.5s2.9 6.5 6.5 6.5c1.6 0 3-.6 4.1-1.5l3.7 3.7 1.4-1.4zM12 17.5c0-2.5 2-4.5 4.5-4.5s4.5 2 4.5 4.5-2 4.5-4.5 4.5-4.5-2-4.5-4.5z' fill='%23505a5f'%3E%3C/path%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:center left -2px;background-size:40px 40px;padding-left:35px}"] });
23410
+ }, directives: [i2__namespace$1.NgControlStatusGroup, i2__namespace$1.FormGroupDirective, i2__namespace.NgClass, i2__namespace.NgIf, i3__namespace$1.MatInput, i2__namespace$1.DefaultValueAccessor, i5__namespace.MatAutocompleteTrigger, i2__namespace$1.NgControlStatus, i2__namespace$1.FormControlName, i5__namespace.MatAutocomplete, i2__namespace.NgForOf, i6__namespace.MatOption], pipes: [i2__namespace.AsyncPipe], styles: [".autocomplete__input--show-all-values[_ngcontent-%COMP%]{padding:5px 34px 5px 5px;cursor:pointer}.autocomplete__dropdown-arrow-down[_ngcontent-%COMP%]{z-index:-1;display:inline-block;position:absolute;right:8px;width:24px;height:24px;top:10px}.autocomplete__menu[_ngcontent-%COMP%]{background-color:#fff;border:2px solid #0b0c0c;border-top:0;color:#0b0c0c;margin:0;max-height:342px;overflow-x:hidden;padding:0;width:100%;width:calc(100% - 4px)}.autocomplete__menu--visible[_ngcontent-%COMP%]{display:block}.autocomplete__menu--hidden[_ngcontent-%COMP%]{display:none}.autocomplete__menu--overlay[_ngcontent-%COMP%]{box-shadow:0 2px 6px rgba(0,0,0,.256863);left:0;position:absolute;top:100%;z-index:100}.autocomplete__menu--inline[_ngcontent-%COMP%]{position:relative}.autocomplete__option[_ngcontent-%COMP%]{border-left-width:0;border-bottom:1px solid #b1b4b6;border-right-width:0;border-top-width:1px;cursor:pointer;display:block;position:relative}.autocomplete__option[_ngcontent-%COMP%] > *[_ngcontent-%COMP%]{pointer-events:none}.autocomplete__option[_ngcontent-%COMP%]:first-of-type{border-top-width:0}.autocomplete__option[_ngcontent-%COMP%]:last-of-type{border-bottom-width:0}.autocomplete__option--odd[_ngcontent-%COMP%]{background-color:#fafafa}.autocomplete__option--focused[_ngcontent-%COMP%], .autocomplete__option[_ngcontent-%COMP%]:hover{background-color:#1d70b8;border-color:#1d70b8;color:#fff;outline:0}.autocomplete__option--no-results[_ngcontent-%COMP%]{background-color:#fafafa;color:#646b6f;cursor:not-allowed}.autocomplete__hint[_ngcontent-%COMP%], .autocomplete__input[_ngcontent-%COMP%], .autocomplete__option[_ngcontent-%COMP%]{font-size:13px;line-height:1.25}.autocomplete__hint[_ngcontent-%COMP%], .autocomplete__option[_ngcontent-%COMP%]{padding:5px}@media (min-width:641px){.autocomplete__hint[_ngcontent-%COMP%], .autocomplete__input[_ngcontent-%COMP%], .autocomplete__option[_ngcontent-%COMP%]{font-size:13px;line-height:1.31579}}.div-action[_ngcontent-%COMP%]{display:inline-block}.add-location[_ngcontent-%COMP%]{display:inline}.remove-location-button[_ngcontent-%COMP%]{margin:5px}.hide-autocomplete[_ngcontent-%COMP%]{display:none}.auto-complete-container[_ngcontent-%COMP%]{min-width:550px;display:inline-block;margin-right:4px}.autocomplete__input[_ngcontent-%COMP%]{line-height:24px;font-size:19px}.hidden[_ngcontent-%COMP%]{display:none}.search-language__input[_ngcontent-%COMP%]{position:relative;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 36 36' width='40' height='40'%3E%3Cpath d='M25.7 24.8L21.9 21c.7-1 1.1-2.2 1.1-3.5 0-3.6-2.9-6.5-6.5-6.5S10 13.9 10 17.5s2.9 6.5 6.5 6.5c1.6 0 3-.6 4.1-1.5l3.7 3.7 1.4-1.4zM12 17.5c0-2.5 2-4.5 4.5-4.5s4.5 2 4.5 4.5-2 4.5-4.5 4.5-4.5-2-4.5-4.5z' fill='%23505a5f'%3E%3C/path%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:center left -2px;background-size:40px 40px;padding-left:35px}"] });
23172
23411
  (function () {
23173
23412
  (typeof ngDevMode === "undefined" || ngDevMode) && i0__namespace.ɵsetClassMetadata(SearchLanguageInterpreterComponent, [{
23174
23413
  type: i0.Component,
@@ -24906,7 +25145,7 @@
24906
25145
  };
24907
25146
  return DatetimePickerComponent;
24908
25147
  }(AbstractFormFieldComponent));
24909
- DatetimePickerComponent.ɵfac = function DatetimePickerComponent_Factory(t) { return new (t || DatetimePickerComponent)(i0__namespace.ɵɵdirectiveInject(FormatTranslatorService), i0__namespace.ɵɵdirectiveInject(i4$1.NGX_MAT_DATE_FORMATS)); };
25148
+ DatetimePickerComponent.ɵfac = function DatetimePickerComponent_Factory(t) { return new (t || DatetimePickerComponent)(i0__namespace.ɵɵdirectiveInject(FormatTranslatorService), i0__namespace.ɵɵdirectiveInject(i4.NGX_MAT_DATE_FORMATS)); };
24910
25149
  DatetimePickerComponent.ɵcmp = i0__namespace.ɵɵdefineComponent({ type: DatetimePickerComponent, selectors: [["ccd-datetime-picker"]], viewQuery: function DatetimePickerComponent_Query(rf, ctx) {
24911
25150
  if (rf & 1) {
24912
25151
  i0__namespace.ɵɵviewQuery(_c0$i, 1);
@@ -24918,10 +25157,10 @@
24918
25157
  i0__namespace.ɵɵqueryRefresh(_t = i0__namespace.ɵɵloadQuery()) && (ctx.inputElement = _t.first);
24919
25158
  }
24920
25159
  }, inputs: { dateControl: "dateControl" }, features: [i0__namespace.ɵɵProvidersFeature([
24921
- { provide: i4$1.NGX_MAT_DATE_FORMATS, useValue: CUSTOM_MOMENT_FORMATS },
24922
- { provide: i4$1.NgxMatDateAdapter,
25160
+ { provide: i4.NGX_MAT_DATE_FORMATS, useValue: CUSTOM_MOMENT_FORMATS },
25161
+ { provide: i4.NgxMatDateAdapter,
24923
25162
  useClass: momentAdapter.NgxMatMomentAdapter,
24924
- deps: [i5.MAT_DATE_LOCALE, momentAdapter.NGX_MAT_MOMENT_DATE_ADAPTER_OPTIONS]
25163
+ deps: [i6.MAT_DATE_LOCALE, momentAdapter.NGX_MAT_MOMENT_DATE_ADAPTER_OPTIONS]
24925
25164
  },
24926
25165
  { provide: momentAdapter.NGX_MAT_MOMENT_DATE_ADAPTER_OPTIONS, useValue: { useUtc: true } }
24927
25166
  ]), i0__namespace.ɵɵInheritDefinitionFeature], decls: 14, vars: 26, consts: [[1, "govuk-form-group", "bottom-30", 3, "id", "ngClass"], ["class", "form-label", 4, "ngIf"], ["class", "form-hint", 4, "ngIf"], ["class", "error-message", 4, "ngIf"], [1, "datepicker-container"], ["ng-model-options", "{timezone:'utc'}", 1, "govuk-input", 3, "min", "max", "formControl", "ngxMatDatetimePicker", "focusin", "focusout", "dateChange"], ["input", ""], ["matSuffix", "", "id", "pickerOpener", 3, "for"], [3, "color", "touchUi", "hideTime", "startView", "stepHour", "stepSecond", "stepMinute", "showSeconds", "showSpinners", "disableMinute", "enableMeridian", "yearSelected", "monthSelected", "opened"], ["picker", ""], [1, "form-label"], [1, "form-hint"], [1, "error-message"]], template: function DatetimePickerComponent_Template(rf, ctx) {
@@ -24968,7 +25207,7 @@
24968
25207
  i0__namespace.ɵɵadvance(1);
24969
25208
  i0__namespace.ɵɵproperty("color", ctx.color)("touchUi", ctx.touchUi)("hideTime", ctx.hideTime)("startView", ctx.startView)("stepHour", ctx.stepHour)("stepSecond", ctx.stepSecond)("stepMinute", ctx.stepMinute)("showSeconds", ctx.showSeconds)("showSpinners", ctx.showSpinners)("disableMinute", ctx.disableMinute)("enableMeridian", ctx.enableMeridian);
24970
25209
  }
24971
- }, directives: [i2__namespace.NgClass, i2__namespace.NgIf, i2__namespace$1.DefaultValueAccessor, i4__namespace$1.NgxMatDatetimeInput, i2__namespace$1.NgControlStatus, i2__namespace$1.FormControlDirective, i5__namespace$1.MatDatepickerToggle, i6__namespace.MatSuffix, i4__namespace$1.NgxMatDatetimePicker], pipes: [i1__namespace.RpxTranslatePipe, FieldLabelPipe, FirstErrorPipe], styles: ["@charset \"UTF-8\";.datepicker-container{display:inline-block;position:relative;min-width:298px}.datepicker-container .govuk-input{height:35px;min-width:298px;width:auto;padding-right:40px;border:1px solid #000}.datepicker-container .govuk-input:focus{outline:1px solid #fd0;border:1px solid #000}.datepicker-container .govuk-input::-ms-clear{display:none}.datepicker-container .datepicker-wrapper-input{position:relative;display:inline-block;top:-20%;border:0}.datepicker-container .datepicker-wrapper-input:focus{border:0;outline:none}.datepicker-container .mat-icon-button{height:32px;width:32px}.datepicker-container .mat-icon-button:focus{outline:1px solid #fd0}.datepicker-container .mat-icon-button .mat-datepicker-toggle-default-icon{position:relative;top:-5px}.datepicker-container .mat-datepicker-toggle{position:absolute;right:0}.cdk-overlay-container .mat-datepicker-content{border:1px solid #000;border-radius:0;max-width:295px}.cdk-overlay-container .mat-datepicker-content .mat-calendar-table{width:calc(100% - 1px);table-layout:fixed}.cdk-overlay-container .mat-datepicker-content .mat-calendar-header{height:34px;border-bottom:1px ridge #bfc1c3}.cdk-overlay-container .mat-datepicker-content .mat-calendar-period-button{left:14%;min-width:125px;border-right:1px ridge #bfc1c3;border-left:1px ridge #bfc1c3;border-radius:0;top:-20px;width:200%}.cdk-overlay-container .mat-datepicker-content .mat-calendar-period-button .mat-button-wrapper{text-align:center;font-weight:700}.cdk-overlay-container .mat-datepicker-content .mat-calendar-period-button:focus{border:2px solid #000}.cdk-overlay-container .mat-datepicker-content .mat-calendar-previous-button{left:-73%;top:-20px;border:2px solid transparent;border-radius:0}.cdk-overlay-container .mat-datepicker-content .mat-calendar-previous-button:focus{border-color:#000}.cdk-overlay-container .mat-datepicker-content .mat-calendar-previous-button:after{border-left-width:5px;border-top-width:5px;color:#000;padding:4px;top:-2px;left:-2px}.cdk-overlay-container .mat-datepicker-content .mat-calendar-next-button{top:-20px;left:1%;border:2px solid transparent;border-radius:0}.cdk-overlay-container .mat-datepicker-content .mat-calendar-next-button:focus{border-color:#000}.cdk-overlay-container .mat-datepicker-content .mat-calendar-next-button:after{border-right-width:5px;border-top-width:5px;color:#000;padding:4px;top:-2px;left:-2px}.cdk-overlay-container .mat-datepicker-content .mat-button-wrapper{text-transform:capitalize!important}.cdk-overlay-container .mat-datepicker-content .mat-calendar{border-bottom:1px solid #000}.cdk-overlay-container .mat-datepicker-content .mat-calendar-table-header-divider{padding:0;border-bottom:none}.cdk-overlay-container .mat-datepicker-content .mat-calendar-table-header-divider:after{height:0}.cdk-overlay-container .mat-datepicker-content .mat-calendar-content{padding:0}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header{color:#000}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header th.ng-star-inserted{font-weight:700;font-size:15px;padding-top:2%;padding-bottom:2%;-moz-column-width:20px;column-width:20px}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:first-of-type th{visibility:hidden}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:first-of-type th:after{visibility:visible;color:#000;position:relative;left:-15px}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:first-of-type th:first-of-type:after{content:\"MON\"}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:first-of-type th:nth-of-type(2):after{left:-12px;content:\"TUE\"}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:first-of-type th:nth-of-type(3):after{left:-18px;content:\"WED\"}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:first-of-type th:nth-of-type(4):after{left:-14px;content:\"THU\"}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:first-of-type th:nth-of-type(5):after{left:-10px;content:\"FRI\"}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:first-of-type th:nth-of-type(6):after{content:\"SAT\"}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:first-of-type th:nth-of-type(7):after{content:\"SUN\"}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-body-label{font-weight:700;font-size:large;color:#000}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-body-selected{border:none;background-color:transparent;color:#fff}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-body-active{background-color:#5694ca}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-body-today{border:none;box-shadow:none}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-body-cell{border:1px ridge #bfc1c3}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-body-cell[aria-selected=true]{background-color:#1d70b8;outline:3px solid #fd0;border:2px solid #000;outline-offset:1px;z-index:1}.cdk-overlay-container .mat-datepicker-content ngx-mat-multi-year-view .mat-calendar-table{border-collapse:separate;border-spacing:10px}.cdk-overlay-container .mat-datepicker-content ngx-mat-multi-year-view .mat-calendar-table .mat-calendar-body-active{background-color:#5694ca}.cdk-overlay-container .mat-datepicker-content ngx-mat-multi-year-view .mat-calendar-table .mat-calendar-body-cell{border:1px solid #bfc1c3}.cdk-overlay-container .mat-datepicker-content ngx-mat-multi-year-view .mat-calendar-table .mat-calendar-body-cell .mat-calendar-body-cell-content{border:none}.cdk-overlay-container .mat-datepicker-content ngx-mat-multi-year-view .mat-calendar-table .mat-calendar-body-cell .mat-calendar-body-selected{border:none;box-shadow:none;background-color:transparent}.cdk-overlay-container .mat-datepicker-content ngx-mat-multi-year-view .mat-calendar-table .mat-calendar-body-cell[aria-selected=true]{background-color:#1d70b8;outline:2px solid #fd0}.cdk-overlay-container .mat-datepicker-content ngx-mat-year-view .mat-calendar-table{border-collapse:separate;border-spacing:20px}.cdk-overlay-container .mat-datepicker-content ngx-mat-year-view .mat-calendar-table tr:first-of-type{visibility:collapse}.cdk-overlay-container .mat-datepicker-content ngx-mat-year-view .mat-calendar-table .mat-calendar-body-active{background-color:#5694ca}.cdk-overlay-container .mat-datepicker-content ngx-mat-year-view .mat-calendar-table .mat-calendar-body-cell{border:1px solid #bfc1c3}.cdk-overlay-container .mat-datepicker-content ngx-mat-year-view .mat-calendar-table .mat-calendar-body-cell .mat-calendar-body-cell-content{border:none}.cdk-overlay-container .mat-datepicker-content ngx-mat-year-view .mat-calendar-table .mat-calendar-body-cell .mat-calendar-body-selected{border:none;box-shadow:none;background-color:transparent}.cdk-overlay-container .mat-datepicker-content ngx-mat-year-view .mat-calendar-table .mat-calendar-body-cell[aria-selected=true]{background-color:#1d70b8;outline:3px solid #fd0;border:2px solid #000;outline-offset:1px}.cdk-overlay-container .mat-datepicker-content .time-container{height:80px;padding-top:0}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker{width:100%}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table{margin-left:0!important}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tbody{position:relative}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .mat-icon-button .mat-button-wrapper{width:auto;height:auto}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .mat-icon-button:focus{outline:none}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:first-child{position:absolute;left:49px;top:15px;z-index:2}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:first-child button:disabled{display:none}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:first-child td:first-child [aria-label=\"expand_less icon\"]{position:absolute;left:-2px;top:25px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:first-child td:nth-child(3) [aria-label=\"expand_less icon\"].mat-icon-button{position:absolute;left:82px!important;top:25px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:first-child td:nth-child(5) [aria-label=\"expand_less icon\"].mat-icon-button{position:absolute;left:169px!important;top:25px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:first-child td:last-child [aria-label=\"expand_less icon\"].mat-icon-button{left:153px!important}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:first-child td:nth-last-child(2) [aria-label=\"expand_less icon\"].mat-icon-button{left:65px!important}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2){display:flex;padding:20px 0 20px 15px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) td{margin-right:30px;text-align:right}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) td:first-child .mat-form-field{width:50px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) td:first-child .mat-form-field:before{color:#000;content:\"Hours\";position:relative;top:-5px;left:-5px;font-size:15px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) td:nth-child(3) .mat-form-field:before{color:#000;content:\"Minutes\";position:relative;top:-5px;font-size:15px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) td:last-child{text-align:left;left:-15px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) .mat-form-field-disabled{display:none}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) td:nth-of-type(5) .mat-form-field:before{color:#000;content:\"Seconds\";position:relative;top:-5px;font-size:15px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) .meridian{border-bottom:none}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) .meridian .mat-button{height:30px;top:21px;border-radius:0;color:#000;border-color:#000;background-color:#dee0e2;display:flex;justify-content:center}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) .meridian .mat-button .mat-button-wrapper{position:relative;top:-2px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(4){display:flex;padding:2rem 0 2rem 15px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(4) td{margin-right:30px;text-align:right}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(4) td:last-child{text-align:left}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:last-child{position:absolute;left:49px;top:40px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:last-child button:disabled{display:none}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:last-child td:first-child [aria-label=\"expand_more icon\"]{position:absolute;top:15px;left:-2px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:last-child td:nth-child(3) [aria-label=\"expand_more icon\"].mat-icon-button{position:absolute;left:82px!important;top:15px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:last-child td:nth-child(5) [aria-label=\"expand_more icon\"].mat-icon-button{position:absolute;top:15px;left:169px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:last-child td:last-child [aria-label=\"expand_more icon\"].mat-icon-button{left:65px!important}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:last-child td:last-child.ng-star-inserted [aria-label=\"expand_more icon\"].mat-icon-button{left:153px!important}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr td{padding:0;border-bottom:0;position:relative}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .spacer{display:none}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .mat-icon{visibility:hidden;display:none}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .mat-button-wrapper{display:block;width:15px;height:8px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .mat-form-field-wrapper{padding-bottom:0}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .mat-form-field{width:auto;max-width:none}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr [aria-label=\"expand_less icon\"].mat-icon-button .mat-button-wrapper:after{content:\" \u25B2\"}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr [aria-label=\"expand_more icon\"].mat-icon-button .mat-button-wrapper:after{content:\"\u25BC\"}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .mat-form-field-flex{width:100%}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .mat-form-field-flex .mat-form-field-infix{border:1px solid #000;height:20px;width:37px;display:flex;justify-content:center;align-items:center}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .mat-form-field-underline{visibility:hidden}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr input{height:33px;width:37px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr input:focus{border-color:#000}.cdk-overlay-container .mat-datepicker-content .actions{padding-bottom:20px;margin-top:20px;justify-content:flex-start}.cdk-overlay-container .mat-datepicker-content .actions .mat-button{background-color:#00823b;position:relative;display:-moz-inline-stack;display:inline-block;padding:.526315em .789473em .263157em;border:none;border-radius:0;outline:1px solid transparent;outline-offset:-1px;-webkit-appearance:none;box-shadow:0 2px 0 #003618;font-size:1em;line-height:1.25;text-decoration:none;-webkit-font-smoothing:antialiased;color:#fff;box-sizing:border-box;vertical-align:top;width:80px;cursor:pointer}.cdk-overlay-container .mat-datepicker-content .actions .mat-button:focus{outline:2px solid #fd0}.cdk-overlay-container .mat-datepicker-content .actions .mat-button:hover{background-color:#006400}.cdk-overlay-container .mat-datepicker-content .actions .mat-button .mat-icon{visibility:hidden}.cdk-overlay-container .mat-datepicker-content .actions .mat-button .mat-button-wrapper:before{color:#fff;content:\"Confirm\";position:relative;font-size:15px;left:-3px}"], encapsulation: 2 });
25210
+ }, directives: [i2__namespace.NgClass, i2__namespace.NgIf, i2__namespace$1.DefaultValueAccessor, i4__namespace.NgxMatDatetimeInput, i2__namespace$1.NgControlStatus, i2__namespace$1.FormControlDirective, i5__namespace$1.MatDatepickerToggle, i6__namespace$1.MatSuffix, i4__namespace.NgxMatDatetimePicker], pipes: [i1__namespace.RpxTranslatePipe, FieldLabelPipe, FirstErrorPipe], styles: ["@charset \"UTF-8\";.datepicker-container{display:inline-block;position:relative;min-width:298px}.datepicker-container .govuk-input{height:35px;min-width:298px;width:auto;padding-right:40px;border:1px solid #000}.datepicker-container .govuk-input:focus{outline:1px solid #fd0;border:1px solid #000}.datepicker-container .govuk-input::-ms-clear{display:none}.datepicker-container .datepicker-wrapper-input{position:relative;display:inline-block;top:-20%;border:0}.datepicker-container .datepicker-wrapper-input:focus{border:0;outline:none}.datepicker-container .mat-icon-button{height:32px;width:32px}.datepicker-container .mat-icon-button:focus{outline:1px solid #fd0}.datepicker-container .mat-icon-button .mat-datepicker-toggle-default-icon{position:relative;top:-5px}.datepicker-container .mat-datepicker-toggle{position:absolute;right:0}.cdk-overlay-container .mat-datepicker-content{border:1px solid #000;border-radius:0;max-width:295px}.cdk-overlay-container .mat-datepicker-content .mat-calendar-table{width:calc(100% - 1px);table-layout:fixed}.cdk-overlay-container .mat-datepicker-content .mat-calendar-header{height:34px;border-bottom:1px ridge #bfc1c3}.cdk-overlay-container .mat-datepicker-content .mat-calendar-period-button{left:14%;min-width:125px;border-right:1px ridge #bfc1c3;border-left:1px ridge #bfc1c3;border-radius:0;top:-20px;width:200%}.cdk-overlay-container .mat-datepicker-content .mat-calendar-period-button .mat-button-wrapper{text-align:center;font-weight:700}.cdk-overlay-container .mat-datepicker-content .mat-calendar-period-button:focus{border:2px solid #000}.cdk-overlay-container .mat-datepicker-content .mat-calendar-previous-button{left:-73%;top:-20px;border:2px solid transparent;border-radius:0}.cdk-overlay-container .mat-datepicker-content .mat-calendar-previous-button:focus{border-color:#000}.cdk-overlay-container .mat-datepicker-content .mat-calendar-previous-button:after{border-left-width:5px;border-top-width:5px;color:#000;padding:4px;top:-2px;left:-2px}.cdk-overlay-container .mat-datepicker-content .mat-calendar-next-button{top:-20px;left:1%;border:2px solid transparent;border-radius:0}.cdk-overlay-container .mat-datepicker-content .mat-calendar-next-button:focus{border-color:#000}.cdk-overlay-container .mat-datepicker-content .mat-calendar-next-button:after{border-right-width:5px;border-top-width:5px;color:#000;padding:4px;top:-2px;left:-2px}.cdk-overlay-container .mat-datepicker-content .mat-button-wrapper{text-transform:capitalize!important}.cdk-overlay-container .mat-datepicker-content .mat-calendar{border-bottom:1px solid #000}.cdk-overlay-container .mat-datepicker-content .mat-calendar-table-header-divider{padding:0;border-bottom:none}.cdk-overlay-container .mat-datepicker-content .mat-calendar-table-header-divider:after{height:0}.cdk-overlay-container .mat-datepicker-content .mat-calendar-content{padding:0}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header{color:#000}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header th.ng-star-inserted{font-weight:700;font-size:15px;padding-top:2%;padding-bottom:2%;-moz-column-width:20px;column-width:20px}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:first-of-type th{visibility:hidden}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:first-of-type th:after{visibility:visible;color:#000;position:relative;left:-15px}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:first-of-type th:first-of-type:after{content:\"MON\"}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:first-of-type th:nth-of-type(2):after{left:-12px;content:\"TUE\"}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:first-of-type th:nth-of-type(3):after{left:-18px;content:\"WED\"}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:first-of-type th:nth-of-type(4):after{left:-14px;content:\"THU\"}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:first-of-type th:nth-of-type(5):after{left:-10px;content:\"FRI\"}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:first-of-type th:nth-of-type(6):after{content:\"SAT\"}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:first-of-type th:nth-of-type(7):after{content:\"SUN\"}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-body-label{font-weight:700;font-size:large;color:#000}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-body-selected{border:none;background-color:transparent;color:#fff}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-body-active{background-color:#5694ca}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-body-today{border:none;box-shadow:none}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-body-cell{border:1px ridge #bfc1c3}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-body-cell[aria-selected=true]{background-color:#1d70b8;outline:3px solid #fd0;border:2px solid #000;outline-offset:1px;z-index:1}.cdk-overlay-container .mat-datepicker-content ngx-mat-multi-year-view .mat-calendar-table{border-collapse:separate;border-spacing:10px}.cdk-overlay-container .mat-datepicker-content ngx-mat-multi-year-view .mat-calendar-table .mat-calendar-body-active{background-color:#5694ca}.cdk-overlay-container .mat-datepicker-content ngx-mat-multi-year-view .mat-calendar-table .mat-calendar-body-cell{border:1px solid #bfc1c3}.cdk-overlay-container .mat-datepicker-content ngx-mat-multi-year-view .mat-calendar-table .mat-calendar-body-cell .mat-calendar-body-cell-content{border:none}.cdk-overlay-container .mat-datepicker-content ngx-mat-multi-year-view .mat-calendar-table .mat-calendar-body-cell .mat-calendar-body-selected{border:none;box-shadow:none;background-color:transparent}.cdk-overlay-container .mat-datepicker-content ngx-mat-multi-year-view .mat-calendar-table .mat-calendar-body-cell[aria-selected=true]{background-color:#1d70b8;outline:2px solid #fd0}.cdk-overlay-container .mat-datepicker-content ngx-mat-year-view .mat-calendar-table{border-collapse:separate;border-spacing:20px}.cdk-overlay-container .mat-datepicker-content ngx-mat-year-view .mat-calendar-table tr:first-of-type{visibility:collapse}.cdk-overlay-container .mat-datepicker-content ngx-mat-year-view .mat-calendar-table .mat-calendar-body-active{background-color:#5694ca}.cdk-overlay-container .mat-datepicker-content ngx-mat-year-view .mat-calendar-table .mat-calendar-body-cell{border:1px solid #bfc1c3}.cdk-overlay-container .mat-datepicker-content ngx-mat-year-view .mat-calendar-table .mat-calendar-body-cell .mat-calendar-body-cell-content{border:none}.cdk-overlay-container .mat-datepicker-content ngx-mat-year-view .mat-calendar-table .mat-calendar-body-cell .mat-calendar-body-selected{border:none;box-shadow:none;background-color:transparent}.cdk-overlay-container .mat-datepicker-content ngx-mat-year-view .mat-calendar-table .mat-calendar-body-cell[aria-selected=true]{background-color:#1d70b8;outline:3px solid #fd0;border:2px solid #000;outline-offset:1px}.cdk-overlay-container .mat-datepicker-content .time-container{height:80px;padding-top:0}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker{width:100%}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table{margin-left:0!important}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tbody{position:relative}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .mat-icon-button .mat-button-wrapper{width:auto;height:auto}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .mat-icon-button:focus{outline:none}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:first-child{position:absolute;left:49px;top:15px;z-index:2}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:first-child button:disabled{display:none}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:first-child td:first-child [aria-label=\"expand_less icon\"]{position:absolute;left:-2px;top:25px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:first-child td:nth-child(3) [aria-label=\"expand_less icon\"].mat-icon-button{position:absolute;left:82px!important;top:25px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:first-child td:nth-child(5) [aria-label=\"expand_less icon\"].mat-icon-button{position:absolute;left:169px!important;top:25px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:first-child td:last-child [aria-label=\"expand_less icon\"].mat-icon-button{left:153px!important}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:first-child td:nth-last-child(2) [aria-label=\"expand_less icon\"].mat-icon-button{left:65px!important}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2){display:flex;padding:20px 0 20px 15px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) td{margin-right:30px;text-align:right}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) td:first-child .mat-form-field{width:50px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) td:first-child .mat-form-field:before{color:#000;content:\"Hours\";position:relative;top:-5px;left:-5px;font-size:15px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) td:nth-child(3) .mat-form-field:before{color:#000;content:\"Minutes\";position:relative;top:-5px;font-size:15px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) td:last-child{text-align:left;left:-15px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) .mat-form-field-disabled{display:none}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) td:nth-of-type(5) .mat-form-field:before{color:#000;content:\"Seconds\";position:relative;top:-5px;font-size:15px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) .meridian{border-bottom:none}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) .meridian .mat-button{height:30px;top:21px;border-radius:0;color:#000;border-color:#000;background-color:#dee0e2;display:flex;justify-content:center}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) .meridian .mat-button .mat-button-wrapper{position:relative;top:-2px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(4){display:flex;padding:2rem 0 2rem 15px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(4) td{margin-right:30px;text-align:right}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(4) td:last-child{text-align:left}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:last-child{position:absolute;left:49px;top:40px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:last-child button:disabled{display:none}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:last-child td:first-child [aria-label=\"expand_more icon\"]{position:absolute;top:15px;left:-2px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:last-child td:nth-child(3) [aria-label=\"expand_more icon\"].mat-icon-button{position:absolute;left:82px!important;top:15px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:last-child td:nth-child(5) [aria-label=\"expand_more icon\"].mat-icon-button{position:absolute;top:15px;left:169px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:last-child td:last-child [aria-label=\"expand_more icon\"].mat-icon-button{left:65px!important}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:last-child td:last-child.ng-star-inserted [aria-label=\"expand_more icon\"].mat-icon-button{left:153px!important}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr td{padding:0;border-bottom:0;position:relative}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .spacer{display:none}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .mat-icon{visibility:hidden;display:none}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .mat-button-wrapper{display:block;width:15px;height:8px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .mat-form-field-wrapper{padding-bottom:0}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .mat-form-field{width:auto;max-width:none}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr [aria-label=\"expand_less icon\"].mat-icon-button .mat-button-wrapper:after{content:\" \u25B2\"}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr [aria-label=\"expand_more icon\"].mat-icon-button .mat-button-wrapper:after{content:\"\u25BC\"}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .mat-form-field-flex{width:100%}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .mat-form-field-flex .mat-form-field-infix{border:1px solid #000;height:20px;width:37px;display:flex;justify-content:center;align-items:center}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .mat-form-field-underline{visibility:hidden}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr input{height:33px;width:37px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr input:focus{border-color:#000}.cdk-overlay-container .mat-datepicker-content .actions{padding-bottom:20px;margin-top:20px;justify-content:flex-start}.cdk-overlay-container .mat-datepicker-content .actions .mat-button{background-color:#00823b;position:relative;display:-moz-inline-stack;display:inline-block;padding:.526315em .789473em .263157em;border:none;border-radius:0;outline:1px solid transparent;outline-offset:-1px;-webkit-appearance:none;box-shadow:0 2px 0 #003618;font-size:1em;line-height:1.25;text-decoration:none;-webkit-font-smoothing:antialiased;color:#fff;box-sizing:border-box;vertical-align:top;width:80px;cursor:pointer}.cdk-overlay-container .mat-datepicker-content .actions .mat-button:focus{outline:2px solid #fd0}.cdk-overlay-container .mat-datepicker-content .actions .mat-button:hover{background-color:#006400}.cdk-overlay-container .mat-datepicker-content .actions .mat-button .mat-icon{visibility:hidden}.cdk-overlay-container .mat-datepicker-content .actions .mat-button .mat-button-wrapper:before{color:#fff;content:\"Confirm\";position:relative;font-size:15px;left:-3px}"], encapsulation: 2 });
24972
25211
  (function () {
24973
25212
  (typeof ngDevMode === "undefined" || ngDevMode) && i0__namespace.ɵsetClassMetadata(DatetimePickerComponent, [{
24974
25213
  type: i0.Component,
@@ -24978,10 +25217,10 @@
24978
25217
  styleUrls: ['./datetime-picker.component.scss'],
24979
25218
  encapsulation: i0.ViewEncapsulation.None,
24980
25219
  providers: [
24981
- { provide: i4$1.NGX_MAT_DATE_FORMATS, useValue: CUSTOM_MOMENT_FORMATS },
24982
- { provide: i4$1.NgxMatDateAdapter,
25220
+ { provide: i4.NGX_MAT_DATE_FORMATS, useValue: CUSTOM_MOMENT_FORMATS },
25221
+ { provide: i4.NgxMatDateAdapter,
24983
25222
  useClass: momentAdapter.NgxMatMomentAdapter,
24984
- deps: [i5.MAT_DATE_LOCALE, momentAdapter.NGX_MAT_MOMENT_DATE_ADAPTER_OPTIONS]
25223
+ deps: [i6.MAT_DATE_LOCALE, momentAdapter.NGX_MAT_MOMENT_DATE_ADAPTER_OPTIONS]
24985
25224
  },
24986
25225
  { provide: momentAdapter.NGX_MAT_MOMENT_DATE_ADAPTER_OPTIONS, useValue: { useUtc: true } }
24987
25226
  ]
@@ -24989,7 +25228,7 @@
24989
25228
  }], function () {
24990
25229
  return [{ type: FormatTranslatorService }, { type: undefined, decorators: [{
24991
25230
  type: i0.Inject,
24992
- args: [i4$1.NGX_MAT_DATE_FORMATS]
25231
+ args: [i4.NGX_MAT_DATE_FORMATS]
24993
25232
  }] }];
24994
25233
  }, { datetimePicker: [{
24995
25234
  type: i0.ViewChild,
@@ -26644,7 +26883,7 @@
26644
26883
  CommonDataService,
26645
26884
  JurisdictionService,
26646
26885
  LinkedCasesService,
26647
- { provide: i5.MAT_DATE_LOCALE, useValue: 'en-GB' }
26886
+ { provide: i6.MAT_DATE_LOCALE, useValue: 'en-GB' }
26648
26887
  ], imports: [[
26649
26888
  i2.CommonModule,
26650
26889
  i1$1.RouterModule,
@@ -26661,13 +26900,13 @@
26661
26900
  TabsModule,
26662
26901
  LabelSubstitutorModule,
26663
26902
  i1$4.NgxMdModule,
26664
- i4$1.NgxMatDatetimePickerModule,
26665
- i4$1.NgxMatTimepickerModule,
26666
- i4$1.NgxMatNativeDateModule,
26667
- i6.MatFormFieldModule,
26903
+ i4.NgxMatDatetimePickerModule,
26904
+ i4.NgxMatTimepickerModule,
26905
+ i4.NgxMatNativeDateModule,
26906
+ i6$1.MatFormFieldModule,
26668
26907
  i3$1.MatInputModule,
26669
26908
  i5$1.MatDatepickerModule,
26670
- i4.MatAutocompleteModule,
26909
+ i5.MatAutocompleteModule,
26671
26910
  i7.CdkTreeModule,
26672
26911
  i1$5.OverlayModule,
26673
26912
  i3.PaymentLibModule,
@@ -26678,9 +26917,9 @@
26678
26917
  i1$3.MatDialogModule,
26679
26918
  i12.MediaViewerModule,
26680
26919
  LoadingModule
26681
- ], i4$1.NgxMatDatetimePickerModule,
26682
- i4$1.NgxMatNativeDateModule,
26683
- i4$1.NgxMatTimepickerModule,
26920
+ ], i4.NgxMatDatetimePickerModule,
26921
+ i4.NgxMatNativeDateModule,
26922
+ i4.NgxMatTimepickerModule,
26684
26923
  TabsModule,
26685
26924
  PaletteUtilsModule,
26686
26925
  PipesModule] });
@@ -26809,22 +27048,22 @@
26809
27048
  TabsModule,
26810
27049
  LabelSubstitutorModule,
26811
27050
  i1$4.NgxMdModule,
26812
- i4$1.NgxMatDatetimePickerModule,
26813
- i4$1.NgxMatTimepickerModule,
26814
- i4$1.NgxMatNativeDateModule,
26815
- i6.MatFormFieldModule,
27051
+ i4.NgxMatDatetimePickerModule,
27052
+ i4.NgxMatTimepickerModule,
27053
+ i4.NgxMatNativeDateModule,
27054
+ i6$1.MatFormFieldModule,
26816
27055
  i3$1.MatInputModule,
26817
27056
  i5$1.MatDatepickerModule,
26818
- i4.MatAutocompleteModule,
27057
+ i5.MatAutocompleteModule,
26819
27058
  i7.CdkTreeModule,
26820
27059
  i1$5.OverlayModule,
26821
27060
  i3.PaymentLibModule, i2__namespace$2.ScrollToModule, i1__namespace.RpxTranslationModule, i7.CdkTreeModule,
26822
27061
  i1$5.OverlayModule,
26823
27062
  i1$3.MatDialogModule,
26824
27063
  i12.MediaViewerModule,
26825
- LoadingModule], exports: [i4$1.NgxMatDatetimePickerModule,
26826
- i4$1.NgxMatNativeDateModule,
26827
- i4$1.NgxMatTimepickerModule,
27064
+ LoadingModule], exports: [i4.NgxMatDatetimePickerModule,
27065
+ i4.NgxMatNativeDateModule,
27066
+ i4.NgxMatTimepickerModule,
26828
27067
  TabsModule,
26829
27068
  PaletteUtilsModule,
26830
27069
  PipesModule, UnsupportedFieldComponent,
@@ -26954,13 +27193,13 @@
26954
27193
  TabsModule,
26955
27194
  LabelSubstitutorModule,
26956
27195
  i1$4.NgxMdModule,
26957
- i4$1.NgxMatDatetimePickerModule,
26958
- i4$1.NgxMatTimepickerModule,
26959
- i4$1.NgxMatNativeDateModule,
26960
- i6.MatFormFieldModule,
27196
+ i4.NgxMatDatetimePickerModule,
27197
+ i4.NgxMatTimepickerModule,
27198
+ i4.NgxMatNativeDateModule,
27199
+ i6$1.MatFormFieldModule,
26961
27200
  i3$1.MatInputModule,
26962
27201
  i5$1.MatDatepickerModule,
26963
- i4.MatAutocompleteModule,
27202
+ i5.MatAutocompleteModule,
26964
27203
  i7.CdkTreeModule,
26965
27204
  i1$5.OverlayModule,
26966
27205
  i3.PaymentLibModule,
@@ -26980,9 +27219,9 @@
26980
27219
  DocumentUrlPipe
26981
27220
  ], PALETTE_COMPONENTS),
26982
27221
  exports: __spread([
26983
- i4$1.NgxMatDatetimePickerModule,
26984
- i4$1.NgxMatNativeDateModule,
26985
- i4$1.NgxMatTimepickerModule,
27222
+ i4.NgxMatDatetimePickerModule,
27223
+ i4.NgxMatNativeDateModule,
27224
+ i4.NgxMatTimepickerModule,
26986
27225
  TabsModule,
26987
27226
  PaletteUtilsModule,
26988
27227
  PipesModule
@@ -27000,7 +27239,7 @@
27000
27239
  CommonDataService,
27001
27240
  JurisdictionService,
27002
27241
  LinkedCasesService,
27003
- { provide: i5.MAT_DATE_LOCALE, useValue: 'en-GB' }
27242
+ { provide: i6.MAT_DATE_LOCALE, useValue: 'en-GB' }
27004
27243
  ],
27005
27244
  entryComponents: [CaseFileViewFolderSelectorComponent]
27006
27245
  }]
@@ -28275,10 +28514,10 @@
28275
28514
  // tslint:disable-next-line:switch-default
28276
28515
  switch (portalType) {
28277
28516
  case EventCompletionPortalTypes.TaskCancelled:
28278
- this.selectedComponentPortal = new i6$1.ComponentPortal(CaseEventCompletionTaskCancelledComponent, null, injector);
28517
+ this.selectedComponentPortal = new i6$2.ComponentPortal(CaseEventCompletionTaskCancelledComponent, null, injector);
28279
28518
  break;
28280
28519
  case EventCompletionPortalTypes.TaskReassigned:
28281
- this.selectedComponentPortal = new i6$1.ComponentPortal(CaseEventCompletionTaskReassignedComponent, null, injector);
28520
+ this.selectedComponentPortal = new i6$2.ComponentPortal(CaseEventCompletionTaskReassignedComponent, null, injector);
28282
28521
  break;
28283
28522
  }
28284
28523
  };
@@ -28292,7 +28531,7 @@
28292
28531
  if (rf & 2) {
28293
28532
  i0__namespace.ɵɵproperty("cdkPortalOutlet", ctx.selectedComponentPortal);
28294
28533
  }
28295
- }, directives: [i6__namespace$1.CdkPortalOutlet], encapsulation: 2 });
28534
+ }, directives: [i6__namespace$2.CdkPortalOutlet], encapsulation: 2 });
28296
28535
  (function () {
28297
28536
  (typeof ngDevMode === "undefined" || ngDevMode) && i0__namespace.ɵsetClassMetadata(CaseEventCompletionComponent, [{
28298
28537
  type: i0.Component,
@@ -28352,7 +28591,7 @@
28352
28591
  LabelSubstitutorModule,
28353
28592
  ConditionalShowModule,
28354
28593
  ErrorsModule,
28355
- i6$1.PortalModule,
28594
+ i6$2.PortalModule,
28356
28595
  LoadingSpinnerModule,
28357
28596
  BannersModule,
28358
28597
  i1.RpxTranslationModule.forChild()
@@ -28377,7 +28616,7 @@
28377
28616
  LabelSubstitutorModule,
28378
28617
  ConditionalShowModule,
28379
28618
  ErrorsModule,
28380
- i6$1.PortalModule,
28619
+ i6$2.PortalModule,
28381
28620
  LoadingSpinnerModule,
28382
28621
  BannersModule, i1__namespace.RpxTranslationModule], exports: [CaseEditConfirmComponent,
28383
28622
  CaseEditComponent,
@@ -28402,7 +28641,7 @@
28402
28641
  LabelSubstitutorModule,
28403
28642
  ConditionalShowModule,
28404
28643
  ErrorsModule,
28405
- i6$1.PortalModule,
28644
+ i6$2.PortalModule,
28406
28645
  LoadingSpinnerModule,
28407
28646
  BannersModule,
28408
28647
  i1.RpxTranslationModule.forChild()
@@ -30698,6 +30937,7 @@
30698
30937
  CaseResolver.prototype.resolve = function (route) {
30699
30938
  var cid = route.paramMap.get(CaseResolver.PARAM_CASE_ID);
30700
30939
  if (!cid) {
30940
+ console.info('No case ID available in the route. Will navigate to case list.');
30701
30941
  // when redirected to case view after a case created, and the user has no READ access,
30702
30942
  // the post returns no id
30703
30943
  this.navigateToCaseList();
@@ -30721,8 +30961,10 @@
30721
30961
  };
30722
30962
  CaseResolver.prototype.getAndCacheCaseView = function (cid) {
30723
30963
  var _this = this;
30964
+ console.info('getAndCacheCaseView started.');
30724
30965
  if (this.caseNotifier.cachedCaseView && this.caseNotifier.cachedCaseView.case_id && this.caseNotifier.cachedCaseView.case_id === cid) {
30725
30966
  this.caseNotifier.announceCase(this.caseNotifier.cachedCaseView);
30967
+ console.info('getAndCacheCaseView - Path A.');
30726
30968
  return rxjs.of(this.caseNotifier.cachedCaseView).toPromise();
30727
30969
  }
30728
30970
  else {
@@ -30730,8 +30972,9 @@
30730
30972
  return this.getAndCacheDraft(cid);
30731
30973
  }
30732
30974
  else {
30975
+ console.info('getAndCacheCaseView - Path B.');
30733
30976
  return this.caseNotifier.fetchAndRefresh(cid)
30734
- .pipe(operators.catchError(function (error) { return _this.checkAuthorizationError(error, cid); }))
30977
+ .pipe(operators.catchError(function (error) { return _this.processErrorInCaseFetch(error, cid); }))
30735
30978
  .toPromise();
30736
30979
  }
30737
30980
  }
@@ -30744,9 +30987,11 @@
30744
30987
  _this.caseNotifier.cachedCaseView = classTransformer.plainToClassFromExist(new CaseView(), caseView);
30745
30988
  _this.caseNotifier.announceCase(_this.caseNotifier.cachedCaseView);
30746
30989
  return _this.caseNotifier.cachedCaseView;
30747
- }), operators.catchError(function (error) { return _this.checkAuthorizationError(error, cid); })).toPromise();
30990
+ }), operators.catchError(function (error) { return _this.processErrorInCaseFetch(error, cid); })).toPromise();
30748
30991
  };
30749
- CaseResolver.prototype.checkAuthorizationError = function (error, caseReference) {
30992
+ CaseResolver.prototype.processErrorInCaseFetch = function (error, caseReference) {
30993
+ console.error('!!! processErrorInCaseFetch !!!');
30994
+ console.error(error);
30750
30995
  // TODO Should be logged to remote logging infrastructure
30751
30996
  if (error.status === 400) {
30752
30997
  this.router.navigate(['/search/noresults']);
@@ -30769,6 +31014,7 @@
30769
31014
  };
30770
31015
  // as discussed for EUI-5456, need functionality to go to default page
30771
31016
  CaseResolver.prototype.goToDefaultPage = function () {
31017
+ console.info('Going to default page!');
30772
31018
  var userDetails = JSON.parse(this.sessionStorage.getItem('userDetails'));
30773
31019
  userDetails && userDetails.roles
30774
31020
  && !userDetails.roles.includes('pui-case-manager')
@@ -31038,7 +31284,7 @@
31038
31284
  _this.caseNotifier.announceCase(_this.caseDetails);
31039
31285
  }))
31040
31286
  .toPromise()
31041
- .catch(function (error) { return _this.checkAuthorizationError(error); });
31287
+ .catch(function (error) { return _this.checkErrorGettingCaseView(error); });
31042
31288
  this.navigationSubscription = this.navigationNotifierService.navigation.subscribe(function (navigation) {
31043
31289
  _this.navigationTriggered.emit(navigation);
31044
31290
  });
@@ -31063,8 +31309,9 @@
31063
31309
  return this.draftService
31064
31310
  .getDraft(cid);
31065
31311
  };
31066
- CaseViewComponent.prototype.checkAuthorizationError = function (error) {
31312
+ CaseViewComponent.prototype.checkErrorGettingCaseView = function (error) {
31067
31313
  // TODO Should be logged to remote logging infrastructure
31314
+ console.error('Called checkErrorGettingCaseView.');
31068
31315
  console.error(error);
31069
31316
  if (error.status !== 401 && error.status !== 403) {
31070
31317
  this.alertService.error(error.message);
@@ -32468,7 +32715,9 @@
32468
32715
  this.appendedTabs = [];
32469
32716
  }
32470
32717
  CaseViewerComponent.prototype.ngOnInit = function () {
32718
+ console.info('Loading case details...');
32471
32719
  this.loadCaseDetails();
32720
+ console.info('Loaded case details...');
32472
32721
  };
32473
32722
  CaseViewerComponent.prototype.ngOnDestroy = function () {
32474
32723
  if (this.caseSubscription) {
@@ -32478,6 +32727,7 @@
32478
32727
  CaseViewerComponent.prototype.loadCaseDetails = function () {
32479
32728
  var _this = this;
32480
32729
  if (this.route.snapshot.data.case) {
32730
+ console.info('Setting the case into case viewer component from this.route.snapshot.data.case.');
32481
32731
  this.caseDetails = this.route.snapshot.data.case;
32482
32732
  this.caseDetails.tabs = this.orderService.sort(this.caseDetails.tabs);
32483
32733
  this.caseDetails.tabs = this.suffixDuplicateTabs(this.caseDetails.tabs);
@@ -32485,6 +32735,7 @@
32485
32735
  }
32486
32736
  else {
32487
32737
  this.caseSubscription = this.caseNotifier.caseView.subscribe(function (caseDetails) {
32738
+ console.info('Setting the case into case viewer component as retrieved from XHR request.');
32488
32739
  _this.caseDetails = caseDetails;
32489
32740
  _this.setUserAccessType(_this.caseDetails);
32490
32741
  });
@@ -37462,6 +37713,7 @@
37462
37713
  exports.ReadYesNoFieldComponent = ReadYesNoFieldComponent;
37463
37714
  exports.RemoveDialogComponent = RemoveDialogComponent;
37464
37715
  exports.RequestOptionsBuilder = RequestOptionsBuilder;
37716
+ exports.RetryUtil = RetryUtil;
37465
37717
  exports.RouterHelperService = RouterHelperService;
37466
37718
  exports.SaveOrDiscardDialogComponent = SaveOrDiscardDialogComponent;
37467
37719
  exports.SearchFiltersComponent = SearchFiltersComponent;