@hmcts/rpx-xui-common-lib 1.8.4-rc1 → 1.8.5-angular-upgrade-r4

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 (134) hide show
  1. package/bundles/hmcts-rpx-xui-common-lib.umd.js +1607 -543
  2. package/bundles/hmcts-rpx-xui-common-lib.umd.js.map +1 -1
  3. package/bundles/hmcts-rpx-xui-common-lib.umd.min.js +1 -1
  4. package/bundles/hmcts-rpx-xui-common-lib.umd.min.js.map +1 -1
  5. package/esm2015/hmcts-rpx-xui-common-lib.js +32 -27
  6. package/esm2015/lib/components/find-location/find-location.component.js +14 -3
  7. package/esm2015/lib/components/find-person/find-person.component.js +7 -6
  8. package/esm2015/lib/components/find-service/find-service.component.js +176 -0
  9. package/esm2015/lib/components/find-task-name/find-task-name.component.js +228 -0
  10. package/esm2015/lib/components/generic-filter/generic-filter-utils.js +2 -2
  11. package/esm2015/lib/components/generic-filter/generic-filter.component.js +380 -27
  12. package/esm2015/lib/components/search-location/search-location.component.js +32 -4
  13. package/esm2015/lib/components/search-service/search-service.component.js +43 -0
  14. package/esm2015/lib/components/share-case/share-case.component.js +10 -3
  15. package/esm2015/lib/exui-common-lib.module.js +16 -3
  16. package/esm2015/lib/gov-ui/components/gov-uk-checkboxes/gov-uk-checkboxes.component.js +80 -6
  17. package/esm2015/lib/gov-ui/components/gov-uk-input/gov-uk-input.component.js +3 -3
  18. package/esm2015/lib/gov-ui/components/gov-uk-label/gov-uk-label.component.js +3 -2
  19. package/esm2015/lib/gov-ui/components/gov-uk-radios/gov-uk-radios.component.js +1 -1
  20. package/esm2015/lib/gov-ui/components/gov-uk-select/gov-uk-select.component.js +2 -2
  21. package/esm2015/lib/gov-ui/components/hmcts-banner/hmcts-banner-info.interface.js +22 -0
  22. package/esm2015/lib/gov-ui/components/hmcts-banner/hmcts-banner.component.js +19 -14
  23. package/esm2015/lib/gov-ui/components/hmcts-main-wrapper/hmcts-main-wrapper.component.js +2 -2
  24. package/esm2015/lib/gov-ui/components/hmcts-sub-navigation/hmcts-sub-navigation.component.js +5 -2
  25. package/esm2015/lib/gov-ui/components/index.js +2 -2
  26. package/esm2015/lib/gov-ui/components/public_api.js +2 -1
  27. package/esm2015/lib/gov-ui/index.js +2 -2
  28. package/esm2015/lib/gov-ui/models/checkboxes-model.js +6 -8
  29. package/esm2015/lib/gov-ui/models/gov-ui-config-model.js +5 -1
  30. package/esm2015/lib/gov-ui/models/public_api.js +1 -2
  31. package/esm2015/lib/gov-ui/models/radio-buttons.model.js +22 -0
  32. package/esm2015/lib/gov-ui/public_api.js +2 -2
  33. package/esm2015/lib/models/filter.model.js +71 -3
  34. package/esm2015/lib/models/index.js +2 -1
  35. package/esm2015/lib/models/location.model.js +22 -1
  36. package/esm2015/lib/models/person.model.js +3 -1
  37. package/esm2015/lib/models/task-name.model.js +16 -0
  38. package/esm2015/lib/pipes/capitalize.pipe.js +21 -0
  39. package/esm2015/lib/services/filter/filter.service.js +48 -4
  40. package/esm2015/lib/services/find-person/find-person.service.js +14 -6
  41. package/esm2015/lib/services/locations/location.service.js +5 -3
  42. package/esm2015/lib/services/role-guard/role.guard.js +22 -15
  43. package/esm2015/lib/services/role-guard/role.service.js +13 -13
  44. package/esm2015/lib/services/storage/session-storage/session-storage.service.js +55 -0
  45. package/esm2015/lib/services/task-name/task-name.service.js +65 -0
  46. package/esm2015/public-api.js +3 -3
  47. package/esm5/hmcts-rpx-xui-common-lib.js +32 -27
  48. package/esm5/lib/components/find-location/find-location.component.js +17 -3
  49. package/esm5/lib/components/find-person/find-person.component.js +7 -6
  50. package/esm5/lib/components/find-service/find-service.component.js +218 -0
  51. package/esm5/lib/components/find-task-name/find-task-name.component.js +243 -0
  52. package/esm5/lib/components/generic-filter/generic-filter-utils.js +2 -2
  53. package/esm5/lib/components/generic-filter/generic-filter.component.js +442 -41
  54. package/esm5/lib/components/search-location/search-location.component.js +31 -4
  55. package/esm5/lib/components/search-service/search-service.component.js +49 -0
  56. package/esm5/lib/components/share-case/share-case.component.js +10 -3
  57. package/esm5/lib/exui-common-lib.module.js +14 -3
  58. package/esm5/lib/gov-ui/components/gov-uk-checkboxes/gov-uk-checkboxes.component.js +100 -6
  59. package/esm5/lib/gov-ui/components/gov-uk-input/gov-uk-input.component.js +3 -3
  60. package/esm5/lib/gov-ui/components/gov-uk-label/gov-uk-label.component.js +3 -2
  61. package/esm5/lib/gov-ui/components/gov-uk-radios/gov-uk-radios.component.js +1 -1
  62. package/esm5/lib/gov-ui/components/gov-uk-select/gov-uk-select.component.js +2 -2
  63. package/esm5/lib/gov-ui/components/hmcts-banner/hmcts-banner-info.interface.js +22 -0
  64. package/esm5/lib/gov-ui/components/hmcts-banner/hmcts-banner.component.js +17 -13
  65. package/esm5/lib/gov-ui/components/hmcts-main-wrapper/hmcts-main-wrapper.component.js +2 -2
  66. package/esm5/lib/gov-ui/components/hmcts-sub-navigation/hmcts-sub-navigation.component.js +5 -2
  67. package/esm5/lib/gov-ui/components/index.js +2 -2
  68. package/esm5/lib/gov-ui/components/public_api.js +2 -1
  69. package/esm5/lib/gov-ui/index.js +2 -2
  70. package/esm5/lib/gov-ui/models/checkboxes-model.js +6 -8
  71. package/esm5/lib/gov-ui/models/gov-ui-config-model.js +5 -1
  72. package/esm5/lib/gov-ui/models/public_api.js +1 -2
  73. package/esm5/lib/gov-ui/models/radio-buttons.model.js +22 -0
  74. package/esm5/lib/gov-ui/public_api.js +2 -2
  75. package/esm5/lib/models/filter.model.js +71 -3
  76. package/esm5/lib/models/index.js +2 -1
  77. package/esm5/lib/models/location.model.js +22 -1
  78. package/esm5/lib/models/person.model.js +3 -1
  79. package/esm5/lib/models/task-name.model.js +16 -0
  80. package/esm5/lib/pipes/capitalize.pipe.js +29 -0
  81. package/esm5/lib/services/filter/filter.service.js +59 -4
  82. package/esm5/lib/services/find-person/find-person.service.js +14 -6
  83. package/esm5/lib/services/locations/location.service.js +7 -3
  84. package/esm5/lib/services/role-guard/role.guard.js +22 -15
  85. package/esm5/lib/services/role-guard/role.service.js +13 -13
  86. package/esm5/lib/services/{session-storage → storage/session-storage}/session-storage.service.js +2 -2
  87. package/esm5/lib/services/task-name/task-name.service.js +70 -0
  88. package/esm5/public-api.js +3 -3
  89. package/fesm2015/hmcts-rpx-xui-common-lib.js +1352 -413
  90. package/fesm2015/hmcts-rpx-xui-common-lib.js.map +1 -1
  91. package/fesm5/hmcts-rpx-xui-common-lib.js +1597 -509
  92. package/fesm5/hmcts-rpx-xui-common-lib.js.map +1 -1
  93. package/hmcts-rpx-xui-common-lib.d.ts +30 -25
  94. package/hmcts-rpx-xui-common-lib.metadata.json +1 -1
  95. package/lib/components/find-location/find-location.component.d.ts +3 -2
  96. package/lib/components/find-service/find-service.component.d.ts +22 -0
  97. package/lib/components/find-task-name/find-task-name.component.d.ts +41 -0
  98. package/lib/components/generic-filter/generic-filter-utils.d.ts +2 -5
  99. package/lib/components/generic-filter/generic-filter.component.d.ts +12 -2
  100. package/lib/components/search-location/search-location.component.d.ts +5 -2
  101. package/lib/components/search-service/search-service.component.d.ts +7 -0
  102. package/lib/components/share-case/share-case.component.d.ts +2 -0
  103. package/lib/exui-common-lib.module.d.ts +4 -3
  104. package/lib/gov-ui/components/gov-uk-checkboxes/gov-uk-checkboxes.component.d.ts +14 -5
  105. package/lib/gov-ui/components/gov-uk-input/gov-uk-input.component.d.ts +1 -2
  106. package/lib/gov-ui/components/gov-uk-label/gov-uk-label.component.d.ts +1 -0
  107. package/lib/gov-ui/components/gov-uk-radios/gov-uk-radios.component.d.ts +2 -2
  108. package/lib/gov-ui/components/hmcts-banner/hmcts-banner-info.interface.d.ts +7 -0
  109. package/lib/gov-ui/components/hmcts-banner/hmcts-banner.component.d.ts +4 -2
  110. package/lib/gov-ui/components/hmcts-main-wrapper/hmcts-main-wrapper.component.d.ts +3 -3
  111. package/lib/gov-ui/components/hmcts-sub-navigation/hmcts-sub-navigation.component.d.ts +1 -0
  112. package/lib/gov-ui/components/public_api.d.ts +1 -0
  113. package/lib/gov-ui/models/checkboxes-model.d.ts +4 -7
  114. package/lib/gov-ui/models/gov-ui-config-model.d.ts +2 -0
  115. package/lib/gov-ui/models/public_api.d.ts +0 -1
  116. package/lib/gov-ui/models/radio-buttons.model.d.ts +9 -0
  117. package/lib/models/filter.model.d.ts +34 -7
  118. package/lib/models/index.d.ts +1 -0
  119. package/lib/models/location.model.d.ts +11 -0
  120. package/lib/models/person.model.d.ts +2 -0
  121. package/lib/models/task-name.model.d.ts +4 -0
  122. package/lib/pipes/capitalize.pipe.d.ts +4 -0
  123. package/lib/services/filter/filter.service.d.ts +3 -0
  124. package/lib/services/find-person/find-person.service.d.ts +1 -1
  125. package/lib/services/locations/location.service.d.ts +2 -2
  126. package/lib/services/role-guard/role.guard.d.ts +2 -1
  127. package/lib/services/role-guard/role.service.d.ts +3 -1
  128. package/lib/services/{session-storage → storage/session-storage}/session-storage.service.d.ts +0 -0
  129. package/lib/services/task-name/task-name.service.d.ts +14 -0
  130. package/package.json +1 -1
  131. package/esm2015/lib/gov-ui/models/banner-data-model.js +0 -16
  132. package/esm2015/lib/services/session-storage/session-storage.service.js +0 -55
  133. package/esm5/lib/gov-ui/models/banner-data-model.js +0 -16
  134. package/lib/gov-ui/models/banner-data-model.d.ts +0 -4
@@ -709,10 +709,15 @@
709
709
  return this.filterSettings[id];
710
710
  }
711
711
  if (sessionStorage.getItem(id)) {
712
- return JSON.parse(window.sessionStorage.getItem(id));
712
+ return JSON.parse(sessionStorage.getItem(id));
713
713
  }
714
714
  if (localStorage.getItem(id)) {
715
- return JSON.parse(window.localStorage.getItem(id));
715
+ if (this.isSameUser(id)) {
716
+ return JSON.parse(window.localStorage.getItem(id));
717
+ }
718
+ else {
719
+ return null;
720
+ }
716
721
  }
717
722
  return null;
718
723
  };
@@ -720,6 +725,19 @@
720
725
  * @param {?} id
721
726
  * @return {?}
722
727
  */
728
+ FilterService.prototype.isSameUser = /**
729
+ * @param {?} id
730
+ * @return {?}
731
+ */
732
+ function (id) {
733
+ /** @type {?} */
734
+ var filterSetting = JSON.parse(window.localStorage.getItem(id));
735
+ return !!filterSetting.idamId && filterSetting.idamId === this.getUserId();
736
+ };
737
+ /**
738
+ * @param {?} id
739
+ * @return {?}
740
+ */
723
741
  FilterService.prototype.getStream = /**
724
742
  * @param {?} id
725
743
  * @return {?}
@@ -730,6 +748,24 @@
730
748
  }
731
749
  return this.streams[id].asObservable();
732
750
  };
751
+ /**
752
+ * @param {?} id
753
+ * @return {?}
754
+ */
755
+ FilterService.prototype.clearSessionAndLocalPersistance = /**
756
+ * @param {?} id
757
+ * @return {?}
758
+ */
759
+ function (id) {
760
+ sessionStorage.removeItem(id);
761
+ localStorage.removeItem(id);
762
+ if (this.filterSettings[id] !== undefined) {
763
+ this.filterSettings[id] = null;
764
+ }
765
+ if (this.streams[id] !== undefined) {
766
+ this.streams[id].next(null);
767
+ }
768
+ };
733
769
  /**
734
770
  * @private
735
771
  * @param {?} setting
@@ -741,6 +777,7 @@
741
777
  * @return {?}
742
778
  */
743
779
  function (setting) {
780
+ setting.idamId = this.getUserId();
744
781
  window.localStorage.setItem(setting.id, JSON.stringify(setting));
745
782
  };
746
783
  /**
@@ -754,7 +791,7 @@
754
791
  * @return {?}
755
792
  */
756
793
  function (setting) {
757
- window.sessionStorage.setItem(setting.id, JSON.stringify(setting));
794
+ sessionStorage.setItem(setting.id, JSON.stringify(setting));
758
795
  };
759
796
  /**
760
797
  * @private
@@ -784,6 +821,24 @@
784
821
  this.streams[setting.id].next(setting);
785
822
  }
786
823
  };
824
+ /**
825
+ * @return {?}
826
+ */
827
+ FilterService.prototype.getUserId = /**
828
+ * @return {?}
829
+ */
830
+ function () {
831
+ /** @type {?} */
832
+ var userInfoStr = window.sessionStorage.getItem('userDetails');
833
+ /** @type {?} */
834
+ var userId;
835
+ if (userInfoStr) {
836
+ /** @type {?} */
837
+ var userInfo = JSON.parse(userInfoStr);
838
+ userId = userInfo.id ? userInfo.id : userInfo.uid;
839
+ }
840
+ return userId;
841
+ };
787
842
  FilterService.decorators = [
788
843
  { type: i0.Injectable, args: [{
789
844
  providedIn: 'root'
@@ -813,7 +868,7 @@
813
868
  return values.length && values.filter(( /**
814
869
  * @param {?} value
815
870
  * @return {?}
816
- */function (value) { return value; })).length >= min ? null : { minLength: true };
871
+ */function (value) { return value; })).length >= min ? null : { minlength: true };
817
872
  });
818
873
  }
819
874
  /**
@@ -863,6 +918,7 @@
863
918
  this.filterService = filterService;
864
919
  this.fb = fb;
865
920
  this.submitted = false;
921
+ this.previousSelectedNestedCheckbox = [];
866
922
  }
867
923
  Object.defineProperty(GenericFilterComponent.prototype, "config", {
868
924
  get: /**
@@ -917,10 +973,10 @@
917
973
  function (field) {
918
974
  /** @type {?} */
919
975
  var validators = [];
920
- if (field && field.minSelected) {
976
+ if (field && field.minSelected > 0) {
921
977
  validators.push(minSelectedValidator(field.minSelected));
922
978
  }
923
- if (field && field.maxSelected) {
979
+ if (field && field.maxSelected > 0) {
924
980
  validators.push(maxSelectedValidator(field.maxSelected));
925
981
  }
926
982
  return validators;
@@ -941,6 +997,16 @@
941
997
  this.formSub = this.form.valueChanges.subscribe(( /**
942
998
  * @return {?}
943
999
  */function () { return _this.submitted = false; }));
1000
+ this.filterSkillsByServices(null, this.config);
1001
+ /** @type {?} */
1002
+ var services = this.config.fields.find(( /**
1003
+ * @param {?} field
1004
+ * @return {?}
1005
+ */function (field) { return field.name === 'user-services'; }));
1006
+ if (services) {
1007
+ this.startFilterSkillsByServices(this.form, services);
1008
+ this.initValuesFromCacheForSkillsByServices();
1009
+ }
944
1010
  };
945
1011
  /**
946
1012
  * @return {?}
@@ -1057,6 +1123,7 @@
1057
1123
  if (form.valid) {
1058
1124
  this._settings = {
1059
1125
  id: this.config.id,
1126
+ idamId: this.filterService.getUserId(),
1060
1127
  fields: this.getSelectedValues(form.value, this.config)
1061
1128
  };
1062
1129
  this.filterService.givenErrors.next(null);
@@ -1120,6 +1187,11 @@
1120
1187
  * @return {?}
1121
1188
  */
1122
1189
  function (field) {
1190
+ if (field.name === 'user-services') {
1191
+ /** @type {?} */
1192
+ var selectedServices = this.getSelectedValuesForFields(this.form.controls, field);
1193
+ this.filterSkillsByServices(selectedServices, this.config);
1194
+ }
1123
1195
  if (field.radioSelectionChange && typeof field.radioSelectionChange === 'string') {
1124
1196
  var _a = __read(field.enableCondition.split('='), 2), name_3 = _a[0], value = _a[1];
1125
1197
  this.form.get(name_3).patchValue(value);
@@ -1141,6 +1213,9 @@
1141
1213
  this.filterService.persist(settings, this.config.persistence);
1142
1214
  this.filterService.givenErrors.next(null);
1143
1215
  this.submitted = false;
1216
+ if (this.config.cancelButtonCallback) {
1217
+ this.config.cancelButtonCallback();
1218
+ }
1144
1219
  };
1145
1220
  /**
1146
1221
  * @param {?} values
@@ -1186,6 +1261,32 @@
1186
1261
  }
1187
1262
  }
1188
1263
  };
1264
+ /**
1265
+ * @param {?} field
1266
+ * @param {?} i
1267
+ * @return {?}
1268
+ */
1269
+ GenericFilterComponent.prototype.checkBoxChecked = /**
1270
+ * @param {?} field
1271
+ * @param {?} i
1272
+ * @return {?}
1273
+ */
1274
+ function (field, i) {
1275
+ return (( /** @type {?} */(this.form.get(field.name))))['controls'][i]['value'];
1276
+ };
1277
+ /**
1278
+ * @param {?} values
1279
+ * @param {?} field
1280
+ * @return {?}
1281
+ */
1282
+ GenericFilterComponent.prototype.updateTaskNameControls = /**
1283
+ * @param {?} values
1284
+ * @param {?} field
1285
+ * @return {?}
1286
+ */
1287
+ function (values, field) {
1288
+ this.form.get(field.name).patchValue(values);
1289
+ };
1189
1290
  /**
1190
1291
  * @param {?} event
1191
1292
  * @param {?} form
@@ -1201,6 +1302,7 @@
1201
1302
  * @return {?}
1202
1303
  */
1203
1304
  function (event, form, item, field) {
1305
+ var e_3, _a;
1204
1306
  /** @type {?} */
1205
1307
  var isChecked = event.target.checked;
1206
1308
  /** @type {?} */
@@ -1251,19 +1353,91 @@
1251
1353
  else if (hasSelectAllOption && !allChecked && isChecked && isAllCheckedExcludingTheSelectAllOption) {
1252
1354
  formArray.controls[index_1].patchValue(true);
1253
1355
  }
1254
- return;
1255
1356
  }
1256
- formArray.controls.forEach(( /**
1257
- * @param {?} control
1258
- * @return {?}
1259
- */function (control) {
1357
+ else {
1358
+ formArray.controls.forEach(( /**
1359
+ * @param {?} control
1360
+ * @return {?}
1361
+ */function (control) {
1362
+ if (isChecked) {
1363
+ control.patchValue(true);
1364
+ }
1365
+ else {
1366
+ control.patchValue(false);
1367
+ }
1368
+ }));
1369
+ }
1370
+ if (field.changeResetFields && field.changeResetFields.length) {
1371
+ try {
1372
+ for (var _b = __values(field.changeResetFields), _c = _b.next(); !_c.done; _c = _b.next()) {
1373
+ var resetField = _c.value;
1374
+ this.resetField(resetField, form);
1375
+ }
1376
+ }
1377
+ catch (e_3_1) {
1378
+ e_3 = { error: e_3_1 };
1379
+ }
1380
+ finally {
1381
+ try {
1382
+ if (_c && !_c.done && (_a = _b.return))
1383
+ _a.call(_b);
1384
+ }
1385
+ finally {
1386
+ if (e_3)
1387
+ throw e_3.error;
1388
+ }
1389
+ }
1390
+ }
1391
+ if (field.name === 'user-services') {
1392
+ this.startFilterSkillsByServices(form, field);
1393
+ }
1394
+ else if (field.name === 'user-skills') {
1260
1395
  if (isChecked) {
1261
- control.patchValue(true);
1396
+ /** @type {?} */
1397
+ var selectedIndex = field.options.findIndex(( /**
1398
+ * @param {?} option
1399
+ * @return {?}
1400
+ */function (option) { return Number(option.key) === Number(event.target.value); }));
1401
+ /** @type {?} */
1402
+ var selectedCheckbox = this.form.get('user-skills').value;
1403
+ selectedCheckbox[selectedIndex] = true;
1404
+ this.form.get('user-skills').setValue(selectedCheckbox);
1405
+ this.previousSelectedNestedCheckbox.push(event.target.value);
1262
1406
  }
1263
1407
  else {
1264
- control.patchValue(false);
1408
+ /** @type {?} */
1409
+ var index = this.previousSelectedNestedCheckbox.indexOf(event.target.value);
1410
+ if (index !== -1) {
1411
+ this.previousSelectedNestedCheckbox.splice(index, 1);
1412
+ }
1413
+ }
1414
+ }
1415
+ };
1416
+ /**
1417
+ * @private
1418
+ * @param {?} form
1419
+ * @param {?} field
1420
+ * @return {?}
1421
+ */
1422
+ GenericFilterComponent.prototype.startFilterSkillsByServices = /**
1423
+ * @private
1424
+ * @param {?} form
1425
+ * @param {?} field
1426
+ * @return {?}
1427
+ */
1428
+ function (form, field) {
1429
+ /** @type {?} */
1430
+ var servicesArray = [];
1431
+ form.value[field.name].map(( /**
1432
+ * @param {?} service
1433
+ * @param {?} index
1434
+ * @return {?}
1435
+ */function (service, index) {
1436
+ if (service) {
1437
+ servicesArray.push(field.options[index].key);
1265
1438
  }
1266
1439
  }));
1440
+ this.filterSkillsByServices(servicesArray, this.config);
1267
1441
  };
1268
1442
  /**
1269
1443
  * @private
@@ -1278,7 +1452,7 @@
1278
1452
  * @return {?}
1279
1453
  */
1280
1454
  function (resetField, form) {
1281
- var e_3, _a;
1455
+ var e_4, _a;
1282
1456
  /** @type {?} */
1283
1457
  var control = form.get(resetField);
1284
1458
  /** @type {?} */
@@ -1300,8 +1474,8 @@
1300
1474
  this.resetField(key, control);
1301
1475
  }
1302
1476
  }
1303
- catch (e_3_1) {
1304
- e_3 = { error: e_3_1 };
1477
+ catch (e_4_1) {
1478
+ e_4 = { error: e_4_1 };
1305
1479
  }
1306
1480
  finally {
1307
1481
  try {
@@ -1309,8 +1483,8 @@
1309
1483
  _a.call(keys_2);
1310
1484
  }
1311
1485
  finally {
1312
- if (e_3)
1313
- throw e_3.error;
1486
+ if (e_4)
1487
+ throw e_4.error;
1314
1488
  }
1315
1489
  }
1316
1490
  }
@@ -1367,7 +1541,7 @@
1367
1541
  * @return {?}
1368
1542
  */
1369
1543
  function (config, settings, reset) {
1370
- var e_4, _a;
1544
+ var e_5, _a;
1371
1545
  /** @type {?} */
1372
1546
  var findPersonControl = this.form ? this.form.get('findPersonControl') : null;
1373
1547
  this.form = this.fb.group({});
@@ -1376,14 +1550,14 @@
1376
1550
  this.form.addControl('findPersonControl', findPersonControl);
1377
1551
  }
1378
1552
  var _loop_1 = function (field) {
1379
- if (field.type === 'checkbox' || field.type === 'checkbox-large') {
1553
+ if (field.type === 'checkbox' || field.type === 'checkbox-large' || field.type === 'nested-checkbox') {
1380
1554
  /** @type {?} */
1381
1555
  var formArray = this_1.buildCheckBoxFormArray(field, settings);
1382
1556
  this_1.form.addControl(field.name, formArray);
1383
1557
  }
1384
- else if (field.type === 'find-location') {
1558
+ else if (field.type === 'find-location' || field.type === 'find-service') {
1385
1559
  /** @type {?} */
1386
- var formArray = this_1.buildFindLocationFormArray(field, settings);
1560
+ var formArray = this_1.buildFormArray(field, settings);
1387
1561
  this_1.form.addControl(field.name, formArray);
1388
1562
  }
1389
1563
  else {
@@ -1391,6 +1565,12 @@
1391
1565
  var validators = [];
1392
1566
  if (field.minSelected && field.minSelected > 0) {
1393
1567
  validators.push(forms.Validators.required);
1568
+ if (field.type === 'text-input') {
1569
+ validators.push(forms.Validators.minLength(field.minSelected));
1570
+ }
1571
+ if (field.type === 'email-input') {
1572
+ validators.push(forms.Validators.email);
1573
+ }
1394
1574
  }
1395
1575
  /** @type {?} */
1396
1576
  var defaultValue = null;
@@ -1414,15 +1594,15 @@
1414
1594
  if (field.type === 'find-person') {
1415
1595
  /** @type {?} */
1416
1596
  var formGroup = new forms.FormGroup({
1417
- domain: new forms.FormControl(''),
1597
+ domain: new forms.FormControl(defaultValue && defaultValue.hasOwnProperty('domain') ? defaultValue.domain : ''),
1418
1598
  email: new forms.FormControl(defaultValue && defaultValue.hasOwnProperty('email') ? defaultValue.email : '', validators),
1419
- id: new forms.FormControl(''),
1420
- name: new forms.FormControl(''),
1421
- knownAs: new forms.FormControl(''),
1599
+ id: new forms.FormControl(defaultValue && defaultValue.hasOwnProperty('id') ? defaultValue.id : ''),
1600
+ name: new forms.FormControl(defaultValue && defaultValue.hasOwnProperty('name') ? defaultValue.name : ''),
1601
+ knownAs: new forms.FormControl(defaultValue && defaultValue.hasOwnProperty('knownAs') ? defaultValue.knownAs : ''),
1422
1602
  });
1423
1603
  this_1.form.addControl(field.name, formGroup);
1424
1604
  }
1425
- else {
1605
+ else if (field.type !== 'group-title') {
1426
1606
  /** @type {?} */
1427
1607
  var control = new forms.FormControl(defaultValue, validators);
1428
1608
  this_1.form.addControl(field.name, control);
@@ -1440,8 +1620,8 @@
1440
1620
  _loop_1(field);
1441
1621
  }
1442
1622
  }
1443
- catch (e_4_1) {
1444
- e_4 = { error: e_4_1 };
1623
+ catch (e_5_1) {
1624
+ e_5 = { error: e_5_1 };
1445
1625
  }
1446
1626
  finally {
1447
1627
  try {
@@ -1449,8 +1629,8 @@
1449
1629
  _a.call(_b);
1450
1630
  }
1451
1631
  finally {
1452
- if (e_4)
1453
- throw e_4.error;
1632
+ if (e_5)
1633
+ throw e_5.error;
1454
1634
  }
1455
1635
  }
1456
1636
  };
@@ -1467,7 +1647,7 @@
1467
1647
  * @return {?}
1468
1648
  */
1469
1649
  function (field, settings) {
1470
- var e_5, _a;
1650
+ var e_6, _a;
1471
1651
  /** @type {?} */
1472
1652
  var validators = GenericFilterComponent.addFormValidators(field);
1473
1653
  /** @type {?} */
@@ -1497,8 +1677,8 @@
1497
1677
  _loop_2(option);
1498
1678
  }
1499
1679
  }
1500
- catch (e_5_1) {
1501
- e_5 = { error: e_5_1 };
1680
+ catch (e_6_1) {
1681
+ e_6 = { error: e_6_1 };
1502
1682
  }
1503
1683
  finally {
1504
1684
  try {
@@ -1506,8 +1686,8 @@
1506
1686
  _a.call(_b);
1507
1687
  }
1508
1688
  finally {
1509
- if (e_5)
1510
- throw e_5.error;
1689
+ if (e_6)
1690
+ throw e_6.error;
1511
1691
  }
1512
1692
  }
1513
1693
  return formArray;
@@ -1518,14 +1698,14 @@
1518
1698
  * @param {?} settings
1519
1699
  * @return {?}
1520
1700
  */
1521
- GenericFilterComponent.prototype.buildFindLocationFormArray = /**
1701
+ GenericFilterComponent.prototype.buildFormArray = /**
1522
1702
  * @private
1523
1703
  * @param {?} field
1524
1704
  * @param {?} settings
1525
1705
  * @return {?}
1526
1706
  */
1527
1707
  function (field, settings) {
1528
- var e_6, _a;
1708
+ var e_7, _a;
1529
1709
  /** @type {?} */
1530
1710
  var validators = GenericFilterComponent.addFormValidators(field);
1531
1711
  /** @type {?} */
@@ -1544,8 +1724,8 @@
1544
1724
  formArray.push(new forms.FormControl(defaultValue));
1545
1725
  }
1546
1726
  }
1547
- catch (e_6_1) {
1548
- e_6 = { error: e_6_1 };
1727
+ catch (e_7_1) {
1728
+ e_7 = { error: e_7_1 };
1549
1729
  }
1550
1730
  finally {
1551
1731
  try {
@@ -1553,8 +1733,8 @@
1553
1733
  _a.call(_b);
1554
1734
  }
1555
1735
  finally {
1556
- if (e_6)
1557
- throw e_6.error;
1736
+ if (e_7)
1737
+ throw e_7.error;
1558
1738
  }
1559
1739
  }
1560
1740
  }
@@ -1586,7 +1766,7 @@
1586
1766
  * @param {?} f
1587
1767
  * @return {?}
1588
1768
  */function (f) { return f.name === name; }));
1589
- if (field.type === 'find-location') {
1769
+ if (field.type === 'find-location' || field.type === 'find-service') {
1590
1770
  return { value: values, name: name };
1591
1771
  }
1592
1772
  else {
@@ -1609,7 +1789,7 @@
1609
1789
  * @return {?}
1610
1790
  */
1611
1791
  function (form) {
1612
- var e_7, _a;
1792
+ var e_8, _a;
1613
1793
  /** @type {?} */
1614
1794
  var errors = [];
1615
1795
  try {
@@ -1617,16 +1797,16 @@
1617
1797
  var field = _c.value;
1618
1798
  /** @type {?} */
1619
1799
  var formGroup = form.get(field.name);
1620
- if (formGroup && formGroup.errors && formGroup.errors.minLength) {
1800
+ if (formGroup && formGroup.errors && (formGroup.errors.minlength || formGroup.errors.required)) {
1621
1801
  errors.push({ name: field.name, error: field.minSelectedError });
1622
1802
  }
1623
- if (formGroup && formGroup.errors && formGroup.errors.maxLength) {
1624
- errors.push({ name: field.name, error: field.minSelectedError });
1803
+ if (formGroup && formGroup.errors && formGroup.errors.maxlength) {
1804
+ errors.push({ name: field.name, error: field.maxSelectedError });
1625
1805
  }
1626
1806
  }
1627
1807
  }
1628
- catch (e_7_1) {
1629
- e_7 = { error: e_7_1 };
1808
+ catch (e_8_1) {
1809
+ e_8 = { error: e_8_1 };
1630
1810
  }
1631
1811
  finally {
1632
1812
  try {
@@ -1634,120 +1814,370 @@
1634
1814
  _a.call(_b);
1635
1815
  }
1636
1816
  finally {
1637
- if (e_7)
1638
- throw e_7.error;
1817
+ if (e_8)
1818
+ throw e_8.error;
1639
1819
  }
1640
1820
  }
1821
+ // remove duplicates
1822
+ errors = errors.filter(( /**
1823
+ * @param {?} filterError
1824
+ * @param {?} i
1825
+ * @param {?} arr
1826
+ * @return {?}
1827
+ */function (filterError, i, arr) {
1828
+ return errors.indexOf(arr.find(( /**
1829
+ * @param {?} item
1830
+ * @return {?}
1831
+ */function (item) { return item.name === filterError.name; }))) === i;
1832
+ }));
1641
1833
  if (errors.length) {
1642
1834
  this.filterService.givenErrors.next(errors);
1643
1835
  }
1644
1836
  };
1645
- GenericFilterComponent.decorators = [
1646
- { type: i0.Component, args: [{
1647
- selector: 'xuilib-generic-filter',
1648
- template: "<form [formGroup]=\"form\" (ngSubmit)=\"applyFilter(form)\">\n <div class=\"contain-classes\" *ngFor=\"let field of config.fields\">\n <hr *ngIf=\"field.lineBreakBefore\" class=\"govuk-section-break govuk-section-break--visible elevated-break\">\n <div class=\"govuk-form-group xui-generic-filter\"\n [hidden]=\"hidden(field, form)\"\n [id]=\"field.name\"\n [ngClass]=\"{'form-group-error': submitted && (form.get(field.name).errors?.minLength || form.get(field.name).errors?.maxLength)}\">\n <h3 *ngIf=\"field.title\" class=\"govuk-heading-s\">{{field.title}}</h3>\n <p class=\"govuk-body\" *ngIf=\"field.subTitle\">{{field.subTitle}}</p>\n <span [id]=\"field.name + '-error'\" class=\"govuk-error-message\" *ngIf=\"field.displayMinSelectedError && submitted && form.get(field.name).errors?.minLength\">\n <span class=\"govuk-visually-hidden\">Error:</span> {{field.minSelectedError}}\n </span>\n <span [id]=\"field.name + '-error'\" class=\"govuk-error-message\" *ngIf=\"field.displayMaxSelectedError && submitted && form.get(field.name).errors?.maxLength\">\n <span class=\"govuk-visually-hidden\">Error:</span> {{field.maxSelectedError}}\n </span>\n <div class=\"govuk-body\" [ngSwitch]=\"field.type\">\n <ng-container *ngSwitchCase=\"'select'\">\n <select class=\"govuk-select\" (change)=\"fieldChanged(field, form)\" [attr.disabled]=\"disabled(field, form)\" [name]=\"'select_' + field.name\" [id]=\"'select_' + field.name\" [formControlName]=\"field.name\">\n <option disabled selected hidden value=\"\">{{field.disabledText}}</option>\n <option class=\"govuk-radios__item\" *ngFor=\"let item of field.options\" [value]=\"item.key\">{{item.label}}</option>\n </select>\n </ng-container>\n <ng-container *ngSwitchCase=\"'checkbox'\">\n <div class=\"govuk-checkboxes govuk-checkboxes--small\" [formGroupName]=\"field.name\" [attr.field]=\"field.name\" [id]=\"'checkbox_' + field.name\">\n <div *ngFor=\"let item of field.options; let i = index\" class=\"govuk-checkboxes__item\">\n <input type=\"checkbox\" class=\"govuk-checkboxes__input\"\n [attr.disabled]=\"disabled(field, form)\"\n [formControlName]=\"i\"\n (change)=\"toggleSelectAll($event, form, item, field)\"\n [value]=\"item.key\" [id]=\"'checkbox_' + item.key\"\n [name]=\"'checkbox_' + item.key\"\n />\n <label\n [for]=\"'checkbox_' + item.key\"\n class=\"govuk-label govuk-checkboxes__label\"\n [ngClass]=\"{'govuk-!-font-weight-bold': item.selectAll}\"\n >{{item.label}}</label>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'checkbox-large'\">\n <div class=\"govuk-checkboxes\" [formGroupName]=\"field.name\" [attr.field]=\"field.name\" [id]=\"'checkbox_' + field.name\">\n <div *ngFor=\"let item of field.options; let i = index\" class=\"govuk-checkboxes__item\">\n <input type=\"checkbox\" class=\"govuk-checkboxes__input\"\n [attr.disabled]=\"disabled(field, form)\"\n [formControlName]=\"i\"\n (change)=\"toggleSelectAll($event, form, item, field)\"\n [value]=\"item.key\" [id]=\"'checkbox_' + item.key\"\n [name]=\"'checkbox_' + item.key\"\n />\n <label\n [for]=\"'checkbox_' + item.key\"\n class=\"govuk-label govuk-checkboxes__label\"\n [ngClass]=\"{'govuk-!-font-weight-bold': item.selectAll}\"\n >{{item.label}}</label>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'radio'\">\n <div class=\"govuk-radios\">\n <div *ngFor=\"let item of field.options\" class=\"govuk-radios__item\">\n <input type=\"radio\"\n [formControlName]=\"field.name\"\n [id]=\"'radio_' + item.key\"\n [attr.disabled]=\"disabled(field, form)\"\n [checked]=\"item.key === form.get(field.name).value\"\n class=\"govuk-radios__input\"\n [value]=\"item.key\"\n (change)=\"fieldChanged(field, form)\"\n />\n <label [for]=\"'radio_' + item.key\" class=\"govuk-label govuk-radios__label\">{{item.label}}</label>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'find-person'\">\n <xuilib-find-person subTitle=\"\" (personSelected)=\"updatePersonControls($event, field)\"\n (personFieldChanged)=\"inputChanged(field)\"\n [submitted]=\"submitted\"\n [disabled]=\"disabled(field, form)\"\n [domain]=\"form.get(field.domainField)?.value\"\n [findPersonGroup]=\"form\"\n [selectedPerson]=\"form.get(field.name)?.value?.email\"\n [userIncluded]=\"false\"\n ></xuilib-find-person>\n </ng-container>\n <ng-container *ngSwitchCase=\"'find-location'\">\n <xuilib-find-location (locationFieldChanged)=\"inputChanged(field)\"\n [form]=\"form\"\n [fields]=\"config.fields\"\n [locationTitle]=\"field.locationTitle\"\n [enableAddLocationButton]=\"field.enableAddLocationButton\"\n [disabled]=\"disabled(field, form)\"\n [disableInputField]=\"field.disable\"\n [selectedLocations]=\"form.get(field.name)?.value\"\n [submitted]=\"submitted\"\n [services]=\"form.get(field.findLocationField)?.value\"\n [field]=\"field\"\n ></xuilib-find-location>\n </ng-container>\n </div>\n </div>\n </div>\n <hr class=\"govuk-section-break govuk-section-break--m govuk-section-break--visible\"/>\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-full\">\n <button\n class=\"govuk-button govuk-!-margin-right-1 govuk-!-margin-bottom-0\"\n type=\"submit\"\n id=\"applyFilter\"\n [disabled]=\"config.enableDisabledButton && form.invalid\"\n >{{config.applyButtonText || 'Apply'}}</button>\n <button *ngIf=\"config.showCancelFilterButton\"\n class=\"govuk-button govuk-button--secondary govuk-!-margin-bottom-0\"\n type=\"button\"\n id=\"cancelFilter\"\n (click)=\"cancelFilter()\">{{ config.cancelButtonText || 'Cancel'}}</button>\n </div>\n </div>\n</form>\n",
1649
- changeDetection: i0.ChangeDetectionStrategy.OnPush,
1650
- encapsulation: i0.ViewEncapsulation.None,
1651
- styles: [".contain-classes .elevated-break{position:relative;top:-10px}.contain-classes .xui-generic-filter .select-all{margin-bottom:10px}.contain-classes .xui-generic-filter .govuk-checkboxes{display:flex;flex-wrap:wrap}.contain-classes .xui-generic-filter .govuk-checkboxes>div{flex-grow:1;flex-shrink:0}"]
1652
- }] }
1653
- ];
1654
- /** @nocollapse */
1655
- GenericFilterComponent.ctorParameters = function () {
1656
- return [
1657
- { type: FilterService },
1658
- { type: forms.FormBuilder }
1659
- ];
1660
- };
1661
- GenericFilterComponent.propDecorators = {
1662
- config: [{ type: i0.Input }],
1663
- settings: [{ type: i0.Input }]
1664
- };
1665
- return GenericFilterComponent;
1666
- }());
1667
-
1668
- /**
1669
- * @fileoverview added by tsickle
1670
- * Generated from: lib/components/hmcts-session-dialog/hmcts-session-dialog.component.ts
1671
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1672
- */
1673
- /*
1674
- * Gov UK Dialog Component
1675
- * Responsible for displaying dialog layout
1676
- * using ng-content to display content from parent
1677
- * */
1678
- var HmctsSessionDialogComponent = /** @class */ (function () {
1679
- function HmctsSessionDialogComponent() {
1680
- this.close = new i0.EventEmitter();
1681
- }
1682
1837
  /**
1683
1838
  * @return {?}
1684
1839
  */
1685
- HmctsSessionDialogComponent.prototype.onClose = /**
1840
+ GenericFilterComponent.prototype.initValuesFromCacheForSkillsByServices = /**
1686
1841
  * @return {?}
1687
1842
  */
1688
1843
  function () {
1689
- this.close.emit();
1844
+ var _this = this;
1845
+ /** @type {?} */
1846
+ var cachedValues = this.filteredSkillsByServicesCheckbox.map(( /**
1847
+ * @param {?} skill
1848
+ * @return {?}
1849
+ */function (skill) {
1850
+ /** @type {?} */
1851
+ var selected = false;
1852
+ if (_this.settings && _this.settings.fields) {
1853
+ /** @type {?} */
1854
+ var isSelectedUserSkill = void 0;
1855
+ /** @type {?} */
1856
+ var selectedUserSkills = _this.settings.fields.find(( /**
1857
+ * @param {?} setting
1858
+ * @return {?}
1859
+ */function (setting) { return setting.name === 'user-skills'; }));
1860
+ if (selectedUserSkills && selectedUserSkills.value && selectedUserSkills.value.length > 0) {
1861
+ isSelectedUserSkill = selectedUserSkills.value.findIndex(( /**
1862
+ * @param {?} val
1863
+ * @return {?}
1864
+ */function (val) {
1865
+ return String(val) === String(skill.key);
1866
+ }));
1867
+ selected = isSelectedUserSkill !== -1;
1868
+ }
1869
+ }
1870
+ return selected;
1871
+ }));
1872
+ this.form.get('user-skills').setValue(cachedValues);
1690
1873
  };
1691
- HmctsSessionDialogComponent.decorators = [
1692
- { type: i0.Component, args: [{
1693
- selector: 'xuilib-session-dialog',
1694
- template: "<div class=\"gem-c-modal-dialogue\" data-module=\"modal-dialogue\" id=\"modal-default\" style=\"display: block;\">\n <div class=\"gem-c-modal-dialogue__overlay\"></div>\n <dialog class=\"gem-c-modal-dialogue__box\" aria-modal=\"true\" role=\"dialog\" tabindex=\"0\" [ngStyle]=\"{'margin-top': positionTop}\">\n <div class=\"gem-c-modal-dialogue__header\">\n <svg role=\"presentation\" focusable=\"false\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 38 38\" height=\"33\" width=\"33\">\n <style type=\"text/css\">\n .st0{fill:#FFFFFF;}\n </style>\n <g id=\"_4_-_granular_components_warning_icon\" transform=\"translate(0.5 0.5)\">\n <g id=\"Warning_icon\" transform=\"translate(0)\">\n <path id=\"Exclusion_1\" class=\"st0\" d=\"M18.5,37.5c-5.04,0.01-9.88-1.99-13.44-5.57C1.49,28.38-0.51,23.54-0.5,18.5\n c-0.01-5.04,1.99-9.88,5.56-13.43C8.62,1.49,13.46-0.51,18.5-0.5c5.04-0.01,9.88,1.99,13.44,5.56c3.57,3.56,5.58,8.39,5.56,13.44\n c0.01,5.04-1.99,9.88-5.56,13.44C28.38,35.51,23.54,37.51,18.5,37.5z M18.52,24.29c-0.4,0-0.8,0.08-1.17,0.23\n c-0.36,0.15-0.69,0.37-0.97,0.64c-0.28,0.27-0.5,0.59-0.65,0.95c-0.16,0.36-0.24,0.76-0.23,1.15c0,0.4,0.08,0.8,0.23,1.17\n c0.15,0.36,0.37,0.68,0.65,0.96c0.28,0.27,0.61,0.49,0.97,0.64c0.37,0.16,0.77,0.24,1.17,0.24c0.4,0,0.79-0.08,1.15-0.24\n c0.35-0.15,0.67-0.37,0.95-0.64c0.27-0.27,0.49-0.6,0.64-0.96c0.16-0.37,0.24-0.77,0.23-1.17c0-0.4-0.08-0.79-0.23-1.15\n c-0.15-0.35-0.37-0.67-0.64-0.95c-0.27-0.27-0.6-0.49-0.95-0.64C19.31,24.37,18.92,24.29,18.52,24.29L18.52,24.29z M16.11,7.5\n l0.42,14.87h3.91L20.86,7.5H16.11z\"/>\n </g>\n </g>\n </svg>\n <div class=\"gem-c-modal-dialogue__title\">We are about to sign you out</div>\n </div>\n <div class=\"gem-c-modal-dialogue__content\">\n <ng-content></ng-content>\n </div>\n </dialog>\n</div>\n",
1695
- styles: [".gem-c-modal-dialogue{display:none;position:fixed;z-index:1000;top:0;left:0;width:100%;height:100%;overflow-x:hidden;overflow-y:scroll;outline:0}.gem-c-modal-dialogue__box{display:block;position:fixed;background:#fff;top:0;right:0;bottom:0;left:0;width:100%;height:100%;margin:0;padding:0;overflow-y:auto;border:0;font-family:\"GDS Transport\",Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:1rem;line-height:1.25;color:#0b0c0c}.gem-c-modal-dialogue__box:focus{outline:#fd0 solid 3px}@media (min-width:40.0625em){.gem-c-modal-dialogue__box{font-size:1.1875rem;line-height:1.3157894737;position:relative;top:inherit;right:inherit;bottom:inherit;left:inherit;width:auto;max-width:640px;height:auto;margin:30px auto;border:2px solid #0b0c0c}}@media print{.gem-c-modal-dialogue__box{font-family:sans-serif;font-size:14pt;line-height:1.15;color:#000}}@media (min-width:40.0625em) and (max-width:64em){.gem-c-modal-dialogue__box--wide{margin:30px}}.gem-c-modal-dialogue__overlay{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:.8;background:#0b0c0c;pointer-events:none;touch-action:none}@media screen{.gem-o-template--modal{overflow-y:inherit}}.gem-o-template__body--modal{overflow:hidden}.gem-o-template__body--blur .govuk-footer,.gem-o-template__body--blur .govuk-header,.gem-o-template__body--blur .govuk-main-wrapper,.gem-o-template__body--blur .govuk-phase-banner,.gem-o-template__body--blur .govuk-skip-link,.gem-o-template__body--blur .govuk-width-container .govuk-back-link{filter:blur(2px)}.govuk-warning-text__icon{margin:0 0 0 12px}.gem-c-modal-dialogue__header{padding:9px 15px 10px;color:#fff;background:#d4351d;display:flex}.gem-c-modal-dialogue__title{margin:5px 0 4px 12px}.gem-c-modal-dialogue__logotype-crown{fill:currentColor;vertical-align:middle}.gem-c-modal-dialogue__logotype-crown-fallback-image{width:30px;height:26px;border:0;vertical-align:middle}.gem-c-modal-dialogue__content{padding:15px;background:#fff}.gem-c-modal-dialogue__close-button{position:absolute;top:0;right:0;width:44px;height:44px;border:0;color:#fff;background:0 0;cursor:pointer;font-family:\"GDS Transport\",Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:700;font-size:1.5rem;line-height:1.3}@media (min-width:40.0625em){.gem-c-modal-dialogue__box--wide{max-width:960px}.gem-c-modal-dialogue__close-button{font-size:2.25rem;line-height:1.3}}@media print{.gem-c-modal-dialogue__close-button{font-family:sans-serif;font-size:24pt;line-height:1.3}}@media (max-width:40.0525em){.gem-c-modal-dialogue__close-button{font-size:36px;line-height:1.3}}.gem-c-modal-dialogue__close-button:focus,.gem-c-modal-dialogue__close-button:hover{color:#0b0c0c;box-shadow:0 -2px #fd0,0 4px #0b0c0c;text-decoration:none;outline:0;background:#fd0}"]
1696
- }] }
1697
- ];
1698
- /** @nocollapse */
1699
- HmctsSessionDialogComponent.ctorParameters = function () { return []; };
1700
- HmctsSessionDialogComponent.propDecorators = {
1701
- positionTop: [{ type: i0.Input }],
1702
- close: [{ type: i0.Output }]
1703
- };
1704
- return HmctsSessionDialogComponent;
1705
- }());
1706
-
1707
- /**
1708
- * @fileoverview added by tsickle
1709
- * Generated from: lib/components/invite-user-form/invite-user-form.component.ts
1710
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1711
- */
1712
- var InviteUserFormComponent = /** @class */ (function () {
1713
- function InviteUserFormComponent() {
1714
- this.submitForm = new i0.EventEmitter();
1715
- }
1716
- Object.defineProperty(InviteUserFormComponent.prototype, "errorMessages", {
1717
- set: /**
1718
- * @param {?} value
1719
- * @return {?}
1720
- */ function (value) {
1721
- this.isInvalid = value || {};
1722
- },
1723
- enumerable: true,
1724
- configurable: true
1725
- });
1726
1874
  /**
1875
+ * @param {?} services
1876
+ * @param {?} config
1727
1877
  * @return {?}
1728
1878
  */
1729
- InviteUserFormComponent.prototype.onSubmit = /**
1879
+ GenericFilterComponent.prototype.filterSkillsByServices = /**
1880
+ * @param {?} services
1881
+ * @param {?} config
1730
1882
  * @return {?}
1731
1883
  */
1732
- function () {
1733
- this.submitForm.emit();
1734
- };
1735
- InviteUserFormComponent.decorators = [
1736
- { type: i0.Component, args: [{
1737
- selector: 'xuilib-invite-user-form',
1738
- template: "\n<form [formGroup]=\"inviteUserForm\" (ngSubmit)=\"onSubmit()\" >\n\n <xuilib-gov-uk-input\n [config]=\"{label: 'First name', hint: 'Include all middle names.', name: 'firstName', id: 'firstName', type: 'text', classes: 'testClass'}\"\n [errorMessage]=\"isInvalid.firstName\"\n [group]=\"inviteUserForm\">\n </xuilib-gov-uk-input>\n\n <xuilib-gov-uk-input\n [config]=\"{label: 'Last name', name: 'lastName', id: 'lastName', type: 'text'}\"\n [errorMessage]=\"isInvalid.lastName\"\n [group]=\"inviteUserForm\">\n </xuilib-gov-uk-input>\n\n <xuilib-gov-uk-input\n [config]=\"{label: 'Email address', name: 'email', id: 'email', type: 'email'}\"\n [errorMessage]=\"isInvalid.email\"\n [group]=\"inviteUserForm\">\n </xuilib-gov-uk-input>\n\n <xuilib-invite-permission-form [inviteUserForm]=\"inviteUserForm\" [errorMessages]=\"isInvalid.roles\">\n </xuilib-invite-permission-form>\n\n <button type=\"submit\" class=\"govuk-button\">\n Send invitation\n </button>\n</form>\n"
1739
- }] }
1740
- ];
1741
- InviteUserFormComponent.propDecorators = {
1742
- submitForm: [{ type: i0.Output }],
1743
- inviteUserForm: [{ type: i0.Input }],
1744
- errorMessages: [{ type: i0.Input }]
1745
- };
1746
- return InviteUserFormComponent;
1747
- }());
1748
-
1749
- /**
1750
- * @fileoverview added by tsickle
1884
+ function (services, config) {
1885
+ var _this = this;
1886
+ this.filteredSkillsByServices = [];
1887
+ this.filteredSkillsByServicesCheckbox = [];
1888
+ /** @type {?} */
1889
+ var userSkillsSelectField = config.fields.find(( /**
1890
+ * @param {?} f
1891
+ * @return {?}
1892
+ */function (f) { return f.name === 'user-skills' && f.type === 'group-select'; }));
1893
+ /** @type {?} */
1894
+ var userSkillsCheckboxField = config.fields.find(( /**
1895
+ * @param {?} f
1896
+ * @return {?}
1897
+ */function (f) { return f.name === 'user-skills' && f.type === 'nested-checkbox'; }));
1898
+ if (userSkillsSelectField) {
1899
+ /** @type {?} */
1900
+ var userSkills_1 = userSkillsSelectField.groupOptions;
1901
+ if (!services || services.length === 0) {
1902
+ this.filteredSkillsByServices = userSkills_1;
1903
+ }
1904
+ else {
1905
+ services.forEach(( /**
1906
+ * @param {?} s
1907
+ * @return {?}
1908
+ */function (s) {
1909
+ /** @type {?} */
1910
+ var groupOption = userSkills_1.find(( /**
1911
+ * @param {?} u
1912
+ * @return {?}
1913
+ */function (u) { return u.group.toLowerCase() === s.toLowerCase(); }));
1914
+ if (groupOption) {
1915
+ _this.filteredSkillsByServices.push(groupOption);
1916
+ }
1917
+ }));
1918
+ }
1919
+ }
1920
+ else if (userSkillsCheckboxField) {
1921
+ /** @type {?} */
1922
+ var userSkills_2 = userSkillsCheckboxField.groupOptions;
1923
+ if (!services || services.length === 0) {
1924
+ this.filteredSkillsByServices = userSkills_2;
1925
+ }
1926
+ else {
1927
+ services.forEach(( /**
1928
+ * @param {?} s
1929
+ * @return {?}
1930
+ */function (s) {
1931
+ /** @type {?} */
1932
+ var groupOption = userSkills_2.find(( /**
1933
+ * @param {?} u
1934
+ * @return {?}
1935
+ */function (u) { return u.group.toLowerCase() === s.toLowerCase(); }));
1936
+ if (groupOption) {
1937
+ _this.filteredSkillsByServices.push(groupOption);
1938
+ }
1939
+ }));
1940
+ this.filteredSkillsByServicesCheckbox = this.filteredSkillsByServices.map(( /**
1941
+ * @param {?} skill
1942
+ * @return {?}
1943
+ */function (skill) {
1944
+ return skill.options;
1945
+ })).reduce(( /**
1946
+ * @param {?} a
1947
+ * @param {?} b
1948
+ * @return {?}
1949
+ */function (a, b) {
1950
+ return a.concat(b);
1951
+ }), []);
1952
+ userSkillsCheckboxField.options = [];
1953
+ userSkillsCheckboxField.options = this.filteredSkillsByServicesCheckbox;
1954
+ this.form.setControl('user-skills', new forms.FormArray([]));
1955
+ this.filteredSkillsByServicesCheckbox.forEach(( /**
1956
+ * @return {?}
1957
+ */function () {
1958
+ (( /** @type {?} */(_this.form.get('user-skills')))).push(new forms.FormControl(false));
1959
+ }));
1960
+ /** @type {?} */
1961
+ var prevValues = this.filteredSkillsByServicesCheckbox.map(( /**
1962
+ * @param {?} skill
1963
+ * @return {?}
1964
+ */function (skill) {
1965
+ /** @type {?} */
1966
+ var selected = false;
1967
+ if (_this.settings && _this.settings.fields) {
1968
+ if (_this.previousSelectedNestedCheckbox.length > 0) {
1969
+ selected = _this.previousSelectedNestedCheckbox.includes(skill.key);
1970
+ }
1971
+ /** @type {?} */
1972
+ var isSelectedUserSkill = void 0;
1973
+ /** @type {?} */
1974
+ var selectedUserSkills = _this.settings.fields.find(( /**
1975
+ * @param {?} setting
1976
+ * @return {?}
1977
+ */function (setting) { return setting.name === 'user-skills'; }));
1978
+ if (selectedUserSkills && selectedUserSkills.value && selectedUserSkills.value.length > 0) {
1979
+ isSelectedUserSkill = selectedUserSkills.value.findIndex(( /**
1980
+ * @param {?} val
1981
+ * @return {?}
1982
+ */function (val) { return Number(val) === Number(skill.key); }));
1983
+ selected = isSelectedUserSkill !== -1;
1984
+ }
1985
+ if (_this.previousSelectedNestedCheckbox.length > 0) {
1986
+ // Pick up from previous selected
1987
+ selected = _this.previousSelectedNestedCheckbox.includes(String(skill.key));
1988
+ }
1989
+ }
1990
+ return selected;
1991
+ }));
1992
+ this.form.get('user-skills').setValue(prevValues);
1993
+ return this.filteredSkillsByServicesCheckbox;
1994
+ }
1995
+ }
1996
+ this.filteredSkillsByServices = this.sortGroupOptions(this.filteredSkillsByServices);
1997
+ return this.filteredSkillsByServices;
1998
+ };
1999
+ /**
2000
+ * @private
2001
+ * @param {?} formValues
2002
+ * @param {?} field
2003
+ * @return {?}
2004
+ */
2005
+ GenericFilterComponent.prototype.getSelectedValuesForFields = /**
2006
+ * @private
2007
+ * @param {?} formValues
2008
+ * @param {?} field
2009
+ * @return {?}
2010
+ */
2011
+ function (formValues, field) {
2012
+ /** @type {?} */
2013
+ var selectedValues = [];
2014
+ Object.keys(formValues).map(( /**
2015
+ * @param {?} name
2016
+ * @return {?}
2017
+ */function (name) {
2018
+ /** @type {?} */
2019
+ var values = formValues[name].value;
2020
+ if (name === field.name) {
2021
+ values.forEach(( /**
2022
+ * @param {?} v
2023
+ * @return {?}
2024
+ */function (v) {
2025
+ selectedValues.push(v.key);
2026
+ }));
2027
+ }
2028
+ }));
2029
+ return selectedValues;
2030
+ };
2031
+ /**
2032
+ * @private
2033
+ * @param {?} groupOptions
2034
+ * @return {?}
2035
+ */
2036
+ GenericFilterComponent.prototype.sortGroupOptions = /**
2037
+ * @private
2038
+ * @param {?} groupOptions
2039
+ * @return {?}
2040
+ */
2041
+ function (groupOptions) {
2042
+ /** @type {?} */
2043
+ var sortedResults = [];
2044
+ /** @type {?} */
2045
+ var groups = groupOptions.map(( /**
2046
+ * @param {?} go
2047
+ * @return {?}
2048
+ */function (go) { return go.group; }));
2049
+ groups.sort().forEach(( /**
2050
+ * @param {?} g
2051
+ * @return {?}
2052
+ */function (g) {
2053
+ /** @type {?} */
2054
+ var options = groupOptions.find(( /**
2055
+ * @param {?} go
2056
+ * @return {?}
2057
+ */function (go) { return go.group === g; })).options;
2058
+ /** @type {?} */
2059
+ var sortedOptions = options.sort(( /**
2060
+ * @param {?} a
2061
+ * @param {?} b
2062
+ * @return {?}
2063
+ */function (a, b) {
2064
+ return a.label.toLowerCase() > b.label.toLowerCase() ? 1 : (b.label.toLowerCase() > a.label.toLowerCase() ? -1 : 0);
2065
+ }));
2066
+ /** @type {?} */
2067
+ var result = {
2068
+ group: g,
2069
+ options: sortedOptions
2070
+ };
2071
+ sortedResults.push(result);
2072
+ }));
2073
+ return sortedResults;
2074
+ };
2075
+ GenericFilterComponent.decorators = [
2076
+ { type: i0.Component, args: [{
2077
+ selector: 'xuilib-generic-filter',
2078
+ template: "<form [formGroup]=\"form\" (ngSubmit)=\"applyFilter(form)\">\n <div class=\"contain-classes\" *ngFor=\"let field of config.fields\">\n <hr *ngIf=\"field.lineBreakBefore\" class=\"govuk-section-break elevated-break\">\n <ng-container [ngSwitch]=\"field.type\">\n <ng-container *ngSwitchCase=\"'group-title'\">\n <div [class]=\"field.titleClasses ? field.titleClasses: 'govuk-label govuk-label--m govuk-!-margin-bottom-4'\">\n {{ field.name | capitalize }}\n </div>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <div class=\"govuk-form-group xui-generic-filter\"\n [hidden]=\"hidden(field, form)\"\n [id]=\"field.name\"\n [ngClass]=\"{'form-group-error': submitted && ((form.get(field.name).errors?.minlength || form.get(field.name).errors?.required) || form.get(field.name).errors?.maxlength || form.get(field.name).errors?.email)}\">\n <div *ngIf=\"field.title\" class=\"xui-generic-filter__field-title\">\n <h3 [class]=\"field.titleClasses ? field.titleClasses : 'govuk-heading-s'\" style=\"margin-bottom: 0!important\">\n {{field.title | capitalize}}\n </h3>\n <div *ngIf=\"field?.titleHint\" class=\"govuk-!-margin-left-2\">\n {{ field.titleHint }}\n </div>\n </div>\n <p class=\"govuk-body\" *ngIf=\"field.subTitle\">{{field.subTitle}}</p>\n <span [id]=\"field.name + '-error'\" class=\"govuk-error-message\"\n *ngIf=\"field.displayMinSelectedError && submitted && (form.get(field.name).errors?.minlength || form.get(field.name).errors?.required)\">\n <span class=\"govuk-visually-hidden\">Error:</span> {{field.minSelectedError}}\n </span>\n <span [id]=\"field.name + '-error'\" class=\"govuk-error-message\"\n *ngIf=\"field.displayMaxSelectedError && submitted && form.get(field.name).errors?.maxlength\">\n <span class=\"govuk-visually-hidden\">Error:</span> {{field.maxSelectedError}}\n </span>\n <span [id]=\"field.name + '-error'\" class=\"govuk-error-message\"\n *ngIf=\"field.emailError && submitted && form.get(field.name).errors?.email\">\n <span class=\"govuk-visually-hidden\">Error:</span> {{field.emailError}}\n </span>\n <div class=\"govuk-body\" [class.govuk-body--maxWidth480px]=\"field.maxWidth480px\" [ngSwitch]=\"field.type\">\n <ng-container *ngSwitchCase=\"'select'\">\n <select class=\"govuk-select\" (change)=\"fieldChanged(field, form)\" [attr.disabled]=\"disabled(field, form)\" [name]=\"'select_' + field.name\" [id]=\"'select_' + field.name\" [formControlName]=\"field.name\">\n <option disabled selected hidden value=\"\">{{field.disabledText}}</option>\n <option *ngIf=\"field.defaultOption\" [attr.selected]=\"true\" [value]=\"field.defaultOption.key\">{{field.defaultOption.label}}</option>\n <option class=\"govuk-radios__item\" *ngFor=\"let item of field.options\" [value]=\"item.key\">{{item.label}}</option>\n </select>\n </ng-container>\n <ng-container *ngSwitchCase=\"'group-select'\">\n <select class=\"govuk-select\" (change)=\"fieldChanged(field, form)\" [attr.disabled]=\"disabled(field, form)\" [name]=\"'select_' + field.name\" [id]=\"'select_' + field.name\" [formControlName]=\"field.name\">\n <option disabled selected hidden value=\"\">{{field.disabledText}}</option>\n <option *ngIf=\"field.defaultOption\" selected [value]=\"field.defaultOption.key\">{{field.defaultOption.label}}</option>\n <optgroup *ngFor = 'let grp of filteredSkillsByServices' label=\"{{grp.group | titlecase}}\">\n <option *ngFor = 'let item of grp.options' [value]=\"item.key\">{{item.label}}</option>\n </optgroup>\n </select>\n </ng-container>\n <ng-container *ngSwitchCase=\"'checkbox'\">\n <div class=\"govuk-checkboxes govuk-checkboxes--small\" [formGroupName]=\"field.name\" [attr.field]=\"field.name\" [id]=\"'checkbox_' + field.name\">\n <div *ngFor=\"let item of field.options; let i = index\" class=\"govuk-checkboxes__item\">\n <input type=\"checkbox\" class=\"govuk-checkboxes__input\"\n [attr.disabled]=\"disabled(field, form)\"\n [formControlName]=\"i\"\n (change)=\"toggleSelectAll($event, form, item, field)\"\n [value]=\"item.key\" [id]=\"'checkbox_' + item.key\"\n [name]=\"'checkbox_' + item.key\"\n />\n <label\n [for]=\"'checkbox_' + item.key\"\n class=\"govuk-label govuk-checkboxes__label\"\n [ngClass]=\"{'govuk-!-font-weight-bold': item.selectAll}\"\n >{{item.label}}</label>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'nested-checkbox'\">\n <div class=\"govuk-checkboxes govuk-checkboxes--small\" [formGroupName]=\"field.name\" [attr.field]=\"field.name\" [id]=\"'checkbox_' + field.name\">\n <div *ngFor=\"let item of filteredSkillsByServicesCheckbox; let i = index\" class=\"govuk-checkboxes__item\">\n <input type=\"checkbox\" class=\"govuk-checkboxes__input\"\n [attr.disabled]=\"disabled(field, form)\"\n [formControlName]=\"i\"\n (change)=\"toggleSelectAll($event, form, item, field)\"\n [value]=\"item.key\" [id]=\"'checkbox_' + item.key\"\n [name]=\"'checkbox_' + item.key\"\n />\n <label\n [for]=\"'checkbox_' + item.key\"\n class=\"govuk-label govuk-checkboxes__label\"\n [ngClass]=\"{'govuk-!-font-weight-bold': item.selectAll}\"\n >{{item.label}}</label>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'checkbox-large'\">\n <div class=\"govuk-checkboxes\" [formGroupName]=\"field.name\" [attr.field]=\"field.name\" [id]=\"'checkbox_' + field.name\">\n <div *ngFor=\"let item of field.options; let i = index\" class=\"govuk-checkboxes__item\">\n <input type=\"checkbox\" class=\"govuk-checkboxes__input\"\n [attr.disabled]=\"disabled(field, form)\"\n [formControlName]=\"i\"\n (change)=\"toggleSelectAll($event, form, item, field)\"\n [value]=\"item.key\" [id]=\"'checkbox_' + item.key\"\n [name]=\"'checkbox_' + item.key\"\n />\n <label\n [for]=\"'checkbox_' + item.key\"\n class=\"govuk-label govuk-checkboxes__label\"\n [ngClass]=\"{'govuk-!-font-weight-bold': item.selectAll}\"\n >{{item.label}}</label>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'radio'\">\n <div class=\"govuk-radios\">\n <div *ngFor=\"let item of field.options\" class=\"govuk-radios__item\">\n <input type=\"radio\"\n [formControlName]=\"field.name\"\n [id]=\"'radio_' + item.key\"\n [attr.disabled]=\"disabled(field, form)\"\n [checked]=\"item.key === form.get(field.name).value\"\n class=\"govuk-radios__input\"\n [value]=\"item.key\"\n (change)=\"fieldChanged(field, form)\"\n />\n <label [for]=\"'radio_' + item.key\" class=\"govuk-label govuk-radios__label\">{{item.label}}</label>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'find-person'\">\n <xuilib-find-person subTitle=\"\" (personSelected)=\"updatePersonControls($event, field)\"\n (personFieldChanged)=\"inputChanged(field)\"\n [submitted]=\"submitted\"\n [disabled]=\"disabled(field, form)\"\n [domain]=\"form.get(field.domainField)?.value\"\n [findPersonGroup]=\"form\"\n [selectedPerson]=\"form.get(field.name)?.value?.email\"\n [userIncluded]=\"false\"\n [placeholderContent]=\"field.placeholderContent ? field.placeholderContent : ''\"\n ></xuilib-find-person>\n </ng-container>\n <ng-container *ngSwitchCase=\"'find-location'\">\n <xuilib-find-location (locationFieldChanged)=\"inputChanged(field)\"\n [form]=\"form\"\n [fields]=\"config.fields\"\n [locationTitle]=\"field.locationTitle\"\n [enableAddLocationButton]=\"field.enableAddButton\"\n [disabled]=\"disabled(field, form)\"\n [disableInputField]=\"field.disable\"\n [selectedLocations]=\"form.get(field.name)?.value\"\n [submitted]=\"submitted\"\n [services]=\"form.get(field.findLocationField)?.value\"\n [field]=\"field\"\n ></xuilib-find-location>\n </ng-container>\n <ng-container *ngSwitchCase=\"'find-task-name'\">\n <xuilib-find-task-name subTitle=\"\" (taskNameSelected)=\"updateTaskNameControls($event, field)\"\n (taskNameFieldChanged)=\"inputChanged(field)\"\n [submitted]=\"submitted\"\n [disabled]=\"disabled(field, form)\"\n [domain]=\"form.get(field.domainField)?.value\"\n [findTaskNameGroup]=\"form\"\n [selectedTaskName]=\"form.get(field.name).value.taskName\"\n [userIncluded]=\"false\"\n ></xuilib-find-task-name>\n </ng-container>\n <ng-container *ngSwitchCase=\"'find-service'\">\n <xuilib-find-service (serviceFieldChanged)=\"inputChanged(field)\"\n [form]=\"form\"\n [enableAddServiceButton]=\"field.enableAddButton\"\n [disabled]=\"disabled(field, form)\"\n [selectedServices]=\"form.get(field.name)?.value\"\n [services]=\"field.options\"\n [field]=\"field\"\n ></xuilib-find-service>\n </ng-container>\n <ng-container *ngSwitchCase=\"'text-input'\">\n <input class=\"govuk-input\" type=\"text\"\n [formControlName]=\"field.name\"\n [id]=\"field.name\"\n [attr.disabled]=\"disabled(field, form)\"\n (change)=\"fieldChanged(field, form)\"\n [attr.maxlength]=\"field.maxlength ? field.maxlength : null\"\n />\n </ng-container>\n <ng-container *ngSwitchCase=\"'email-input'\">\n <input class=\"govuk-input\" type=\"email\"\n [formControlName]=\"field.name\"\n [id]=\"field.name\"\n [attr.disabled]=\"disabled(field, form)\"\n (change)=\"fieldChanged(field, form)\"\n />\n </ng-container>\n </div>\n </div>\n </ng-container>\n </ng-container>\n </div>\n <hr class=\"govuk-section-break govuk-section-break--m\"/>\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-full\">\n <button\n class=\"govuk-button govuk-!-margin-right-1 govuk-!-margin-bottom-0\"\n type=\"submit\"\n id=\"applyFilter\"\n [disabled]=\"config.enableDisabledButton && form.invalid\"\n >{{config.applyButtonText || 'Apply'}}</button>\n <button *ngIf=\"config.showCancelFilterButton\"\n class=\"govuk-button govuk-button--secondary govuk-!-margin-bottom-0\"\n type=\"button\"\n id=\"cancelFilter\"\n (click)=\"cancelFilter()\">{{ config.cancelButtonText || 'Cancel'}}</button>\n </div>\n </div>\n</form>\n",
2079
+ changeDetection: i0.ChangeDetectionStrategy.OnPush,
2080
+ encapsulation: i0.ViewEncapsulation.None,
2081
+ styles: [".contain-classes .elevated-break{margin-bottom:20px}@media (min-width:40.0625em){.contain-classes .elevated-break{margin-bottom:30px}}.contain-classes .govuk-body--maxWidth480px{max-width:480px}.contain-classes .xui-generic-filter .select-all{margin-bottom:10px}.contain-classes .xui-generic-filter .govuk-checkboxes{display:flex;flex-direction:column;flex-wrap:wrap}.contain-classes .xui-generic-filter .govuk-checkboxes>div{flex-grow:1;flex-shrink:0}.contain-classes .xui-generic-filter__field-title{display:flex;align-items:center;margin-bottom:10px}.contain-classes .govuk-select{width:100%}"]
2082
+ }] }
2083
+ ];
2084
+ /** @nocollapse */
2085
+ GenericFilterComponent.ctorParameters = function () {
2086
+ return [
2087
+ { type: FilterService },
2088
+ { type: forms.FormBuilder }
2089
+ ];
2090
+ };
2091
+ GenericFilterComponent.propDecorators = {
2092
+ config: [{ type: i0.Input }],
2093
+ settings: [{ type: i0.Input }]
2094
+ };
2095
+ return GenericFilterComponent;
2096
+ }());
2097
+
2098
+ /**
2099
+ * @fileoverview added by tsickle
2100
+ * Generated from: lib/components/hmcts-session-dialog/hmcts-session-dialog.component.ts
2101
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
2102
+ */
2103
+ /*
2104
+ * Gov UK Dialog Component
2105
+ * Responsible for displaying dialog layout
2106
+ * using ng-content to display content from parent
2107
+ * */
2108
+ var HmctsSessionDialogComponent = /** @class */ (function () {
2109
+ function HmctsSessionDialogComponent() {
2110
+ this.close = new i0.EventEmitter();
2111
+ }
2112
+ /**
2113
+ * @return {?}
2114
+ */
2115
+ HmctsSessionDialogComponent.prototype.onClose = /**
2116
+ * @return {?}
2117
+ */
2118
+ function () {
2119
+ this.close.emit();
2120
+ };
2121
+ HmctsSessionDialogComponent.decorators = [
2122
+ { type: i0.Component, args: [{
2123
+ selector: 'xuilib-session-dialog',
2124
+ template: "<div class=\"gem-c-modal-dialogue\" data-module=\"modal-dialogue\" id=\"modal-default\" style=\"display: block;\">\n <div class=\"gem-c-modal-dialogue__overlay\"></div>\n <dialog class=\"gem-c-modal-dialogue__box\" aria-modal=\"true\" role=\"dialog\" tabindex=\"0\" [ngStyle]=\"{'margin-top': positionTop}\">\n <div class=\"gem-c-modal-dialogue__header\">\n <svg role=\"presentation\" focusable=\"false\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 38 38\" height=\"33\" width=\"33\">\n <style type=\"text/css\">\n .st0{fill:#FFFFFF;}\n </style>\n <g id=\"_4_-_granular_components_warning_icon\" transform=\"translate(0.5 0.5)\">\n <g id=\"Warning_icon\" transform=\"translate(0)\">\n <path id=\"Exclusion_1\" class=\"st0\" d=\"M18.5,37.5c-5.04,0.01-9.88-1.99-13.44-5.57C1.49,28.38-0.51,23.54-0.5,18.5\n c-0.01-5.04,1.99-9.88,5.56-13.43C8.62,1.49,13.46-0.51,18.5-0.5c5.04-0.01,9.88,1.99,13.44,5.56c3.57,3.56,5.58,8.39,5.56,13.44\n c0.01,5.04-1.99,9.88-5.56,13.44C28.38,35.51,23.54,37.51,18.5,37.5z M18.52,24.29c-0.4,0-0.8,0.08-1.17,0.23\n c-0.36,0.15-0.69,0.37-0.97,0.64c-0.28,0.27-0.5,0.59-0.65,0.95c-0.16,0.36-0.24,0.76-0.23,1.15c0,0.4,0.08,0.8,0.23,1.17\n c0.15,0.36,0.37,0.68,0.65,0.96c0.28,0.27,0.61,0.49,0.97,0.64c0.37,0.16,0.77,0.24,1.17,0.24c0.4,0,0.79-0.08,1.15-0.24\n c0.35-0.15,0.67-0.37,0.95-0.64c0.27-0.27,0.49-0.6,0.64-0.96c0.16-0.37,0.24-0.77,0.23-1.17c0-0.4-0.08-0.79-0.23-1.15\n c-0.15-0.35-0.37-0.67-0.64-0.95c-0.27-0.27-0.6-0.49-0.95-0.64C19.31,24.37,18.92,24.29,18.52,24.29L18.52,24.29z M16.11,7.5\n l0.42,14.87h3.91L20.86,7.5H16.11z\"/>\n </g>\n </g>\n </svg>\n <div class=\"gem-c-modal-dialogue__title\">We are about to sign you out</div>\n </div>\n <div class=\"gem-c-modal-dialogue__content\">\n <ng-content></ng-content>\n </div>\n </dialog>\n</div>\n",
2125
+ styles: [".gem-c-modal-dialogue{display:none;position:fixed;z-index:1000;top:0;left:0;width:100%;height:100%;overflow-x:hidden;overflow-y:scroll;outline:0}.gem-c-modal-dialogue__box{display:block;position:fixed;background:#fff;top:0;right:0;bottom:0;left:0;width:100%;height:100%;margin:0;padding:0;overflow-y:auto;border:0;font-family:\"GDS Transport\",Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;font-size:1rem;line-height:1.25;color:#0b0c0c}.gem-c-modal-dialogue__box:focus{outline:#fd0 solid 3px}@media (min-width:40.0625em){.gem-c-modal-dialogue__box{font-size:1.1875rem;line-height:1.3157894737;position:relative;top:inherit;right:inherit;bottom:inherit;left:inherit;width:auto;max-width:640px;height:auto;margin:30px auto;border:2px solid #0b0c0c}}@media print{.gem-c-modal-dialogue__box{font-family:sans-serif;font-size:14pt;line-height:1.15;color:#000}}@media (min-width:40.0625em) and (max-width:64em){.gem-c-modal-dialogue__box--wide{margin:30px}}.gem-c-modal-dialogue__overlay{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:.8;background:#0b0c0c;pointer-events:none;touch-action:none}@media screen{.gem-o-template--modal{overflow-y:inherit}}.gem-o-template__body--modal{overflow:hidden}.gem-o-template__body--blur .govuk-footer,.gem-o-template__body--blur .govuk-header,.gem-o-template__body--blur .govuk-main-wrapper,.gem-o-template__body--blur .govuk-phase-banner,.gem-o-template__body--blur .govuk-skip-link,.gem-o-template__body--blur .govuk-width-container .govuk-back-link{filter:blur(2px)}.govuk-warning-text__icon{margin:0 0 0 12px}.gem-c-modal-dialogue__header{padding:9px 15px 10px;color:#fff;background:#d4351d;display:flex}.gem-c-modal-dialogue__title{margin:5px 0 4px 12px}.gem-c-modal-dialogue__logotype-crown{fill:currentColor;vertical-align:middle}.gem-c-modal-dialogue__logotype-crown-fallback-image{width:30px;height:26px;border:0;vertical-align:middle}.gem-c-modal-dialogue__content{padding:15px;background:#fff}.gem-c-modal-dialogue__close-button{position:absolute;top:0;right:0;width:44px;height:44px;border:0;color:#fff;background:0 0;cursor:pointer;font-family:\"GDS Transport\",Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:700;font-size:1.5rem;line-height:1.3}@media (min-width:40.0625em){.gem-c-modal-dialogue__box--wide{max-width:960px}.gem-c-modal-dialogue__close-button{font-size:2.25rem;line-height:1.3}}@media print{.gem-c-modal-dialogue__close-button{font-family:sans-serif;font-size:24pt;line-height:1.3}}@media (max-width:40.0525em){.gem-c-modal-dialogue__close-button{font-size:36px;line-height:1.3}}.gem-c-modal-dialogue__close-button:focus,.gem-c-modal-dialogue__close-button:hover{color:#0b0c0c;box-shadow:0 -2px #fd0,0 4px #0b0c0c;text-decoration:none;outline:0;background:#fd0}"]
2126
+ }] }
2127
+ ];
2128
+ /** @nocollapse */
2129
+ HmctsSessionDialogComponent.ctorParameters = function () { return []; };
2130
+ HmctsSessionDialogComponent.propDecorators = {
2131
+ positionTop: [{ type: i0.Input }],
2132
+ close: [{ type: i0.Output }]
2133
+ };
2134
+ return HmctsSessionDialogComponent;
2135
+ }());
2136
+
2137
+ /**
2138
+ * @fileoverview added by tsickle
2139
+ * Generated from: lib/components/invite-user-form/invite-user-form.component.ts
2140
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
2141
+ */
2142
+ var InviteUserFormComponent = /** @class */ (function () {
2143
+ function InviteUserFormComponent() {
2144
+ this.submitForm = new i0.EventEmitter();
2145
+ }
2146
+ Object.defineProperty(InviteUserFormComponent.prototype, "errorMessages", {
2147
+ set: /**
2148
+ * @param {?} value
2149
+ * @return {?}
2150
+ */ function (value) {
2151
+ this.isInvalid = value || {};
2152
+ },
2153
+ enumerable: true,
2154
+ configurable: true
2155
+ });
2156
+ /**
2157
+ * @return {?}
2158
+ */
2159
+ InviteUserFormComponent.prototype.onSubmit = /**
2160
+ * @return {?}
2161
+ */
2162
+ function () {
2163
+ this.submitForm.emit();
2164
+ };
2165
+ InviteUserFormComponent.decorators = [
2166
+ { type: i0.Component, args: [{
2167
+ selector: 'xuilib-invite-user-form',
2168
+ template: "\n<form [formGroup]=\"inviteUserForm\" (ngSubmit)=\"onSubmit()\" >\n\n <xuilib-gov-uk-input\n [config]=\"{label: 'First name', hint: 'Include all middle names.', name: 'firstName', id: 'firstName', type: 'text', classes: 'testClass'}\"\n [errorMessage]=\"isInvalid.firstName\"\n [group]=\"inviteUserForm\">\n </xuilib-gov-uk-input>\n\n <xuilib-gov-uk-input\n [config]=\"{label: 'Last name', name: 'lastName', id: 'lastName', type: 'text'}\"\n [errorMessage]=\"isInvalid.lastName\"\n [group]=\"inviteUserForm\">\n </xuilib-gov-uk-input>\n\n <xuilib-gov-uk-input\n [config]=\"{label: 'Email address', name: 'email', id: 'email', type: 'email'}\"\n [errorMessage]=\"isInvalid.email\"\n [group]=\"inviteUserForm\">\n </xuilib-gov-uk-input>\n\n <xuilib-invite-permission-form [inviteUserForm]=\"inviteUserForm\" [errorMessages]=\"isInvalid.roles\">\n </xuilib-invite-permission-form>\n\n <button type=\"submit\" class=\"govuk-button\">\n Send invitation\n </button>\n</form>\n"
2169
+ }] }
2170
+ ];
2171
+ InviteUserFormComponent.propDecorators = {
2172
+ submitForm: [{ type: i0.Output }],
2173
+ inviteUserForm: [{ type: i0.Input }],
2174
+ errorMessages: [{ type: i0.Input }]
2175
+ };
2176
+ return InviteUserFormComponent;
2177
+ }());
2178
+
2179
+ /**
2180
+ * @fileoverview added by tsickle
1751
2181
  * Generated from: lib/components/invite-user-permissions/invite-user-permission.component.ts
1752
2182
  * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1753
2183
  */
@@ -3053,6 +3483,7 @@
3053
3483
  this.users = []; // users of this organisation the cases can be shared with
3054
3484
  // users of this organisation the cases can be shared with
3055
3485
  this.confirmLink = '';
3486
+ this.showRemoveUsers = false;
3056
3487
  this.unselect = new i0.EventEmitter();
3057
3488
  this.synchronizeStore = new i0.EventEmitter();
3058
3489
  }
@@ -3215,8 +3646,8 @@
3215
3646
  ShareCaseComponent.decorators = [
3216
3647
  { type: i0.Component, args: [{
3217
3648
  selector: 'xuilib-share-case',
3218
- template: "<div id=\"add-user\">\n <label class=\"govuk-label govuk-!-font-weight-bold\" for=\"add-user-input\">Enter email address</label>\n <span id=\"add-user-hint\" class=\"govuk-hint\">\n Search by name or email address. You can only add people from your organisation individually - but you can add as many as you like.\n </span>\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-two-thirds\">\n <xuilib-user-select\n id=\"add-user-input\"\n aria-describedby=\"add-user-hint\"\n [users]=\"users\"\n (selected)=\"onSelectedUser($event)\">\n </xuilib-user-select>\n </div>\n <div class=\"govuk-grid-column-one-thirds\">\n <button id=\"btn-add-user\" (click)=\"addUser()\" class=\"govuk-button\" [disabled]=\"isDisabledAdd()\" title=\"Add user to the case\">Add</button>\n </div>\n </div>\n <details id=\"add-user-help\" class=\"govuk-details\" data-module=\"govuk-details\">\n <summary class=\"govuk-details__summary\">\n <span id=\"content-why-can-not-find-email\" class=\"govuk-details__summary-text\">\n Can\u2019t find an email address?\n </span>\n </summary>\n <div id=\"content-reason-can-not-find-email\" class=\"govuk-details__text\">\n If you can\u2019t find your colleague\u2019s email address, they will need to complete their registration. Contact your\n administrator for help.\n </div>\n </details>\n</div>\n\n<div id=\"cases\">\n <h3 id=\"title-selected-cases\" class=\"govuk-heading-m\">Selected cases</h3>\n <div *ngIf=\"shareCases && shareCases.length > 0\" class=\"govuk-accordion\" data-module=\"govuk-accordion\" id=\"accordion-with-summary-sections\">\n <xuilib-selected-case-list\n [shareCases$]=\"shareCases$\"\n [removeUserFromCaseToggleOn]=\"removeUserFromCaseToggleOn\"\n (unselect)=\"onUnselect($event)\"\n (synchronizeStore)=\"onSynchronizeStore($event)\"\n >\n </xuilib-selected-case-list>\n </div>\n\n <div id=\"noCaseDisplay\" *ngIf=\"shareCases && shareCases.length === 0\" class=\"govuk-hint\">\n No cases to display.\n </div>\n\n</div>\n\n<div id=\"share-case-nav\">\n <button class=\"govuk-button\" [disabled]=\"isDisabledContinue()\" title=\"Continue\" [routerLink]=\"confirmLink\">Continue</button>\n</div>\n",
3219
- styles: [""]
3649
+ template: "<div id=\"add-user\">\n <div class=\"govuk-form-group\">\n <label class=\"govuk-label govuk-!-font-weight-bold\" for=\"add-user-input\">{{addUserLabel}}</label>\n <span id=\"add-user-hint\" class=\"govuk-hint\">\n Search by name or email address. You can share access with as many people as you need.\n </span>\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-two-thirds\">\n <xuilib-user-select\n id=\"add-user-input\"\n aria-describedby=\"add-user-hint\"\n [users]=\"users\"\n (selected)=\"onSelectedUser($event)\">\n </xuilib-user-select>\n </div>\n <div class=\"govuk-grid-column-one-thirds\">\n <button id=\"btn-add-user\" (click)=\"addUser()\" class=\"govuk-button govuk-button--secondary\" [disabled]=\"isDisabledAdd()\" title=\"Add user to selected cases\">Add</button>\n </div>\n </div>\n <details id=\"add-user-help\" class=\"govuk-details\" data-module=\"govuk-details\">\n <summary class=\"govuk-details__summary\">\n <span id=\"content-why-can-not-find-email\" class=\"govuk-details__summary-text\">\n Can't find an email address?\n </span>\n </summary>\n <div id=\"content-reason-can-not-find-email\" class=\"govuk-details__text\">\n If you can't find your colleague's email address, they will need to complete their registration. Contact your\n administrator for help.\n </div>\n </details>\n </div>\n <div class=\"govuk-form-group\" *ngIf=\"showRemoveUsers\">\n <label class=\"govuk-label govuk-!-font-weight-bold\" for=\"remove-user-input\">Remove a person from all cases</label>\n <span id=\"remove-user-hint\" class=\"govuk-hint\">\n Select a person to remove them from all selected cases.\n </span>\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-two-thirds\">\n <select class=\"govuk-select\" id=\"remove-user-input\" aria-describedby=\"remove-user-hint\">\n <option value=\"{{user}}\" *ngFor=\"let user of users\">{{user.email}}</option>\n </select>\n </div>\n <div class=\"govuk-grid-column-one-thirds\">\n <button id=\"btn-remove-user\" class=\"govuk-button govuk-button--secondary\" title=\"Remove user from selected cases\">Remove</button>\n </div>\n </div>\n </div>\n</div>\n\n<div id=\"cases\">\n <h3 id=\"title-selected-cases\" class=\"govuk-heading-m\">Selected cases</h3>\n <div *ngIf=\"shareCases && shareCases.length > 0\" class=\"govuk-accordion\" data-module=\"govuk-accordion\" id=\"accordion-with-summary-sections\">\n <xuilib-selected-case-list\n [shareCases$]=\"shareCases$\"\n [removeUserFromCaseToggleOn]=\"removeUserFromCaseToggleOn\"\n (unselect)=\"onUnselect($event)\"\n (synchronizeStore)=\"onSynchronizeStore($event)\"\n >\n </xuilib-selected-case-list>\n </div>\n\n <div id=\"noCaseDisplay\" *ngIf=\"shareCases && shareCases.length === 0\" class=\"govuk-hint\">\n No cases to display.\n </div>\n\n</div>\n\n<div id=\"share-case-nav\" class=\"govuk-button-group\">\n <button class=\"govuk-button\" data-module=\"govuk-button\" [disabled]=\"isDisabledContinue()\" title=\"Continue\" [routerLink]=\"confirmLink\">Continue</button>\n <button class=\"govuk-button govuk-button--secondary\" data-module=\"govuk-button\" title=\"Cancel\">Cancel</button>\n</div>\n",
3650
+ styles: ["select{width:100%}"]
3220
3651
  }] }
3221
3652
  ];
3222
3653
  /** @nocollapse */
@@ -3230,6 +3661,8 @@
3230
3661
  shareCases$: [{ type: i0.Input }],
3231
3662
  users: [{ type: i0.Input }],
3232
3663
  confirmLink: [{ type: i0.Input }],
3664
+ addUserLabel: [{ type: i0.Input }],
3665
+ showRemoveUsers: [{ type: i0.Input }],
3233
3666
  unselect: [{ type: i0.Output }],
3234
3667
  synchronizeStore: [{ type: i0.Output }],
3235
3668
  userSelect: [{ type: i0.ViewChild, args: [UserSelectComponent,] }]
@@ -3767,59 +4200,136 @@
3767
4200
 
3768
4201
  /**
3769
4202
  * @fileoverview added by tsickle
3770
- * Generated from: lib/services/locations/location.service.ts
4203
+ * Generated from: lib/models/contact-details.model.ts
3771
4204
  * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
3772
4205
  */
3773
- var LocationService = /** @class */ (function () {
3774
- function LocationService(http) {
3775
- this.http = http;
4206
+ /** @enum {string} */
4207
+ var BadgeColour = {
4208
+ BADGE_RED: "hmcts-badge--red",
4209
+ BADGE_BLUE: "hmcts-badge--blue",
4210
+ BADGE_GREEN: "hmcts-badge--green",
4211
+ };
4212
+
4213
+ /**
4214
+ * @fileoverview added by tsickle
4215
+ * Generated from: lib/models/feature-user.ts
4216
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4217
+ */
4218
+ var AnonymousFeatureUser = /** @class */ (function () {
4219
+ function AnonymousFeatureUser() {
3776
4220
  }
3777
- /**
3778
- * @description getAllLocations from service Ids/location type/search term
3779
- * @param serviceIds: SSCS | SSCS,IA split with ','
3780
- * @param locationType: optional | hearing | case_management
3781
- * @param searchTerm: any search term for postcode | site name | venue name |court name | court address etc.
3782
- * @return Observable<LocationByEPIMMSModel[]>: Array of locationModel in Observable
3783
- */
3784
- /**
3785
- * \@description getAllLocations from service Ids/location type/search term
3786
- * @param {?} serviceIds
3787
- * @param {?} locationType
3788
- * @param {?} searchTerm
3789
- * @return {?} Observable<LocationByEPIMMSModel[]>: Array of locationModel in Observable
3790
- */
3791
- LocationService.prototype.getAllLocations = /**
3792
- * \@description getAllLocations from service Ids/location type/search term
3793
- * @param {?} serviceIds
3794
- * @param {?} locationType
3795
- * @param {?} searchTerm
3796
- * @return {?} Observable<LocationByEPIMMSModel[]>: Array of locationModel in Observable
3797
- */
3798
- function (serviceIds, locationType, searchTerm) {
3799
- return this.http.get("api/locations/getLocations?serviceIds=" + serviceIds + "&locationType=" + locationType + "&searchTerm=" + searchTerm);
3800
- };
3801
- /**
3802
- * @description searchLocations from service Ids/location type/search term
3803
- * @param serviceIds: BBA3 | BBA3,BFA1 split with ','
3804
- * @param locationType: optional | hearing | case_management
3805
- * @param searchTerm: any search term for postcode | site name | venue name |court name | court address etc.
3806
- * @return Observable<LocationByEPIMMSModel[]>: Array of locationModel in Observable
3807
- */
3808
- /**
3809
- * \@description searchLocations from service Ids/location type/search term
3810
- * @param {?} serviceIds
3811
- * @param {?} locationType
3812
- * @param {?} searchTerm
3813
- * @return {?} Observable<LocationByEPIMMSModel[]>: Array of locationModel in Observable
3814
- */
3815
- LocationService.prototype.searchLocations = /**
3816
- * \@description searchLocations from service Ids/location type/search term
3817
- * @param {?} serviceIds
3818
- * @param {?} locationType
3819
- * @param {?} searchTerm
3820
- * @return {?} Observable<LocationByEPIMMSModel[]>: Array of locationModel in Observable
3821
- */
3822
- function (serviceIds, locationType, searchTerm) {
4221
+ return AnonymousFeatureUser;
4222
+ }());
4223
+ var LoggedInFeatureUser = /** @class */ (function () {
4224
+ function LoggedInFeatureUser() {
4225
+ }
4226
+ return LoggedInFeatureUser;
4227
+ }());
4228
+
4229
+ /**
4230
+ * @fileoverview added by tsickle
4231
+ * Generated from: lib/models/location.model.ts
4232
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4233
+ */
4234
+ /** @enum {string} */
4235
+ var BookingCheckType = {
4236
+ NO_CHECK: "NO_CHECK",
4237
+ BOOKINGS_AND_BASE: "BOOKINGS_AND_BASE",
4238
+ POSSIBLE_BOOKINGS: "POSSIBLE_BOOKINGS",
4239
+ };
4240
+
4241
+ /**
4242
+ * @fileoverview added by tsickle
4243
+ * Generated from: lib/models/person.model.ts
4244
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4245
+ */
4246
+ /** @enum {string} */
4247
+ var PersonRole = {
4248
+ JUDICIAL: "Judicial",
4249
+ CASEWORKER: "Legal Ops",
4250
+ ADMIN: "Admin",
4251
+ CTSC: "CTSC User",
4252
+ ALL: "All",
4253
+ };
4254
+ /** @enum {string} */
4255
+ var RoleCategory = {
4256
+ JUDICIAL: "JUDICIAL",
4257
+ CASEWORKER: "LEGAL_OPERATIONS",
4258
+ ADMIN: "ADMIN",
4259
+ CTSC: "CTSC",
4260
+ ALL: "ALL",
4261
+ };
4262
+
4263
+ /**
4264
+ * @fileoverview added by tsickle
4265
+ * Generated from: lib/models/filter.model.ts
4266
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4267
+ */
4268
+ var RadioFilterFieldConfig = /** @class */ (function () {
4269
+ function RadioFilterFieldConfig() {
4270
+ }
4271
+ return RadioFilterFieldConfig;
4272
+ }());
4273
+
4274
+ /**
4275
+ * @fileoverview added by tsickle
4276
+ * Generated from: lib/services/locations/location.service.ts
4277
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4278
+ */
4279
+ var LocationService = /** @class */ (function () {
4280
+ function LocationService(http) {
4281
+ this.http = http;
4282
+ }
4283
+ /**
4284
+ * @description getAllLocations from service Ids/location type/search term
4285
+ * @param serviceIds: SSCS | SSCS,IA split with ','
4286
+ * @param locationType: optional | hearing | case_management
4287
+ * @param searchTerm: any search term for postcode | site name | venue name |court name | court address etc.
4288
+ * @return Observable<LocationByEPIMMSModel[]>: Array of locationModel in Observable
4289
+ */
4290
+ /**
4291
+ * \@description getAllLocations from service Ids/location type/search term
4292
+ * @param {?} serviceIds
4293
+ * @param {?} locationType
4294
+ * @param {?} searchTerm
4295
+ * @param {?} userLocations
4296
+ * @param {?} bookingLocations
4297
+ * @return {?} Observable<LocationByEPIMMSModel[]>: Array of locationModel in Observable
4298
+ */
4299
+ LocationService.prototype.getAllLocations = /**
4300
+ * \@description getAllLocations from service Ids/location type/search term
4301
+ * @param {?} serviceIds
4302
+ * @param {?} locationType
4303
+ * @param {?} searchTerm
4304
+ * @param {?} userLocations
4305
+ * @param {?} bookingLocations
4306
+ * @return {?} Observable<LocationByEPIMMSModel[]>: Array of locationModel in Observable
4307
+ */
4308
+ function (serviceIds, locationType, searchTerm, userLocations, bookingLocations) {
4309
+ return this.http.post("api/locations/getLocations", { serviceIds: serviceIds, locationType: locationType, searchTerm: searchTerm, userLocations: userLocations, bookingLocations: bookingLocations });
4310
+ };
4311
+ /**
4312
+ * @description searchLocations from service Ids/location type/search term
4313
+ * @param serviceIds: BBA3 | BBA3,BFA1 split with ','
4314
+ * @param locationType: optional | hearing | case_management
4315
+ * @param searchTerm: any search term for postcode | site name | venue name |court name | court address etc.
4316
+ * @return Observable<LocationByEPIMMSModel[]>: Array of locationModel in Observable
4317
+ */
4318
+ /**
4319
+ * \@description searchLocations from service Ids/location type/search term
4320
+ * @param {?} serviceIds
4321
+ * @param {?} locationType
4322
+ * @param {?} searchTerm
4323
+ * @return {?} Observable<LocationByEPIMMSModel[]>: Array of locationModel in Observable
4324
+ */
4325
+ LocationService.prototype.searchLocations = /**
4326
+ * \@description searchLocations from service Ids/location type/search term
4327
+ * @param {?} serviceIds
4328
+ * @param {?} locationType
4329
+ * @param {?} searchTerm
4330
+ * @return {?} Observable<LocationByEPIMMSModel[]>: Array of locationModel in Observable
4331
+ */
4332
+ function (serviceIds, locationType, searchTerm) {
3823
4333
  return this.http.get("api/prd/location/getLocations?serviceIds=" + serviceIds + "&locationType=" + locationType + "&searchTerm=" + searchTerm);
3824
4334
  };
3825
4335
  LocationService.decorators = [
@@ -3837,14 +4347,110 @@
3837
4347
  return LocationService;
3838
4348
  }());
3839
4349
 
4350
+ /**
4351
+ * @fileoverview added by tsickle
4352
+ * Generated from: lib/services/storage/session-storage/session-storage.service.ts
4353
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4354
+ */
4355
+ var SessionStorageService = /** @class */ (function () {
4356
+ function SessionStorageService() {
4357
+ }
4358
+ /**
4359
+ * Get an item from the session storage.
4360
+ * If remove is true, the item will be removed once read
4361
+ * @param removeAfterRead removed the key once it has been read
4362
+ */
4363
+ /**
4364
+ * Get an item from the session storage.
4365
+ * If remove is true, the item will be removed once read
4366
+ * @param {?} key
4367
+ * @param {?=} removeAfterRead removed the key once it has been read
4368
+ * @return {?}
4369
+ */
4370
+ SessionStorageService.prototype.getItem = /**
4371
+ * Get an item from the session storage.
4372
+ * If remove is true, the item will be removed once read
4373
+ * @param {?} key
4374
+ * @param {?=} removeAfterRead removed the key once it has been read
4375
+ * @return {?}
4376
+ */
4377
+ function (key, removeAfterRead) {
4378
+ if (removeAfterRead === void 0) {
4379
+ removeAfterRead = false;
4380
+ }
4381
+ /** @type {?} */
4382
+ var item = sessionStorage.getItem(key);
4383
+ if (removeAfterRead) {
4384
+ this.removeItem(key);
4385
+ }
4386
+ return item;
4387
+ };
4388
+ /**
4389
+ * Set an item in the session storage.
4390
+ */
4391
+ /**
4392
+ * Set an item in the session storage.
4393
+ * @param {?} key
4394
+ * @param {?} value
4395
+ * @return {?}
4396
+ */
4397
+ SessionStorageService.prototype.setItem = /**
4398
+ * Set an item in the session storage.
4399
+ * @param {?} key
4400
+ * @param {?} value
4401
+ * @return {?}
4402
+ */
4403
+ function (key, value) {
4404
+ sessionStorage.setItem(key, value);
4405
+ };
4406
+ /**
4407
+ * Remove an item in the session storage.
4408
+ */
4409
+ /**
4410
+ * Remove an item in the session storage.
4411
+ * @param {?} key
4412
+ * @return {?}
4413
+ */
4414
+ SessionStorageService.prototype.removeItem = /**
4415
+ * Remove an item in the session storage.
4416
+ * @param {?} key
4417
+ * @return {?}
4418
+ */
4419
+ function (key) {
4420
+ sessionStorage.removeItem(key);
4421
+ };
4422
+ /**
4423
+ * Clear all the items held in session storage.
4424
+ */
4425
+ /**
4426
+ * Clear all the items held in session storage.
4427
+ * @return {?}
4428
+ */
4429
+ SessionStorageService.prototype.clear = /**
4430
+ * Clear all the items held in session storage.
4431
+ * @return {?}
4432
+ */
4433
+ function () {
4434
+ sessionStorage.clear();
4435
+ };
4436
+ SessionStorageService.decorators = [
4437
+ { type: i0.Injectable, args: [{
4438
+ providedIn: 'root'
4439
+ },] }
4440
+ ];
4441
+ /** @nocollapse */ SessionStorageService.ngInjectableDef = i0.defineInjectable({ factory: function SessionStorageService_Factory() { return new SessionStorageService(); }, token: SessionStorageService, providedIn: "root" });
4442
+ return SessionStorageService;
4443
+ }());
4444
+
3840
4445
  /**
3841
4446
  * @fileoverview added by tsickle
3842
4447
  * Generated from: lib/components/search-location/search-location.component.ts
3843
4448
  * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
3844
4449
  */
3845
4450
  var SearchLocationComponent = /** @class */ (function () {
3846
- function SearchLocationComponent(locationService, fb, cd) {
4451
+ function SearchLocationComponent(locationService, sessionStorageService, fb, cd) {
3847
4452
  this.locationService = locationService;
4453
+ this.sessionStorageService = sessionStorageService;
3848
4454
  this.fb = fb;
3849
4455
  this.cd = cd;
3850
4456
  this.disabled = null;
@@ -3996,7 +4602,22 @@
3996
4602
  * @return {?}
3997
4603
  */
3998
4604
  function (term) {
3999
- return this.locationService.getAllLocations(this.serviceIds, this.locationType, term);
4605
+ /** @type {?} */
4606
+ var userLocations;
4607
+ /** @type {?} */
4608
+ var bookingLocations;
4609
+ // Booking type info - can create more
4610
+ // NO_CHECK - All work - Do not filter out locations - Default assumption
4611
+ // ONLY_BOOKINGS - My work - Try to only show base locations/booking locations
4612
+ // POSSIBLE_BOOKINGS - Create booking screen - Show only potential bookings
4613
+ if (this.bookingCheck === BookingCheckType.BOOKINGS_AND_BASE) {
4614
+ userLocations = JSON.parse(this.sessionStorageService.getItem('userLocations'));
4615
+ bookingLocations = JSON.parse(this.sessionStorageService.getItem('bookingLocations'));
4616
+ }
4617
+ else if (this.bookingCheck === BookingCheckType.POSSIBLE_BOOKINGS) {
4618
+ this.serviceIds = this.serviceIds && this.serviceIds.length ? this.serviceIds : JSON.parse(this.sessionStorageService.getItem('bookableServices'));
4619
+ }
4620
+ return this.locationService.getAllLocations(this.serviceIds, this.locationType, term, userLocations, bookingLocations);
4000
4621
  };
4001
4622
  /**
4002
4623
  * @return {?}
@@ -4036,13 +4657,14 @@
4036
4657
  { type: i0.Component, args: [{
4037
4658
  selector: 'exui-search-location',
4038
4659
  template: "<div class=\"auto-complete-container\">\n <input\n id=\"inputLocationSearch\"\n (input)=\"onInput()\"\n [formControl]=\"form.controls.searchTerm\"\n [matAutocomplete]=\"autoSearchLocation\"\n class=\"govuk-input\"\n [attr.disabled]=\"disabled\">\n <mat-autocomplete class=\"mat-autocomplete-panel-extend\" autoActiveFirstOption #autoSearchLocation=\"matAutocomplete\">\n <mat-option *ngFor=\"let location of locations\"\n (onSelectionChange)=\"onSelectionChange(location)\">\n {{ location.site_name }}\n </mat-option>\n <mat-option *ngIf=\"!locations.length && showAutocomplete && term && term.length >= this.minSearchCharacters\">No results found</mat-option>\n </mat-autocomplete>\n</div>\n",
4039
- styles: [".autocomplete__input--show-all-values{padding:5px 34px 5px 5px;cursor:pointer}.autocomplete__dropdown-arrow-down{z-index:-1;display:inline-block;position:absolute;right:8px;width:24px;height:24px;top:10px}.autocomplete__menu{background-color:#fff;border:2px solid #0b0c0c;border-top:0;color:#0b0c0c;margin:0;max-height:342px;overflow-x:hidden;padding:0;width:100%;width:calc(100% - 4px)}.autocomplete__menu--visible{display:block}.autocomplete__menu--hidden{display:none}.autocomplete__menu--overlay{box-shadow:rgba(0,0,0,.256863) 0 2px 6px;left:0;position:absolute;top:100%;z-index:100}.autocomplete__menu--inline{position:relative}.autocomplete__option{border-bottom:solid #b1b4b6;border-width:1px 0;cursor:pointer;display:block;position:relative}.autocomplete__option>*{pointer-events:none}.autocomplete__option:first-of-type{border-top-width:0}.autocomplete__option:last-of-type{border-bottom-width:0}.autocomplete__option--odd{background-color:#fafafa}.autocomplete__option--focused,.autocomplete__option:hover{background-color:#1d70b8;border-color:#1d70b8;color:#fff;outline:0}.autocomplete__option--no-results{background-color:#fafafa;color:#646b6f;cursor:not-allowed}.autocomplete__hint,.autocomplete__input,.autocomplete__option{font-size:13px;line-height:1.25}.autocomplete__hint,.autocomplete__option{padding:5px}@media (min-width:641px){.autocomplete__hint,.autocomplete__input,.autocomplete__option{font-size:13px;line-height:1.31579}}.div-action{display:inline-block}.add-location{display:inline}.remove-location-button{margin:5px}.hide-autocomplete{display:none}.auto-complete-container{min-width:550px;display:inline-block;margin-right:4px}.autocomplete__input{line-height:24px;font-size:19px}"]
4660
+ styles: [".autocomplete__input--show-all-values{padding:5px 34px 5px 5px;cursor:pointer}.autocomplete__dropdown-arrow-down{z-index:-1;display:inline-block;position:absolute;right:8px;width:24px;height:24px;top:10px}.autocomplete__menu{background-color:#fff;border:2px solid #0b0c0c;border-top:0;color:#0b0c0c;margin:0;max-height:342px;overflow-x:hidden;padding:0;width:calc(100% - 4px)}.autocomplete__menu--visible{display:block}.autocomplete__menu--hidden{display:none}.autocomplete__menu--overlay{box-shadow:rgba(0,0,0,.256863) 0 2px 6px;left:0;position:absolute;top:100%;z-index:100}.autocomplete__menu--inline{position:relative}.autocomplete__option{border-bottom:solid #b1b4b6;border-width:1px 0;cursor:pointer;display:block;position:relative}.autocomplete__option>*{pointer-events:none}.autocomplete__option:first-of-type{border-top-width:0}.autocomplete__option:last-of-type{border-bottom-width:0}.autocomplete__option--odd{background-color:#fafafa}.autocomplete__option--focused,.autocomplete__option:hover{background-color:#1d70b8;border-color:#1d70b8;color:#fff;outline:0}.autocomplete__option--no-results{background-color:#fafafa;color:#646b6f;cursor:not-allowed}.autocomplete__hint,.autocomplete__input,.autocomplete__option{font-size:13px;line-height:1.25}.autocomplete__hint,.autocomplete__option{padding:5px}@media (min-width:641px){.autocomplete__hint,.autocomplete__input,.autocomplete__option{font-size:13px;line-height:1.31579}}.div-action{display:inline-block}.add-location{display:inline}.remove-location-button{margin:5px}.hide-autocomplete{display:none}.auto-complete-container{display:inline-block;margin-right:4px;width:calc(100% - 4px)}.autocomplete__input{line-height:24px;font-size:19px}"]
4040
4661
  }] }
4041
4662
  ];
4042
4663
  /** @nocollapse */
4043
4664
  SearchLocationComponent.ctorParameters = function () {
4044
4665
  return [
4045
4666
  { type: LocationService },
4667
+ { type: SessionStorageService },
4046
4668
  { type: forms.FormBuilder },
4047
4669
  { type: i0.ChangeDetectorRef }
4048
4670
  ];
@@ -4058,6 +4680,7 @@
4058
4680
  form: [{ type: i0.Input }],
4059
4681
  showAutocomplete: [{ type: i0.Input }],
4060
4682
  locations: [{ type: i0.Input }],
4683
+ bookingCheck: [{ type: i0.Input }],
4061
4684
  locationSelected: [{ type: i0.Output }],
4062
4685
  locationInputChanged: [{ type: i0.Output }],
4063
4686
  searchLocationChanged: [{ type: i0.Output }],
@@ -4137,6 +4760,19 @@
4137
4760
  enumerable: true,
4138
4761
  configurable: true
4139
4762
  });
4763
+ /**
4764
+ * @return {?}
4765
+ */
4766
+ FindLocationComponent.prototype.ngOnInit = /**
4767
+ * @return {?}
4768
+ */
4769
+ function () {
4770
+ // implemented to get rid of undefined values
4771
+ this.selectedLocations = this.selectedLocations.filter(( /**
4772
+ * @param {?} location
4773
+ * @return {?}
4774
+ */function (location) { return location.epimms_id; }));
4775
+ };
4140
4776
  /**
4141
4777
  * @return {?}
4142
4778
  */
@@ -4278,8 +4914,8 @@
4278
4914
  FindLocationComponent.decorators = [
4279
4915
  { type: i0.Component, args: [{
4280
4916
  selector: 'xuilib-find-location',
4281
- template: "<div class=\"location-picker-custom\">\n <div class=\"search-location\">\n <div>\n <label id=\"input-selected-location-label\" *ngIf=\"locationTitle\">{{locationTitle}}</label>\n </div>\n <exui-search-location class=\"search-location\"\n [locations]=\"locations\"\n [selectedLocations]=\"selectedLocations\"\n [singleMode]=\"field.maxSelected === 1\"\n [delay]=\"300\"\n [disabled]=\"disabled\"\n [serviceIds]=\"serviceIds\"\n (locationInputChanged)=\"onInputChanged($event)\"\n (locationSelected)=\"onLocationSelected($event)\"\n (searchLocationChanged)=\"onSearchInputChanged()\"\n [locationType]=\"'case-management'\"></exui-search-location>\n <a href=\"javascript:void(0)\" (click)=\"addLocation()\" class=\"govuk-button\" data-module=\"govuk-button\" *ngIf=\"enableAddLocationButton\">\n Add location\n </a>\n </div>\n <ul class=\"hmcts-filter-tags selection-container\" *ngIf=\"field.maxSelected != 1\">\n <li class=\"location-selection\" *ngFor=\"let selection of selectedLocations\">\n <a class=\"hmcts-filter__tag\" (click)=\"removeLocation(selection)\" href=\"javascript:void(0)\">\n {{ selection.site_name }}\n </a>\n </li>\n </ul>\n</div>\n",
4282
- styles: [""]
4917
+ template: "<div class=\"location-picker-custom\">\n <div class=\"search-location\">\n <div>\n <label id=\"input-selected-location-label\" *ngIf=\"locationTitle\">{{locationTitle}}</label>\n </div>\n\n <div class=\"search-location__input-container\">\n <exui-search-location class=\"search-location__input\"\n [locations]=\"locations\"\n [selectedLocations]=\"selectedLocations\"\n [singleMode]=\"field.maxSelected === 1\"\n [bookingCheck]=\"field.bookingCheckType\"\n [delay]=\"300\"\n [disabled]=\"disabled\"\n [serviceIds]=\"serviceIds\"\n (locationInputChanged)=\"onInputChanged($event)\"\n (locationSelected)=\"onLocationSelected($event)\"\n (searchLocationChanged)=\"onSearchInputChanged()\"\n [locationType]=\"'case-management'\"></exui-search-location>\n <a href=\"javascript:void(0)\" (click)=\"addLocation()\"\n class=\"govuk-button govuk-button--secondary govuk-!-margin-bottom-0\" data-module=\"govuk-button\"\n *ngIf=\"enableAddLocationButton\">\n Add\n </a>\n </div>\n </div>\n <ul class=\"hmcts-filter-tags selection-container\" *ngIf=\"field.maxSelected != 1\">\n <li class=\"location-selection\" *ngFor=\"let selection of selectedLocations\">\n <a class=\"hmcts-filter__tag\" (click)=\"removeLocation(selection)\" href=\"javascript:void(0)\">\n {{ selection.site_name }}\n </a>\n </li>\n </ul>\n</div>\n",
4918
+ styles: [".search-location__input-container{display:flex}.search-location .auto-complete-container{min-width:unset;width:calc(100% - 4px)}.search-location__input{flex:1 0 auto}.search-location .govuk-button--secondary{background-color:#ddd}"]
4283
4919
  }] }
4284
4920
  ];
4285
4921
  FindLocationComponent.propDecorators = {
@@ -4534,200 +5170,46 @@
4534
5170
 
4535
5171
  /**
4536
5172
  * @fileoverview added by tsickle
4537
- * Generated from: lib/models/contact-details.model.ts
5173
+ * Generated from: lib/gov-ui/util/session-storage/session-storage-utils.ts
4538
5174
  * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4539
5175
  */
4540
- /** @enum {string} */
4541
- var BadgeColour = {
4542
- BADGE_RED: "hmcts-badge--red",
4543
- BADGE_BLUE: "hmcts-badge--blue",
4544
- BADGE_GREEN: "hmcts-badge--green",
4545
- };
5176
+ /** @type {?} */
5177
+ var getAllCaseworkersFromServices = ( /**
5178
+ * @param {?} caseworkersByService
5179
+ * @return {?}
5180
+ */function (caseworkersByService) {
5181
+ /** @type {?} */
5182
+ var allCaseworkers = [];
5183
+ caseworkersByService.forEach(( /**
5184
+ * @param {?} caseworkerListByService
5185
+ * @return {?}
5186
+ */function (caseworkerListByService) {
5187
+ allCaseworkers = allCaseworkers.concat(caseworkerListByService.caseworkers);
5188
+ }));
5189
+ return allCaseworkers;
5190
+ });
5191
+ /** @type {?} */
5192
+ var getSessionStorageKeyForServiceId = ( /**
5193
+ * @param {?} serviceId
5194
+ * @return {?}
5195
+ */function (serviceId) {
5196
+ return serviceId + "-caseworkers";
5197
+ });
5198
+ /** @type {?} */
5199
+ var setCaseworkers = ( /**
5200
+ * @param {?} serviceId
5201
+ * @param {?} caseworkers
5202
+ * @param {?} sessionStorageService
5203
+ * @return {?}
5204
+ */function (serviceId, caseworkers, sessionStorageService) {
5205
+ /** @type {?} */
5206
+ var sessionKey = getSessionStorageKeyForServiceId(serviceId);
5207
+ sessionStorageService.setItem(sessionKey, JSON.stringify(caseworkers));
5208
+ });
4546
5209
 
4547
5210
  /**
4548
5211
  * @fileoverview added by tsickle
4549
- * Generated from: lib/models/feature-user.ts
4550
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4551
- */
4552
- var AnonymousFeatureUser = /** @class */ (function () {
4553
- function AnonymousFeatureUser() {
4554
- }
4555
- return AnonymousFeatureUser;
4556
- }());
4557
- var LoggedInFeatureUser = /** @class */ (function () {
4558
- function LoggedInFeatureUser() {
4559
- }
4560
- return LoggedInFeatureUser;
4561
- }());
4562
-
4563
- /**
4564
- * @fileoverview added by tsickle
4565
- * Generated from: lib/models/person.model.ts
4566
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4567
- */
4568
- /** @enum {string} */
4569
- var PersonRole = {
4570
- JUDICIAL: "Judicial",
4571
- CASEWORKER: "Legal Ops",
4572
- ADMIN: "Admin",
4573
- ALL: "All",
4574
- };
4575
- /** @enum {string} */
4576
- var RoleCategory = {
4577
- JUDICIAL: "JUDICIAL",
4578
- CASEWORKER: "LEGAL_OPERATIONS",
4579
- ADMIN: "ADMIN",
4580
- ALL: "ALL",
4581
- };
4582
-
4583
- /**
4584
- * @fileoverview added by tsickle
4585
- * Generated from: lib/models/filter.model.ts
4586
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4587
- */
4588
- var RadioFilterFieldConfig = /** @class */ (function () {
4589
- function RadioFilterFieldConfig() {
4590
- }
4591
- return RadioFilterFieldConfig;
4592
- }());
4593
-
4594
- /**
4595
- * @fileoverview added by tsickle
4596
- * Generated from: lib/gov-ui/util/session-storage/session-storage-utils.ts
4597
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4598
- */
4599
- /** @type {?} */
4600
- var getAllCaseworkersFromServices = ( /**
4601
- * @param {?} caseworkersByService
4602
- * @return {?}
4603
- */function (caseworkersByService) {
4604
- /** @type {?} */
4605
- var allCaseworkers = [];
4606
- caseworkersByService.forEach(( /**
4607
- * @param {?} caseworkerListByService
4608
- * @return {?}
4609
- */function (caseworkerListByService) {
4610
- allCaseworkers = allCaseworkers.concat(caseworkerListByService.caseworkers);
4611
- }));
4612
- return allCaseworkers;
4613
- });
4614
- /** @type {?} */
4615
- var getSessionStorageKeyForServiceId = ( /**
4616
- * @param {?} serviceId
4617
- * @return {?}
4618
- */function (serviceId) {
4619
- return serviceId + "-caseworkers";
4620
- });
4621
- /** @type {?} */
4622
- var setCaseworkers = ( /**
4623
- * @param {?} serviceId
4624
- * @param {?} caseworkers
4625
- * @param {?} sessionStorageService
4626
- * @return {?}
4627
- */function (serviceId, caseworkers, sessionStorageService) {
4628
- /** @type {?} */
4629
- var sessionKey = getSessionStorageKeyForServiceId(serviceId);
4630
- sessionStorageService.setItem(sessionKey, JSON.stringify(caseworkers));
4631
- });
4632
-
4633
- /**
4634
- * @fileoverview added by tsickle
4635
- * Generated from: lib/services/session-storage/session-storage.service.ts
4636
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4637
- */
4638
- var SessionStorageService = /** @class */ (function () {
4639
- function SessionStorageService() {
4640
- }
4641
- /**
4642
- * Get an item from the session storage.
4643
- * If remove is true, the item will be removed once read
4644
- * @param removeAfterRead removed the key once it has been read
4645
- */
4646
- /**
4647
- * Get an item from the session storage.
4648
- * If remove is true, the item will be removed once read
4649
- * @param {?} key
4650
- * @param {?=} removeAfterRead removed the key once it has been read
4651
- * @return {?}
4652
- */
4653
- SessionStorageService.prototype.getItem = /**
4654
- * Get an item from the session storage.
4655
- * If remove is true, the item will be removed once read
4656
- * @param {?} key
4657
- * @param {?=} removeAfterRead removed the key once it has been read
4658
- * @return {?}
4659
- */
4660
- function (key, removeAfterRead) {
4661
- if (removeAfterRead === void 0) {
4662
- removeAfterRead = false;
4663
- }
4664
- /** @type {?} */
4665
- var item = sessionStorage.getItem(key);
4666
- if (removeAfterRead) {
4667
- this.removeItem(key);
4668
- }
4669
- return item;
4670
- };
4671
- /**
4672
- * Set an item in the session storage.
4673
- */
4674
- /**
4675
- * Set an item in the session storage.
4676
- * @param {?} key
4677
- * @param {?} value
4678
- * @return {?}
4679
- */
4680
- SessionStorageService.prototype.setItem = /**
4681
- * Set an item in the session storage.
4682
- * @param {?} key
4683
- * @param {?} value
4684
- * @return {?}
4685
- */
4686
- function (key, value) {
4687
- sessionStorage.setItem(key, value);
4688
- };
4689
- /**
4690
- * Remove an item in the session storage.
4691
- */
4692
- /**
4693
- * Remove an item in the session storage.
4694
- * @param {?} key
4695
- * @return {?}
4696
- */
4697
- SessionStorageService.prototype.removeItem = /**
4698
- * Remove an item in the session storage.
4699
- * @param {?} key
4700
- * @return {?}
4701
- */
4702
- function (key) {
4703
- sessionStorage.removeItem(key);
4704
- };
4705
- /**
4706
- * Clear all the items held in session storage.
4707
- */
4708
- /**
4709
- * Clear all the items held in session storage.
4710
- * @return {?}
4711
- */
4712
- SessionStorageService.prototype.clear = /**
4713
- * Clear all the items held in session storage.
4714
- * @return {?}
4715
- */
4716
- function () {
4717
- sessionStorage.clear();
4718
- };
4719
- SessionStorageService.decorators = [
4720
- { type: i0.Injectable, args: [{
4721
- providedIn: 'root'
4722
- },] }
4723
- ];
4724
- /** @nocollapse */ SessionStorageService.ngInjectableDef = i0.defineInjectable({ factory: function SessionStorageService_Factory() { return new SessionStorageService(); }, token: SessionStorageService, providedIn: "root" });
4725
- return SessionStorageService;
4726
- }());
4727
-
4728
- /**
4729
- * @fileoverview added by tsickle
4730
- * Generated from: lib/services/find-person/find-person.service.ts
5212
+ * Generated from: lib/services/find-person/find-person.service.ts
4731
5213
  * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4732
5214
  */
4733
5215
  var FindAPersonService = /** @class */ (function () {
@@ -4753,7 +5235,7 @@
4753
5235
  this.userId = userInfo.id ? userInfo.id : userInfo.uid;
4754
5236
  }
4755
5237
  this.assignedUser = searchOptions.assignedUser ? searchOptions.assignedUser : null;
4756
- return this.http.post('/workallocation2/findPerson', { searchOptions: searchOptions })
5238
+ return this.http.post('/workallocation/findPerson', { searchOptions: searchOptions })
4757
5239
  .pipe(operators.map(( /**
4758
5240
  * @param {?} judiciary
4759
5241
  * @return {?}
@@ -4811,7 +5293,7 @@
4811
5293
  return rxjs.of(this.searchInCaseworkers(storedCaseworkers, searchOptions));
4812
5294
  }
4813
5295
  // all serviceIds passed in as node layer getting used anyway and caseworkers also stored there
4814
- return this.http.post('/workallocation2/retrieveCaseWorkersForServices', { fullServices: fullServices }).pipe(operators.tap(( /**
5296
+ return this.http.post('/workallocation/retrieveCaseWorkersForServices', { fullServices: fullServices }).pipe(operators.tap(( /**
4815
5297
  * @param {?} caseworkersByService
4816
5298
  * @return {?}
4817
5299
  */function (caseworkersByService) {
@@ -4878,7 +5360,15 @@
4878
5360
  /** @type {?} */
4879
5361
  var roleCategory = RoleCategory.ALL;
4880
5362
  if (!(searchOptions.userRole === PersonRole.ALL)) {
4881
- roleCategory = searchOptions.userRole === PersonRole.CASEWORKER ? RoleCategory.CASEWORKER : RoleCategory.ADMIN;
5363
+ if (searchOptions.userRole === PersonRole.CASEWORKER) {
5364
+ roleCategory = RoleCategory.CASEWORKER;
5365
+ }
5366
+ else if (searchOptions.userRole === PersonRole.ADMIN) {
5367
+ roleCategory = RoleCategory.ADMIN;
5368
+ }
5369
+ else if (searchOptions.userRole === PersonRole.CTSC) {
5370
+ roleCategory = RoleCategory.CTSC;
5371
+ }
4882
5372
  }
4883
5373
  /** @type {?} */
4884
5374
  var searchTerm = searchOptions && searchOptions.searchTerm ? searchOptions.searchTerm.toLowerCase() : '';
@@ -5016,13 +5506,13 @@
5016
5506
  function (searchTerm) {
5017
5507
  var _this = this;
5018
5508
  /** @type {?} */
5019
- var findJudicialPeople = this.findPersonService.find({ searchTerm: searchTerm, userRole: this.domain, services: this.services, userIncluded: this.userIncluded, assignedUser: this.assignedUser });
5509
+ var findJudicialOrCTSCPeople = this.findPersonService.find({ searchTerm: searchTerm, userRole: this.domain, services: this.services, userIncluded: this.userIncluded, assignedUser: this.assignedUser });
5020
5510
  /** @type {?} */
5021
- var findCaseworkersOrAdmins = this.findPersonService.findCaseworkers({ searchTerm: searchTerm, userRole: this.domain, services: this.services, userIncluded: this.userIncluded, assignedUser: this.assignedUser });
5511
+ var findCaseworkersOrAdminsOrCtsc = this.findPersonService.findCaseworkers({ searchTerm: searchTerm, userRole: this.domain, services: this.services, userIncluded: this.userIncluded, assignedUser: this.assignedUser });
5022
5512
  if (searchTerm && searchTerm.length > this.minSearchCharacters) {
5023
5513
  switch (this.domain) {
5024
5514
  case PersonRole.JUDICIAL: {
5025
- return findJudicialPeople.pipe(operators.map(( /**
5515
+ return findJudicialOrCTSCPeople.pipe(operators.map(( /**
5026
5516
  * @param {?} persons
5027
5517
  * @return {?}
5028
5518
  */function (persons) {
@@ -5044,14 +5534,15 @@
5044
5534
  })));
5045
5535
  }
5046
5536
  case PersonRole.ALL: {
5047
- return rxjs.zip(findJudicialPeople, findCaseworkersOrAdmins).pipe(operators.map(( /**
5537
+ return rxjs.zip(findJudicialOrCTSCPeople, findCaseworkersOrAdminsOrCtsc).pipe(operators.map(( /**
5048
5538
  * @param {?} separatePeople
5049
5539
  * @return {?}
5050
5540
  */function (separatePeople) { return separatePeople[0].concat(separatePeople[1]); })));
5051
5541
  }
5542
+ case PersonRole.CTSC:
5052
5543
  case PersonRole.CASEWORKER:
5053
5544
  case PersonRole.ADMIN: {
5054
- return findCaseworkersOrAdmins;
5545
+ return findCaseworkersOrAdminsOrCtsc;
5055
5546
  }
5056
5547
  default: {
5057
5548
  return rxjs.of([]);
@@ -5073,67 +5564,471 @@
5073
5564
  this.findPersonControl.setValue(this.getDisplayName(selectedPerson), { emitEvent: false, onlySelf: true });
5074
5565
  };
5075
5566
  /**
5076
- * @param {?} selectedPerson
5567
+ * @param {?} selectedPerson
5568
+ * @return {?}
5569
+ */
5570
+ FindPersonComponent.prototype.getDisplayName = /**
5571
+ * @param {?} selectedPerson
5572
+ * @return {?}
5573
+ */
5574
+ function (selectedPerson) {
5575
+ if (!selectedPerson) {
5576
+ return '';
5577
+ }
5578
+ if (selectedPerson.domain === PersonRole.JUDICIAL && selectedPerson.fullName) {
5579
+ return selectedPerson.fullName + " (" + selectedPerson.email + ")";
5580
+ }
5581
+ return selectedPerson.email ? selectedPerson.name + " (" + selectedPerson.email + ")" : selectedPerson.name;
5582
+ };
5583
+ /**
5584
+ * @return {?}
5585
+ */
5586
+ FindPersonComponent.prototype.onInput = /**
5587
+ * @return {?}
5588
+ */
5589
+ function () {
5590
+ this.personFieldChanged.emit();
5591
+ };
5592
+ FindPersonComponent.decorators = [
5593
+ { type: i0.Component, args: [{
5594
+ selector: 'xuilib-find-person',
5595
+ template: "<h1 class=\"govuk-heading-l\" *ngIf=\"title && title.length\">\n <span class=\"govuk-caption-l\">{{title}}</span>\n {{boldTitle}}\n</h1>\n<div class=\"govuk-form-group\" [formGroup]=\"findPersonGroup\"\n [ngClass]=\"{'form-group-error': findPersonGroup.get('findPersonControl').invalid && submitted}\">\n <fieldset class=\"govuk-fieldset\" aria-describedby=\"sub-title-hint\">\n <div id=\"sub-title-hint\" class=\"govuk-hint\" *ngIf=\"subTitle && subTitle.length\">\n {{subTitle}}\n </div>\n <span id=\"validation-error\" class=\"govuk-error-message\" *ngIf=\"findPersonGroup && findPersonGroup.errors\">\n <span class=\"govuk-visually-hidden\">Error:</span>{{findPersonGroup.errors.error ? findPersonGroup.errors.error : errorMessage}}\n </span>\n <input id=\"inputSelectPerson{{idValue}}\" type=\"text\" aria-label=\"select a person\"\n formControlName=\"findPersonControl\"\n [matAutocomplete]=\"auto\"\n class=\"govuk-input govuk-!-width-one-third\"\n [placeholder]=\"placeholderContent\"\n [attr.disabled]=\"disabled\"\n (input)=\"onInput()\">\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\" (optionSelected)=\"onSelectionChange($event.option.value)\">\n <mat-option *ngFor=\"let option of filteredOptions\"\n [value]=\"option\"\n [ngClass]=\"{'hide-autocomplete': !showAutocomplete, 'select-option': showUpdatedColor}\">\n {{getDisplayName(option)}}\n </mat-option>\n <mat-option [ngClass]=\"{'select-option': showUpdatedColor}\" *ngIf=\"isNoResultsShown && !filteredOptions.length && showAutocomplete\">No results found</mat-option>\n </mat-autocomplete>\n </fieldset>\n</div>\n",
5596
+ styles: [".mat-option:hover{background:#2596be}.mat-option.select-option:hover{background:#1d70b8;color:#fff}.hide-autocomplete{display:none}"]
5597
+ }] }
5598
+ ];
5599
+ /** @nocollapse */
5600
+ FindPersonComponent.ctorParameters = function () {
5601
+ return [
5602
+ { type: FindAPersonService },
5603
+ { type: i0.ChangeDetectorRef }
5604
+ ];
5605
+ };
5606
+ FindPersonComponent.propDecorators = {
5607
+ personSelected: [{ type: i0.Output }],
5608
+ personFieldChanged: [{ type: i0.Output }],
5609
+ title: [{ type: i0.Input }],
5610
+ boldTitle: [{ type: i0.Input }],
5611
+ subTitle: [{ type: i0.Input }],
5612
+ domain: [{ type: i0.Input }],
5613
+ findPersonGroup: [{ type: i0.Input }],
5614
+ selectedPerson: [{ type: i0.Input }],
5615
+ submitted: [{ type: i0.Input }],
5616
+ userIncluded: [{ type: i0.Input }],
5617
+ assignedUser: [{ type: i0.Input }],
5618
+ placeholderContent: [{ type: i0.Input }],
5619
+ isNoResultsShown: [{ type: i0.Input }],
5620
+ showUpdatedColor: [{ type: i0.Input }],
5621
+ selectedPersons: [{ type: i0.Input }],
5622
+ errorMessage: [{ type: i0.Input }],
5623
+ idValue: [{ type: i0.Input }],
5624
+ services: [{ type: i0.Input }],
5625
+ disabled: [{ type: i0.Input }]
5626
+ };
5627
+ return FindPersonComponent;
5628
+ }());
5629
+
5630
+ /**
5631
+ * @fileoverview added by tsickle
5632
+ * Generated from: lib/components/find-service/find-service.component.ts
5633
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5634
+ */
5635
+ var FindServiceComponent = /** @class */ (function () {
5636
+ function FindServiceComponent() {
5637
+ this.services = [];
5638
+ this.selectedServices = [];
5639
+ this.enableAddServiceButton = true;
5640
+ this.disabled = false;
5641
+ this.serviceFieldChanged = new i0.EventEmitter();
5642
+ this.tempSelectedService = null;
5643
+ }
5644
+ /**
5645
+ * @return {?}
5646
+ */
5647
+ FindServiceComponent.prototype.ngOnInit = /**
5648
+ * @return {?}
5649
+ */
5650
+ function () {
5651
+ this.selectedServices = this.selectedServices !== null ? this.selectedServices.filter(( /**
5652
+ * @param {?} service
5653
+ * @return {?}
5654
+ */function (service) { return service.key; })) : [];
5655
+ this.SortAnOptions();
5656
+ };
5657
+ /**
5658
+ * @return {?}
5659
+ */
5660
+ FindServiceComponent.prototype.addService = /**
5661
+ * @return {?}
5662
+ */
5663
+ function () {
5664
+ var _this = this;
5665
+ if (this.tempSelectedService === null) {
5666
+ return;
5667
+ }
5668
+ this.selectedServices = __spread(this.selectedServices, [this.tempSelectedService]);
5669
+ this.addSelectedServicesToForm([this.tempSelectedService]);
5670
+ this.services = this.services.filter(( /**
5671
+ * @param {?} s
5672
+ * @return {?}
5673
+ */function (s) { return s.key !== _this.tempSelectedService.key; }));
5674
+ this.tempSelectedService = null;
5675
+ this.serviceFieldChanged.emit();
5676
+ };
5677
+ /**
5678
+ * @param {?} service
5679
+ * @return {?}
5680
+ */
5681
+ FindServiceComponent.prototype.removeService = /**
5682
+ * @param {?} service
5683
+ * @return {?}
5684
+ */
5685
+ function (service) {
5686
+ if (service.key) {
5687
+ this.selectedServices = this.selectedServices !== null ? this.selectedServices.filter(( /**
5688
+ * @param {?} selectedService
5689
+ * @return {?}
5690
+ */function (selectedService) { return selectedService.key !== service.key; })) : [];
5691
+ /** @type {?} */
5692
+ var formArray = ( /** @type {?} */(this.form.get(this.field.name)));
5693
+ /** @type {?} */
5694
+ var index = (formArray.value).findIndex(( /**
5695
+ * @param {?} selectedService
5696
+ * @return {?}
5697
+ */function (selectedService) { return selectedService.key === service.key; }));
5698
+ if (index > -1) {
5699
+ formArray.removeAt(index);
5700
+ this.services.splice(index, 0, service);
5701
+ this.SortAnOptions();
5702
+ }
5703
+ this.serviceFieldChanged.emit();
5704
+ }
5705
+ };
5706
+ /**
5707
+ * @param {?} service
5708
+ * @return {?}
5709
+ */
5710
+ FindServiceComponent.prototype.onServiceSelected = /**
5711
+ * @param {?} service
5712
+ * @return {?}
5713
+ */
5714
+ function (service) {
5715
+ if (!service) {
5716
+ this.tempSelectedService = null;
5717
+ return;
5718
+ }
5719
+ if (this.field.maxSelected === 1) {
5720
+ this.removeSelectedValues();
5721
+ this.addSelectedServicesToForm([service]);
5722
+ }
5723
+ else {
5724
+ if (!this.selectedServices.find(( /**
5725
+ * @param {?} s
5726
+ * @return {?}
5727
+ */function (s) { return s.key === service.key; }))) {
5728
+ if (service.key) {
5729
+ this.tempSelectedService = service;
5730
+ }
5731
+ }
5732
+ }
5733
+ };
5734
+ /**
5735
+ * @private
5736
+ * @return {?}
5737
+ */
5738
+ FindServiceComponent.prototype.removeSelectedValues = /**
5739
+ * @private
5740
+ * @return {?}
5741
+ */
5742
+ function () {
5743
+ /** @type {?} */
5744
+ var formArray = ( /** @type {?} */(this.form.get(this.field.name)));
5745
+ for (var i = 0; i < formArray.length; i++) {
5746
+ formArray.removeAt(i);
5747
+ }
5748
+ this.selectedServices = [];
5749
+ };
5750
+ /**
5751
+ * @private
5752
+ * @param {?} services
5753
+ * @return {?}
5754
+ */
5755
+ FindServiceComponent.prototype.addSelectedServicesToForm = /**
5756
+ * @private
5757
+ * @param {?} services
5758
+ * @return {?}
5759
+ */
5760
+ function (services) {
5761
+ var e_1, _a;
5762
+ /** @type {?} */
5763
+ var formArray = ( /** @type {?} */(this.form.get(this.field.name)));
5764
+ try {
5765
+ for (var services_1 = __values(services), services_1_1 = services_1.next(); !services_1_1.done; services_1_1 = services_1.next()) {
5766
+ var service = services_1_1.value;
5767
+ formArray.push(new forms.FormControl(service));
5768
+ }
5769
+ }
5770
+ catch (e_1_1) {
5771
+ e_1 = { error: e_1_1 };
5772
+ }
5773
+ finally {
5774
+ try {
5775
+ if (services_1_1 && !services_1_1.done && (_a = services_1.return))
5776
+ _a.call(services_1);
5777
+ }
5778
+ finally {
5779
+ if (e_1)
5780
+ throw e_1.error;
5781
+ }
5782
+ }
5783
+ };
5784
+ /**
5785
+ * @private
5786
+ * @return {?}
5787
+ */
5788
+ FindServiceComponent.prototype.SortAnOptions = /**
5789
+ * @private
5790
+ * @return {?}
5791
+ */
5792
+ function () {
5793
+ return this.services.sort(( /**
5794
+ * @param {?} a
5795
+ * @param {?} b
5796
+ * @return {?}
5797
+ */function (a, b) {
5798
+ return a.label.toLowerCase() > b.label.toLowerCase() ? 1 : (b.label.toLowerCase() > a.label.toLowerCase() ? -1 : 0);
5799
+ }));
5800
+ };
5801
+ FindServiceComponent.decorators = [
5802
+ { type: i0.Component, args: [{
5803
+ selector: 'xuilib-find-service',
5804
+ template: "<div class=\"service-picker-custom\">\n <div class=\"search-service\">\n <div class=\"govuk-body\">\n <label id=\"selectServiceSearch-label\" for=\"serviceSearch__select\" *ngIf=\"serviceTitle\">\n {{ serviceTitle}}\n </label>\n </div>\n <div class=\"search-service__input-container\">\n <exui-search-service class=\"search-service__input\" [services]=\"services\"\n (serviceChanged)=\"onServiceSelected($event)\">\n </exui-search-service>\n <a href=\"javascript:void(0)\" (click)=\"addService()\"\n class=\"govuk-button govuk-button--secondary govuk-!-margin-bottom-0\" data-module=\"govuk-button\"\n *ngIf=\"enableAddServiceButton\" id=\"add-service\">\n Add\n </a>\n </div>\n </div>\n <ul class=\"hmcts-filter-tags selection-container\" *ngIf=\"field.maxSelected != 1\">\n <li class=\"location-selection\" *ngFor=\"let selection of selectedServices\">\n <a class=\"hmcts-filter__tag\" (click)=\"removeService(selection)\" href=\"javascript:void(0)\">\n {{ selection.label }}\n </a>\n </li>\n </ul>\n</div>",
5805
+ styles: ["#add-service{background-color:#ddd}.search-service__input-container{display:flex}.search-service__input{flex:1 0 auto}"]
5806
+ }] }
5807
+ ];
5808
+ FindServiceComponent.propDecorators = {
5809
+ field: [{ type: i0.Input }],
5810
+ fields: [{ type: i0.Input }],
5811
+ serviceTitle: [{ type: i0.Input }],
5812
+ form: [{ type: i0.Input }],
5813
+ services: [{ type: i0.Input }],
5814
+ selectedServices: [{ type: i0.Input }],
5815
+ enableAddServiceButton: [{ type: i0.Input }],
5816
+ disabled: [{ type: i0.Input }],
5817
+ serviceFieldChanged: [{ type: i0.Output }]
5818
+ };
5819
+ return FindServiceComponent;
5820
+ }());
5821
+
5822
+ /**
5823
+ * @fileoverview added by tsickle
5824
+ * Generated from: lib/services/task-name/task-name.service.ts
5825
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5826
+ */
5827
+ var TaskNameService = /** @class */ (function () {
5828
+ function TaskNameService(http, sessionStorageService) {
5829
+ this.http = http;
5830
+ this.sessionStorageService = sessionStorageService;
5831
+ }
5832
+ /**
5833
+ * @return Observable<any[]>: Array of taskName in Observable
5834
+ */
5835
+ /**
5836
+ * @return {?} Observable<any[]>: Array of taskName in Observable
5837
+ */
5838
+ TaskNameService.prototype.getTaskName = /**
5839
+ * @return {?} Observable<any[]>: Array of taskName in Observable
5840
+ */
5841
+ function () {
5842
+ var _this = this;
5843
+ if (this.sessionStorageService.getItem(TaskNameService.taskNamesKey)) {
5844
+ /** @type {?} */
5845
+ var taskNames = JSON.parse(this.sessionStorageService.getItem(TaskNameService.taskNamesKey));
5846
+ return rxjs.of(( /** @type {?} */(taskNames)));
5847
+ }
5848
+ return this.http.get("/workallocation/taskNames").pipe(operators.tap(( /**
5849
+ * @param {?} taskNames
5850
+ * @return {?}
5851
+ */function (taskNames) { return _this.sessionStorageService.setItem(TaskNameService.taskNamesKey, JSON.stringify(taskNames)); })));
5852
+ };
5853
+ TaskNameService.taskNamesKey = 'taskNames';
5854
+ TaskNameService.decorators = [
5855
+ { type: i0.Injectable, args: [{
5856
+ providedIn: 'root'
5857
+ },] }
5858
+ ];
5859
+ /** @nocollapse */
5860
+ TaskNameService.ctorParameters = function () {
5861
+ return [
5862
+ { type: i1.HttpClient },
5863
+ { type: SessionStorageService }
5864
+ ];
5865
+ };
5866
+ /** @nocollapse */ TaskNameService.ngInjectableDef = i0.defineInjectable({ factory: function TaskNameService_Factory() { return new TaskNameService(i0.inject(i1.HttpClient), i0.inject(SessionStorageService)); }, token: TaskNameService, providedIn: "root" });
5867
+ return TaskNameService;
5868
+ }());
5869
+
5870
+ /**
5871
+ * @fileoverview added by tsickle
5872
+ * Generated from: lib/components/find-task-name/find-task-name.component.ts
5873
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5874
+ */
5875
+ var FindTaskNameComponent = /** @class */ (function () {
5876
+ function FindTaskNameComponent(cd, taskService) {
5877
+ this.cd = cd;
5878
+ this.taskService = taskService;
5879
+ this.taskNameSelected = new i0.EventEmitter();
5880
+ this.taskNameFieldChanged = new i0.EventEmitter();
5881
+ this.boldTitle = 'Find the task name';
5882
+ this.subTitle = 'Type the name of the task name and select them.';
5883
+ this.domain = PersonRole.ALL;
5884
+ this.findTaskNameGroup = new forms.FormGroup({});
5885
+ this.submitted = true;
5886
+ this.userIncluded = false;
5887
+ this.placeholderContent = '';
5888
+ this.isNoResultsShown = true;
5889
+ this.showUpdatedColor = false;
5890
+ this.selectedTaskNames = [];
5891
+ this.errorMessage = 'You must select a name';
5892
+ this.idValue = '';
5893
+ this.services = ['IA'];
5894
+ this.disabled = null;
5895
+ this.showAutocomplete = false;
5896
+ this.filteredOptions = [];
5897
+ this.minSearchCharacters = 1;
5898
+ this.searchTerm = '';
5899
+ }
5900
+ /**
5901
+ * @return {?}
5902
+ */
5903
+ FindTaskNameComponent.prototype.ngOnDestroy = /**
5904
+ * @return {?}
5905
+ */
5906
+ function () {
5907
+ if (this.sub) {
5908
+ this.sub.unsubscribe();
5909
+ }
5910
+ };
5911
+ /**
5912
+ * @return {?}
5913
+ */
5914
+ FindTaskNameComponent.prototype.ngOnChanges = /**
5915
+ * @return {?}
5916
+ */
5917
+ function () {
5918
+ var _this = this;
5919
+ this.findTaskNameControl = new forms.FormControl(this.selectedTaskName);
5920
+ this.findTaskNameGroup.addControl('findTaskNameControl', this.findTaskNameControl);
5921
+ this.sub = this.findTaskNameControl.valueChanges
5922
+ .pipe(operators.tap(( /**
5923
+ * @return {?}
5924
+ */function () { return _this.showAutocomplete = false; })), operators.tap(( /**
5925
+ * @return {?}
5926
+ */function () { return _this.filteredOptions = []; })), operators.tap(( /**
5927
+ * @param {?} term
5928
+ * @return {?}
5929
+ */function (term) { return _this.searchTerm = term; })), operators.debounceTime(300), operators.tap(( /**
5930
+ * @param {?} searchTerm
5931
+ * @return {?}
5932
+ */function (searchTerm) {
5933
+ if (!searchTerm) {
5934
+ _this.taskNameSelected.emit('');
5935
+ }
5936
+ return searchTerm;
5937
+ })),
5938
+ // tap((searchTerm) => typeof searchTerm === 'string' ? this.taskNameSelected.emit('null') : void 0),
5939
+ operators.filter(( /**
5940
+ * @param {?} searchTerm
5941
+ * @return {?}
5942
+ */function (searchTerm) { return searchTerm && searchTerm.length >= _this.minSearchCharacters; })), operators.mergeMap(( /**
5943
+ * @return {?}
5944
+ */function () { return _this.getTaskName(); }))).subscribe(( /**
5945
+ * @param {?} taskNameModel
5946
+ * @return {?}
5947
+ */function (taskNameModel) {
5948
+ _this.filteredOptions = taskNameModel.map(( /**
5949
+ * @param {?} task
5950
+ * @return {?}
5951
+ */function (task) { return task.taskName; }));
5952
+ if (_this.searchTerm) {
5953
+ _this.filteredOptions = _this.filteredOptions.filter(( /**
5954
+ * @param {?} taskName
5955
+ * @return {?}
5956
+ */function (taskName) { return taskName.toLocaleLowerCase().includes(_this.searchTerm.toLocaleLowerCase()); })).map(( /**
5957
+ * @param {?} taskName
5958
+ * @return {?}
5959
+ */function (taskName) { return taskName; }));
5960
+ }
5961
+ _this.cd.detectChanges();
5962
+ }));
5963
+ };
5964
+ /**
5965
+ * @return {?}
5966
+ */
5967
+ FindTaskNameComponent.prototype.getTaskName = /**
5968
+ * @return {?}
5969
+ */
5970
+ function () {
5971
+ return this.taskService.getTaskName();
5972
+ };
5973
+ /**
5974
+ * @param {?} selectedTaskName
5077
5975
  * @return {?}
5078
5976
  */
5079
- FindPersonComponent.prototype.getDisplayName = /**
5080
- * @param {?} selectedPerson
5977
+ FindTaskNameComponent.prototype.onSelectionChange = /**
5978
+ * @param {?} selectedTaskName
5081
5979
  * @return {?}
5082
5980
  */
5083
- function (selectedPerson) {
5084
- if (!selectedPerson) {
5085
- return '';
5086
- }
5087
- if (selectedPerson.domain === PersonRole.JUDICIAL && selectedPerson.fullName) {
5088
- return selectedPerson.fullName + " (" + selectedPerson.email + ")";
5981
+ function (selectedTaskName) {
5982
+ if (selectedTaskName) {
5983
+ this.taskNameSelected.emit(selectedTaskName);
5984
+ this.findTaskNameControl.setValue(selectedTaskName);
5089
5985
  }
5090
- return selectedPerson.email ? selectedPerson.name + " (" + selectedPerson.email + ")" : selectedPerson.name;
5091
5986
  };
5092
5987
  /**
5093
5988
  * @return {?}
5094
5989
  */
5095
- FindPersonComponent.prototype.onInput = /**
5990
+ FindTaskNameComponent.prototype.onInput = /**
5096
5991
  * @return {?}
5097
5992
  */
5098
5993
  function () {
5099
- this.personFieldChanged.emit();
5994
+ this.taskNameFieldChanged.emit();
5100
5995
  };
5101
- FindPersonComponent.decorators = [
5996
+ FindTaskNameComponent.decorators = [
5102
5997
  { type: i0.Component, args: [{
5103
- selector: 'xuilib-find-person',
5104
- template: "<h1 class=\"govuk-heading-l\" *ngIf=\"title && title.length\">\n <span class=\"govuk-caption-l\">{{title}}</span>\n {{boldTitle}}\n</h1>\n<div class=\"govuk-form-group\" [formGroup]=\"findPersonGroup\"\n [ngClass]=\"{'form-group-error': findPersonGroup.get('findPersonControl').invalid && submitted}\">\n <fieldset class=\"govuk-fieldset\" aria-describedby=\"sub-title-hint\">\n <div id=\"sub-title-hint\" class=\"govuk-hint\" *ngIf=\"subTitle && subTitle.length\">\n {{subTitle}}\n </div>\n <span id=\"validation-error\" class=\"govuk-error-message\" *ngIf=\"findPersonGroup && findPersonGroup.errors\">\n <span class=\"govuk-visually-hidden\">Error:</span>{{findPersonGroup.errors.error ? findPersonGroup.errors.error : errorMessage}}\n </span>\n <input id=\"inputSelectPerson{{idValue}}\" type=\"text\" aria-label=\"select a person\"\n formControlName=\"findPersonControl\"\n [matAutocomplete]=\"auto\"\n class=\"govuk-input govuk-!-width-one-third\"\n [placeholder]=\"placeholderContent\"\n [attr.disabled]=\"disabled\"\n (input)=\"onInput()\">\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\" (optionSelected)=\"onSelectionChange($event.option.value)\">\n <mat-option *ngFor=\"let option of filteredOptions\"\n [value]=\"option\"\n [ngClass]=\"{'hide-autocomplete': !showAutocomplete, 'select-option': showUpdatedColor}\">\n {{getDisplayName(option)}}\n </mat-option>\n <mat-option [ngClass]=\"{'select-option': showUpdatedColor}\" *ngIf=\"isNoResultsShown && !filteredOptions.length && showAutocomplete\">No results found</mat-option>\n </mat-autocomplete>\n </fieldset>\n</div>\n",
5105
- styles: [".mat-option:hover{background:#2596be}.mat-option.select-option:hover{background:#1d70b8;color:#fff}.hide-autocomplete{display:none}"]
5998
+ selector: 'xuilib-find-task-name',
5999
+ template: "<h1 class=\"govuk-heading-l\" *ngIf=\"title && title.length\">\n <span class=\"govuk-caption-l\">{{title}}</span>\n {{boldTitle}}\n</h1>\n<div class=\"govuk-form-group\" [formGroup]=\"findTaskNameGroup\"\n [ngClass]=\"{'form-group-error': findTaskNameGroup.get('findTaskNameControl')?.invalid && submitted}\">\n <fieldset class=\"govuk-fieldset\" aria-describedby=\"sub-title-hint\">\n <div id=\"sub-title-hint\" class=\"govuk-hint\" *ngIf=\"subTitle && subTitle.length\">\n {{subTitle}}\n </div>\n <span id=\"validation-error\" class=\"govuk-error-message\" *ngIf=\"findTaskNameGroup && findTaskNameGroup.errors\">\n <span class=\"govuk-visually-hidden\">Error:</span>{{findTaskNameGroup.errors.error ? findTaskNameGroup.errors.error : errorMessage}}\n </span>\n <input id=\"inputSelectTaskName{{idValue}}\" type=\"text\" aria-label=\"select a task name\"\n formControlName=\"findTaskNameControl\"\n [matAutocomplete]=\"auto\"\n class=\"govuk-input govuk-!-width-one-third\"\n [placeholder]=\"placeholderContent\"\n [attr.disabled]=\"disabled\"\n (input)=\"onInput()\">\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\" (optionSelected)=\"onSelectionChange($event.option.value)\">\n <mat-option *ngFor=\"let option of filteredOptions\"\n [value]=\"option\"\n [ngClass]=\"{'hide-autocomplete': !showAutocomplete, 'select-option': showUpdatedColor}\">\n {{ option }}\n </mat-option>\n <mat-option [ngClass]=\"{'select-option': showUpdatedColor}\" *ngIf=\"isNoResultsShown && !filteredOptions.length && showAutocomplete\">No results found</mat-option>\n </mat-autocomplete>\n </fieldset>\n</div>\n",
6000
+ styles: [""]
5106
6001
  }] }
5107
6002
  ];
5108
6003
  /** @nocollapse */
5109
- FindPersonComponent.ctorParameters = function () {
6004
+ FindTaskNameComponent.ctorParameters = function () {
5110
6005
  return [
5111
- { type: FindAPersonService },
5112
- { type: i0.ChangeDetectorRef }
6006
+ { type: i0.ChangeDetectorRef },
6007
+ { type: TaskNameService }
5113
6008
  ];
5114
6009
  };
5115
- FindPersonComponent.propDecorators = {
5116
- personSelected: [{ type: i0.Output }],
5117
- personFieldChanged: [{ type: i0.Output }],
6010
+ FindTaskNameComponent.propDecorators = {
6011
+ taskNameSelected: [{ type: i0.Output }],
6012
+ taskNameFieldChanged: [{ type: i0.Output }],
5118
6013
  title: [{ type: i0.Input }],
5119
6014
  boldTitle: [{ type: i0.Input }],
5120
6015
  subTitle: [{ type: i0.Input }],
5121
6016
  domain: [{ type: i0.Input }],
5122
- findPersonGroup: [{ type: i0.Input }],
5123
- selectedPerson: [{ type: i0.Input }],
6017
+ findTaskNameGroup: [{ type: i0.Input }],
6018
+ selectedTaskName: [{ type: i0.Input }],
5124
6019
  submitted: [{ type: i0.Input }],
5125
6020
  userIncluded: [{ type: i0.Input }],
5126
6021
  assignedUser: [{ type: i0.Input }],
5127
6022
  placeholderContent: [{ type: i0.Input }],
5128
6023
  isNoResultsShown: [{ type: i0.Input }],
5129
6024
  showUpdatedColor: [{ type: i0.Input }],
5130
- selectedPersons: [{ type: i0.Input }],
6025
+ selectedTaskNames: [{ type: i0.Input }],
5131
6026
  errorMessage: [{ type: i0.Input }],
5132
6027
  idValue: [{ type: i0.Input }],
5133
6028
  services: [{ type: i0.Input }],
5134
6029
  disabled: [{ type: i0.Input }]
5135
6030
  };
5136
- return FindPersonComponent;
6031
+ return FindTaskNameComponent;
5137
6032
  }());
5138
6033
 
5139
6034
  /**
@@ -5375,6 +6270,46 @@
5375
6270
  return SearchJudicialsComponent;
5376
6271
  }());
5377
6272
 
6273
+ /**
6274
+ * @fileoverview added by tsickle
6275
+ * Generated from: lib/components/search-service/search-service.component.ts
6276
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
6277
+ */
6278
+ var SearchServiceComponent = /** @class */ (function () {
6279
+ function SearchServiceComponent() {
6280
+ this.services = [];
6281
+ this.serviceChanged = new i0.EventEmitter();
6282
+ }
6283
+ /**
6284
+ * @param {?} key
6285
+ * @return {?}
6286
+ */
6287
+ SearchServiceComponent.prototype.onSelectionChanged = /**
6288
+ * @param {?} key
6289
+ * @return {?}
6290
+ */
6291
+ function (key) {
6292
+ /** @type {?} */
6293
+ var selectedService = this.services.find(( /**
6294
+ * @param {?} s
6295
+ * @return {?}
6296
+ */function (s) { return s.key === key; }));
6297
+ this.serviceChanged.emit(selectedService);
6298
+ };
6299
+ SearchServiceComponent.decorators = [
6300
+ { type: i0.Component, args: [{
6301
+ selector: 'exui-search-service',
6302
+ template: "<div class=\"govuk-form-group\">\n <select id=\"serviceSearch__select\" class=\"govuk-select\" name=\"serviceSearch__select\"\n (change)=\"onSelectionChanged($event.target.value)\">\n <option [value]=\"null\">All</option>\n <option *ngFor=\"let service of services\" [value]=\"service.key\">\n {{ service.label }}\n </option>\n </select>\n</div>",
6303
+ styles: [".autocomplete__input--show-all-values{padding:5px 34px 5px 5px;cursor:pointer}.autocomplete__dropdown-arrow-down{z-index:-1;display:inline-block;position:absolute;right:8px;width:24px;height:24px;top:10px}.autocomplete__menu{background-color:#fff;border:2px solid #0b0c0c;border-top:0;color:#0b0c0c;margin:0;max-height:342px;overflow-x:hidden;padding:0;width:calc(100% - 4px)}.autocomplete__menu--visible{display:block}.autocomplete__menu--hidden{display:none}.autocomplete__menu--overlay{box-shadow:rgba(0,0,0,.256863) 0 2px 6px;left:0;position:absolute;top:100%;z-index:100}.autocomplete__menu--inline{position:relative}.autocomplete__option{border-bottom:solid #b1b4b6;border-width:1px 0;cursor:pointer;display:block;position:relative}.autocomplete__option>*{pointer-events:none}.autocomplete__option:first-of-type{border-top-width:0}.autocomplete__option:last-of-type{border-bottom-width:0}.autocomplete__option--odd{background-color:#fafafa}.autocomplete__option--focused,.autocomplete__option:hover{background-color:#1d70b8;border-color:#1d70b8;color:#fff;outline:0}.autocomplete__option--no-results{background-color:#fafafa;color:#646b6f;cursor:not-allowed}.autocomplete__hint,.autocomplete__input,.autocomplete__option{font-size:13px;line-height:1.25}.autocomplete__hint,.autocomplete__option{padding:5px}@media (min-width:641px){.autocomplete__hint,.autocomplete__input,.autocomplete__option{font-size:13px;line-height:1.31579}}.div-action{display:inline-block}.add-location{display:inline}.remove-location-button{margin:5px}.hide-autocomplete{display:none}.auto-complete-container{width:calc(100% - 4px);display:inline-block;margin-right:4px}.autocomplete__input{line-height:24px;font-size:19px}"]
6304
+ }] }
6305
+ ];
6306
+ SearchServiceComponent.propDecorators = {
6307
+ services: [{ type: i0.Input }],
6308
+ serviceChanged: [{ type: i0.Output }]
6309
+ };
6310
+ return SearchServiceComponent;
6311
+ }());
6312
+
5378
6313
  /**
5379
6314
  * @fileoverview added by tsickle
5380
6315
  * Generated from: lib/components/search-venue/search-venue.component.ts
@@ -5658,6 +6593,57 @@
5658
6593
  return GovUkCheckboxComponent;
5659
6594
  }());
5660
6595
 
6596
+ /**
6597
+ * @fileoverview added by tsickle
6598
+ * Generated from: lib/gov-ui/util/helpers/html-templates.helper.ts
6599
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
6600
+ */
6601
+ /*
6602
+ * Helper Class
6603
+ * Used for dynamic templates manipulation
6604
+ * */
6605
+ var /*
6606
+ * Helper Class
6607
+ * Used for dynamic templates manipulation
6608
+ * */ HtmlTemplatesHelper = /** @class */ (function () {
6609
+ function HtmlTemplatesHelper() {
6610
+ }
6611
+ /*
6612
+ * Sets described by string depending if
6613
+ * there is an error, error and hit or nothing
6614
+ * */
6615
+ /*
6616
+ * Sets described by string depending if
6617
+ * there is an error, error and hit or nothing
6618
+ * */
6619
+ /**
6620
+ * @param {?} errorMessage
6621
+ * @param {?} config
6622
+ * @return {?}
6623
+ */
6624
+ HtmlTemplatesHelper.setDescribedBy = /*
6625
+ * Sets described by string depending if
6626
+ * there is an error, error and hit or nothing
6627
+ * */
6628
+ /**
6629
+ * @param {?} errorMessage
6630
+ * @param {?} config
6631
+ * @return {?}
6632
+ */
6633
+ function (errorMessage, config) {
6634
+ if (!errorMessage) {
6635
+ return config.hint ? config.id + "-hint" : null;
6636
+ }
6637
+ else if (errorMessage && errorMessage.isInvalid) {
6638
+ return config.hint ? config.id + "-hint " + config.id + "-error" : config.id + "-error";
6639
+ }
6640
+ else {
6641
+ return config.hint ? config.id + "-hint" : null;
6642
+ }
6643
+ };
6644
+ return HtmlTemplatesHelper;
6645
+ }());
6646
+
5661
6647
  /**
5662
6648
  * @fileoverview added by tsickle
5663
6649
  * Generated from: lib/gov-ui/components/gov-uk-checkboxes/gov-uk-checkboxes.component.ts
@@ -5673,15 +6659,99 @@
5673
6659
  var GovUkCheckboxesComponent = /** @class */ (function () {
5674
6660
  function GovUkCheckboxesComponent() {
5675
6661
  }
6662
+ /**
6663
+ * @return {?}
6664
+ */
6665
+ GovUkCheckboxesComponent.prototype.ngOnInit = /**
6666
+ * @return {?}
6667
+ */
6668
+ function () {
6669
+ this.columns = this.setColumns();
6670
+ };
6671
+ /**
6672
+ * @return {?}
6673
+ */
6674
+ GovUkCheckboxesComponent.prototype.setDescribedBy = /**
6675
+ * @return {?}
6676
+ */
6677
+ function () {
6678
+ return HtmlTemplatesHelper.setDescribedBy(this.errorMessage, this.config);
6679
+ };
6680
+ /**
6681
+ * @param {?} checked
6682
+ * @param {?} value
6683
+ * @return {?}
6684
+ */
6685
+ GovUkCheckboxesComponent.prototype.onChecked = /**
6686
+ * @param {?} checked
6687
+ * @param {?} value
6688
+ * @return {?}
6689
+ */
6690
+ function (checked, value) {
6691
+ /** @type {?} */
6692
+ var formControl = this.group.get(this.config.name);
6693
+ /** @type {?} */
6694
+ var array = formControl.value ? formControl.value : [];
6695
+ if (!checked) {
6696
+ /** @type {?} */
6697
+ var modifiedArray = array.filter(( /**
6698
+ * @param {?} item
6699
+ * @return {?}
6700
+ */function (item) { return item !== value; }));
6701
+ formControl.setValue(modifiedArray);
6702
+ }
6703
+ else {
6704
+ formControl.setValue(__spread(array, [value]));
6705
+ }
6706
+ };
6707
+ /**
6708
+ * @param {?} value
6709
+ * @return {?}
6710
+ */
6711
+ GovUkCheckboxesComponent.prototype.isChecked = /**
6712
+ * @param {?} value
6713
+ * @return {?}
6714
+ */
6715
+ function (value) {
6716
+ /** @type {?} */
6717
+ var formControl = this.group.get(this.config.name);
6718
+ return formControl.value && formControl.value.includes(value);
6719
+ };
6720
+ /**
6721
+ * @private
6722
+ * @return {?}
6723
+ */
6724
+ GovUkCheckboxesComponent.prototype.setColumns = /**
6725
+ * @private
6726
+ * @return {?}
6727
+ */
6728
+ function () {
6729
+ if (this.config.rows && this.config.rows > 1) {
6730
+ /** @type {?} */
6731
+ var array = [];
6732
+ for (var i = 0; i < this.items.length; i += this.config.rows) {
6733
+ /** @type {?} */
6734
+ var arrayChunk = this.items.slice(i, i + this.config.rows);
6735
+ array.push(arrayChunk);
6736
+ }
6737
+ return array;
6738
+ }
6739
+ else {
6740
+ return [this.items];
6741
+ }
6742
+ };
5676
6743
  GovUkCheckboxesComponent.decorators = [
5677
6744
  { type: i0.Component, args: [{
5678
6745
  selector: 'xuilib-gov-uk-checkboxes',
5679
- template: "<xuilib-gov-uk-form-group-wrapper\n[error]=\"errors\"\n[config]=\"options.config\"\n[group]=\"options.key\">\n<div class=\"govuk-checkboxes\">\n <xuilib-gov-checkbox *ngFor=\"let item of options.items\"\n [group]=\"item.group\"\n [config]=\"item.config\">\n </xuilib-gov-checkbox>\n</div>\n</xuilib-gov-uk-form-group-wrapper>"
6746
+ template: "<div class=\"govuk-form-group gov-uk-input\" [formGroup]=\"group\"\n [ngClass]=\"{'govuk-form-group--error': errorMessage?.isInvalid}\">\n\n <xuilib-gov-label [config]=\"config\"></xuilib-gov-label>\n\n <span *ngIf=\"config.hint\" [id]=\"config.id +'-hint'\" class=\"govuk-hint\">\n {{config.hint}}\n </span>\n\n <xuilib-gov-uk-error-message [config]=\"config\" [errorMessage]=\"errorMessage\"></xuilib-gov-uk-error-message>\n\n <div class=\"govuk-checkboxes govuk-checkboxes--small govuk-checkboxes-multi-column\" data-module=\"govuk-checkboxes\">\n <div class=\"govuk-checkboxes-multi-column__single\" *ngFor=\"let columnItems of columns\">\n <div class=\"govuk-checkboxes__item\" *ngFor=\"let item of columnItems\">\n <input type=\"checkbox\" class=\"govuk-checkboxes__input\"\n [id]=\"item.id\" [name]=\"item.id\" [checked]=\"isChecked(item.value)\" [value]=\"item.value\"\n [attr.aria-describedby]=\"setDescribedBy()\"\n (change)=\"onChecked($event.target.checked, item.value)\"\n >\n <label class=\"govuk-label govuk-checkboxes__label\" [for]=\"item.id\">\n {{ item.label }}\n </label>\n <div *ngIf=\"item.hint\" class=\"govuk-hint govuk-checkboxes__hint\">\n {{ item.hint }}\n </div>\n </div>\n </div>\n </div>\n</div>\n",
6747
+ styles: [".govuk-checkboxes-multi-column{display:flex;flex-wrap:wrap;margin-left:-20px;margin-right:-20px}.govuk-checkboxes-multi-column__single{padding-left:20px;padding-right:20px}"]
5680
6748
  }] }
5681
6749
  ];
5682
6750
  GovUkCheckboxesComponent.propDecorators = {
5683
- options: [{ type: i0.Input }],
5684
- errors: [{ type: i0.Input }]
6751
+ group: [{ type: i0.Input }],
6752
+ config: [{ type: i0.Input }],
6753
+ items: [{ type: i0.Input }],
6754
+ errorMessage: [{ type: i0.Input }]
5685
6755
  };
5686
6756
  return GovUkCheckboxesComponent;
5687
6757
  }());
@@ -5831,57 +6901,6 @@
5831
6901
  return GovUkErrorMessageComponent;
5832
6902
  }());
5833
6903
 
5834
- /**
5835
- * @fileoverview added by tsickle
5836
- * Generated from: lib/gov-ui/util/helpers/html-templates.helper.ts
5837
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5838
- */
5839
- /*
5840
- * Helper Class
5841
- * Used for dynamic templates manipulation
5842
- * */
5843
- var /*
5844
- * Helper Class
5845
- * Used for dynamic templates manipulation
5846
- * */ HtmlTemplatesHelper = /** @class */ (function () {
5847
- function HtmlTemplatesHelper() {
5848
- }
5849
- /*
5850
- * Sets described by string depending if
5851
- * there is an error, error and hit or nothing
5852
- * */
5853
- /*
5854
- * Sets described by string depending if
5855
- * there is an error, error and hit or nothing
5856
- * */
5857
- /**
5858
- * @param {?} errorMessage
5859
- * @param {?} config
5860
- * @return {?}
5861
- */
5862
- HtmlTemplatesHelper.setDescribedBy = /*
5863
- * Sets described by string depending if
5864
- * there is an error, error and hit or nothing
5865
- * */
5866
- /**
5867
- * @param {?} errorMessage
5868
- * @param {?} config
5869
- * @return {?}
5870
- */
5871
- function (errorMessage, config) {
5872
- if (!errorMessage) {
5873
- return config.hint ? config.id + "-hint" : null;
5874
- }
5875
- else if (errorMessage && errorMessage.isInvalid) {
5876
- return config.hint ? config.id + "-hint " + config.id + "-error" : config.id + "-error";
5877
- }
5878
- else {
5879
- return config.hint ? config.id + "-hint" : null;
5880
- }
5881
- };
5882
- return HtmlTemplatesHelper;
5883
- }());
5884
-
5885
6904
  /**
5886
6905
  * @fileoverview added by tsickle
5887
6906
  * Generated from: lib/gov-ui/components/gov-uk-fieldset/gov-uk-fieldset.component.ts
@@ -6029,7 +7048,7 @@
6029
7048
  * @return {?}
6030
7049
  */
6031
7050
  function () {
6032
- this.config.classes = 'govuk-label--m';
7051
+ this.config.classes = typeof (this.config.classes) === 'string' ? this.config.classes : 'govuk-label govuk-label--m';
6033
7052
  };
6034
7053
  /**
6035
7054
  * @return {?}
@@ -6043,7 +7062,7 @@
6043
7062
  GovUkInputComponent.decorators = [
6044
7063
  { type: i0.Component, args: [{
6045
7064
  selector: 'xuilib-gov-uk-input',
6046
- template: "<div class=\"govuk-form-group gov-uk-input\" [formGroup]=\"group\"\n[ngClass]=\"{'govuk-form-group--error': errorMessage?.isInvalid}\">\n\n<xuilib-gov-label [config]=\"config\"></xuilib-gov-label>\n\n<span *ngIf=\"config.hint\" [id]=\"config.id +'-hint'\" class=\"govuk-hint\">\n {{config.hint}}\n</span>\n\n<xuilib-gov-uk-error-message [config]=\"config\" [errorMessage]=\"errorMessage\"></xuilib-gov-uk-error-message>\n\n<input class=\"govuk-input\"\n [ngClass]=\"{'govuk-input--error': errorMessage?.isInvalid}\"\n [id]=\"config.id\"\n [name]=\"config.name\"\n [type]=\"config.type\"\n [attr.aria-invalid]=\"errorMessage?.isInvalid\"\n [formControlName]=\"config.name\"\n [attr.aria-describedby]='setDescribedBy()'>\n</div>\n",
7065
+ template: "<div class=\"govuk-form-group gov-uk-input\" [formGroup]=\"group\"\n[ngClass]=\"{'govuk-form-group--error': errorMessage?.isInvalid}\">\n\n<xuilib-gov-label [config]=\"config\"></xuilib-gov-label>\n\n<span *ngIf=\"config.hint\" [id]=\"config.id +'-hint'\" class=\"govuk-hint\">\n {{config.hint}}\n</span>\n\n<xuilib-gov-uk-error-message [config]=\"config\" [errorMessage]=\"errorMessage\"></xuilib-gov-uk-error-message>\n\n<input class=\"govuk-input\"\n [class.govuk-!-width-full]=\"config.fullWidth\"\n [ngClass]=\"{'govuk-input--error': errorMessage?.isInvalid}\"\n [id]=\"config.id\"\n [name]=\"config.name\"\n [type]=\"config.type\"\n [attr.aria-invalid]=\"errorMessage?.isInvalid\"\n [formControlName]=\"config.name\"\n [attr.aria-describedby]='setDescribedBy()'>\n</div>\n",
6047
7066
  styles: [".gov-uk-input input:disabled{background:#b1b4b6}"]
6048
7067
  }] }
6049
7068
  ];
@@ -6074,7 +7093,8 @@
6074
7093
  GovUkLabelComponent.decorators = [
6075
7094
  { type: i0.Component, args: [{
6076
7095
  selector: 'xuilib-gov-label',
6077
- template: "<h1 *ngIf=\"config.isPageHeading else noHeading\">\n <label *ngIf=\"config.label\" [class]=\"config.classes + ' govuk-label'\"\n [for]=\"config.id\" [innerHTML]=\"config.label\">\n </label>\n</h1>\n<ng-template #noHeading>\n <label *ngIf=\"config.label\" [class]=\"config.classes + ' govuk-label'\"\n [for]=\"config.id\" [innerHTML]=\"config.label\">\n </label>\n</ng-template>"
7096
+ template: "<h1 *ngIf=\"config.isPageHeading else noHeading\">\n <label *ngIf=\"config.label\" [for]=\"config.id\" [class]=\"config.classes + ' govuk-label'\">\n <span>{{ config.label }}</span>\n <span class=\"govuk-label__optional\" *ngIf=\"config.optional\">(optional)</span>\n </label>\n</h1>\n<ng-template #noHeading>\n <label *ngIf=\"config.label\" [for]=\"config.id\" [class]=\"config.classes + ' govuk-label'\">\n <span>{{ config.label }}</span>\n <span class=\"govuk-label__optional\" *ngIf=\"config.optional\">(optional)</span>\n </label>\n</ng-template>\n",
7097
+ styles: [".govuk-label{display:flex;align-items:center;flex-wrap:wrap}.govuk-label__optional{font-weight:400;font-size:16px;display:inline-block;margin-left:.75rem}"]
6078
7098
  }] }
6079
7099
  ];
6080
7100
  /** @nocollapse */
@@ -6193,7 +7213,7 @@
6193
7213
  GovUkSelectComponent.decorators = [
6194
7214
  { type: i0.Component, args: [{
6195
7215
  selector: 'xuilib-gov-select',
6196
- template: "<div class=\"govuk-form-group\" [formGroup]=\"group\"\n[ngClass]=\"{'govuk-form-group--error': errorMessage?.isInvalid}\">\n<xuilib-gov-label [config]=\"config\"></xuilib-gov-label>\n<span *ngIf=\"config.hint\" [id]=\"config.id +'-hint'\" class=\"govuk-hint\">\n {{config.hint}}\n</span>\n<xuilib-gov-uk-error-message [config]=\"config\" [errorMessage]=\"errorMessage\"></xuilib-gov-uk-error-message>\n\n<select class=\"govuk-select\" [id]=\"config.id\" [name]=\"config.id\" [formControlName]=\"config.id\" [attr.aria-describedby]='setDescribedBy()'>\n<option value=\"{{item.value}}\" *ngFor=\"let item of items\">{{item.label}}</option>\n</select>\n</div>"
7216
+ template: "<div class=\"govuk-form-group\" [formGroup]=\"group\"\n[ngClass]=\"{'govuk-form-group--error': errorMessage?.isInvalid}\">\n<xuilib-gov-label [config]=\"config\"></xuilib-gov-label>\n<span *ngIf=\"config.hint\" [id]=\"config.id +'-hint'\" class=\"govuk-hint\">\n {{config.hint}}\n</span>\n<xuilib-gov-uk-error-message [config]=\"config\" [errorMessage]=\"errorMessage\"></xuilib-gov-uk-error-message>\n\n<select class=\"govuk-select\"\n [class.govuk-!-width-full]=\"config.fullWidth\"\n [id]=\"config.id\" [name]=\"config.id\" [formControlName]=\"config.id\" [attr.aria-describedby]='setDescribedBy()'>\n <option value=\"{{item.value}}\" *ngFor=\"let item of items\">{{item.label}}</option>\n</select>\n</div>\n"
6197
7217
  }] }
6198
7218
  ];
6199
7219
  /** @nocollapse */
@@ -6295,27 +7315,25 @@
6295
7315
  * Generated from: lib/gov-ui/components/hmcts-banner/hmcts-banner.component.ts
6296
7316
  * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
6297
7317
  */
6298
- /*
6299
- * Hmcts Banner
6300
- * Responsible for displaying prominent message and related actions
6301
- * @prop message to display
6302
- * @prop type
6303
- * */
6304
7318
  var HmctsBannerComponent = /** @class */ (function () {
6305
7319
  function HmctsBannerComponent() {
7320
+ this.title = '';
7321
+ this.showMessageIcon = false;
7322
+ this.messageBoldText = false;
6306
7323
  }
6307
7324
  HmctsBannerComponent.decorators = [
6308
7325
  { type: i0.Component, args: [{
6309
7326
  selector: 'xuilib-hmcts-banner',
6310
- template: "<div class=\"hmcts-banner hmcts-banner--{{type}}\">\n <svg class=\"hmcts-banner__icon\" fill=\"currentColor\" role=\"presentation\" focusable=\"false\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 25 25\" height=\"25\" width=\"25\">\n <path d=\"M13.6,15.4h-2.3v-4.5h2.3V15.4z M13.6,19.8h-2.3v-2.2h2.3V19.8z M0,23.2h25L12.5,2L0,23.2z\" /></svg>\n <div class=\"hmcts-banner__message\">\n <span class=\"hmcts-banner__assistive\">{{type}}</span>\n {{message}}\n </div>\n</div>",
6311
- styles: [":host{display:block;width:100%}"]
7327
+ template: "<ng-container *ngIf=\"message && type\">\n <div *ngIf=\"title\"\n class=\"hmcts-banner-title hmcts-banner-title--{{ type }}\">\n {{ title }}\n </div>\n <div class=\"hmcts-banner hmcts-banner--{{ type }}\">\n <ng-container *ngIf=\"showMessageIcon\">\n <ng-container [ngSwitch]=\"type\">\n <ng-container *ngSwitchCase=\"'warning'\">\n <svg class=\"hmcts-banner__icon hmcts-banner__icon--warning\" fill=\"currentColor\" role=\"presentation\" focusable=\"false\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 25 25\" height=\"25\" width=\"25\">\n <path d=\"M13.6,15.4h-2.3v-4.5h2.3V15.4z M13.6,19.8h-2.3v-2.2h2.3V19.8z M0,23.2h25L12.5,2L0,23.2z\"></path>\n </svg>\n </ng-container>\n <ng-container *ngSwitchCase=\"'success'\">\n <svg class=\"hmcts-banner__icon hmcts-banner__icon--success\" fill=\"currentColor\" role=\"presentation\" focusable=\"false\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 25 25\" height=\"25\" width=\"25\">\n <path d=\"M25,6.2L8.7,23.2L0,14.1l4-4.2l4.7,4.9L21,2L25,6.2z\"></path>\n </svg>\n </ng-container>\n <ng-container *ngSwitchCase=\"'information'\">\n <svg class=\"hmcts-banner__icon hmcts-banner__icon--information\" fill=\"currentColor\" role=\"presentation\" focusable=\"false\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 25 25\" height=\"25\" width=\"25\">\n <path d=\"M13.7,18.5h-2.4v-2.4h2.4V18.5z M12.5,13.7c-0.7,0-1.2-0.5-1.2-1.2V7.7c0-0.7,0.5-1.2,1.2-1.2s1.2,0.5,1.2,1.2v4.8\n C13.7,13.2,13.2,13.7,12.5,13.7z M12.5,0.5c-6.6,0-12,5.4-12,12s5.4,12,12,12s12-5.4,12-12S19.1,0.5,12.5,0.5z\"></path>\n </svg>\n </ng-container>\n </ng-container>\n </ng-container>\n\n <div class=\"hmcts-banner__message\" [class.hmcts-banner__message--bold]=\"messageBoldText\">\n <span class=\"hmcts-banner__assistive\">{{ type }}</span>\n <span class=\"hmcts-banner__message-text govuk-!-font-weight-bold\">{{ message }}</span>\n </div>\n </div>\n</ng-container>\n",
7328
+ styles: [".hmcts-banner-title{color:#fff;background-color:#1d70b8;font-weight:700;padding:10px 15px 5px}.hmcts-banner-title--success{background-color:#00703c}.hmcts-banner-title--warning{background-color:#d4351c}.hmcts-banner__message--bold{font-weight:700}"]
6312
7329
  }] }
6313
7330
  ];
6314
- /** @nocollapse */
6315
- HmctsBannerComponent.ctorParameters = function () { return []; };
6316
7331
  HmctsBannerComponent.propDecorators = {
7332
+ message: [{ type: i0.Input }],
6317
7333
  type: [{ type: i0.Input }],
6318
- message: [{ type: i0.Input }]
7334
+ title: [{ type: i0.Input }],
7335
+ showMessageIcon: [{ type: i0.Input }],
7336
+ messageBoldText: [{ type: i0.Input }]
6319
7337
  };
6320
7338
  return HmctsBannerComponent;
6321
7339
  }());
@@ -6495,7 +7513,7 @@
6495
7513
  HmctsMainWrapperComponent.decorators = [
6496
7514
  { type: i0.Component, args: [{
6497
7515
  selector: 'xuilib-hmcts-main-wrapper',
6498
- template: "<a *ngIf=\"hasBackLink\" [routerLink]=\"backLink\" (click)=\"onGoBack()\" class=\"govuk-back-link\">Back</a>\n<main id=\"content\" role=\"main\" class=\"govuk-main-wrapper\">\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-two-thirds\">\n <xuilib-hmcts-error-summary\n *ngIf=\"summaryErrors && !summaryErrors.isFromValid\"\n [errorMessages]=\"summaryErrors.items\"\n [header]=\"summaryErrors.header\"\n [showWarningMessage]=\"showWarningMessage\">\n </xuilib-hmcts-error-summary>\n <xuilib-hmcts-banner *ngIf=\"bannerData\" [message]=\"bannerData.message\" [type]=\"bannerData.type\"></xuilib-hmcts-banner>\n <h1 *ngIf=\"title\" class=\"govuk-heading-xl\">{{title}}</h1>\n <ng-content></ng-content>\n </div>\n <div class=\"govuk-grid-column-one-third\" *ngIf=\"actionButtons?.length > 0\">\n <div class=\"hmcts-page-heading__actions-wrapper\">\n <a\n *ngFor=\"let actionButton of actionButtons\"\n (click)=\"actionButton.action()\"\n role=\"button\"\n draggable=\"false\"\n class=\"govuk-button {{ actionButton.class }}\"\n >{{ actionButton.name }}</a>\n </div>\n </div>\n </div>\n</main>\n"
7516
+ template: "<a *ngIf=\"hasBackLink\" [routerLink]=\"backLink\" (click)=\"onGoBack()\" class=\"govuk-back-link\">Back</a>\n<main id=\"content\" role=\"main\" class=\"govuk-main-wrapper\">\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-two-thirds\">\n <xuilib-hmcts-error-summary\n *ngIf=\"summaryErrors && !summaryErrors.isFromValid\"\n [errorMessages]=\"summaryErrors.items\"\n [header]=\"summaryErrors.header\"\n [showWarningMessage]=\"showWarningMessage\">\n </xuilib-hmcts-error-summary>\n <xuilib-hmcts-banner *ngIf=\"bannerData\"\n [type]=\"bannerData.type\"\n [message]=\"bannerData.message\"\n ></xuilib-hmcts-banner>\n <h1 *ngIf=\"title\" class=\"govuk-heading-xl\">{{title}}</h1>\n <ng-content></ng-content>\n </div>\n <div class=\"govuk-grid-column-one-third\" *ngIf=\"actionButtons?.length > 0\">\n <div class=\"hmcts-page-heading__actions-wrapper\">\n <a\n *ngFor=\"let actionButton of actionButtons\"\n (click)=\"actionButton.action()\"\n role=\"button\"\n draggable=\"false\"\n class=\"govuk-button {{ actionButton.class }}\"\n >{{ actionButton.name }}</a>\n </div>\n </div>\n </div>\n</main>\n"
6499
7517
  }] }
6500
7518
  ];
6501
7519
  /** @nocollapse */
@@ -6592,7 +7610,8 @@
6592
7610
  HmctsSubNavigationComponent.decorators = [
6593
7611
  { type: i0.Component, args: [{
6594
7612
  selector: 'xuilib-hmcts-sub-navigation',
6595
- template: "<nav class=\"hmcts-sub-navigation\" attr.aria-label=\"{{label}}\" role=\"navigation\" *ngIf=\"items\">\n <ul class=\"hmcts-sub-navigation__list\">\n <li class=\"hmcts-sub-navigation__item\" *ngFor=\"let item of items\">\n <a data-selector=\"sub-nav-link\" class=\"hmcts-sub-navigation__link\" [routerLink]=\"item.href\"\n [attr.aria-current]=\"item.active ? 'page' : null\">\n {{item.text}}\n </a>\n </li>\n </ul>\n</nav>\n"
7613
+ template: "<nav class=\"hmcts-sub-navigation\" attr.aria-label=\"{{label}}\" role=\"navigation\" *ngIf=\"items\">\n <ul class=\"hmcts-sub-navigation__list\">\n <li class=\"hmcts-sub-navigation__item\" *ngFor=\"let item of items\">\n <a data-selector=\"sub-nav-link\" class=\"hmcts-sub-navigation__link\" [routerLink]=\"item.href\"\n [attr.aria-current]=\"item.active ? 'page' : null\">\n {{item.text}}\n\n <span *ngIf=\"item.roundel && item.roundel > 0 \" class=\"xui-alert-link__number\"> {{item.roundel}} </span>\n </a>\n </li>\n </ul>\n</nav>\n",
7614
+ styles: [".xui-alert-link__number{font-family:nta,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:.875rem;line-height:1.78571;border-radius:50%;background-color:#1d70b8;color:#fff;font-weight:700;width:25px;height:25px;margin-left:5px;text-align:center;display:inline-block;text-decoration:none}"]
6596
7615
  }] }
6597
7616
  ];
6598
7617
  HmctsSubNavigationComponent.propDecorators = {
@@ -6647,6 +7666,33 @@
6647
7666
  return RemoveHostDirective;
6648
7667
  }());
6649
7668
 
7669
+ /**
7670
+ * @fileoverview added by tsickle
7671
+ * Generated from: lib/pipes/capitalize.pipe.ts
7672
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
7673
+ */
7674
+ var CapitalizePipe = /** @class */ (function () {
7675
+ function CapitalizePipe() {
7676
+ }
7677
+ /**
7678
+ * @param {?} value
7679
+ * @return {?}
7680
+ */
7681
+ CapitalizePipe.prototype.transform = /**
7682
+ * @param {?} value
7683
+ * @return {?}
7684
+ */
7685
+ function (value) {
7686
+ /** @type {?} */
7687
+ var lowerCaseString = value.toLowerCase();
7688
+ return lowerCaseString.charAt(0).toUpperCase() + lowerCaseString.slice(1);
7689
+ };
7690
+ CapitalizePipe.decorators = [
7691
+ { type: i0.Pipe, args: [{ name: 'capitalize' },] }
7692
+ ];
7693
+ return CapitalizePipe;
7694
+ }());
7695
+
6650
7696
  /**
6651
7697
  * @fileoverview added by tsickle
6652
7698
  * Generated from: lib/exui-common-lib.module.ts
@@ -6685,7 +7731,10 @@
6685
7731
  FindPersonComponent,
6686
7732
  SearchJudicialsComponent,
6687
7733
  FindLocationComponent,
7734
+ FindTaskNameComponent,
6688
7735
  SearchLocationComponent,
7736
+ FindServiceComponent,
7737
+ SearchServiceComponent,
6689
7738
  SearchVenueComponent,
6690
7739
  PaginationComponent
6691
7740
  ];
@@ -6714,13 +7763,17 @@
6714
7763
  GovUkFileUploadComponent,
6715
7764
  RemoveHostDirective
6716
7765
  ];
7766
+ /** @type {?} */
7767
+ var pipes = [
7768
+ CapitalizePipe
7769
+ ];
6717
7770
  var ɵ0 = windowProvider;
6718
7771
  var ExuiCommonLibModule = /** @class */ (function () {
6719
7772
  function ExuiCommonLibModule() {
6720
7773
  }
6721
7774
  ExuiCommonLibModule.decorators = [
6722
7775
  { type: i0.NgModule, args: [{
6723
- declarations: __spread(COMMON_COMPONENTS, GOV_UI_COMPONENTS),
7776
+ declarations: __spread(COMMON_COMPONENTS, GOV_UI_COMPONENTS, pipes),
6724
7777
  imports: [
6725
7778
  i4.CommonModule,
6726
7779
  forms.FormsModule,
@@ -6736,7 +7789,7 @@
6736
7789
  ],
6737
7790
  exports: __spread(COMMON_COMPONENTS, GOV_UI_COMPONENTS, [
6738
7791
  ngxPagination.PaginatePipe
6739
- ])
7792
+ ], pipes)
6740
7793
  },] }
6741
7794
  ];
6742
7795
  return ExuiCommonLibModule;
@@ -7544,19 +8597,18 @@
7544
8597
  */
7545
8598
  var RoleService = /** @class */ (function () {
7546
8599
  function RoleService() {
7547
- this.pRoles = [];
8600
+ this.pRoles = new rxjs.BehaviorSubject(null);
8601
+ this.roles$ = this.pRoles.asObservable().pipe(operators.skipWhile(( /**
8602
+ * @param {?} item
8603
+ * @return {?}
8604
+ */function (item) { return item === null; })));
7548
8605
  }
7549
8606
  Object.defineProperty(RoleService.prototype, "roles", {
7550
- get: /**
7551
- * @return {?}
7552
- */ function () {
7553
- return this.pRoles;
7554
- },
7555
8607
  set: /**
7556
8608
  * @param {?} roles
7557
8609
  * @return {?}
7558
8610
  */ function (roles) {
7559
- this.pRoles = roles;
8611
+ this.pRoles.next(roles);
7560
8612
  },
7561
8613
  enumerable: true,
7562
8614
  configurable: true
@@ -7597,23 +8649,28 @@
7597
8649
  */
7598
8650
  function (route) {
7599
8651
  var _this = this;
7600
- /** @type {?} */
7601
- var roles = (( /** @type {?} */(route.data.needsRole)));
7602
- /** @type {?} */
7603
- var check = ( /**
7604
- * @param {?} roleRegEx
8652
+ return this.roleService.roles$.pipe(operators.map(( /**
8653
+ * @param {?} roles
7605
8654
  * @return {?}
7606
- */function (roleRegEx) {
8655
+ */function (roles) {
7607
8656
  /** @type {?} */
7608
- var regex = new RegExp(roleRegEx);
7609
- return _this.roleService.roles.some(( /**
7610
- * @param {?} role
8657
+ var canActivateRoles = (( /** @type {?} */(route.data.needsRole)));
8658
+ /** @type {?} */
8659
+ var check = ( /**
8660
+ * @param {?} roleRegEx
7611
8661
  * @return {?}
7612
- */function (role) { return regex.test(role); }));
7613
- });
7614
- /** @type {?} */
7615
- var match = route.data.roleMatching === RoleMatching.ALL ? roles.every(check) : roles.some(check);
7616
- return match || this.router.parseUrl(( /** @type {?} */(route.data.noRoleMatchRedirect)));
8662
+ */function (roleRegEx) {
8663
+ /** @type {?} */
8664
+ var regex = new RegExp(roleRegEx);
8665
+ return roles.some(( /**
8666
+ * @param {?} role
8667
+ * @return {?}
8668
+ */function (role) { return regex.test(role); }));
8669
+ });
8670
+ /** @type {?} */
8671
+ var match = route.data.roleMatching === RoleMatching.ALL ? canActivateRoles.every(check) : canActivateRoles.some(check);
8672
+ return match || _this.router.parseUrl(( /** @type {?} */(route.data.noRoleMatchRedirect)));
8673
+ })));
7617
8674
  };
7618
8675
  RoleGuard.decorators = [
7619
8676
  { type: i0.Injectable, args: [{
@@ -7778,11 +8835,13 @@
7778
8835
  exports.dateValidator = dateValidator;
7779
8836
  exports.radioGroupValidator = radioGroupValidator;
7780
8837
  exports.HmctsSubNavigationComponent = HmctsSubNavigationComponent;
8838
+ exports.HmctsBannerComponent = HmctsBannerComponent;
7781
8839
  exports.BadgeColour = BadgeColour;
7782
8840
  exports.DateBadgeColour = DateBadgeColour;
7783
8841
  exports.SECONDS_IN_A_DAY = SECONDS_IN_A_DAY;
7784
8842
  exports.AnonymousFeatureUser = AnonymousFeatureUser;
7785
8843
  exports.LoggedInFeatureUser = LoggedInFeatureUser;
8844
+ exports.BookingCheckType = BookingCheckType;
7786
8845
  exports.PersonRole = PersonRole;
7787
8846
  exports.RoleCategory = RoleCategory;
7788
8847
  exports.RadioFilterFieldConfig = RadioFilterFieldConfig;
@@ -7810,15 +8869,18 @@
7810
8869
  exports.ɵa = ExuiPageWrapperComponent;
7811
8870
  exports.ɵbl = FindLocationComponent;
7812
8871
  exports.ɵbh = FindPersonComponent;
8872
+ exports.ɵbq = FindServiceComponent;
8873
+ exports.ɵbo = FindTaskNameComponent;
7813
8874
  exports.ɵbd = GenericFilterComponent;
7814
8875
  exports.ɵk = HmctsSessionDialogComponent;
7815
8876
  exports.ɵo = InviteUserFormComponent;
7816
8877
  exports.ɵn = InviteUserPermissionComponent;
7817
8878
  exports.ɵbc = LoadingSpinnerComponent;
7818
- exports.ɵbp = PaginationComponent;
8879
+ exports.ɵbt = PaginationComponent;
7819
8880
  exports.ɵbk = SearchJudicialsComponent;
7820
8881
  exports.ɵbm = SearchLocationComponent;
7821
- exports.ɵbo = SearchVenueComponent;
8882
+ exports.ɵbr = SearchServiceComponent;
8883
+ exports.ɵbs = SearchVenueComponent;
7822
8884
  exports.ɵv = SelectedCaseConfirmComponent;
7823
8885
  exports.ɵt = SelectedCaseListComponent;
7824
8886
  exports.ɵu = SelectedCaseComponent;
@@ -7837,28 +8899,29 @@
7837
8899
  exports.ɵg = FeatureToggleDirective;
7838
8900
  exports.ɵi = LetContext;
7839
8901
  exports.ɵj = LetDirective;
7840
- exports.ɵbz = GovUkCheckboxComponent;
7841
- exports.ɵcf = GovUkCheckboxesComponent;
7842
- exports.ɵce = GovUkDateComponent;
7843
- exports.ɵcc = GovUkErrorMessageComponent;
7844
- exports.ɵcd = GovUkFieldsetComponent;
7845
- exports.ɵck = GovUkFileUploadComponent;
7846
- exports.ɵca = GovUkFormGroupWrapperComponent;
7847
- exports.ɵby = GovUkInputComponent;
7848
- exports.ɵcb = GovUkLabelComponent;
7849
- exports.ɵcg = GovUkRadioComponent;
7850
- exports.ɵch = GovUkRadiosComponent;
7851
- exports.ɵci = GovUkSelectComponent;
7852
- exports.ɵbx = GovukTableComponent;
7853
- exports.ɵcj = GovUkTextareaComponent;
7854
- exports.ɵbw = HmctsBannerComponent;
7855
- exports.ɵbu = HmctsErrorSummaryComponent;
7856
- exports.ɵbq = HmctsIdentityBarComponent;
7857
- exports.ɵbv = HmctsMainWrapperComponent;
7858
- exports.ɵbr = HmctsPaginationComponent;
7859
- exports.ɵbt = HmctsPrimaryNavigationComponent;
7860
- exports.ɵbs = HmctsSubNavigationComponent;
7861
- exports.ɵcl = RemoveHostDirective;
8902
+ exports.ɵcd = GovUkCheckboxComponent;
8903
+ exports.ɵcj = GovUkCheckboxesComponent;
8904
+ exports.ɵci = GovUkDateComponent;
8905
+ exports.ɵcg = GovUkErrorMessageComponent;
8906
+ exports.ɵch = GovUkFieldsetComponent;
8907
+ exports.ɵco = GovUkFileUploadComponent;
8908
+ exports.ɵce = GovUkFormGroupWrapperComponent;
8909
+ exports.ɵcc = GovUkInputComponent;
8910
+ exports.ɵcf = GovUkLabelComponent;
8911
+ exports.ɵck = GovUkRadioComponent;
8912
+ exports.ɵcl = GovUkRadiosComponent;
8913
+ exports.ɵcm = GovUkSelectComponent;
8914
+ exports.ɵcb = GovukTableComponent;
8915
+ exports.ɵcn = GovUkTextareaComponent;
8916
+ exports.ɵca = HmctsBannerComponent;
8917
+ exports.ɵby = HmctsErrorSummaryComponent;
8918
+ exports.ɵbu = HmctsIdentityBarComponent;
8919
+ exports.ɵbz = HmctsMainWrapperComponent;
8920
+ exports.ɵbv = HmctsPaginationComponent;
8921
+ exports.ɵbx = HmctsPrimaryNavigationComponent;
8922
+ exports.ɵbw = HmctsSubNavigationComponent;
8923
+ exports.ɵcp = RemoveHostDirective;
8924
+ exports.ɵcq = CapitalizePipe;
7862
8925
  exports.ɵr = CaseSharingStateService;
7863
8926
  exports.ɵbg = CookieService;
7864
8927
  exports.ɵh = FeatureToggleService;
@@ -7866,6 +8929,7 @@
7866
8929
  exports.ɵbi = FindAPersonService;
7867
8930
  exports.ɵbn = LocationService;
7868
8931
  exports.ɵbj = SessionStorageService;
8932
+ exports.ɵbp = TaskNameService;
7869
8933
 
7870
8934
  Object.defineProperty(exports, '__esModule', { value: true });
7871
8935