@hmcts/ccd-case-ui-toolkit 4.8.0-rc.2 → 4.8.3-access-management-banner

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 (105) hide show
  1. package/RELEASE-NOTES.md +10 -0
  2. package/dist/app.config.d.ts +27 -0
  3. package/dist/app.config.js +6 -0
  4. package/dist/app.config.js.map +1 -1
  5. package/dist/app.config.metadata.json +1 -1
  6. package/dist/cut-styles/shared/components/case-viewer/case-review-specific-access-request/case-review-specific-access-request.component.scss +3 -0
  7. package/dist/index.umd.js +609 -154
  8. package/dist/index.umd.js.map +1 -1
  9. package/dist/index.umd.min.js +1 -1
  10. package/dist/index.umd.min.js.LICENSE.txt +1 -1
  11. package/dist/index.umd.min.js.map +1 -1
  12. package/dist/shared/components/case-editor/case-access-utils/index.d.ts +3 -2
  13. package/dist/shared/components/case-editor/case-access-utils/index.js +31 -0
  14. package/dist/shared/components/case-editor/case-access-utils/index.js.map +1 -1
  15. package/dist/shared/components/case-editor/case-access-utils/index.metadata.json +1 -1
  16. package/dist/shared/components/case-editor/case-edit-page/case-edit-page.component.js +2 -2
  17. package/dist/shared/components/case-editor/case-edit-page/case-edit-page.component.js.map +1 -1
  18. package/dist/shared/components/case-editor/services/case-edit-wizard.guard.js +10 -0
  19. package/dist/shared/components/case-editor/services/case-edit-wizard.guard.js.map +1 -1
  20. package/dist/shared/components/case-editor/services/case-edit-wizard.guard.metadata.json +1 -1
  21. package/dist/shared/components/case-editor/services/cases.service.d.ts +2 -17
  22. package/dist/shared/components/case-editor/services/cases.service.js +18 -109
  23. package/dist/shared/components/case-editor/services/cases.service.js.map +1 -1
  24. package/dist/shared/components/case-editor/services/cases.service.metadata.json +1 -1
  25. package/dist/shared/components/case-header/case-header.component.d.ts +1 -0
  26. package/dist/shared/components/case-header/case-header.component.js +2 -1
  27. package/dist/shared/components/case-header/case-header.component.js.map +1 -1
  28. package/dist/shared/components/case-header/case-header.component.metadata.json +1 -1
  29. package/dist/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.d.ts +3 -0
  30. package/dist/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.js +61 -12
  31. package/dist/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.js.map +1 -1
  32. package/dist/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.metadata.json +1 -1
  33. package/dist/shared/components/case-viewer/case-review-specific-access-reject/case-review-specific-access-reject.component.d.ts +10 -0
  34. package/dist/shared/components/case-viewer/case-review-specific-access-reject/case-review-specific-access-reject.component.js +33 -0
  35. package/dist/shared/components/case-viewer/case-review-specific-access-reject/case-review-specific-access-reject.component.js.map +1 -0
  36. package/dist/shared/components/case-viewer/case-review-specific-access-reject/case-review-specific-access-reject.component.metadata.json +1 -0
  37. package/dist/shared/components/case-viewer/case-review-specific-access-reject/index.d.ts +1 -0
  38. package/dist/shared/components/case-viewer/case-review-specific-access-reject/index.js +7 -0
  39. package/dist/shared/components/case-viewer/case-review-specific-access-reject/index.js.map +1 -0
  40. package/dist/shared/components/case-viewer/case-review-specific-access-reject/index.metadata.json +1 -0
  41. package/dist/shared/components/case-viewer/case-review-specific-access-request/case-review-specific-access-request.component.d.ts +45 -0
  42. package/dist/shared/components/case-viewer/case-review-specific-access-request/case-review-specific-access-request.component.js +105 -0
  43. package/dist/shared/components/case-viewer/case-review-specific-access-request/case-review-specific-access-request.component.js.map +1 -0
  44. package/dist/shared/components/case-viewer/case-review-specific-access-request/case-review-specific-access-request.component.metadata.json +1 -0
  45. package/dist/shared/components/case-viewer/case-review-specific-access-request/index.d.ts +1 -0
  46. package/dist/shared/components/case-viewer/case-review-specific-access-request/index.js +7 -0
  47. package/dist/shared/components/case-viewer/case-review-specific-access-request/index.js.map +1 -0
  48. package/dist/shared/components/case-viewer/case-review-specific-access-request/index.metadata.json +1 -0
  49. package/dist/shared/components/case-viewer/case-review-specific-access-request/models/case-review-specific-access-request.enum.d.ts +14 -0
  50. package/dist/shared/components/case-viewer/case-review-specific-access-request/models/case-review-specific-access-request.enum.js +20 -0
  51. package/dist/shared/components/case-viewer/case-review-specific-access-request/models/case-review-specific-access-request.enum.js.map +1 -0
  52. package/dist/shared/components/case-viewer/case-review-specific-access-request/models/case-review-specific-access-request.enum.metadata.json +1 -0
  53. package/dist/shared/components/case-viewer/case-review-specific-access-request/models/index.d.ts +1 -0
  54. package/dist/shared/components/case-viewer/case-review-specific-access-request/models/index.js +7 -0
  55. package/dist/shared/components/case-viewer/case-review-specific-access-request/models/index.js.map +1 -0
  56. package/dist/shared/components/case-viewer/case-review-specific-access-request/models/index.metadata.json +1 -0
  57. package/dist/shared/components/case-viewer/case-specific-access-request/case-specific-access-request.component.d.ts +3 -1
  58. package/dist/shared/components/case-viewer/case-specific-access-request/case-specific-access-request.component.js +21 -1
  59. package/dist/shared/components/case-viewer/case-specific-access-request/case-specific-access-request.component.js.map +1 -1
  60. package/dist/shared/components/case-viewer/case-specific-access-request/case-specific-access-request.component.metadata.json +1 -1
  61. package/dist/shared/components/case-viewer/case-specific-access-request/models/case-specific-access-request.enum.d.ts +6 -0
  62. package/dist/shared/components/case-viewer/case-specific-access-request/models/case-specific-access-request.enum.js +7 -0
  63. package/dist/shared/components/case-viewer/case-specific-access-request/models/case-specific-access-request.enum.js.map +1 -1
  64. package/dist/shared/components/case-viewer/case-specific-access-request/models/case-specific-access-request.enum.metadata.json +1 -1
  65. package/dist/shared/components/case-viewer/case-viewer.component.d.ts +1 -0
  66. package/dist/shared/components/case-viewer/case-viewer.component.js +26 -2
  67. package/dist/shared/components/case-viewer/case-viewer.component.js.map +1 -1
  68. package/dist/shared/components/case-viewer/case-viewer.component.metadata.json +1 -1
  69. package/dist/shared/components/case-viewer/case-viewer.module.js +5 -1
  70. package/dist/shared/components/case-viewer/case-viewer.module.js.map +1 -1
  71. package/dist/shared/components/case-viewer/case-viewer.module.metadata.json +1 -1
  72. package/dist/shared/components/case-viewer/viewer.routing.js +34 -12
  73. package/dist/shared/components/case-viewer/viewer.routing.js.map +1 -1
  74. package/dist/shared/components/case-viewer/viewer.routing.metadata.json +1 -1
  75. package/dist/shared/components/palette/complex/ccd-read-fields-filter.pipe.js +4 -0
  76. package/dist/shared/components/palette/complex/ccd-read-fields-filter.pipe.js.map +1 -1
  77. package/dist/shared/components/palette/complex/cdd-page-fields.pipe.js +1 -1
  78. package/dist/shared/components/palette/complex/cdd-page-fields.pipe.js.map +1 -1
  79. package/dist/shared/components/palette/complex/write-complex-field.component.js +1 -1
  80. package/dist/shared/components/palette/complex/write-complex-field.component.js.map +1 -1
  81. package/dist/shared/components/palette/complex/write-complex-field.component.metadata.json +1 -1
  82. package/dist/shared/components/palette/document/write-document-field.component.js.map +1 -1
  83. package/dist/shared/components/palette/payment/case-payment-history-viewer-field.component.js +1 -1
  84. package/dist/shared/components/palette/payment/case-payment-history-viewer-field.component.js.map +1 -1
  85. package/dist/shared/components/palette/payment/case-payment-history-viewer-field.component.metadata.json +1 -1
  86. package/dist/shared/components/workbasket-filters/workbasket-filters.component.js +12 -10
  87. package/dist/shared/components/workbasket-filters/workbasket-filters.component.js.map +1 -1
  88. package/dist/shared/domain/case-view/case-view.model.d.ts +6 -0
  89. package/dist/shared/domain/case-view/case-view.model.js.map +1 -1
  90. package/dist/shared/domain/case-view/index.d.ts +1 -0
  91. package/dist/shared/domain/case-view/index.metadata.json +1 -1
  92. package/dist/shared/domain/case-view/review-specific-access-request.model.d.ts +4 -0
  93. package/dist/shared/domain/case-view/review-specific-access-request.model.js +3 -0
  94. package/dist/shared/domain/case-view/review-specific-access-request.model.js.map +1 -0
  95. package/dist/shared/domain/case-view/review-specific-access-request.model.metadata.json +1 -0
  96. package/dist/shared/domain/case-view/specific-access-request.model.d.ts +0 -2
  97. package/dist/shared/services/fields/fields.utils.d.ts +19 -1
  98. package/dist/shared/services/fields/fields.utils.js +83 -0
  99. package/dist/shared/services/fields/fields.utils.js.map +1 -1
  100. package/dist/shared/services/fields/fields.utils.metadata.json +1 -1
  101. package/dist/shared/services/form/form-value.service.d.ts +7 -0
  102. package/dist/shared/services/form/form-value.service.js +18 -0
  103. package/dist/shared/services/form/form-value.service.js.map +1 -1
  104. package/dist/shared/services/form/form-value.service.metadata.json +1 -1
  105. package/package.json +6 -3
package/dist/index.umd.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @hmcts/ccd-case-ui-toolkit - Case UI Toolkit
3
- * @version v4.8.0-rc.2
3
+ * @version v4.8.3-access-management-banner
4
4
  * @link undefined
5
5
  * @license MIT
6
6
  */
@@ -11511,6 +11511,12 @@ var AbstractAppConfig = /** @class */ (function () {
11511
11511
  AbstractAppConfig.prototype.getAccessManagementBasicViewMock = function () {
11512
11512
  return undefined;
11513
11513
  };
11514
+ AbstractAppConfig.prototype.getAccessManagemenViewCaseMock = function () {
11515
+ return undefined;
11516
+ };
11517
+ AbstractAppConfig.prototype.getAccessManagementRequestReviewMockModel = function () {
11518
+ return undefined;
11519
+ };
11514
11520
  AbstractAppConfig.prototype.getLocationRefApiUrl = function () {
11515
11521
  return undefined;
11516
11522
  };
@@ -13154,6 +13160,8 @@ var CaseAccessUtils = /** @class */ (function () {
13154
13160
  function CaseAccessUtils() {
13155
13161
  }
13156
13162
  CaseAccessUtils.prototype.getMappedRoleCategory = function (roles, roleCategories) {
13163
+ if (roles === void 0) { roles = []; }
13164
+ if (roleCategories === void 0) { roleCategories = []; }
13157
13165
  var roleKeywords = roles.join().split('-').join().split(',');
13158
13166
  if (this.roleOrCategoryExists(CaseAccessUtils.JUDGE_ROLE, CaseAccessUtils.JUDGE_ROLE_CATEGORY, roleKeywords, roleCategories)) {
13159
13167
  return CaseAccessUtils.JUDGE_ROLE_CATEGORY;
@@ -13197,6 +13205,35 @@ var CaseAccessUtils = /** @class */ (function () {
13197
13205
  }
13198
13206
  return roleName;
13199
13207
  };
13208
+ CaseAccessUtils.prototype.getAMPayload = function (assignerId, actorId, roleName, roleCategory, grantType, caseId, details, beginTime, endTime) {
13209
+ if (beginTime === void 0) { beginTime = null; }
13210
+ if (endTime === void 0) { endTime = null; }
13211
+ var payload = {
13212
+ roleRequest: {
13213
+ assignerId: assignerId
13214
+ },
13215
+ requestedRoles: [{
13216
+ actorIdType: 'IDAM',
13217
+ actorId: actorId,
13218
+ roleType: 'CASE',
13219
+ roleName: roleName,
13220
+ classification: 'PUBLIC',
13221
+ roleCategory: roleCategory,
13222
+ grantType: grantType,
13223
+ beginTime: beginTime,
13224
+ endTime: endTime,
13225
+ attributes: {
13226
+ caseId: caseId
13227
+ },
13228
+ notes: [{
13229
+ userId: assignerId,
13230
+ time: new Date(),
13231
+ comment: JSON.stringify(details)
13232
+ }]
13233
+ }]
13234
+ };
13235
+ return payload;
13236
+ };
13200
13237
  // User role mapping
13201
13238
  CaseAccessUtils.JUDGE_ROLE = 'judge';
13202
13239
  CaseAccessUtils.JUDGE_ROLE_CATEGORY = 'JUDICIAL';
@@ -13709,11 +13746,11 @@ var CaseEditPageComponent = /** @class */ (function () {
13709
13746
  if (this.currentPageIsNotValid()) {
13710
13747
  this.generateErrorMessage(this.currentPage.case_fields);
13711
13748
  }
13712
- this.showSpinner = true;
13713
13749
  if (!this.isSubmitting && !this.currentPageIsNotValid()) {
13714
13750
  this.isSubmitting = true;
13715
13751
  this.error = null;
13716
13752
  var caseEventData = this.buildCaseEventData();
13753
+ this.showSpinner = true;
13717
13754
  this.caseEdit.validate(caseEventData, this.currentPage.id)
13718
13755
  .subscribe(function (jsonData) {
13719
13756
  if (jsonData) {
@@ -13752,7 +13789,7 @@ var CaseEditPageComponent = /** @class */ (function () {
13752
13789
  };
13753
13790
  CaseEditPageComponent.prototype.updateFormControlsValue = function (formGroup, caseFieldId, value) {
13754
13791
  var theControl = formGroup.controls['data'].get(caseFieldId);
13755
- if (theControl) {
13792
+ if (theControl && theControl['status'] !== 'DISABLED') {
13756
13793
  if (Array.isArray(theControl.value) && Array.isArray(value)
13757
13794
  && theControl.value.length > value.length && theControl['caseField']
13758
13795
  && theControl['caseField']['display_context'] && theControl['caseField']['display_context'] === 'OPTIONAL'
@@ -15031,6 +15068,7 @@ var router_helper_service_1 = __webpack_require__(61957);
15031
15068
  var wizard_factory_service_1 = __webpack_require__(13125);
15032
15069
  var conditional_show_model_1 = __webpack_require__(5369);
15033
15070
  var event_trigger_service_1 = __webpack_require__(17051);
15071
+ var fields_1 = __webpack_require__(64906);
15034
15072
  var CaseEditWizardGuard = /** @class */ (function () {
15035
15073
  function CaseEditWizardGuard(router, routerHelper, wizardFactory, alertService, eventTriggerService) {
15036
15074
  this.router = router;
@@ -15086,6 +15124,15 @@ var CaseEditWizardGuard = /** @class */ (function () {
15086
15124
  };
15087
15125
  CaseEditWizardGuard.prototype.buildState = function (caseFields) {
15088
15126
  var state = {};
15127
+ /**
15128
+ *
15129
+ * EUI-4873 SSCS - Dynamic lists in a collection within a complex type
15130
+ *
15131
+ * Catering for mid event callbacks, hence the call to re-evaluate
15132
+ * for DynamicList's
15133
+ *
15134
+ */
15135
+ fields_1.FieldsUtils.handleNestedDynamicLists({ case_fields: caseFields });
15089
15136
  caseFields.forEach(function (field) {
15090
15137
  state[field.id] = field.value;
15091
15138
  });
@@ -15147,17 +15194,6 @@ exports.CaseNotifier = CaseNotifier;
15147
15194
 
15148
15195
  "use strict";
15149
15196
 
15150
- var __assign = (this && this.__assign) || function () {
15151
- __assign = Object.assign || function(t) {
15152
- for (var s, i = 1, n = arguments.length; i < n; i++) {
15153
- s = arguments[i];
15154
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
15155
- t[p] = s[p];
15156
- }
15157
- return t;
15158
- };
15159
- return __assign.apply(this, arguments);
15160
- };
15161
15197
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
15162
15198
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
15163
15199
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -15228,73 +15264,6 @@ var CasesService = /** @class */ (function () {
15228
15264
  return rxjs_1.throwError(error);
15229
15265
  }), operators_1.finalize(function () { return _this.loadingService.unregister(loadingToken); }));
15230
15266
  };
15231
- /**
15232
- * handleNestedDynamicLists()
15233
- * Reassigns list_item and value data to DynamicList children
15234
- * down the tree. Server response returns data only in
15235
- * the `value` object of parent complex type
15236
- *
15237
- * EUI-2530 Dynamic Lists for Elements in a Complex Type
15238
- *
15239
- * @param jsonBody - { case_fields: [ CaseField, CaseField ] }
15240
- */
15241
- CasesService.prototype.handleNestedDynamicLists = function (jsonBody) {
15242
- var _this = this;
15243
- if (jsonBody.case_fields) {
15244
- jsonBody.case_fields.forEach(function (caseField) {
15245
- if (caseField.field_type) {
15246
- _this.setDynamicListDefinition(caseField, caseField.field_type, caseField);
15247
- }
15248
- });
15249
- }
15250
- return jsonBody;
15251
- };
15252
- CasesService.prototype.setDynamicListDefinition = function (caseField, caseFieldType, rootCaseField) {
15253
- var _this = this;
15254
- if (caseFieldType.type === CasesService_1.SERVER_RESPONSE_FIELD_TYPE_COMPLEX) {
15255
- caseFieldType.complex_fields.forEach(function (field) {
15256
- try {
15257
- var isDynamicField = CasesService_1.SERVER_RESPONSE_FIELD_TYPE_DYNAMIC_LIST_TYPE.indexOf(field.field_type.type) !== -1;
15258
- if (isDynamicField) {
15259
- var dynamicListValue = _this.getDynamicListValue(rootCaseField.value, field.id);
15260
- if (dynamicListValue) {
15261
- var list_items = dynamicListValue.list_items;
15262
- var value = dynamicListValue.value;
15263
- field.value = {
15264
- list_items: list_items,
15265
- value: value ? value : undefined
15266
- };
15267
- field.formatted_value = __assign({}, field.formatted_value, field.value);
15268
- }
15269
- }
15270
- else {
15271
- _this.setDynamicListDefinition(field, field.field_type, rootCaseField);
15272
- }
15273
- }
15274
- catch (error) {
15275
- console.log(error);
15276
- }
15277
- });
15278
- }
15279
- else if (caseFieldType.type === CasesService_1.SERVER_RESPONSE_FIELD_TYPE_COLLECTION) {
15280
- if (caseFieldType.collection_field_type) {
15281
- this.setDynamicListDefinition(caseField, caseFieldType.collection_field_type, rootCaseField);
15282
- }
15283
- }
15284
- };
15285
- CasesService.prototype.getDynamicListValue = function (jsonBlock, key) {
15286
- if (jsonBlock[key]) {
15287
- return jsonBlock[key];
15288
- }
15289
- else {
15290
- for (var elementKey in jsonBlock) {
15291
- if (typeof jsonBlock === 'object' && jsonBlock.hasOwnProperty(elementKey)) {
15292
- return this.getDynamicListValue(jsonBlock[elementKey], key);
15293
- }
15294
- }
15295
- }
15296
- return null;
15297
- };
15298
15267
  CasesService.prototype.getEventTrigger = function (caseTypeId, eventTriggerId, caseId, ignoreWarning) {
15299
15268
  var _this = this;
15300
15269
  ignoreWarning = undefined !== ignoreWarning ? ignoreWarning : 'false';
@@ -15314,7 +15283,7 @@ var CasesService = /** @class */ (function () {
15314
15283
  return this.http
15315
15284
  .get(url, { headers: headers, observe: 'body' })
15316
15285
  .pipe(operators_1.map(function (body) {
15317
- return _this.handleNestedDynamicLists(body);
15286
+ return services_1.FieldsUtils.handleNestedDynamicLists(body);
15318
15287
  }), operators_1.catchError(function (error) {
15319
15288
  _this.errorService.setError(error);
15320
15289
  return rxjs_1.throwError(error);
@@ -15456,32 +15425,23 @@ var CasesService = /** @class */ (function () {
15456
15425
  }
15457
15426
  var roleCategory = camUtils.getMappedRoleCategory(userInfo.roles, userInfo.roleCategories);
15458
15427
  var roleName = camUtils.getAMRoleName('challenged', roleCategory);
15459
- var payload = {
15460
- roleRequest: {
15461
- assignerId: userInfo.id
15462
- },
15463
- requestedRoles: [{
15464
- actorIdType: 'IDAM',
15465
- actorId: userInfo.id,
15466
- roleType: 'CASE',
15467
- roleName: roleName,
15468
- classification: 'PUBLIC',
15469
- roleCategory: roleCategory,
15470
- grantType: 'CHALLENGED',
15471
- beginTime: new Date(),
15472
- endTime: new Date(new Date().setUTCHours(23, 59, 59, 999)),
15473
- attributes: {
15474
- caseId: caseId
15475
- },
15476
- notes: [{
15477
- userId: userInfo.id,
15478
- time: new Date(),
15479
- comment: JSON.stringify(car)
15480
- }
15481
- ]
15482
- }]
15483
- };
15484
- return this.http.post("" + this.appConfig.getCamRoleAssignmentsApiUrl(), payload);
15428
+ var beginTime = new Date();
15429
+ var endTime = new Date(new Date().setUTCHours(23, 59, 59, 999));
15430
+ var payload = camUtils.getAMPayload(userInfo.id, userInfo.id, roleName, roleCategory, 'CHALLENGED', caseId, car, beginTime, endTime);
15431
+ return this.http.post(this.appConfig.getCamRoleAssignmentsApiUrl() + "/challenged", payload);
15432
+ };
15433
+ CasesService.prototype.createSpecificAccessRequest = function (caseId, sar) {
15434
+ // Assignment API endpoint
15435
+ var userInfoStr = this.sessionStorageService.getItem('userDetails');
15436
+ var camUtils = new case_access_utils_1.CaseAccessUtils();
15437
+ var userInfo;
15438
+ if (userInfoStr) {
15439
+ userInfo = JSON.parse(userInfoStr);
15440
+ }
15441
+ var roleCategory = camUtils.getMappedRoleCategory(userInfo.roles, userInfo.roleCategories);
15442
+ var roleName = camUtils.getAMRoleName('specific', roleCategory);
15443
+ var payload = camUtils.getAMPayload(null, userInfo.id, roleName, roleCategory, 'SPECIFIC', caseId, sar);
15444
+ return this.http.post(this.appConfig.getCamRoleAssignmentsApiUrl() + "/specific", payload);
15485
15445
  };
15486
15446
  var CasesService_1;
15487
15447
  // Internal (UI) API
@@ -15494,10 +15454,6 @@ var CasesService = /** @class */ (function () {
15494
15454
  CasesService.V2_MEDIATYPE_CASE_DATA_VALIDATE = 'application/vnd.uk.gov.hmcts.ccd-data-store-api.case-data-validate.v2+json;charset=UTF-8';
15495
15455
  CasesService.V2_MEDIATYPE_CREATE_EVENT = 'application/vnd.uk.gov.hmcts.ccd-data-store-api.create-event.v2+json;charset=UTF-8';
15496
15456
  CasesService.V2_MEDIATYPE_CREATE_CASE = 'application/vnd.uk.gov.hmcts.ccd-data-store-api.create-case.v2+json;charset=UTF-8';
15497
- // Handling of Dynamic Lists in Complex Types
15498
- CasesService.SERVER_RESPONSE_FIELD_TYPE_COLLECTION = 'Collection';
15499
- CasesService.SERVER_RESPONSE_FIELD_TYPE_COMPLEX = 'Complex';
15500
- CasesService.SERVER_RESPONSE_FIELD_TYPE_DYNAMIC_LIST_TYPE = ['DynamicList', 'DynamicRadioList'];
15501
15457
  CasesService.PUI_CASE_MANAGER = 'pui-case-manager';
15502
15458
  CasesService = CasesService_1 = __decorate([
15503
15459
  core_1.Injectable(),
@@ -15954,6 +15910,7 @@ var CaseHeaderComponent = /** @class */ (function () {
15954
15910
  this.caseTitle = new domain_1.CaseField();
15955
15911
  if (!this.isDraft() && this.caseDetails.state.title_display) {
15956
15912
  this.caseTitle.label = this.caseDetails.state.title_display;
15913
+ this.label = this.caseTitle.label;
15957
15914
  this.caseFields = this.getCaseFields();
15958
15915
  }
15959
15916
  };
@@ -17367,6 +17324,7 @@ var directives_1 = __webpack_require__(66395);
17367
17324
  var domain_1 = __webpack_require__(59346);
17368
17325
  var services_1 = __webpack_require__(65010);
17369
17326
  var helpers_1 = __webpack_require__(23495);
17327
+ var models_1 = __webpack_require__(3234);
17370
17328
  var CaseFullAccessViewComponent = /** @class */ (function () {
17371
17329
  function CaseFullAccessViewComponent(ngZone, route, router, navigationNotifierService, orderService, activityPollingService, dialog, alertService, draftService, errorNotifierService, location) {
17372
17330
  this.ngZone = ngZone;
@@ -17383,6 +17341,7 @@ var CaseFullAccessViewComponent = /** @class */ (function () {
17383
17341
  this.hasPrint = true;
17384
17342
  this.hasEventSelector = true;
17385
17343
  this.prependedTabs = [];
17344
+ this.appendedTabs = [];
17386
17345
  this.BANNER = domain_1.DisplayMode.BANNER;
17387
17346
  this.triggerTextStart = CaseFullAccessViewComponent_1.TRIGGER_TEXT_START;
17388
17347
  this.triggerTextIgnoreWarnings = CaseFullAccessViewComponent_1.TRIGGER_TEXT_CONTINUE;
@@ -17472,7 +17431,7 @@ var CaseFullAccessViewComponent = /** @class */ (function () {
17472
17431
  }
17473
17432
  };
17474
17433
  CaseFullAccessViewComponent.prototype.hasTabsPresent = function () {
17475
- return this.sortedTabs.length > 0 || this.prependedTabs.length > 0;
17434
+ return this.sortedTabs.length > 0 || this.prependedTabs.length > 0 || this.appendedTabs.length > 0;
17476
17435
  };
17477
17436
  CaseFullAccessViewComponent.prototype.callbackErrorsNotify = function (callbackErrorsContext) {
17478
17437
  this.ignoreWarning = callbackErrorsContext.ignore_warning;
@@ -17495,16 +17454,35 @@ var CaseFullAccessViewComponent = /** @class */ (function () {
17495
17454
  var matTab;
17496
17455
  var url = this.location.path(true);
17497
17456
  var hashValue = url.substring(url.indexOf('#') + 1);
17498
- // if we have prepended tabs route to one of the prepended tabs
17499
- if (!url.includes('#') && this.prependedTabs && this.prependedTabs.length) {
17457
+ if (!url.includes('#')) {
17500
17458
  var paths = url.split('/');
17501
- var tabName_1 = decodeURIComponent(paths[paths.length - 1]);
17502
- var selectedTab_1 = this.prependedTabs.find(function (caseTab) { return caseTab.id.toLowerCase() === tabName_1.toLowerCase(); });
17503
- var tab = selectedTab_1 ? selectedTab_1.id : 'tasks';
17504
- this.router.navigate(['cases', 'case-details', this.caseDetails.case_id, tab]).then(function () {
17505
- matTab = _this.tabGroup._tabs.find(function (x) { return x.textLabel === selectedTab_1.label; });
17506
- _this.tabGroup.selectedIndex = matTab.position;
17507
- });
17459
+ // lastPath can be /caseId, or the tabs /tasks, /hearings etc.
17460
+ var lastPath_1 = decodeURIComponent(paths[paths.length - 1]);
17461
+ var foundTab_1 = null;
17462
+ var additionalTabs = this.prependedTabs.concat(this.appendedTabs);
17463
+ if (additionalTabs && additionalTabs.length) {
17464
+ foundTab_1 = additionalTabs.find(function (caseTab) { return caseTab.id.toLowerCase() === lastPath_1.toLowerCase(); });
17465
+ }
17466
+ // found tasks or hearing tab
17467
+ if (foundTab_1) {
17468
+ this.router.navigate(['cases', 'case-details', this.caseDetails.case_id, foundTab_1.id]).then(function () {
17469
+ matTab = _this.tabGroup._tabs.find(function (x) { return x.textLabel === foundTab_1.label; });
17470
+ if (matTab && matTab.position) {
17471
+ _this.tabGroup.selectedIndex = matTab.position;
17472
+ }
17473
+ });
17474
+ // last path is caseId
17475
+ }
17476
+ else {
17477
+ // sort with the order of CCD predefined tabs
17478
+ this.caseDetails.tabs.sort(function (aTab, bTab) { return aTab.order > bTab.order ? 1 : (bTab.order > aTab.order ? -1 : 0); });
17479
+ // preselect the 1st order of CCD predefined tabs
17480
+ var preSelectTab_1 = this.caseDetails.tabs[0];
17481
+ this.router.navigate(['cases', 'case-details', this.caseDetails.case_id]).then(function () {
17482
+ matTab = _this.tabGroup._tabs.find(function (x) { return x.textLabel === preSelectTab_1.label; });
17483
+ _this.tabGroup.selectedIndex = matTab.position;
17484
+ });
17485
+ }
17508
17486
  }
17509
17487
  else {
17510
17488
  var regExp = new RegExp(CaseFullAccessViewComponent_1.UNICODE_SPACE, 'g');
@@ -17518,10 +17496,34 @@ var CaseFullAccessViewComponent = /** @class */ (function () {
17518
17496
  }
17519
17497
  }
17520
17498
  };
17499
+ Object.defineProperty(CaseFullAccessViewComponent.prototype, "specificAccessType", {
17500
+ get: function () {
17501
+ var response = models_1.SpecificAccessType.NONE;
17502
+ if (this.caseDetails.access) {
17503
+ var thisMoment = new Date().getTime();
17504
+ var beginTime = new Date(this.caseDetails.access.beginTime).getTime();
17505
+ var endTime = new Date(this.caseDetails.access.endTime).getTime();
17506
+ if (beginTime < thisMoment && !endTime) {
17507
+ response = models_1.SpecificAccessType.INDEFINITE;
17508
+ }
17509
+ else if (beginTime < thisMoment) {
17510
+ response = models_1.SpecificAccessType.INPROGRESS;
17511
+ }
17512
+ else {
17513
+ response = models_1.SpecificAccessType.FUTURE;
17514
+ }
17515
+ }
17516
+ return response;
17517
+ },
17518
+ enumerable: true,
17519
+ configurable: true
17520
+ });
17521
17521
  CaseFullAccessViewComponent.prototype.tabChanged = function (tabChangeEvent) {
17522
17522
  var tab = tabChangeEvent.tab['_viewContainerRef'];
17523
17523
  var id = tab.element.nativeElement.id;
17524
- if (tabChangeEvent.index <= 1 && this.prependedTabs.length) {
17524
+ var tabsLengthBeforeAppended = this.prependedTabs.length + this.caseDetails.tabs.length;
17525
+ if ((tabChangeEvent.index <= 1 && this.prependedTabs.length) ||
17526
+ (tabChangeEvent.index >= tabsLengthBeforeAppended && this.appendedTabs.length)) {
17525
17527
  this.router.navigate([id], { relativeTo: this.route });
17526
17528
  }
17527
17529
  else {
@@ -17604,6 +17606,10 @@ var CaseFullAccessViewComponent = /** @class */ (function () {
17604
17606
  core_1.Input(),
17605
17607
  __metadata("design:type", Array)
17606
17608
  ], CaseFullAccessViewComponent.prototype, "prependedTabs", void 0);
17609
+ __decorate([
17610
+ core_1.Input(),
17611
+ __metadata("design:type", Array)
17612
+ ], CaseFullAccessViewComponent.prototype, "appendedTabs", void 0);
17607
17613
  __decorate([
17608
17614
  core_1.ViewChild('tabGroup'),
17609
17615
  __metadata("design:type", material_1.MatTabGroup)
@@ -17645,6 +17651,227 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
17645
17651
  __export(__webpack_require__(76764));
17646
17652
 
17647
17653
 
17654
+ /***/ }),
17655
+
17656
+ /***/ 12231:
17657
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
17658
+
17659
+ "use strict";
17660
+
17661
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
17662
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
17663
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
17664
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
17665
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
17666
+ };
17667
+ var __metadata = (this && this.__metadata) || function (k, v) {
17668
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
17669
+ };
17670
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
17671
+ var core_1 = __webpack_require__(57208);
17672
+ var router_1 = __webpack_require__(92302);
17673
+ var CaseReviewSpecificAccessRejectComponent = /** @class */ (function () {
17674
+ function CaseReviewSpecificAccessRejectComponent(route) {
17675
+ this.route = route;
17676
+ this.retunToTask = 'Return to the Tasks tab for this case';
17677
+ this.returnToMyTask = 'Return to My tasks';
17678
+ }
17679
+ CaseReviewSpecificAccessRejectComponent.prototype.ngOnInit = function () {
17680
+ this.caseId = this.route.snapshot.data.case.case_id;
17681
+ };
17682
+ CaseReviewSpecificAccessRejectComponent = __decorate([
17683
+ core_1.Component({
17684
+ selector: 'case-review-specific-access-reject',
17685
+ template: __webpack_require__(24959)
17686
+ }),
17687
+ __metadata("design:paramtypes", [router_1.ActivatedRoute])
17688
+ ], CaseReviewSpecificAccessRejectComponent);
17689
+ return CaseReviewSpecificAccessRejectComponent;
17690
+ }());
17691
+ exports.CaseReviewSpecificAccessRejectComponent = CaseReviewSpecificAccessRejectComponent;
17692
+
17693
+
17694
+ /***/ }),
17695
+
17696
+ /***/ 84766:
17697
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
17698
+
17699
+ "use strict";
17700
+
17701
+ function __export(m) {
17702
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
17703
+ }
17704
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
17705
+ __export(__webpack_require__(12231));
17706
+
17707
+
17708
+ /***/ }),
17709
+
17710
+ /***/ 24212:
17711
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
17712
+
17713
+ "use strict";
17714
+
17715
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
17716
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
17717
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
17718
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
17719
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
17720
+ };
17721
+ var __metadata = (this && this.__metadata) || function (k, v) {
17722
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
17723
+ };
17724
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
17725
+ var core_1 = __webpack_require__(57208);
17726
+ var forms_1 = __webpack_require__(92985);
17727
+ var router_1 = __webpack_require__(92302);
17728
+ var models_1 = __webpack_require__(46909);
17729
+ var app_config_1 = __webpack_require__(35185);
17730
+ var CaseReviewSpecificAccessRequestComponent = /** @class */ (function () {
17731
+ function CaseReviewSpecificAccessRequestComponent(fb, route, router, appConfig) {
17732
+ this.fb = fb;
17733
+ this.route = route;
17734
+ this.router = router;
17735
+ this.appConfig = appConfig;
17736
+ this.collapsed = false;
17737
+ this.submitted = false;
17738
+ this.genericError = 'There is a problem';
17739
+ this.radioSelectedControlName = 'radioSelected';
17740
+ this.accessReasons = [
17741
+ { reason: models_1.AccessReason.APPROVE_REQUEST, checked: false },
17742
+ { reason: models_1.AccessReason.REJECT_REQUEST, checked: false },
17743
+ { reason: models_1.AccessReason.REQUEST_MORE_INFORMATION, checked: false },
17744
+ ];
17745
+ }
17746
+ CaseReviewSpecificAccessRequestComponent.prototype.ngOnInit = function () {
17747
+ // TODO: this ticket is blocked so mocked with those data to go through, they will be removed and implimented with actual data
17748
+ // when dependency resolved
17749
+ this.setMockData();
17750
+ this.title = models_1.ReviewSpecificAccessRequestPageText.TITLE;
17751
+ this.hint = models_1.ReviewSpecificAccessRequestPageText.HINT;
17752
+ this.caseRefLabel = models_1.ReviewSpecificAccessRequestPageText.CASE_REF;
17753
+ this.formGroup = this.fb.group({
17754
+ radioSelected: new forms_1.FormControl(null, forms_1.Validators.required),
17755
+ });
17756
+ };
17757
+ CaseReviewSpecificAccessRequestComponent.prototype.ngOnDestroy = function () {
17758
+ if (this.caseSubscription) {
17759
+ this.caseSubscription.unsubscribe();
17760
+ }
17761
+ };
17762
+ CaseReviewSpecificAccessRequestComponent.prototype.onChange = function () {
17763
+ this.submitted = false;
17764
+ };
17765
+ CaseReviewSpecificAccessRequestComponent.prototype.onSubmit = function () {
17766
+ this.submitted = true;
17767
+ if (this.formGroup.get(this.radioSelectedControlName).invalid) {
17768
+ this.errorMessage = {
17769
+ title: this.genericError,
17770
+ description: models_1.ReviewSpecificAccessRequestErrors.NO_SELECTION,
17771
+ };
17772
+ }
17773
+ // Initiate Review Access Request
17774
+ if (this.formGroup.valid) {
17775
+ // Get the Case Reference (for which access is being requested) from the ActivatedRouteSnapshot data
17776
+ var caseId = this.route.snapshot.data.case.case_id;
17777
+ var radioSelectedValue = this.formGroup.get(this.radioSelectedControlName).value;
17778
+ // Get the index of the selected AccessReason enum value. Can't use Object.values because it's not available in
17779
+ // < ES2017!
17780
+ var reasonNumber = Object.keys(models_1.AccessReason)
17781
+ .map(function (e) { return models_1.AccessReason[e]; })
17782
+ .indexOf(radioSelectedValue);
17783
+ // request model created , it will be used for submission part
17784
+ var challengedAccessRequest = {
17785
+ reason: reasonNumber,
17786
+ caseId: caseId,
17787
+ };
17788
+ if (models_1.AccessReason.REJECT_REQUEST === radioSelectedValue) {
17789
+ this.router.navigate(['rejected'], { relativeTo: this.route });
17790
+ }
17791
+ }
17792
+ };
17793
+ CaseReviewSpecificAccessRequestComponent.prototype.onCancel = function () {
17794
+ // Navigate to the page before previous one (should be Search Results or Case List page, for example)
17795
+ window.history.go(-1);
17796
+ };
17797
+ // remove once Access management goes live
17798
+ CaseReviewSpecificAccessRequestComponent.prototype.setMockData = function () {
17799
+ var requestAccessDetailsMock = this.appConfig.getAccessManagementRequestReviewMockModel();
17800
+ if (requestAccessDetailsMock.active) {
17801
+ this.requestAccessDetails = requestAccessDetailsMock.details;
17802
+ }
17803
+ };
17804
+ CaseReviewSpecificAccessRequestComponent = __decorate([
17805
+ core_1.Component({
17806
+ selector: 'ccd-case-review-specific-access-request',
17807
+ template: __webpack_require__(42467),
17808
+ styles: [__webpack_require__(76883)]
17809
+ }),
17810
+ __metadata("design:paramtypes", [forms_1.FormBuilder,
17811
+ router_1.ActivatedRoute,
17812
+ router_1.Router,
17813
+ app_config_1.AbstractAppConfig])
17814
+ ], CaseReviewSpecificAccessRequestComponent);
17815
+ return CaseReviewSpecificAccessRequestComponent;
17816
+ }());
17817
+ exports.CaseReviewSpecificAccessRequestComponent = CaseReviewSpecificAccessRequestComponent;
17818
+
17819
+
17820
+ /***/ }),
17821
+
17822
+ /***/ 83444:
17823
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
17824
+
17825
+ "use strict";
17826
+
17827
+ function __export(m) {
17828
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
17829
+ }
17830
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
17831
+ __export(__webpack_require__(24212));
17832
+
17833
+
17834
+ /***/ }),
17835
+
17836
+ /***/ 16206:
17837
+ /***/ ((__unused_webpack_module, exports) => {
17838
+
17839
+ "use strict";
17840
+
17841
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
17842
+ var AccessReason;
17843
+ (function (AccessReason) {
17844
+ AccessReason["APPROVE_REQUEST"] = "Approve request";
17845
+ AccessReason["REJECT_REQUEST"] = "Reject request";
17846
+ AccessReason["REQUEST_MORE_INFORMATION"] = "Request more information";
17847
+ })(AccessReason = exports.AccessReason || (exports.AccessReason = {}));
17848
+ var ReviewSpecificAccessRequestPageText;
17849
+ (function (ReviewSpecificAccessRequestPageText) {
17850
+ ReviewSpecificAccessRequestPageText["TITLE"] = "Review specific access request";
17851
+ ReviewSpecificAccessRequestPageText["HINT"] = "What do you want to do with this request?";
17852
+ ReviewSpecificAccessRequestPageText["CASE_REF"] = "Case reference";
17853
+ })(ReviewSpecificAccessRequestPageText = exports.ReviewSpecificAccessRequestPageText || (exports.ReviewSpecificAccessRequestPageText = {}));
17854
+ var ReviewSpecificAccessRequestErrors;
17855
+ (function (ReviewSpecificAccessRequestErrors) {
17856
+ ReviewSpecificAccessRequestErrors["NO_SELECTION"] = "Select an option";
17857
+ ReviewSpecificAccessRequestErrors["GENERIC_ERROR"] = "There is a problem";
17858
+ })(ReviewSpecificAccessRequestErrors = exports.ReviewSpecificAccessRequestErrors || (exports.ReviewSpecificAccessRequestErrors = {}));
17859
+
17860
+
17861
+ /***/ }),
17862
+
17863
+ /***/ 46909:
17864
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
17865
+
17866
+ "use strict";
17867
+
17868
+ function __export(m) {
17869
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
17870
+ }
17871
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
17872
+ __export(__webpack_require__(16206));
17873
+
17874
+
17648
17875
  /***/ }),
17649
17876
 
17650
17877
  /***/ 38692:
@@ -17665,11 +17892,13 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
17665
17892
  var core_1 = __webpack_require__(57208);
17666
17893
  var forms_1 = __webpack_require__(92985);
17667
17894
  var router_1 = __webpack_require__(92302);
17895
+ var case_editor_1 = __webpack_require__(27070);
17668
17896
  var models_1 = __webpack_require__(3234);
17669
17897
  var CaseSpecificAccessRequestComponent = /** @class */ (function () {
17670
- function CaseSpecificAccessRequestComponent(fb, router, route) {
17898
+ function CaseSpecificAccessRequestComponent(fb, router, casesService, route) {
17671
17899
  this.fb = fb;
17672
17900
  this.router = router;
17901
+ this.casesService = casesService;
17673
17902
  this.route = route;
17674
17903
  this.collapsed = false;
17675
17904
  this.submitted = false;
@@ -17707,6 +17936,7 @@ var CaseSpecificAccessRequestComponent = /** @class */ (function () {
17707
17936
  this.formGroup.get(this.specificReasonControlName).setValue('');
17708
17937
  };
17709
17938
  CaseSpecificAccessRequestComponent.prototype.onSubmit = function () {
17939
+ var _this = this;
17710
17940
  this.submitted = true;
17711
17941
  if (this.formGroup.get(this.specificReasonControlName).invalid) {
17712
17942
  this.errorMessage = {
@@ -17715,6 +17945,22 @@ var CaseSpecificAccessRequestComponent = /** @class */ (function () {
17715
17945
  fieldId: 'specific-reason',
17716
17946
  };
17717
17947
  }
17948
+ // Initiate Specific Access Request
17949
+ if (this.formGroup.valid) {
17950
+ // Get the Case Reference (for which access is being requested) from the ActivatedRouteSnapshot data
17951
+ var caseId = this.route.snapshot.data.case.case_id;
17952
+ var specificAccessRequest = {
17953
+ specificReason: this.formGroup.get(this.specificReasonControlName).value
17954
+ };
17955
+ this.$roleAssignmentResponseSubscription = this.casesService.createSpecificAccessRequest(caseId, specificAccessRequest)
17956
+ .subscribe(function (_response) {
17957
+ // Would have been nice to pass the caseId within state.data, but this isn't part of NavigationExtras until
17958
+ // Angular 7.2!
17959
+ _this.router.navigate(['success'], { relativeTo: _this.route });
17960
+ }, function (_error) {
17961
+ // Navigate to error page
17962
+ });
17963
+ }
17718
17964
  };
17719
17965
  CaseSpecificAccessRequestComponent.prototype.onCancel = function () {
17720
17966
  // Navigate to the page before previous one (should be Search Results or Case List page, for example)
@@ -17732,6 +17978,7 @@ var CaseSpecificAccessRequestComponent = /** @class */ (function () {
17732
17978
  }),
17733
17979
  __metadata("design:paramtypes", [forms_1.FormBuilder,
17734
17980
  router_1.Router,
17981
+ case_editor_1.CasesService,
17735
17982
  router_1.ActivatedRoute])
17736
17983
  ], CaseSpecificAccessRequestComponent);
17737
17984
  return CaseSpecificAccessRequestComponent;
@@ -17771,6 +18018,13 @@ var SpecificAccessRequestErrors;
17771
18018
  (function (SpecificAccessRequestErrors) {
17772
18019
  SpecificAccessRequestErrors["NO_REASON"] = "Enter a reason";
17773
18020
  })(SpecificAccessRequestErrors = exports.SpecificAccessRequestErrors || (exports.SpecificAccessRequestErrors = {}));
18021
+ var SpecificAccessType;
18022
+ (function (SpecificAccessType) {
18023
+ SpecificAccessType[SpecificAccessType["NONE"] = 0] = "NONE";
18024
+ SpecificAccessType[SpecificAccessType["INPROGRESS"] = 1] = "INPROGRESS";
18025
+ SpecificAccessType[SpecificAccessType["FUTURE"] = 2] = "FUTURE";
18026
+ SpecificAccessType[SpecificAccessType["INDEFINITE"] = 3] = "INDEFINITE";
18027
+ })(SpecificAccessType = exports.SpecificAccessType || (exports.SpecificAccessType = {}));
17774
18028
 
17775
18029
 
17776
18030
  /***/ }),
@@ -17919,6 +18173,17 @@ __export(__webpack_require__(76979));
17919
18173
 
17920
18174
  "use strict";
17921
18175
 
18176
+ var __assign = (this && this.__assign) || function () {
18177
+ __assign = Object.assign || function(t) {
18178
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
18179
+ s = arguments[i];
18180
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
18181
+ t[p] = s[p];
18182
+ }
18183
+ return t;
18184
+ };
18185
+ return __assign.apply(this, arguments);
18186
+ };
17922
18187
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
17923
18188
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
17924
18189
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -17942,6 +18207,7 @@ var CaseViewerComponent = /** @class */ (function () {
17942
18207
  this.hasPrint = true;
17943
18208
  this.hasEventSelector = true;
17944
18209
  this.prependedTabs = [];
18210
+ this.appendedTabs = [];
17945
18211
  }
17946
18212
  CaseViewerComponent_1 = CaseViewerComponent;
17947
18213
  CaseViewerComponent.prototype.ngOnInit = function () {
@@ -17985,7 +18251,7 @@ var CaseViewerComponent = /** @class */ (function () {
17985
18251
  // remove once Access management goes live
17986
18252
  CaseViewerComponent.prototype.setMockData = function (caseDetails) {
17987
18253
  var accessManagementBasicViewMock = this.appConfig.getAccessManagementBasicViewMock();
17988
- if (accessManagementBasicViewMock.active && !caseDetails.basicFields) {
18254
+ if (accessManagementBasicViewMock && accessManagementBasicViewMock.active && !caseDetails.basicFields) {
17989
18255
  var access_process_index = caseDetails.metadataFields.findIndex(function (metadataField) {
17990
18256
  return metadataField.id === CaseViewerComponent_1.METADATA_FIELD_ACCESS_PROCEES_ID;
17991
18257
  });
@@ -18004,6 +18270,14 @@ var CaseViewerComponent = /** @class */ (function () {
18004
18270
  }
18005
18271
  caseDetails.basicFields = accessManagementBasicViewMock.basicFields;
18006
18272
  }
18273
+ var accessManagementMockData = this.appConfig.getAccessManagemenViewCaseMock();
18274
+ if (accessManagementMockData.active && accessManagementMockData.scenarios['caseBanner']) {
18275
+ var caseIds = accessManagementMockData.scenarios['caseBanner'];
18276
+ if (caseIds.indexOf(this.caseDetails.case_id) > -1) {
18277
+ var access = { access: accessManagementMockData.data['caseBanner'][this.caseDetails.case_id] };
18278
+ this.caseDetails = __assign({}, this.caseDetails, access);
18279
+ }
18280
+ }
18007
18281
  };
18008
18282
  var CaseViewerComponent_1;
18009
18283
  CaseViewerComponent.METADATA_FIELD_ACCESS_PROCEES_ID = '[ACCESS_PROCESS]';
@@ -18020,6 +18294,10 @@ var CaseViewerComponent = /** @class */ (function () {
18020
18294
  core_1.Input(),
18021
18295
  __metadata("design:type", Array)
18022
18296
  ], CaseViewerComponent.prototype, "prependedTabs", void 0);
18297
+ __decorate([
18298
+ core_1.Input(),
18299
+ __metadata("design:type", Array)
18300
+ ], CaseViewerComponent.prototype, "appendedTabs", void 0);
18023
18301
  __decorate([
18024
18302
  core_1.Input(),
18025
18303
  __metadata("design:type", domain_1.CaseView)
@@ -18074,12 +18352,14 @@ var case_basic_access_view_component_1 = __webpack_require__(42906);
18074
18352
  var case_challenged_access_request_component_1 = __webpack_require__(70776);
18075
18353
  var case_challenged_access_success_component_1 = __webpack_require__(41969);
18076
18354
  var case_specific_access_request_component_1 = __webpack_require__(38692);
18355
+ var case_review_specific_access_request_component_1 = __webpack_require__(24212);
18077
18356
  var case_event_trigger_1 = __webpack_require__(92100);
18078
18357
  var case_full_access_view_component_1 = __webpack_require__(76764);
18079
18358
  var case_view_1 = __webpack_require__(65389);
18080
18359
  var case_viewer_component_1 = __webpack_require__(89554);
18081
18360
  var printer_1 = __webpack_require__(65773);
18082
18361
  var services_2 = __webpack_require__(50137);
18362
+ var case_review_specific_access_reject_1 = __webpack_require__(84766);
18083
18363
  var CaseViewerModule = /** @class */ (function () {
18084
18364
  function CaseViewerModule() {
18085
18365
  }
@@ -18115,8 +18395,10 @@ var CaseViewerModule = /** @class */ (function () {
18115
18395
  printer_1.PrintUrlPipe,
18116
18396
  case_challenged_access_request_component_1.CaseChallengedAccessRequestComponent,
18117
18397
  case_specific_access_request_component_1.CaseSpecificAccessRequestComponent,
18398
+ case_review_specific_access_request_component_1.CaseReviewSpecificAccessRequestComponent,
18118
18399
  error_message_component_1.ErrorMessageComponent,
18119
- case_challenged_access_success_component_1.CaseChallengedAccessSuccessComponent
18400
+ case_challenged_access_success_component_1.CaseChallengedAccessSuccessComponent,
18401
+ case_review_specific_access_reject_1.CaseReviewSpecificAccessRejectComponent
18120
18402
  ],
18121
18403
  exports: [
18122
18404
  case_viewer_component_1.CaseViewerComponent,
@@ -18567,9 +18849,11 @@ var file_upload_progress_guard_1 = __webpack_require__(27667);
18567
18849
  var case_challenged_access_request_1 = __webpack_require__(38403);
18568
18850
  var case_challenged_access_success_1 = __webpack_require__(26840);
18569
18851
  var case_specific_access_request_1 = __webpack_require__(73343);
18852
+ var case_review_specific_access_request_1 = __webpack_require__(83444);
18570
18853
  var case_event_trigger_component_1 = __webpack_require__(83645);
18571
18854
  var printer_1 = __webpack_require__(65773);
18572
18855
  var services_1 = __webpack_require__(50137);
18856
+ var case_review_specific_access_reject_1 = __webpack_require__(84766);
18573
18857
  exports.viewerRouting = [
18574
18858
  {
18575
18859
  path: 'print',
@@ -18578,11 +18862,11 @@ exports.viewerRouting = [
18578
18862
  {
18579
18863
  path: 'trigger/:eid',
18580
18864
  resolve: {
18581
- eventTrigger: services_1.EventTriggerResolver
18865
+ eventTrigger: services_1.EventTriggerResolver,
18582
18866
  },
18583
18867
  component: case_event_trigger_component_1.CaseEventTriggerComponent,
18584
18868
  children: case_editor_1.editorRouting,
18585
- canDeactivate: [file_upload_progress_guard_1.FileUploadProgressGuard]
18869
+ canDeactivate: [file_upload_progress_guard_1.FileUploadProgressGuard],
18586
18870
  },
18587
18871
  {
18588
18872
  path: 'event/:eid/history',
@@ -18595,18 +18879,18 @@ exports.viewerRouting = [
18595
18879
  path: '',
18596
18880
  component: case_challenged_access_request_1.CaseChallengedAccessRequestComponent,
18597
18881
  data: {
18598
- title: 'Request Challenged Access'
18882
+ title: 'Request Challenged Access',
18599
18883
  },
18600
- pathMatch: 'full'
18884
+ pathMatch: 'full',
18601
18885
  },
18602
18886
  {
18603
18887
  path: 'success',
18604
18888
  component: case_challenged_access_success_1.CaseChallengedAccessSuccessComponent,
18605
18889
  data: {
18606
- title: 'Challenged Access Success'
18607
- }
18608
- }
18609
- ]
18890
+ title: 'Challenged Access Success',
18891
+ },
18892
+ },
18893
+ ],
18610
18894
  },
18611
18895
  {
18612
18896
  path: 'specific-access-request',
@@ -18615,12 +18899,32 @@ exports.viewerRouting = [
18615
18899
  path: '',
18616
18900
  component: case_specific_access_request_1.CaseSpecificAccessRequestComponent,
18617
18901
  data: {
18618
- title: 'Request Specific Access'
18902
+ title: 'Request Specific Access',
18619
18903
  },
18620
- pathMatch: 'full'
18904
+ pathMatch: 'full',
18905
+ },
18906
+ ],
18907
+ },
18908
+ {
18909
+ path: 'review-specific-access-request',
18910
+ children: [
18911
+ {
18912
+ path: '',
18913
+ component: case_review_specific_access_request_1.CaseReviewSpecificAccessRequestComponent,
18914
+ data: {
18915
+ title: 'Request Specific Access',
18916
+ },
18917
+ pathMatch: 'full',
18918
+ },
18919
+ {
18920
+ path: 'rejected',
18921
+ component: case_review_specific_access_reject_1.CaseReviewSpecificAccessRejectComponent,
18922
+ data: {
18923
+ title: 'Review Access Rejected'
18924
+ }
18621
18925
  }
18622
- ]
18623
- }
18926
+ ],
18927
+ },
18624
18928
  ];
18625
18929
 
18626
18930
 
@@ -21599,6 +21903,10 @@ var ReadFieldsFilterPipe = /** @class */ (function () {
21599
21903
  return !!hasChildrenWithValue;
21600
21904
  };
21601
21905
  ReadFieldsFilterPipe.isValidCollection = function (field, values) {
21906
+ // if field is collection and it has complex/collection child field; parent field doesnt have value defined
21907
+ if (!Array.isArray(field.value) && values && values.hasOwnProperty(field.id)) {
21908
+ return true;
21909
+ }
21602
21910
  var isNotEmpty = Array.isArray(field.value) && field.value.length > 0;
21603
21911
  if (isNotEmpty && field.field_type.collection_field_type.type === 'Complex') {
21604
21912
  return !!field.value.find(function (item) {
@@ -21822,7 +22130,7 @@ var CcdPageFieldsPipe = /** @class */ (function () {
21822
22130
  return control['caseField'];
21823
22131
  }).filter(function (field) {
21824
22132
  return !!page.case_fields.find(function (pcf) { return pcf.id === field.id; });
21825
- });
22133
+ }).sort(function (a, b) { return a.order - b.order; });
21826
22134
  var rawValue = dataFormGroup.value;
21827
22135
  var value = page.case_fields.reduce(function (acc, field) {
21828
22136
  var _a;
@@ -29426,16 +29734,18 @@ var WorkbasketFiltersComponent = /** @class */ (function () {
29426
29734
  var formGroupLS = JSON.parse(this.windowService.getLocalStorage(FORM_GROUP_VAL_LOC_STORAGE));
29427
29735
  // Form group local storage is available and contains regionList property
29428
29736
  if (util_1.isDefined(formGroupLS) && formGroupLS.hasOwnProperty(REGION_LIST_AND_FRC_FILTER)) {
29429
- // If regionList value does not match between local storage and form group
29430
- // then the filter value has been changed and we need to clear the old filter values
29431
- if (formGroupLS[REGION_LIST_AND_FRC_FILTER] !== this.formGroup.get(REGION_LIST_AND_FRC_FILTER).value) {
29432
- for (var key in formGroupLS) {
29433
- if (formGroupLS.hasOwnProperty(key)) {
29434
- var value = formGroupLS[key];
29435
- // Clear the filter form group control values if it has a value in local storage
29436
- // The regionList form group control value should be ignored as it always contain the latest value
29437
- if (key !== REGION_LIST_AND_FRC_FILTER && value != null) {
29438
- this.formGroup.get(key).setValue(null);
29737
+ if (this.formGroup.get(REGION_LIST_AND_FRC_FILTER)) {
29738
+ // If regionList value does not match between local storage and form group
29739
+ // then the filter value has been changed and we need to clear the old filter values
29740
+ if (formGroupLS[REGION_LIST_AND_FRC_FILTER] !== this.formGroup.get(REGION_LIST_AND_FRC_FILTER).value) {
29741
+ for (var key in formGroupLS) {
29742
+ if (formGroupLS.hasOwnProperty(key)) {
29743
+ var value = formGroupLS[key];
29744
+ // Clear the filter form group control values if it has a value in local storage
29745
+ // The regionList form group control value should be ignored as it always contain the latest value
29746
+ if (key !== REGION_LIST_AND_FRC_FILTER && value != null) {
29747
+ this.formGroup.get(key).setValue(null);
29748
+ }
29439
29749
  }
29440
29750
  }
29441
29751
  }
@@ -34828,6 +35138,17 @@ exports.FieldsPurger = FieldsPurger;
34828
35138
 
34829
35139
  "use strict";
34830
35140
 
35141
+ var __assign = (this && this.__assign) || function () {
35142
+ __assign = Object.assign || function(t) {
35143
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
35144
+ s = arguments[i];
35145
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
35146
+ t[p] = s[p];
35147
+ }
35148
+ return t;
35149
+ };
35150
+ return __assign.apply(this, arguments);
35151
+ };
34831
35152
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
34832
35153
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
34833
35154
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -34971,6 +35292,74 @@ var FieldsUtils = /** @class */ (function () {
34971
35292
  : typeof x === 'number' || x.length > 0)); });
34972
35293
  return !hasNonNullPrimitive ? objectRefs.some(function (y) { return _this.containsNonEmptyValues(y); }) : hasNonNullPrimitive;
34973
35294
  };
35295
+ /**
35296
+ * handleNestedDynamicLists()
35297
+ * Reassigns list_item and value data to DynamicList children
35298
+ * down the tree. Server response returns data only in
35299
+ * the `value` object of parent complex type
35300
+ *
35301
+ * EUI-2530 Dynamic Lists for Elements in a Complex Type
35302
+ *
35303
+ * @param jsonBody - { case_fields: [ CaseField, CaseField ] }
35304
+ */
35305
+ FieldsUtils.handleNestedDynamicLists = function (jsonBody) {
35306
+ var _this = this;
35307
+ if (jsonBody.case_fields) {
35308
+ jsonBody.case_fields.forEach(function (caseField) {
35309
+ if (caseField.field_type) {
35310
+ _this.setDynamicListDefinition(caseField, caseField.field_type, caseField);
35311
+ }
35312
+ });
35313
+ }
35314
+ return jsonBody;
35315
+ };
35316
+ FieldsUtils.setDynamicListDefinition = function (caseField, caseFieldType, rootCaseField) {
35317
+ var _this = this;
35318
+ if (caseFieldType.type === FieldsUtils_1.SERVER_RESPONSE_FIELD_TYPE_COMPLEX) {
35319
+ caseFieldType.complex_fields.forEach(function (field) {
35320
+ try {
35321
+ var isDynamicField = FieldsUtils_1.SERVER_RESPONSE_FIELD_TYPE_DYNAMIC_LIST_TYPE.indexOf(field.field_type.type) !== -1;
35322
+ if (isDynamicField) {
35323
+ var dynamicListValue = _this.getDynamicListValue(rootCaseField.value, field.id);
35324
+ if (dynamicListValue) {
35325
+ var list_items = dynamicListValue.list_items;
35326
+ var complexValue = dynamicListValue.value;
35327
+ var value = {
35328
+ list_items: list_items,
35329
+ value: complexValue ? complexValue : undefined
35330
+ };
35331
+ field.value = __assign({}, value);
35332
+ field.formatted_value = __assign({}, field.formatted_value, value);
35333
+ }
35334
+ }
35335
+ else {
35336
+ _this.setDynamicListDefinition(field, field.field_type, rootCaseField);
35337
+ }
35338
+ }
35339
+ catch (error) {
35340
+ console.log(error);
35341
+ }
35342
+ });
35343
+ }
35344
+ else if (caseFieldType.type === FieldsUtils_1.SERVER_RESPONSE_FIELD_TYPE_COLLECTION) {
35345
+ if (caseFieldType.collection_field_type) {
35346
+ this.setDynamicListDefinition(caseField, caseFieldType.collection_field_type, rootCaseField);
35347
+ }
35348
+ }
35349
+ };
35350
+ FieldsUtils.getDynamicListValue = function (jsonBlock, key) {
35351
+ if (jsonBlock[key]) {
35352
+ return jsonBlock[key];
35353
+ }
35354
+ else {
35355
+ for (var elementKey in jsonBlock) {
35356
+ if (typeof jsonBlock === 'object' && jsonBlock.hasOwnProperty(elementKey)) {
35357
+ return this.getDynamicListValue(jsonBlock[elementKey], key);
35358
+ }
35359
+ }
35360
+ }
35361
+ return null;
35362
+ };
34974
35363
  FieldsUtils.prototype.buildCanShowPredicate = function (eventTrigger, form) {
34975
35364
  var currentState = this.getCurrentEventState(eventTrigger, form);
34976
35365
  return function (page) {
@@ -35016,6 +35405,10 @@ var FieldsUtils = /** @class */ (function () {
35016
35405
  FieldsUtils.datePipe = new utils_1.DatePipe(new format_translator_service_1.FormatTranslatorService());
35017
35406
  // EUI-4244. 3 dashes instead of 1 to make this less likely to clash with a real field.
35018
35407
  FieldsUtils.LABEL_SUFFIX = '---LABEL';
35408
+ // Handling of Dynamic Lists in Complex Types
35409
+ FieldsUtils.SERVER_RESPONSE_FIELD_TYPE_COLLECTION = 'Collection';
35410
+ FieldsUtils.SERVER_RESPONSE_FIELD_TYPE_COMPLEX = 'Complex';
35411
+ FieldsUtils.SERVER_RESPONSE_FIELD_TYPE_DYNAMIC_LIST_TYPE = ['DynamicList', 'DynamicRadioList'];
35019
35412
  FieldsUtils.DEFAULT_MERGE_FUNCTION = function mergeFunction(field, result) {
35020
35413
  if (!result.hasOwnProperty(field.id)) {
35021
35414
  result[field.id] = field.value;
@@ -35794,6 +36187,8 @@ var FormValueService = /** @class */ (function () {
35794
36187
  }
35795
36188
  break;
35796
36189
  case 'Collection':
36190
+ // Check for valid collection data
36191
+ this.removeInvalidCollectionData(data, field);
35797
36192
  // Get hold of the collection.
35798
36193
  var collection = data[field.id];
35799
36194
  // Check if we actually have a collection to work with.
@@ -35819,6 +36214,22 @@ var FormValueService = /** @class */ (function () {
35819
36214
  // Clear out any MultiSelect labels.
35820
36215
  FormValueService_1.removeMultiSelectLabels(data);
35821
36216
  };
36217
+ /**
36218
+ * Remove any empty or invalid arry with only id
36219
+ *
36220
+ * @param data The object tree of form values on which to perform the removal
36221
+ * @param field {@link CaseField} domain model object for each field
36222
+ */
36223
+ FormValueService.prototype.removeInvalidCollectionData = function (data, field) {
36224
+ if (data[field.id] && data[field.id].length > 0) {
36225
+ for (var _i = 0, _a = data[field.id]; _i < _a.length; _i++) {
36226
+ var objCollection = _a[_i];
36227
+ if (Object.keys(objCollection).length === 1 && Object.keys(objCollection).indexOf('id') > -1) {
36228
+ data[field.id] = [];
36229
+ }
36230
+ }
36231
+ }
36232
+ };
35822
36233
  /**
35823
36234
  * Remove any empty collection fields where a value of greater than zero is specified in the field's {@link FieldType}
35824
36235
  * `min` attribute.
@@ -38434,6 +38845,21 @@ exports.push([module.id, "th{width:1%;white-space:nowrap;vertical-align:top}.com
38434
38845
  // exports
38435
38846
 
38436
38847
 
38848
+ /***/ }),
38849
+
38850
+ /***/ 14342:
38851
+ /***/ ((module, exports, __webpack_require__) => {
38852
+
38853
+ exports = module.exports = __webpack_require__(9252)(false);
38854
+ // imports
38855
+
38856
+
38857
+ // module
38858
+ exports.push([module.id, ".left-label{width:220px}\n", ""]);
38859
+
38860
+ // exports
38861
+
38862
+
38437
38863
  /***/ }),
38438
38864
 
38439
38865
  /***/ 10082:
@@ -64594,7 +65020,7 @@ module.exports = "<div *ngIf=\"isDataLoaded()\">\n <ccd-case-edit [submit]=\"
64594
65020
  /***/ 59541:
64595
65021
  /***/ ((module) => {
64596
65022
 
64597
- module.exports = "<h1 *ngIf=\"!caseTitle.label\" class=\"heading-h1\">#{{ caseDetails.case_id | ccdCaseReference}}</h1>\n\n<div *ngIf=\"caseTitle.label\" class=\"case-title\">\n <ccd-label-field [caseField]=\"caseTitle\" [caseFields]=\"caseFields\"></ccd-label-field>\n</div>\n"
65023
+ module.exports = "<h1 *ngIf=\"!label\" class=\"heading-h1\">#{{ caseDetails.case_id | ccdCaseReference}}</h1>\n\n<div *ngIf=\"label\" class=\"case-title\">\n <ccd-label-field [caseField]=\"caseTitle\" [caseFields]=\"caseFields\"></ccd-label-field>\n</div>\n"
64598
65024
 
64599
65025
  /***/ }),
64600
65026
 
@@ -64657,7 +65083,21 @@ module.exports = "<div *ngIf=\"isDataLoaded()\" class=\"screen-990\">\n <ccd-ac
64657
65083
  /***/ 99839:
64658
65084
  /***/ ((module) => {
64659
65085
 
64660
- module.exports = "<!-- Generic error heading and error message to be displayed only if there are no specific callback errors or warnings, or no error details -->\n<div *ngIf=\"error && !(error.callbackErrors || error.callbackWarnings || error.details)\" class=\"error-summary\"\n role=\"group\" aria-labelledby=\"edit-case-event_error-summary-heading\" tabindex=\"-1\">\n <h1 class=\"heading-h1 error-summary-heading\" id=\"edit-case-event_error-summary-heading\">\n Something went wrong\n </h1>\n <div class=\"govuk-error-summary__body\" id=\"edit-case-event_error-summary-body\">\n <p>We're working to fix the problem. Try again shortly.</p>\n <p><a href=\"get-help\" target=\"_blank\">Contact us</a> if you're still having problems.</p>\n </div>\n</div>\n<!-- Callback error heading and error message to be displayed if there are specific error details -->\n<div *ngIf=\"error && error.details\" class=\"error-summary\" role=\"group\"\n aria-labelledby=\"edit-case-event_error-summary-heading\" tabindex=\"-1\">\n <h2 class=\"heading-h2 error-summary-heading\" id=\"edit-case-event_error-summary-heading\">\n The callback data failed validation\n </h2>\n <p>{{error.message}}</p>\n <ul *ngIf=\"error.details?.field_errors\" class=\"error-summary-list\">\n <li *ngFor=\"let fieldError of error.details.field_errors\">\n {{fieldError.message}}\n </li>\n </ul>\n</div>\n<ccd-callback-errors\n [triggerTextContinue]=\"triggerTextStart\"\n [triggerTextIgnore]=\"triggerTextIgnoreWarnings\"\n [callbackErrorsSubject]=\"callbackErrorsSubject\"\n (callbackErrorsContext)=\"callbackErrorsNotify($event)\">\n</ccd-callback-errors>\n<ccd-activity [caseId]=\"caseDetails.case_id\" [displayMode]=\"BANNER\"></ccd-activity>\n<div class=\"grid-row\">\n <div class=\"column-one-half\">\n <ccd-case-header [caseDetails]=\"caseDetails\"></ccd-case-header>\n <div class=\"case-viewer-controls\" *ngIf=\"hasPrint && !isDraft() && isPrintEnabled()\">\n <a id=\"case-viewer-control-print\" routerLink=\"print\" class=\"button button-secondary\">Print</a>\n </div>\n </div>\n <div *ngIf=\"hasEventSelector\" class=\"column-one-half\">\n <ccd-event-trigger [isDisabled]=\"isTriggerButtonDisabled()\" [triggers]=\"caseDetails.triggers\"\n [triggerText]=\"triggerText\" (onTriggerChange)=\"clearErrorsAndWarnings()\"\n (onTriggerSubmit)=\"applyTrigger($event)\"></ccd-event-trigger>\n </div>\n</div>\n<div class=\"grid-row\">\n <div class=\"column-full\">\n <ng-container *ngIf=\"hasTabsPresent()\">\n <mat-tab-group #tabGroup animationDuration=\"0ms\" (selectedTabChange)=\"tabChanged($event)\" [disableRipple]=\"true\">\n <mat-tab *ngFor=\"let tab of prependedTabs\" [id]=\"tab.id\" [label]=\"tab.label\">\n </mat-tab>\n <mat-tab *ngFor=\"let tab of sortedTabs; let curIdx=index\" [id]=\"tab.id\" [label]=\"tab.label\">\n <ng-template matTabContent>\n <table [class]=\"tab.id\">\n <tbody>\n <ng-container *ngFor=\"let field of tab | ccdTabFields | ccdReadFieldsFilter:false :undefined :true : formGroup.controls['data']\">\n <div ccdLabelSubstitutor [caseField]=\"field\" [contextFields]=\"caseFields\" [hidden]=\"field.hidden\">\n <ng-container [ngSwitch]=\"!(field | ccdIsCompound)\">\n <tr *ngSwitchCase=\"true\">\n <th>\n <div class=\"case-viewer-label text-16\">{{field.label}}</div>\n </th>\n <td>\n <span class=\"text-16\">\n <ccd-field-read [topLevelFormGroup]=\"formGroup.controls['data']\"\n [caseField]=\"field\" [caseReference]=\"caseDetails.case_id\">\n </ccd-field-read>\n </span>\n </td>\n </tr>\n <tr *ngSwitchCase=\"false\" class=\"compound-field\">\n <th>\n <span class=\"text-16\">\n <ccd-field-read [topLevelFormGroup]=\"formGroup.controls['data']\"\n [caseField]=\"field\" [caseReference]=\"caseDetails.case_id\">\n </ccd-field-read>\n </span>\n </th>\n </tr>\n </ng-container>\n </div>\n </ng-container>\n </tbody>\n </table>\n </ng-template>\n </mat-tab>\n </mat-tab-group>\n <router-outlet *ngIf=\"prependedTabs && prependedTabs.length\"></router-outlet>\n </ng-container>\n </div>\n</div>"
65086
+ module.exports = "<!-- Generic error heading and error message to be displayed only if there are no specific callback errors or warnings, or no error details -->\n<div *ngIf=\"error && !(error.callbackErrors || error.callbackWarnings || error.details)\" class=\"error-summary\"\n role=\"group\" aria-labelledby=\"edit-case-event_error-summary-heading\" tabindex=\"-1\">\n <h1 class=\"heading-h1 error-summary-heading\" id=\"edit-case-event_error-summary-heading\">\n Something went wrong\n </h1>\n <div class=\"govuk-error-summary__body\" id=\"edit-case-event_error-summary-body\">\n <p>We're working to fix the problem. Try again shortly.</p>\n <p><a href=\"get-help\" target=\"_blank\">Contact us</a> if you're still having problems.</p>\n </div>\n</div>\n<!-- Callback error heading and error message to be displayed if there are specific error details -->\n<div *ngIf=\"error && error.details\" class=\"error-summary\" role=\"group\"\n aria-labelledby=\"edit-case-event_error-summary-heading\" tabindex=\"-1\">\n <h2 class=\"heading-h2 error-summary-heading\" id=\"edit-case-event_error-summary-heading\">\n The callback data failed validation\n </h2>\n <p>{{error.message}}</p>\n <ul *ngIf=\"error.details?.field_errors\" class=\"error-summary-list\">\n <li *ngFor=\"let fieldError of error.details.field_errors\">\n {{fieldError.message}}\n </li>\n </ul>\n</div>\n<ccd-callback-errors\n [triggerTextContinue]=\"triggerTextStart\"\n [triggerTextIgnore]=\"triggerTextIgnoreWarnings\"\n [callbackErrorsSubject]=\"callbackErrorsSubject\"\n (callbackErrorsContext)=\"callbackErrorsNotify($event)\">\n</ccd-callback-errors>\n<ccd-activity [caseId]=\"caseDetails.case_id\" [displayMode]=\"BANNER\"></ccd-activity>\n<cut-alert type=\"information\" *ngIf=\"caseDetails.access\">\n <ng-container *ngIf=\"caseDetails.access?.grantType === 'CHALLENGED'\">You have been given challenged access to this case until midnight tonight.</ng-container>\n <ng-container *ngIf=\"caseDetails.access?.grantType === 'SPECIFIC' && specificAccessType === 1\">You have been given specific access to this case until midnight on {{caseDetails.access?.endTime | date:'d MMMM yyyy'}}.</ng-container>\n <ng-container *ngIf=\"caseDetails.access?.grantType === 'SPECIFIC' && specificAccessType === 2\">You have been given specific access to this case from {{caseDetails.access?.beginTime | date:'d MMMM yyyy'}} until midnight on {{caseDetails.access?.endTime | date:'d MMMM yyyy'}}.</ng-container>\n <ng-container *ngIf=\"caseDetails.access?.grantType === 'SPECIFIC' && specificAccessType === 3\">You have been given indefinite specific access to this case.</ng-container>\n Access to this case is logged for auditing purposes.\n</cut-alert>\n<div class=\"grid-row\">\n <div class=\"column-one-half\">\n <ccd-case-header [caseDetails]=\"caseDetails\"></ccd-case-header>\n <div class=\"case-viewer-controls\" *ngIf=\"hasPrint && !isDraft() && isPrintEnabled()\">\n <a id=\"case-viewer-control-print\" routerLink=\"print\" class=\"button button-secondary\">Print</a>\n </div>\n </div>\n <div *ngIf=\"hasEventSelector\" class=\"column-one-half\">\n <ccd-event-trigger [isDisabled]=\"isTriggerButtonDisabled()\" [triggers]=\"caseDetails.triggers\"\n [triggerText]=\"triggerText\" (onTriggerChange)=\"clearErrorsAndWarnings()\"\n (onTriggerSubmit)=\"applyTrigger($event)\"></ccd-event-trigger>\n </div>\n</div>\n<div class=\"grid-row\">\n <div class=\"column-full\">\n <ng-container *ngIf=\"hasTabsPresent()\">\n <mat-tab-group #tabGroup animationDuration=\"0ms\" (selectedTabChange)=\"tabChanged($event)\" [disableRipple]=\"true\">\n <mat-tab *ngFor=\"let tab of prependedTabs\" [id]=\"tab.id\" [label]=\"tab.label\">\n </mat-tab>\n <mat-tab *ngFor=\"let tab of sortedTabs; let curIdx=index\" [id]=\"tab.id\" [label]=\"tab.label\">\n <ng-template matTabContent>\n <table [class]=\"tab.id\">\n <tbody>\n <ng-container *ngFor=\"let field of tab | ccdTabFields | ccdReadFieldsFilter:false :undefined :true : formGroup.controls['data']\">\n <div ccdLabelSubstitutor [caseField]=\"field\" [contextFields]=\"caseFields\" [hidden]=\"field.hidden\">\n <ng-container [ngSwitch]=\"!(field | ccdIsCompound)\">\n <tr *ngSwitchCase=\"true\">\n <th>\n <div class=\"case-viewer-label text-16\">{{field.label}}</div>\n </th>\n <td>\n <span class=\"text-16\">\n <ccd-field-read [topLevelFormGroup]=\"formGroup.controls['data']\"\n [caseField]=\"field\" [caseReference]=\"caseDetails.case_id\">\n </ccd-field-read>\n </span>\n </td>\n </tr>\n <tr *ngSwitchCase=\"false\" class=\"compound-field\">\n <th>\n <span class=\"text-16\">\n <ccd-field-read [topLevelFormGroup]=\"formGroup.controls['data']\"\n [caseField]=\"field\" [caseReference]=\"caseDetails.case_id\">\n </ccd-field-read>\n </span>\n </th>\n </tr>\n </ng-container>\n </div>\n </ng-container>\n </tbody>\n </table>\n </ng-template>\n </mat-tab>\n <mat-tab *ngFor=\"let tab of appendedTabs\" [id]=\"tab.id\" [label]=\"tab.label\">\n </mat-tab>\n </mat-tab-group>\n <router-outlet *ngIf=\"(prependedTabs && prependedTabs.length) || (appendedTabs && appendedTabs.length)\"></router-outlet>\n </ng-container>\n </div>\n</div>\n"
65087
+
65088
+ /***/ }),
65089
+
65090
+ /***/ 24959:
65091
+ /***/ ((module) => {
65092
+
65093
+ module.exports = "<p></p>\n<div class=\"govuk-width-container\">\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-two-thirds\">\n <div class=\"govuk-panel govuk-panel--confirmation\">\n <h1 class=\"govuk-panel__title\">\n Request for access denied<br>\n </h1>\n </div>\n <h2 class=\"govuk-heading-m \">What happens next</h2>\n <p class=\"govuk-body\">\n The requester has been denied access to this case.\n </p>\n </div>\n </div>\n <div class=\"form-group form-group-related\">\n <p ><a button class=\"govuk-button govuk-!-margin-right-3\" href=\"tasks/list\" >{{returnToMyTask}}</a></p>\n </div>\n <p class=\"cancel\"><a href=\"cases/case-details/{{caseId}}\" >{{retunToTask}}</a></p>\n</div>"
65094
+
65095
+ /***/ }),
65096
+
65097
+ /***/ 42467:
65098
+ /***/ ((module) => {
65099
+
65100
+ module.exports = "<exui-error-message\n *ngIf=\"formGroup.invalid && submitted\"\n [error]=\"errorMessage\">\n</exui-error-message>\n\n<form [formGroup]=\"formGroup\" (submit)=\"onSubmit()\">\n <div class=\"govuk-form-group\">\n <fieldset class=\"govuk-fieldset\" aria-describedby=\"reason-hint\">\n <div class=\"govuk-grid-column-two-thirds\" >\n <p></p>\n <legend class=\"govuk-fieldset__legend govuk-fieldset__legend--l\">\n <h1 class=\"govuk-fieldset__heading\">\n {{ title }}\n </h1>\n </legend>\n <p></p>\n <table class=\"govuk-table\">\n <caption></caption>\n <tbody class=\"govuk-table__body\">\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header leftLabel\" >\n Case name\n </th>\n <td class=\"govuk-table__cell\">{{ requestAccessDetails.caseName }}</td>\n </tr>\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header leftLabel\" >\n Case reference\n </th>\n <td class=\"govuk-table__cell\">{{ requestAccessDetails.caseReference }}</td>\n </tr>\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header leftLabel\" >\n Date submitted\n </th>\n <td class=\"govuk-table__cell\">{{ requestAccessDetails.dateSubmitted }}</td>\n </tr>\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header leftLabel\" >\n Request from\n </th>\n <td class=\"govuk-table__cell\">{{ requestAccessDetails.requestFrom }}<br /></td>\n </tr>\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header leftLabel\" >\n Reason for case access\n </th>\n <td class=\"govuk-table__cell\">{{ requestAccessDetails.reasonForCaseAccess }}</td>\n </tr>\n </tbody>\n </table>\n\n <div\n class=\"govuk-form-group\"\n [ngClass]=\"{ 'form-group-error': formGroup.invalid && submitted }\">\n <fieldset class=\"govuk-fieldset\">\n <legend class=\"govuk-fieldset__legend govuk-fieldset__legend--m\">\n <h1 class=\"govuk-fieldset__heading\">\n {{ hint }}\n </h1>\n </legend>\n <div\n id=\"error-message\"\n class=\"govuk-error-message\"\n *ngIf=\"formGroup.get('radioSelected').invalid && submitted\">\n {{ errorMessage.description }}\n </div>\n <div class=\"govuk-radios__item\">\n <input\n class=\"govuk-radios__input\"\n id=\"reason-0\"\n name=\"radioSelected\"\n type=\"radio\"\n [value]=\"accessReasons[0].reason\"\n formControlName=\"radioSelected\"\n [checked]=\"accessReasons[0].checked\"\n (change)=\"onChange()\"/>\n <label class=\"govuk-label govuk-radios__label\" for=\"reason-0\">\n {{ accessReasons[0].reason }}\n </label>\n </div>\n <div class=\"govuk-radios__item\">\n <input\n class=\"govuk-radios__input\"\n id=\"reason-1\"\n name=\"radioSelected\"\n type=\"radio\"\n [value]=\"accessReasons[1].reason\"\n formControlName=\"radioSelected\"\n [checked]=\"accessReasons[1].checked\"\n (change)=\"onChange()\"/>\n <label class=\"govuk-label govuk-radios__label\" for=\"reason-1\">\n {{ accessReasons[1].reason }}\n </label>\n </div>\n <div class=\"govuk-radios__item\">\n <input\n class=\"govuk-radios__input\"\n id=\"reason-2\"\n name=\"radioSelected\"\n type=\"radio\"\n [value]=\"accessReasons[2].reason\"\n formControlName=\"radioSelected\"\n [checked]=\"accessReasons[2].checked\"\n (change)=\"onChange()\"/>\n <label class=\"govuk-label govuk-radios__label\" for=\"reason-2\">\n {{ accessReasons[2].reason }}\n </label>\n </div>\n </fieldset>\n </div>\n </div>\n </fieldset>\n </div>\n\n <div class=\"govuk-button-group\">\n <button class=\"govuk-button govuk-!-margin-right-3\" type=\"submit\">\n Continue\n </button>\n <div class=\"govuk-grid-column-full govuk-!-padding-left-0\">\n <p>\n <a class=\"govuk-body\" (click)=\"onCancel()\" href=\"javascript:void(0)\">\n Cancel\n </a>\n </p>\n </div>\n </div>\n</form>\n"
64661
65101
 
64662
65102
  /***/ }),
64663
65103
 
@@ -64678,7 +65118,7 @@ module.exports = "<div *ngIf=\"isDataLoaded()\">\n <ccd-case-viewer [hasPrint
64678
65118
  /***/ 67025:
64679
65119
  /***/ ((module) => {
64680
65120
 
64681
- module.exports = "<div *ngIf=\"isDataLoaded()\">\n <ccd-case-basic-access-view *ngIf=\"!hasStandardAccess()\" [accessType]=\"userAccessType\" [caseDetails]=\"caseDetails\"></ccd-case-basic-access-view>\n <ccd-case-full-access-view *ngIf=\"hasStandardAccess()\" [caseDetails]=\"caseDetails\" [hasPrint]=\"hasPrint\" [hasEventSelector]=\"hasEventSelector\" [prependedTabs]=\"prependedTabs\"></ccd-case-full-access-view>\n</div>\n"
65121
+ module.exports = "<div *ngIf=\"isDataLoaded()\">\n <ccd-case-basic-access-view *ngIf=\"!hasStandardAccess()\" [accessType]=\"userAccessType\" [caseDetails]=\"caseDetails\"></ccd-case-basic-access-view>\n <ccd-case-full-access-view *ngIf=\"hasStandardAccess()\" [caseDetails]=\"caseDetails\" [hasPrint]=\"hasPrint\" [hasEventSelector]=\"hasEventSelector\" [prependedTabs]=\"prependedTabs\" [appendedTabs]=\"appendedTabs\"></ccd-case-full-access-view>\n</div>\n"
64682
65122
 
64683
65123
  /***/ }),
64684
65124
 
@@ -64853,7 +65293,7 @@ module.exports = "<ng-container [ngSwitch]=\"context\">\n <ccd-read-complex-fie
64853
65293
  /***/ 93616:
64854
65294
  /***/ ((module) => {
64855
65295
 
64856
- module.exports = "<div class=\"form-group\" [id]=\"id()\">\n\n <h2 *ngIf=\"renderLabel\" class=\"heading-h2\">{{caseField | ccdFieldLabel}}</h2>\n <ng-container *ngFor=\"let field of complexFields\">\n <ng-container [ngSwitch]=\"field | ccdIsReadOnlyAndNotCollection\">\n <ccd-field-read *ngSwitchCase=\"true\"\n ccdLabelSubstitutor\n [caseField]=\"buildField(field)\"\n [caseFields]=\"caseFields\"\n [formGroup]=\"formGroup\"\n [withLabel]=\"true\">\n </ccd-field-read>\n <ccd-field-write *ngSwitchCase=\"false\"\n ccdLabelSubstitutor\n [caseField]=\"field\"\n [caseFields]=\"caseFields\"\n [formGroup]=\"formGroup\"\n [parent]=\"complexGroup\"\n [idPrefix]=\"buildIdPrefix(field)\"\n [hidden]=\"field.hidden\"\n [isExpanded]=\"isExpanded\"\n [isInSearchBlock]=\"isInSearchBlock\">\n </ccd-field-write>\n </ng-container>\n </ng-container>\n</div>\n"
65296
+ module.exports = "<div class=\"form-group\" [id]=\"id()\">\n\n <h2 *ngIf=\"renderLabel\" class=\"heading-h2\">{{caseField | ccdFieldLabel}}</h2>\n <ng-container *ngFor=\"let field of complexFields\">\n <ng-container [ngSwitch]=\"field | ccdIsReadOnly\">\n <ccd-field-read *ngSwitchCase=\"true\"\n ccdLabelSubstitutor\n [caseField]=\"buildField(field)\"\n [caseFields]=\"caseFields\"\n [formGroup]=\"formGroup\"\n [withLabel]=\"true\">\n </ccd-field-read>\n <ccd-field-write *ngSwitchCase=\"false\"\n ccdLabelSubstitutor\n [caseField]=\"field\"\n [caseFields]=\"caseFields\"\n [formGroup]=\"formGroup\"\n [parent]=\"complexGroup\"\n [idPrefix]=\"buildIdPrefix(field)\"\n [hidden]=\"field.hidden\"\n [isExpanded]=\"isExpanded\"\n [isInSearchBlock]=\"isInSearchBlock\">\n </ccd-field-write>\n </ng-container>\n </ng-container>\n</div>\n"
64857
65297
 
64858
65298
  /***/ }),
64859
65299
 
@@ -65049,7 +65489,7 @@ module.exports = "<div class=\"form-group\" [formGroup]=\"organisationFormGroup\
65049
65489
  /***/ 69259:
65050
65490
  /***/ ((module) => {
65051
65491
 
65052
- module.exports = "<ccpay-payment-lib [API_ROOT]=\"getBaseURL()\" [CCD_CASE_NUMBER]=\"caseReference\" [BULKSCAN_API_ROOT]=\"getPayBulkScanBaseURL()\" [SELECTED_OPTION]=\"'CCDorException'\" [ISBSENABLE]=\"'true'\"></ccpay-payment-lib>\n"
65492
+ module.exports = "<ccpay-payment-lib\n [API_ROOT]=\"getBaseURL()\"\n [CCD_CASE_NUMBER]=\"caseReference\"\n [BULKSCAN_API_ROOT]=\"getPayBulkScanBaseURL()\"\n [SELECTED_OPTION]=\"'CCDorException'\"\n [ISBSENABLE]=\"'true'\"\n [VIEW]=\"'case-transactions'\"\n></ccpay-payment-lib>\n"
65053
65493
 
65054
65494
  /***/ }),
65055
65495
 
@@ -65397,6 +65837,21 @@ function getStrategyDelay(consecutiveErrorsCount, options) {
65397
65837
  }
65398
65838
 
65399
65839
 
65840
+ /***/ }),
65841
+
65842
+ /***/ 76883:
65843
+ /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
65844
+
65845
+
65846
+ var result = __webpack_require__(14342);
65847
+
65848
+ if (typeof result === "string") {
65849
+ module.exports = result;
65850
+ } else {
65851
+ module.exports = result.toString();
65852
+ }
65853
+
65854
+
65400
65855
  /***/ }),
65401
65856
 
65402
65857
  /***/ 99018: