@hmcts/rpx-xui-common-lib 1.8.10-generic-filter-readonly-changes → 1.8.10-generic-filter-readonly-changes-3

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.
@@ -1,3 +1,3 @@
1
1
  export class RadioFilterFieldConfig {
2
2
  }
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh1aS1jb21tb24tbGliL3NyYy9saWIvbW9kZWxzL2ZpbHRlci5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUEwRkEsTUFBTSxPQUFPLHNCQUFzQjtDQU1sQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJvb2tpbmdDaGVja1R5cGUgfSBmcm9tICcuL2xvY2F0aW9uLm1vZGVsJztcbmltcG9ydCB7IFBlcnNvblJvbGUgfSBmcm9tICcuL3BlcnNvbi5tb2RlbCc7XG5cbmV4cG9ydCB0eXBlIEZpbHRlckZpZWxkVHlwZSA9ICdncm91cC10aXRsZScgfCAnY2hlY2tib3gnIHwgJ3JhZGlvJyB8ICdzZWxlY3QnIHwgJ2ZpbmQtcGVyc29uJyB8ICdmaW5kLWxvY2F0aW9uJyB8ICdjaGVja2JveC1sYXJnZScgfCAnZmluZC1zZXJ2aWNlJyB8ICd0ZXh0LWlucHV0JyB8ICdlbWFpbC1pbnB1dCcgfCAnZ3JvdXAtc2VsZWN0JyB8ICduZXN0ZWQtY2hlY2tib3gnIHwgJ2ZpbmQtdGFzay1uYW1lJztcblxuZXhwb3J0IHR5cGUgRmlsdGVyUGVyc2lzdGVuY2UgPSAnbG9jYWwnIHwgJ3Nlc3Npb24nIHwgJ21lbW9yeSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyQ29uZmlnT3B0aW9uIHtcbiAga2V5OiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHNlbGVjdEFsbD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyQ29uZmlnIHtcbiAgaWQ6IHN0cmluZztcbiAgZmllbGRzOiBGaWx0ZXJGaWVsZENvbmZpZ1tdO1xuICBwZXJzaXN0ZW5jZTogRmlsdGVyUGVyc2lzdGVuY2U7XG4gIGFwcGx5QnV0dG9uVGV4dDogc3RyaW5nO1xuICBlbmFibGVEaXNhYmxlZEJ1dHRvbj86IGJvb2xlYW47XG4gIGNhbmNlbEJ1dHRvblRleHQ6IHN0cmluZztcbiAgY2FuY2VsU2V0dGluZz86IEZpbHRlclNldHRpbmc7XG4gIHNob3dDYW5jZWxGaWx0ZXJCdXR0b24/OiBib29sZWFuO1xuICBjYW5jZWxCdXR0b25DYWxsYmFjaz8oKTogdm9pZDtcbiAgYXBwbHlCdXR0b25DYWxsYmFjaz8oKTogdm9pZDtcbiAgY29weUZpZWxkcz8oZm9ybTogRm9ybUdyb3VwKTogRm9ybUdyb3VwO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlckZpZWxkT3B0aW9uIHtcbiAga2V5OiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHNlbGVjdEFsbD86IHRydWU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyRmllbGRDb25maWcge1xuICBuYW1lOiBzdHJpbmc7XG4gIG9wdGlvbnM6IEZpbHRlckNvbmZpZ09wdGlvbltdO1xuICBtaW5TZWxlY3RlZDogbnVtYmVyO1xuICBtYXhTZWxlY3RlZDogbnVtYmVyO1xuICBtaW5TZWxlY3RlZEVycm9yPzogc3RyaW5nO1xuICBtYXhTZWxlY3RlZEVycm9yPzogc3RyaW5nO1xuICBkaXNwbGF5TWF4U2VsZWN0ZWRFcnJvcj86IGJvb2xlYW47XG4gIGRpc3BsYXlNaW5TZWxlY3RlZEVycm9yPzogYm9vbGVhbjtcbiAgZW1haWxFcnJvcj86IHN0cmluZztcbiAgbGluZUJyZWFrQmVmb3JlPzogYm9vbGVhbjtcbiAgc2hvd0NvbmRpdGlvbj86IHN0cmluZztcbiAgZW5hYmxlQ29uZGl0aW9uPzogc3RyaW5nO1xuICBlbmFibGVBZGRCdXR0b24/OiBib29sZWFuO1xuICBlbmFibGVBZGRMb2NhdGlvbkJ1dHRvbj86IGJvb2xlYW47XG4gIGVuYWJsZUFkZFRhc2tOYW1lQnV0dG9uPzogYm9vbGVhbjtcbiAgY2hhbmdlUmVzZXRGaWVsZHM/OiBzdHJpbmdbXTtcbiAgZmluZFBlcnNvbkZpZWxkPzogc3RyaW5nO1xuICBmaW5kTG9jYXRpb25GaWVsZD86IHN0cmluZztcbiAgZmluZFRhc2tOYW1lRmllbGQ/OiBzdHJpbmc7XG4gIGRvbWFpbkZpZWxkPzogc3RyaW5nO1xuICBkaXNhYmxlPzogYm9vbGVhbjtcbiAgZGlzYWJsZWRUZXh0Pzogc3RyaW5nO1xuICB0eXBlOiBGaWx0ZXJGaWVsZFR5cGU7XG4gIGRvbWFpbj86IFBlcnNvblJvbGU7XG4gIHRpdGxlPzogc3RyaW5nO1xuICB0aXRsZUNsYXNzZXM/OiBzdHJpbmc7XG4gIHRpdGxlSGludD86IHN0cmluZztcbiAgc3ViVGl0bGU/OiBzdHJpbmc7XG4gIGxvY2F0aW9uVGl0bGU/OiBzdHJpbmc7XG4gIHJhZGlvU2VsZWN0aW9uQ2hhbmdlPzogc3RyaW5nO1xuICBib29raW5nQ2hlY2tUeXBlPzogQm9va2luZ0NoZWNrVHlwZTtcbiAgcGxhY2Vob2xkZXJDb250ZW50Pzogc3RyaW5nO1xuICBtYXhXaWR0aDQ4MHB4PzogYm9vbGVhbjtcbiAgbWF4Um93cz86IG51bWJlcjtcbiAgZ3JvdXBPcHRpb25zPzogR3JvdXBPcHRpb25zW107XG4gIG1heGxlbmd0aD86IG51bWJlcjtcbiAgZGVmYXVsdE9wdGlvbj86IEZpbHRlckNvbmZpZ09wdGlvbjtcbiAgcmVhZG9ubHk/OiBib29sZWFuO1xuICBzZXJ2aWNlc0ZpZWxkPzogc3RyaW5nO1xuICBzZXJ2aWNlcz86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdyb3VwT3B0aW9ucyB7XG4gIGdyb3VwOiBzdHJpbmc7XG4gIG9wdGlvbnM6IEZpbHRlckZpZWxkT3B0aW9uW107XG4gIHBsYWNlaG9sZGVyQ29udGVudD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJTZXR0aW5nIHtcbiAgaWQ6IHN0cmluZztcbiAgaWRhbUlkPzogc3RyaW5nO1xuICByZXNldD86IGJvb2xlYW47XG4gIGZpZWxkczogeyBuYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnlbXSB9W107XG59XG5cbmV4cG9ydCBjbGFzcyBSYWRpb0ZpbHRlckZpZWxkQ29uZmlnIGltcGxlbWVudHMgRmlsdGVyRmllbGRDb25maWcge1xuICBwdWJsaWMgbmFtZTogc3RyaW5nO1xuICBwdWJsaWMgb3B0aW9uczogeyBrZXk6IHN0cmluZywgbGFiZWw6IHN0cmluZ31bXTtcbiAgcHVibGljIG1pblNlbGVjdGVkOiAxO1xuICBwdWJsaWMgbWF4U2VsZWN0ZWQ6IDE7XG4gIHB1YmxpYyB0eXBlOiAncmFkaW8nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlckVycm9yIHtcbiAgbmFtZTogc3RyaW5nO1xuICBlcnJvcjogc3RyaW5nO1xufVxuIl19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh1aS1jb21tb24tbGliL3NyYy9saWIvbW9kZWxzL2ZpbHRlci5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUEyRkEsTUFBTSxPQUFPLHNCQUFzQjtDQU1sQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJvb2tpbmdDaGVja1R5cGUgfSBmcm9tICcuL2xvY2F0aW9uLm1vZGVsJztcbmltcG9ydCB7IFBlcnNvblJvbGUgfSBmcm9tICcuL3BlcnNvbi5tb2RlbCc7XG5cbmV4cG9ydCB0eXBlIEZpbHRlckZpZWxkVHlwZSA9ICdncm91cC10aXRsZScgfCAnY2hlY2tib3gnIHwgJ3JhZGlvJyB8ICdzZWxlY3QnIHwgJ2ZpbmQtcGVyc29uJyB8ICdmaW5kLWxvY2F0aW9uJyB8ICdjaGVja2JveC1sYXJnZScgfCAnZmluZC1zZXJ2aWNlJyB8ICd0ZXh0LWlucHV0JyB8ICdlbWFpbC1pbnB1dCcgfCAnZ3JvdXAtc2VsZWN0JyB8ICduZXN0ZWQtY2hlY2tib3gnIHwgJ2ZpbmQtdGFzay1uYW1lJztcblxuZXhwb3J0IHR5cGUgRmlsdGVyUGVyc2lzdGVuY2UgPSAnbG9jYWwnIHwgJ3Nlc3Npb24nIHwgJ21lbW9yeSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyQ29uZmlnT3B0aW9uIHtcbiAga2V5OiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHNlbGVjdEFsbD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyQ29uZmlnIHtcbiAgaWQ6IHN0cmluZztcbiAgZmllbGRzOiBGaWx0ZXJGaWVsZENvbmZpZ1tdO1xuICBwZXJzaXN0ZW5jZTogRmlsdGVyUGVyc2lzdGVuY2U7XG4gIGFwcGx5QnV0dG9uVGV4dDogc3RyaW5nO1xuICBlbmFibGVEaXNhYmxlZEJ1dHRvbj86IGJvb2xlYW47XG4gIGNhbmNlbEJ1dHRvblRleHQ6IHN0cmluZztcbiAgY2FuY2VsU2V0dGluZz86IEZpbHRlclNldHRpbmc7XG4gIHNob3dDYW5jZWxGaWx0ZXJCdXR0b24/OiBib29sZWFuO1xuICBwcmVTZWxlY3RlZE5lc3RlZENoZWNrYm94PzogbnVtYmVyW107XG4gIGNhbmNlbEJ1dHRvbkNhbGxiYWNrPygpOiB2b2lkO1xuICBhcHBseUJ1dHRvbkNhbGxiYWNrPygpOiB2b2lkO1xuICBjb3B5RmllbGRzPyhmb3JtOiBGb3JtR3JvdXApOiBGb3JtR3JvdXA7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyRmllbGRPcHRpb24ge1xuICBrZXk6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgc2VsZWN0QWxsPzogdHJ1ZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJGaWVsZENvbmZpZyB7XG4gIG5hbWU6IHN0cmluZztcbiAgb3B0aW9uczogRmlsdGVyQ29uZmlnT3B0aW9uW107XG4gIG1pblNlbGVjdGVkOiBudW1iZXI7XG4gIG1heFNlbGVjdGVkOiBudW1iZXI7XG4gIG1pblNlbGVjdGVkRXJyb3I/OiBzdHJpbmc7XG4gIG1heFNlbGVjdGVkRXJyb3I/OiBzdHJpbmc7XG4gIGRpc3BsYXlNYXhTZWxlY3RlZEVycm9yPzogYm9vbGVhbjtcbiAgZGlzcGxheU1pblNlbGVjdGVkRXJyb3I/OiBib29sZWFuO1xuICBlbWFpbEVycm9yPzogc3RyaW5nO1xuICBsaW5lQnJlYWtCZWZvcmU/OiBib29sZWFuO1xuICBzaG93Q29uZGl0aW9uPzogc3RyaW5nO1xuICBlbmFibGVDb25kaXRpb24/OiBzdHJpbmc7XG4gIGVuYWJsZUFkZEJ1dHRvbj86IGJvb2xlYW47XG4gIGVuYWJsZUFkZExvY2F0aW9uQnV0dG9uPzogYm9vbGVhbjtcbiAgZW5hYmxlQWRkVGFza05hbWVCdXR0b24/OiBib29sZWFuO1xuICBjaGFuZ2VSZXNldEZpZWxkcz86IHN0cmluZ1tdO1xuICBmaW5kUGVyc29uRmllbGQ/OiBzdHJpbmc7XG4gIGZpbmRMb2NhdGlvbkZpZWxkPzogc3RyaW5nO1xuICBmaW5kVGFza05hbWVGaWVsZD86IHN0cmluZztcbiAgZG9tYWluRmllbGQ/OiBzdHJpbmc7XG4gIGRpc2FibGU/OiBib29sZWFuO1xuICBkaXNhYmxlZFRleHQ/OiBzdHJpbmc7XG4gIHR5cGU6IEZpbHRlckZpZWxkVHlwZTtcbiAgZG9tYWluPzogUGVyc29uUm9sZTtcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIHRpdGxlQ2xhc3Nlcz86IHN0cmluZztcbiAgdGl0bGVIaW50Pzogc3RyaW5nO1xuICBzdWJUaXRsZT86IHN0cmluZztcbiAgbG9jYXRpb25UaXRsZT86IHN0cmluZztcbiAgcmFkaW9TZWxlY3Rpb25DaGFuZ2U/OiBzdHJpbmc7XG4gIGJvb2tpbmdDaGVja1R5cGU/OiBCb29raW5nQ2hlY2tUeXBlO1xuICBwbGFjZWhvbGRlckNvbnRlbnQ/OiBzdHJpbmc7XG4gIG1heFdpZHRoNDgwcHg/OiBib29sZWFuO1xuICBtYXhSb3dzPzogbnVtYmVyO1xuICBncm91cE9wdGlvbnM/OiBHcm91cE9wdGlvbnNbXTtcbiAgbWF4bGVuZ3RoPzogbnVtYmVyO1xuICBkZWZhdWx0T3B0aW9uPzogRmlsdGVyQ29uZmlnT3B0aW9uO1xuICByZWFkb25seT86IGJvb2xlYW47XG4gIHNlcnZpY2VzRmllbGQ/OiBzdHJpbmc7XG4gIHNlcnZpY2VzPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR3JvdXBPcHRpb25zIHtcbiAgZ3JvdXA6IHN0cmluZztcbiAgb3B0aW9uczogRmlsdGVyRmllbGRPcHRpb25bXTtcbiAgcGxhY2Vob2xkZXJDb250ZW50Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlclNldHRpbmcge1xuICBpZDogc3RyaW5nO1xuICBpZGFtSWQ/OiBzdHJpbmc7XG4gIHJlc2V0PzogYm9vbGVhbjtcbiAgZmllbGRzOiB7IG5hbWU6IHN0cmluZywgdmFsdWU6IGFueVtdIH1bXTtcbn1cblxuZXhwb3J0IGNsYXNzIFJhZGlvRmlsdGVyRmllbGRDb25maWcgaW1wbGVtZW50cyBGaWx0ZXJGaWVsZENvbmZpZyB7XG4gIHB1YmxpYyBuYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyBvcHRpb25zOiB7IGtleTogc3RyaW5nLCBsYWJlbDogc3RyaW5nfVtdO1xuICBwdWJsaWMgbWluU2VsZWN0ZWQ6IDE7XG4gIHB1YmxpYyBtYXhTZWxlY3RlZDogMTtcbiAgcHVibGljIHR5cGU6ICdyYWRpbyc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyRXJyb3Ige1xuICBuYW1lOiBzdHJpbmc7XG4gIGVycm9yOiBzdHJpbmc7XG59XG4iXX0=
@@ -476,6 +476,9 @@ class GenericFilterComponent {
476
476
  this.form.get('user-services').push(new FormControl({ key: 'All', label: 'All' }));
477
477
  }
478
478
  };
479
+ this.searchTermServiceForm = this.fb.group({
480
+ searchTerm: ['']
481
+ });
479
482
  }
480
483
  get config() {
481
484
  return this._config;
@@ -520,7 +523,9 @@ class GenericFilterComponent {
520
523
  const services = this.config.fields.find(field => field.name === 'user-services');
521
524
  if (services) {
522
525
  this.startFilterSkillsByServices(this.form, services);
523
- this.initValuesFromCacheForSkillsByServices();
526
+ if (!this._config.copyFields) {
527
+ this.initValuesFromCacheForSkillsByServices();
528
+ }
524
529
  }
525
530
  }
526
531
  ngOnDestroy() {
@@ -612,6 +617,12 @@ class GenericFilterComponent {
612
617
  else {
613
618
  this.emitFormErrors(form);
614
619
  }
620
+ for (const field of this.config.fields) {
621
+ const fieldName = field.name;
622
+ if (fieldName === 'user-services') {
623
+ this.searchTermServiceForm.reset();
624
+ }
625
+ }
615
626
  if (this._config.applyButtonCallback) {
616
627
  this._config.applyButtonCallback();
617
628
  }
@@ -632,8 +643,8 @@ class GenericFilterComponent {
632
643
  this.form.get(name).patchValue(value);
633
644
  }
634
645
  }
635
- inputServiceChanged(e, field) {
636
- if (e === undefined) {
646
+ inputServiceChanged(selectedNotAddedService, field) {
647
+ if (selectedNotAddedService === undefined) {
637
648
  this.addAllOption(field);
638
649
  }
639
650
  else {
@@ -891,12 +902,16 @@ class GenericFilterComponent {
891
902
  emitFormErrors(form) {
892
903
  let errors = [];
893
904
  for (const field of this.config.fields) {
894
- const formGroup = form.get(field.name);
905
+ const fieldName = field.name;
906
+ const formGroup = form.get(fieldName);
895
907
  if (formGroup && formGroup.errors && (formGroup.errors.minlength || formGroup.errors.required)) {
896
- errors.push({ name: field.name, error: field.minSelectedError });
908
+ errors.push({ name: fieldName, error: field.minSelectedError });
909
+ if (fieldName === 'user-services') {
910
+ this.searchTermServiceForm.reset();
911
+ }
897
912
  }
898
913
  if (formGroup && formGroup.errors && formGroup.errors.maxlength) {
899
- errors.push({ name: field.name, error: field.maxSelectedError });
914
+ errors.push({ name: fieldName, error: field.maxSelectedError });
900
915
  }
901
916
  }
902
917
  // remove duplicates
@@ -965,29 +980,56 @@ class GenericFilterComponent {
965
980
  userSkillsCheckboxField.options = [];
966
981
  userSkillsCheckboxField.options = this.filteredSkillsByServicesCheckbox;
967
982
  this.form.setControl('user-skills', new FormArray([]));
968
- this.filteredSkillsByServicesCheckbox.forEach(() => {
969
- this.form.get('user-skills').push(new FormControl(false));
970
- });
971
- const prevValues = this.filteredSkillsByServicesCheckbox.map(skill => {
972
- let selected = false;
973
- if (this.settings && this.settings.fields) {
974
- if (this.previousSelectedNestedCheckbox.length > 0) {
975
- selected = this.previousSelectedNestedCheckbox.includes(skill.key);
976
- }
977
- let isSelectedUserSkill;
978
- const selectedUserSkills = this.settings.fields.find(setting => setting.name === 'user-skills');
979
- if (selectedUserSkills && selectedUserSkills.value && selectedUserSkills.value.length > 0) {
980
- isSelectedUserSkill = selectedUserSkills.value.findIndex(val => Number(val) === Number(skill.key));
981
- selected = isSelectedUserSkill !== -1;
983
+ if (!this._config.copyFields) {
984
+ this.filteredSkillsByServicesCheckbox.forEach(() => {
985
+ this.form.get('user-skills').push(new FormControl(false));
986
+ });
987
+ const prevValues = this.filteredSkillsByServicesCheckbox.map(skill => {
988
+ let selected = false;
989
+ if (this.settings && this.settings.fields) {
990
+ if (this.previousSelectedNestedCheckbox.length > 0) {
991
+ selected = this.previousSelectedNestedCheckbox.includes(skill.key);
992
+ }
993
+ let isSelectedUserSkill;
994
+ const selectedUserSkills = this.settings.fields.find(setting => setting.name === 'user-skills');
995
+ if (selectedUserSkills && selectedUserSkills.value && selectedUserSkills.value.length > 0) {
996
+ isSelectedUserSkill = selectedUserSkills.value.findIndex(val => Number(val) === Number(skill.key));
997
+ selected = isSelectedUserSkill !== -1;
998
+ }
999
+ if (this.previousSelectedNestedCheckbox.length > 0) {
1000
+ // Pick up from previous selected
1001
+ selected = this.previousSelectedNestedCheckbox.includes(String(skill.key));
1002
+ }
982
1003
  }
983
- if (this.previousSelectedNestedCheckbox.length > 0) {
984
- // Pick up from previous selected
985
- selected = this.previousSelectedNestedCheckbox.includes(String(skill.key));
1004
+ return selected;
1005
+ });
1006
+ this.form.get('user-skills').setValue(prevValues);
1007
+ }
1008
+ else {
1009
+ const preSelectedSkills = [];
1010
+ this.filteredSkillsByServicesCheckbox.map((skillsByServices, index) => {
1011
+ for (let i = 0; i < this._config.preSelectedNestedCheckbox.length; i++) {
1012
+ const skillCopyValue = this._config.preSelectedNestedCheckbox[i];
1013
+ if (skillCopyValue.toString() === skillsByServices.key.toString()) {
1014
+ preSelectedSkills[index] = true;
1015
+ break;
1016
+ }
1017
+ else {
1018
+ preSelectedSkills[index] = false;
1019
+ }
986
1020
  }
1021
+ });
1022
+ if (preSelectedSkills.length > 0) {
1023
+ preSelectedSkills.forEach((h) => {
1024
+ this.form.get('user-skills').push(new FormControl(h));
1025
+ });
987
1026
  }
988
- return selected;
989
- });
990
- this.form.get('user-skills').setValue(prevValues);
1027
+ else {
1028
+ this.filteredSkillsByServicesCheckbox.map(() => {
1029
+ this.form.get('user-skills').push(new FormControl(false));
1030
+ });
1031
+ }
1032
+ }
991
1033
  return this.filteredSkillsByServicesCheckbox;
992
1034
  }
993
1035
  }
@@ -1026,7 +1068,7 @@ class GenericFilterComponent {
1026
1068
  GenericFilterComponent.decorators = [
1027
1069
  { type: Component, args: [{
1028
1070
  selector: 'xuilib-generic-filter',
1029
- 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.taskName\"\n [userIncluded]=\"false\"\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 [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",
1071
+ 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.taskName\"\n [userIncluded]=\"false\"\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",
1030
1072
  changeDetection: ChangeDetectionStrategy.OnPush,
1031
1073
  encapsulation: ViewEncapsulation.None,
1032
1074
  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%}"]
@@ -3153,6 +3195,52 @@ LetDirective.propDecorators = {
3153
3195
  xuilibLet: [{ type: Input }]
3154
3196
  };
3155
3197
 
3198
+ class SearchServiceComponent {
3199
+ constructor(fb) {
3200
+ this.fb = fb;
3201
+ this.showAutocomplete = false;
3202
+ this.serviceChanged = new EventEmitter();
3203
+ this.minSearchCharacters = 3;
3204
+ this.term = '';
3205
+ this.form = this.fb.group({
3206
+ searchTerm: ['']
3207
+ });
3208
+ }
3209
+ onInput() {
3210
+ // Todo
3211
+ }
3212
+ resetSearchTerm() {
3213
+ this.form.controls.searchTerm.patchValue('', { emitEvent: false, onlySelf: true });
3214
+ }
3215
+ onSelectionChanged($event) {
3216
+ var _a;
3217
+ const label = (_a = $event.source) === null || _a === void 0 ? void 0 : _a.value;
3218
+ if (label && $event.source.selected) {
3219
+ const selectedService = this.services.find(s => s.label === label);
3220
+ this.serviceChanged.emit(selectedService);
3221
+ }
3222
+ }
3223
+ }
3224
+ SearchServiceComponent.decorators = [
3225
+ { type: Component, args: [{
3226
+ selector: 'exui-search-service',
3227
+ 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",
3228
+ 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}"]
3229
+ },] }
3230
+ ];
3231
+ SearchServiceComponent.ctorParameters = () => [
3232
+ { type: FormBuilder }
3233
+ ];
3234
+ SearchServiceComponent.propDecorators = {
3235
+ services: [{ type: Input }],
3236
+ selectedServices: [{ type: Input }],
3237
+ disabled: [{ type: Input }],
3238
+ delay: [{ type: Input }],
3239
+ form: [{ type: Input }],
3240
+ showAutocomplete: [{ type: Input }],
3241
+ serviceChanged: [{ type: Output }]
3242
+ };
3243
+
3156
3244
  class FindServiceComponent {
3157
3245
  constructor() {
3158
3246
  this.services = [];
@@ -3202,6 +3290,7 @@ class FindServiceComponent {
3202
3290
  }
3203
3291
  this.tempSelectedService = null;
3204
3292
  this.serviceFieldChanged.emit(this.tempSelectedService);
3293
+ this.searchServiceComponent.resetSearchTerm();
3205
3294
  }
3206
3295
  removeService(service) {
3207
3296
  if (service.key) {
@@ -3260,7 +3349,7 @@ class FindServiceComponent {
3260
3349
  FindServiceComponent.decorators = [
3261
3350
  { type: Component, args: [{
3262
3351
  selector: 'xuilib-find-service',
3263
- 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",
3352
+ 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",
3264
3353
  styles: ["#add-service{background-color:#ddd}"]
3265
3354
  },] }
3266
3355
  ];
@@ -3269,11 +3358,13 @@ FindServiceComponent.propDecorators = {
3269
3358
  fields: [{ type: Input }],
3270
3359
  serviceTitle: [{ type: Input }],
3271
3360
  form: [{ type: Input }],
3361
+ searchTermServiceForm: [{ type: Input }],
3272
3362
  services: [{ type: Input }],
3273
3363
  selectedServices: [{ type: Input }],
3274
3364
  enableAddServiceButton: [{ type: Input }],
3275
3365
  disabled: [{ type: Input }],
3276
3366
  disableInputField: [{ type: Input }],
3367
+ searchServiceComponent: [{ type: ViewChild, args: [SearchServiceComponent, { static: true },] }],
3277
3368
  serviceFieldChanged: [{ type: Output }]
3278
3369
  };
3279
3370
 
@@ -3400,45 +3491,6 @@ FindTaskNameComponent.propDecorators = {
3400
3491
  disabled: [{ type: Input }]
3401
3492
  };
3402
3493
 
3403
- class SearchServiceComponent {
3404
- constructor(fb) {
3405
- this.fb = fb;
3406
- this.showAutocomplete = false;
3407
- this.serviceChanged = new EventEmitter();
3408
- this.minSearchCharacters = 3;
3409
- this.term = '';
3410
- this.form = this.fb.group({
3411
- searchTerm: ['']
3412
- });
3413
- }
3414
- onInput() {
3415
- // Todo
3416
- }
3417
- onSelectionChanged(label) {
3418
- const selectedService = this.services.find(s => s.label === label);
3419
- this.serviceChanged.emit(selectedService);
3420
- }
3421
- }
3422
- SearchServiceComponent.decorators = [
3423
- { type: Component, args: [{
3424
- selector: 'exui-search-service',
3425
- 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",
3426
- 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}"]
3427
- },] }
3428
- ];
3429
- SearchServiceComponent.ctorParameters = () => [
3430
- { type: FormBuilder }
3431
- ];
3432
- SearchServiceComponent.propDecorators = {
3433
- services: [{ type: Input }],
3434
- selectedServices: [{ type: Input }],
3435
- disabled: [{ type: Input }],
3436
- delay: [{ type: Input }],
3437
- form: [{ type: Input }],
3438
- showAutocomplete: [{ type: Input }],
3439
- serviceChanged: [{ type: Output }]
3440
- };
3441
-
3442
3494
  /*
3443
3495
  * Gov Uk Checkbox Dumb Component responsible for
3444
3496
  * displaying checkbox input and hint