@hmcts/rpx-xui-common-lib 1.8.10-task-name-field-generic-filter → 1.8.10-task-name-filter-2

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.
@@ -856,6 +856,9 @@
856
856
  _this.form.get('user-services').push(new forms.FormControl({ key: 'All', label: 'All' }));
857
857
  }
858
858
  };
859
+ this.searchTermServiceForm = this.fb.group({
860
+ searchTerm: ['']
861
+ });
859
862
  }
860
863
  Object.defineProperty(GenericFilterComponent.prototype, "config", {
861
864
  get: function () {
@@ -909,7 +912,9 @@
909
912
  var services = this.config.fields.find(function (field) { return field.name === 'user-services'; });
910
913
  if (services) {
911
914
  this.startFilterSkillsByServices(this.form, services);
912
- this.initValuesFromCacheForSkillsByServices();
915
+ if (!this._config.copyFields) {
916
+ this.initValuesFromCacheForSkillsByServices();
917
+ }
913
918
  }
914
919
  };
915
920
  GenericFilterComponent.prototype.ngOnDestroy = function () {
@@ -986,6 +991,7 @@
986
991
  return field.disable ? field.disable : null;
987
992
  };
988
993
  GenericFilterComponent.prototype.applyFilter = function (form) {
994
+ var e_1, _b;
989
995
  this.submitted = true;
990
996
  form.markAsTouched();
991
997
  if (form.valid) {
@@ -1001,13 +1007,29 @@
1001
1007
  else {
1002
1008
  this.emitFormErrors(form);
1003
1009
  }
1010
+ try {
1011
+ for (var _c = __values(this.config.fields), _d = _c.next(); !_d.done; _d = _c.next()) {
1012
+ var field = _d.value;
1013
+ var fieldName = field.name;
1014
+ if (fieldName === 'user-services') {
1015
+ this.searchTermServiceForm.reset();
1016
+ }
1017
+ }
1018
+ }
1019
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
1020
+ finally {
1021
+ try {
1022
+ if (_d && !_d.done && (_b = _c.return)) _b.call(_c);
1023
+ }
1024
+ finally { if (e_1) throw e_1.error; }
1025
+ }
1004
1026
  if (this._config.applyButtonCallback) {
1005
1027
  this._config.applyButtonCallback();
1006
1028
  }
1007
1029
  };
1008
1030
  // when domain changes ensure that person field is reset
1009
1031
  GenericFilterComponent.prototype.fieldChanged = function (field, form) {
1010
- var e_1, _b;
1032
+ var e_2, _b;
1011
1033
  // TODO - Do similar with jurisdiction/service for caseworkers by services
1012
1034
  if (field.changeResetFields && field.changeResetFields.length) {
1013
1035
  try {
@@ -1016,12 +1038,12 @@
1016
1038
  this.resetField(resetField, form);
1017
1039
  }
1018
1040
  }
1019
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
1041
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
1020
1042
  finally {
1021
1043
  try {
1022
1044
  if (_d && !_d.done && (_b = _c.return)) _b.call(_c);
1023
1045
  }
1024
- finally { if (e_1) throw e_1.error; }
1046
+ finally { if (e_2) throw e_2.error; }
1025
1047
  }
1026
1048
  }
1027
1049
  };
@@ -1032,8 +1054,8 @@
1032
1054
  this.form.get(name).patchValue(value);
1033
1055
  }
1034
1056
  };
1035
- GenericFilterComponent.prototype.inputServiceChanged = function (e, field) {
1036
- if (e === undefined) {
1057
+ GenericFilterComponent.prototype.inputServiceChanged = function (selectedNotAddedService, field) {
1058
+ if (selectedNotAddedService === undefined) {
1037
1059
  this.addAllOption(field);
1038
1060
  }
1039
1061
  else {
@@ -1058,7 +1080,7 @@
1058
1080
  }
1059
1081
  };
1060
1082
  GenericFilterComponent.prototype.updatePersonControls = function (values, field) {
1061
- var e_2, _b;
1083
+ var e_3, _b;
1062
1084
  var keys;
1063
1085
  if (!values) {
1064
1086
  keys = Object.keys(this.form.get(field.name).value);
@@ -1075,19 +1097,19 @@
1075
1097
  }
1076
1098
  }
1077
1099
  }
1078
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
1100
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
1079
1101
  finally {
1080
1102
  try {
1081
1103
  if (keys_1_1 && !keys_1_1.done && (_b = keys_1.return)) _b.call(keys_1);
1082
1104
  }
1083
- finally { if (e_2) throw e_2.error; }
1105
+ finally { if (e_3) throw e_3.error; }
1084
1106
  }
1085
1107
  };
1086
1108
  GenericFilterComponent.prototype.checkBoxChecked = function (field, i) {
1087
1109
  return this.form.get(field.name)['controls'][i]['value'];
1088
1110
  };
1089
1111
  GenericFilterComponent.prototype.updateTaskNameControls = function (values, field) {
1090
- var e_3, _b;
1112
+ var e_4, _b;
1091
1113
  var keys;
1092
1114
  if (!values) {
1093
1115
  keys = Object.keys(this.form.get(field.name).value);
@@ -1104,16 +1126,16 @@
1104
1126
  }
1105
1127
  }
1106
1128
  }
1107
- catch (e_3_1) { e_3 = { error: e_3_1 }; }
1129
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
1108
1130
  finally {
1109
1131
  try {
1110
1132
  if (keys_2_1 && !keys_2_1.done && (_b = keys_2.return)) _b.call(keys_2);
1111
1133
  }
1112
- finally { if (e_3) throw e_3.error; }
1134
+ finally { if (e_4) throw e_4.error; }
1113
1135
  }
1114
1136
  };
1115
1137
  GenericFilterComponent.prototype.toggleSelectAll = function (event, form, item, field) {
1116
- var e_4, _b;
1138
+ var e_5, _b;
1117
1139
  var isChecked = event.target.checked;
1118
1140
  var formArray = form.get(field.name);
1119
1141
  if (!item.selectAll) {
@@ -1158,12 +1180,12 @@
1158
1180
  this.resetField(resetField, form);
1159
1181
  }
1160
1182
  }
1161
- catch (e_4_1) { e_4 = { error: e_4_1 }; }
1183
+ catch (e_5_1) { e_5 = { error: e_5_1 }; }
1162
1184
  finally {
1163
1185
  try {
1164
1186
  if (_d && !_d.done && (_b = _c.return)) _b.call(_c);
1165
1187
  }
1166
- finally { if (e_4) throw e_4.error; }
1188
+ finally { if (e_5) throw e_5.error; }
1167
1189
  }
1168
1190
  }
1169
1191
  if (field.name === 'user-services') {
@@ -1195,7 +1217,7 @@
1195
1217
  this.filterSkillsByServices(servicesArray, this.config);
1196
1218
  };
1197
1219
  GenericFilterComponent.prototype.resetField = function (resetField, form) {
1198
- var e_5, _b;
1220
+ var e_6, _b;
1199
1221
  var control = form.get(resetField);
1200
1222
  var defaultValue = this.config.cancelSetting.fields.find(function (f) { return f.name === resetField; });
1201
1223
  if (control instanceof forms.FormArray) {
@@ -1211,12 +1233,12 @@
1211
1233
  this.resetField(key, control);
1212
1234
  }
1213
1235
  }
1214
- catch (e_5_1) { e_5 = { error: e_5_1 }; }
1236
+ catch (e_6_1) { e_6 = { error: e_6_1 }; }
1215
1237
  finally {
1216
1238
  try {
1217
1239
  if (keys_3_1 && !keys_3_1.done && (_b = keys_3.return)) _b.call(keys_3);
1218
1240
  }
1219
- finally { if (e_5) throw e_5.error; }
1241
+ finally { if (e_6) throw e_6.error; }
1220
1242
  }
1221
1243
  }
1222
1244
  else if (control instanceof forms.FormControl) {
@@ -1239,7 +1261,7 @@
1239
1261
  this._settings = this.filterService.get(this.config.id);
1240
1262
  };
1241
1263
  GenericFilterComponent.prototype.buildForm = function (config, settings, reset) {
1242
- var e_6, _b;
1264
+ var e_7, _b;
1243
1265
  var _a;
1244
1266
  var findPersonControl = this.form ? this.form.get('findPersonControl') : null;
1245
1267
  var findTaskNameControl = this.form ? this.form.get('findTaskNameControl') : null;
@@ -1319,16 +1341,16 @@
1319
1341
  _loop_1(field);
1320
1342
  }
1321
1343
  }
1322
- catch (e_6_1) { e_6 = { error: e_6_1 }; }
1344
+ catch (e_7_1) { e_7 = { error: e_7_1 }; }
1323
1345
  finally {
1324
1346
  try {
1325
1347
  if (_d && !_d.done && (_b = _c.return)) _b.call(_c);
1326
1348
  }
1327
- finally { if (e_6) throw e_6.error; }
1349
+ finally { if (e_7) throw e_7.error; }
1328
1350
  }
1329
1351
  };
1330
1352
  GenericFilterComponent.prototype.buildCheckBoxFormArray = function (field, settings) {
1331
- var e_7, _b;
1353
+ var e_8, _b;
1332
1354
  var validators = GenericFilterComponent.addFormValidators(field);
1333
1355
  var formArray = this.fb.array([], validators);
1334
1356
  var defaultValues;
@@ -1348,17 +1370,17 @@
1348
1370
  _loop_2(option);
1349
1371
  }
1350
1372
  }
1351
- catch (e_7_1) { e_7 = { error: e_7_1 }; }
1373
+ catch (e_8_1) { e_8 = { error: e_8_1 }; }
1352
1374
  finally {
1353
1375
  try {
1354
1376
  if (_d && !_d.done && (_b = _c.return)) _b.call(_c);
1355
1377
  }
1356
- finally { if (e_7) throw e_7.error; }
1378
+ finally { if (e_8) throw e_8.error; }
1357
1379
  }
1358
1380
  return formArray;
1359
1381
  };
1360
1382
  GenericFilterComponent.prototype.buildFormArray = function (field, settings) {
1361
- var e_8, _b;
1383
+ var e_9, _b;
1362
1384
  var validators = GenericFilterComponent.addFormValidators(field);
1363
1385
  var formArray = this.fb.array([], validators);
1364
1386
  var defaultValues;
@@ -1371,12 +1393,12 @@
1371
1393
  formArray.push(new forms.FormControl(defaultValue));
1372
1394
  }
1373
1395
  }
1374
- catch (e_8_1) { e_8 = { error: e_8_1 }; }
1396
+ catch (e_9_1) { e_9 = { error: e_9_1 }; }
1375
1397
  finally {
1376
1398
  try {
1377
1399
  if (_d && !_d.done && (_b = _c.return)) _b.call(_c);
1378
1400
  }
1379
- finally { if (e_8) throw e_8.error; }
1401
+ finally { if (e_9) throw e_9.error; }
1380
1402
  }
1381
1403
  }
1382
1404
  }
@@ -1400,26 +1422,30 @@
1400
1422
  });
1401
1423
  };
1402
1424
  GenericFilterComponent.prototype.emitFormErrors = function (form) {
1403
- var e_9, _b;
1425
+ var e_10, _b;
1404
1426
  var errors = [];
1405
1427
  try {
1406
1428
  for (var _c = __values(this.config.fields), _d = _c.next(); !_d.done; _d = _c.next()) {
1407
1429
  var field = _d.value;
1408
- var formGroup = form.get(field.name);
1430
+ var fieldName = field.name;
1431
+ var formGroup = form.get(fieldName);
1409
1432
  if (formGroup && formGroup.errors && (formGroup.errors.minlength || formGroup.errors.required)) {
1410
- errors.push({ name: field.name, error: field.minSelectedError });
1433
+ errors.push({ name: fieldName, error: field.minSelectedError });
1434
+ if (fieldName === 'user-services') {
1435
+ this.searchTermServiceForm.reset();
1436
+ }
1411
1437
  }
1412
1438
  if (formGroup && formGroup.errors && formGroup.errors.maxlength) {
1413
- errors.push({ name: field.name, error: field.maxSelectedError });
1439
+ errors.push({ name: fieldName, error: field.maxSelectedError });
1414
1440
  }
1415
1441
  }
1416
1442
  }
1417
- catch (e_9_1) { e_9 = { error: e_9_1 }; }
1443
+ catch (e_10_1) { e_10 = { error: e_10_1 }; }
1418
1444
  finally {
1419
1445
  try {
1420
1446
  if (_d && !_d.done && (_b = _c.return)) _b.call(_c);
1421
1447
  }
1422
- finally { if (e_9) throw e_9.error; }
1448
+ finally { if (e_10) throw e_10.error; }
1423
1449
  }
1424
1450
  // remove duplicates
1425
1451
  errors = errors.filter(function (filterError, i, arr) {
@@ -1431,10 +1457,10 @@
1431
1457
  };
1432
1458
  GenericFilterComponent.prototype.initValuesFromCacheForSkillsByServices = function () {
1433
1459
  var _this = this;
1434
- var cachedValues = this.filteredSkillsByServicesCheckbox.map(function (skill) {
1435
- var selected = false;
1436
- if (_this.settings && _this.settings.fields) {
1437
- var isSelectedUserSkill = void 0;
1460
+ if (this.settings && this.settings.fields) {
1461
+ var cachedValues = this.filteredSkillsByServicesCheckbox.map(function (skill) {
1462
+ var selected = false;
1463
+ var isSelectedUserSkill;
1438
1464
  var selectedUserSkills = _this.settings.fields.find(function (setting) { return setting.name === 'user-skills'; });
1439
1465
  if (selectedUserSkills && selectedUserSkills.value && selectedUserSkills.value.length > 0) {
1440
1466
  isSelectedUserSkill = selectedUserSkills.value.findIndex(function (val) {
@@ -1442,11 +1468,11 @@
1442
1468
  });
1443
1469
  selected = isSelectedUserSkill !== -1;
1444
1470
  }
1471
+ return selected;
1472
+ });
1473
+ if (cachedValues.length > 0) {
1474
+ this.form.get('user-skills').setValue(cachedValues);
1445
1475
  }
1446
- return selected;
1447
- });
1448
- if (cachedValues.length > 0) {
1449
- this.form.get('user-skills').setValue(cachedValues);
1450
1476
  }
1451
1477
  };
1452
1478
  GenericFilterComponent.prototype.filterSkillsByServices = function (services, config) {
@@ -1489,29 +1515,56 @@
1489
1515
  userSkillsCheckboxField.options = [];
1490
1516
  userSkillsCheckboxField.options = this.filteredSkillsByServicesCheckbox;
1491
1517
  this.form.setControl('user-skills', new forms.FormArray([]));
1492
- this.filteredSkillsByServicesCheckbox.forEach(function () {
1493
- _this.form.get('user-skills').push(new forms.FormControl(false));
1494
- });
1495
- var prevValues = this.filteredSkillsByServicesCheckbox.map(function (skill) {
1496
- var selected = false;
1497
- if (_this.settings && _this.settings.fields) {
1498
- if (_this.previousSelectedNestedCheckbox.length > 0) {
1499
- selected = _this.previousSelectedNestedCheckbox.includes(skill.key);
1500
- }
1501
- var isSelectedUserSkill = void 0;
1502
- var selectedUserSkills = _this.settings.fields.find(function (setting) { return setting.name === 'user-skills'; });
1503
- if (selectedUserSkills && selectedUserSkills.value && selectedUserSkills.value.length > 0) {
1504
- isSelectedUserSkill = selectedUserSkills.value.findIndex(function (val) { return Number(val) === Number(skill.key); });
1505
- selected = isSelectedUserSkill !== -1;
1518
+ if (!this._config.copyFields) {
1519
+ this.filteredSkillsByServicesCheckbox.forEach(function () {
1520
+ _this.form.get('user-skills').push(new forms.FormControl(false));
1521
+ });
1522
+ var prevValues = this.filteredSkillsByServicesCheckbox.map(function (skill) {
1523
+ var selected = false;
1524
+ if (_this.settings && _this.settings.fields) {
1525
+ if (_this.previousSelectedNestedCheckbox.length > 0) {
1526
+ selected = _this.previousSelectedNestedCheckbox.includes(skill.key);
1527
+ }
1528
+ var isSelectedUserSkill = void 0;
1529
+ var selectedUserSkills = _this.settings.fields.find(function (setting) { return setting.name === 'user-skills'; });
1530
+ if (selectedUserSkills && selectedUserSkills.value && selectedUserSkills.value.length > 0) {
1531
+ isSelectedUserSkill = selectedUserSkills.value.findIndex(function (val) { return Number(val) === Number(skill.key); });
1532
+ selected = isSelectedUserSkill !== -1;
1533
+ }
1534
+ if (_this.previousSelectedNestedCheckbox.length > 0) {
1535
+ // Pick up from previous selected
1536
+ selected = _this.previousSelectedNestedCheckbox.includes(String(skill.key));
1537
+ }
1506
1538
  }
1507
- if (_this.previousSelectedNestedCheckbox.length > 0) {
1508
- // Pick up from previous selected
1509
- selected = _this.previousSelectedNestedCheckbox.includes(String(skill.key));
1539
+ return selected;
1540
+ });
1541
+ this.form.get('user-skills').setValue(prevValues);
1542
+ }
1543
+ else {
1544
+ var preSelectedSkills_1 = [];
1545
+ this.filteredSkillsByServicesCheckbox.map(function (skillsByServices, index) {
1546
+ for (var i = 0; i < _this._config.preSelectedNestedCheckbox.length; i++) {
1547
+ var skillCopyValue = _this._config.preSelectedNestedCheckbox[i];
1548
+ if (skillCopyValue.toString() === skillsByServices.key.toString()) {
1549
+ preSelectedSkills_1[index] = true;
1550
+ break;
1551
+ }
1552
+ else {
1553
+ preSelectedSkills_1[index] = false;
1554
+ }
1510
1555
  }
1556
+ });
1557
+ if (preSelectedSkills_1.length > 0) {
1558
+ preSelectedSkills_1.forEach(function (h) {
1559
+ _this.form.get('user-skills').push(new forms.FormControl(h));
1560
+ });
1511
1561
  }
1512
- return selected;
1513
- });
1514
- this.form.get('user-skills').setValue(prevValues);
1562
+ else {
1563
+ this.filteredSkillsByServicesCheckbox.map(function () {
1564
+ _this.form.get('user-skills').push(new forms.FormControl(false));
1565
+ });
1566
+ }
1567
+ }
1515
1568
  return this.filteredSkillsByServicesCheckbox;
1516
1569
  }
1517
1570
  }
@@ -1551,7 +1604,7 @@
1551
1604
  GenericFilterComponent.decorators = [
1552
1605
  { type: i0.Component, args: [{
1553
1606
  selector: 'xuilib-generic-filter',
1554
- 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 <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?.maxLength)}\">\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\" *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 <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 [services]=\"form.get(field.servicesField)?.value\"\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 [field]=\"field\"\n [services]=\"form.get(field.findLocationField)?.value\"\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?.task_type_name\"\n [placeholderContent]=\"field.placeholderContent ? field.placeholderContent : ''\"\n [services]=\"form.get(field.servicesField)?.value\"\n ></xuilib-find-task-name>\n </ng-container>\n <ng-container *ngSwitchCase=\"'find-service'\">\n <xuilib-find-service (serviceFieldChanged)=\"inputServiceChanged($event, field)\"\n [form]=\"form\"\n [fields]=\"config.fields\"\n [title]=\"field.title\"\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 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",
1607
+ 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 <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?.maxLength)}\">\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\" *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 <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_' + field.name + item.key\"\n [name]=\"'checkbox_' + field.name + item.key\"\n />\n <label\n [for]=\"'checkbox_' + field.name + 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_' + field.name + item.key\"\n [name]=\"'checkbox_' + field.name + item.key\"\n />\n <label\n [for]=\"'checkbox_' + field.name + 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_' + field.name + item.key\"\n [name]=\"'checkbox_' + field.name + item.key\"\n />\n <label\n [for]=\"'checkbox_' + field.name + 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 [services]=\"form.get(field.servicesField)?.value\"\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 [field]=\"field\"\n [services]=\"form.get(field.findLocationField)?.value\"\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?.task_type_name\"\n [placeholderContent]=\"field.placeholderContent ? field.placeholderContent : ''\"\n [services]=\"form.get(field.servicesField)?.value\"\n ></xuilib-find-task-name>\n </ng-container>\n <ng-container *ngSwitchCase=\"'find-service'\">\n <xuilib-find-service (serviceFieldChanged)=\"inputServiceChanged($event, field)\"\n [form]=\"form\"\n [searchTermServiceForm]=\"searchTermServiceForm\"\n [fields]=\"config.fields\"\n [title]=\"field.title\"\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 [readonly]=\"field.readonly\"\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 [readonly]=\"field.readonly\"\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 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",
1555
1608
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
1556
1609
  encapsulation: i0.ViewEncapsulation.None,
1557
1610
  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%}"]
@@ -3222,14 +3275,17 @@
3222
3275
  }
3223
3276
  };
3224
3277
  FindLocationComponent.prototype.removeSelectedValues = function () {
3225
- var formArray = this.form.get(this.field.name);
3226
- for (var i = 0; i < formArray.length; i++) {
3227
- formArray.removeAt(i);
3278
+ var _a;
3279
+ var formArray = this.form.get((_a = this.field) === null || _a === void 0 ? void 0 : _a.name);
3280
+ if (formArray) {
3281
+ for (var i = 0; i < formArray.length; i++) {
3282
+ formArray.removeAt(i);
3283
+ }
3284
+ this.selectedLocations = [];
3228
3285
  }
3229
- this.selectedLocations = [];
3230
3286
  };
3231
3287
  FindLocationComponent.prototype.addSelectedLocationsToForm = function (locations) {
3232
- var e_1, _a;
3288
+ var e_1, _b;
3233
3289
  var formArray = this.form.get(this.field.name);
3234
3290
  try {
3235
3291
  for (var locations_1 = __values(locations), locations_1_1 = locations_1.next(); !locations_1_1.done; locations_1_1 = locations_1.next()) {
@@ -3240,7 +3296,7 @@
3240
3296
  catch (e_1_1) { e_1 = { error: e_1_1 }; }
3241
3297
  finally {
3242
3298
  try {
3243
- if (locations_1_1 && !locations_1_1.done && (_a = locations_1.return)) _a.call(locations_1);
3299
+ if (locations_1_1 && !locations_1_1.done && (_b = locations_1.return)) _b.call(locations_1);
3244
3300
  }
3245
3301
  finally { if (e_1) throw e_1.error; }
3246
3302
  }
@@ -3914,6 +3970,53 @@
3914
3970
  xuilibLet: [{ type: i0.Input }]
3915
3971
  };
3916
3972
 
3973
+ var SearchServiceComponent = /** @class */ (function () {
3974
+ function SearchServiceComponent(fb) {
3975
+ this.fb = fb;
3976
+ this.showAutocomplete = false;
3977
+ this.serviceChanged = new i0.EventEmitter();
3978
+ this.minSearchCharacters = 3;
3979
+ this.term = '';
3980
+ this.form = this.fb.group({
3981
+ searchTerm: ['']
3982
+ });
3983
+ }
3984
+ SearchServiceComponent.prototype.onInput = function () {
3985
+ // Todo
3986
+ };
3987
+ SearchServiceComponent.prototype.resetSearchTerm = function () {
3988
+ this.form.controls.searchTerm.patchValue('', { emitEvent: false, onlySelf: true });
3989
+ };
3990
+ SearchServiceComponent.prototype.onSelectionChanged = function ($event) {
3991
+ var _a;
3992
+ var label = (_a = $event.source) === null || _a === void 0 ? void 0 : _a.value;
3993
+ if (label && $event.source.selected) {
3994
+ var selectedService = this.services.find(function (s) { return s.label === label; });
3995
+ this.serviceChanged.emit(selectedService);
3996
+ }
3997
+ };
3998
+ return SearchServiceComponent;
3999
+ }());
4000
+ SearchServiceComponent.decorators = [
4001
+ { type: i0.Component, args: [{
4002
+ selector: 'exui-search-service',
4003
+ template: "<div class=\"auto-complete-container\">\n <input\n id=\"inputServiceSearch\"\n (input)=\"onInput()\"\n [formControl]=\"form?.controls.searchTerm\"\n [matAutocomplete]=\"autoSearchService\"\n class=\"govuk-input\"\n [attr.disabled]=\"disabled\">\n <mat-autocomplete class=\"mat-autocomplete-panel-extend\" autoActiveFirstOption #autoSearchService=\"matAutocomplete\">\n <mat-option *ngFor=\"let service of services\" (onSelectionChange)=\"onSelectionChanged($event)\" [value]=\"service.label\">\n {{ service.label }}\n </mat-option>\n <mat-option *ngIf=\"!services?.length && showAutocomplete && term && term.length >= this.minSearchCharacters\">No results found</mat-option>\n </mat-autocomplete>\n</div>\n",
4004
+ 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:0 2px 6px rgba(0,0,0,.256863);left:0;position:absolute;top:100%;z-index:100}.autocomplete__menu--inline{position:relative}.autocomplete__option{border-left-width:0;border-bottom:1px solid #b1b4b6;border-right-width:0;border-top-width:1px;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:250px;display:inline-block;margin-right:4px}.autocomplete__input{line-height:24px;font-size:19px}"]
4005
+ },] }
4006
+ ];
4007
+ SearchServiceComponent.ctorParameters = function () { return [
4008
+ { type: forms.FormBuilder }
4009
+ ]; };
4010
+ SearchServiceComponent.propDecorators = {
4011
+ services: [{ type: i0.Input }],
4012
+ selectedServices: [{ type: i0.Input }],
4013
+ disabled: [{ type: i0.Input }],
4014
+ delay: [{ type: i0.Input }],
4015
+ form: [{ type: i0.Input }],
4016
+ showAutocomplete: [{ type: i0.Input }],
4017
+ serviceChanged: [{ type: i0.Output }]
4018
+ };
4019
+
3917
4020
  var FindServiceComponent = /** @class */ (function () {
3918
4021
  function FindServiceComponent() {
3919
4022
  this.services = [];
@@ -3964,6 +4067,7 @@
3964
4067
  }
3965
4068
  this.tempSelectedService = null;
3966
4069
  this.serviceFieldChanged.emit(this.tempSelectedService);
4070
+ this.searchServiceComponent.resetSearchTerm();
3967
4071
  };
3968
4072
  FindServiceComponent.prototype.removeService = function (service) {
3969
4073
  if (service.key) {
@@ -4034,7 +4138,7 @@
4034
4138
  FindServiceComponent.decorators = [
4035
4139
  { type: i0.Component, args: [{
4036
4140
  selector: 'xuilib-find-service',
4037
- 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\"\n [services]=\"services\"\n [selectedServices]=\"selectedServices\"\n [delay]=\"300\"\n [disabled]=\"disabled\"\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 *ngIf=\"selection.key!=='All'\" class=\"hmcts-filter__tag\" (click)=\"removeService(selection)\" href=\"javascript:void(0)\">\n {{ selection.label }}\n </a>\n </li>\n </ul>\n</div>\n",
4141
+ 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\"\n [services]=\"services\"\n [form]=\"searchTermServiceForm\"\n [selectedServices]=\"selectedServices\"\n [delay]=\"300\"\n [disabled]=\"disabled\"\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 *ngIf=\"selection.key!=='All'\" class=\"hmcts-filter__tag\" (click)=\"removeService(selection)\" href=\"javascript:void(0)\">\n {{ selection.label }}\n </a>\n </li>\n </ul>\n</div>\n",
4038
4142
  styles: ["#add-service{background-color:#ddd}"]
4039
4143
  },] }
4040
4144
  ];
@@ -4043,11 +4147,13 @@
4043
4147
  fields: [{ type: i0.Input }],
4044
4148
  serviceTitle: [{ type: i0.Input }],
4045
4149
  form: [{ type: i0.Input }],
4150
+ searchTermServiceForm: [{ type: i0.Input }],
4046
4151
  services: [{ type: i0.Input }],
4047
4152
  selectedServices: [{ type: i0.Input }],
4048
4153
  enableAddServiceButton: [{ type: i0.Input }],
4049
4154
  disabled: [{ type: i0.Input }],
4050
4155
  disableInputField: [{ type: i0.Input }],
4156
+ searchServiceComponent: [{ type: i0.ViewChild, args: [SearchServiceComponent, { static: true },] }],
4051
4157
  serviceFieldChanged: [{ type: i0.Output }]
4052
4158
  };
4053
4159
 
@@ -4176,46 +4282,6 @@
4176
4282
  disabled: [{ type: i0.Input }]
4177
4283
  };
4178
4284
 
4179
- var SearchServiceComponent = /** @class */ (function () {
4180
- function SearchServiceComponent(fb) {
4181
- this.fb = fb;
4182
- this.showAutocomplete = false;
4183
- this.serviceChanged = new i0.EventEmitter();
4184
- this.minSearchCharacters = 3;
4185
- this.term = '';
4186
- this.form = this.fb.group({
4187
- searchTerm: ['']
4188
- });
4189
- }
4190
- SearchServiceComponent.prototype.onInput = function () {
4191
- // Todo
4192
- };
4193
- SearchServiceComponent.prototype.onSelectionChanged = function (label) {
4194
- var selectedService = this.services.find(function (s) { return s.label === label; });
4195
- this.serviceChanged.emit(selectedService);
4196
- };
4197
- return SearchServiceComponent;
4198
- }());
4199
- SearchServiceComponent.decorators = [
4200
- { type: i0.Component, args: [{
4201
- selector: 'exui-search-service',
4202
- template: "<div class=\"auto-complete-container\">\n <input\n id=\"inputServiceSearch\"\n (input)=\"onInput()\"\n [formControl]=\"form?.controls.searchTerm\"\n [matAutocomplete]=\"autoSearchService\"\n class=\"govuk-input\"\n [attr.disabled]=\"disabled\">\n <mat-autocomplete class=\"mat-autocomplete-panel-extend\" autoActiveFirstOption #autoSearchService=\"matAutocomplete\">\n <mat-option *ngFor=\"let service of services\" (onSelectionChange)=\"onSelectionChanged($event.source.value)\" [value]=\"service.label\">\n {{ service.label }}\n </mat-option>\n <mat-option *ngIf=\"!services?.length && showAutocomplete && term && term.length >= this.minSearchCharacters\">No results found</mat-option>\n </mat-autocomplete>\n</div>\n",
4203
- 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:0 2px 6px rgba(0,0,0,.256863);left:0;position:absolute;top:100%;z-index:100}.autocomplete__menu--inline{position:relative}.autocomplete__option{border-left-width:0;border-bottom:1px solid #b1b4b6;border-right-width:0;border-top-width:1px;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:250px;display:inline-block;margin-right:4px}.autocomplete__input{line-height:24px;font-size:19px}"]
4204
- },] }
4205
- ];
4206
- SearchServiceComponent.ctorParameters = function () { return [
4207
- { type: forms.FormBuilder }
4208
- ]; };
4209
- SearchServiceComponent.propDecorators = {
4210
- services: [{ type: i0.Input }],
4211
- selectedServices: [{ type: i0.Input }],
4212
- disabled: [{ type: i0.Input }],
4213
- delay: [{ type: i0.Input }],
4214
- form: [{ type: i0.Input }],
4215
- showAutocomplete: [{ type: i0.Input }],
4216
- serviceChanged: [{ type: i0.Output }]
4217
- };
4218
-
4219
4285
  /*
4220
4286
  * Gov Uk Checkbox Dumb Component responsible for
4221
4287
  * displaying checkbox input and hint