@hmcts/rpx-xui-common-lib 1.8.5-angular-upgrade-r3.5 → 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 (119) hide show
  1. package/bundles/hmcts-rpx-xui-common-lib.umd.js +1124 -181
  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 +3 -3
  7. package/esm2015/lib/components/find-service/find-service.component.js +176 -0
  8. package/esm2015/lib/components/find-task-name/find-task-name.component.js +228 -0
  9. package/esm2015/lib/components/generic-filter/generic-filter-utils.js +2 -2
  10. package/esm2015/lib/components/generic-filter/generic-filter.component.js +361 -15
  11. package/esm2015/lib/components/search-location/search-location.component.js +3 -3
  12. package/esm2015/lib/components/search-service/search-service.component.js +43 -0
  13. package/esm2015/lib/components/share-case/share-case.component.js +10 -3
  14. package/esm2015/lib/exui-common-lib.module.js +16 -3
  15. package/esm2015/lib/gov-ui/components/gov-uk-checkboxes/gov-uk-checkboxes.component.js +80 -6
  16. package/esm2015/lib/gov-ui/components/gov-uk-input/gov-uk-input.component.js +3 -3
  17. package/esm2015/lib/gov-ui/components/gov-uk-label/gov-uk-label.component.js +3 -2
  18. package/esm2015/lib/gov-ui/components/gov-uk-radios/gov-uk-radios.component.js +1 -1
  19. package/esm2015/lib/gov-ui/components/gov-uk-select/gov-uk-select.component.js +2 -2
  20. package/esm2015/lib/gov-ui/components/hmcts-banner/hmcts-banner-info.interface.js +22 -0
  21. package/esm2015/lib/gov-ui/components/hmcts-banner/hmcts-banner.component.js +19 -14
  22. package/esm2015/lib/gov-ui/components/hmcts-main-wrapper/hmcts-main-wrapper.component.js +2 -2
  23. package/esm2015/lib/gov-ui/components/index.js +2 -2
  24. package/esm2015/lib/gov-ui/components/public_api.js +2 -1
  25. package/esm2015/lib/gov-ui/index.js +2 -2
  26. package/esm2015/lib/gov-ui/models/checkboxes-model.js +6 -8
  27. package/esm2015/lib/gov-ui/models/gov-ui-config-model.js +5 -1
  28. package/esm2015/lib/gov-ui/models/public_api.js +1 -2
  29. package/esm2015/lib/gov-ui/models/radio-buttons.model.js +22 -0
  30. package/esm2015/lib/gov-ui/public_api.js +2 -2
  31. package/esm2015/lib/models/filter.model.js +65 -3
  32. package/esm2015/lib/models/person.model.js +2 -2
  33. package/esm2015/lib/models/task-name.model.js +16 -0
  34. package/esm2015/lib/pipes/capitalize.pipe.js +21 -0
  35. package/esm2015/lib/services/filter/filter.service.js +17 -3
  36. package/esm2015/lib/services/find-person/find-person.service.js +3 -3
  37. package/esm2015/lib/services/role-guard/role.guard.js +22 -15
  38. package/esm2015/lib/services/role-guard/role.service.js +13 -13
  39. package/esm2015/lib/services/storage/session-storage/session-storage.service.js +55 -0
  40. package/esm2015/lib/services/task-name/task-name.service.js +65 -0
  41. package/esm2015/public-api.js +2 -2
  42. package/esm5/hmcts-rpx-xui-common-lib.js +32 -27
  43. package/esm5/lib/components/find-location/find-location.component.js +3 -3
  44. package/esm5/lib/components/find-service/find-service.component.js +218 -0
  45. package/esm5/lib/components/find-task-name/find-task-name.component.js +243 -0
  46. package/esm5/lib/components/generic-filter/generic-filter-utils.js +2 -2
  47. package/esm5/lib/components/generic-filter/generic-filter.component.js +397 -14
  48. package/esm5/lib/components/search-location/search-location.component.js +3 -3
  49. package/esm5/lib/components/search-service/search-service.component.js +49 -0
  50. package/esm5/lib/components/share-case/share-case.component.js +10 -3
  51. package/esm5/lib/exui-common-lib.module.js +14 -3
  52. package/esm5/lib/gov-ui/components/gov-uk-checkboxes/gov-uk-checkboxes.component.js +100 -6
  53. package/esm5/lib/gov-ui/components/gov-uk-input/gov-uk-input.component.js +3 -3
  54. package/esm5/lib/gov-ui/components/gov-uk-label/gov-uk-label.component.js +3 -2
  55. package/esm5/lib/gov-ui/components/gov-uk-radios/gov-uk-radios.component.js +1 -1
  56. package/esm5/lib/gov-ui/components/gov-uk-select/gov-uk-select.component.js +2 -2
  57. package/esm5/lib/gov-ui/components/hmcts-banner/hmcts-banner-info.interface.js +22 -0
  58. package/esm5/lib/gov-ui/components/hmcts-banner/hmcts-banner.component.js +17 -13
  59. package/esm5/lib/gov-ui/components/hmcts-main-wrapper/hmcts-main-wrapper.component.js +2 -2
  60. package/esm5/lib/gov-ui/components/index.js +2 -2
  61. package/esm5/lib/gov-ui/components/public_api.js +2 -1
  62. package/esm5/lib/gov-ui/index.js +2 -2
  63. package/esm5/lib/gov-ui/models/checkboxes-model.js +6 -8
  64. package/esm5/lib/gov-ui/models/gov-ui-config-model.js +5 -1
  65. package/esm5/lib/gov-ui/models/public_api.js +1 -2
  66. package/esm5/lib/gov-ui/models/radio-buttons.model.js +22 -0
  67. package/esm5/lib/gov-ui/public_api.js +2 -2
  68. package/esm5/lib/models/filter.model.js +65 -3
  69. package/esm5/lib/models/person.model.js +2 -2
  70. package/esm5/lib/models/task-name.model.js +16 -0
  71. package/esm5/lib/pipes/capitalize.pipe.js +29 -0
  72. package/esm5/lib/services/filter/filter.service.js +21 -3
  73. package/esm5/lib/services/find-person/find-person.service.js +3 -3
  74. package/esm5/lib/services/role-guard/role.guard.js +22 -15
  75. package/esm5/lib/services/role-guard/role.service.js +13 -13
  76. package/esm5/lib/services/{session-storage → storage/session-storage}/session-storage.service.js +2 -2
  77. package/esm5/lib/services/task-name/task-name.service.js +70 -0
  78. package/esm5/public-api.js +2 -2
  79. package/fesm2015/hmcts-rpx-xui-common-lib.js +990 -144
  80. package/fesm2015/hmcts-rpx-xui-common-lib.js.map +1 -1
  81. package/fesm5/hmcts-rpx-xui-common-lib.js +1134 -161
  82. package/fesm5/hmcts-rpx-xui-common-lib.js.map +1 -1
  83. package/hmcts-rpx-xui-common-lib.d.ts +30 -25
  84. package/hmcts-rpx-xui-common-lib.metadata.json +1 -1
  85. package/lib/components/find-service/find-service.component.d.ts +22 -0
  86. package/lib/components/find-task-name/find-task-name.component.d.ts +41 -0
  87. package/lib/components/generic-filter/generic-filter-utils.d.ts +2 -5
  88. package/lib/components/generic-filter/generic-filter.component.d.ts +12 -2
  89. package/lib/components/search-location/search-location.component.d.ts +1 -1
  90. package/lib/components/search-service/search-service.component.d.ts +7 -0
  91. package/lib/components/share-case/share-case.component.d.ts +2 -0
  92. package/lib/exui-common-lib.module.d.ts +4 -3
  93. package/lib/gov-ui/components/gov-uk-checkboxes/gov-uk-checkboxes.component.d.ts +14 -5
  94. package/lib/gov-ui/components/gov-uk-input/gov-uk-input.component.d.ts +1 -2
  95. package/lib/gov-ui/components/gov-uk-label/gov-uk-label.component.d.ts +1 -0
  96. package/lib/gov-ui/components/gov-uk-radios/gov-uk-radios.component.d.ts +2 -2
  97. package/lib/gov-ui/components/hmcts-banner/hmcts-banner-info.interface.d.ts +7 -0
  98. package/lib/gov-ui/components/hmcts-banner/hmcts-banner.component.d.ts +4 -2
  99. package/lib/gov-ui/components/hmcts-main-wrapper/hmcts-main-wrapper.component.d.ts +3 -3
  100. package/lib/gov-ui/components/public_api.d.ts +1 -0
  101. package/lib/gov-ui/models/checkboxes-model.d.ts +4 -7
  102. package/lib/gov-ui/models/gov-ui-config-model.d.ts +2 -0
  103. package/lib/gov-ui/models/public_api.d.ts +0 -1
  104. package/lib/gov-ui/models/radio-buttons.model.d.ts +9 -0
  105. package/lib/models/filter.model.d.ts +30 -7
  106. package/lib/models/person.model.d.ts +1 -1
  107. package/lib/models/task-name.model.d.ts +4 -0
  108. package/lib/pipes/capitalize.pipe.d.ts +4 -0
  109. package/lib/services/filter/filter.service.d.ts +1 -0
  110. package/lib/services/find-person/find-person.service.d.ts +1 -1
  111. package/lib/services/role-guard/role.guard.d.ts +2 -1
  112. package/lib/services/role-guard/role.service.d.ts +3 -1
  113. package/lib/services/{session-storage → storage/session-storage}/session-storage.service.d.ts +0 -0
  114. package/lib/services/task-name/task-name.service.d.ts +14 -0
  115. package/package.json +1 -1
  116. package/esm2015/lib/gov-ui/models/banner-data-model.js +0 -16
  117. package/esm2015/lib/services/session-storage/session-storage.service.js +0 -55
  118. package/esm5/lib/gov-ui/models/banner-data-model.js +0 -16
  119. package/lib/gov-ui/models/banner-data-model.d.ts +0 -4
@@ -709,7 +709,7 @@
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
715
  if (this.isSameUser(id)) {
@@ -748,6 +748,24 @@
748
748
  }
749
749
  return this.streams[id].asObservable();
750
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
+ };
751
769
  /**
752
770
  * @private
753
771
  * @param {?} setting
@@ -773,7 +791,7 @@
773
791
  * @return {?}
774
792
  */
775
793
  function (setting) {
776
- window.sessionStorage.setItem(setting.id, JSON.stringify(setting));
794
+ sessionStorage.setItem(setting.id, JSON.stringify(setting));
777
795
  };
778
796
  /**
779
797
  * @private
@@ -850,7 +868,7 @@
850
868
  return values.length && values.filter(( /**
851
869
  * @param {?} value
852
870
  * @return {?}
853
- */function (value) { return value; })).length >= min ? null : { minLength: true };
871
+ */function (value) { return value; })).length >= min ? null : { minlength: true };
854
872
  });
855
873
  }
856
874
  /**
@@ -900,6 +918,7 @@
900
918
  this.filterService = filterService;
901
919
  this.fb = fb;
902
920
  this.submitted = false;
921
+ this.previousSelectedNestedCheckbox = [];
903
922
  }
904
923
  Object.defineProperty(GenericFilterComponent.prototype, "config", {
905
924
  get: /**
@@ -954,10 +973,10 @@
954
973
  function (field) {
955
974
  /** @type {?} */
956
975
  var validators = [];
957
- if (field && field.minSelected) {
976
+ if (field && field.minSelected > 0) {
958
977
  validators.push(minSelectedValidator(field.minSelected));
959
978
  }
960
- if (field && field.maxSelected) {
979
+ if (field && field.maxSelected > 0) {
961
980
  validators.push(maxSelectedValidator(field.maxSelected));
962
981
  }
963
982
  return validators;
@@ -978,6 +997,16 @@
978
997
  this.formSub = this.form.valueChanges.subscribe(( /**
979
998
  * @return {?}
980
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
+ }
981
1010
  };
982
1011
  /**
983
1012
  * @return {?}
@@ -1158,6 +1187,11 @@
1158
1187
  * @return {?}
1159
1188
  */
1160
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
+ }
1161
1195
  if (field.radioSelectionChange && typeof field.radioSelectionChange === 'string') {
1162
1196
  var _a = __read(field.enableCondition.split('='), 2), name_3 = _a[0], value = _a[1];
1163
1197
  this.form.get(name_3).patchValue(value);
@@ -1179,6 +1213,9 @@
1179
1213
  this.filterService.persist(settings, this.config.persistence);
1180
1214
  this.filterService.givenErrors.next(null);
1181
1215
  this.submitted = false;
1216
+ if (this.config.cancelButtonCallback) {
1217
+ this.config.cancelButtonCallback();
1218
+ }
1182
1219
  };
1183
1220
  /**
1184
1221
  * @param {?} values
@@ -1224,6 +1261,32 @@
1224
1261
  }
1225
1262
  }
1226
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
+ };
1227
1290
  /**
1228
1291
  * @param {?} event
1229
1292
  * @param {?} form
@@ -1325,6 +1388,56 @@
1325
1388
  }
1326
1389
  }
1327
1390
  }
1391
+ if (field.name === 'user-services') {
1392
+ this.startFilterSkillsByServices(form, field);
1393
+ }
1394
+ else if (field.name === 'user-skills') {
1395
+ if (isChecked) {
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);
1406
+ }
1407
+ else {
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);
1438
+ }
1439
+ }));
1440
+ this.filterSkillsByServices(servicesArray, this.config);
1328
1441
  };
1329
1442
  /**
1330
1443
  * @private
@@ -1437,14 +1550,14 @@
1437
1550
  this.form.addControl('findPersonControl', findPersonControl);
1438
1551
  }
1439
1552
  var _loop_1 = function (field) {
1440
- if (field.type === 'checkbox' || field.type === 'checkbox-large') {
1553
+ if (field.type === 'checkbox' || field.type === 'checkbox-large' || field.type === 'nested-checkbox') {
1441
1554
  /** @type {?} */
1442
1555
  var formArray = this_1.buildCheckBoxFormArray(field, settings);
1443
1556
  this_1.form.addControl(field.name, formArray);
1444
1557
  }
1445
- else if (field.type === 'find-location') {
1558
+ else if (field.type === 'find-location' || field.type === 'find-service') {
1446
1559
  /** @type {?} */
1447
- var formArray = this_1.buildFindLocationFormArray(field, settings);
1560
+ var formArray = this_1.buildFormArray(field, settings);
1448
1561
  this_1.form.addControl(field.name, formArray);
1449
1562
  }
1450
1563
  else {
@@ -1452,6 +1565,12 @@
1452
1565
  var validators = [];
1453
1566
  if (field.minSelected && field.minSelected > 0) {
1454
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
+ }
1455
1574
  }
1456
1575
  /** @type {?} */
1457
1576
  var defaultValue = null;
@@ -1483,7 +1602,7 @@
1483
1602
  });
1484
1603
  this_1.form.addControl(field.name, formGroup);
1485
1604
  }
1486
- else {
1605
+ else if (field.type !== 'group-title') {
1487
1606
  /** @type {?} */
1488
1607
  var control = new forms.FormControl(defaultValue, validators);
1489
1608
  this_1.form.addControl(field.name, control);
@@ -1579,7 +1698,7 @@
1579
1698
  * @param {?} settings
1580
1699
  * @return {?}
1581
1700
  */
1582
- GenericFilterComponent.prototype.buildFindLocationFormArray = /**
1701
+ GenericFilterComponent.prototype.buildFormArray = /**
1583
1702
  * @private
1584
1703
  * @param {?} field
1585
1704
  * @param {?} settings
@@ -1647,7 +1766,7 @@
1647
1766
  * @param {?} f
1648
1767
  * @return {?}
1649
1768
  */function (f) { return f.name === name; }));
1650
- if (field.type === 'find-location') {
1769
+ if (field.type === 'find-location' || field.type === 'find-service') {
1651
1770
  return { value: values, name: name };
1652
1771
  }
1653
1772
  else {
@@ -1678,11 +1797,11 @@
1678
1797
  var field = _c.value;
1679
1798
  /** @type {?} */
1680
1799
  var formGroup = form.get(field.name);
1681
- if (formGroup && formGroup.errors && formGroup.errors.minLength) {
1800
+ if (formGroup && formGroup.errors && (formGroup.errors.minlength || formGroup.errors.required)) {
1682
1801
  errors.push({ name: field.name, error: field.minSelectedError });
1683
1802
  }
1684
- if (formGroup && formGroup.errors && formGroup.errors.maxLength) {
1685
- 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 });
1686
1805
  }
1687
1806
  }
1688
1807
  }
@@ -1699,17 +1818,267 @@
1699
1818
  throw e_8.error;
1700
1819
  }
1701
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
+ }));
1702
1833
  if (errors.length) {
1703
1834
  this.filterService.givenErrors.next(errors);
1704
1835
  }
1705
1836
  };
1837
+ /**
1838
+ * @return {?}
1839
+ */
1840
+ GenericFilterComponent.prototype.initValuesFromCacheForSkillsByServices = /**
1841
+ * @return {?}
1842
+ */
1843
+ function () {
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);
1873
+ };
1874
+ /**
1875
+ * @param {?} services
1876
+ * @param {?} config
1877
+ * @return {?}
1878
+ */
1879
+ GenericFilterComponent.prototype.filterSkillsByServices = /**
1880
+ * @param {?} services
1881
+ * @param {?} config
1882
+ * @return {?}
1883
+ */
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
+ };
1706
2075
  GenericFilterComponent.decorators = [
1707
2076
  { type: i0.Component, args: [{
1708
2077
  selector: 'xuilib-generic-filter',
1709
- 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 [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.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",
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",
1710
2079
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
1711
2080
  encapsulation: i0.ViewEncapsulation.None,
1712
- 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}"]
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%}"]
1713
2082
  }] }
1714
2083
  ];
1715
2084
  /** @nocollapse */
@@ -3114,6 +3483,7 @@
3114
3483
  this.users = []; // users of this organisation the cases can be shared with
3115
3484
  // users of this organisation the cases can be shared with
3116
3485
  this.confirmLink = '';
3486
+ this.showRemoveUsers = false;
3117
3487
  this.unselect = new i0.EventEmitter();
3118
3488
  this.synchronizeStore = new i0.EventEmitter();
3119
3489
  }
@@ -3276,8 +3646,8 @@
3276
3646
  ShareCaseComponent.decorators = [
3277
3647
  { type: i0.Component, args: [{
3278
3648
  selector: 'xuilib-share-case',
3279
- 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",
3280
- 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%}"]
3281
3651
  }] }
3282
3652
  ];
3283
3653
  /** @nocollapse */
@@ -3291,6 +3661,8 @@
3291
3661
  shareCases$: [{ type: i0.Input }],
3292
3662
  users: [{ type: i0.Input }],
3293
3663
  confirmLink: [{ type: i0.Input }],
3664
+ addUserLabel: [{ type: i0.Input }],
3665
+ showRemoveUsers: [{ type: i0.Input }],
3294
3666
  unselect: [{ type: i0.Output }],
3295
3667
  synchronizeStore: [{ type: i0.Output }],
3296
3668
  userSelect: [{ type: i0.ViewChild, args: [UserSelectComponent,] }]
@@ -3876,7 +4248,7 @@
3876
4248
  JUDICIAL: "Judicial",
3877
4249
  CASEWORKER: "Legal Ops",
3878
4250
  ADMIN: "Admin",
3879
- CTSC: "CTSC",
4251
+ CTSC: "CTSC User",
3880
4252
  ALL: "All",
3881
4253
  };
3882
4254
  /** @enum {string} */
@@ -3977,7 +4349,7 @@
3977
4349
 
3978
4350
  /**
3979
4351
  * @fileoverview added by tsickle
3980
- * Generated from: lib/services/session-storage/session-storage.service.ts
4352
+ * Generated from: lib/services/storage/session-storage/session-storage.service.ts
3981
4353
  * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
3982
4354
  */
3983
4355
  var SessionStorageService = /** @class */ (function () {
@@ -4285,7 +4657,7 @@
4285
4657
  { type: i0.Component, args: [{
4286
4658
  selector: 'exui-search-location',
4287
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",
4288
- 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}"]
4289
4661
  }] }
4290
4662
  ];
4291
4663
  /** @nocollapse */
@@ -4542,8 +4914,8 @@
4542
4914
  FindLocationComponent.decorators = [
4543
4915
  { type: i0.Component, args: [{
4544
4916
  selector: 'xuilib-find-location',
4545
- 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 [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()\" 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",
4546
- 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}"]
4547
4919
  }] }
4548
4920
  ];
4549
4921
  FindLocationComponent.propDecorators = {
@@ -5257,78 +5629,482 @@
5257
5629
 
5258
5630
  /**
5259
5631
  * @fileoverview added by tsickle
5260
- * Generated from: lib/components/search-judicials/search-judicials.component.ts
5632
+ * Generated from: lib/components/find-service/find-service.component.ts
5261
5633
  * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5262
5634
  */
5263
- var SearchJudicialsComponent = /** @class */ (function () {
5264
- function SearchJudicialsComponent(judicialService, fb) {
5265
- this.judicialService = judicialService;
5266
- this.disabled = null;
5267
- this.selectedJudicials = [];
5268
- this.submitted = true;
5269
- this.placeholderContent = '';
5270
- this.showAutocomplete = false;
5271
- this.judicialChanged = new i0.EventEmitter();
5272
- this.idValue = '';
5273
- this.errorMessage = 'You must select a name';
5274
- this.serviceId = '';
5275
- this.minSearchCharacters = 3;
5276
- this.keyUpSubject$ = new rxjs.Subject();
5277
- this.searchInProgress = false;
5278
- this.formGroup = fb.group({
5279
- formControl: [null],
5280
- selectedFormControl: [null]
5281
- });
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;
5282
5643
  }
5283
5644
  /**
5284
5645
  * @return {?}
5285
5646
  */
5286
- SearchJudicialsComponent.prototype.ngOnInit = /**
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 = /**
5287
5661
  * @return {?}
5288
5662
  */
5289
5663
  function () {
5290
5664
  var _this = this;
5291
- this.displayedJudicials = [];
5292
- if (this.control) {
5293
- if (this.formGroup && this.formGroup.controls) {
5294
- this.formGroup.controls.selectedFormControl = this.control;
5295
- this.formGroup.controls.formControl.setValue(this.getControlValueDisplayText());
5296
- }
5665
+ if (this.tempSelectedService === null) {
5666
+ return;
5297
5667
  }
5298
- this.keyUpSubject$.pipe(operators.debounceTime(500)).subscribe(( /**
5299
- * @param {?} searchValue
5668
+ this.selectedServices = __spread(this.selectedServices, [this.tempSelectedService]);
5669
+ this.addSelectedServicesToForm([this.tempSelectedService]);
5670
+ this.services = this.services.filter(( /**
5671
+ * @param {?} s
5300
5672
  * @return {?}
5301
- */function (searchValue) { return _this.search(( /** @type {?} */(searchValue))); }));
5673
+ */function (s) { return s.key !== _this.tempSelectedService.key; }));
5674
+ this.tempSelectedService = null;
5675
+ this.serviceFieldChanged.emit();
5302
5676
  };
5303
5677
  /**
5678
+ * @param {?} service
5304
5679
  * @return {?}
5305
5680
  */
5306
- SearchJudicialsComponent.prototype.onKeyDown = /**
5681
+ FindServiceComponent.prototype.removeService = /**
5682
+ * @param {?} service
5307
5683
  * @return {?}
5308
5684
  */
5309
- function () {
5310
- this.judicialChanged.emit();
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
+ }
5311
5705
  };
5312
5706
  /**
5313
- * @param {?} event
5707
+ * @param {?} service
5314
5708
  * @return {?}
5315
5709
  */
5316
- SearchJudicialsComponent.prototype.onKeyUp = /**
5317
- * @param {?} event
5710
+ FindServiceComponent.prototype.onServiceSelected = /**
5711
+ * @param {?} service
5318
5712
  * @return {?}
5319
5713
  */
5320
- function (event) {
5321
- this.showAutocomplete = false;
5322
- this.keyUpSubject$.next(event.target.value);
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
+ }
5323
5733
  };
5324
5734
  /**
5735
+ * @private
5325
5736
  * @return {?}
5326
5737
  */
5327
- SearchJudicialsComponent.prototype.onFocus = /**
5738
+ FindServiceComponent.prototype.removeSelectedValues = /**
5739
+ * @private
5328
5740
  * @return {?}
5329
5741
  */
5330
5742
  function () {
5331
- this.showAutocomplete = false;
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
5975
+ * @return {?}
5976
+ */
5977
+ FindTaskNameComponent.prototype.onSelectionChange = /**
5978
+ * @param {?} selectedTaskName
5979
+ * @return {?}
5980
+ */
5981
+ function (selectedTaskName) {
5982
+ if (selectedTaskName) {
5983
+ this.taskNameSelected.emit(selectedTaskName);
5984
+ this.findTaskNameControl.setValue(selectedTaskName);
5985
+ }
5986
+ };
5987
+ /**
5988
+ * @return {?}
5989
+ */
5990
+ FindTaskNameComponent.prototype.onInput = /**
5991
+ * @return {?}
5992
+ */
5993
+ function () {
5994
+ this.taskNameFieldChanged.emit();
5995
+ };
5996
+ FindTaskNameComponent.decorators = [
5997
+ { type: i0.Component, args: [{
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: [""]
6001
+ }] }
6002
+ ];
6003
+ /** @nocollapse */
6004
+ FindTaskNameComponent.ctorParameters = function () {
6005
+ return [
6006
+ { type: i0.ChangeDetectorRef },
6007
+ { type: TaskNameService }
6008
+ ];
6009
+ };
6010
+ FindTaskNameComponent.propDecorators = {
6011
+ taskNameSelected: [{ type: i0.Output }],
6012
+ taskNameFieldChanged: [{ type: i0.Output }],
6013
+ title: [{ type: i0.Input }],
6014
+ boldTitle: [{ type: i0.Input }],
6015
+ subTitle: [{ type: i0.Input }],
6016
+ domain: [{ type: i0.Input }],
6017
+ findTaskNameGroup: [{ type: i0.Input }],
6018
+ selectedTaskName: [{ type: i0.Input }],
6019
+ submitted: [{ type: i0.Input }],
6020
+ userIncluded: [{ type: i0.Input }],
6021
+ assignedUser: [{ type: i0.Input }],
6022
+ placeholderContent: [{ type: i0.Input }],
6023
+ isNoResultsShown: [{ type: i0.Input }],
6024
+ showUpdatedColor: [{ type: i0.Input }],
6025
+ selectedTaskNames: [{ type: i0.Input }],
6026
+ errorMessage: [{ type: i0.Input }],
6027
+ idValue: [{ type: i0.Input }],
6028
+ services: [{ type: i0.Input }],
6029
+ disabled: [{ type: i0.Input }]
6030
+ };
6031
+ return FindTaskNameComponent;
6032
+ }());
6033
+
6034
+ /**
6035
+ * @fileoverview added by tsickle
6036
+ * Generated from: lib/components/search-judicials/search-judicials.component.ts
6037
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
6038
+ */
6039
+ var SearchJudicialsComponent = /** @class */ (function () {
6040
+ function SearchJudicialsComponent(judicialService, fb) {
6041
+ this.judicialService = judicialService;
6042
+ this.disabled = null;
6043
+ this.selectedJudicials = [];
6044
+ this.submitted = true;
6045
+ this.placeholderContent = '';
6046
+ this.showAutocomplete = false;
6047
+ this.judicialChanged = new i0.EventEmitter();
6048
+ this.idValue = '';
6049
+ this.errorMessage = 'You must select a name';
6050
+ this.serviceId = '';
6051
+ this.minSearchCharacters = 3;
6052
+ this.keyUpSubject$ = new rxjs.Subject();
6053
+ this.searchInProgress = false;
6054
+ this.formGroup = fb.group({
6055
+ formControl: [null],
6056
+ selectedFormControl: [null]
6057
+ });
6058
+ }
6059
+ /**
6060
+ * @return {?}
6061
+ */
6062
+ SearchJudicialsComponent.prototype.ngOnInit = /**
6063
+ * @return {?}
6064
+ */
6065
+ function () {
6066
+ var _this = this;
6067
+ this.displayedJudicials = [];
6068
+ if (this.control) {
6069
+ if (this.formGroup && this.formGroup.controls) {
6070
+ this.formGroup.controls.selectedFormControl = this.control;
6071
+ this.formGroup.controls.formControl.setValue(this.getControlValueDisplayText());
6072
+ }
6073
+ }
6074
+ this.keyUpSubject$.pipe(operators.debounceTime(500)).subscribe(( /**
6075
+ * @param {?} searchValue
6076
+ * @return {?}
6077
+ */function (searchValue) { return _this.search(( /** @type {?} */(searchValue))); }));
6078
+ };
6079
+ /**
6080
+ * @return {?}
6081
+ */
6082
+ SearchJudicialsComponent.prototype.onKeyDown = /**
6083
+ * @return {?}
6084
+ */
6085
+ function () {
6086
+ this.judicialChanged.emit();
6087
+ };
6088
+ /**
6089
+ * @param {?} event
6090
+ * @return {?}
6091
+ */
6092
+ SearchJudicialsComponent.prototype.onKeyUp = /**
6093
+ * @param {?} event
6094
+ * @return {?}
6095
+ */
6096
+ function (event) {
6097
+ this.showAutocomplete = false;
6098
+ this.keyUpSubject$.next(event.target.value);
6099
+ };
6100
+ /**
6101
+ * @return {?}
6102
+ */
6103
+ SearchJudicialsComponent.prototype.onFocus = /**
6104
+ * @return {?}
6105
+ */
6106
+ function () {
6107
+ this.showAutocomplete = false;
5332
6108
  };
5333
6109
  Object.defineProperty(SearchJudicialsComponent.prototype, "displayedJudicialsDuplicationFiltered", {
5334
6110
  get: /**
@@ -5494,6 +6270,46 @@
5494
6270
  return SearchJudicialsComponent;
5495
6271
  }());
5496
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
+
5497
6313
  /**
5498
6314
  * @fileoverview added by tsickle
5499
6315
  * Generated from: lib/components/search-venue/search-venue.component.ts
@@ -5777,6 +6593,57 @@
5777
6593
  return GovUkCheckboxComponent;
5778
6594
  }());
5779
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
+
5780
6647
  /**
5781
6648
  * @fileoverview added by tsickle
5782
6649
  * Generated from: lib/gov-ui/components/gov-uk-checkboxes/gov-uk-checkboxes.component.ts
@@ -5792,15 +6659,99 @@
5792
6659
  var GovUkCheckboxesComponent = /** @class */ (function () {
5793
6660
  function GovUkCheckboxesComponent() {
5794
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
+ };
5795
6743
  GovUkCheckboxesComponent.decorators = [
5796
6744
  { type: i0.Component, args: [{
5797
6745
  selector: 'xuilib-gov-uk-checkboxes',
5798
- 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}"]
5799
6748
  }] }
5800
6749
  ];
5801
6750
  GovUkCheckboxesComponent.propDecorators = {
5802
- options: [{ type: i0.Input }],
5803
- errors: [{ type: i0.Input }]
6751
+ group: [{ type: i0.Input }],
6752
+ config: [{ type: i0.Input }],
6753
+ items: [{ type: i0.Input }],
6754
+ errorMessage: [{ type: i0.Input }]
5804
6755
  };
5805
6756
  return GovUkCheckboxesComponent;
5806
6757
  }());
@@ -5950,57 +6901,6 @@
5950
6901
  return GovUkErrorMessageComponent;
5951
6902
  }());
5952
6903
 
5953
- /**
5954
- * @fileoverview added by tsickle
5955
- * Generated from: lib/gov-ui/util/helpers/html-templates.helper.ts
5956
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5957
- */
5958
- /*
5959
- * Helper Class
5960
- * Used for dynamic templates manipulation
5961
- * */
5962
- var /*
5963
- * Helper Class
5964
- * Used for dynamic templates manipulation
5965
- * */ HtmlTemplatesHelper = /** @class */ (function () {
5966
- function HtmlTemplatesHelper() {
5967
- }
5968
- /*
5969
- * Sets described by string depending if
5970
- * there is an error, error and hit or nothing
5971
- * */
5972
- /*
5973
- * Sets described by string depending if
5974
- * there is an error, error and hit or nothing
5975
- * */
5976
- /**
5977
- * @param {?} errorMessage
5978
- * @param {?} config
5979
- * @return {?}
5980
- */
5981
- HtmlTemplatesHelper.setDescribedBy = /*
5982
- * Sets described by string depending if
5983
- * there is an error, error and hit or nothing
5984
- * */
5985
- /**
5986
- * @param {?} errorMessage
5987
- * @param {?} config
5988
- * @return {?}
5989
- */
5990
- function (errorMessage, config) {
5991
- if (!errorMessage) {
5992
- return config.hint ? config.id + "-hint" : null;
5993
- }
5994
- else if (errorMessage && errorMessage.isInvalid) {
5995
- return config.hint ? config.id + "-hint " + config.id + "-error" : config.id + "-error";
5996
- }
5997
- else {
5998
- return config.hint ? config.id + "-hint" : null;
5999
- }
6000
- };
6001
- return HtmlTemplatesHelper;
6002
- }());
6003
-
6004
6904
  /**
6005
6905
  * @fileoverview added by tsickle
6006
6906
  * Generated from: lib/gov-ui/components/gov-uk-fieldset/gov-uk-fieldset.component.ts
@@ -6148,7 +7048,7 @@
6148
7048
  * @return {?}
6149
7049
  */
6150
7050
  function () {
6151
- this.config.classes = 'govuk-label--m';
7051
+ this.config.classes = typeof (this.config.classes) === 'string' ? this.config.classes : 'govuk-label govuk-label--m';
6152
7052
  };
6153
7053
  /**
6154
7054
  * @return {?}
@@ -6162,7 +7062,7 @@
6162
7062
  GovUkInputComponent.decorators = [
6163
7063
  { type: i0.Component, args: [{
6164
7064
  selector: 'xuilib-gov-uk-input',
6165
- 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",
6166
7066
  styles: [".gov-uk-input input:disabled{background:#b1b4b6}"]
6167
7067
  }] }
6168
7068
  ];
@@ -6193,7 +7093,8 @@
6193
7093
  GovUkLabelComponent.decorators = [
6194
7094
  { type: i0.Component, args: [{
6195
7095
  selector: 'xuilib-gov-label',
6196
- 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}"]
6197
7098
  }] }
6198
7099
  ];
6199
7100
  /** @nocollapse */
@@ -6312,7 +7213,7 @@
6312
7213
  GovUkSelectComponent.decorators = [
6313
7214
  { type: i0.Component, args: [{
6314
7215
  selector: 'xuilib-gov-select',
6315
- 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"
6316
7217
  }] }
6317
7218
  ];
6318
7219
  /** @nocollapse */
@@ -6414,27 +7315,25 @@
6414
7315
  * Generated from: lib/gov-ui/components/hmcts-banner/hmcts-banner.component.ts
6415
7316
  * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
6416
7317
  */
6417
- /*
6418
- * Hmcts Banner
6419
- * Responsible for displaying prominent message and related actions
6420
- * @prop message to display
6421
- * @prop type
6422
- * */
6423
7318
  var HmctsBannerComponent = /** @class */ (function () {
6424
7319
  function HmctsBannerComponent() {
7320
+ this.title = '';
7321
+ this.showMessageIcon = false;
7322
+ this.messageBoldText = false;
6425
7323
  }
6426
7324
  HmctsBannerComponent.decorators = [
6427
7325
  { type: i0.Component, args: [{
6428
7326
  selector: 'xuilib-hmcts-banner',
6429
- 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>",
6430
- 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}"]
6431
7329
  }] }
6432
7330
  ];
6433
- /** @nocollapse */
6434
- HmctsBannerComponent.ctorParameters = function () { return []; };
6435
7331
  HmctsBannerComponent.propDecorators = {
7332
+ message: [{ type: i0.Input }],
6436
7333
  type: [{ type: i0.Input }],
6437
- message: [{ type: i0.Input }]
7334
+ title: [{ type: i0.Input }],
7335
+ showMessageIcon: [{ type: i0.Input }],
7336
+ messageBoldText: [{ type: i0.Input }]
6438
7337
  };
6439
7338
  return HmctsBannerComponent;
6440
7339
  }());
@@ -6614,7 +7513,7 @@
6614
7513
  HmctsMainWrapperComponent.decorators = [
6615
7514
  { type: i0.Component, args: [{
6616
7515
  selector: 'xuilib-hmcts-main-wrapper',
6617
- 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"
6618
7517
  }] }
6619
7518
  ];
6620
7519
  /** @nocollapse */
@@ -6767,6 +7666,33 @@
6767
7666
  return RemoveHostDirective;
6768
7667
  }());
6769
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
+
6770
7696
  /**
6771
7697
  * @fileoverview added by tsickle
6772
7698
  * Generated from: lib/exui-common-lib.module.ts
@@ -6805,7 +7731,10 @@
6805
7731
  FindPersonComponent,
6806
7732
  SearchJudicialsComponent,
6807
7733
  FindLocationComponent,
7734
+ FindTaskNameComponent,
6808
7735
  SearchLocationComponent,
7736
+ FindServiceComponent,
7737
+ SearchServiceComponent,
6809
7738
  SearchVenueComponent,
6810
7739
  PaginationComponent
6811
7740
  ];
@@ -6834,13 +7763,17 @@
6834
7763
  GovUkFileUploadComponent,
6835
7764
  RemoveHostDirective
6836
7765
  ];
7766
+ /** @type {?} */
7767
+ var pipes = [
7768
+ CapitalizePipe
7769
+ ];
6837
7770
  var ɵ0 = windowProvider;
6838
7771
  var ExuiCommonLibModule = /** @class */ (function () {
6839
7772
  function ExuiCommonLibModule() {
6840
7773
  }
6841
7774
  ExuiCommonLibModule.decorators = [
6842
7775
  { type: i0.NgModule, args: [{
6843
- declarations: __spread(COMMON_COMPONENTS, GOV_UI_COMPONENTS),
7776
+ declarations: __spread(COMMON_COMPONENTS, GOV_UI_COMPONENTS, pipes),
6844
7777
  imports: [
6845
7778
  i4.CommonModule,
6846
7779
  forms.FormsModule,
@@ -6856,7 +7789,7 @@
6856
7789
  ],
6857
7790
  exports: __spread(COMMON_COMPONENTS, GOV_UI_COMPONENTS, [
6858
7791
  ngxPagination.PaginatePipe
6859
- ])
7792
+ ], pipes)
6860
7793
  },] }
6861
7794
  ];
6862
7795
  return ExuiCommonLibModule;
@@ -7664,19 +8597,18 @@
7664
8597
  */
7665
8598
  var RoleService = /** @class */ (function () {
7666
8599
  function RoleService() {
7667
- 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; })));
7668
8605
  }
7669
8606
  Object.defineProperty(RoleService.prototype, "roles", {
7670
- get: /**
7671
- * @return {?}
7672
- */ function () {
7673
- return this.pRoles;
7674
- },
7675
8607
  set: /**
7676
8608
  * @param {?} roles
7677
8609
  * @return {?}
7678
8610
  */ function (roles) {
7679
- this.pRoles = roles;
8611
+ this.pRoles.next(roles);
7680
8612
  },
7681
8613
  enumerable: true,
7682
8614
  configurable: true
@@ -7717,23 +8649,28 @@
7717
8649
  */
7718
8650
  function (route) {
7719
8651
  var _this = this;
7720
- /** @type {?} */
7721
- var roles = (( /** @type {?} */(route.data.needsRole)));
7722
- /** @type {?} */
7723
- var check = ( /**
7724
- * @param {?} roleRegEx
8652
+ return this.roleService.roles$.pipe(operators.map(( /**
8653
+ * @param {?} roles
7725
8654
  * @return {?}
7726
- */function (roleRegEx) {
8655
+ */function (roles) {
8656
+ /** @type {?} */
8657
+ var canActivateRoles = (( /** @type {?} */(route.data.needsRole)));
7727
8658
  /** @type {?} */
7728
- var regex = new RegExp(roleRegEx);
7729
- return _this.roleService.roles.some(( /**
7730
- * @param {?} role
8659
+ var check = ( /**
8660
+ * @param {?} roleRegEx
7731
8661
  * @return {?}
7732
- */function (role) { return regex.test(role); }));
7733
- });
7734
- /** @type {?} */
7735
- var match = route.data.roleMatching === RoleMatching.ALL ? roles.every(check) : roles.some(check);
7736
- 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
+ })));
7737
8674
  };
7738
8675
  RoleGuard.decorators = [
7739
8676
  { type: i0.Injectable, args: [{
@@ -7898,6 +8835,7 @@
7898
8835
  exports.dateValidator = dateValidator;
7899
8836
  exports.radioGroupValidator = radioGroupValidator;
7900
8837
  exports.HmctsSubNavigationComponent = HmctsSubNavigationComponent;
8838
+ exports.HmctsBannerComponent = HmctsBannerComponent;
7901
8839
  exports.BadgeColour = BadgeColour;
7902
8840
  exports.DateBadgeColour = DateBadgeColour;
7903
8841
  exports.SECONDS_IN_A_DAY = SECONDS_IN_A_DAY;
@@ -7931,15 +8869,18 @@
7931
8869
  exports.ɵa = ExuiPageWrapperComponent;
7932
8870
  exports.ɵbl = FindLocationComponent;
7933
8871
  exports.ɵbh = FindPersonComponent;
8872
+ exports.ɵbq = FindServiceComponent;
8873
+ exports.ɵbo = FindTaskNameComponent;
7934
8874
  exports.ɵbd = GenericFilterComponent;
7935
8875
  exports.ɵk = HmctsSessionDialogComponent;
7936
8876
  exports.ɵo = InviteUserFormComponent;
7937
8877
  exports.ɵn = InviteUserPermissionComponent;
7938
8878
  exports.ɵbc = LoadingSpinnerComponent;
7939
- exports.ɵbp = PaginationComponent;
8879
+ exports.ɵbt = PaginationComponent;
7940
8880
  exports.ɵbk = SearchJudicialsComponent;
7941
8881
  exports.ɵbm = SearchLocationComponent;
7942
- exports.ɵbo = SearchVenueComponent;
8882
+ exports.ɵbr = SearchServiceComponent;
8883
+ exports.ɵbs = SearchVenueComponent;
7943
8884
  exports.ɵv = SelectedCaseConfirmComponent;
7944
8885
  exports.ɵt = SelectedCaseListComponent;
7945
8886
  exports.ɵu = SelectedCaseComponent;
@@ -7958,28 +8899,29 @@
7958
8899
  exports.ɵg = FeatureToggleDirective;
7959
8900
  exports.ɵi = LetContext;
7960
8901
  exports.ɵj = LetDirective;
7961
- exports.ɵbz = GovUkCheckboxComponent;
7962
- exports.ɵcf = GovUkCheckboxesComponent;
7963
- exports.ɵce = GovUkDateComponent;
7964
- exports.ɵcc = GovUkErrorMessageComponent;
7965
- exports.ɵcd = GovUkFieldsetComponent;
7966
- exports.ɵck = GovUkFileUploadComponent;
7967
- exports.ɵca = GovUkFormGroupWrapperComponent;
7968
- exports.ɵby = GovUkInputComponent;
7969
- exports.ɵcb = GovUkLabelComponent;
7970
- exports.ɵcg = GovUkRadioComponent;
7971
- exports.ɵch = GovUkRadiosComponent;
7972
- exports.ɵci = GovUkSelectComponent;
7973
- exports.ɵbx = GovukTableComponent;
7974
- exports.ɵcj = GovUkTextareaComponent;
7975
- exports.ɵbw = HmctsBannerComponent;
7976
- exports.ɵbu = HmctsErrorSummaryComponent;
7977
- exports.ɵbq = HmctsIdentityBarComponent;
7978
- exports.ɵbv = HmctsMainWrapperComponent;
7979
- exports.ɵbr = HmctsPaginationComponent;
7980
- exports.ɵbt = HmctsPrimaryNavigationComponent;
7981
- exports.ɵbs = HmctsSubNavigationComponent;
7982
- 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;
7983
8925
  exports.ɵr = CaseSharingStateService;
7984
8926
  exports.ɵbg = CookieService;
7985
8927
  exports.ɵh = FeatureToggleService;
@@ -7987,6 +8929,7 @@
7987
8929
  exports.ɵbi = FindAPersonService;
7988
8930
  exports.ɵbn = LocationService;
7989
8931
  exports.ɵbj = SessionStorageService;
8932
+ exports.ɵbp = TaskNameService;
7990
8933
 
7991
8934
  Object.defineProperty(exports, '__esModule', { value: true });
7992
8935