@hmcts/ccd-case-ui-toolkit 4.8.3-rc.2 → 4.8.3-rc.6

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 (61) hide show
  1. package/RELEASE-NOTES.md +7 -0
  2. package/dist/index.umd.js +265 -120
  3. package/dist/index.umd.js.map +1 -1
  4. package/dist/index.umd.min.js +1 -1
  5. package/dist/index.umd.min.js.LICENSE.txt +1 -1
  6. package/dist/index.umd.min.js.map +1 -1
  7. package/dist/shared/components/case-editor/case-access-utils/index.d.ts +3 -2
  8. package/dist/shared/components/case-editor/case-access-utils/index.js +31 -0
  9. package/dist/shared/components/case-editor/case-access-utils/index.js.map +1 -1
  10. package/dist/shared/components/case-editor/case-access-utils/index.metadata.json +1 -1
  11. package/dist/shared/components/case-editor/case-edit-page/case-edit-page.component.js +1 -1
  12. package/dist/shared/components/case-editor/case-edit-page/case-edit-page.component.js.map +1 -1
  13. package/dist/shared/components/case-editor/services/case-edit-wizard.guard.js +10 -0
  14. package/dist/shared/components/case-editor/services/case-edit-wizard.guard.js.map +1 -1
  15. package/dist/shared/components/case-editor/services/case-edit-wizard.guard.metadata.json +1 -1
  16. package/dist/shared/components/case-editor/services/cases.service.d.ts +2 -17
  17. package/dist/shared/components/case-editor/services/cases.service.js +18 -109
  18. package/dist/shared/components/case-editor/services/cases.service.js.map +1 -1
  19. package/dist/shared/components/case-editor/services/cases.service.metadata.json +1 -1
  20. package/dist/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.d.ts +1 -0
  21. package/dist/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.js +10 -3
  22. package/dist/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.js.map +1 -1
  23. package/dist/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.metadata.json +1 -1
  24. package/dist/shared/components/case-viewer/case-review-specific-access-reject/case-review-specific-access-reject.component.d.ts +10 -0
  25. package/dist/shared/components/case-viewer/case-review-specific-access-reject/case-review-specific-access-reject.component.js +33 -0
  26. package/dist/shared/components/case-viewer/case-review-specific-access-reject/case-review-specific-access-reject.component.js.map +1 -0
  27. package/dist/shared/components/case-viewer/case-review-specific-access-reject/case-review-specific-access-reject.component.metadata.json +1 -0
  28. package/dist/shared/components/case-viewer/case-review-specific-access-reject/index.d.ts +1 -0
  29. package/dist/shared/components/case-viewer/case-review-specific-access-reject/index.js +7 -0
  30. package/dist/shared/components/case-viewer/case-review-specific-access-reject/index.js.map +1 -0
  31. package/dist/shared/components/case-viewer/case-review-specific-access-reject/index.metadata.json +1 -0
  32. package/dist/shared/components/case-viewer/case-review-specific-access-request/case-review-specific-access-request.component.d.ts +3 -2
  33. package/dist/shared/components/case-viewer/case-review-specific-access-request/case-review-specific-access-request.component.js +6 -1
  34. package/dist/shared/components/case-viewer/case-review-specific-access-request/case-review-specific-access-request.component.js.map +1 -1
  35. package/dist/shared/components/case-viewer/case-review-specific-access-request/case-review-specific-access-request.component.metadata.json +1 -1
  36. package/dist/shared/components/case-viewer/case-specific-access-request/case-specific-access-request.component.d.ts +3 -1
  37. package/dist/shared/components/case-viewer/case-specific-access-request/case-specific-access-request.component.js +21 -1
  38. package/dist/shared/components/case-viewer/case-specific-access-request/case-specific-access-request.component.js.map +1 -1
  39. package/dist/shared/components/case-viewer/case-specific-access-request/case-specific-access-request.component.metadata.json +1 -1
  40. package/dist/shared/components/case-viewer/case-viewer.component.d.ts +1 -0
  41. package/dist/shared/components/case-viewer/case-viewer.component.js +7 -2
  42. package/dist/shared/components/case-viewer/case-viewer.component.js.map +1 -1
  43. package/dist/shared/components/case-viewer/case-viewer.component.metadata.json +1 -1
  44. package/dist/shared/components/case-viewer/case-viewer.module.js +3 -1
  45. package/dist/shared/components/case-viewer/case-viewer.module.js.map +1 -1
  46. package/dist/shared/components/case-viewer/case-viewer.module.metadata.json +1 -1
  47. package/dist/shared/components/case-viewer/viewer.routing.js +8 -0
  48. package/dist/shared/components/case-viewer/viewer.routing.js.map +1 -1
  49. package/dist/shared/components/case-viewer/viewer.routing.metadata.json +1 -1
  50. package/dist/shared/components/palette/complex/ccd-read-fields-filter.pipe.js +4 -0
  51. package/dist/shared/components/palette/complex/ccd-read-fields-filter.pipe.js.map +1 -1
  52. package/dist/shared/components/palette/complex/write-complex-field.component.js +1 -1
  53. package/dist/shared/components/palette/complex/write-complex-field.component.js.map +1 -1
  54. package/dist/shared/components/palette/complex/write-complex-field.component.metadata.json +1 -1
  55. package/dist/shared/components/palette/document/write-document-field.component.js.map +1 -1
  56. package/dist/shared/domain/case-view/specific-access-request.model.d.ts +0 -2
  57. package/dist/shared/services/fields/fields.utils.d.ts +19 -1
  58. package/dist/shared/services/fields/fields.utils.js +83 -0
  59. package/dist/shared/services/fields/fields.utils.js.map +1 -1
  60. package/dist/shared/services/fields/fields.utils.metadata.json +1 -1
  61. package/package.json +1 -1
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.3-rc.2
3
+ * @version v4.8.3-rc.6
4
4
  * @link undefined
5
5
  * @license MIT
6
6
  */
@@ -17166,6 +17166,8 @@ var CaseAccessUtils = /** @class */ (function () {
17166
17166
  function CaseAccessUtils() {
17167
17167
  }
17168
17168
  CaseAccessUtils.prototype.getMappedRoleCategory = function (roles, roleCategories) {
17169
+ if (roles === void 0) { roles = []; }
17170
+ if (roleCategories === void 0) { roleCategories = []; }
17169
17171
  var roleKeywords = roles.join().split('-').join().split(',');
17170
17172
  if (this.roleOrCategoryExists(CaseAccessUtils.JUDGE_ROLE, CaseAccessUtils.JUDGE_ROLE_CATEGORY, roleKeywords, roleCategories)) {
17171
17173
  return CaseAccessUtils.JUDGE_ROLE_CATEGORY;
@@ -17209,6 +17211,35 @@ var CaseAccessUtils = /** @class */ (function () {
17209
17211
  }
17210
17212
  return roleName;
17211
17213
  };
17214
+ CaseAccessUtils.prototype.getAMPayload = function (assignerId, actorId, roleName, roleCategory, grantType, caseId, details, beginTime, endTime) {
17215
+ if (beginTime === void 0) { beginTime = null; }
17216
+ if (endTime === void 0) { endTime = null; }
17217
+ var payload = {
17218
+ roleRequest: {
17219
+ assignerId: assignerId
17220
+ },
17221
+ requestedRoles: [{
17222
+ actorIdType: 'IDAM',
17223
+ actorId: actorId,
17224
+ roleType: 'CASE',
17225
+ roleName: roleName,
17226
+ classification: 'PUBLIC',
17227
+ roleCategory: roleCategory,
17228
+ grantType: grantType,
17229
+ beginTime: beginTime,
17230
+ endTime: endTime,
17231
+ attributes: {
17232
+ caseId: caseId
17233
+ },
17234
+ notes: [{
17235
+ userId: assignerId,
17236
+ time: new Date(),
17237
+ comment: JSON.stringify(details)
17238
+ }]
17239
+ }]
17240
+ };
17241
+ return payload;
17242
+ };
17212
17243
  // User role mapping
17213
17244
  CaseAccessUtils.JUDGE_ROLE = 'judge';
17214
17245
  CaseAccessUtils.JUDGE_ROLE_CATEGORY = 'JUDICIAL';
@@ -17721,11 +17752,11 @@ var CaseEditPageComponent = /** @class */ (function () {
17721
17752
  if (this.currentPageIsNotValid()) {
17722
17753
  this.generateErrorMessage(this.currentPage.case_fields);
17723
17754
  }
17724
- this.showSpinner = true;
17725
17755
  if (!this.isSubmitting && !this.currentPageIsNotValid()) {
17726
17756
  this.isSubmitting = true;
17727
17757
  this.error = null;
17728
17758
  var caseEventData = this.buildCaseEventData();
17759
+ this.showSpinner = true;
17729
17760
  this.caseEdit.validate(caseEventData, this.currentPage.id)
17730
17761
  .subscribe(function (jsonData) {
17731
17762
  if (jsonData) {
@@ -19043,6 +19074,7 @@ var router_helper_service_1 = __webpack_require__(61957);
19043
19074
  var wizard_factory_service_1 = __webpack_require__(13125);
19044
19075
  var conditional_show_model_1 = __webpack_require__(5369);
19045
19076
  var event_trigger_service_1 = __webpack_require__(17051);
19077
+ var fields_1 = __webpack_require__(64906);
19046
19078
  var CaseEditWizardGuard = /** @class */ (function () {
19047
19079
  function CaseEditWizardGuard(router, routerHelper, wizardFactory, alertService, eventTriggerService) {
19048
19080
  this.router = router;
@@ -19098,6 +19130,15 @@ var CaseEditWizardGuard = /** @class */ (function () {
19098
19130
  };
19099
19131
  CaseEditWizardGuard.prototype.buildState = function (caseFields) {
19100
19132
  var state = {};
19133
+ /**
19134
+ *
19135
+ * EUI-4873 SSCS - Dynamic lists in a collection within a complex type
19136
+ *
19137
+ * Catering for mid event callbacks, hence the call to re-evaluate
19138
+ * for DynamicList's
19139
+ *
19140
+ */
19141
+ fields_1.FieldsUtils.handleNestedDynamicLists({ case_fields: caseFields });
19101
19142
  caseFields.forEach(function (field) {
19102
19143
  state[field.id] = field.value;
19103
19144
  });
@@ -19159,17 +19200,6 @@ exports.CaseNotifier = CaseNotifier;
19159
19200
 
19160
19201
  "use strict";
19161
19202
 
19162
- var __assign = (this && this.__assign) || function () {
19163
- __assign = Object.assign || function(t) {
19164
- for (var s, i = 1, n = arguments.length; i < n; i++) {
19165
- s = arguments[i];
19166
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
19167
- t[p] = s[p];
19168
- }
19169
- return t;
19170
- };
19171
- return __assign.apply(this, arguments);
19172
- };
19173
19203
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19174
19204
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
19175
19205
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -19240,73 +19270,6 @@ var CasesService = /** @class */ (function () {
19240
19270
  return rxjs_1.throwError(error);
19241
19271
  }), operators_1.finalize(function () { return _this.loadingService.unregister(loadingToken); }));
19242
19272
  };
19243
- /**
19244
- * handleNestedDynamicLists()
19245
- * Reassigns list_item and value data to DynamicList children
19246
- * down the tree. Server response returns data only in
19247
- * the `value` object of parent complex type
19248
- *
19249
- * EUI-2530 Dynamic Lists for Elements in a Complex Type
19250
- *
19251
- * @param jsonBody - { case_fields: [ CaseField, CaseField ] }
19252
- */
19253
- CasesService.prototype.handleNestedDynamicLists = function (jsonBody) {
19254
- var _this = this;
19255
- if (jsonBody.case_fields) {
19256
- jsonBody.case_fields.forEach(function (caseField) {
19257
- if (caseField.field_type) {
19258
- _this.setDynamicListDefinition(caseField, caseField.field_type, caseField);
19259
- }
19260
- });
19261
- }
19262
- return jsonBody;
19263
- };
19264
- CasesService.prototype.setDynamicListDefinition = function (caseField, caseFieldType, rootCaseField) {
19265
- var _this = this;
19266
- if (caseFieldType.type === CasesService_1.SERVER_RESPONSE_FIELD_TYPE_COMPLEX) {
19267
- caseFieldType.complex_fields.forEach(function (field) {
19268
- try {
19269
- var isDynamicField = CasesService_1.SERVER_RESPONSE_FIELD_TYPE_DYNAMIC_LIST_TYPE.indexOf(field.field_type.type) !== -1;
19270
- if (isDynamicField) {
19271
- var dynamicListValue = _this.getDynamicListValue(rootCaseField.value, field.id);
19272
- if (dynamicListValue) {
19273
- var list_items = dynamicListValue.list_items;
19274
- var value = dynamicListValue.value;
19275
- field.value = {
19276
- list_items: list_items,
19277
- value: value ? value : undefined
19278
- };
19279
- field.formatted_value = __assign({}, field.formatted_value, field.value);
19280
- }
19281
- }
19282
- else {
19283
- _this.setDynamicListDefinition(field, field.field_type, rootCaseField);
19284
- }
19285
- }
19286
- catch (error) {
19287
- console.log(error);
19288
- }
19289
- });
19290
- }
19291
- else if (caseFieldType.type === CasesService_1.SERVER_RESPONSE_FIELD_TYPE_COLLECTION) {
19292
- if (caseFieldType.collection_field_type) {
19293
- this.setDynamicListDefinition(caseField, caseFieldType.collection_field_type, rootCaseField);
19294
- }
19295
- }
19296
- };
19297
- CasesService.prototype.getDynamicListValue = function (jsonBlock, key) {
19298
- if (jsonBlock[key]) {
19299
- return jsonBlock[key];
19300
- }
19301
- else {
19302
- for (var elementKey in jsonBlock) {
19303
- if (typeof jsonBlock === 'object' && jsonBlock.hasOwnProperty(elementKey)) {
19304
- return this.getDynamicListValue(jsonBlock[elementKey], key);
19305
- }
19306
- }
19307
- }
19308
- return null;
19309
- };
19310
19273
  CasesService.prototype.getEventTrigger = function (caseTypeId, eventTriggerId, caseId, ignoreWarning) {
19311
19274
  var _this = this;
19312
19275
  ignoreWarning = undefined !== ignoreWarning ? ignoreWarning : 'false';
@@ -19326,7 +19289,7 @@ var CasesService = /** @class */ (function () {
19326
19289
  return this.http
19327
19290
  .get(url, { headers: headers, observe: 'body' })
19328
19291
  .pipe(operators_1.map(function (body) {
19329
- return _this.handleNestedDynamicLists(body);
19292
+ return services_1.FieldsUtils.handleNestedDynamicLists(body);
19330
19293
  }), operators_1.catchError(function (error) {
19331
19294
  _this.errorService.setError(error);
19332
19295
  return rxjs_1.throwError(error);
@@ -19468,32 +19431,23 @@ var CasesService = /** @class */ (function () {
19468
19431
  }
19469
19432
  var roleCategory = camUtils.getMappedRoleCategory(userInfo.roles, userInfo.roleCategories);
19470
19433
  var roleName = camUtils.getAMRoleName('challenged', roleCategory);
19471
- var payload = {
19472
- roleRequest: {
19473
- assignerId: userInfo.id
19474
- },
19475
- requestedRoles: [{
19476
- actorIdType: 'IDAM',
19477
- actorId: userInfo.id,
19478
- roleType: 'CASE',
19479
- roleName: roleName,
19480
- classification: 'PUBLIC',
19481
- roleCategory: roleCategory,
19482
- grantType: 'CHALLENGED',
19483
- beginTime: new Date(),
19484
- endTime: new Date(new Date().setUTCHours(23, 59, 59, 999)),
19485
- attributes: {
19486
- caseId: caseId
19487
- },
19488
- notes: [{
19489
- userId: userInfo.id,
19490
- time: new Date(),
19491
- comment: JSON.stringify(car)
19492
- }
19493
- ]
19494
- }]
19495
- };
19496
- return this.http.post("" + this.appConfig.getCamRoleAssignmentsApiUrl(), payload);
19434
+ var beginTime = new Date();
19435
+ var endTime = new Date(new Date().setUTCHours(23, 59, 59, 999));
19436
+ var payload = camUtils.getAMPayload(userInfo.id, userInfo.id, roleName, roleCategory, 'CHALLENGED', caseId, car, beginTime, endTime);
19437
+ return this.http.post(this.appConfig.getCamRoleAssignmentsApiUrl() + "/challenged", payload);
19438
+ };
19439
+ CasesService.prototype.createSpecificAccessRequest = function (caseId, sar) {
19440
+ // Assignment API endpoint
19441
+ var userInfoStr = this.sessionStorageService.getItem('userDetails');
19442
+ var camUtils = new case_access_utils_1.CaseAccessUtils();
19443
+ var userInfo;
19444
+ if (userInfoStr) {
19445
+ userInfo = JSON.parse(userInfoStr);
19446
+ }
19447
+ var roleCategory = camUtils.getMappedRoleCategory(userInfo.roles, userInfo.roleCategories);
19448
+ var roleName = camUtils.getAMRoleName('specific', roleCategory);
19449
+ var payload = camUtils.getAMPayload(null, userInfo.id, roleName, roleCategory, 'SPECIFIC', caseId, sar);
19450
+ return this.http.post(this.appConfig.getCamRoleAssignmentsApiUrl() + "/specific", payload);
19497
19451
  };
19498
19452
  var CasesService_1;
19499
19453
  // Internal (UI) API
@@ -19506,10 +19460,6 @@ var CasesService = /** @class */ (function () {
19506
19460
  CasesService.V2_MEDIATYPE_CASE_DATA_VALIDATE = 'application/vnd.uk.gov.hmcts.ccd-data-store-api.case-data-validate.v2+json;charset=UTF-8';
19507
19461
  CasesService.V2_MEDIATYPE_CREATE_EVENT = 'application/vnd.uk.gov.hmcts.ccd-data-store-api.create-event.v2+json;charset=UTF-8';
19508
19462
  CasesService.V2_MEDIATYPE_CREATE_CASE = 'application/vnd.uk.gov.hmcts.ccd-data-store-api.create-case.v2+json;charset=UTF-8';
19509
- // Handling of Dynamic Lists in Complex Types
19510
- CasesService.SERVER_RESPONSE_FIELD_TYPE_COLLECTION = 'Collection';
19511
- CasesService.SERVER_RESPONSE_FIELD_TYPE_COMPLEX = 'Complex';
19512
- CasesService.SERVER_RESPONSE_FIELD_TYPE_DYNAMIC_LIST_TYPE = ['DynamicList', 'DynamicRadioList'];
19513
19463
  CasesService.PUI_CASE_MANAGER = 'pui-case-manager';
19514
19464
  CasesService = CasesService_1 = __decorate([
19515
19465
  core_1.Injectable(),
@@ -21395,6 +21345,7 @@ var CaseFullAccessViewComponent = /** @class */ (function () {
21395
21345
  this.hasPrint = true;
21396
21346
  this.hasEventSelector = true;
21397
21347
  this.prependedTabs = [];
21348
+ this.appendedTabs = [];
21398
21349
  this.BANNER = domain_1.DisplayMode.BANNER;
21399
21350
  this.triggerTextStart = CaseFullAccessViewComponent_1.TRIGGER_TEXT_START;
21400
21351
  this.triggerTextIgnoreWarnings = CaseFullAccessViewComponent_1.TRIGGER_TEXT_CONTINUE;
@@ -21484,7 +21435,7 @@ var CaseFullAccessViewComponent = /** @class */ (function () {
21484
21435
  }
21485
21436
  };
21486
21437
  CaseFullAccessViewComponent.prototype.hasTabsPresent = function () {
21487
- return this.sortedTabs.length > 0 || this.prependedTabs.length > 0;
21438
+ return this.sortedTabs.length > 0 || this.prependedTabs.length > 0 || this.appendedTabs.length > 0;
21488
21439
  };
21489
21440
  CaseFullAccessViewComponent.prototype.callbackErrorsNotify = function (callbackErrorsContext) {
21490
21441
  this.ignoreWarning = callbackErrorsContext.ignore_warning;
@@ -21533,7 +21484,9 @@ var CaseFullAccessViewComponent = /** @class */ (function () {
21533
21484
  CaseFullAccessViewComponent.prototype.tabChanged = function (tabChangeEvent) {
21534
21485
  var tab = tabChangeEvent.tab['_viewContainerRef'];
21535
21486
  var id = tab.element.nativeElement.id;
21536
- if (tabChangeEvent.index <= 1 && this.prependedTabs.length) {
21487
+ var tabsLengthBeforeAppended = this.prependedTabs.length + this.caseDetails.tabs.length;
21488
+ if ((tabChangeEvent.index <= 1 && this.prependedTabs.length) ||
21489
+ (tabChangeEvent.index >= tabsLengthBeforeAppended && this.appendedTabs.length)) {
21537
21490
  this.router.navigate([id], { relativeTo: this.route });
21538
21491
  }
21539
21492
  else {
@@ -21616,6 +21569,10 @@ var CaseFullAccessViewComponent = /** @class */ (function () {
21616
21569
  core_1.Input(),
21617
21570
  __metadata("design:type", Array)
21618
21571
  ], CaseFullAccessViewComponent.prototype, "prependedTabs", void 0);
21572
+ __decorate([
21573
+ core_1.Input(),
21574
+ __metadata("design:type", Array)
21575
+ ], CaseFullAccessViewComponent.prototype, "appendedTabs", void 0);
21619
21576
  __decorate([
21620
21577
  core_1.ViewChild('tabGroup'),
21621
21578
  __metadata("design:type", material_1.MatTabGroup)
@@ -21657,6 +21614,60 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
21657
21614
  __export(__webpack_require__(76764));
21658
21615
 
21659
21616
 
21617
+ /***/ }),
21618
+
21619
+ /***/ 12231:
21620
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
21621
+
21622
+ "use strict";
21623
+
21624
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
21625
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
21626
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21627
+ 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;
21628
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
21629
+ };
21630
+ var __metadata = (this && this.__metadata) || function (k, v) {
21631
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
21632
+ };
21633
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
21634
+ var core_1 = __webpack_require__(57208);
21635
+ var router_1 = __webpack_require__(92302);
21636
+ var CaseReviewSpecificAccessRejectComponent = /** @class */ (function () {
21637
+ function CaseReviewSpecificAccessRejectComponent(route) {
21638
+ this.route = route;
21639
+ this.retunToTask = 'Return to the Tasks tab for this case';
21640
+ this.returnToMyTask = 'Return to My tasks';
21641
+ }
21642
+ CaseReviewSpecificAccessRejectComponent.prototype.ngOnInit = function () {
21643
+ this.caseId = this.route.snapshot.data.case.case_id;
21644
+ };
21645
+ CaseReviewSpecificAccessRejectComponent = __decorate([
21646
+ core_1.Component({
21647
+ selector: 'case-review-specific-access-reject',
21648
+ template: __webpack_require__(24959)
21649
+ }),
21650
+ __metadata("design:paramtypes", [router_1.ActivatedRoute])
21651
+ ], CaseReviewSpecificAccessRejectComponent);
21652
+ return CaseReviewSpecificAccessRejectComponent;
21653
+ }());
21654
+ exports.CaseReviewSpecificAccessRejectComponent = CaseReviewSpecificAccessRejectComponent;
21655
+
21656
+
21657
+ /***/ }),
21658
+
21659
+ /***/ 84766:
21660
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
21661
+
21662
+ "use strict";
21663
+
21664
+ function __export(m) {
21665
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
21666
+ }
21667
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
21668
+ __export(__webpack_require__(12231));
21669
+
21670
+
21660
21671
  /***/ }),
21661
21672
 
21662
21673
  /***/ 24212:
@@ -21680,9 +21691,10 @@ var router_1 = __webpack_require__(92302);
21680
21691
  var models_1 = __webpack_require__(46909);
21681
21692
  var app_config_1 = __webpack_require__(35185);
21682
21693
  var CaseReviewSpecificAccessRequestComponent = /** @class */ (function () {
21683
- function CaseReviewSpecificAccessRequestComponent(fb, route, appConfig) {
21694
+ function CaseReviewSpecificAccessRequestComponent(fb, route, router, appConfig) {
21684
21695
  this.fb = fb;
21685
21696
  this.route = route;
21697
+ this.router = router;
21686
21698
  this.appConfig = appConfig;
21687
21699
  this.collapsed = false;
21688
21700
  this.submitted = false;
@@ -21736,6 +21748,9 @@ var CaseReviewSpecificAccessRequestComponent = /** @class */ (function () {
21736
21748
  reason: reasonNumber,
21737
21749
  caseId: caseId,
21738
21750
  };
21751
+ if (models_1.AccessReason.REJECT_REQUEST === radioSelectedValue) {
21752
+ this.router.navigate(['rejected'], { relativeTo: this.route });
21753
+ }
21739
21754
  }
21740
21755
  };
21741
21756
  CaseReviewSpecificAccessRequestComponent.prototype.onCancel = function () {
@@ -21757,6 +21772,7 @@ var CaseReviewSpecificAccessRequestComponent = /** @class */ (function () {
21757
21772
  }),
21758
21773
  __metadata("design:paramtypes", [forms_1.FormBuilder,
21759
21774
  router_1.ActivatedRoute,
21775
+ router_1.Router,
21760
21776
  app_config_1.AbstractAppConfig])
21761
21777
  ], CaseReviewSpecificAccessRequestComponent);
21762
21778
  return CaseReviewSpecificAccessRequestComponent;
@@ -21839,11 +21855,13 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
21839
21855
  var core_1 = __webpack_require__(57208);
21840
21856
  var forms_1 = __webpack_require__(92985);
21841
21857
  var router_1 = __webpack_require__(92302);
21858
+ var case_editor_1 = __webpack_require__(27070);
21842
21859
  var models_1 = __webpack_require__(3234);
21843
21860
  var CaseSpecificAccessRequestComponent = /** @class */ (function () {
21844
- function CaseSpecificAccessRequestComponent(fb, router, route) {
21861
+ function CaseSpecificAccessRequestComponent(fb, router, casesService, route) {
21845
21862
  this.fb = fb;
21846
21863
  this.router = router;
21864
+ this.casesService = casesService;
21847
21865
  this.route = route;
21848
21866
  this.collapsed = false;
21849
21867
  this.submitted = false;
@@ -21881,6 +21899,7 @@ var CaseSpecificAccessRequestComponent = /** @class */ (function () {
21881
21899
  this.formGroup.get(this.specificReasonControlName).setValue('');
21882
21900
  };
21883
21901
  CaseSpecificAccessRequestComponent.prototype.onSubmit = function () {
21902
+ var _this = this;
21884
21903
  this.submitted = true;
21885
21904
  if (this.formGroup.get(this.specificReasonControlName).invalid) {
21886
21905
  this.errorMessage = {
@@ -21889,6 +21908,22 @@ var CaseSpecificAccessRequestComponent = /** @class */ (function () {
21889
21908
  fieldId: 'specific-reason',
21890
21909
  };
21891
21910
  }
21911
+ // Initiate Specific Access Request
21912
+ if (this.formGroup.valid) {
21913
+ // Get the Case Reference (for which access is being requested) from the ActivatedRouteSnapshot data
21914
+ var caseId = this.route.snapshot.data.case.case_id;
21915
+ var specificAccessRequest = {
21916
+ specificReason: this.formGroup.get(this.specificReasonControlName).value
21917
+ };
21918
+ this.$roleAssignmentResponseSubscription = this.casesService.createSpecificAccessRequest(caseId, specificAccessRequest)
21919
+ .subscribe(function (_response) {
21920
+ // Would have been nice to pass the caseId within state.data, but this isn't part of NavigationExtras until
21921
+ // Angular 7.2!
21922
+ _this.router.navigate(['success'], { relativeTo: _this.route });
21923
+ }, function (_error) {
21924
+ // Navigate to error page
21925
+ });
21926
+ }
21892
21927
  };
21893
21928
  CaseSpecificAccessRequestComponent.prototype.onCancel = function () {
21894
21929
  // Navigate to the page before previous one (should be Search Results or Case List page, for example)
@@ -21906,6 +21941,7 @@ var CaseSpecificAccessRequestComponent = /** @class */ (function () {
21906
21941
  }),
21907
21942
  __metadata("design:paramtypes", [forms_1.FormBuilder,
21908
21943
  router_1.Router,
21944
+ case_editor_1.CasesService,
21909
21945
  router_1.ActivatedRoute])
21910
21946
  ], CaseSpecificAccessRequestComponent);
21911
21947
  return CaseSpecificAccessRequestComponent;
@@ -22116,6 +22152,7 @@ var CaseViewerComponent = /** @class */ (function () {
22116
22152
  this.hasPrint = true;
22117
22153
  this.hasEventSelector = true;
22118
22154
  this.prependedTabs = [];
22155
+ this.appendedTabs = [];
22119
22156
  }
22120
22157
  CaseViewerComponent_1 = CaseViewerComponent;
22121
22158
  CaseViewerComponent.prototype.ngOnInit = function () {
@@ -22159,7 +22196,7 @@ var CaseViewerComponent = /** @class */ (function () {
22159
22196
  // remove once Access management goes live
22160
22197
  CaseViewerComponent.prototype.setMockData = function (caseDetails) {
22161
22198
  var accessManagementBasicViewMock = this.appConfig.getAccessManagementBasicViewMock();
22162
- if (accessManagementBasicViewMock.active && !caseDetails.basicFields) {
22199
+ if (accessManagementBasicViewMock && accessManagementBasicViewMock.active && !caseDetails.basicFields) {
22163
22200
  var access_process_index = caseDetails.metadataFields.findIndex(function (metadataField) {
22164
22201
  return metadataField.id === CaseViewerComponent_1.METADATA_FIELD_ACCESS_PROCEES_ID;
22165
22202
  });
@@ -22194,6 +22231,10 @@ var CaseViewerComponent = /** @class */ (function () {
22194
22231
  core_1.Input(),
22195
22232
  __metadata("design:type", Array)
22196
22233
  ], CaseViewerComponent.prototype, "prependedTabs", void 0);
22234
+ __decorate([
22235
+ core_1.Input(),
22236
+ __metadata("design:type", Array)
22237
+ ], CaseViewerComponent.prototype, "appendedTabs", void 0);
22197
22238
  __decorate([
22198
22239
  core_1.Input(),
22199
22240
  __metadata("design:type", domain_1.CaseView)
@@ -22255,6 +22296,7 @@ var case_view_1 = __webpack_require__(65389);
22255
22296
  var case_viewer_component_1 = __webpack_require__(89554);
22256
22297
  var printer_1 = __webpack_require__(65773);
22257
22298
  var services_2 = __webpack_require__(50137);
22299
+ var case_review_specific_access_reject_1 = __webpack_require__(84766);
22258
22300
  var CaseViewerModule = /** @class */ (function () {
22259
22301
  function CaseViewerModule() {
22260
22302
  }
@@ -22292,7 +22334,8 @@ var CaseViewerModule = /** @class */ (function () {
22292
22334
  case_specific_access_request_component_1.CaseSpecificAccessRequestComponent,
22293
22335
  case_review_specific_access_request_component_1.CaseReviewSpecificAccessRequestComponent,
22294
22336
  error_message_component_1.ErrorMessageComponent,
22295
- case_challenged_access_success_component_1.CaseChallengedAccessSuccessComponent
22337
+ case_challenged_access_success_component_1.CaseChallengedAccessSuccessComponent,
22338
+ case_review_specific_access_reject_1.CaseReviewSpecificAccessRejectComponent
22296
22339
  ],
22297
22340
  exports: [
22298
22341
  case_viewer_component_1.CaseViewerComponent,
@@ -22747,6 +22790,7 @@ var case_review_specific_access_request_1 = __webpack_require__(83444);
22747
22790
  var case_event_trigger_component_1 = __webpack_require__(83645);
22748
22791
  var printer_1 = __webpack_require__(65773);
22749
22792
  var services_1 = __webpack_require__(50137);
22793
+ var case_review_specific_access_reject_1 = __webpack_require__(84766);
22750
22794
  exports.viewerRouting = [
22751
22795
  {
22752
22796
  path: 'print',
@@ -22809,6 +22853,13 @@ exports.viewerRouting = [
22809
22853
  },
22810
22854
  pathMatch: 'full',
22811
22855
  },
22856
+ {
22857
+ path: 'rejected',
22858
+ component: case_review_specific_access_reject_1.CaseReviewSpecificAccessRejectComponent,
22859
+ data: {
22860
+ title: 'Review Access Rejected'
22861
+ }
22862
+ }
22812
22863
  ],
22813
22864
  },
22814
22865
  ];
@@ -25789,6 +25840,10 @@ var ReadFieldsFilterPipe = /** @class */ (function () {
25789
25840
  return !!hasChildrenWithValue;
25790
25841
  };
25791
25842
  ReadFieldsFilterPipe.isValidCollection = function (field, values) {
25843
+ // if field is collection and it has complex/collection child field; parent field doesnt have value defined
25844
+ if (!Array.isArray(field.value) && values && values.hasOwnProperty(field.id)) {
25845
+ return true;
25846
+ }
25792
25847
  var isNotEmpty = Array.isArray(field.value) && field.value.length > 0;
25793
25848
  if (isNotEmpty && field.field_type.collection_field_type.type === 'Complex') {
25794
25849
  return !!field.value.find(function (item) {
@@ -39038,6 +39093,17 @@ exports.FieldsPurger = FieldsPurger;
39038
39093
 
39039
39094
  "use strict";
39040
39095
 
39096
+ var __assign = (this && this.__assign) || function () {
39097
+ __assign = Object.assign || function(t) {
39098
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
39099
+ s = arguments[i];
39100
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
39101
+ t[p] = s[p];
39102
+ }
39103
+ return t;
39104
+ };
39105
+ return __assign.apply(this, arguments);
39106
+ };
39041
39107
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
39042
39108
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
39043
39109
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -39181,6 +39247,74 @@ var FieldsUtils = /** @class */ (function () {
39181
39247
  : typeof x === 'number' || x.length > 0)); });
39182
39248
  return !hasNonNullPrimitive ? objectRefs.some(function (y) { return _this.containsNonEmptyValues(y); }) : hasNonNullPrimitive;
39183
39249
  };
39250
+ /**
39251
+ * handleNestedDynamicLists()
39252
+ * Reassigns list_item and value data to DynamicList children
39253
+ * down the tree. Server response returns data only in
39254
+ * the `value` object of parent complex type
39255
+ *
39256
+ * EUI-2530 Dynamic Lists for Elements in a Complex Type
39257
+ *
39258
+ * @param jsonBody - { case_fields: [ CaseField, CaseField ] }
39259
+ */
39260
+ FieldsUtils.handleNestedDynamicLists = function (jsonBody) {
39261
+ var _this = this;
39262
+ if (jsonBody.case_fields) {
39263
+ jsonBody.case_fields.forEach(function (caseField) {
39264
+ if (caseField.field_type) {
39265
+ _this.setDynamicListDefinition(caseField, caseField.field_type, caseField);
39266
+ }
39267
+ });
39268
+ }
39269
+ return jsonBody;
39270
+ };
39271
+ FieldsUtils.setDynamicListDefinition = function (caseField, caseFieldType, rootCaseField) {
39272
+ var _this = this;
39273
+ if (caseFieldType.type === FieldsUtils_1.SERVER_RESPONSE_FIELD_TYPE_COMPLEX) {
39274
+ caseFieldType.complex_fields.forEach(function (field) {
39275
+ try {
39276
+ var isDynamicField = FieldsUtils_1.SERVER_RESPONSE_FIELD_TYPE_DYNAMIC_LIST_TYPE.indexOf(field.field_type.type) !== -1;
39277
+ if (isDynamicField) {
39278
+ var dynamicListValue = _this.getDynamicListValue(rootCaseField.value, field.id);
39279
+ if (dynamicListValue) {
39280
+ var list_items = dynamicListValue.list_items;
39281
+ var complexValue = dynamicListValue.value;
39282
+ var value = {
39283
+ list_items: list_items,
39284
+ value: complexValue ? complexValue : undefined
39285
+ };
39286
+ field.value = __assign({}, value);
39287
+ field.formatted_value = __assign({}, field.formatted_value, value);
39288
+ }
39289
+ }
39290
+ else {
39291
+ _this.setDynamicListDefinition(field, field.field_type, rootCaseField);
39292
+ }
39293
+ }
39294
+ catch (error) {
39295
+ console.log(error);
39296
+ }
39297
+ });
39298
+ }
39299
+ else if (caseFieldType.type === FieldsUtils_1.SERVER_RESPONSE_FIELD_TYPE_COLLECTION) {
39300
+ if (caseFieldType.collection_field_type) {
39301
+ this.setDynamicListDefinition(caseField, caseFieldType.collection_field_type, rootCaseField);
39302
+ }
39303
+ }
39304
+ };
39305
+ FieldsUtils.getDynamicListValue = function (jsonBlock, key) {
39306
+ if (jsonBlock[key]) {
39307
+ return jsonBlock[key];
39308
+ }
39309
+ else {
39310
+ for (var elementKey in jsonBlock) {
39311
+ if (typeof jsonBlock === 'object' && jsonBlock.hasOwnProperty(elementKey)) {
39312
+ return this.getDynamicListValue(jsonBlock[elementKey], key);
39313
+ }
39314
+ }
39315
+ }
39316
+ return null;
39317
+ };
39184
39318
  FieldsUtils.prototype.buildCanShowPredicate = function (eventTrigger, form) {
39185
39319
  var currentState = this.getCurrentEventState(eventTrigger, form);
39186
39320
  return function (page) {
@@ -39226,6 +39360,10 @@ var FieldsUtils = /** @class */ (function () {
39226
39360
  FieldsUtils.datePipe = new utils_1.DatePipe(new format_translator_service_1.FormatTranslatorService());
39227
39361
  // EUI-4244. 3 dashes instead of 1 to make this less likely to clash with a real field.
39228
39362
  FieldsUtils.LABEL_SUFFIX = '---LABEL';
39363
+ // Handling of Dynamic Lists in Complex Types
39364
+ FieldsUtils.SERVER_RESPONSE_FIELD_TYPE_COLLECTION = 'Collection';
39365
+ FieldsUtils.SERVER_RESPONSE_FIELD_TYPE_COMPLEX = 'Complex';
39366
+ FieldsUtils.SERVER_RESPONSE_FIELD_TYPE_DYNAMIC_LIST_TYPE = ['DynamicList', 'DynamicRadioList'];
39229
39367
  FieldsUtils.DEFAULT_MERGE_FUNCTION = function mergeFunction(field, result) {
39230
39368
  if (!result.hasOwnProperty(field.id)) {
39231
39369
  result[field.id] = field.value;
@@ -69091,7 +69229,14 @@ module.exports = "<div *ngIf=\"isDataLoaded()\" class=\"screen-990\">\n <ccd-ac
69091
69229
  /***/ 99839:
69092
69230
  /***/ ((module) => {
69093
69231
 
69094
- 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>"
69232
+ 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 *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"
69233
+
69234
+ /***/ }),
69235
+
69236
+ /***/ 24959:
69237
+ /***/ ((module) => {
69238
+
69239
+ 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>"
69095
69240
 
69096
69241
  /***/ }),
69097
69242
 
@@ -69119,7 +69264,7 @@ module.exports = "<div *ngIf=\"isDataLoaded()\">\n <ccd-case-viewer [hasPrint
69119
69264
  /***/ 67025:
69120
69265
  /***/ ((module) => {
69121
69266
 
69122
- 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"
69267
+ 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"
69123
69268
 
69124
69269
  /***/ }),
69125
69270
 
@@ -69294,7 +69439,7 @@ module.exports = "<ng-container [ngSwitch]=\"context\">\n <ccd-read-complex-fie
69294
69439
  /***/ 93616:
69295
69440
  /***/ ((module) => {
69296
69441
 
69297
- 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"
69442
+ 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"
69298
69443
 
69299
69444
  /***/ }),
69300
69445