@hmcts/ccd-case-ui-toolkit 4.7.0-rc.4 → 4.7.1-EUI-4703-hearing-date

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 (120) hide show
  1. package/.github/workflows/npmpublish.yml +40 -2
  2. package/RELEASE-NOTES.md +8 -0
  3. package/dist/app.config.d.ts +2 -0
  4. package/dist/app.config.js +3 -0
  5. package/dist/app.config.js.map +1 -1
  6. package/dist/app.config.metadata.json +1 -1
  7. package/dist/case-ui-toolkit.module.js +1 -0
  8. package/dist/case-ui-toolkit.module.js.map +1 -1
  9. package/dist/case-ui-toolkit.module.metadata.json +1 -1
  10. package/dist/cut-styles/shared/components/loading-spinner/loading-spinner.component.scss +36 -0
  11. package/dist/index.d.ts +1 -1
  12. package/dist/index.js +1 -0
  13. package/dist/index.js.map +1 -1
  14. package/dist/index.metadata.json +1 -1
  15. package/dist/index.umd.js +726 -184
  16. package/dist/index.umd.js.map +1 -1
  17. package/dist/index.umd.min.js +1 -1
  18. package/dist/index.umd.min.js.LICENSE.txt +1 -1
  19. package/dist/index.umd.min.js.map +1 -1
  20. package/dist/shared/components/case-editor/case-access-utils/index.d.ts +21 -0
  21. package/dist/shared/components/case-editor/case-access-utils/index.js +69 -0
  22. package/dist/shared/components/case-editor/case-access-utils/index.js.map +1 -0
  23. package/dist/shared/components/case-editor/case-access-utils/index.metadata.json +1 -0
  24. package/dist/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts +1 -0
  25. package/dist/shared/components/case-editor/case-edit-page/case-edit-page.component.js +16 -3
  26. package/dist/shared/components/case-editor/case-edit-page/case-edit-page.component.js.map +1 -1
  27. package/dist/shared/components/case-editor/case-edit-page/case-edit-page.component.metadata.json +1 -1
  28. package/dist/shared/components/case-editor/case-editor.module.js +4 -1
  29. package/dist/shared/components/case-editor/case-editor.module.js.map +1 -1
  30. package/dist/shared/components/case-editor/case-editor.module.metadata.json +1 -1
  31. package/dist/shared/components/case-editor/domain/wizard.model.js +1 -1
  32. package/dist/shared/components/case-editor/index.d.ts +1 -0
  33. package/dist/shared/components/case-editor/index.js +1 -0
  34. package/dist/shared/components/case-editor/index.js.map +1 -1
  35. package/dist/shared/components/case-editor/index.metadata.json +1 -1
  36. package/dist/shared/components/case-editor/services/cases.service.js +24 -38
  37. package/dist/shared/components/case-editor/services/cases.service.js.map +1 -1
  38. package/dist/shared/components/case-editor/services/cases.service.metadata.json +1 -1
  39. package/dist/shared/components/case-viewer/case-basic-access-view/case-basic-access-view.component.d.ts +1 -0
  40. package/dist/shared/components/case-viewer/case-basic-access-view/case-basic-access-view.component.js +4 -1
  41. package/dist/shared/components/case-viewer/case-basic-access-view/case-basic-access-view.component.js.map +1 -1
  42. package/dist/shared/components/case-viewer/case-basic-access-view/case-basic-access-view.component.metadata.json +1 -1
  43. package/dist/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.js +5 -9
  44. package/dist/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.js.map +1 -1
  45. package/dist/shared/components/case-viewer/case-specific-access-request/case-specific-access-request.component.d.ts +27 -0
  46. package/dist/shared/components/case-viewer/case-specific-access-request/case-specific-access-request.component.js +87 -0
  47. package/dist/shared/components/case-viewer/case-specific-access-request/case-specific-access-request.component.js.map +1 -0
  48. package/dist/shared/components/case-viewer/case-specific-access-request/case-specific-access-request.component.metadata.json +1 -0
  49. package/dist/shared/components/case-viewer/case-specific-access-request/index.d.ts +1 -0
  50. package/dist/shared/components/case-viewer/case-specific-access-request/index.js +7 -0
  51. package/dist/shared/components/case-viewer/case-specific-access-request/index.js.map +1 -0
  52. package/dist/shared/components/case-viewer/case-specific-access-request/index.metadata.json +1 -0
  53. package/dist/shared/components/case-viewer/case-specific-access-request/models/case-specific-access-request.enum.d.ts +8 -0
  54. package/dist/shared/components/case-viewer/case-specific-access-request/models/case-specific-access-request.enum.js +13 -0
  55. package/dist/shared/components/case-viewer/case-specific-access-request/models/case-specific-access-request.enum.js.map +1 -0
  56. package/dist/shared/components/case-viewer/case-specific-access-request/models/case-specific-access-request.enum.metadata.json +1 -0
  57. package/dist/shared/components/case-viewer/case-specific-access-request/models/index.d.ts +1 -0
  58. package/dist/shared/components/case-viewer/case-specific-access-request/models/index.js +7 -0
  59. package/dist/shared/components/case-viewer/case-specific-access-request/models/index.js.map +1 -0
  60. package/dist/shared/components/case-viewer/case-specific-access-request/models/index.metadata.json +1 -0
  61. package/dist/shared/components/case-viewer/case-viewer.module.js +2 -1
  62. package/dist/shared/components/case-viewer/case-viewer.module.js.map +1 -1
  63. package/dist/shared/components/case-viewer/case-viewer.module.metadata.json +1 -1
  64. package/dist/shared/components/case-viewer/viewer.routing.js +15 -1
  65. package/dist/shared/components/case-viewer/viewer.routing.js.map +1 -1
  66. package/dist/shared/components/case-viewer/viewer.routing.metadata.json +1 -1
  67. package/dist/shared/components/loading-spinner/loading-spinner.component.d.ts +3 -0
  68. package/dist/shared/components/loading-spinner/loading-spinner.component.js +32 -0
  69. package/dist/shared/components/loading-spinner/loading-spinner.component.js.map +1 -0
  70. package/dist/shared/components/loading-spinner/loading-spinner.component.metadata.json +1 -0
  71. package/dist/shared/components/palette/base-field/abstract-field-read.component.d.ts +2 -2
  72. package/dist/shared/components/palette/base-field/abstract-field-read.component.js +1 -1
  73. package/dist/shared/components/palette/base-field/abstract-field-read.component.js.map +1 -1
  74. package/dist/shared/components/palette/complex/ccd-read-fields-filter.pipe.d.ts +3 -2
  75. package/dist/shared/components/palette/complex/ccd-read-fields-filter.pipe.js +24 -4
  76. package/dist/shared/components/palette/complex/ccd-read-fields-filter.pipe.js.map +1 -1
  77. package/dist/shared/components/palette/complex/ccd-read-fields-filter.pipe.metadata.json +1 -1
  78. package/dist/shared/components/palette/complex/complex.module.js +2 -5
  79. package/dist/shared/components/palette/complex/complex.module.js.map +1 -1
  80. package/dist/shared/components/palette/complex/complex.module.metadata.json +1 -1
  81. package/dist/shared/components/palette/complex/read-complex-field-collection-table.component.d.ts +9 -9
  82. package/dist/shared/components/palette/complex/read-complex-field-collection-table.component.js +54 -62
  83. package/dist/shared/components/palette/complex/read-complex-field-collection-table.component.js.map +1 -1
  84. package/dist/shared/components/palette/complex/read-complex-field-collection-table.component.metadata.json +1 -1
  85. package/dist/shared/components/palette/multi-select-list/write-multi-select-list-field.component.js +8 -0
  86. package/dist/shared/components/palette/multi-select-list/write-multi-select-list-field.component.js.map +1 -1
  87. package/dist/shared/directives/conditional-show/conditional-show.module.js +3 -0
  88. package/dist/shared/directives/conditional-show/conditional-show.module.js.map +1 -1
  89. package/dist/shared/directives/conditional-show/conditional-show.module.metadata.json +1 -1
  90. package/dist/shared/directives/conditional-show/index.d.ts +1 -0
  91. package/dist/shared/directives/conditional-show/index.js +1 -0
  92. package/dist/shared/directives/conditional-show/index.js.map +1 -1
  93. package/dist/shared/directives/conditional-show/index.metadata.json +1 -1
  94. package/dist/shared/directives/conditional-show/services/conditional-show-registrar.service.js +2 -0
  95. package/dist/shared/directives/conditional-show/services/conditional-show-registrar.service.js.map +1 -1
  96. package/dist/shared/domain/case-view/index.d.ts +1 -1
  97. package/dist/shared/domain/case-view/index.metadata.json +1 -1
  98. package/dist/shared/domain/case-view/role-assignment-response.model.d.ts +1 -1
  99. package/dist/shared/domain/case-view/role-request.model.d.ts +28 -10
  100. package/dist/shared/domain/case-view/role-request.model.metadata.json +1 -1
  101. package/dist/shared/domain/case-view/specific-access-request.model.d.ts +5 -0
  102. package/dist/shared/domain/case-view/{requested-role.model.js → specific-access-request.model.js} +1 -1
  103. package/dist/shared/domain/case-view/specific-access-request.model.js.map +1 -0
  104. package/dist/shared/domain/case-view/specific-access-request.model.metadata.json +1 -0
  105. package/dist/shared/domain/user/user-info.model.d.ts +1 -0
  106. package/dist/shared/services/form/form-value.service.d.ts +7 -0
  107. package/dist/shared/services/form/form-value.service.js +25 -0
  108. package/dist/shared/services/form/form-value.service.js.map +1 -1
  109. package/dist/shared/services/form/form-value.service.metadata.json +1 -1
  110. package/dist/shared/services/loading/loading.service.js +1 -1
  111. package/dist/shared/services/loading/loading.service.js.map +1 -1
  112. package/package.json +3 -3
  113. package/sonar-project.properties +4 -5
  114. package/dist/shared/components/palette/complex/ccd-collection-table-value-case-fields.pipe.d.ts +0 -7
  115. package/dist/shared/components/palette/complex/ccd-collection-table-value-case-fields.pipe.js +0 -48
  116. package/dist/shared/components/palette/complex/ccd-collection-table-value-case-fields.pipe.js.map +0 -1
  117. package/dist/shared/components/palette/complex/ccd-collection-table-value-case-fields.pipe.metadata.json +0 -1
  118. package/dist/shared/domain/case-view/requested-role.model.d.ts +0 -25
  119. package/dist/shared/domain/case-view/requested-role.model.js.map +0 -1
  120. package/dist/shared/domain/case-view/requested-role.model.metadata.json +0 -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.7.0-rc.4
3
+ * @version v4.7.1-EUI-4703-hearing-date
4
4
  * @link undefined
5
5
  * @license MIT
6
6
  */
@@ -10754,6 +10754,9 @@ var AbstractAppConfig = /** @class */ (function () {
10754
10754
  AbstractAppConfig.prototype.getLocationRefApiUrl = function () {
10755
10755
  return undefined;
10756
10756
  };
10757
+ AbstractAppConfig.prototype.getCamRoleAssignmentsApiUrl = function () {
10758
+ return undefined;
10759
+ };
10757
10760
  return AbstractAppConfig;
10758
10761
  }());
10759
10762
  exports.AbstractAppConfig = AbstractAppConfig;
@@ -10881,6 +10884,7 @@ var CaseUIToolkitModule = /** @class */ (function () {
10881
10884
  shared_1.WriteNumberFieldComponent,
10882
10885
  shared_1.WriteEmailFieldComponent,
10883
10886
  shared_1.WriteDateFieldComponent,
10887
+ shared_1.ConditionalShowDirective,
10884
10888
  shared_1.LabelSubstitutorDirective,
10885
10889
  shared_1.FocusElementDirective,
10886
10890
  ngx_pagination_1.PaginatePipe
@@ -11975,6 +11979,7 @@ exports.SortOrder = domain_1.SortOrder;
11975
11979
  exports.SortParameters = domain_1.SortParameters;
11976
11980
  var directives_1 = __webpack_require__(66395);
11977
11981
  exports.ShowCondition = directives_1.ShowCondition;
11982
+ exports.ConditionalShowDirective = directives_1.ConditionalShowDirective;
11978
11983
  exports.ConditionalShowModule = directives_1.ConditionalShowModule;
11979
11984
  exports.PlaceholderService = directives_1.PlaceholderService;
11980
11985
  exports.LabelSubstitutorDirective = directives_1.LabelSubstitutorDirective;
@@ -12377,6 +12382,82 @@ __export(__webpack_require__(41580));
12377
12382
  __export(__webpack_require__(4765));
12378
12383
 
12379
12384
 
12385
+ /***/ }),
12386
+
12387
+ /***/ 25919:
12388
+ /***/ ((__unused_webpack_module, exports) => {
12389
+
12390
+ "use strict";
12391
+
12392
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
12393
+ var CaseAccessUtils = /** @class */ (function () {
12394
+ function CaseAccessUtils() {
12395
+ }
12396
+ CaseAccessUtils.prototype.getMappedRoleCategory = function (roles, roleCategories) {
12397
+ var roleKeywords = roles.join().split('-').join().split(',');
12398
+ if (this.roleOrCategoryExists(CaseAccessUtils.JUDGE_ROLE, CaseAccessUtils.JUDGE_ROLE_CATEGORY, roleKeywords, roleCategories)) {
12399
+ return CaseAccessUtils.JUDGE_ROLE_CATEGORY;
12400
+ }
12401
+ else if (this.roleOrCategoryExists(CaseAccessUtils.PROFESSIONAL_ROLE, CaseAccessUtils.PROFESSIONAL_ROLE_CATEGORY, roleKeywords, roleCategories)) {
12402
+ return CaseAccessUtils.PROFESSIONAL_ROLE_CATEGORY;
12403
+ }
12404
+ else if (this.roleOrCategoryExists(CaseAccessUtils.CITIZEN_ROLE, CaseAccessUtils.CITIZEN_ROLE_CATEGORY, roleKeywords, roleCategories)) {
12405
+ return CaseAccessUtils.CITIZEN_ROLE_CATEGORY;
12406
+ }
12407
+ else if (this.roleOrCategoryExists(CaseAccessUtils.ADMIN_ROLE, CaseAccessUtils.ADMIN_ROLE_CATEGORY, roleKeywords, roleCategories)) {
12408
+ return CaseAccessUtils.ADMIN_ROLE_CATEGORY;
12409
+ }
12410
+ else {
12411
+ return CaseAccessUtils.LEGAL_OPERATIONS_ROLE_CATEGORY;
12412
+ }
12413
+ };
12414
+ CaseAccessUtils.prototype.roleOrCategoryExists = function (roleKeyword, roleCategory, roleKeywords, roleCategories) {
12415
+ var categoryExists = roleCategories.indexOf(roleCategory) > -1;
12416
+ var keywordExists = roleKeywords.indexOf(roleKeyword) > -1;
12417
+ return categoryExists ? categoryExists : keywordExists;
12418
+ };
12419
+ CaseAccessUtils.prototype.getAMRoleName = function (accessType, aMRole) {
12420
+ var roleName = '';
12421
+ switch (aMRole) {
12422
+ case CaseAccessUtils.JUDGE_ROLE_CATEGORY:
12423
+ roleName = accessType + "-access-" + CaseAccessUtils.JUDGE_ROLE_NAME;
12424
+ break;
12425
+ case CaseAccessUtils.PROFESSIONAL_ROLE_CATEGORY:
12426
+ roleName = accessType + "-access-" + CaseAccessUtils.PROFESSIONAL_ROLE_NAME;
12427
+ break;
12428
+ case CaseAccessUtils.CITIZEN_ROLE_CATEGORY:
12429
+ roleName = accessType + "-access-" + CaseAccessUtils.CITIZEN_ROLE_NAME;
12430
+ break;
12431
+ case CaseAccessUtils.ADMIN_ROLE_CATEGORY:
12432
+ roleName = accessType + "-access-" + CaseAccessUtils.ADMIN_ROLE_NAME;
12433
+ break;
12434
+ default:
12435
+ roleName = accessType + "-access-" + CaseAccessUtils.LEGAL_OPERATIONS_ROLE_NAME;
12436
+ break;
12437
+ }
12438
+ return roleName;
12439
+ };
12440
+ // User role mapping
12441
+ CaseAccessUtils.JUDGE_ROLE = 'judge';
12442
+ CaseAccessUtils.JUDGE_ROLE_CATEGORY = 'JUDICIAL';
12443
+ CaseAccessUtils.JUDGE_ROLE_NAME = 'judicial';
12444
+ CaseAccessUtils.ADMIN_ROLE = 'admin';
12445
+ CaseAccessUtils.ADMIN_ROLE_CATEGORY = 'ADMIN';
12446
+ CaseAccessUtils.ADMIN_ROLE_NAME = 'admin';
12447
+ CaseAccessUtils.PROFESSIONAL_ROLE = 'solicitor';
12448
+ CaseAccessUtils.PROFESSIONAL_ROLE_CATEGORY = 'PROFESSIONAL';
12449
+ CaseAccessUtils.PROFESSIONAL_ROLE_NAME = 'professional';
12450
+ CaseAccessUtils.LEGAL_OPERATIONS_ROLE = 'caseworker';
12451
+ CaseAccessUtils.LEGAL_OPERATIONS_ROLE_CATEGORY = 'LEGAL_OPERATIONS';
12452
+ CaseAccessUtils.LEGAL_OPERATIONS_ROLE_NAME = 'legal-operations';
12453
+ CaseAccessUtils.CITIZEN_ROLE = 'citizen';
12454
+ CaseAccessUtils.CITIZEN_ROLE_CATEGORY = 'CITIZEN';
12455
+ CaseAccessUtils.CITIZEN_ROLE_NAME = 'citizen';
12456
+ return CaseAccessUtils;
12457
+ }());
12458
+ exports.CaseAccessUtils = CaseAccessUtils;
12459
+
12460
+
12380
12461
  /***/ }),
12381
12462
 
12382
12463
  /***/ 19119:
@@ -12868,6 +12949,7 @@ var CaseEditPageComponent = /** @class */ (function () {
12868
12949
  if (this.currentPageIsNotValid()) {
12869
12950
  this.generateErrorMessage(this.currentPage.case_fields);
12870
12951
  }
12952
+ this.showSpinner = true;
12871
12953
  if (!this.isSubmitting && !this.currentPageIsNotValid()) {
12872
12954
  this.isSubmitting = true;
12873
12955
  this.error = null;
@@ -12878,8 +12960,12 @@ var CaseEditPageComponent = /** @class */ (function () {
12878
12960
  _this.updateFormData(jsonData);
12879
12961
  }
12880
12962
  _this.saveDraft();
12963
+ _this.showSpinner = false;
12881
12964
  _this.next();
12882
- }, function (error) { return _this.handleError(error); });
12965
+ }, function (error) {
12966
+ _this.showSpinner = false;
12967
+ _this.handleError(error);
12968
+ });
12883
12969
  CaseEditPageComponent_1.scrollToTop();
12884
12970
  }
12885
12971
  CaseEditPageComponent_1.setFocusToTop();
@@ -12907,7 +12993,15 @@ var CaseEditPageComponent = /** @class */ (function () {
12907
12993
  CaseEditPageComponent.prototype.updateFormControlsValue = function (formGroup, caseFieldId, value) {
12908
12994
  var theControl = formGroup.controls['data'].get(caseFieldId);
12909
12995
  if (theControl) {
12910
- theControl.patchValue(value);
12996
+ if (Array.isArray(theControl.value) && Array.isArray(value)
12997
+ && theControl.value.length > value.length && theControl['caseField']
12998
+ && theControl['caseField']['display_context'] && theControl['caseField']['display_context'] === 'OPTIONAL'
12999
+ && theControl['caseField']['field_type'] && theControl['caseField']['field_type']['type'] === 'Collection') {
13000
+ // do nothing
13001
+ }
13002
+ else {
13003
+ theControl.patchValue(value);
13004
+ }
12911
13005
  }
12912
13006
  };
12913
13007
  CaseEditPageComponent.prototype.callbackErrorsNotify = function (errorContext) {
@@ -13704,6 +13798,7 @@ var profile_1 = __webpack_require__(59412);
13704
13798
  var profile_service_1 = __webpack_require__(25925);
13705
13799
  var router_2 = __webpack_require__(71724);
13706
13800
  var errors_module_1 = __webpack_require__(61386);
13801
+ var loading_spinner_component_1 = __webpack_require__(41617);
13707
13802
  var palette_1 = __webpack_require__(22212);
13708
13803
  var case_create_component_1 = __webpack_require__(19119);
13709
13804
  var case_edit_confirm_component_1 = __webpack_require__(26329);
@@ -13742,7 +13837,8 @@ var CaseEditorModule = /** @class */ (function () {
13742
13837
  case_edit_form_component_1.CaseEditFormComponent,
13743
13838
  case_edit_submit_component_1.CaseEditSubmitComponent,
13744
13839
  case_create_component_1.CaseCreateComponent,
13745
- case_progress_component_1.CaseProgressComponent
13840
+ case_progress_component_1.CaseProgressComponent,
13841
+ loading_spinner_component_1.LoadingSpinnerComponent
13746
13842
  ],
13747
13843
  exports: [
13748
13844
  case_edit_confirm_component_1.CaseEditConfirmComponent,
@@ -13753,6 +13849,7 @@ var CaseEditorModule = /** @class */ (function () {
13753
13849
  case_create_component_1.CaseCreateComponent,
13754
13850
  case_progress_component_1.CaseProgressComponent,
13755
13851
  error_1.CallbackErrorsComponent,
13852
+ loading_spinner_component_1.LoadingSpinnerComponent,
13756
13853
  ],
13757
13854
  providers: [
13758
13855
  fields_utils_1.FieldsUtils,
@@ -14045,7 +14142,7 @@ var Wizard = /** @class */ (function () {
14045
14142
  return canShow(foundPage) ? foundPage : undefined;
14046
14143
  };
14047
14144
  Wizard.prototype.findWizardPage = function (caseFieldId, pageId) {
14048
- return this.pages.find(function (wizardPage) { return wizardPage.id === pageId && wizardPage.case_fields &&
14145
+ return this.pages.find(function (wizardPage) { return wizardPage.id === pageId || wizardPage.case_fields &&
14049
14146
  wizardPage.case_fields.filter(function (caseField) { return caseField.id === caseFieldId; }).length > 0; });
14050
14147
  };
14051
14148
  Wizard.prototype.nextPage = function (pageId, canShow) {
@@ -14147,6 +14244,7 @@ __export(__webpack_require__(29808));
14147
14244
  __export(__webpack_require__(25961));
14148
14245
  __export(__webpack_require__(20039));
14149
14246
  __export(__webpack_require__(41473));
14247
+ __export(__webpack_require__(25919));
14150
14248
 
14151
14249
 
14152
14250
  /***/ }),
@@ -14319,6 +14417,7 @@ var app_config_1 = __webpack_require__(35185);
14319
14417
  var directives_1 = __webpack_require__(66395);
14320
14418
  var domain_1 = __webpack_require__(59346);
14321
14419
  var services_1 = __webpack_require__(65010);
14420
+ var case_access_utils_1 = __webpack_require__(25919);
14322
14421
  var wizard_page_field_to_case_field_mapper_1 = __webpack_require__(12393);
14323
14422
  var work_allocation_service_1 = __webpack_require__(93603);
14324
14423
  var CasesService = /** @class */ (function () {
@@ -14588,56 +14687,41 @@ var CasesService = /** @class */ (function () {
14588
14687
  return this.http.get(this.appConfig.getLocationRefApiUrl() + "/building-locations?epimms_id=" + locationId);
14589
14688
  };
14590
14689
  CasesService.prototype.createChallengedAccessRequest = function (caseId, car) {
14591
- // Dummy implementation for now; the real one will make a call to the Node layer, which will call the appropriate Role
14592
14690
  // Assignment API endpoint
14593
- var roleAssignmentResponse = {
14691
+ var userInfoStr = this.sessionStorageService.getItem('userDetails');
14692
+ var camUtils = new case_access_utils_1.CaseAccessUtils();
14693
+ var userInfo;
14694
+ if (userInfoStr) {
14695
+ userInfo = JSON.parse(userInfoStr);
14696
+ }
14697
+ var roleCategory = camUtils.getMappedRoleCategory(userInfo.roles, userInfo.roleCategories);
14698
+ var roleName = camUtils.getAMRoleName('challenged', roleCategory);
14699
+ var payload = {
14594
14700
  roleRequest: {
14595
- id: '0c6f56f5-4457-485e-a0de-828e6dfa1e33',
14596
- authenticatedUserId: '37d4eab7-e14c-404e-8cd1-55cd06b2fc06',
14597
- correlationId: '003352d0-e699-48bc-b6f5-5810411e60af',
14598
- assignerId: '37d4eab7-e14c-404e-8cd1-55cd06b2fc06',
14599
- requestType: 'CREATE',
14600
- process: 'businessProcess1',
14601
- reference: 'cf07ea33-31c0-4442-b2df-e2032d21b496',
14602
- replaceExisting: true,
14603
- status: 'APPROVED',
14604
- created: new Date('2021-01-28T18:16:49.100121Z'),
14605
- log: 'Request has been approved'
14701
+ assignerId: userInfo.id
14606
14702
  },
14607
14703
  requestedRoles: [{
14608
- id: '3ccabbf2-71fa-4c5d-af39-5675d25e9fcc',
14609
14704
  actorIdType: 'IDAM',
14610
- actorId: 'cf07ea33-31c0-4442-b2df-e2032d21b496',
14611
- roleType: 'ORGANISATION',
14612
- roleName: 'judge',
14705
+ actorId: userInfo.id,
14706
+ roleType: 'CASE',
14707
+ roleName: roleName,
14613
14708
  classification: 'PUBLIC',
14709
+ roleCategory: roleCategory,
14614
14710
  grantType: 'CHALLENGED',
14615
- roleCategory: 'JUDICIAL',
14616
- readOnly: false,
14617
- beginTime: new Date('2021-01-01T00:00:00Z'),
14618
- endTime: new Date('2023-01-01T00:00:00Z'),
14619
- process: 'businessProcess1',
14620
- reference: 'cf07ea33-31c0-4442-b2df-e2032d21b496',
14621
- status: 'LIVE',
14622
- created: new Date('2021-01-28T18:16:49.100155Z'),
14623
- log: 'Create requested with replace: true\nCreate approved : judicial_organisational_role_mapping_service_create',
14711
+ beginTime: new Date(),
14712
+ endTime: new Date(new Date().setUTCHours(23, 59, 59, 999)),
14624
14713
  attributes: {
14625
- jurisdiction: 'divorce',
14626
- region: 'south-east',
14627
- contractType: 'SALARIED'
14714
+ caseId: caseId
14628
14715
  },
14629
14716
  notes: [{
14630
- userId: '003352d0-e699-48bc-b6f5-5810411e60ag',
14631
- time: new Date('2020-01-01T00:00Z'),
14632
- comment: 'Need Access to case number 1234567890123456 for a month'
14633
- }, {
14634
- userId: '52aa3810-af1f-11ea-b3de-0242ac130004',
14635
- time: new Date('2020-01-02T00:00Z'),
14636
- comment: 'Access granted till end of day'
14637
- }]
14717
+ userId: userInfo.id,
14718
+ time: new Date(),
14719
+ comment: JSON.stringify(car)
14720
+ }
14721
+ ]
14638
14722
  }]
14639
14723
  };
14640
- return rxjs_1.of(roleAssignmentResponse);
14724
+ return this.http.post("" + this.appConfig.getCamRoleAssignmentsApiUrl(), payload);
14641
14725
  };
14642
14726
  var CasesService_1;
14643
14727
  // Internal (UI) API
@@ -16054,6 +16138,9 @@ var CaseBasicAccessViewComponent = /** @class */ (function () {
16054
16138
  // Navigate to the previous page
16055
16139
  window.history.go(-1);
16056
16140
  };
16141
+ CaseBasicAccessViewComponent.prototype.getRequestUrl = function (accessType) {
16142
+ return accessType === 'CHALLENGED' ? 'challenged-access-request' : 'specific-access-request';
16143
+ };
16057
16144
  __decorate([
16058
16145
  core_1.Input(),
16059
16146
  __metadata("design:type", domain_1.CaseView)
@@ -16562,13 +16649,11 @@ var CaseFullAccessViewComponent = /** @class */ (function () {
16562
16649
  return this.caseDetails.case_type.printEnabled;
16563
16650
  };
16564
16651
  CaseFullAccessViewComponent.prototype.ngOnDestroy = function () {
16565
- if (this.activitySubscription && this.activityPollingService.isEnabled) {
16652
+ if (this.activityPollingService.isEnabled) {
16566
16653
  this.activitySubscription.unsubscribe();
16567
16654
  }
16568
- if (this.callbackErrorsSubject) {
16569
- this.callbackErrorsSubject.unsubscribe();
16570
- }
16571
- if (!this.route.snapshot.data.case && this.caseSubscription) {
16655
+ this.callbackErrorsSubject.unsubscribe();
16656
+ if (!this.route.snapshot.data.case) {
16572
16657
  this.caseSubscription.unsubscribe();
16573
16658
  }
16574
16659
  if (this.errorSubscription) {
@@ -16663,8 +16748,7 @@ var CaseFullAccessViewComponent = /** @class */ (function () {
16663
16748
  var regExp = new RegExp(CaseFullAccessViewComponent_1.UNICODE_SPACE, 'g');
16664
16749
  hashValue = hashValue.replace(regExp, CaseFullAccessViewComponent_1.EMPTY_SPACE);
16665
16750
  matTab = this.tabGroup._tabs.find(function (x) {
16666
- return x.textLabel.replace(CaseFullAccessViewComponent_1.EMPTY_SPACE, '').toLowerCase() ===
16667
- hashValue.replace(CaseFullAccessViewComponent_1.EMPTY_SPACE, '').toLowerCase();
16751
+ return x.textLabel.replace(CaseFullAccessViewComponent_1.EMPTY_SPACE, '').toLowerCase() === hashValue.toLowerCase();
16668
16752
  });
16669
16753
  if (matTab && matTab.position) {
16670
16754
  this.tabGroup.selectedIndex = matTab.position;
@@ -16678,9 +16762,8 @@ var CaseFullAccessViewComponent = /** @class */ (function () {
16678
16762
  this.router.navigate([id], { relativeTo: this.route });
16679
16763
  }
16680
16764
  else {
16681
- var label_1 = tabChangeEvent.tab.textLabel;
16682
16765
  this.router.navigate(['cases', 'case-details', this.caseDetails.case_id]).then(function () {
16683
- window.location.hash = label_1;
16766
+ window.location.hash = id;
16684
16767
  });
16685
16768
  }
16686
16769
  };
@@ -16798,6 +16881,148 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
16798
16881
  __export(__webpack_require__(76764));
16799
16882
 
16800
16883
 
16884
+ /***/ }),
16885
+
16886
+ /***/ 38692:
16887
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
16888
+
16889
+ "use strict";
16890
+
16891
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
16892
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
16893
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
16894
+ 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;
16895
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
16896
+ };
16897
+ var __metadata = (this && this.__metadata) || function (k, v) {
16898
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
16899
+ };
16900
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
16901
+ var core_1 = __webpack_require__(57208);
16902
+ var forms_1 = __webpack_require__(92985);
16903
+ var router_1 = __webpack_require__(92302);
16904
+ var models_1 = __webpack_require__(3234);
16905
+ var CaseSpecificAccessRequestComponent = /** @class */ (function () {
16906
+ function CaseSpecificAccessRequestComponent(fb, router, route) {
16907
+ this.fb = fb;
16908
+ this.router = router;
16909
+ this.route = route;
16910
+ this.collapsed = false;
16911
+ this.submitted = false;
16912
+ this.genericError = 'There is a problem';
16913
+ this.specificReasonControlName = 'specificReason';
16914
+ }
16915
+ CaseSpecificAccessRequestComponent.prototype.ngOnInit = function () {
16916
+ var _this = this;
16917
+ this.title = models_1.SpecificAccessRequestPageText.TITLE;
16918
+ this.hint = models_1.SpecificAccessRequestPageText.HINT;
16919
+ this.caseRefLabel = models_1.SpecificAccessRequestPageText.CASE_REF;
16920
+ this.formGroup = this.fb.group({
16921
+ radioSelected: new forms_1.FormControl(null, null),
16922
+ });
16923
+ this.formGroup.addControl(this.specificReasonControlName, new forms_1.FormControl('', {
16924
+ validators: [
16925
+ function (control) {
16926
+ if (_this.inputEmpty(control)) {
16927
+ return { invalid: true };
16928
+ }
16929
+ return null;
16930
+ },
16931
+ ],
16932
+ updateOn: 'submit',
16933
+ }));
16934
+ };
16935
+ CaseSpecificAccessRequestComponent.prototype.inputEmpty = function (input) {
16936
+ return input.value == null || input.value.trim().length === 0;
16937
+ };
16938
+ CaseSpecificAccessRequestComponent.prototype.onChange = function () {
16939
+ this.submitted = false;
16940
+ // Clear the "specific reason" fields manually. This prevents any previous value being retained by
16941
+ // the field's FormControl when the field itself is removed from the DOM by *ngIf. (If it is subsequently added back
16942
+ // to the DOM by *ngIf, it will appear empty but the associated FormControl still has the previous value.)
16943
+ this.formGroup.get(this.specificReasonControlName).setValue('');
16944
+ };
16945
+ CaseSpecificAccessRequestComponent.prototype.onSubmit = function () {
16946
+ this.submitted = true;
16947
+ if (this.formGroup.get(this.specificReasonControlName).invalid) {
16948
+ this.errorMessage = {
16949
+ title: this.genericError,
16950
+ description: models_1.SpecificAccessRequestErrors.NO_REASON,
16951
+ fieldId: 'specific-reason',
16952
+ };
16953
+ }
16954
+ };
16955
+ CaseSpecificAccessRequestComponent.prototype.onCancel = function () {
16956
+ // Navigate to the page before previous one (should be Search Results or Case List page, for example)
16957
+ window.history.go(-2);
16958
+ };
16959
+ CaseSpecificAccessRequestComponent.prototype.ngOnDestroy = function () {
16960
+ if (this.$roleAssignmentResponseSubscription) {
16961
+ this.$roleAssignmentResponseSubscription.unsubscribe();
16962
+ }
16963
+ };
16964
+ CaseSpecificAccessRequestComponent = __decorate([
16965
+ core_1.Component({
16966
+ selector: 'ccd-case-specific-access-request',
16967
+ template: __webpack_require__(5856),
16968
+ }),
16969
+ __metadata("design:paramtypes", [forms_1.FormBuilder,
16970
+ router_1.Router,
16971
+ router_1.ActivatedRoute])
16972
+ ], CaseSpecificAccessRequestComponent);
16973
+ return CaseSpecificAccessRequestComponent;
16974
+ }());
16975
+ exports.CaseSpecificAccessRequestComponent = CaseSpecificAccessRequestComponent;
16976
+
16977
+
16978
+ /***/ }),
16979
+
16980
+ /***/ 73343:
16981
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
16982
+
16983
+ "use strict";
16984
+
16985
+ function __export(m) {
16986
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
16987
+ }
16988
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
16989
+ __export(__webpack_require__(38692));
16990
+
16991
+
16992
+ /***/ }),
16993
+
16994
+ /***/ 52772:
16995
+ /***/ ((__unused_webpack_module, exports) => {
16996
+
16997
+ "use strict";
16998
+
16999
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
17000
+ var SpecificAccessRequestPageText;
17001
+ (function (SpecificAccessRequestPageText) {
17002
+ SpecificAccessRequestPageText["TITLE"] = "Why do you need to access this case?";
17003
+ SpecificAccessRequestPageText["HINT"] = "Provide a reason.";
17004
+ SpecificAccessRequestPageText["CASE_REF"] = "Case reference";
17005
+ })(SpecificAccessRequestPageText = exports.SpecificAccessRequestPageText || (exports.SpecificAccessRequestPageText = {}));
17006
+ var SpecificAccessRequestErrors;
17007
+ (function (SpecificAccessRequestErrors) {
17008
+ SpecificAccessRequestErrors["NO_REASON"] = "Enter a reason";
17009
+ })(SpecificAccessRequestErrors = exports.SpecificAccessRequestErrors || (exports.SpecificAccessRequestErrors = {}));
17010
+
17011
+
17012
+ /***/ }),
17013
+
17014
+ /***/ 3234:
17015
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
17016
+
17017
+ "use strict";
17018
+
17019
+ function __export(m) {
17020
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
17021
+ }
17022
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
17023
+ __export(__webpack_require__(52772));
17024
+
17025
+
16801
17026
  /***/ }),
16802
17027
 
16803
17028
  /***/ 76979:
@@ -17084,6 +17309,7 @@ var palette_1 = __webpack_require__(22212);
17084
17309
  var case_basic_access_view_component_1 = __webpack_require__(42906);
17085
17310
  var case_challenged_access_request_component_1 = __webpack_require__(70776);
17086
17311
  var case_challenged_access_success_component_1 = __webpack_require__(41969);
17312
+ var case_specific_access_request_component_1 = __webpack_require__(38692);
17087
17313
  var case_event_trigger_1 = __webpack_require__(92100);
17088
17314
  var case_full_access_view_component_1 = __webpack_require__(76764);
17089
17315
  var case_view_1 = __webpack_require__(65389);
@@ -17112,7 +17338,6 @@ var CaseViewerModule = /** @class */ (function () {
17112
17338
  palette_1.EventLogModule,
17113
17339
  material_1.MatTabsModule,
17114
17340
  palette_1.ComplexModule,
17115
- forms_1.FormsModule,
17116
17341
  forms_1.ReactiveFormsModule,
17117
17342
  alert_1.AlertModule
17118
17343
  ],
@@ -17125,6 +17350,7 @@ var CaseViewerModule = /** @class */ (function () {
17125
17350
  case_view_1.CaseViewComponent,
17126
17351
  printer_1.PrintUrlPipe,
17127
17352
  case_challenged_access_request_component_1.CaseChallengedAccessRequestComponent,
17353
+ case_specific_access_request_component_1.CaseSpecificAccessRequestComponent,
17128
17354
  error_message_component_1.ErrorMessageComponent,
17129
17355
  case_challenged_access_success_component_1.CaseChallengedAccessSuccessComponent
17130
17356
  ],
@@ -17576,6 +17802,7 @@ var case_history_1 = __webpack_require__(30542);
17576
17802
  var file_upload_progress_guard_1 = __webpack_require__(27667);
17577
17803
  var case_challenged_access_request_1 = __webpack_require__(38403);
17578
17804
  var case_challenged_access_success_1 = __webpack_require__(26840);
17805
+ var case_specific_access_request_1 = __webpack_require__(73343);
17579
17806
  var case_event_trigger_component_1 = __webpack_require__(83645);
17580
17807
  var printer_1 = __webpack_require__(65773);
17581
17808
  var services_1 = __webpack_require__(50137);
@@ -17598,7 +17825,7 @@ exports.viewerRouting = [
17598
17825
  component: case_history_1.CaseHistoryComponent,
17599
17826
  },
17600
17827
  {
17601
- path: 'access-request',
17828
+ path: 'challenged-access-request',
17602
17829
  children: [
17603
17830
  {
17604
17831
  path: '',
@@ -17616,6 +17843,19 @@ exports.viewerRouting = [
17616
17843
  }
17617
17844
  }
17618
17845
  ]
17846
+ },
17847
+ {
17848
+ path: 'specific-access-request',
17849
+ children: [
17850
+ {
17851
+ path: '',
17852
+ component: case_specific_access_request_1.CaseSpecificAccessRequestComponent,
17853
+ data: {
17854
+ title: 'Request Specific Access'
17855
+ },
17856
+ pathMatch: 'full'
17857
+ }
17858
+ ]
17619
17859
  }
17620
17860
  ];
17621
17861
 
@@ -18650,6 +18890,45 @@ __export(__webpack_require__(13370));
18650
18890
  __export(__webpack_require__(62240));
18651
18891
 
18652
18892
 
18893
+ /***/ }),
18894
+
18895
+ /***/ 41617:
18896
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
18897
+
18898
+ "use strict";
18899
+
18900
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
18901
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
18902
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
18903
+ 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;
18904
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
18905
+ };
18906
+ var __metadata = (this && this.__metadata) || function (k, v) {
18907
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
18908
+ };
18909
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
18910
+ var core_1 = __webpack_require__(57208);
18911
+ var LoadingSpinnerComponent = /** @class */ (function () {
18912
+ function LoadingSpinnerComponent() {
18913
+ this.loadingText = 'Loading';
18914
+ }
18915
+ __decorate([
18916
+ core_1.Input(),
18917
+ __metadata("design:type", Object)
18918
+ ], LoadingSpinnerComponent.prototype, "loadingText", void 0);
18919
+ LoadingSpinnerComponent = __decorate([
18920
+ core_1.Component({
18921
+ selector: 'ccd-loading-spinner',
18922
+ template: __webpack_require__(31851),
18923
+ styles: [__webpack_require__(6431)],
18924
+ encapsulation: core_1.ViewEncapsulation.None
18925
+ })
18926
+ ], LoadingSpinnerComponent);
18927
+ return LoadingSpinnerComponent;
18928
+ }());
18929
+ exports.LoadingSpinnerComponent = LoadingSpinnerComponent;
18930
+
18931
+
18653
18932
  /***/ }),
18654
18933
 
18655
18934
  /***/ 47174:
@@ -19251,7 +19530,7 @@ var AbstractFieldReadComponent = /** @class */ (function (_super) {
19251
19530
  ], AbstractFieldReadComponent.prototype, "caseReference", void 0);
19252
19531
  __decorate([
19253
19532
  core_1.Input(),
19254
- __metadata("design:type", forms_1.FormGroup)
19533
+ __metadata("design:type", Object)
19255
19534
  ], AbstractFieldReadComponent.prototype, "topLevelFormGroup", void 0);
19256
19535
  __decorate([
19257
19536
  core_1.Input(),
@@ -20470,61 +20749,6 @@ var WriteCollectionFieldComponent = /** @class */ (function (_super) {
20470
20749
  exports.WriteCollectionFieldComponent = WriteCollectionFieldComponent;
20471
20750
 
20472
20751
 
20473
- /***/ }),
20474
-
20475
- /***/ 18649:
20476
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
20477
-
20478
- "use strict";
20479
-
20480
- var __assign = (this && this.__assign) || function () {
20481
- __assign = Object.assign || function(t) {
20482
- for (var s, i = 1, n = arguments.length; i < n; i++) {
20483
- s = arguments[i];
20484
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
20485
- t[p] = s[p];
20486
- }
20487
- return t;
20488
- };
20489
- return __assign.apply(this, arguments);
20490
- };
20491
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
20492
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20493
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
20494
- 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;
20495
- return c > 3 && r && Object.defineProperty(target, key, r), r;
20496
- };
20497
- Object.defineProperty(exports, "__esModule", ({ value: true }));
20498
- var core_1 = __webpack_require__(57208);
20499
- var definition_1 = __webpack_require__(11080);
20500
- var class_transformer_1 = __webpack_require__(86631);
20501
- var CcdCollectionTableCaseFieldsFilterPipe = /** @class */ (function () {
20502
- function CcdCollectionTableCaseFieldsFilterPipe() {
20503
- }
20504
- CcdCollectionTableCaseFieldsFilterPipe.prototype.transform = function (objs, caseField, value) {
20505
- var fields = objs.map(function (obj) { return (__assign({}, obj.value.caseField, { type: obj.value.type.type ? obj.value.type.type : obj.value.type })); });
20506
- return class_transformer_1.plainToClassFromExist(new definition_1.CaseField(), {
20507
- id: caseField ? caseField.id : '',
20508
- label: caseField ? caseField.label : '',
20509
- display_context: 'READONLY',
20510
- value: value,
20511
- field_type: {
20512
- id: caseField ? caseField.id : '',
20513
- type: 'Complex',
20514
- complex_fields: fields,
20515
- }
20516
- });
20517
- };
20518
- CcdCollectionTableCaseFieldsFilterPipe = __decorate([
20519
- core_1.Pipe({
20520
- name: 'ccdCollectionTableCaseFieldsFilter'
20521
- })
20522
- ], CcdCollectionTableCaseFieldsFilterPipe);
20523
- return CcdCollectionTableCaseFieldsFilterPipe;
20524
- }());
20525
- exports.CcdCollectionTableCaseFieldsFilterPipe = CcdCollectionTableCaseFieldsFilterPipe;
20526
-
20527
-
20528
20752
  /***/ }),
20529
20753
 
20530
20754
  /***/ 41392:
@@ -20586,7 +20810,9 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
20586
20810
  Object.defineProperty(exports, "__esModule", ({ value: true }));
20587
20811
  var core_1 = __webpack_require__(57208);
20588
20812
  var directives_1 = __webpack_require__(66395);
20813
+ var domain_1 = __webpack_require__(59346);
20589
20814
  var fields_1 = __webpack_require__(64906);
20815
+ var class_transformer_1 = __webpack_require__(86631);
20590
20816
  var ReadFieldsFilterPipe = /** @class */ (function () {
20591
20817
  function ReadFieldsFilterPipe() {
20592
20818
  }
@@ -20603,10 +20829,26 @@ var ReadFieldsFilterPipe = /** @class */ (function () {
20603
20829
  var type = field.field_type;
20604
20830
  var value = ReadFieldsFilterPipe_1.getValue(field, values);
20605
20831
  var hasChildrenWithValue = type.complex_fields.find(function (f) {
20606
- return ReadFieldsFilterPipe_1.keepField(f, value);
20832
+ var willKeep = ReadFieldsFilterPipe_1.keepField(f, value, true);
20833
+ return willKeep && ReadFieldsFilterPipe_1.evaluateConditionalShow(f, value).hidden !== true;
20607
20834
  });
20608
20835
  return !!hasChildrenWithValue;
20609
20836
  };
20837
+ ReadFieldsFilterPipe.isValidCollection = function (field, values) {
20838
+ var isNotEmpty = Array.isArray(field.value) && field.value.length > 0;
20839
+ if (isNotEmpty && field.field_type.collection_field_type.type === 'Complex') {
20840
+ return !!field.value.find(function (item) {
20841
+ var complexField = class_transformer_1.plainToClassFromExist(new domain_1.CaseField(), {
20842
+ id: field.field_type.collection_field_type.id,
20843
+ field_type: field.field_type.collection_field_type,
20844
+ value: item.value,
20845
+ label: null,
20846
+ });
20847
+ return ReadFieldsFilterPipe_1.isValidComplex(complexField);
20848
+ });
20849
+ }
20850
+ return isNotEmpty;
20851
+ };
20610
20852
  ReadFieldsFilterPipe.isEmpty = function (value) {
20611
20853
  return ReadFieldsFilterPipe_1.EMPTY_VALUES.indexOf(value) !== -1
20612
20854
  || value.length === 0;
@@ -20618,9 +20860,10 @@ var ReadFieldsFilterPipe = /** @class */ (function () {
20618
20860
  return ReadFieldsFilterPipe_1.isCompound(field)
20619
20861
  && ReadFieldsFilterPipe_1.NESTED_TYPES[field.field_type.type](field, value);
20620
20862
  };
20621
- ReadFieldsFilterPipe.keepField = function (field, value) {
20863
+ ReadFieldsFilterPipe.keepField = function (field, value, ignoreLabels) {
20864
+ if (ignoreLabels === void 0) { ignoreLabels = false; }
20622
20865
  // We shouldn't ditch labels.
20623
- if (field.field_type.type === 'Label' && (field.label || '').length > 0) {
20866
+ if (!ignoreLabels && field.field_type.type === 'Label' && (field.label || '').length > 0) {
20624
20867
  return true;
20625
20868
  }
20626
20869
  // We also shouldn't ditch CasePaymentHistoryViewer fields.
@@ -20707,7 +20950,8 @@ var ReadFieldsFilterPipe = /** @class */ (function () {
20707
20950
  {}
20708
20951
  ];
20709
20952
  ReadFieldsFilterPipe.NESTED_TYPES = {
20710
- 'Complex': ReadFieldsFilterPipe_1.isValidComplex
20953
+ 'Complex': ReadFieldsFilterPipe_1.isValidComplex,
20954
+ 'Collection': ReadFieldsFilterPipe_1.isValidCollection
20711
20955
  };
20712
20956
  ReadFieldsFilterPipe = ReadFieldsFilterPipe_1 = __decorate([
20713
20957
  core_1.Pipe({
@@ -20874,7 +21118,6 @@ var read_complex_field_table_component_1 = __webpack_require__(12259);
20874
21118
  var read_complex_field_component_1 = __webpack_require__(47157);
20875
21119
  var write_complex_field_component_1 = __webpack_require__(94091);
20876
21120
  var ccd_cyapage_label_filter_pipe_1 = __webpack_require__(41392);
20877
- var ccd_collection_table_value_case_fields_pipe_1 = __webpack_require__(18649);
20878
21121
  var ComplexModule = /** @class */ (function () {
20879
21122
  function ComplexModule() {
20880
21123
  }
@@ -20901,7 +21144,6 @@ var ComplexModule = /** @class */ (function () {
20901
21144
  read_complex_field_raw_component_1.ReadComplexFieldRawComponent,
20902
21145
  read_complex_field_table_component_1.ReadComplexFieldTableComponent,
20903
21146
  read_complex_field_collection_table_component_1.ReadComplexFieldCollectionTableComponent,
20904
- ccd_collection_table_value_case_fields_pipe_1.CcdCollectionTableCaseFieldsFilterPipe,
20905
21147
  ccd_cyapage_label_filter_pipe_1.CcdCYAPageLabelFilterPipe,
20906
21148
  ],
20907
21149
  entryComponents: [
@@ -20913,9 +21155,8 @@ var ComplexModule = /** @class */ (function () {
20913
21155
  fields_filter_pipe_1.FieldsFilterPipe,
20914
21156
  ccd_tab_fields_pipe_1.CcdTabFieldsPipe,
20915
21157
  ccd_read_fields_filter_pipe_1.ReadFieldsFilterPipe,
20916
- ccd_cyapage_label_filter_pipe_1.CcdCYAPageLabelFilterPipe,
20917
- ccd_collection_table_value_case_fields_pipe_1.CcdCollectionTableCaseFieldsFilterPipe,
20918
- write_complex_field_component_1.WriteComplexFieldComponent
21158
+ write_complex_field_component_1.WriteComplexFieldComponent,
21159
+ ccd_cyapage_label_filter_pipe_1.CcdCYAPageLabelFilterPipe
20919
21160
  ]
20920
21161
  })
20921
21162
  ], ComplexModule);
@@ -21108,8 +21349,6 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
21108
21349
  var core_1 = __webpack_require__(57208);
21109
21350
  var abstract_field_read_component_1 = __webpack_require__(73860);
21110
21351
  var sort_order_1 = __webpack_require__(88843);
21111
- var definition_1 = __webpack_require__(11080);
21112
- var class_transformer_1 = __webpack_require__(86631);
21113
21352
  var ReadComplexFieldCollectionTableComponent = /** @class */ (function (_super) {
21114
21353
  __extends(ReadComplexFieldCollectionTableComponent, _super);
21115
21354
  function ReadComplexFieldCollectionTableComponent() {
@@ -21119,17 +21358,13 @@ var ReadComplexFieldCollectionTableComponent = /** @class */ (function (_super)
21119
21358
  _this.keepOriginalOrder = function (a, b) { return a.key; };
21120
21359
  return _this;
21121
21360
  }
21122
- ReadComplexFieldCollectionTableComponent_1 = ReadComplexFieldCollectionTableComponent;
21123
- ReadComplexFieldCollectionTableComponent.isSortAscending = function (column) {
21124
- return !(column.sortOrder === sort_order_1.SortOrder.UNSORTED || column.sortOrder === sort_order_1.SortOrder.DESCENDING);
21125
- };
21126
21361
  ReadComplexFieldCollectionTableComponent.prototype.ngOnInit = function () {
21127
21362
  _super.prototype.ngOnInit.call(this);
21128
21363
  if (this.caseField.display_context_parameter
21129
21364
  && this.caseField.display_context_parameter.trim().startsWith('#TABLE(')) {
21130
21365
  var displayContextParameter = this.caseField.display_context_parameter.trim();
21131
21366
  var result = displayContextParameter.replace('#TABLE(', '');
21132
- this.columns = result.replace(')', '').split(',').map(function (c) { return c.trim(); });
21367
+ this.columns = result.replace(')', '').split(',');
21133
21368
  var labelsVertical = {};
21134
21369
  var labelsHorizontal = {};
21135
21370
  var allLabels = {};
@@ -21141,6 +21376,40 @@ var ReadComplexFieldCollectionTableComponent = /** @class */ (function (_super)
21141
21376
  this.columnsAllLabels = allLabels;
21142
21377
  }
21143
21378
  };
21379
+ ReadComplexFieldCollectionTableComponent.prototype.populateHorizontalLabels = function (labelsHorizontal, allLabels, labelsVertical) {
21380
+ for (var _i = 0, _a = this.columns; _i < _a.length; _i++) {
21381
+ var id = _a[_i];
21382
+ labelsHorizontal[id.trim()] = allLabels[id.trim()];
21383
+ labelsHorizontal[id.trim()].sortOrder = sort_order_1.SortOrder.UNSORTED;
21384
+ delete labelsVertical[id.trim()];
21385
+ }
21386
+ };
21387
+ ReadComplexFieldCollectionTableComponent.prototype.populateLabels = function (labelsVertical, allLabels) {
21388
+ for (var _i = 0, _a = this.caseField.field_type.complex_fields; _i < _a.length; _i++) {
21389
+ var obj = _a[_i];
21390
+ if (obj.field_type.type === 'FixedList' ||
21391
+ obj.field_type.type === 'MultiSelectList' ||
21392
+ obj.field_type.type === 'FixedRadioList') {
21393
+ labelsVertical[obj.id] = { label: obj.label, type: obj.field_type, caseField: obj };
21394
+ allLabels[obj.id] = { label: obj.label, type: obj.field_type };
21395
+ }
21396
+ else if (obj.isComplex()) {
21397
+ labelsVertical[obj.id] = { label: obj.label, type: obj.field_type.type, caseField: obj };
21398
+ allLabels[obj.id] = { label: obj.label, type: obj.field_type.type, caseField: obj };
21399
+ }
21400
+ else {
21401
+ labelsVertical[obj.id] = { label: obj.label, type: { type: obj.field_type.type }, caseField: obj };
21402
+ allLabels[obj.id] = { label: obj.label, type: { type: obj.field_type.type }, caseField: obj };
21403
+ }
21404
+ }
21405
+ };
21406
+ ReadComplexFieldCollectionTableComponent.prototype.populateCaseFieldValuesIntoRows = function () {
21407
+ for (var _i = 0, _a = this.caseField.value; _i < _a.length; _i++) {
21408
+ var obj = _a[_i];
21409
+ this.rows.push(obj.value);
21410
+ this.isHidden.push(true);
21411
+ }
21412
+ };
21144
21413
  ReadComplexFieldCollectionTableComponent.prototype.getImage = function (row) {
21145
21414
  if (this.isHidden[row]) {
21146
21415
  return 'img/accordion-plus.png';
@@ -21162,18 +21431,21 @@ var ReadComplexFieldCollectionTableComponent = /** @class */ (function (_super)
21162
21431
  field.value = value;
21163
21432
  return true;
21164
21433
  };
21434
+ ReadComplexFieldCollectionTableComponent.prototype.isNotBlank = function (value) {
21435
+ return value !== null && value !== '';
21436
+ };
21165
21437
  ReadComplexFieldCollectionTableComponent.prototype.addCaseReferenceValue = function (field, value) {
21166
21438
  field.value = { CaseReference: value };
21167
21439
  return field;
21168
21440
  };
21169
- ReadComplexFieldCollectionTableComponent.prototype.toCaseField = function (id, label, field_type, value) {
21170
- return class_transformer_1.plainToClassFromExist(new definition_1.CaseField(), {
21171
- id: id,
21172
- label: label,
21173
- display_context: 'READONLY',
21174
- value: value,
21175
- field_type: field_type
21176
- });
21441
+ ReadComplexFieldCollectionTableComponent.prototype.isVerticleDataNotEmpty = function (row) {
21442
+ var result = false;
21443
+ for (var key in this.columnsVerticalLabel) {
21444
+ if (this.rows[row][key]) {
21445
+ result = true;
21446
+ }
21447
+ }
21448
+ return result;
21177
21449
  };
21178
21450
  ReadComplexFieldCollectionTableComponent.prototype.sortRowsByColumns = function (column) {
21179
21451
  var shouldSortInAscendingOrder = this.columnsHorizontalLabel[column].sortOrder === sort_order_1.SortOrder.UNSORTED
@@ -21214,55 +21486,16 @@ var ReadComplexFieldCollectionTableComponent = /** @class */ (function (_super)
21214
21486
  break;
21215
21487
  }
21216
21488
  };
21217
- ReadComplexFieldCollectionTableComponent.prototype.sortWidget = function (column) {
21218
- return ReadComplexFieldCollectionTableComponent_1.isSortAscending(column) ? '&#9660;' : '&#9650;';
21219
- };
21220
- ReadComplexFieldCollectionTableComponent.prototype.populateHorizontalLabels = function (labelsHorizontal, allLabels, labelsVertical) {
21221
- for (var _i = 0, _a = this.columns; _i < _a.length; _i++) {
21222
- var id = _a[_i];
21223
- var trimmedId = id.trim();
21224
- labelsHorizontal[trimmedId] = allLabels[trimmedId];
21225
- labelsHorizontal[trimmedId].sortOrder = sort_order_1.SortOrder.UNSORTED;
21226
- delete labelsVertical[trimmedId];
21227
- }
21228
- };
21229
- ReadComplexFieldCollectionTableComponent.prototype.populateLabels = function (labelsVertical, allLabels) {
21230
- for (var _i = 0, _a = this.caseField.field_type.complex_fields; _i < _a.length; _i++) {
21231
- var obj = _a[_i];
21232
- if (obj.field_type.type === 'FixedList' ||
21233
- obj.field_type.type === 'MultiSelectList' ||
21234
- obj.field_type.type === 'FixedRadioList') {
21235
- labelsVertical[obj.id] = { label: obj.label, type: obj.field_type, caseField: obj };
21236
- allLabels[obj.id] = { label: obj.label, type: obj.field_type };
21237
- }
21238
- else if (obj.isComplex()) {
21239
- labelsVertical[obj.id] = { label: obj.label, type: obj.field_type.type, caseField: obj };
21240
- allLabels[obj.id] = { label: obj.label, type: obj.field_type.type, caseField: obj };
21241
- }
21242
- else {
21243
- labelsVertical[obj.id] = { label: obj.label, type: { type: obj.field_type.type }, caseField: obj };
21244
- allLabels[obj.id] = { label: obj.label, type: { type: obj.field_type.type }, caseField: obj };
21245
- }
21246
- }
21489
+ ReadComplexFieldCollectionTableComponent.prototype.isSortAscending = function (column) {
21490
+ return !(column.sortOrder === sort_order_1.SortOrder.UNSORTED || column.sortOrder === sort_order_1.SortOrder.DESCENDING);
21247
21491
  };
21248
- ReadComplexFieldCollectionTableComponent.prototype.populateCaseFieldValuesIntoRows = function () {
21249
- for (var _i = 0, _a = this.caseField.value; _i < _a.length; _i++) {
21250
- var obj = _a[_i];
21251
- this.rows.push(obj.value);
21252
- this.isHidden.push(true);
21253
- }
21492
+ ReadComplexFieldCollectionTableComponent.prototype.sortWidget = function (column) {
21493
+ return this.isSortAscending(column) ? '&#9660;' : '&#9650;';
21254
21494
  };
21255
- ReadComplexFieldCollectionTableComponent.prototype.isVerticleDataNotEmpty = function (row) {
21256
- var result = false;
21257
- for (var key in this.columnsVerticalLabel) {
21258
- if (this.rows[row][key]) {
21259
- result = true;
21260
- }
21261
- }
21262
- return result;
21495
+ ReadComplexFieldCollectionTableComponent.prototype.trackByIndex = function (index, obj) {
21496
+ return index;
21263
21497
  };
21264
- var ReadComplexFieldCollectionTableComponent_1;
21265
- ReadComplexFieldCollectionTableComponent = ReadComplexFieldCollectionTableComponent_1 = __decorate([
21498
+ ReadComplexFieldCollectionTableComponent = __decorate([
21266
21499
  core_1.Component({
21267
21500
  selector: 'ccd-read-complex-field-collection-table',
21268
21501
  template: __webpack_require__(9643),
@@ -24594,6 +24827,14 @@ var WriteMultiSelectListFieldComponent = /** @class */ (function (_super) {
24594
24827
  });
24595
24828
  }
24596
24829
  this.registerControl(this.checkboxes, true);
24830
+ if (this.caseField.display_context && this.caseField.display_context === 'MANDATORY' && this.caseField.field_type
24831
+ && this.caseField.field_type.type === 'MultiSelectList' && this.caseField.field_type.fixed_list_items.length > 0
24832
+ && this.checkboxes.controls.length === 0) {
24833
+ if (this.caseField.field_type.fixed_list_items[0].code) {
24834
+ this.checkboxes.push(new forms_1.FormControl(this.caseField.field_type.fixed_list_items[0].code));
24835
+ this.checkboxes.removeAt(0);
24836
+ }
24837
+ }
24597
24838
  };
24598
24839
  WriteMultiSelectListFieldComponent.prototype.onCheckChange = function (event) {
24599
24840
  var _this = this;
@@ -28717,6 +28958,232 @@ var ConditionalShowFormDirective = /** @class */ (function () {
28717
28958
  exports.ConditionalShowFormDirective = ConditionalShowFormDirective;
28718
28959
 
28719
28960
 
28961
+ /***/ }),
28962
+
28963
+ /***/ 74015:
28964
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
28965
+
28966
+ "use strict";
28967
+
28968
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
28969
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
28970
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
28971
+ 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;
28972
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
28973
+ };
28974
+ var __metadata = (this && this.__metadata) || function (k, v) {
28975
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
28976
+ };
28977
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
28978
+ var core_1 = __webpack_require__(57208);
28979
+ var forms_1 = __webpack_require__(92985);
28980
+ var case_field_model_1 = __webpack_require__(13930);
28981
+ var conditional_show_model_1 = __webpack_require__(5369);
28982
+ var fields_utils_1 = __webpack_require__(40980);
28983
+ var conditional_show_registrar_service_1 = __webpack_require__(49532);
28984
+ var grey_bar_service_1 = __webpack_require__(100);
28985
+ var operators_1 = __webpack_require__(19443);
28986
+ var ConditionalShowDirective = /** @class */ (function () {
28987
+ function ConditionalShowDirective(el, fieldsUtils, registry, renderer, greyBarService) {
28988
+ this.el = el;
28989
+ this.fieldsUtils = fieldsUtils;
28990
+ this.registry = registry;
28991
+ this.renderer = renderer;
28992
+ this.greyBarService = greyBarService;
28993
+ this.contextFields = [];
28994
+ this.greyBarEnabled = false;
28995
+ }
28996
+ ConditionalShowDirective.prototype.ngAfterViewInit = function () {
28997
+ // Ensure this.caseField is actually a CaseField instance even if instantiated with {}
28998
+ // this.caseField = FieldsUtils.convertToCaseField(this.caseField);
28999
+ if (this.caseField.show_condition) {
29000
+ this.condition = conditional_show_model_1.ShowCondition.getInstance(this.caseField.show_condition);
29001
+ this.formGroup = this.formGroup || new forms_1.FormGroup({});
29002
+ this.complexFormGroup = this.complexFormGroup || new forms_1.FormGroup({});
29003
+ this.formField = this.complexFormGroup.get(this.caseField.id) || this.formGroup.get(this.caseField.id);
29004
+ this.updateVisibility(this.getCurrentPagesReadOnlyAndFormFieldValues());
29005
+ if (this.greyBarEnabled && this.greyBarService.wasToggledToShow(this.caseField.id)) {
29006
+ this.greyBarService.showGreyBar(this.caseField, this.el);
29007
+ }
29008
+ this.subscribeToFormChanges();
29009
+ this.registry.register(this);
29010
+ }
29011
+ };
29012
+ ConditionalShowDirective.prototype.refreshVisibility = function () {
29013
+ this.updateVisibility(this.getCurrentPagesReadOnlyAndFormFieldValues(), true);
29014
+ this.subscribeToFormChanges();
29015
+ };
29016
+ ConditionalShowDirective.prototype.ngOnDestroy = function () {
29017
+ this.unsubscribeFromFormChanges();
29018
+ };
29019
+ ConditionalShowDirective.prototype.subscribeToFormChanges = function () {
29020
+ var _this = this;
29021
+ this.unsubscribeFromFormChanges();
29022
+ this.formChangesSubscription = this.formGroup
29023
+ .valueChanges
29024
+ .pipe(operators_1.debounceTime(200))
29025
+ .subscribe(function (_) {
29026
+ var shown = _this.updateVisibility(_this.getCurrentPagesReadOnlyAndFormFieldValues());
29027
+ if (_this.greyBarEnabled && shown !== undefined) {
29028
+ _this.updateGreyBar(shown);
29029
+ }
29030
+ });
29031
+ };
29032
+ /**
29033
+ * returns whether the field visibility has changed, or undefined if not
29034
+ */
29035
+ ConditionalShowDirective.prototype.updateVisibility = function (fields, forced) {
29036
+ if (forced === void 0) { forced = false; }
29037
+ if (this.shouldToggleToHide(fields, forced)) {
29038
+ this.onHide();
29039
+ return false;
29040
+ }
29041
+ else if (this.shouldToggleToShow(fields)) {
29042
+ this.onShow();
29043
+ return true;
29044
+ }
29045
+ };
29046
+ ConditionalShowDirective.prototype.onHide = function () {
29047
+ if (this.formField) {
29048
+ this.unsubscribeFromFormChanges();
29049
+ this.formField.disable({ emitEvent: false });
29050
+ this.subscribeToFormChanges();
29051
+ }
29052
+ this.hideField();
29053
+ this.greyBarService.removeGreyBar(this.el);
29054
+ };
29055
+ ConditionalShowDirective.prototype.onShow = function () {
29056
+ if (this.formField) {
29057
+ this.unsubscribeFromFormChanges();
29058
+ this.formField.enable({ emitEvent: false });
29059
+ this.subscribeToFormChanges();
29060
+ }
29061
+ this.showField();
29062
+ if (this.formField) {
29063
+ this.checkHideShowCondition(this.caseField.id, this.formField);
29064
+ }
29065
+ };
29066
+ ConditionalShowDirective.prototype.hideField = function () {
29067
+ this.el.nativeElement.hidden = true;
29068
+ };
29069
+ ConditionalShowDirective.prototype.showField = function () {
29070
+ this.el.nativeElement.hidden = false;
29071
+ };
29072
+ ConditionalShowDirective.prototype.shouldToggleToHide = function (fields, forced) {
29073
+ return (!this.isHidden() || forced) && !this.condition.match(fields, this.buildPath());
29074
+ };
29075
+ ConditionalShowDirective.prototype.shouldToggleToShow = function (fields) {
29076
+ return this.isHidden() && this.condition.match(fields, this.buildPath());
29077
+ };
29078
+ ConditionalShowDirective.prototype.buildPath = function () {
29079
+ if (this.idPrefix) {
29080
+ return this.idPrefix + this.caseField.id;
29081
+ }
29082
+ return this.caseField.id;
29083
+ };
29084
+ ConditionalShowDirective.prototype.getCurrentPagesReadOnlyAndFormFieldValues = function () {
29085
+ var formFields = this.getFormFieldsValuesIncludingDisabled();
29086
+ return this.fieldsUtils.mergeCaseFieldsAndFormFields(this.contextFields, formFields);
29087
+ };
29088
+ ConditionalShowDirective.prototype.getFormFieldsValuesIncludingDisabled = function () {
29089
+ if (this.formGroupRawValue) {
29090
+ return this.formGroupRawValue;
29091
+ }
29092
+ this.formGroupRawValue = this.formGroup.getRawValue();
29093
+ return this.formGroupRawValue;
29094
+ };
29095
+ ConditionalShowDirective.prototype.isHidden = function () {
29096
+ return this.el.nativeElement.hidden;
29097
+ };
29098
+ ConditionalShowDirective.prototype.unsubscribeFromFormChanges = function () {
29099
+ if (this.formChangesSubscription) {
29100
+ this.formChangesSubscription.unsubscribe();
29101
+ }
29102
+ };
29103
+ // TODO This must be extracted to a generic service for traversing see RDM-2233
29104
+ ConditionalShowDirective.prototype.checkHideShowCondition = function (key, aControl) {
29105
+ var _this = this;
29106
+ if (aControl instanceof forms_1.FormArray) { // We're in a collection
29107
+ aControl.controls.forEach(function (formControl, i) {
29108
+ _this.checkHideShowCondition('' + i, formControl);
29109
+ });
29110
+ }
29111
+ else if (aControl instanceof forms_1.FormGroup) {
29112
+ if (aControl.get('value')) { // Complex Field
29113
+ var complexControl_1 = aControl.get('value');
29114
+ Object.keys(complexControl_1.controls).forEach(function (controlKey) {
29115
+ _this.checkHideShowCondition(controlKey, complexControl_1.get(controlKey));
29116
+ });
29117
+ }
29118
+ else if (aControl.controls) { // Special Field like AddressUK, AddressGlobal
29119
+ Object.keys(aControl.controls).forEach(function (controlKey) {
29120
+ _this.checkHideShowCondition(controlKey, aControl.get(controlKey));
29121
+ });
29122
+ }
29123
+ }
29124
+ else if (aControl instanceof forms_1.FormControl) { // FormControl
29125
+ if (aControl.invalid) {
29126
+ this.registry.refresh();
29127
+ }
29128
+ }
29129
+ };
29130
+ ConditionalShowDirective.prototype.updateGreyBar = function (shown) {
29131
+ if (shown) {
29132
+ this.greyBarService.addToggledToShow(this.caseField.id);
29133
+ this.greyBarService.showGreyBar(this.caseField, this.el);
29134
+ }
29135
+ else {
29136
+ this.greyBarService.removeToggledToShow(this.caseField.id);
29137
+ this.greyBarService.removeGreyBar(this.el);
29138
+ }
29139
+ };
29140
+ __decorate([
29141
+ core_1.Input(),
29142
+ __metadata("design:type", case_field_model_1.CaseField)
29143
+ ], ConditionalShowDirective.prototype, "caseField", void 0);
29144
+ __decorate([
29145
+ core_1.Input(),
29146
+ __metadata("design:type", String)
29147
+ ], ConditionalShowDirective.prototype, "idPrefix", void 0);
29148
+ __decorate([
29149
+ core_1.Input(),
29150
+ __metadata("design:type", Array)
29151
+ ], ConditionalShowDirective.prototype, "contextFields", void 0);
29152
+ __decorate([
29153
+ core_1.Input(),
29154
+ __metadata("design:type", forms_1.FormGroup)
29155
+ ], ConditionalShowDirective.prototype, "formGroup", void 0);
29156
+ __decorate([
29157
+ core_1.Input(),
29158
+ __metadata("design:type", Object)
29159
+ ], ConditionalShowDirective.prototype, "greyBarEnabled", void 0);
29160
+ __decorate([
29161
+ core_1.Input(),
29162
+ __metadata("design:type", forms_1.FormGroup)
29163
+ ], ConditionalShowDirective.prototype, "complexFormGroup", void 0);
29164
+ ConditionalShowDirective = __decorate([
29165
+ core_1.Directive({ selector: '[ccdConditionalShow]' })
29166
+ /** Hides and shows the host element based on the show condition if the condition is not empty. Works on read only fields and form fields.
29167
+ * The show condition is evaluated on all the fields of the page. i.e. read only and form fields. When a form field is hidden, if its
29168
+ * initial value was changed then the field is cleared. Otherwise the original value is kept and will display next time the field is
29169
+ * shown. Evaluation of the show condition includes disabled fields, which can be on their initial value or empty. Executes on the
29170
+ * host field initialization and when any field of the form changes.
29171
+ * Collaborates with the GreyBarService to show a vertical grey bar when a field initially hidden on the page is shown. When returning
29172
+ * to the page after the page has been left, the grey bar has to be redisplayed. If instead on initial page load the field renders as
29173
+ * initially shown, the grey bar is not displayed.
29174
+ */
29175
+ ,
29176
+ __metadata("design:paramtypes", [core_1.ElementRef,
29177
+ fields_utils_1.FieldsUtils,
29178
+ conditional_show_registrar_service_1.ConditionalShowRegistrarService,
29179
+ core_1.Renderer2,
29180
+ grey_bar_service_1.GreyBarService])
29181
+ ], ConditionalShowDirective);
29182
+ return ConditionalShowDirective;
29183
+ }());
29184
+ exports.ConditionalShowDirective = ConditionalShowDirective;
29185
+
29186
+
28720
29187
  /***/ }),
28721
29188
 
28722
29189
  /***/ 95844:
@@ -28732,6 +29199,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
28732
29199
  };
28733
29200
  Object.defineProperty(exports, "__esModule", ({ value: true }));
28734
29201
  var core_1 = __webpack_require__(57208);
29202
+ var conditional_show_directive_1 = __webpack_require__(74015);
28735
29203
  var fields_utils_1 = __webpack_require__(40980);
28736
29204
  var conditional_show_registrar_service_1 = __webpack_require__(49532);
28737
29205
  var grey_bar_service_1 = __webpack_require__(100);
@@ -28742,9 +29210,11 @@ var ConditionalShowModule = /** @class */ (function () {
28742
29210
  ConditionalShowModule = __decorate([
28743
29211
  core_1.NgModule({
28744
29212
  declarations: [
29213
+ conditional_show_directive_1.ConditionalShowDirective,
28745
29214
  conditional_show_form_directive_1.ConditionalShowFormDirective
28746
29215
  ],
28747
29216
  exports: [
29217
+ conditional_show_directive_1.ConditionalShowDirective,
28748
29218
  conditional_show_form_directive_1.ConditionalShowFormDirective
28749
29219
  ],
28750
29220
  providers: [
@@ -29076,6 +29546,7 @@ function __export(m) {
29076
29546
  }
29077
29547
  Object.defineProperty(exports, "__esModule", ({ value: true }));
29078
29548
  __export(__webpack_require__(97965));
29549
+ __export(__webpack_require__(74015));
29079
29550
  __export(__webpack_require__(32225));
29080
29551
  __export(__webpack_require__(95844));
29081
29552
 
@@ -29100,10 +29571,12 @@ var ConditionalShowRegistrarService = /** @class */ (function () {
29100
29571
  this.registeredDirectives = [];
29101
29572
  }
29102
29573
  ConditionalShowRegistrarService.prototype.register = function (newDirective) {
29574
+ // console.log('[', this.registeredDirectives.length, ']adding new directive', newDirective.caseField.id);
29103
29575
  this.registeredDirectives.push(newDirective);
29104
29576
  };
29105
29577
  ConditionalShowRegistrarService.prototype.refresh = function () {
29106
29578
  this.registeredDirectives.forEach(function (dir) {
29579
+ // console.log('refreshing ', dir.caseField.id);
29107
29580
  dir.refreshVisibility();
29108
29581
  });
29109
29582
  };
@@ -34353,6 +34826,13 @@ var FormValueService = /** @class */ (function () {
34353
34826
  }
34354
34827
  else {
34355
34828
  sanitisedObject[key] = this.sanitiseValue(rawObject[key]);
34829
+ if (Array.isArray(sanitisedObject[key])) {
34830
+ // If the 'sanitised' array is empty, whereas the original array had 1 or more items
34831
+ // delete the property from the sanatised object
34832
+ if (sanitisedObject[key].length === 0 && rawObject[key].length > 0) {
34833
+ delete sanitisedObject[key];
34834
+ }
34835
+ }
34356
34836
  }
34357
34837
  }
34358
34838
  return sanitisedObject;
@@ -34532,6 +35012,8 @@ var FormValueService = /** @class */ (function () {
34532
35012
  }
34533
35013
  break;
34534
35014
  case 'Collection':
35015
+ // Check for valid collection data
35016
+ this.removeInvalidCollectionData(data, field);
34535
35017
  // Get hold of the collection.
34536
35018
  var collection = data[field.id];
34537
35019
  // Check if we actually have a collection to work with.
@@ -34557,6 +35039,22 @@ var FormValueService = /** @class */ (function () {
34557
35039
  // Clear out any MultiSelect labels.
34558
35040
  FormValueService_1.removeMultiSelectLabels(data);
34559
35041
  };
35042
+ /**
35043
+ * Remove any empty or invalid arry with only id
35044
+ *
35045
+ * @param data The object tree of form values on which to perform the removal
35046
+ * @param field {@link CaseField} domain model object for each field
35047
+ */
35048
+ FormValueService.prototype.removeInvalidCollectionData = function (data, field) {
35049
+ if (data[field.id] && data[field.id].length > 0) {
35050
+ for (var _i = 0, _a = data[field.id]; _i < _a.length; _i++) {
35051
+ var objCollection = _a[_i];
35052
+ if (Object.keys(objCollection).length === 1 && Object.keys(objCollection).indexOf('id') > -1) {
35053
+ data[field.id] = [];
35054
+ }
35055
+ }
35056
+ }
35057
+ };
34560
35058
  /**
34561
35059
  * Remove any empty collection fields where a value of greater than zero is specified in the field's {@link FieldType}
34562
35060
  * `min` attribute.
@@ -34980,7 +35478,7 @@ var LoadingService = /** @class */ (function () {
34980
35478
  }
34981
35479
  Object.defineProperty(LoadingService.prototype, "isLoading", {
34982
35480
  get: function () {
34983
- return this.loading.asObservable().pipe(operators_1.distinctUntilChanged());
35481
+ return this.loading.pipe(operators_1.distinctUntilChanged());
34984
35482
  },
34985
35483
  enumerable: true,
34986
35484
  configurable: true
@@ -37202,6 +37700,21 @@ exports.push([module.id, ".event-trigger{width:auto;margin-top:40px;margin-botto
37202
37700
  // exports
37203
37701
 
37204
37702
 
37703
+ /***/ }),
37704
+
37705
+ /***/ 68929:
37706
+ /***/ ((module, exports, __webpack_require__) => {
37707
+
37708
+ exports = module.exports = __webpack_require__(9252)(false);
37709
+ // imports
37710
+
37711
+
37712
+ // module
37713
+ exports.push([module.id, ".spinner-container{position:fixed;top:0;left:0;height:100%;width:100%;display:flex;justify-content:center;align-items:center;background:rgba(255,255,255,0.5);z-index:99}.spinner-container .spinner-inner-container p{text-align:center}.spinner-container .spinner-inner-container .spinner{border:10px solid #dddddd;border-top:10px solid #000000;border-radius:50%;width:40px;height:40px;animation:spin 1s linear infinite}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg)}}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}\n", ""]);
37714
+
37715
+ // exports
37716
+
37717
+
37205
37718
  /***/ }),
37206
37719
 
37207
37720
  /***/ 47029:
@@ -63289,7 +63802,7 @@ module.exports = "<ng-container ccdConditionalShowForm [formGroup]=\"formGroup\"
63289
63802
  /***/ 61865:
63290
63803
  /***/ ((module) => {
63291
63804
 
63292
- module.exports = "<ng-container *ngIf=\"currentPage\">\n <h1 *ngIf=\"!currentPage.label\" class=\"govuk-heading-l\">{{eventTrigger.name}}</h1>\n <ng-container *ngIf=\"currentPage.label\">\n <span class=\"govuk-caption-l\">{{ eventTrigger.name}}</span>\n <h1 class=\"govuk-heading-l\">{{currentPage.label}}</h1>\n </ng-container>\n</ng-container>\n\n<!--Case ID or Title -->\n<div *ngIf=\"getCaseTitle(); then titleBlock; else idBlock\"></div>\n<ng-template #titleBlock>\n <ccd-markdown [content]=\"getCaseTitle() | ccdCaseTitle: caseFields : editForm.controls['data']\"></ccd-markdown>\n</ng-template>\n<ng-template #idBlock>\n <h2 *ngIf=\"getCaseId()\" class=\"heading-h2\">#{{ getCaseId() | ccdCaseReference }}</h2>\n</ng-template>\n\n<!-- Error message summary -->\n<div *ngIf=\"validationErrors.length > 0\" class=\"govuk-error-summary\" aria-labelledby=\"error-summary-title\" role=\"alert\" tabindex=\"-1\" data-module=\"govuk-error-summary\">\n <h2 class=\"govuk-error-summary__title\" id=\"error-summary-title\">\n There is a problem\n </h2>\n <div *ngFor=\"let validationError of validationErrors\" class=\"govuk-error-summary__body\">\n <ul class=\"govuk-list govuk-error-summary__list\">\n <li>\n <a (click)=\"navigateToErrorElement(validationError.id)\" class=\"validation-error\">{{validationError.message}}</a>\n </li>\n </ul>\n </div>\n</div>\n\n<!-- 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=\"status\" aria-labelledby=\"edit-case-event_error-summary-heading\" tabindex=\"-1\">\n\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<!-- Event error heading and error message to be displayed if there are specific error details -->\n<div *ngIf=\"error && error.details\" class=\"error-summary\" role=\"status\"\n aria-labelledby=\"edit-case-event_error-summary-heading\" tabindex=\"-1\">\n <h3 class=\"heading-h3 error-summary-heading\" id=\"edit-case-event_error-summary-heading-3\">\n The event could not be created\n </h3>\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\" class=\"ccd-error-summary-li\">{{fieldError.message}}</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<div class=\"width-50\">\n <form *ngIf=\"currentPage\" class=\"form\" [formGroup]=\"editForm\" (submit)=\"submit()\">\n <fieldset id=\"fieldset-case-data\">\n <!-- single column -->\n <ccd-case-edit-form id='caseEditForm' *ngIf=\"!currentPage.isMultiColumn()\" [fields]=\"currentPage.getCol1Fields()\"\n [formGroup]=\"editForm.controls['data']\" [caseFields]=\"caseFields\"\n [pageChangeSubject]=\"pageChangeSubject\"\n (valuesChanged)=\"applyValuesChanged($event)\"></ccd-case-edit-form>\n <!-- two columns -->\n <div *ngIf=\"currentPage.isMultiColumn()\" class=\"grid-row\">\n <div class=\"column-two-thirds rightBorderSeparator\">\n <ccd-case-edit-form id='caseEditForm1' [fields]=\"currentPage.getCol1Fields()\"\n [formGroup]=\"editForm.controls['data']\" [caseFields]=\"caseFields\"></ccd-case-edit-form>\n </div>\n <div class=\"column-one-third\">\n <ccd-case-edit-form id='caseEditForm2' [fields]=\"currentPage.getCol2Fields()\"\n [formGroup]=\"editForm.controls['data']\" [caseFields]=\"caseFields\"></ccd-case-edit-form>\n </div>\n </div>\n </fieldset>\n\n <div class=\"form-group form-group-related\">\n <button class=\"button button-secondary\" type=\"button\" [disabled]=\"!(hasPreviousPage$ | async)\" (click)=\"toPreviousPage()\">\n Previous\n </button>\n <button class=\"button\" type=\"submit\" [disabled]=\"submitting()\">{{triggerText}}</button>\n </div>\n\n <p class=\"cancel\"><a (click)=\"cancel()\" href=\"javascript:void(0)\">{{getCancelText()}}</a></p>\n\n </form>\n</div>\n"
63805
+ module.exports = "<ccd-loading-spinner *ngIf=\"showSpinner\"></ccd-loading-spinner>\n<ng-container *ngIf=\"currentPage\">\n <h1 *ngIf=\"!currentPage.label\" class=\"govuk-heading-l\">{{eventTrigger.name}}</h1>\n <ng-container *ngIf=\"currentPage.label\">\n <span class=\"govuk-caption-l\">{{ eventTrigger.name}}</span>\n <h1 class=\"govuk-heading-l\">{{currentPage.label}}</h1>\n </ng-container>\n</ng-container>\n\n<!--Case ID or Title -->\n<div *ngIf=\"getCaseTitle(); then titleBlock; else idBlock\"></div>\n<ng-template #titleBlock>\n <ccd-markdown [content]=\"getCaseTitle() | ccdCaseTitle: caseFields : editForm.controls['data']\"></ccd-markdown>\n</ng-template>\n<ng-template #idBlock>\n <h2 *ngIf=\"getCaseId()\" class=\"heading-h2\">#{{ getCaseId() | ccdCaseReference }}</h2>\n</ng-template>\n\n<!-- Error message summary -->\n<div *ngIf=\"validationErrors.length > 0\" class=\"govuk-error-summary\" aria-labelledby=\"error-summary-title\" role=\"alert\" tabindex=\"-1\" data-module=\"govuk-error-summary\">\n <h2 class=\"govuk-error-summary__title\" id=\"error-summary-title\">\n There is a problem\n </h2>\n <div *ngFor=\"let validationError of validationErrors\" class=\"govuk-error-summary__body\">\n <ul class=\"govuk-list govuk-error-summary__list\">\n <li>\n <a (click)=\"navigateToErrorElement(validationError.id)\" class=\"validation-error\">{{validationError.message}}</a>\n </li>\n </ul>\n </div>\n</div>\n\n<!-- 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=\"status\" aria-labelledby=\"edit-case-event_error-summary-heading\" tabindex=\"-1\">\n\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<!-- Event error heading and error message to be displayed if there are specific error details -->\n<div *ngIf=\"error && error.details\" class=\"error-summary\" role=\"status\"\n aria-labelledby=\"edit-case-event_error-summary-heading\" tabindex=\"-1\">\n <h3 class=\"heading-h3 error-summary-heading\" id=\"edit-case-event_error-summary-heading-3\">\n The event could not be created\n </h3>\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\" class=\"ccd-error-summary-li\">{{fieldError.message}}</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<div class=\"width-50\">\n <form *ngIf=\"currentPage\" class=\"form\" [formGroup]=\"editForm\" (submit)=\"submit()\">\n <fieldset id=\"fieldset-case-data\">\n <!-- single column -->\n <ccd-case-edit-form id='caseEditForm' *ngIf=\"!currentPage.isMultiColumn()\" [fields]=\"currentPage.getCol1Fields()\"\n [formGroup]=\"editForm.controls['data']\" [caseFields]=\"caseFields\"\n [pageChangeSubject]=\"pageChangeSubject\"\n (valuesChanged)=\"applyValuesChanged($event)\"></ccd-case-edit-form>\n <!-- two columns -->\n <div *ngIf=\"currentPage.isMultiColumn()\" class=\"grid-row\">\n <div class=\"column-two-thirds rightBorderSeparator\">\n <ccd-case-edit-form id='caseEditForm1' [fields]=\"currentPage.getCol1Fields()\"\n [formGroup]=\"editForm.controls['data']\" [caseFields]=\"caseFields\"></ccd-case-edit-form>\n </div>\n <div class=\"column-one-third\">\n <ccd-case-edit-form id='caseEditForm2' [fields]=\"currentPage.getCol2Fields()\"\n [formGroup]=\"editForm.controls['data']\" [caseFields]=\"caseFields\"></ccd-case-edit-form>\n </div>\n </div>\n </fieldset>\n\n <div class=\"form-group form-group-related\">\n <button class=\"button button-secondary\" type=\"button\" [disabled]=\"!(hasPreviousPage$ | async)\" (click)=\"toPreviousPage()\">\n Previous\n </button>\n <button class=\"button\" type=\"submit\" [disabled]=\"submitting()\">{{triggerText}}</button>\n </div>\n\n <p class=\"cancel\"><a (click)=\"cancel()\" href=\"javascript:void(0)\">{{getCancelText()}}</a></p>\n\n </form>\n</div>\n"
63293
63806
 
63294
63807
  /***/ }),
63295
63808
 
@@ -63352,7 +63865,7 @@ module.exports = "<div *ngIf=\"isDataLoaded()\">\n <ng-container [ngSwitch]=\
63352
63865
  /***/ 80734:
63353
63866
  /***/ ((module) => {
63354
63867
 
63355
- module.exports = "<form>\n <div>\n <cut-alert type=\"information\">This case requires {{accessType | lowercase}} access.<br />\n <ng-container *ngIf=\"accessType === 'CHALLENGED'\">This is because the case is outside your work area. If you request access to the case, it will be logged for auditing purposes.</ng-container>\n <ng-container *ngIf=\"accessType === 'SPECIFIC'\">This means it's outside your jurisdiction and requires authorisation. If you request access to the case, it will be logged for auditing purposes.</ng-container>\n </cut-alert>\n <h1 class=\"heading-h1\">#{{ caseDetails.case_id | ccdCaseReference}}</h1>\n <h2 class=\"govuk-heading-m\">Case details</h2>\n <dl class=\"govuk-summary-list\">\n <div class=\"govuk-summary-list__row\" *ngIf=\"caseDetails.basicFields?.caseNameHmctsInternal\">\n <dt class=\"govuk-summary-list__key summary-key\">Case name</dt>\n <dd class=\"govuk-summary-list__value\">{{caseDetails.basicFields.caseNameHmctsInternal}}</dd>\n </div>\n <div class=\"govuk-summary-list__row\" *ngIf=\"caseDetails.case_type?.jurisdiction?.name\">\n <dt class=\"govuk-summary-list__key summary-key\">Service</dt>\n <dd class=\"govuk-summary-list__value\">{{caseDetails.case_type.jurisdiction.name}}</dd>\n </div>\n <div class=\"govuk-summary-list__row\" *ngIf=\"caseDetails.state?.description\">\n <dt class=\"govuk-summary-list__key summary-key\">State</dt>\n <dd class=\"govuk-summary-list__value\">{{caseDetails.state.description}}</dd>\n </div>\n <div class=\"govuk-summary-list__row\" *ngIf=\"courtOrHearingCentre\">\n <dt class=\"govuk-summary-list__key summary-key\">Court or hearing centre</dt>\n <dd class=\"govuk-summary-list__value\">{{courtOrHearingCentre | titlecase}}</dd>\n </div>\n\n <div class=\"govuk-summary-list__row\" *ngIf=\"accessType\">\n <dt class=\"govuk-summary-list__key summary-key\">Access</dt>\n <dd class=\"govuk-summary-list__value\">{{accessType | titlecase}}</dd>\n </div>\n </dl>\n </div>\n\n <button class=\"govuk-button govuk-!-margin-right-3\">Request access</button>\n</form>\n<a class=\"govuk-body\" (click)=\"onCancel()\" href=\"javascript:void(0)\">Cancel</a>\n"
63868
+ module.exports = "<div>\n <cut-alert type=\"information\">This case requires {{accessType | lowercase}} access.<br />\n <ng-container *ngIf=\"accessType === 'CHALLENGED'\">This is because the case is outside your work area. If you request access to the case, it will be logged for auditing purposes.</ng-container>\n <ng-container *ngIf=\"accessType === 'SPECIFIC'\">This means it's outside your jurisdiction and requires authorisation. If you request access to the case, it will be logged for auditing purposes.</ng-container>\n </cut-alert>\n <h1 class=\"heading-h1\">#{{ caseDetails.case_id | ccdCaseReference}}</h1>\n <h2 class=\"govuk-heading-m\">Case details</h2>\n <dl class=\"govuk-summary-list\">\n <div class=\"govuk-summary-list__row\" *ngIf=\"caseDetails.basicFields?.caseNameHmctsInternal\">\n <dt class=\"govuk-summary-list__key summary-key\">Case name</dt>\n <dd class=\"govuk-summary-list__value\">{{caseDetails.basicFields.caseNameHmctsInternal}}</dd>\n </div>\n <div class=\"govuk-summary-list__row\" *ngIf=\"caseDetails.case_type?.jurisdiction?.name\">\n <dt class=\"govuk-summary-list__key summary-key\">Service</dt>\n <dd class=\"govuk-summary-list__value\">{{caseDetails.case_type.jurisdiction.name}}</dd>\n </div>\n <div class=\"govuk-summary-list__row\" *ngIf=\"caseDetails.state?.description\">\n <dt class=\"govuk-summary-list__key summary-key\">State</dt>\n <dd class=\"govuk-summary-list__value\">{{caseDetails.state.description}}</dd>\n </div>\n <div class=\"govuk-summary-list__row\" *ngIf=\"courtOrHearingCentre\">\n <dt class=\"govuk-summary-list__key summary-key\">Court or hearing centre</dt>\n <dd class=\"govuk-summary-list__value\">{{courtOrHearingCentre | titlecase}}</dd>\n </div>\n\n <div class=\"govuk-summary-list__row\" *ngIf=\"accessType\">\n <dt class=\"govuk-summary-list__key summary-key\">Access</dt>\n <dd class=\"govuk-summary-list__value\">{{accessType | titlecase}}</dd>\n </div>\n </dl>\n</div>\n<div class=\"govuk-button-group\">\n <button class=\"govuk-button govuk-!-margin-right-3\" [routerLink]=\"getRequestUrl(accessType)\"> Request access </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)\"> Cancel </a>\n </p>\n </div>\n</div>\n"
63356
63869
 
63357
63870
  /***/ }),
63358
63871
 
@@ -63384,6 +63897,13 @@ module.exports = "<!-- Generic error heading and error message to be displayed o
63384
63897
 
63385
63898
  /***/ }),
63386
63899
 
63900
+ /***/ 5856:
63901
+ /***/ ((module) => {
63902
+
63903
+ module.exports = "<exui-error-message\n *ngIf=\"formGroup.invalid && submitted\"\n [error]=\"errorMessage\"></exui-error-message>\n<cut-alert type=\"information\"\n >This case requires specific access.<br />This means it's outside your\n jurisdiction and requires authorisation. If you request access to the case, it\n will be logged for auditing purposes.</cut-alert>\n<form [formGroup]=\"formGroup\" (submit)=\"onSubmit()\">\n <div class=\"govuk-form-group\"\n [ngClass]=\"{ 'form-group-error': formGroup.invalid && submitted }\">\n <fieldset class=\"govuk-fieldset\" aria-describedby=\"reason-hint\">\n <legend class=\"govuk-fieldset__legend govuk-fieldset__legend--l\">\n <h1 class=\"govuk-fieldset__heading\">\n {{ title }}\n </h1>\n </legend>\n\n <details class=\"govuk-details\" data-module=\"govuk-details\" role=\"group\">\n <summary\n class=\"govuk-details__summary\"\n role=\"button\"\n aria-expanded=\"false\">\n <span class=\"govuk-details__summary-text\">\n Help with requesting case access\n </span>\n </summary>\n <div\n class=\"govuk-details__text\"\n aria-hidden=\"true\">\n <p class=\"govuk-body\">You could include:</p>\n <ul class=\"govuk-list govuk-list--bullet\">\n <li>the case reference of the linked case</li>\n <li>how long you require access to this case</li>\n <li>any other reasons why you require access</li>\n </ul>\n </div>\n </details>\n\n <div id=\"reason-hint\" class=\"govuk-hint\">\n {{ hint }}\n </div>\n <div id=\"conditional-reason-3\">\n <div class=\"govuk-form-group\">\n <div\n id=\"specific-reason-error-message\"\n class=\"govuk-error-message\"\n *ngIf=\"formGroup.get('specificReason').invalid && submitted\">\n {{ errorMessage.description }}\n </div>\n <textarea\n class=\"govuk-textarea\"\n [ngClass]=\"{\n 'govuk-textarea--error':\n formGroup.get('specificReason').invalid && submitted\n }\"\n id=\"specific-reason\"\n name=\"specific-reason\"\n rows=\"8\"\n formControlName=\"specificReason\">\n </textarea>\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 Submit\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"
63904
+
63905
+ /***/ }),
63906
+
63387
63907
  /***/ 24288:
63388
63908
  /***/ ((module) => {
63389
63909
 
@@ -63461,6 +63981,13 @@ module.exports = "<form *ngIf=\"triggers && triggers.length\" class=\"event-trig
63461
63981
 
63462
63982
  /***/ }),
63463
63983
 
63984
+ /***/ 31851:
63985
+ /***/ ((module) => {
63986
+
63987
+ module.exports = "<div class=\"spinner-container\">\n <div class=\"spinner-inner-container\">\n <p>{{loadingText}}</p>\n <div class=\"spinner\" style=\"margin: auto;\"></div>\n </div>\n</div>"
63988
+
63989
+ /***/ }),
63990
+
63464
63991
  /***/ 6961:
63465
63992
  /***/ ((module) => {
63466
63993
 
@@ -63534,7 +64061,7 @@ module.exports = "<div class=\"form-group\" [id]=\"id()\">\n\n <div class=\"pan
63534
64061
  /***/ 9643:
63535
64062
  /***/ ((module) => {
63536
64063
 
63537
- module.exports = "<div class=\"complex-panel\" [hidden]=\"caseField.hidden\">\n <dl class=\"complex-panel-title\">\n <dt><span class=\"text-16\">{{caseField.label}}</span></dt>\n <dd></dd>\n </dl>\n <table class=\"complex-panel-table\">\n <tbody>\n <!-- <COMPLEX table field header>-->\n <tr>\n <th *ngFor=\"let heading of columns\" scope=\"col\">\n <span class=\"text-16\">{{columnsAllLabels[heading].label}}</span>\n <a href=\"javascript:void(0)\"\n (click)=\"sortRowsByColumns(heading)\"\n class=\"sort-widget\"\n [innerHTML]=\"sortWidget(columnsAllLabels[heading])\"></a>\n </th>\n <th></th>\n </tr>\n <!-- </COMPLEX table field header>-->\n <ng-container *ngFor=\"let item of rows; let i = index;\">\n <!-- <COMPLEX table collapsed view>-->\n <tr class=\"new-table-row accordion-heading\" (click)=\"isHidden[i] = !isHidden[i]\"\n [class.last-accordion]=\"isHidden[i]\">\n <ng-container *ngFor=\"let heading of columns\">\n <td class=\"text-16\">\n <div *ngIf=\"item[heading]; else showEmptyTd\">\n <ccd-field-read\n [caseField]=\"toCaseField(heading, item[heading].label, columnsHorizontalLabel[heading].type, item[heading])\"\n [context]=\"context\"></ccd-field-read>\n </div>\n <ng-template #showEmptyTd>\n <div>&nbsp;</div>\n </ng-template>\n </td>\n </ng-container>\n <td>\n <div style=\"float: right;\">\n <a href=\"javascript:void(0)\"> <img src=\"{{ getImage(i) }}\" class=\"accordion-image\"/></a>\n </div>\n </td>\n </tr>\n <!-- </COMPLEX table collapsed view>-->\n <!-- <COMPLEX table expanded view>-->\n <tr [hidden]=\"isHidden[i]\">\n <td [colSpan]=\"columns.length + 1\">\n <table class=\"complex-panel-table\">\n <tbody>\n <ng-container\n *ngFor=\"let vLabel of columnsVerticalLabel | keyvalue: keepOriginalOrder | ccdCollectionTableCaseFieldsFilter: caseField: rows[i] | ccdReadFieldsFilter:true :undefined :true\">\n <!-- <COMPLEX table expandable body simple field>-->\n <tr class=\"complex-panel-simple-field accordion-body\" *ngIf=\"item[vLabel.id]\" [hidden]=\"vLabel.hidden\">\n <th scope=\"col\"><span class=\"text-16\">{{vLabel.label}}</span></th>\n <td *ngIf=\"vLabel['type'] !== 'Complex'\" class=\"text-16\">\n <ccd-field-read [caseField]=\"toCaseField('', vLabel.label, vLabel.field_type, item[vLabel.id])\"\n [context]=\"context\"></ccd-field-read>\n </td>\n </tr>\n <!-- </COMPLEX table expandable body simple field>-->\n\n <!-- <COMPLEX table expandable body complex field>-->\n <tr *ngIf=\"vLabel['type'] === 'Complex' && addCaseFieldValue(vLabel, item[vLabel.id])\" [hidden]=\"vLabel.hidden\">\n <td colspan=\"2\">\n <ng-container *ngFor=\"let caseField of vLabel | ccdReadFieldsFilter:true :undefined :true\">\n <tr class=\"complex-panel-compound-field\" *ngIf=\"(caseField | ccdIsCompound); else SimpleRow\" [hidden]=\"caseField\">\n <td colspan=\"2\">\n <span class=\"text-16\"><ccd-field-read [caseField]=\"caseField\" [context]=\"context\"></ccd-field-read></span>\n </td>\n </tr>\n <ng-template #SimpleRow>\n <tr class=\"complex-panel-nested-field\" [hidden]=\"caseField.hidden\">\n <th scope=\"col\"><span class=\"text-16\">{{caseField.label}}</span></th>\n <td *ngIf=\"!item[vLabel.id].hasOwnProperty('CaseReference')\">\n <span class=\"text-16\"><ccd-field-read [caseField]=\"caseField\" [context]=\"context\"></ccd-field-read></span>\n </td>\n <td *ngIf=\"item[vLabel.id].hasOwnProperty('CaseReference')\">\n <ccd-read-case-link-field [caseField]=\"addCaseReferenceValue(caseField, item[vLabel.id].CaseReference)\" [context]=\"context\"></ccd-read-case-link-field>\n </td>\n </tr>\n </ng-template>\n </ng-container>\n </td>\n </tr>\n <!-- <COMPLEX table expandable body complex field>-->\n </ng-container>\n </tbody>\n </table>\n </td>\n </tr>\n <!-- </COMPLEX table expanded view>-->\n </ng-container>\n </tbody>\n </table>\n</div>\n"
64064
+ module.exports = " <div class=\"complex-panel\" [hidden]=\"caseField.hidden\">\n <dl class=\"complex-panel-title\"><dt><span class=\"text-16\">{{caseField.label}}</span></dt><dd></dd></dl>\n <table class=\"complex-panel-table\">\n <tbody>\n <!-- <COMPLEX table field header>-->\n <tr>\n <ng-container *ngFor=\"let heading of columns\">\n <ng-container *ngFor=\"let name of columnsAllLabels | keyvalue:keepOriginalOrder\">\n <th *ngIf=\"heading.trim() == name.key\">\n <span class=\"text-16\">{{name.value.label}}</span>\n <a href=\"javascript:void(0)\" (click)=\"sortRowsByColumns(name.key)\" class=\"sort-widget\" [innerHTML]=\"sortWidget(name.value)\"></a>\n </th>\n </ng-container>\n </ng-container>\n <th></th>\n </tr>\n <!-- </COMPLEX table field header>-->\n <ng-container *ngFor=\"let item of rows; let i = index; trackBy:trackByIndex;\" >\n <!-- <COMPLEX table collapsed view>-->\n <tr class=\"new-table-row accordion-heading\" (click)=\"isHidden[i] = !isHidden[i]\">\n <ng-container *ngFor=\"let heading of columns\">\n <ng-container *ngFor=\"let name of item | keyvalue\">\n <td *ngIf=\"heading.trim() == name.key\" class=\"text-16\">\n <div *ngIf=\"name.value;else showEmptyTd\">\n <ccd-field-read [caseField]=\"{\n id: name.key,\n label: name.value.label,\n field_type: this.columnsHorizontalLabel[name.key].type,\n value: name.value\n }\" [context]=\"context\"></ccd-field-read>\n </div>\n <ng-template #showEmptyTd><div>&nbsp;</div></ng-template>\n </td>\n\n </ng-container>\n </ng-container>\n <td>\n <div style=\"float: right;\">\n <a href=\"javascript:void(0)\"> <img src=\"{{ getImage(i) }}\" class=\"accordion-image\"/></a>\n </div>\n </td>\n </tr>\n <!-- </COMPLEX table collapsed view>-->\n <!-- <COMPLEX table expanded view>-->\n <tr [hidden]=\"isHidden[i]\">\n <td [colSpan]=\"columns.length +1\">\n <table class=\"complex-panel-table\">\n <tbody>\n \n <ng-container *ngFor=\"let vLabel of columnsVerticalLabel | keyvalue:keepOriginalOrder\">\n <ng-container *ngFor=\"let name of item | keyvalue\">\n <ng-container *ngIf=\"vLabel.key == name.key && isNotBlank(name.value)\" >\n <!-- <COMPLEX table expandable body simple field>-->\n\n <tr class=\"complex-panel-simple-field accordion-body\"\n ccdConditionalShow [caseField]=\"vLabel.value.caseField\" [contextFields]=\"caseField | ccdFieldsFilter :true :i\">\n <th><span class=\"text-16\">{{vLabel.value.label}}</span></th>\n <td *ngIf=\"vLabel.value.type !== 'Complex'\" class=\"text-16\">\n <ccd-field-read [caseField]=\"{\n id: name.key,\n label: vLabel.label,\n field_type: vLabel.value.caseField.field_type,\n value: name.value\n }\" [context]=\"context\"></ccd-field-read>\n </td>\n </tr>\n \n <!-- </COMPLEX table expandable body simple field>-->\n <!-- <COMPLEX table expandable body complex field>-->\n\n <tr *ngIf=\"vLabel.value.type === 'Complex' && addCaseFieldValue(vLabel.value.caseField, name.value)\">\n <td colspan=\"2\">\n <ng-container *ngFor=\"let field of vLabel.value.caseField | ccdFieldsFilter\">\n <ng-container *ngIf=\"(field | ccdIsCompound); else SimpleRow\">\n <tr class=\"complex-panel-compound-field\" ccdConditionalShow ccdLabelSubstitutor [caseField]=\"field\"\n [contextFields]=\"vLabel.value.caseField | ccdFieldsFilter\">\n <td colspan=\"2\">\n <span class=\"text-16\"><ccd-field-read [caseField]=\"field\" [context]=\"context\"></ccd-field-read></span>\n </td>\n </tr>\n </ng-container>\n <ng-template #SimpleRow>\n <tr class=\"complex-panel-nested-field\" ccdConditionalShow ccdLabelSubstitutor [caseField]=\"field\"\n [contextFields]=\"vLabel.value.caseField | ccdFieldsFilter\">\n <th><span class=\"text-16\">{{field.label}}</span></th>\n <td *ngIf=\"!name.value.hasOwnProperty('CaseReference')\">\n <span class=\"text-16\"><ccd-field-read [caseField]=\"field\" [context]=\"context\"></ccd-field-read></span>\n </td>\n <td *ngIf=\"name.value.hasOwnProperty('CaseReference')\">\n <ccd-read-case-link-field [caseField]=\"addCaseReferenceValue(field, name.value.CaseReference)\" [context]=\"context\"></ccd-read-case-link-field>\n </td>\n </tr>\n </ng-template>\n </ng-container>\n </td>\n </tr>\n <!-- <COMPLEX table expandable body complex field>-->\n </ng-container>\n </ng-container>\n </ng-container>\n </tbody>\n </table>\n </td>\n </tr>\n <!-- </COMPLEX table expanded view>-->\n </ng-container>\n </tbody>\n </table>\n </div>\n"
63538
64065
 
63539
64066
  /***/ }),
63540
64067
 
@@ -64136,6 +64663,21 @@ function getStrategyDelay(consecutiveErrorsCount, options) {
64136
64663
  }
64137
64664
 
64138
64665
 
64666
+ /***/ }),
64667
+
64668
+ /***/ 6431:
64669
+ /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
64670
+
64671
+
64672
+ var result = __webpack_require__(68929);
64673
+
64674
+ if (typeof result === "string") {
64675
+ module.exports = result;
64676
+ } else {
64677
+ module.exports = result.toString();
64678
+ }
64679
+
64680
+
64139
64681
  /***/ }),
64140
64682
 
64141
64683
  /***/ 5047: