@hmcts/ccd-case-ui-toolkit 7.3.36-fix-security-issue → 7.3.36-pofcc-78

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.
package/README.md CHANGED
@@ -1,5 +1,6 @@
1
1
  # ccd-case-ui-toolkit
2
2
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
3
+ [![Build Status](https://travis-ci.org/hmcts/ccd-case-ui-toolkit.svg?branch=master)](https://travis-ci.org/hmcts/ccd-case-ui-toolkit)
3
4
  [![codecov](https://codecov.io/gh/hmcts/ccd-case-ui-toolkit/branch/master/graph/badge.svg)](https://codecov.io/gh/hmcts/ccd-case-ui-toolkit)
4
5
  [![Known Vulnerabilities](https://snyk.io/test/github/hmcts/ccd-case-ui-toolkit/badge.svg)](https://snyk.io/test/github/hmcts/ccd-case-ui-toolkit)
5
6
  [![HitCount](http://hits.dwyl.io/hmcts/ccd-case-ui-toolkit.svg)](#ccd-case-ui-toolkit)
@@ -123,6 +124,7 @@ case-ui-toolkit
123
124
  ├─ .editorconfig - Common IDE configuration
124
125
  ├─ .gitignore - List of files that are ignored while publishing to git repo
125
126
  ├─ .npmignore - List of files that are ignored while publishing to npmjs
127
+ ├─ .travis.yml - Travis CI configuration
126
128
  ├─ LICENSE.md - License details
127
129
  ├─ README.md - README for the library
128
130
  ├─ gulpfile.js - Gulp helper scripts
@@ -179,6 +181,7 @@ As a result once you change library source code it will be automatically re-comp
179
181
 
180
182
  ### Library Release
181
183
 
184
+ Travis build system automatically publish NPM packages including GitHub releases whenever there is a version change in package.json
182
185
 
183
186
  Prerelease version from PR branch should follow the format as `x.y.z-RDM-xxx-prerelease`
184
187
 
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Component, Input, EventEmitter, Output, NgModule, ViewEncapsulation, forwardRef, Pipe, ContentChildren, ViewChildren, DOCUMENT, Injectable, Inject, InjectionToken, Optional, ChangeDetectorRef, Directive, ViewChild, ChangeDetectionStrategy, Injector, ViewContainerRef, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
2
+ import { Component, Input, EventEmitter, Output, NgModule, ViewEncapsulation, forwardRef, Pipe, ContentChildren, ViewChildren, DOCUMENT, Injectable, Inject, ChangeDetectorRef, Directive, InjectionToken, ViewChild, ChangeDetectionStrategy, Injector, ViewContainerRef, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
3
3
  import * as i5 from '@angular/common';
4
4
  import { CommonModule, AsyncPipe, CurrencyPipe, formatDate } from '@angular/common';
5
5
  import * as i1 from 'rpx-xui-translation';
@@ -1637,89 +1637,23 @@ class SessionStorageService {
1637
1637
  sessionStorage.clear();
1638
1638
  }
1639
1639
  static ɵfac = function SessionStorageService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SessionStorageService)(); };
1640
- static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: SessionStorageService, factory: SessionStorageService.ɵfac, providedIn: 'root' });
1640
+ static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: SessionStorageService, factory: SessionStorageService.ɵfac });
1641
1641
  }
1642
1642
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SessionStorageService, [{
1643
- type: Injectable,
1644
- args: [{
1645
- providedIn: 'root',
1646
- }]
1643
+ type: Injectable
1647
1644
  }], null, null); })();
1648
1645
 
1649
- function safeJsonParse(value, fallback = null) {
1650
- if (!value) {
1651
- return fallback;
1652
- }
1653
- try {
1654
- return JSON.parse(value);
1655
- }
1656
- catch (error) {
1657
- // Log for diagnostics, then return fallback to avoid UI crashes.
1658
- // eslint-disable-next-line no-console
1659
- console.error('safeJsonParse failed to parse JSON', error);
1660
- return fallback;
1661
- }
1662
- }
1663
-
1664
- const SessionErrorRoute = new InjectionToken('SessionErrorRoute');
1665
- const SessionJsonErrorLogger = new InjectionToken('SessionJsonErrorLogger');
1666
- class SessionStorageGuard {
1667
- sessionStorageService;
1668
- router;
1669
- errorRoute;
1670
- errorLogger;
1671
- constructor(sessionStorageService, router, errorRoute, errorLogger) {
1672
- this.sessionStorageService = sessionStorageService;
1673
- this.router = router;
1674
- this.errorRoute = errorRoute;
1675
- this.errorLogger = errorLogger;
1676
- }
1677
- canActivate() {
1678
- const userInfoStr = this.sessionStorageService.getItem('userDetails');
1679
- if (!userInfoStr) {
1680
- return true;
1681
- }
1682
- const parsed = safeJsonParse(userInfoStr, null);
1683
- if (parsed !== null) {
1684
- return true;
1685
- }
1686
- const error = new Error('Invalid userDetails in session storage');
1687
- if (this.errorLogger) {
1688
- this.errorLogger(error);
1689
- }
1690
- else {
1691
- // eslint-disable-next-line no-console
1692
- console.error('Invalid userDetails in session storage', error);
1693
- }
1694
- this.router.navigate([this.errorRoute || '/session-error']);
1695
- return false;
1696
- }
1697
- static ɵfac = function SessionStorageGuard_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SessionStorageGuard)(i0.ɵɵinject(SessionStorageService), i0.ɵɵinject(i1$1.Router), i0.ɵɵinject(SessionErrorRoute, 8), i0.ɵɵinject(SessionJsonErrorLogger, 8)); };
1698
- static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: SessionStorageGuard, factory: SessionStorageGuard.ɵfac, providedIn: 'root' });
1699
- }
1700
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SessionStorageGuard, [{
1701
- type: Injectable,
1702
- args: [{
1703
- providedIn: 'root',
1704
- }]
1705
- }], () => [{ type: SessionStorageService }, { type: i1$1.Router }, { type: undefined, decorators: [{
1706
- type: Optional
1707
- }, {
1708
- type: Inject,
1709
- args: [SessionErrorRoute]
1710
- }] }, { type: SessionJsonErrorLogger, decorators: [{
1711
- type: Optional
1712
- }, {
1713
- type: Inject,
1714
- args: [SessionJsonErrorLogger]
1715
- }] }], null); })();
1716
-
1717
1646
  const USER_DETAILS = 'userDetails';
1718
1647
  const PUI_CASE_MANAGER = 'pui-case-manager';
1719
1648
  const JUDGE = 'judge';
1720
1649
  function getUserDetails(sessionStorageService) {
1721
- const item = sessionStorageService?.getItem(USER_DETAILS);
1722
- return safeJsonParse(item, null);
1650
+ try {
1651
+ const item = sessionStorageService?.getItem(USER_DETAILS);
1652
+ return item ? JSON.parse(item) : null;
1653
+ }
1654
+ catch {
1655
+ return null;
1656
+ }
1723
1657
  }
1724
1658
  function isInternalUser(sessionStorageService) {
1725
1659
  const userDetails = getUserDetails(sessionStorageService);
@@ -1758,11 +1692,8 @@ class ActivityService {
1758
1692
  return error;
1759
1693
  }
1760
1694
  getOptions() {
1761
- const userDetails = safeJsonParse(this.sessionStorageService.getItem(USER_DETAILS));
1762
- let headers = new HttpHeaders().set('Content-Type', 'application/json');
1763
- if (userDetails?.token) {
1764
- headers = headers.set('Authorization', userDetails.token);
1765
- }
1695
+ const userDetails = JSON.parse(this.sessionStorageService.getItem(USER_DETAILS));
1696
+ const headers = new HttpHeaders().set('Content-Type', 'application/json').set('Authorization', userDetails.token);
1766
1697
  return {
1767
1698
  headers,
1768
1699
  withCredentials: true,
@@ -4570,8 +4501,11 @@ class FieldsUtils {
4570
4501
  }
4571
4502
  }
4572
4503
  static getUserTaskFromClientContext(clientContextStr) {
4573
- const clientContext = safeJsonParse(clientContextStr, null);
4574
- return clientContext?.client_context?.user_task || null;
4504
+ if (clientContextStr) {
4505
+ let clientContext = JSON.parse(clientContextStr);
4506
+ return clientContext.client_context.user_task;
4507
+ }
4508
+ return null;
4575
4509
  }
4576
4510
  buildCanShowPredicate(eventTrigger, form) {
4577
4511
  const currentState = this.getCurrentEventState(eventTrigger, form);
@@ -6031,15 +5965,17 @@ class FormValueService {
6031
5965
  return form[currentFieldId + FieldsUtils.LABEL_SUFFIX].join(', ');
6032
5966
  }
6033
5967
  else if (FieldsUtils.isCollectionOfSimpleTypes(currentForm)) {
6034
- return currentForm.map((fieldValue) => fieldValue.value).join(', ');
5968
+ return currentForm.map(fieldValue => fieldValue['value']).join(', ');
6035
5969
  }
6036
5970
  else if (FieldsUtils.isCollection(currentForm)) {
6037
- return this.getFieldValue(currentForm[colIndex].value, fieldIds.slice(1).join('.'), colIndex);
5971
+ return this.getFieldValue(currentForm[colIndex]['value'], fieldIds.slice(1).join('.'), colIndex);
6038
5972
  }
6039
5973
  else if (FieldsUtils.isNonEmptyObject(currentForm)) {
6040
5974
  return this.getFieldValue(currentForm, fieldIds.slice(1).join('.'), colIndex);
6041
5975
  }
6042
- return currentForm;
5976
+ else {
5977
+ return currentForm;
5978
+ }
6043
5979
  }
6044
5980
  /**
6045
5981
  * A recursive method to remove anything with a `---LABEL` suffix.
@@ -6077,7 +6013,9 @@ class FormValueService {
6077
6013
  if (field.field_type) {
6078
6014
  return field.field_type.type === 'Label';
6079
6015
  }
6080
- return false;
6016
+ else {
6017
+ return false;
6018
+ }
6081
6019
  }
6082
6020
  static isEmptyData(data) {
6083
6021
  if (data) {
@@ -6112,8 +6050,8 @@ class FormValueService {
6112
6050
  constructor(fieldTypeSanitiser) {
6113
6051
  this.fieldTypeSanitiser = fieldTypeSanitiser;
6114
6052
  }
6115
- sanitise(rawValue) {
6116
- return this.sanitiseObject(rawValue);
6053
+ sanitise(rawValue, isCaseFlagJourney = false) {
6054
+ return this.sanitiseObject(rawValue, isCaseFlagJourney);
6117
6055
  }
6118
6056
  sanitiseCaseReference(reference) {
6119
6057
  // strip non digits
@@ -6124,13 +6062,10 @@ class FormValueService {
6124
6062
  return s;
6125
6063
  }
6126
6064
  filterCurrentPageFields(caseFields, editForm) {
6127
- const cloneForm = {
6128
- ...(editForm || {}),
6129
- data: { ...((editForm && editForm.data) || {}) }
6130
- };
6131
- Object.keys(cloneForm.data).forEach((key) => {
6065
+ const cloneForm = JSON.parse(JSON.stringify(editForm));
6066
+ Object.keys(cloneForm['data']).forEach((key) => {
6132
6067
  if (caseFields.findIndex((element) => element.id === key) < 0) {
6133
- delete cloneForm.data[key];
6068
+ delete cloneForm['data'][key];
6134
6069
  }
6135
6070
  });
6136
6071
  return cloneForm;
@@ -6138,7 +6073,7 @@ class FormValueService {
6138
6073
  sanitiseDynamicLists(caseFields, editForm) {
6139
6074
  return this.fieldTypeSanitiser.sanitiseLists(caseFields, editForm.data);
6140
6075
  }
6141
- sanitiseObject(rawObject) {
6076
+ sanitiseObject(rawObject, isCaseFlagJourney = false) {
6142
6077
  if (!rawObject) {
6143
6078
  return rawObject;
6144
6079
  }
@@ -6152,14 +6087,17 @@ class FormValueService {
6152
6087
  break;
6153
6088
  }
6154
6089
  else if ('CaseReference' === key) {
6155
- sanitisedObject[key] = this.sanitiseValue(this.sanitiseCaseReference(String(rawObject[key])));
6090
+ sanitisedObject[key] = this.sanitiseValue(this.sanitiseCaseReference(String(rawObject[key])), isCaseFlagJourney);
6156
6091
  }
6157
6092
  else {
6158
- sanitisedObject[key] = this.sanitiseValue(rawObject[key]);
6093
+ sanitisedObject[key] = this.sanitiseValue(rawObject[key], isCaseFlagJourney);
6159
6094
  if (Array.isArray(sanitisedObject[key])) {
6160
6095
  // If the 'sanitised' array is empty, whereas the original array had 1 or more items
6161
6096
  // delete the property from the sanatised object
6162
- if (sanitisedObject[key].length === 0 && rawObject[key].length > 0) {
6097
+ const shouldDeleteField = sanitisedObject[key].length === 0
6098
+ && rawObject[key].length > 0
6099
+ && !isCaseFlagJourney;
6100
+ if (shouldDeleteField) {
6163
6101
  delete sanitisedObject[key];
6164
6102
  }
6165
6103
  }
@@ -6167,29 +6105,29 @@ class FormValueService {
6167
6105
  }
6168
6106
  return sanitisedObject;
6169
6107
  }
6170
- sanitiseArray(rawArray) {
6108
+ sanitiseArray(rawArray, isCaseFlagJourney = false) {
6171
6109
  if (!rawArray) {
6172
6110
  return rawArray;
6173
6111
  }
6174
- rawArray.forEach((item) => {
6112
+ rawArray.forEach(item => {
6175
6113
  if (item && item.hasOwnProperty('value')) {
6176
- item.value = this.sanitiseValue(item.value);
6114
+ item.value = this.sanitiseValue(item.value, isCaseFlagJourney);
6177
6115
  }
6178
6116
  });
6179
6117
  // Filter the array to ensure only truthy values are returned; double-bang operator returns the boolean true/false
6180
6118
  // association of a value. In addition, if the array contains items with a "value" object property, return only
6181
6119
  // those whose value object contains non-empty values, including for any descendant objects
6182
6120
  return rawArray
6183
- .filter((item) => !!item)
6184
- .filter((item) => item.hasOwnProperty('value') ? FieldsUtils.containsNonEmptyValues(item.value) : true);
6121
+ .filter(item => !!item)
6122
+ .filter(item => item.hasOwnProperty('value') ? FieldsUtils.containsNonEmptyValues(item.value) : true);
6185
6123
  }
6186
- sanitiseValue(rawValue) {
6124
+ sanitiseValue(rawValue, isCaseFlagJourney = false) {
6187
6125
  if (Array.isArray(rawValue)) {
6188
- return this.sanitiseArray(rawValue);
6126
+ return this.sanitiseArray(rawValue, isCaseFlagJourney);
6189
6127
  }
6190
6128
  switch (typeof rawValue) {
6191
6129
  case 'object':
6192
- return this.sanitiseObject(rawValue);
6130
+ return this.sanitiseObject(rawValue, isCaseFlagJourney);
6193
6131
  case 'string':
6194
6132
  return rawValue.trim();
6195
6133
  case 'number':
@@ -6200,7 +6138,7 @@ class FormValueService {
6200
6138
  }
6201
6139
  clearNonCaseFields(data, caseFields) {
6202
6140
  for (const dataKey in data) {
6203
- if (!caseFields.find((cf) => cf.id === dataKey)) {
6141
+ if (!caseFields.find(cf => cf.id === dataKey)) {
6204
6142
  delete data[dataKey];
6205
6143
  }
6206
6144
  }
@@ -6398,7 +6336,7 @@ class FormValueService {
6398
6336
  */
6399
6337
  removeCaseFieldsOfType(data, caseFields, types) {
6400
6338
  if (data && caseFields && caseFields.length > 0 && types.length > 0) {
6401
- const caseFieldsToRemove = caseFields.filter((caseField) => FieldsUtils.isCaseFieldOfType(caseField, types));
6339
+ const caseFieldsToRemove = caseFields.filter(caseField => FieldsUtils.isCaseFieldOfType(caseField, types));
6402
6340
  for (const caseField of caseFieldsToRemove) {
6403
6341
  delete data[caseField.id];
6404
6342
  }
@@ -6417,10 +6355,10 @@ class FormValueService {
6417
6355
  */
6418
6356
  repopulateFormDataFromCaseFieldValues(data, caseFields) {
6419
6357
  if (data && caseFields && caseFields.length > 0 &&
6420
- caseFields.findIndex((caseField) => FieldsUtils.isCaseFieldOfType(caseField, ['FlagLauncher'])) > -1) {
6358
+ caseFields.findIndex(caseField => FieldsUtils.isCaseFieldOfType(caseField, ['FlagLauncher'])) > -1) {
6421
6359
  // Ignore the FlagLauncher CaseField because it does not hold any values
6422
- caseFields.filter((caseField) => !FieldsUtils.isCaseFieldOfType(caseField, ['FlagLauncher']))
6423
- .forEach((caseField) => {
6360
+ caseFields.filter(caseField => !FieldsUtils.isCaseFieldOfType(caseField, ['FlagLauncher']))
6361
+ .forEach(caseField => {
6424
6362
  // Ensure that the data object is populated for all CaseField keys it contains, even if for a given
6425
6363
  // CaseField key, the data object has a falsy value (hence the use of hasOwnProperty() for the check below)
6426
6364
  // See https://tools.hmcts.net/jira/browse/EUI-7377
@@ -6452,8 +6390,8 @@ class FormValueService {
6452
6390
  */
6453
6391
  populateLinkedCasesDetailsFromCaseFields(data, caseFields) {
6454
6392
  if (data && caseFields && caseFields.length > 0) {
6455
- caseFields.filter((caseField) => !FieldsUtils.isCaseFieldOfType(caseField, ['ComponentLauncher']))
6456
- .forEach((caseField) => {
6393
+ caseFields.filter(caseField => !FieldsUtils.isCaseFieldOfType(caseField, ['ComponentLauncher']))
6394
+ .forEach(caseField => {
6457
6395
  if (data.hasOwnProperty('caseLinks') && caseField.value) {
6458
6396
  data[caseField.id] = caseField.value;
6459
6397
  }
@@ -9520,7 +9458,7 @@ class CaseEditComponent {
9520
9458
  ngOnInit() {
9521
9459
  this.wizard = this.wizardFactory.create(this.eventTrigger);
9522
9460
  this.initialUrl = this.sessionStorageService.getItem('eventUrl');
9523
- this.isPageRefreshed = safeJsonParse(this.sessionStorageService.getItem('isPageRefreshed'), false);
9461
+ this.isPageRefreshed = JSON.parse(this.sessionStorageService.getItem('isPageRefreshed'));
9524
9462
  this.checkPageRefresh();
9525
9463
  this.form = this.fb.group({
9526
9464
  data: new FormGroup({}),
@@ -9644,11 +9582,15 @@ class CaseEditComponent {
9644
9582
  const taskEventCompletionStr = this.sessionStorageService.getItem(CaseEditComponent.TASK_EVENT_COMPLETION_INFO);
9645
9583
  const userInfoStr = this.sessionStorageService.getItem('userDetails');
9646
9584
  const assignNeeded = this.sessionStorageService.getItem('assignNeeded');
9647
- taskEventCompletionInfo = safeJsonParse(taskEventCompletionStr, null);
9648
- userInfo = safeJsonParse(userInfoStr, null);
9585
+ if (taskEventCompletionStr) {
9586
+ taskEventCompletionInfo = JSON.parse(taskEventCompletionStr);
9587
+ }
9588
+ if (userInfoStr) {
9589
+ userInfo = JSON.parse(userInfoStr);
9590
+ }
9649
9591
  const eventId = this.getEventId(form);
9650
9592
  const caseId = this.getCaseId(caseDetails);
9651
- const userId = userInfo?.id ? userInfo.id : userInfo?.uid;
9593
+ const userId = userInfo.id ? userInfo.id : userInfo.uid;
9652
9594
  const eventDetails = { eventId, caseId, userId, assignNeeded };
9653
9595
  if (this.taskExistsForThisEvent(taskInSessionStorage, taskEventCompletionInfo, eventDetails)) {
9654
9596
  this.abstractConfig.logMessage(`task ${taskInSessionStorage?.id} exist for this event for caseId and eventId as ${caseId} ${eventId}`);
@@ -9691,7 +9633,7 @@ class CaseEditComponent {
9691
9633
  }
9692
9634
  generateCaseEventData({ eventTrigger, form }) {
9693
9635
  const caseEventData = {
9694
- data: this.replaceEmptyComplexFieldValues(this.formValueService.sanitise(this.replaceHiddenFormValuesWithOriginalCaseData(form.get('data'), eventTrigger.case_fields))),
9636
+ data: this.replaceEmptyComplexFieldValues(this.formValueService.sanitise(this.replaceHiddenFormValuesWithOriginalCaseData(form.get('data'), eventTrigger.case_fields), this.isCaseFlagSubmission)),
9695
9637
  event: form.value.event
9696
9638
  };
9697
9639
  this.formValueService.clearNonCaseFields(caseEventData.data, eventTrigger.case_fields);
@@ -10010,7 +9952,7 @@ class CaseEditComponent {
10010
9952
  }], submitted: [{
10011
9953
  type: Output
10012
9954
  }] }); })();
10013
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CaseEditComponent, { className: "CaseEditComponent", filePath: "lib/shared/components/case-editor/case-edit/case-edit.component.ts", lineNumber: 39 }); })();
9955
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CaseEditComponent, { className: "CaseEditComponent", filePath: "lib/shared/components/case-editor/case-edit/case-edit.component.ts", lineNumber: 38 }); })();
10014
9956
 
10015
9957
  function convertNonASCIICharacter(character) {
10016
9958
  if (character === '£') {
@@ -12069,42 +12011,6 @@ class CallbackErrorsComponent {
12069
12011
  }] }); })();
12070
12012
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CallbackErrorsComponent, { className: "CallbackErrorsComponent", filePath: "lib/shared/components/error/callback-errors.component.ts", lineNumber: 11 }); })();
12071
12013
 
12072
- class SessionErrorPageComponent {
12073
- title = 'There is a problem with your session';
12074
- primaryMessage = 'Go to landing page. Refreshing the page. If the problem persists, sign out and sign in again.';
12075
- secondaryMessage = 'If you still cannot access the service, clear your browser data for this website.';
12076
- static ɵfac = function SessionErrorPageComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SessionErrorPageComponent)(); };
12077
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SessionErrorPageComponent, selectors: [["ccd-session-error-page"]], inputs: { title: "title", primaryMessage: "primaryMessage", secondaryMessage: "secondaryMessage" }, decls: 10, vars: 3, consts: [[1, "govuk-width-container"], ["id", "content", "role", "main", 1, "govuk-main-wrapper", "govuk-main-wrapper--l"], [1, "govuk-grid-row"], [1, "govuk-grid-column-two-thirds"], [1, "govuk-heading-xl"], [1, "govuk-body"]], template: function SessionErrorPageComponent_Template(rf, ctx) { if (rf & 1) {
12078
- i0.ɵɵdomElementStart(0, "div", 0)(1, "main", 1)(2, "div", 2)(3, "div", 3)(4, "h1", 4);
12079
- i0.ɵɵtext(5);
12080
- i0.ɵɵdomElementEnd();
12081
- i0.ɵɵdomElementStart(6, "p", 5);
12082
- i0.ɵɵtext(7);
12083
- i0.ɵɵdomElementEnd();
12084
- i0.ɵɵdomElementStart(8, "p", 5);
12085
- i0.ɵɵtext(9);
12086
- i0.ɵɵdomElementEnd()()()()();
12087
- } if (rf & 2) {
12088
- i0.ɵɵadvance(5);
12089
- i0.ɵɵtextInterpolate(ctx.title);
12090
- i0.ɵɵadvance(2);
12091
- i0.ɵɵtextInterpolate(ctx.primaryMessage);
12092
- i0.ɵɵadvance(2);
12093
- i0.ɵɵtextInterpolate(ctx.secondaryMessage);
12094
- } }, dependencies: [CommonModule], encapsulation: 2 });
12095
- }
12096
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SessionErrorPageComponent, [{
12097
- type: Component,
12098
- args: [{ selector: 'ccd-session-error-page', standalone: true, imports: [CommonModule], template: "<div class=\"govuk-width-container\">\n <main class=\"govuk-main-wrapper govuk-main-wrapper--l\" id=\"content\" role=\"main\">\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-two-thirds\">\n <h1 class=\"govuk-heading-xl\">{{ title }}</h1>\n <p class=\"govuk-body\">{{ primaryMessage }}</p>\n <p class=\"govuk-body\">{{ secondaryMessage }}</p>\n </div>\n </div>\n </main>\n</div>\n" }]
12099
- }], null, { title: [{
12100
- type: Input
12101
- }], primaryMessage: [{
12102
- type: Input
12103
- }], secondaryMessage: [{
12104
- type: Input
12105
- }] }); })();
12106
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SessionErrorPageComponent, { className: "SessionErrorPageComponent", filePath: "lib/shared/components/error/session-error-page.component.ts", lineNumber: 10 }); })();
12107
-
12108
12014
  function CaseEventCompletionComponent_app_case_event_completion_task_cancelled_0_Template(rf, ctx) { if (rf & 1) {
12109
12015
  const _r1 = i0.ɵɵgetCurrentView();
12110
12016
  i0.ɵɵelementStart(0, "app-case-event-completion-task-cancelled", 2);
@@ -13356,10 +13262,9 @@ class CaseFileViewFieldComponent {
13356
13262
  error: _ => this.getCategoriesAndDocumentsError = true
13357
13263
  });
13358
13264
  // EXUI-8000
13359
- const userInfo = safeJsonParse(this.sessionStorageService.getItem('userDetails'), null);
13360
- const userRoles = userInfo?.roles || [];
13265
+ const userInfo = JSON.parse(this.sessionStorageService.getItem('userDetails'));
13361
13266
  // Get acls that intersects from acl roles and user roles
13362
- const acls = this.caseField.acls.filter(acl => userRoles.includes(acl.role));
13267
+ const acls = this.caseField.acls.filter(acl => userInfo.roles.includes(acl.role));
13363
13268
  // As there can be more than one intersecting role, if any acls are update: true
13364
13269
  this.allowMoving = acls.some(acl => acl.update);
13365
13270
  this.icp_jurisdictions = this.abstractConfig.getIcpJurisdictions();
@@ -13450,7 +13355,7 @@ class CaseFileViewFieldComponent {
13450
13355
  type: Component,
13451
13356
  args: [{ selector: 'ccd-case-file-view-field', standalone: false, template: "<ng-container *ngIf=\"errorMessages?.length\">\n <div\n id=\"case-file-view-field-errors\"\n class=\"govuk-error-summary govuk-!-margin-bottom-4\"\n data-module=\"govuk-error-summary\"\n >\n <div role=\"alert\">\n <h2 class=\"govuk-error-summary__title\">There is a problem</h2>\n <div class=\"govuk-error-summary__body\">\n <ul class=\"govuk-list govuk-error-summary__list\">\n <li *ngFor=\"let errorMessage of errorMessages\">\n <button type=\"button\" class=\"govuk-js-link\">{{ errorMessage }}</button>\n </li>\n </ul>\n </div>\n </div>\n </div>\n</ng-container>\n\n<div\n *ngIf=\"getCategoriesAndDocumentsError\"\n class=\"govuk-grid-column-two-thirds\"\n>\n <h1 class=\"govuk-heading-xl\">Sorry, there is a problem with the service</h1>\n <p class=\"govuk-body\">Try again later.</p>\n</div>\n<div *ngIf=\"!getCategoriesAndDocumentsError\">\n <h2 class=\"govuk-heading-l\">Case file</h2>\n <div class=\"govuk-form-group\" id=\"case-file-view\">\n <!-- Document tree -->\n <div class=\"document-tree-container\">\n <ccd-case-file-view-folder \n class=\"document-tree-container__tree\"\n [categoriesAndDocuments]=\"categoriesAndDocuments$\"\n (clickedDocument)=\"setMediaViewerFile($event); resetErrorMessages()\" \n (moveDocument)=\"moveDocument($event)\"\n [allowMoving]=\"allowMoving\">\n </ccd-case-file-view-folder>\n </div>\n <!-- Slider -->\n <div class=\"slider\"></div>\n <!-- Media viewer -->\n <div class=\"media-viewer-container\">\n <ng-container *ngIf=\"currentDocument\">\n <mv-media-viewer\n [url]=\"currentDocument.document_binary_url\"\n [downloadFileName]=\"currentDocument.document_filename\"\n [showToolbar]=\"true\"\n [contentType]=\"currentDocument.content_type\"\n [enableAnnotations]=\"true\"\n [enableRedactions]=\"true\"\n [height]=\"'94.5vh'\"\n [caseId]=\"caseId\"\n [multimediaPlayerEnabled]=\"true\"\n [enableICP]=\"isIcpEnabled()\"\n >\n </mv-media-viewer>\n </ng-container>\n </div>\n </div>\n</div>\n", styles: ["#case-file-view{display:flex;border:2px solid #C9C9C9;height:100vh;position:relative}#case-file-view .document-tree-container{background-color:#faf8f8;width:30%;min-height:400px;min-width:10%}#case-file-view .slider{width:.2%;background-color:#6b6b6b}#case-file-view .slider:hover,#case-file-view .slider:focus{cursor:col-resize}#case-file-view .media-viewer-container{background-color:#dee0e2;flex:1 1 0;overflow:hidden}\n"] }]
13452
13357
  }], () => [{ type: i0.ElementRef }, { type: i1$1.ActivatedRoute }, { type: CaseFileViewService }, { type: DocumentManagementService }, { type: LoadingService }, { type: SessionStorageService }, { type: WindowService }, { type: CaseNotifier }, { type: AbstractAppConfig }], null); })();
13453
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CaseFileViewFieldComponent, { className: "CaseFileViewFieldComponent", filePath: "lib/shared/components/palette/case-file-view/case-file-view-field.component.ts", lineNumber: 19 }); })();
13358
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CaseFileViewFieldComponent, { className: "CaseFileViewFieldComponent", filePath: "lib/shared/components/palette/case-file-view/case-file-view-field.component.ts", lineNumber: 18 }); })();
13454
13359
 
13455
13360
  function ReadCaseFlagFieldComponent_ng_container_0_Template(rf, ctx) { if (rf & 1) {
13456
13361
  const _r1 = i0.ɵɵgetCurrentView();
@@ -15109,9 +15014,20 @@ class WriteCollectionFieldComponent extends AbstractFieldWriteComponent {
15109
15014
  }
15110
15015
  }
15111
15016
  focusLastItem() {
15112
- const item = this.items.last.nativeElement.querySelector('.form-control');
15113
- if (item) {
15114
- item.focus();
15017
+ const root = this.items.last?.nativeElement;
15018
+ if (!root) {
15019
+ return;
15020
+ }
15021
+ const controls = Array.from(root.querySelectorAll('.form-control'));
15022
+ const focusTarget = controls.find(control => {
15023
+ if (!(control instanceof HTMLInputElement)) {
15024
+ return true;
15025
+ }
15026
+ const type = (control.type || '').toLowerCase();
15027
+ return type !== 'radio';
15028
+ });
15029
+ if (focusTarget) {
15030
+ focusTarget.focus();
15115
15031
  }
15116
15032
  }
15117
15033
  removeItem(index) {
@@ -20692,14 +20608,14 @@ class PaymentField extends AbstractFieldReadComponent {
20692
20608
  return this.appConfig.getNotificationUrl();
20693
20609
  }
20694
20610
  getUserRoles() {
20695
- const userDetails = safeJsonParse(this.sessionStorage.getItem('userDetails'), null);
20611
+ const userDetails = JSON.parse(this.sessionStorage.getItem('userDetails') || null);
20696
20612
  if (!userDetails || !userDetails.hasOwnProperty('roles')) {
20697
20613
  return [];
20698
20614
  }
20699
20615
  return userDetails.roles;
20700
20616
  }
20701
20617
  getUserEmail() {
20702
- const userDetails = safeJsonParse(this.sessionStorage.getItem('userDetails'), null);
20618
+ const userDetails = JSON.parse(this.sessionStorage.getItem('userDetails') || null);
20703
20619
  if (!userDetails || !userDetails.hasOwnProperty('sub')) {
20704
20620
  return '';
20705
20621
  }
@@ -21425,7 +21341,7 @@ class QueryManagementService {
21425
21341
  ) {
21426
21342
  let currentUserDetails;
21427
21343
  try {
21428
- currentUserDetails = safeJsonParse(this.sessionStorageService.getItem(USER_DETAILS), {});
21344
+ currentUserDetails = JSON.parse(this.sessionStorageService.getItem(USER_DETAILS));
21429
21345
  }
21430
21346
  catch (e) {
21431
21347
  console.error('Could not parse USER_DETAILS from session storage:', e);
@@ -30340,9 +30256,7 @@ class EventLogTableComponent {
30340
30256
  }
30341
30257
  ngOnInit() {
30342
30258
  this.isPartOfCaseTimeline = this.onCaseHistory.observers.length > 0;
30343
- const userDetails = safeJsonParse(this.sessionStorage.getItem('userDetails'), null);
30344
- const roles = userDetails?.roles || [];
30345
- this.isUserExternal = roles.includes('pui-case-manager');
30259
+ this.isUserExternal = JSON.parse(this.sessionStorage.getItem('userDetails')).roles.includes('pui-case-manager');
30346
30260
  }
30347
30261
  select(event) {
30348
30262
  this.selected = event;
@@ -30431,7 +30345,7 @@ class EventLogTableComponent {
30431
30345
  }], onCaseHistory: [{
30432
30346
  type: Output
30433
30347
  }] }); })();
30434
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(EventLogTableComponent, { className: "EventLogTableComponent", filePath: "lib/shared/components/palette/history/event-log/event-log-table.component.ts", lineNumber: 13 }); })();
30348
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(EventLogTableComponent, { className: "EventLogTableComponent", filePath: "lib/shared/components/palette/history/event-log/event-log-table.component.ts", lineNumber: 12 }); })();
30435
30349
 
30436
30350
  function EventLogComponent_ccd_event_log_table_3_Template(rf, ctx) { if (rf & 1) {
30437
30351
  const _r1 = i0.ɵɵgetCurrentView();
@@ -35195,7 +35109,7 @@ class CaseResolver {
35195
35109
  // as discussed for EUI-5456, need functionality to go to default page
35196
35110
  goToDefaultPage() {
35197
35111
  console.info('Going to default page!');
35198
- const userDetails = safeJsonParse(this.sessionStorage.getItem(USER_DETAILS));
35112
+ const userDetails = JSON.parse(this.sessionStorage.getItem(USER_DETAILS));
35199
35113
  userDetails && userDetails.roles
35200
35114
  && !userDetails.roles.includes(PUI_CASE_MANAGER)
35201
35115
  &&
@@ -35248,7 +35162,7 @@ class EventTriggerResolver {
35248
35162
  const query = route.queryParams;
35249
35163
  // If jurisdiction or caseType are missing, redirect to correct URL
35250
35164
  if (!jurisdiction || !caseType) {
35251
- const caseInfo = safeJsonParse(this.sessionStorageService.getItem('caseInfo'), {});
35165
+ const caseInfo = JSON.parse(this.sessionStorageService.getItem('caseInfo') || '{}');
35252
35166
  const jurisdictionId = caseInfo?.jurisdiction;
35253
35167
  const caseTypeId = caseInfo?.caseType;
35254
35168
  const caseId = caseInfo?.caseId;
@@ -39516,7 +39430,7 @@ class CreateCaseFiltersComponent {
39516
39430
  return events.filter(event => event.pre_states.length === 0);
39517
39431
  }
39518
39432
  retainEventsWithCreateRights(events) {
39519
- const userProfile = safeJsonParse(this.sessionStorageService.getItem(USER_DETAILS), null);
39433
+ const userProfile = JSON.parse(this.sessionStorageService.getItem(USER_DETAILS));
39520
39434
  return events.filter(event => userProfile && userProfile.roles &&
39521
39435
  !!userProfile.roles.find(role => this.hasCreateAccess(event, role)));
39522
39436
  }
@@ -39654,7 +39568,7 @@ class CreateCaseFiltersComponent {
39654
39568
  }], selectionChanged: [{
39655
39569
  type: Output
39656
39570
  }] }); })();
39657
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CreateCaseFiltersComponent, { className: "CreateCaseFiltersComponent", filePath: "lib/shared/components/create-case-filters/create-case-filters.component.ts", lineNumber: 20 }); })();
39571
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CreateCaseFiltersComponent, { className: "CreateCaseFiltersComponent", filePath: "lib/shared/components/create-case-filters/create-case-filters.component.ts", lineNumber: 19 }); })();
39658
39572
 
39659
39573
  class CreateCaseFiltersModule {
39660
39574
  static ɵfac = function CreateCaseFiltersModule_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CreateCaseFiltersModule)(); };
@@ -41275,5 +41189,5 @@ class TestRouteSnapshotBuilder {
41275
41189
  * Generated bundle index. Do not edit.
41276
41190
  */
41277
41191
 
41278
- export { AbstractAppConfig, AbstractFieldReadComponent, AbstractFieldWriteComponent, AbstractFieldWriteJourneyComponent, AbstractJourneyComponent, Activity, ActivityBannerComponent, ActivityComponent, ActivityIconComponent, ActivityInfo, ActivityModule, ActivityPollingService, ActivityService, AddCommentsComponent, AddCommentsErrorMessage, AddCommentsStep, AddressModel, AddressOption, AddressesService, Alert, AlertComponent, AlertIconClassPipe, AlertMessageType, AlertModule, AlertService, AuthService, Banner, BannersService, BeforeYouStartComponent, BodyComponent, BrowserService, CCDCaseLinkType, COMPONENT_PORTAL_INJECTION_TOKEN, CallbackErrorsComponent, CallbackErrorsContext, CaseAccessUtils, CaseBasicAccessViewComponent, CaseChallengedAccessRequestComponent, CaseChallengedAccessSuccessComponent, CaseCreateComponent, CaseDetails, CaseEditComponent, CaseEditConfirmComponent, CaseEditDataModule, CaseEditDataService, CaseEditFormComponent, CaseEditPageComponent, CaseEditSubmitComponent, CaseEditWizardGuard, CaseEditorConfig, CaseEditorModule, CaseEvent, CaseEventCompletionComponent, CaseEventCompletionTaskCancelledComponent, CaseEventCompletionTaskReassignedComponent, CaseEventData, CaseEventTrigger, CaseEventTriggerComponent, CaseField, CaseFieldService, CaseFileViewFieldComponent, CaseFileViewFolderComponent, CaseFileViewFolderDocumentActionsComponent, CaseFileViewFolderSelectorComponent, CaseFileViewFolderSortComponent, CaseFileViewFolderToggleComponent, CaseFileViewOverlayMenuComponent, CaseFileViewService, CaseFlagCheckYourAnswersPageStep, CaseFlagDisplayContextParameter, CaseFlagErrorMessage, CaseFlagFieldState, CaseFlagFormFields, CaseFlagRefdataService, CaseFlagStatus, CaseFlagSummaryListComponent, CaseFlagSummaryListDisplayMode, CaseFlagTableComponent, CaseFlagWizardStepTitle, CaseFullAccessViewComponent, CaseHeaderComponent, CaseHeaderModule, CaseHistoryViewerFieldComponent, CaseLink, CaseLinkResponse, CaseListComponent, CaseListFiltersComponent, CaseListFiltersModule, CaseListModule, CaseNotifier, CasePaymentHistoryViewerFieldComponent, CasePrintDocument, CasePrinterComponent, CaseProgressComponent, CaseReferencePipe, CaseResolver, CaseSpecificAccessRequestComponent, CaseSpecificAccessSuccessComponent, CaseState, CaseTab, CaseTimelineComponent, CaseTimelineDisplayMode, CaseTimelineModule, CaseType, CaseTypeLite, CaseView, CaseViewComponent, CaseViewEvent, CaseViewTrigger, CaseViewerComponent, CaseViewerModule, CasesService, CaseworkerService, CcdCYAPageLabelFilterPipe, CcdCaseTitlePipe, CcdCollectionTableCaseFieldsFilterPipe, CcdPageFieldsPipe, CcdTabFieldsPipe, CheckYourAnswersComponent, CloseQueryComponent, ConditionalShowFormDirective, ConditionalShowModule, ConditionalShowRegistrarService, ConfirmFlagStatusComponent, ConfirmStatusErrorMessage, ConfirmStatusStep, Confirmation, ConvertHrefToRouterService, CreateCaseFiltersComponent, CreateCaseFiltersModule, CreateCaseFiltersSelection, DRAFT_PREFIX, DRAFT_QUERY_PARAM, DashPipe, DateInputComponent, DatePipe, DateTimeFormatUtils, DatetimePickerComponent, DefinitionsModule, DefinitionsService, DeleteOrCancelDialogComponent, DialogsModule, DisplayMode, Document, DocumentData, DocumentDialogComponent, DocumentLinks, DocumentManagementService, DocumentUrlPipe, Draft, DraftService, DynamicListPipe, DynamicRadioListPipe, ESQueryType, Embedded, EnumDisplayDescriptionPipe, ErrorMessageComponent, ErrorNotifierService, EventCaseField, EventCompletionReturnStates, EventCompletionStateMachineService, EventCompletionStates, EventLogComponent, EventLogDetailsComponent, EventLogTableComponent, EventMessageModule, EventStartComponent, EventStartModule, EventStartStateMachineService, EventStatusService, EventTriggerResolver, EventTriggerService, Fee, FeeValue, Field, FieldLabelPipe, FieldReadComponent, FieldReadLabelComponent, FieldType, FieldTypeSanitiser, FieldWriteComponent, FieldsFilterPipe, FieldsPurger, FieldsUtils, FirstErrorPipe, FixedListItem, FixedListPipe, FixedRadioListPipe, FlagFieldDisplayPipe, FocusElementDirective, FocusElementModule, FooterComponent, FormDocument, FormErrorService, FormValidatorsService, FormValueService, FormatTranslatorService, GreyBarService, HRef, HeaderBarComponent, HeadersModule, HttpError, HttpErrorService, HttpService, IsCompoundPipe, IsMandatoryPipe, IsReadOnlyAndNotCollectionPipe, IsReadOnlyPipe, JudicialworkerService, Jurisdiction, JurisdictionService, LabelFieldComponent, LabelSubstitutorDirective, LabelSubstitutorModule, LanguageInterpreterDisplayPipe, LinkCaseReason, LinkCasesComponent, LinkCasesFromReasonValuePipe, LinkCasesReasonValuePipe, LinkDetails, LinkFromReason, LinkReason, LinkedCasesErrorMessages, LinkedCasesEventTriggers, LinkedCasesFromTableComponent, LinkedCasesPages, LinkedCasesResponse, LinkedCasesToTableComponent, LoadingModule, LoadingService, LoadingSpinnerComponent, LoadingSpinnerModule, MEDIA_VIEWER_LOCALSTORAGE_KEY, MULTIPLE_TASKS_FOUND, ManageCaseFlagsComponent, ManageCaseFlagsLabelDisplayPipe, MarkdownComponent, MarkdownComponentModule, MoneyGbpInputComponent, MultipageComponentStateService, MultipleTasksExistComponent, NavigationComponent, NavigationItemComponent, NavigationNotifierService, NavigationOrigin, NoLinkedCasesComponent, NoTasksAvailableComponent, NotificationBannerComponent, NotificationBannerHeaderClass, NotificationBannerType, OrderService, OrderSummary, OrganisationConverter, OrganisationService, PageValidationService, PaginationComponent, PaginationMetadata, PaginationModule, PaletteContext, PaletteModule, PaletteService, PaletteUtilsModule, Patterns, PaymentField, PhaseComponent, PipesModule, PlaceholderService, PrintUrlPipe, Profile, ProfileNotifier, ProfileService, QualifyingQuestionDetailComponent, QualifyingQuestionOptionsComponent, QualifyingQuestionService, QualifyingQuestionsErrorMessage, QueryAttachmentsReadComponent, QueryCaseDetailsHeaderComponent, QueryCheckYourAnswersComponent, QueryConfirmationComponent, QueryCreateContext, QueryDetailsComponent, QueryEventCompletionComponent, QueryItemResponseStatus, QueryListComponent, QueryListData, QueryListItem, QueryManagementService, QueryWriteAddDocumentsComponent, QueryWriteDateInputComponent, QueryWriteRaiseQueryComponent, QueryWriteRespondToQueryComponent, RaiseQueryErrorMessage, ReadCaseFlagFieldComponent, ReadCaseLinkFieldComponent, ReadCollectionFieldComponent, ReadComplexFieldCollectionTableComponent, ReadComplexFieldComponent, ReadComplexFieldRawComponent, ReadComplexFieldTableComponent, ReadCookieService, ReadDateFieldComponent, ReadDocumentFieldComponent, ReadDynamicListFieldComponent, ReadDynamicMultiSelectListFieldComponent, ReadDynamicRadioListFieldComponent, ReadEmailFieldComponent, ReadFieldsFilterPipe, ReadFixedListFieldComponent, ReadFixedRadioListFieldComponent, ReadJudicialUserFieldComponent, ReadLinkedCasesFieldComponent, ReadMoneyGbpFieldComponent, ReadMultiSelectListFieldComponent, ReadNumberFieldComponent, ReadOrderSummaryFieldComponent, ReadOrderSummaryRowComponent, ReadOrganisationFieldComponent, ReadOrganisationFieldRawComponent, ReadOrganisationFieldTableComponent, ReadPhoneUKFieldComponent, ReadQueryManagementFieldComponent, ReadTextAreaFieldComponent, ReadTextFieldComponent, ReadYesNoFieldComponent, RefdataCaseFlagType, RemoveDialogComponent, RequestOptionsBuilder, RespondToQueryErrorMessages, RetryUtil, RouterHelperService, RouterLinkComponent, SaveOrDiscardDialogComponent, SearchFiltersComponent, SearchFiltersModule, SearchFiltersWrapperComponent, SearchInput, SearchLanguageInterpreterComponent, SearchLanguageInterpreterErrorMessage, SearchLanguageInterpreterStep, SearchResultComponent, SearchResultModule, SearchResultView, SearchResultViewColumn, SearchResultViewItem, SearchResultViewItemComparatorFactory, SearchService, SelectFlagErrorMessage, SelectFlagLocationComponent, SelectFlagLocationErrorMessage, SelectFlagTypeComponent, SelectFlagTypeErrorMessage, SessionErrorPageComponent, SessionErrorRoute, SessionJsonErrorLogger, SessionStorageGuard, SessionStorageService, ShowCondition, SortOrder$1 as SortOrder, SortParameters, SortSearchResultPipe, TabComponent, TableColumnConfig, TableConfig, TabsComponent, TabsModule, TaskAssignedComponent, TaskCancelledComponent, TaskConflictComponent, TaskUnassignedComponent, Terms, TestRouteSnapshotBuilder, TranslatedMarkdownDirective, TranslatedMarkdownModule, UnLinkCasesComponent, UnsupportedFieldComponent, UpdateFlagAddTranslationErrorMessage, UpdateFlagAddTranslationFormComponent, UpdateFlagAddTranslationStep, UpdateFlagComponent, UpdateFlagErrorMessage, UpdateFlagStep, UpdateFlagTitleDisplayPipe, WaysToPayFieldComponent, WindowService, Wizard, WizardFactoryService, WizardPage, WizardPageField, WorkAllocationService, WorkbasketFiltersComponent, WorkbasketFiltersModule, WorkbasketInput, WorkbasketInputFilterService, WorkbasketInputModel, WriteAddressFieldComponent, WriteCaseFlagFieldComponent, WriteCaseLinkFieldComponent, WriteCollectionFieldComponent, WriteComplexFieldComponent, WriteDateContainerFieldComponent, WriteDateFieldComponent, WriteDocumentFieldComponent, WriteDynamicListFieldComponent, WriteDynamicMultiSelectListFieldComponent, WriteDynamicRadioListFieldComponent, WriteEmailFieldComponent, WriteFixedListFieldComponent, WriteFixedRadioListFieldComponent, WriteJudicialUserFieldComponent, WriteLinkedCasesFieldComponent, WriteMoneyGbpFieldComponent, WriteMultiSelectListFieldComponent, WriteNumberFieldComponent, WriteOrderSummaryFieldComponent, WriteOrganisationComplexFieldComponent, WriteOrganisationFieldComponent, WritePhoneUKFieldComponent, WriteTextAreaFieldComponent, WriteTextFieldComponent, WriteYesNoFieldComponent, YesNoService, aCaseField, caseMessagesMockData, createACL, createCaseEventTrigger, createCaseField, createComplexFieldOverride, createFieldType, createFixedListFieldType, createHiddenComplexFieldOverride, createMultiSelectListFieldType, createWizardPage, createWizardPageField, editorRouting, initDialog, newCaseField, safeJsonParse, textFieldType, viewerRouting };
41192
+ export { AbstractAppConfig, AbstractFieldReadComponent, AbstractFieldWriteComponent, AbstractFieldWriteJourneyComponent, AbstractJourneyComponent, Activity, ActivityBannerComponent, ActivityComponent, ActivityIconComponent, ActivityInfo, ActivityModule, ActivityPollingService, ActivityService, AddCommentsComponent, AddCommentsErrorMessage, AddCommentsStep, AddressModel, AddressOption, AddressesService, Alert, AlertComponent, AlertIconClassPipe, AlertMessageType, AlertModule, AlertService, AuthService, Banner, BannersService, BeforeYouStartComponent, BodyComponent, BrowserService, CCDCaseLinkType, COMPONENT_PORTAL_INJECTION_TOKEN, CallbackErrorsComponent, CallbackErrorsContext, CaseAccessUtils, CaseBasicAccessViewComponent, CaseChallengedAccessRequestComponent, CaseChallengedAccessSuccessComponent, CaseCreateComponent, CaseDetails, CaseEditComponent, CaseEditConfirmComponent, CaseEditDataModule, CaseEditDataService, CaseEditFormComponent, CaseEditPageComponent, CaseEditSubmitComponent, CaseEditWizardGuard, CaseEditorConfig, CaseEditorModule, CaseEvent, CaseEventCompletionComponent, CaseEventCompletionTaskCancelledComponent, CaseEventCompletionTaskReassignedComponent, CaseEventData, CaseEventTrigger, CaseEventTriggerComponent, CaseField, CaseFieldService, CaseFileViewFieldComponent, CaseFileViewFolderComponent, CaseFileViewFolderDocumentActionsComponent, CaseFileViewFolderSelectorComponent, CaseFileViewFolderSortComponent, CaseFileViewFolderToggleComponent, CaseFileViewOverlayMenuComponent, CaseFileViewService, CaseFlagCheckYourAnswersPageStep, CaseFlagDisplayContextParameter, CaseFlagErrorMessage, CaseFlagFieldState, CaseFlagFormFields, CaseFlagRefdataService, CaseFlagStatus, CaseFlagSummaryListComponent, CaseFlagSummaryListDisplayMode, CaseFlagTableComponent, CaseFlagWizardStepTitle, CaseFullAccessViewComponent, CaseHeaderComponent, CaseHeaderModule, CaseHistoryViewerFieldComponent, CaseLink, CaseLinkResponse, CaseListComponent, CaseListFiltersComponent, CaseListFiltersModule, CaseListModule, CaseNotifier, CasePaymentHistoryViewerFieldComponent, CasePrintDocument, CasePrinterComponent, CaseProgressComponent, CaseReferencePipe, CaseResolver, CaseSpecificAccessRequestComponent, CaseSpecificAccessSuccessComponent, CaseState, CaseTab, CaseTimelineComponent, CaseTimelineDisplayMode, CaseTimelineModule, CaseType, CaseTypeLite, CaseView, CaseViewComponent, CaseViewEvent, CaseViewTrigger, CaseViewerComponent, CaseViewerModule, CasesService, CaseworkerService, CcdCYAPageLabelFilterPipe, CcdCaseTitlePipe, CcdCollectionTableCaseFieldsFilterPipe, CcdPageFieldsPipe, CcdTabFieldsPipe, CheckYourAnswersComponent, CloseQueryComponent, ConditionalShowFormDirective, ConditionalShowModule, ConditionalShowRegistrarService, ConfirmFlagStatusComponent, ConfirmStatusErrorMessage, ConfirmStatusStep, Confirmation, ConvertHrefToRouterService, CreateCaseFiltersComponent, CreateCaseFiltersModule, CreateCaseFiltersSelection, DRAFT_PREFIX, DRAFT_QUERY_PARAM, DashPipe, DateInputComponent, DatePipe, DateTimeFormatUtils, DatetimePickerComponent, DefinitionsModule, DefinitionsService, DeleteOrCancelDialogComponent, DialogsModule, DisplayMode, Document, DocumentData, DocumentDialogComponent, DocumentLinks, DocumentManagementService, DocumentUrlPipe, Draft, DraftService, DynamicListPipe, DynamicRadioListPipe, ESQueryType, Embedded, EnumDisplayDescriptionPipe, ErrorMessageComponent, ErrorNotifierService, EventCaseField, EventCompletionReturnStates, EventCompletionStateMachineService, EventCompletionStates, EventLogComponent, EventLogDetailsComponent, EventLogTableComponent, EventMessageModule, EventStartComponent, EventStartModule, EventStartStateMachineService, EventStatusService, EventTriggerResolver, EventTriggerService, Fee, FeeValue, Field, FieldLabelPipe, FieldReadComponent, FieldReadLabelComponent, FieldType, FieldTypeSanitiser, FieldWriteComponent, FieldsFilterPipe, FieldsPurger, FieldsUtils, FirstErrorPipe, FixedListItem, FixedListPipe, FixedRadioListPipe, FlagFieldDisplayPipe, FocusElementDirective, FocusElementModule, FooterComponent, FormDocument, FormErrorService, FormValidatorsService, FormValueService, FormatTranslatorService, GreyBarService, HRef, HeaderBarComponent, HeadersModule, HttpError, HttpErrorService, HttpService, IsCompoundPipe, IsMandatoryPipe, IsReadOnlyAndNotCollectionPipe, IsReadOnlyPipe, JudicialworkerService, Jurisdiction, JurisdictionService, LabelFieldComponent, LabelSubstitutorDirective, LabelSubstitutorModule, LanguageInterpreterDisplayPipe, LinkCaseReason, LinkCasesComponent, LinkCasesFromReasonValuePipe, LinkCasesReasonValuePipe, LinkDetails, LinkFromReason, LinkReason, LinkedCasesErrorMessages, LinkedCasesEventTriggers, LinkedCasesFromTableComponent, LinkedCasesPages, LinkedCasesResponse, LinkedCasesToTableComponent, LoadingModule, LoadingService, LoadingSpinnerComponent, LoadingSpinnerModule, MEDIA_VIEWER_LOCALSTORAGE_KEY, MULTIPLE_TASKS_FOUND, ManageCaseFlagsComponent, ManageCaseFlagsLabelDisplayPipe, MarkdownComponent, MarkdownComponentModule, MoneyGbpInputComponent, MultipageComponentStateService, MultipleTasksExistComponent, NavigationComponent, NavigationItemComponent, NavigationNotifierService, NavigationOrigin, NoLinkedCasesComponent, NoTasksAvailableComponent, NotificationBannerComponent, NotificationBannerHeaderClass, NotificationBannerType, OrderService, OrderSummary, OrganisationConverter, OrganisationService, PageValidationService, PaginationComponent, PaginationMetadata, PaginationModule, PaletteContext, PaletteModule, PaletteService, PaletteUtilsModule, Patterns, PaymentField, PhaseComponent, PipesModule, PlaceholderService, PrintUrlPipe, Profile, ProfileNotifier, ProfileService, QualifyingQuestionDetailComponent, QualifyingQuestionOptionsComponent, QualifyingQuestionService, QualifyingQuestionsErrorMessage, QueryAttachmentsReadComponent, QueryCaseDetailsHeaderComponent, QueryCheckYourAnswersComponent, QueryConfirmationComponent, QueryCreateContext, QueryDetailsComponent, QueryEventCompletionComponent, QueryItemResponseStatus, QueryListComponent, QueryListData, QueryListItem, QueryManagementService, QueryWriteAddDocumentsComponent, QueryWriteDateInputComponent, QueryWriteRaiseQueryComponent, QueryWriteRespondToQueryComponent, RaiseQueryErrorMessage, ReadCaseFlagFieldComponent, ReadCaseLinkFieldComponent, ReadCollectionFieldComponent, ReadComplexFieldCollectionTableComponent, ReadComplexFieldComponent, ReadComplexFieldRawComponent, ReadComplexFieldTableComponent, ReadCookieService, ReadDateFieldComponent, ReadDocumentFieldComponent, ReadDynamicListFieldComponent, ReadDynamicMultiSelectListFieldComponent, ReadDynamicRadioListFieldComponent, ReadEmailFieldComponent, ReadFieldsFilterPipe, ReadFixedListFieldComponent, ReadFixedRadioListFieldComponent, ReadJudicialUserFieldComponent, ReadLinkedCasesFieldComponent, ReadMoneyGbpFieldComponent, ReadMultiSelectListFieldComponent, ReadNumberFieldComponent, ReadOrderSummaryFieldComponent, ReadOrderSummaryRowComponent, ReadOrganisationFieldComponent, ReadOrganisationFieldRawComponent, ReadOrganisationFieldTableComponent, ReadPhoneUKFieldComponent, ReadQueryManagementFieldComponent, ReadTextAreaFieldComponent, ReadTextFieldComponent, ReadYesNoFieldComponent, RefdataCaseFlagType, RemoveDialogComponent, RequestOptionsBuilder, RespondToQueryErrorMessages, RetryUtil, RouterHelperService, RouterLinkComponent, SaveOrDiscardDialogComponent, SearchFiltersComponent, SearchFiltersModule, SearchFiltersWrapperComponent, SearchInput, SearchLanguageInterpreterComponent, SearchLanguageInterpreterErrorMessage, SearchLanguageInterpreterStep, SearchResultComponent, SearchResultModule, SearchResultView, SearchResultViewColumn, SearchResultViewItem, SearchResultViewItemComparatorFactory, SearchService, SelectFlagErrorMessage, SelectFlagLocationComponent, SelectFlagLocationErrorMessage, SelectFlagTypeComponent, SelectFlagTypeErrorMessage, SessionStorageService, ShowCondition, SortOrder$1 as SortOrder, SortParameters, SortSearchResultPipe, TabComponent, TableColumnConfig, TableConfig, TabsComponent, TabsModule, TaskAssignedComponent, TaskCancelledComponent, TaskConflictComponent, TaskUnassignedComponent, Terms, TestRouteSnapshotBuilder, TranslatedMarkdownDirective, TranslatedMarkdownModule, UnLinkCasesComponent, UnsupportedFieldComponent, UpdateFlagAddTranslationErrorMessage, UpdateFlagAddTranslationFormComponent, UpdateFlagAddTranslationStep, UpdateFlagComponent, UpdateFlagErrorMessage, UpdateFlagStep, UpdateFlagTitleDisplayPipe, WaysToPayFieldComponent, WindowService, Wizard, WizardFactoryService, WizardPage, WizardPageField, WorkAllocationService, WorkbasketFiltersComponent, WorkbasketFiltersModule, WorkbasketInput, WorkbasketInputFilterService, WorkbasketInputModel, WriteAddressFieldComponent, WriteCaseFlagFieldComponent, WriteCaseLinkFieldComponent, WriteCollectionFieldComponent, WriteComplexFieldComponent, WriteDateContainerFieldComponent, WriteDateFieldComponent, WriteDocumentFieldComponent, WriteDynamicListFieldComponent, WriteDynamicMultiSelectListFieldComponent, WriteDynamicRadioListFieldComponent, WriteEmailFieldComponent, WriteFixedListFieldComponent, WriteFixedRadioListFieldComponent, WriteJudicialUserFieldComponent, WriteLinkedCasesFieldComponent, WriteMoneyGbpFieldComponent, WriteMultiSelectListFieldComponent, WriteNumberFieldComponent, WriteOrderSummaryFieldComponent, WriteOrganisationComplexFieldComponent, WriteOrganisationFieldComponent, WritePhoneUKFieldComponent, WriteTextAreaFieldComponent, WriteTextFieldComponent, WriteYesNoFieldComponent, YesNoService, aCaseField, caseMessagesMockData, createACL, createCaseEventTrigger, createCaseField, createComplexFieldOverride, createFieldType, createFixedListFieldType, createHiddenComplexFieldOverride, createMultiSelectListFieldType, createWizardPage, createWizardPageField, editorRouting, initDialog, newCaseField, textFieldType, viewerRouting };
41279
41193
  //# sourceMappingURL=hmcts-ccd-case-ui-toolkit.mjs.map