@hmcts/rpx-xui-common-lib 1.6.1-adding-location-filter-bugfix → 1.6.1-all-work-filter

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/bundles/hmcts-rpx-xui-common-lib.umd.js +607 -426
  2. package/bundles/hmcts-rpx-xui-common-lib.umd.js.map +1 -1
  3. package/bundles/hmcts-rpx-xui-common-lib.umd.min.js +1 -1
  4. package/bundles/hmcts-rpx-xui-common-lib.umd.min.js.map +1 -1
  5. package/esm2015/lib/components/find-location/find-location.component.js +98 -44
  6. package/esm2015/lib/components/find-person/find-person.component.js +59 -24
  7. package/esm2015/lib/components/generic-filter/generic-filter-utils.js +2 -2
  8. package/esm2015/lib/components/generic-filter/generic-filter.component.js +49 -42
  9. package/esm2015/lib/components/search-location/search-location.component.js +53 -67
  10. package/esm2015/lib/exui-common-lib.module.js +4 -3
  11. package/esm2015/lib/gov-ui/models/isession-storage.interface.js +24 -0
  12. package/esm2015/lib/gov-ui/util/session-storage/session-storage-utils.js +58 -0
  13. package/esm2015/lib/models/filter.model.js +9 -1
  14. package/esm2015/lib/models/person.model.js +11 -1
  15. package/esm2015/lib/models/search-options.model.js +4 -2
  16. package/esm2015/lib/services/find-person/find-person.service.js +77 -24
  17. package/esm5/lib/components/find-location/find-location.component.js +122 -64
  18. package/esm5/lib/components/find-person/find-person.component.js +59 -25
  19. package/esm5/lib/components/generic-filter/generic-filter-utils.js +2 -2
  20. package/esm5/lib/components/generic-filter/generic-filter.component.js +98 -71
  21. package/esm5/lib/components/search-location/search-location.component.js +59 -75
  22. package/esm5/lib/exui-common-lib.module.js +4 -3
  23. package/esm5/lib/gov-ui/models/isession-storage.interface.js +24 -0
  24. package/esm5/lib/gov-ui/util/session-storage/session-storage-utils.js +58 -0
  25. package/esm5/lib/models/filter.model.js +9 -1
  26. package/esm5/lib/models/person.model.js +11 -1
  27. package/esm5/lib/models/search-options.model.js +4 -2
  28. package/esm5/lib/services/find-person/find-person.service.js +83 -24
  29. package/fesm2015/hmcts-rpx-xui-common-lib.js +425 -268
  30. package/fesm2015/hmcts-rpx-xui-common-lib.js.map +1 -1
  31. package/fesm5/hmcts-rpx-xui-common-lib.js +532 -348
  32. package/fesm5/hmcts-rpx-xui-common-lib.js.map +1 -1
  33. package/hmcts-rpx-xui-common-lib.metadata.json +1 -1
  34. package/lib/components/find-location/find-location.component.d.ts +11 -6
  35. package/lib/components/find-person/find-person.component.d.ts +10 -8
  36. package/lib/components/generic-filter/generic-filter-utils.d.ts +2 -2
  37. package/lib/components/generic-filter/generic-filter.component.d.ts +2 -3
  38. package/lib/components/search-location/search-location.component.d.ts +9 -9
  39. package/lib/gov-ui/models/isession-storage.interface.d.ts +4 -0
  40. package/lib/gov-ui/util/session-storage/session-storage-utils.d.ts +6 -0
  41. package/lib/models/filter.model.d.ts +4 -0
  42. package/lib/models/person.model.d.ts +4 -0
  43. package/lib/models/search-options.model.d.ts +2 -1
  44. package/lib/services/find-person/find-person.service.d.ts +2 -2
  45. package/package.json +1 -1
@@ -3,17 +3,38 @@
3
3
  * Generated from: lib/components/find-location/find-location.component.ts
4
4
  * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
5
  */
6
- import { Component, Input } from '@angular/core';
7
- import { FormArray, FormControl, FormGroup } from '@angular/forms';
8
- import { getCheckBoxesValues } from '../generic-filter/generic-filter-utils';
6
+ import { Component, Input, ViewChild } from '@angular/core';
7
+ import { FormControl, FormGroup } from '@angular/forms';
8
+ import { getValues } from '../generic-filter/generic-filter-utils';
9
+ import { SearchLocationComponent } from '../search-location/search-location.component';
9
10
  export class FindLocationComponent {
10
11
  constructor() {
11
12
  this.selectedLocations = [];
12
13
  this.submitted = true;
14
+ this.enableAddLocationButton = true;
15
+ this.title = 'Search for a location by name';
13
16
  this.locations = [];
14
- this.locationsForm = new FormArray([]);
17
+ this.tempSelectedLocation = null;
15
18
  this.serviceIds = 'SSCS,IA';
16
19
  this.pServices = [];
20
+ this.pDisabled = false;
21
+ }
22
+ /**
23
+ * @return {?}
24
+ */
25
+ get disabled() {
26
+ return this.pDisabled;
27
+ }
28
+ /**
29
+ * @param {?} value
30
+ * @return {?}
31
+ */
32
+ set disabled(value) {
33
+ if (value) {
34
+ this.searchLocationComponent.resetSearchTerm();
35
+ this.removeSelectedValues();
36
+ }
37
+ this.pDisabled = value;
17
38
  }
18
39
  /**
19
40
  * @return {?}
@@ -32,49 +53,31 @@ export class FindLocationComponent {
32
53
  * @param {?} f
33
54
  * @return {?}
34
55
  */
35
- f => f.name === this.field.findPersonField));
56
+ f => f.name === this.field.findLocationField));
36
57
  if (field) {
37
- this.serviceIds = getCheckBoxesValues(field.options, value).filter((/**
38
- * @param {?} x
39
- * @return {?}
40
- */
41
- x => x !== 'services_all')).join(',');
42
- }
43
- }
44
- /**
45
- * @private
46
- * @param {?} selectedLocations
47
- * @param {?} formArray
48
- * @return {?}
49
- */
50
- static initForm(selectedLocations, formArray) {
51
- for (const location of selectedLocations) {
52
- formArray.push(new FormControl(location));
58
+ if (typeof value === 'string') {
59
+ this.serviceIds = value;
60
+ }
61
+ else {
62
+ this.serviceIds = getValues(field.options, value).filter((/**
63
+ * @param {?} x
64
+ * @return {?}
65
+ */
66
+ x => x !== 'services_all')).join(',');
67
+ }
53
68
  }
54
- return formArray;
55
- }
56
- /**
57
- * @return {?}
58
- */
59
- ngOnInit() {
60
- this.locationsForm = FindLocationComponent.initForm(this.selectedLocations, this.locationsForm);
61
69
  }
62
70
  /**
63
71
  * @return {?}
64
72
  */
65
73
  addLocation() {
66
- if (this.locations && this.locations.length) {
67
- /** @type {?} */
68
- const locationsForm = this.locationsForm;
69
- this.selectedLocations = (/** @type {?} */ (this.locationsForm.value));
70
- /** @type {?} */
71
- const formArray = (/** @type {?} */ (this.form.get(this.field.name)));
72
- /** @type {?} */
73
- const lastSavedValue = this.selectedLocations[this.selectedLocations.length - 1];
74
- FindLocationComponent.initForm([lastSavedValue], formArray);
75
- locationsForm.at(this.selectedLocations.length - 1).setValue(null);
74
+ if (this.tempSelectedLocation) {
75
+ this.selectedLocations = [...this.selectedLocations, this.tempSelectedLocation];
76
+ this.addSelectedLocationsToForm([this.tempSelectedLocation]);
77
+ this.tempSelectedLocation = null;
78
+ this.locations = [];
79
+ this.searchLocationComponent.resetSearchTerm();
76
80
  }
77
- this.locations = [];
78
81
  }
79
82
  /**
80
83
  * @param {?} location
@@ -105,24 +108,64 @@ export class FindLocationComponent {
105
108
  * @return {?}
106
109
  */
107
110
  onLocationSelected(location) {
108
- if (location && location.epims_id) {
109
- this.locations = [...this.locations, location];
111
+ if (this.field.maxSelected === 1) {
112
+ this.removeSelectedValues();
113
+ this.addSelectedLocationsToForm([location]);
114
+ }
115
+ else {
116
+ if (!this.selectedLocations.find((/**
117
+ * @param {?} x
118
+ * @return {?}
119
+ */
120
+ x => x.epims_id === location.epims_id))) {
121
+ if (location.epims_id) {
122
+ this.tempSelectedLocation = location;
123
+ }
124
+ }
125
+ }
126
+ }
127
+ /**
128
+ * @private
129
+ * @return {?}
130
+ */
131
+ removeSelectedValues() {
132
+ /** @type {?} */
133
+ const formArray = (/** @type {?} */ (this.form.get(this.field.name)));
134
+ for (let i = 0; i < formArray.length; i++) {
135
+ formArray.removeAt(i);
136
+ }
137
+ this.selectedLocations = [];
138
+ }
139
+ /**
140
+ * @private
141
+ * @param {?} locations
142
+ * @return {?}
143
+ */
144
+ addSelectedLocationsToForm(locations) {
145
+ /** @type {?} */
146
+ const formArray = (/** @type {?} */ (this.form.get(this.field.name)));
147
+ for (const location of locations) {
148
+ formArray.push(new FormControl(location));
110
149
  }
111
150
  }
112
151
  }
113
152
  FindLocationComponent.decorators = [
114
153
  { type: Component, args: [{
115
154
  selector: 'xuilib-find-location',
116
- template: "<div class=\"location-picker-custom\">\n <div class=\"search-location\">\n <div>\n <label id=\"input-selected-location-label\">Search for a location by name</label>\n </div>\n <exui-search-location class=\"search-location\"\n (locationSelected)=\"onLocationSelected($event)\"\n [selectedLocations]=\"selectedLocations\"\n [control]=\"locationsForm\"\n [locations]=\"locations\"\n [delay]=\"300\"\n [disabled]=false\n [serviceIds]=\"serviceIds\"\n [locationType]=\"'case-management'\"></exui-search-location>\n <a href=\"javascript:void(0)\" (click)=\"addLocation()\" class=\"govuk-button\" data-module=\"govuk-button\">\n Add location\n </a>\n </div>\n <ul *ngIf=\"selectedLocations.length\" class=\"hmcts-filter-tags selection-container\">\n <li class=\"location-selection\" *ngFor=\"let selection of selectedLocations\">\n <a class=\"hmcts-filter__tag\" (click)=\"removeLocation(selection)\" href=\"javascript:void(0)\">\n {{ selection.court_name }}\n </a>\n </li>\n </ul>\n</div>\n",
155
+ template: "<div class=\"location-picker-custom\">\n <div class=\"search-location\">\n <div>\n <label id=\"input-selected-location-label\" *ngIf=\"title\">{{title}}</label>\n </div>\n <exui-search-location class=\"search-location\"\n [locations]=\"locations\"\n [selectedLocations]=\"selectedLocations\"\n [singleMode]=\"field.maxSelected === 1\"\n [delay]=\"300\"\n [disabled]=\"disabled\"\n [serviceIds]=\"serviceIds\"\n (locationSelected)=\"onLocationSelected($event)\"\n [locationType]=\"'case-management'\"></exui-search-location>\n <a href=\"javascript:void(0)\" (click)=\"addLocation()\" class=\"govuk-button\" data-module=\"govuk-button\" *ngIf=\"enableAddLocationButton\">\n Add location\n </a>\n </div>\n <ul class=\"hmcts-filter-tags selection-container\" *ngIf=\"field.maxSelected != 1\">\n <li class=\"location-selection\" *ngFor=\"let selection of selectedLocations\">\n <a class=\"hmcts-filter__tag\" (click)=\"removeLocation(selection)\" href=\"javascript:void(0)\">\n {{ selection.court_name }}\n </a>\n </li>\n </ul>\n</div>\n",
117
156
  styles: [""]
118
157
  }] }
119
158
  ];
120
159
  FindLocationComponent.propDecorators = {
121
160
  selectedLocations: [{ type: Input }],
122
161
  submitted: [{ type: Input }],
162
+ enableAddLocationButton: [{ type: Input }],
123
163
  form: [{ type: Input }],
124
164
  field: [{ type: Input }],
125
165
  fields: [{ type: Input }],
166
+ title: [{ type: Input }],
167
+ searchLocationComponent: [{ type: ViewChild, args: [SearchLocationComponent,] }],
168
+ disabled: [{ type: Input }],
126
169
  services: [{ type: Input }]
127
170
  };
128
171
  if (false) {
@@ -131,21 +174,32 @@ if (false) {
131
174
  /** @type {?} */
132
175
  FindLocationComponent.prototype.submitted;
133
176
  /** @type {?} */
177
+ FindLocationComponent.prototype.enableAddLocationButton;
178
+ /** @type {?} */
134
179
  FindLocationComponent.prototype.form;
135
180
  /** @type {?} */
136
181
  FindLocationComponent.prototype.field;
137
182
  /** @type {?} */
138
183
  FindLocationComponent.prototype.fields;
139
184
  /** @type {?} */
185
+ FindLocationComponent.prototype.title;
186
+ /** @type {?} */
140
187
  FindLocationComponent.prototype.locations;
141
188
  /** @type {?} */
142
- FindLocationComponent.prototype.locationsForm;
189
+ FindLocationComponent.prototype.tempSelectedLocation;
143
190
  /** @type {?} */
144
191
  FindLocationComponent.prototype.serviceIds;
192
+ /** @type {?} */
193
+ FindLocationComponent.prototype.searchLocationComponent;
145
194
  /**
146
195
  * @type {?}
147
196
  * @private
148
197
  */
149
198
  FindLocationComponent.prototype.pServices;
199
+ /**
200
+ * @type {?}
201
+ * @private
202
+ */
203
+ FindLocationComponent.prototype.pDisabled;
150
204
  }
151
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1sb2NhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AaG1jdHMvcnB4LXh1aS1jb21tb24tbGliLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvZmluZC1sb2NhdGlvbi9maW5kLWxvY2F0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ3ZELE9BQU8sRUFBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBR2pFLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBTzNFLE1BQU0sT0FBTyxxQkFBcUI7SUFMbEM7UUFNa0Isc0JBQWlCLEdBQTJCLEVBQUUsQ0FBQztRQUMvQyxjQUFTLEdBQVksSUFBSSxDQUFDO1FBSW5DLGNBQVMsR0FBMkIsRUFBRSxDQUFDO1FBQ3ZDLGtCQUFhLEdBQUcsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEMsZUFBVSxHQUFXLFNBQVMsQ0FBQztRQUM5QixjQUFTLEdBQWEsRUFBRSxDQUFDO0lBc0RuQyxDQUFDOzs7O0lBcERDLElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQzs7Ozs7SUFFRCxJQUNXLFFBQVEsQ0FBQyxLQUFlO1FBQ2pDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDOztjQUNqQixLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJOzs7O1FBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxFQUFDO1FBQzFFLElBQUksS0FBSyxFQUFFO1lBQ1QsSUFBSSxDQUFDLFVBQVUsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEtB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MEM7O0lBQzFDLHFDQUFnQzs7SUFDaEMsc0NBQXlDOztJQUN6Qyx1Q0FBNEM7O0lBQzVDLDBDQUE4Qzs7SUFDOUMsOENBQXlDOztJQUN6QywyQ0FBc0M7Ozs7O0lBQ3RDLDBDQUFpQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybUFycmF5LCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0ZpbHRlckZpZWxkQ29uZmlnfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtMb2NhdGlvbkJ5RVBJTVNNb2RlbH0gZnJvbSAnLi4vLi4vbW9kZWxzL2xvY2F0aW9uLm1vZGVsJztcbmltcG9ydCB7Z2V0Q2hlY2tCb3hlc1ZhbHVlc30gZnJvbSAnLi4vZ2VuZXJpYy1maWx0ZXIvZ2VuZXJpYy1maWx0ZXItdXRpbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd4dWlsaWItZmluZC1sb2NhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9maW5kLWxvY2F0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmluZC1sb2NhdGlvbi5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEZpbmRMb2NhdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHB1YmxpYyBzZWxlY3RlZExvY2F0aW9uczogTG9jYXRpb25CeUVQSU1TTW9kZWxbXSA9IFtdO1xuICBASW5wdXQoKSBwdWJsaWMgc3VibWl0dGVkOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgcHVibGljIGZvcm06IEZvcm1Hcm91cDtcbiAgQElucHV0KCkgcHVibGljIGZpZWxkOiBGaWx0ZXJGaWVsZENvbmZpZztcbiAgQElucHV0KCkgcHVibGljIGZpZWxkczogRmlsdGVyRmllbGRDb25maWdbXTtcbiAgcHVibGljIGxvY2F0aW9uczogTG9jYXRpb25CeUVQSU1TTW9kZWxbXSA9IFtdO1xuICBwdWJsaWMgbG9jYXRpb25zRm9ybSA9IG5ldyBGb3JtQXJyYXkoW10pO1xuICBwdWJsaWMgc2VydmljZUlkczogc3RyaW5nID0gJ1NTQ1MsSUEnO1xuICBwcml2YXRlIHBTZXJ2aWNlczogc3RyaW5nW10gPSBbXTtcblxuICBwdWJsaWMgZ2V0IHNlcnZpY2VzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5wU2VydmljZXM7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHNlcnZpY2VzKHZhbHVlOiBzdHJpbmdbXSkge1xuICAgIHRoaXMucFNlcnZpY2VzID0gdmFsdWU7XG4gICAgY29uc3QgZmllbGQgPSB0aGlzLmZpZWxkcy5maW5kKGYgPT4gZi5uYW1lID09PSB0aGlzLmZpZWxkLmZpbmRQZXJzb25GaWVsZCk7XG4gICAgaWYgKGZpZWxkKSB7XG4gICAgICB0aGlzLnNlcnZpY2VJZHMgPSBnZXRDaGVja0JveGVzVmFsdWVzKGZpZWxkLm9wdGlvbnMsIHZhbHVlKS5maWx0ZXIoeCA9PiB4ICE9PSAnc2VydmljZXNfYWxsJykuam9pbignLCcpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGluaXRGb3JtKHNlbGVjdGVkTG9jYXRpb25zOiBMb2NhdGlvbkJ5RVBJTVNNb2RlbFtdLCBmb3JtQXJyYXk6IEZvcm1BcnJheSk6IEZvcm1BcnJheSB7XG4gICAgZm9yIChjb25zdCBsb2NhdGlvbiBvZiBzZWxlY3RlZExvY2F0aW9ucykge1xuICAgICAgZm9ybUFycmF5LnB1c2gobmV3IEZvcm1Db250cm9sKGxvY2F0aW9uKSk7XG4gICAgfVxuICAgIHJldHVybiBmb3JtQXJyYXk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5sb2NhdGlvbnNGb3JtID0gRmluZExvY2F0aW9uQ29tcG9uZW50LmluaXRGb3JtKHRoaXMuc2VsZWN0ZWRMb2NhdGlvbnMsIHRoaXMubG9jYXRpb25zRm9ybSk7XG4gIH1cblxuICBwdWJsaWMgYWRkTG9jYXRpb24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubG9jYXRpb25zICYmIHRoaXMubG9jYXRpb25zLmxlbmd0aCkge1xuICAgICAgY29uc3QgbG9jYXRpb25zRm9ybTogRm9ybUFycmF5ID0gdGhpcy5sb2NhdGlvbnNGb3JtO1xuICAgICAgdGhpcy5zZWxlY3RlZExvY2F0aW9ucyA9IHRoaXMubG9jYXRpb25zRm9ybS52YWx1ZSBhcyBMb2NhdGlvbkJ5RVBJTVNNb2RlbFtdO1xuICAgICAgY29uc3QgZm9ybUFycmF5OiBGb3JtQXJyYXkgPSB0aGlzLmZvcm0uZ2V0KHRoaXMuZmllbGQubmFtZSkgYXMgRm9ybUFycmF5O1xuICAgICAgY29uc3QgbGFzdFNhdmVkVmFsdWUgPSB0aGlzLnNlbGVjdGVkTG9jYXRpb25zW3RoaXMuc2VsZWN0ZWRMb2NhdGlvbnMubGVuZ3RoIC0gMV07XG4gICAgICBGaW5kTG9jYXRpb25Db21wb25lbnQuaW5pdEZvcm0oW2xhc3RTYXZlZFZhbHVlXSwgZm9ybUFycmF5KTtcbiAgICAgIGxvY2F0aW9uc0Zvcm0uYXQodGhpcy5zZWxlY3RlZExvY2F0aW9ucy5sZW5ndGggLSAxKS5zZXRWYWx1ZShudWxsKTtcbiAgICB9XG4gICAgdGhpcy5sb2NhdGlvbnMgPSBbXTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVMb2NhdGlvbihsb2NhdGlvbjogTG9jYXRpb25CeUVQSU1TTW9kZWwpOiB2b2lkIHtcbiAgICBpZiAobG9jYXRpb24uZXBpbXNfaWQpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRMb2NhdGlvbnMgPSB0aGlzLnNlbGVjdGVkTG9jYXRpb25zLmZpbHRlcihzZWxlY3RlZExvY2F0aW9uID0+IHNlbGVjdGVkTG9jYXRpb24uZXBpbXNfaWQgIT09IGxvY2F0aW9uLmVwaW1zX2lkKTtcbiAgICAgIGNvbnN0IGZvcm1BcnJheSA9IHRoaXMuZm9ybS5nZXQodGhpcy5maWVsZC5uYW1lKSBhcyBGb3JtQXJyYXk7XG4gICAgICBjb25zdCBpbmRleCA9IChmb3JtQXJyYXkudmFsdWUgYXMgTG9jYXRpb25CeUVQSU1TTW9kZWxbXSkuZmluZEluZGV4KHNlbGVjdGVkTG9jYXRpb24gPT4gc2VsZWN0ZWRMb2NhdGlvbi5lcGltc19pZCA9PT0gbG9jYXRpb24uZXBpbXNfaWQpO1xuICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgZm9ybUFycmF5LnJlbW92ZUF0KGluZGV4KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25Mb2NhdGlvblNlbGVjdGVkKGxvY2F0aW9uOiBMb2NhdGlvbkJ5RVBJTVNNb2RlbCk6IHZvaWQge1xuICAgIGlmIChsb2NhdGlvbiAmJiBsb2NhdGlvbi5lcGltc19pZCkge1xuICAgICAgdGhpcy5sb2NhdGlvbnMgPSBbLi4udGhpcy5sb2NhdGlvbnMsIGxvY2F0aW9uXTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
205
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1sb2NhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AaG1jdHMvcnB4LXh1aS1jb21tb24tbGliLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvZmluZC1sb2NhdGlvbi9maW5kLWxvY2F0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQVksV0FBVyxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBR2pFLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQztBQUNqRSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQU9yRixNQUFNLE9BQU8scUJBQXFCO0lBTGxDO1FBTWtCLHNCQUFpQixHQUEyQixFQUFFLENBQUM7UUFDL0MsY0FBUyxHQUFZLElBQUksQ0FBQztRQUMxQiw0QkFBdUIsR0FBWSxJQUFJLENBQUM7UUFJeEMsVUFBSyxHQUFHLCtCQUErQixDQUFDO1FBQ2pELGNBQVMsR0FBMkIsRUFBRSxDQUFDO1FBQ3ZDLHlCQUFvQixHQUF5QixJQUFJLENBQUM7UUFDbEQsZUFBVSxHQUFXLFNBQVMsQ0FBQztRQUU5QixjQUFTLEdBQWEsRUFBRSxDQUFDO1FBQ3pCLGNBQVMsR0FBWSxLQUFLLENBQUM7SUFnRnJDLENBQUM7Ozs7SUE5RUMsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDOzs7OztJQUVELElBQ1csUUFBUSxDQUFDLEtBQWM7UUFDaEMsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLENBQUMsdUJBQXVCLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDL0MsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7U0FDN0I7UUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLEtB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bnQsIElucHV0LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3JtQXJyYXksIEZvcm1Db250cm9sLCBGb3JtR3JvdXB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7RmlsdGVyRmllbGRDb25maWd9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge0xvY2F0aW9uQnlFUElNU01vZGVsfSBmcm9tICcuLi8uLi9tb2RlbHMvbG9jYXRpb24ubW9kZWwnO1xuaW1wb3J0IHtnZXRWYWx1ZXN9IGZyb20gJy4uL2dlbmVyaWMtZmlsdGVyL2dlbmVyaWMtZmlsdGVyLXV0aWxzJztcbmltcG9ydCB7U2VhcmNoTG9jYXRpb25Db21wb25lbnR9IGZyb20gJy4uL3NlYXJjaC1sb2NhdGlvbi9zZWFyY2gtbG9jYXRpb24uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAneHVpbGliLWZpbmQtbG9jYXRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vZmluZC1sb2NhdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZpbmQtbG9jYXRpb24uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGaW5kTG9jYXRpb25Db21wb25lbnQge1xuICBASW5wdXQoKSBwdWJsaWMgc2VsZWN0ZWRMb2NhdGlvbnM6IExvY2F0aW9uQnlFUElNU01vZGVsW10gPSBbXTtcbiAgQElucHV0KCkgcHVibGljIHN1Ym1pdHRlZDogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIHB1YmxpYyBlbmFibGVBZGRMb2NhdGlvbkJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIHB1YmxpYyBmb3JtOiBGb3JtR3JvdXA7XG4gIEBJbnB1dCgpIHB1YmxpYyBmaWVsZDogRmlsdGVyRmllbGRDb25maWc7XG4gIEBJbnB1dCgpIHB1YmxpYyBmaWVsZHM6IEZpbHRlckZpZWxkQ29uZmlnW107XG4gIEBJbnB1dCgpIHB1YmxpYyB0aXRsZSA9ICdTZWFyY2ggZm9yIGEgbG9jYXRpb24gYnkgbmFtZSc7XG4gIHB1YmxpYyBsb2NhdGlvbnM6IExvY2F0aW9uQnlFUElNU01vZGVsW10gPSBbXTtcbiAgcHVibGljIHRlbXBTZWxlY3RlZExvY2F0aW9uOiBMb2NhdGlvbkJ5RVBJTVNNb2RlbCA9IG51bGw7XG4gIHB1YmxpYyBzZXJ2aWNlSWRzOiBzdHJpbmcgPSAnU1NDUyxJQSc7XG4gIEBWaWV3Q2hpbGQoU2VhcmNoTG9jYXRpb25Db21wb25lbnQpIHB1YmxpYyBzZWFyY2hMb2NhdGlvbkNvbXBvbmVudDogU2VhcmNoTG9jYXRpb25Db21wb25lbnQ7XG4gIHByaXZhdGUgcFNlcnZpY2VzOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIHBEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucERpc2FibGVkO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5zZWFyY2hMb2NhdGlvbkNvbXBvbmVudC5yZXNldFNlYXJjaFRlcm0oKTtcbiAgICAgIHRoaXMucmVtb3ZlU2VsZWN0ZWRWYWx1ZXMoKTtcbiAgICB9XG4gICAgdGhpcy5wRGlzYWJsZWQgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VydmljZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLnBTZXJ2aWNlcztcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc2VydmljZXModmFsdWU6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5wU2VydmljZXMgPSB2YWx1ZTtcbiAgICBjb25zdCBmaWVsZCA9IHRoaXMuZmllbGRzLmZpbmQoZiA9PiBmLm5hbWUgPT09IHRoaXMuZmllbGQuZmluZExvY2F0aW9uRmllbGQpO1xuICAgIGlmIChmaWVsZCkge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdGhpcy5zZXJ2aWNlSWRzID0gdmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNlcnZpY2VJZHMgPSBnZXRWYWx1ZXMoZmllbGQub3B0aW9ucywgdmFsdWUpLmZpbHRlcih4ID0+IHggIT09ICdzZXJ2aWNlc19hbGwnKS5qb2luKCcsJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFkZExvY2F0aW9uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRlbXBTZWxlY3RlZExvY2F0aW9uKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkTG9jYXRpb25zID0gWy4uLnRoaXMuc2VsZWN0ZWRMb2NhdGlvbnMsIHRoaXMudGVtcFNlbGVjdGVkTG9jYXRpb25dO1xuICAgICAgdGhpcy5hZGRTZWxlY3RlZExvY2F0aW9uc1RvRm9ybShbdGhpcy50ZW1wU2VsZWN0ZWRMb2NhdGlvbl0pO1xuICAgICAgdGhpcy50ZW1wU2VsZWN0ZWRMb2NhdGlvbiA9IG51bGw7XG4gICAgICB0aGlzLmxvY2F0aW9ucyA9IFtdO1xuICAgICAgdGhpcy5zZWFyY2hMb2NhdGlvbkNvbXBvbmVudC5yZXNldFNlYXJjaFRlcm0oKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlTG9jYXRpb24obG9jYXRpb246IExvY2F0aW9uQnlFUElNU01vZGVsKTogdm9pZCB7XG4gICAgaWYgKGxvY2F0aW9uLmVwaW1zX2lkKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkTG9jYXRpb25zID0gdGhpcy5zZWxlY3RlZExvY2F0aW9ucy5maWx0ZXIoc2VsZWN0ZWRMb2NhdGlvbiA9PiBzZWxlY3RlZExvY2F0aW9uLmVwaW1zX2lkICE9PSBsb2NhdGlvbi5lcGltc19pZCk7XG4gICAgICBjb25zdCBmb3JtQXJyYXkgPSB0aGlzLmZvcm0uZ2V0KHRoaXMuZmllbGQubmFtZSkgYXMgRm9ybUFycmF5O1xuICAgICAgY29uc3QgaW5kZXggPSAoZm9ybUFycmF5LnZhbHVlIGFzIExvY2F0aW9uQnlFUElNU01vZGVsW10pLmZpbmRJbmRleChzZWxlY3RlZExvY2F0aW9uID0+IHNlbGVjdGVkTG9jYXRpb24uZXBpbXNfaWQgPT09IGxvY2F0aW9uLmVwaW1zX2lkKTtcbiAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgIGZvcm1BcnJheS5yZW1vdmVBdChpbmRleCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uTG9jYXRpb25TZWxlY3RlZChsb2NhdGlvbjogTG9jYXRpb25CeUVQSU1TTW9kZWwpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5maWVsZC5tYXhTZWxlY3RlZCA9PT0gMSkge1xuICAgICAgdGhpcy5yZW1vdmVTZWxlY3RlZFZhbHVlcygpO1xuICAgICAgdGhpcy5hZGRTZWxlY3RlZExvY2F0aW9uc1RvRm9ybShbbG9jYXRpb25dKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkTG9jYXRpb25zLmZpbmQoeCA9PiB4LmVwaW1zX2lkID09PSBsb2NhdGlvbi5lcGltc19pZCkpIHtcbiAgICAgICAgaWYgKGxvY2F0aW9uLmVwaW1zX2lkKSB7XG4gICAgICAgICAgdGhpcy50ZW1wU2VsZWN0ZWRMb2NhdGlvbiA9IGxvY2F0aW9uO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVTZWxlY3RlZFZhbHVlcygpOiB2b2lkIHtcbiAgICBjb25zdCBmb3JtQXJyYXkgPSB0aGlzLmZvcm0uZ2V0KHRoaXMuZmllbGQubmFtZSkgYXMgRm9ybUFycmF5O1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZm9ybUFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBmb3JtQXJyYXkucmVtb3ZlQXQoaSk7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWRMb2NhdGlvbnMgPSBbXTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkU2VsZWN0ZWRMb2NhdGlvbnNUb0Zvcm0obG9jYXRpb25zOiBMb2NhdGlvbkJ5RVBJTVNNb2RlbFtdKTogdm9pZCB7XG4gICAgY29uc3QgZm9ybUFycmF5ID0gdGhpcy5mb3JtLmdldCh0aGlzLmZpZWxkLm5hbWUpIGFzIEZvcm1BcnJheTtcbiAgICBmb3IgKGNvbnN0IGxvY2F0aW9uIG9mIGxvY2F0aW9ucykge1xuICAgICAgZm9ybUFycmF5LnB1c2gobmV3IEZvcm1Db250cm9sKGxvY2F0aW9uKSk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -3,18 +3,20 @@
3
3
  * Generated from: lib/components/find-person/find-person.component.ts
4
4
  * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
5
  */
6
- import { Component, EventEmitter, Input, Output } from '@angular/core';
6
+ import { ChangeDetectorRef, Component, EventEmitter, Input, Output } from '@angular/core';
7
7
  import { FormControl, FormGroup } from '@angular/forms';
8
8
  import { of, zip } from 'rxjs';
9
- import { map, startWith, switchMap } from 'rxjs/operators';
9
+ import { catchError, filter, map, startWith, switchMap, tap } from 'rxjs/operators';
10
10
  import { PersonRole } from '../../models';
11
11
  import { FindAPersonService } from '../../services/find-person/find-person.service';
12
12
  export class FindPersonComponent {
13
13
  /**
14
14
  * @param {?} findPersonService
15
+ * @param {?} cd
15
16
  */
16
- constructor(findPersonService) {
17
+ constructor(findPersonService, cd) {
17
18
  this.findPersonService = findPersonService;
19
+ this.cd = cd;
18
20
  this.personSelected = new EventEmitter();
19
21
  this.boldTitle = 'Find the person';
20
22
  this.subTitle = 'Type the name of the person and select them.';
@@ -23,16 +25,18 @@ export class FindPersonComponent {
23
25
  this.disabled = null;
24
26
  this.userIncluded = false;
25
27
  this.placeholderContent = '';
26
- this.isNoResultsShown = false;
28
+ this.isNoResultsShown = true;
27
29
  this.showUpdatedColor = false;
28
30
  this.selectedPersons = [];
29
31
  this.errorMessage = 'You must select a name';
30
32
  this.idValue = '';
33
+ this.services = ['IA'];
31
34
  this.isPersonSelectionCompleted = false;
32
35
  this.showAutocomplete = false;
33
36
  this.currentInputValue = '';
34
- this.choosenPerson = (/** @type {?} */ ({}));
35
- this.findPersonControl = new FormControl();
37
+ this.chosenPerson = null;
38
+ this.findPersonControl = new FormControl('');
39
+ this.filteredOptions = [];
36
40
  this.minSearchCharacters = 2;
37
41
  }
38
42
  /**
@@ -45,13 +49,34 @@ export class FindPersonComponent {
45
49
  else {
46
50
  this.findPersonGroup.addControl('findPersonControl', this.findPersonControl);
47
51
  }
48
- this.filteredOptions = this.findPersonControl.valueChanges.pipe(startWith(''), switchMap((/**
52
+ this.findPersonControl.valueChanges.pipe(startWith(''), tap((/**
53
+ * @return {?}
54
+ */
55
+ () => this.showAutocomplete = false)), tap((/**
56
+ * @return {?}
57
+ */
58
+ () => this.filteredOptions = [])), filter((/**
49
59
  * @param {?} searchTerm
50
60
  * @return {?}
51
61
  */
52
- searchTerm => {
53
- return this.filter(searchTerm || '');
54
- })));
62
+ searchTerm => searchTerm && searchTerm.length > this.minSearchCharacters)), switchMap((/**
63
+ * @param {?} searchTerm
64
+ * @return {?}
65
+ */
66
+ searchTerm => this.filter(searchTerm).pipe(tap((/**
67
+ * @return {?}
68
+ */
69
+ () => this.showAutocomplete = true)), catchError((/**
70
+ * @return {?}
71
+ */
72
+ () => this.filteredOptions = [])))))).subscribe((/**
73
+ * @param {?} people
74
+ * @return {?}
75
+ */
76
+ (people) => {
77
+ this.filteredOptions = people;
78
+ this.cd.detectChanges();
79
+ }));
55
80
  this.findPersonControl.setValue(this.selectedPerson);
56
81
  }
57
82
  /**
@@ -74,9 +99,9 @@ export class FindPersonComponent {
74
99
  */
75
100
  filter(searchTerm) {
76
101
  /** @type {?} */
77
- const findJudicialPeople = this.findPersonService.find({ searchTerm, jurisdiction: this.domain });
102
+ const findJudicialPeople = this.findPersonService.find({ searchTerm, userRole: this.domain, services: this.services });
78
103
  /** @type {?} */
79
- const findCaseworkersOrAdmins = this.findPersonService.findCaseworkers({ searchTerm, jurisdiction: this.domain });
104
+ const findCaseworkersOrAdmins = this.findPersonService.findCaseworkers({ searchTerm, userRole: this.domain, services: this.services });
80
105
  if (searchTerm && searchTerm.length > this.minSearchCharacters) {
81
106
  switch (this.domain) {
82
107
  case PersonRole.JUDICIAL: {
@@ -110,20 +135,21 @@ export class FindPersonComponent {
110
135
  return findCaseworkersOrAdmins;
111
136
  }
112
137
  default: {
113
- return of();
138
+ return of([]);
114
139
  }
115
140
  }
116
141
  }
117
- return of();
142
+ return of([]);
118
143
  }
119
144
  /**
120
- * @param {?=} selectedPerson
145
+ * @param {?} selectedPerson
121
146
  * @return {?}
122
147
  */
123
148
  onSelectionChange(selectedPerson) {
124
149
  this.isPersonSelectionCompleted = true;
125
- this.choosenPerson = selectedPerson;
150
+ this.chosenPerson = selectedPerson;
126
151
  this.personSelected.emit(selectedPerson);
152
+ this.findPersonControl.setValue('');
127
153
  }
128
154
  /**
129
155
  * @param {?} currentValue
@@ -132,13 +158,16 @@ export class FindPersonComponent {
132
158
  updatedVal(currentValue) {
133
159
  this.currentInputValue = currentValue;
134
160
  this.showAutocomplete = !!currentValue && (currentValue.length > this.minSearchCharacters);
135
- this.isPersonSelectionCompleted = (this.getDisplayName(this.choosenPerson) === currentValue) ? true : false;
161
+ this.isPersonSelectionCompleted = this.getDisplayName(this.chosenPerson) === currentValue;
136
162
  }
137
163
  /**
138
164
  * @param {?} selectedPerson
139
165
  * @return {?}
140
166
  */
141
167
  getDisplayName(selectedPerson) {
168
+ if (!selectedPerson) {
169
+ return '';
170
+ }
142
171
  if (selectedPerson.domain === PersonRole.JUDICIAL && selectedPerson.knownAs) {
143
172
  return `${selectedPerson.knownAs}(${selectedPerson.email})`;
144
173
  }
@@ -148,13 +177,14 @@ export class FindPersonComponent {
148
177
  FindPersonComponent.decorators = [
149
178
  { type: Component, args: [{
150
179
  selector: 'xuilib-find-person',
151
- template: "<h1 class=\"govuk-heading-l\" *ngIf=\"title && title.length\">\n <span class=\"govuk-caption-l\">{{title}}</span>\n {{boldTitle}}\n</h1>\n<div class=\"govuk-form-group\" [formGroup]=\"findPersonGroup\"\n [ngClass]=\"{'form-group-error': !findPersonGroup.valid && submitted}\">\n <fieldset class=\"govuk-fieldset\" aria-describedby=\"sub-title-hint\">\n <div id=\"sub-title-hint\" class=\"govuk-hint\" *ngIf=\"subTitle && subTitle.length\">\n {{subTitle}}\n </div>\n <span id=\"validation-error\" class=\"govuk-error-message\" *ngIf=\"findPersonGroup && findPersonGroup.errors\">\n <span class=\"govuk-visually-hidden\">Error:</span>{{findPersonGroup.errors.error ? findPersonGroup.errors.error : errorMessage}}\n </span>\n <input id=\"inputSelectPerson{{idValue}}\" type=\"text\" aria-label=\"select a person\" matInput\n formControlName=\"findPersonControl\"\n [matAutocomplete]=\"auto\"\n class=\"govuk-input govuk-!-width-one-third\"\n (ngModelChange)=\"updatedVal($event)\"\n [placeholder]=\"placeholderContent\"\n [attr.disabled]=\"disabled\"\n [value]=\"selectedPerson\">\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\">\n <mat-option *ngFor=\"let option of filteredOptions | async\"\n [value]=\"getDisplayName(option)\"\n (onSelectionChange)=\"onSelectionChange(option)\"\n [ngClass]=\"{'hide-autocomplete': !showAutocomplete, 'select-option': showUpdatedColor}\">\n {{getDisplayName(option)}}\n </mat-option>\n <mat-option [ngClass]=\"{'select-option': showUpdatedColor}\" *ngIf=\"isNoResultsShown && currentInputValue && currentInputValue.length && !(filteredOptions | async)?.length && showAutocomplete\">{{ 'No results found' }}</mat-option>\n </mat-autocomplete>\n </fieldset>\n</div>\n",
180
+ template: "<h1 class=\"govuk-heading-l\" *ngIf=\"title && title.length\">\n <span class=\"govuk-caption-l\">{{title}}</span>\n {{boldTitle}}\n</h1>\n<div class=\"govuk-form-group\" [formGroup]=\"findPersonGroup\"\n [ngClass]=\"{'form-group-error': findPersonGroup.get('findPersonControl').invalid && submitted}\">\n <fieldset class=\"govuk-fieldset\" aria-describedby=\"sub-title-hint\">\n <div id=\"sub-title-hint\" class=\"govuk-hint\" *ngIf=\"subTitle && subTitle.length\">\n {{subTitle}}\n </div>\n <span id=\"validation-error\" class=\"govuk-error-message\" *ngIf=\"findPersonGroup && findPersonGroup.errors\">\n <span class=\"govuk-visually-hidden\">Error:</span>{{findPersonGroup.errors.error ? findPersonGroup.errors.error : errorMessage}}\n </span>\n <input id=\"inputSelectPerson{{idValue}}\" type=\"text\" aria-label=\"select a person\" matInput\n formControlName=\"findPersonControl\"\n [matAutocomplete]=\"auto\"\n class=\"govuk-input govuk-!-width-one-third\"\n (ngModelChange)=\"updatedVal($event)\"\n [placeholder]=\"placeholderContent\"\n [attr.disabled]=\"disabled\"\n [value]=\"selectedPerson\">\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\">\n <mat-option *ngFor=\"let option of filteredOptions\"\n [value]=\"getDisplayName(option)\"\n (onSelectionChange)=\"onSelectionChange(option)\"\n [ngClass]=\"{'hide-autocomplete': !showAutocomplete, 'select-option': showUpdatedColor}\">\n {{getDisplayName(option)}}\n </mat-option>\n <mat-option [ngClass]=\"{'select-option': showUpdatedColor}\" *ngIf=\"isNoResultsShown && currentInputValue && currentInputValue.length > minSearchCharacters && !filteredOptions.length && showAutocomplete\">No results found</mat-option>\n </mat-autocomplete>\n </fieldset>\n</div>\n",
152
181
  styles: [".mat-option:hover{background:#2596be}.mat-option.select-option:hover{background:#1d70b8;color:#fff}.hide-autocomplete{display:none}"]
153
182
  }] }
154
183
  ];
155
184
  /** @nocollapse */
156
185
  FindPersonComponent.ctorParameters = () => [
157
- { type: FindAPersonService }
186
+ { type: FindAPersonService },
187
+ { type: ChangeDetectorRef }
158
188
  ];
159
189
  FindPersonComponent.propDecorators = {
160
190
  personSelected: [{ type: Output }],
@@ -172,7 +202,8 @@ FindPersonComponent.propDecorators = {
172
202
  showUpdatedColor: [{ type: Input }],
173
203
  selectedPersons: [{ type: Input }],
174
204
  errorMessage: [{ type: Input }],
175
- idValue: [{ type: Input }]
205
+ idValue: [{ type: Input }],
206
+ services: [{ type: Input }]
176
207
  };
177
208
  if (false) {
178
209
  /** @type {?} */
@@ -208,26 +239,30 @@ if (false) {
208
239
  /** @type {?} */
209
240
  FindPersonComponent.prototype.idValue;
210
241
  /** @type {?} */
242
+ FindPersonComponent.prototype.services;
243
+ /** @type {?} */
211
244
  FindPersonComponent.prototype.isPersonSelectionCompleted;
212
245
  /** @type {?} */
213
246
  FindPersonComponent.prototype.showAutocomplete;
214
247
  /** @type {?} */
215
248
  FindPersonComponent.prototype.currentInputValue;
216
249
  /** @type {?} */
217
- FindPersonComponent.prototype.choosenPerson;
250
+ FindPersonComponent.prototype.chosenPerson;
218
251
  /** @type {?} */
219
252
  FindPersonComponent.prototype.findPersonControl;
220
253
  /** @type {?} */
221
254
  FindPersonComponent.prototype.filteredOptions;
255
+ /** @type {?} */
256
+ FindPersonComponent.prototype.minSearchCharacters;
222
257
  /**
223
258
  * @type {?}
224
259
  * @private
225
260
  */
226
- FindPersonComponent.prototype.minSearchCharacters;
261
+ FindPersonComponent.prototype.findPersonService;
227
262
  /**
228
263
  * @type {?}
229
264
  * @private
230
265
  */
231
- FindPersonComponent.prototype.findPersonService;
266
+ FindPersonComponent.prototype.cd;
232
267
  }
233
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1wZXJzb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGhtY3RzL3JweC14dWktY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2ZpbmQtcGVyc29uL2ZpbmQtcGVyc29uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBYyxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNELE9BQU8sRUFBVSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFRcEYsTUFBTSxPQUFPLG1CQUFtQjs7OztJQXNCOUIsWUFBNkIsaUJBQXFDO1FBQXJDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBb0I7UUFyQmpELG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUU3QyxjQUFTLEdBQUcsaUJBQWlCLENBQUM7UUFDOUIsYUFBUSxHQUFHLDhDQUE4QyxDQUFDO1FBQzFELFdBQU0sR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDO1FBR3hCLGNBQVMsR0FBYSxJQUFJLENBQUM7UUFDM0IsYUFBUSxHQUFhLElBQUksQ0FBQztRQUMxQixpQkFBWSxHQUFhLEtBQUssQ0FBQztRQUMvQix1QkFBa0IsR0FBVyxFQUFFLENBQUM7UUFDaEMscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBQ2xDLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUNsQyxvQkFBZSxHQUFhLEVBQUUsQ0FBQztRQUMvQixpQkFBWSxHQUFXLHdCQUF3QixDQUFDO1FBQ2hELFlBQU8sR0FBVyxFQUFFLENBQUM7UUFDOUIsK0JBQTBCLEdBQVksS0FBSyxDQUFDO1FBQzVDLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUNsQyxzQkFBaUIsR0FBVyxFQUFFLENBQUM7UUFDL0Isa0JBQWEsR0FBVyxtQkFBQSxFQUFFLEVBQVUsQ0FBQztRQUtyQyxzQkFBaUIsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBRTVCLHdCQUFtQixHQUFHLENBQUMsQ0FBQztJQUp6QyxDQUFDOzs7O0lBTU0sUUFBUTtRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3pCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDMUM7YUFBTTtZQUNMLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1NBQzlFO1FBQ0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDN0QsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUNiLFNBQVM7Ozs7UUFBQyxVQUFVLENBQUMsRUFBRTtZQUNyQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZDLENBQUMsRUFBQyxDQUNILENBQUM7UUFDRixJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN2RCxDQUFDOzs7OztJQUVNLFdBQVcsQ0FBQyxPQUFzQjtRQUN2QyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLEVBQUU7WUFDdkQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN0QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztTQUM1QjtRQUNELElBQUksT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsWUFBWSxLQUFLLEVBQUUsRUFBRTtZQUM5RSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQywwQkFBMEIsR0FBRyxLQUFLLENBQUM7U0FDekM7SUFDSCxDQUFDOzs7OztJQUVNLE1BQU0sQ0FBQyxVQUFrQjs7Y0FDeEIsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDOztjQUMzRix1QkFBdUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDakgsSUFBSSxVQUFVLElBQUksVUFBVSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUU7WUFDOUQsUUFBUSxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUNuQixLQUFLLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDeEIsT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsR0FBRzs7OztvQkFBQyxPQUFPLENBQUMsRUFBRTs7OEJBQ3JDLEdBQUcsR0FBYSxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUc7Ozs7d0JBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUM7d0JBQzlELE9BQU8sT0FBTyxDQUFDLE1BQU07Ozs7d0JBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUMsQ0FBQztvQkFDdkQsQ0FBQyxFQUFDLENBQUMsQ0FBQztpQkFDTDtnQkFDRCxLQUFLLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDbkIsT0FBTyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsdUJBQXVCLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRzs7OztvQkFBQyxjQUFjLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDO2lCQUNsSTtnQkFDRCxLQUFLLFVBQVUsQ0FBQyxVQUFVLENBQUM7Z0JBQzNCLEtBQUssVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNyQixPQUFPLHVCQUF1QixDQUFDO2lCQUNoQztnQkFDRCxPQUFPLENBQUMsQ0FBQztvQkFDUCxPQUFPLEVBQUUsRUFBRSxDQUFDO2lCQUNiO2FBQ0Y7U0FDRjtRQUNELE9BQU8sRUFBRSxFQUFFLENBQUM7SUFDZCxDQUFDOzs7OztJQUVNLGlCQUFpQixDQUFDLGNBQXVCO1FBQzlDLElBQUksQ0FBQywwQkFBMEIsR0FBRyxJQUFJLENBQUM7UUFDdkMsSUFBSSxDQUFDLGFBQWEsR0FBRyxjQUFjLENBQUM7UUFDcEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDM0MsQ0FBQzs7Ozs7SUFFTSxVQUFVLENBQUMsWUFBb0I7UUFDcEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFlBQVksQ0FBQztRQUN0QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLFlBQVksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDM0YsSUFBSSxDQUFDLDBCQUEwQixHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQzlHLENBQUM7Ozs7O0lBRU0sY0FBYyxDQUFDLGNBQXNCO1FBQzFDLElBQUksY0FBYyxDQUFDLE1BQU0sS0FBSyxVQUFVLENBQUMsUUFBUSxJQUFJLGNBQWMsQ0FBQyxPQUFPLEVBQUU7WUFDM0UsT0FBTyxHQUFHLGNBQWMsQ0FBQyxPQUFPLElBQUksY0FBYyxDQUFDLEtBQUssR0FBRyxDQUFDO1NBQzdEO1FBQ0QsT0FBTyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxJQUFJLElBQUksY0FBYyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDO0lBQ3hHLENBQUM7OztZQXhHRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtnQkFDOUIsMDNEQUEyQzs7YUFFNUM7Ozs7WUFOUSxrQkFBa0I7Ozs2QkFTeEIsTUFBTTtvQkFDTixLQUFLO3dCQUNMLEtBQUs7dUJBQ0wsS0FBSztxQkFDTCxLQUFLOzhCQUNMLEtBQUs7NkJBQ0wsS0FBSzt3QkFDTCxLQUFLO3VCQUNMLEtBQUs7MkJBQ0wsS0FBSztpQ0FDTCxLQUFLOytCQUNMLEtBQUs7K0JBQ0wsS0FBSzs4QkFDTCxLQUFLOzJCQUNMLEtBQUs7c0JBQ0wsS0FBSzs7OztJQWZOLDZDQUE2RDs7SUFDN0Qsb0NBQThCOztJQUM5Qix3Q0FBOEM7O0lBQzlDLHVDQUEwRTs7SUFDMUUscUNBQXdDOztJQUN4Qyw4Q0FBMkM7O0lBQzNDLDZDQUF1Qzs7SUFDdkMsd0NBQTJDOztJQUMzQyx1Q0FBMEM7O0lBQzFDLDJDQUErQzs7SUFDL0MsaURBQWdEOztJQUNoRCwrQ0FBa0Q7O0lBQ2xELCtDQUFrRDs7SUFDbEQsOENBQStDOztJQUMvQywyQ0FBZ0U7O0lBQ2hFLHNDQUFxQzs7SUFDckMseURBQW1EOztJQUNuRCwrQ0FBeUM7O0lBQ3pDLGdEQUFzQzs7SUFDdEMsNENBQTRDOztJQUs1QyxnREFBNkM7O0lBQzdDLDhDQUE2Qzs7Ozs7SUFDN0Msa0RBQXlDOzs7OztJQUw3QixnREFBc0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgemlwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUGVyc29uLCBQZXJzb25Sb2xlIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IEZpbmRBUGVyc29uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZpbmQtcGVyc29uL2ZpbmQtcGVyc29uLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd4dWlsaWItZmluZC1wZXJzb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vZmluZC1wZXJzb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maW5kLXBlcnNvbi5jb21wb25lbnQuc2NzcyddLFxufSlcblxuZXhwb3J0IGNsYXNzIEZpbmRQZXJzb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBPdXRwdXQoKSBwdWJsaWMgcGVyc29uU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFBlcnNvbj4oKTtcbiAgQElucHV0KCkgcHVibGljIHRpdGxlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyBib2xkVGl0bGUgPSAnRmluZCB0aGUgcGVyc29uJztcbiAgQElucHV0KCkgcHVibGljIHN1YlRpdGxlID0gJ1R5cGUgdGhlIG5hbWUgb2YgdGhlIHBlcnNvbiBhbmQgc2VsZWN0IHRoZW0uJztcbiAgQElucHV0KCkgcHVibGljIGRvbWFpbiA9IFBlcnNvblJvbGUuQUxMO1xuICBASW5wdXQoKSBwdWJsaWMgZmluZFBlcnNvbkdyb3VwOiBGb3JtR3JvdXA7XG4gIEBJbnB1dCgpIHB1YmxpYyBzZWxlY3RlZFBlcnNvbjogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgc3VibWl0dGVkPzogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNhYmxlZD86IGJvb2xlYW4gPSBudWxsO1xuICBASW5wdXQoKSBwdWJsaWMgdXNlckluY2x1ZGVkPzogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXJDb250ZW50OiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcHVibGljIGlzTm9SZXN1bHRzU2hvd246IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIHNob3dVcGRhdGVkQ29sb3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIHNlbGVjdGVkUGVyc29uczogUGVyc29uW10gPSBbXTtcbiAgQElucHV0KCkgcHVibGljIGVycm9yTWVzc2FnZTogc3RyaW5nID0gJ1lvdSBtdXN0IHNlbGVjdCBhIG5hbWUnO1xuICBASW5wdXQoKSBwdWJsaWMgaWRWYWx1ZTogc3RyaW5nID0gJyc7XG4gIHB1YmxpYyBpc1BlcnNvblNlbGVjdGlvbkNvbXBsZXRlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgc2hvd0F1dG9jb21wbGV0ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgY3VycmVudElucHV0VmFsdWU6IHN0cmluZyA9ICcnO1xuICBwdWJsaWMgY2hvb3NlblBlcnNvbjogUGVyc29uID0ge30gYXMgUGVyc29uO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZmluZFBlcnNvblNlcnZpY2U6IEZpbmRBUGVyc29uU2VydmljZSkge1xuICB9XG5cbiAgcHVibGljIGZpbmRQZXJzb25Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XG4gIHB1YmxpYyBmaWx0ZXJlZE9wdGlvbnM6IE9ic2VydmFibGU8UGVyc29uW10+O1xuICBwcml2YXRlIHJlYWRvbmx5IG1pblNlYXJjaENoYXJhY3RlcnMgPSAyO1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZmluZFBlcnNvbkdyb3VwKSB7XG4gICAgICB0aGlzLmZpbmRQZXJzb25Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe30pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbmRQZXJzb25Hcm91cC5hZGRDb250cm9sKCdmaW5kUGVyc29uQ29udHJvbCcsIHRoaXMuZmluZFBlcnNvbkNvbnRyb2wpO1xuICAgIH1cbiAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IHRoaXMuZmluZFBlcnNvbkNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICBzdGFydFdpdGgoJycpLFxuICAgICAgc3dpdGNoTWFwKHNlYXJjaFRlcm0gPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXIoc2VhcmNoVGVybSB8fCAnJyk7XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5maW5kUGVyc29uQ29udHJvbC5zZXRWYWx1ZSh0aGlzLnNlbGVjdGVkUGVyc29uKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2RvbWFpbiddICYmICFjaGFuZ2VzWydkb21haW4nXS5maXJzdENoYW5nZSkge1xuICAgICAgdGhpcy5maW5kUGVyc29uQ29udHJvbC5zZXRWYWx1ZShudWxsKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRQZXJzb24gPSBudWxsO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlc1snc2VsZWN0ZWRQZXJzb24nXSAmJiBjaGFuZ2VzWydzZWxlY3RlZFBlcnNvbiddLmN1cnJlbnRWYWx1ZSA9PT0gJycpIHtcbiAgICAgIHRoaXMuY3VycmVudElucHV0VmFsdWUgPSAnJztcbiAgICAgIHRoaXMuaXNQZXJzb25TZWxlY3Rpb25Db21wbGV0ZWQgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZmlsdGVyKHNlYXJjaFRlcm06IHN0cmluZyk6IE9ic2VydmFibGU8UGVyc29uW10+IHtcbiAgICBjb25zdCBmaW5kSnVkaWNpYWxQZW9wbGUgPSB0aGlzLmZpbmRQZXJzb25TZXJ2aWNlLmZpbmQoeyBzZWFyY2hUZXJtLCBqdXJpc2RpY3Rpb246IHRoaXMuZG9tYWluIH0pO1xuICAgIGNvbnN0IGZpbmRDYXNld29ya2Vyc09yQWRtaW5zID0gdGhpcy5maW5kUGVyc29uU2VydmljZS5maW5kQ2FzZXdvcmtlcnMoeyBzZWFyY2hUZXJtLCBqdXJpc2RpY3Rpb246IHRoaXMuZG9tYWluIH0pO1xuICAgIGlmIChzZWFyY2hUZXJtICYmIHNlYXJjaFRlcm0ubGVuZ3RoID4gdGhpcy5taW5TZWFyY2hDaGFyYWN0ZXJzKSB7XG4gICAgICBzd2l0Y2ggKHRoaXMuZG9tYWluKSB7XG4gICAgICAgIGNhc2UgUGVyc29uUm9sZS5KVURJQ0lBTDoge1xuICAgICAgICAgIHJldHVybiBmaW5kSnVkaWNpYWxQZW9wbGUucGlwZShtYXAocGVyc29ucyA9PiB7XG4gICAgICAgICAgICBjb25zdCBpZHM6IHN0cmluZ1tdID0gdGhpcy5zZWxlY3RlZFBlcnNvbnMubWFwKCh7IGlkIH0pID0+IGlkKTtcbiAgICAgICAgICAgIHJldHVybiBwZXJzb25zLmZpbHRlcigoeyBpZCB9KSA9PiAhaWRzLmluY2x1ZGVzKGlkKSk7XG4gICAgICAgICAgfSkpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgUGVyc29uUm9sZS5BTEw6IHtcbiAgICAgICAgICByZXR1cm4gemlwKGZpbmRKdWRpY2lhbFBlb3BsZSwgZmluZENhc2V3b3JrZXJzT3JBZG1pbnMpLnBpcGUobWFwKHNlcGFyYXRlUGVvcGxlID0+IHNlcGFyYXRlUGVvcGxlWzBdLmNvbmNhdChzZXBhcmF0ZVBlb3BsZVsxXSkpKTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFBlcnNvblJvbGUuQ0FTRVdPUktFUjpcbiAgICAgICAgY2FzZSBQZXJzb25Sb2xlLkFETUlOOiB7XG4gICAgICAgICAgcmV0dXJuIGZpbmRDYXNld29ya2Vyc09yQWRtaW5zO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICByZXR1cm4gb2YoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb2YoKTtcbiAgfVxuXG4gIHB1YmxpYyBvblNlbGVjdGlvbkNoYW5nZShzZWxlY3RlZFBlcnNvbj86IFBlcnNvbikge1xuICAgIHRoaXMuaXNQZXJzb25TZWxlY3Rpb25Db21wbGV0ZWQgPSB0cnVlO1xuICAgIHRoaXMuY2hvb3NlblBlcnNvbiA9IHNlbGVjdGVkUGVyc29uO1xuICAgIHRoaXMucGVyc29uU2VsZWN0ZWQuZW1pdChzZWxlY3RlZFBlcnNvbik7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlZFZhbChjdXJyZW50VmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuY3VycmVudElucHV0VmFsdWUgPSBjdXJyZW50VmFsdWU7XG4gICAgdGhpcy5zaG93QXV0b2NvbXBsZXRlID0gISFjdXJyZW50VmFsdWUgJiYgKGN1cnJlbnRWYWx1ZS5sZW5ndGggPiB0aGlzLm1pblNlYXJjaENoYXJhY3RlcnMpO1xuICAgIHRoaXMuaXNQZXJzb25TZWxlY3Rpb25Db21wbGV0ZWQgPSAodGhpcy5nZXREaXNwbGF5TmFtZSh0aGlzLmNob29zZW5QZXJzb24pID09PSBjdXJyZW50VmFsdWUpID8gdHJ1ZSA6IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGdldERpc3BsYXlOYW1lKHNlbGVjdGVkUGVyc29uOiBQZXJzb24pOiBzdHJpbmcge1xuICAgIGlmIChzZWxlY3RlZFBlcnNvbi5kb21haW4gPT09IFBlcnNvblJvbGUuSlVESUNJQUwgJiYgc2VsZWN0ZWRQZXJzb24ua25vd25Bcykge1xuICAgICAgcmV0dXJuIGAke3NlbGVjdGVkUGVyc29uLmtub3duQXN9KCR7c2VsZWN0ZWRQZXJzb24uZW1haWx9KWA7XG4gICAgfVxuICAgIHJldHVybiBzZWxlY3RlZFBlcnNvbi5lbWFpbCA/IGAke3NlbGVjdGVkUGVyc29uLm5hbWV9KCR7c2VsZWN0ZWRQZXJzb24uZW1haWx9KWAgOiBzZWxlY3RlZFBlcnNvbi5uYW1lO1xuICB9XG59XG4iXX0=
268
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1wZXJzb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGhtY3RzL3JweC14dWktY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2ZpbmQtcGVyc29uL2ZpbmQtcGVyc29uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUMxSCxPQUFPLEVBQUMsV0FBVyxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBYSxFQUFFLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2xGLE9BQU8sRUFBUyxVQUFVLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDaEQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sZ0RBQWdELENBQUM7QUFRbEYsTUFBTSxPQUFPLG1CQUFtQjs7Ozs7SUEwQjlCLFlBQTZCLGlCQUFxQyxFQUFtQixFQUFxQjtRQUE3RSxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW9CO1FBQW1CLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBekJ6RixtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFFN0MsY0FBUyxHQUFHLGlCQUFpQixDQUFDO1FBQzlCLGFBQVEsR0FBRyw4Q0FBOEMsQ0FBQztRQUMxRCxXQUFNLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQztRQUd4QixjQUFTLEdBQVksSUFBSSxDQUFDO1FBQzFCLGFBQVEsR0FBWSxJQUFJLENBQUM7UUFDekIsaUJBQVksR0FBYSxLQUFLLENBQUM7UUFDL0IsdUJBQWtCLEdBQVcs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SUFBSSxjQUFjLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7SUFDeEcsQ0FBQzs7O1lBbkhGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsb0JBQW9CO2dCQUM5QiwrNERBQTJDOzthQUU1Qzs7OztZQU5PLGtCQUFrQjtZQUxsQixpQkFBaUI7Ozs2QkFjdEIsTUFBTTtvQkFDTixLQUFLO3dCQUNMLEtBQUs7dUJBQ0wsS0FBSztxQkFDTCxLQUFLOzhCQUNMLEtBQUs7NkJBQ0wsS0FBSzt3QkFDTCxLQUFLO3VCQUNMLEtBQUs7MkJBQ0wsS0FBSztpQ0FDTCxLQUFLOytCQUNMLEtBQUs7K0JBQ0wsS0FBSzs4QkFDTCxLQUFLOzJCQUNMLEtBQUs7c0JBQ0wsS0FBSzt1QkFDTCxLQUFLOzs7O0lBaEJOLDZDQUE2RDs7SUFDN0Qsb0NBQThCOztJQUM5Qix3Q0FBOEM7O0lBQzlDLHVDQUEwRTs7SUFDMUUscUNBQXdDOztJQUN4Qyw4Q0FBMkM7O0lBQzNDLDZDQUF1Qzs7SUFDdkMsd0NBQTBDOztJQUMxQyx1Q0FBeUM7O0lBQ3pDLDJDQUErQzs7SUFDL0MsaURBQWdEOztJQUNoRCwrQ0FBaUQ7O0lBQ2pELCtDQUFrRDs7SUFDbEQsOENBQStDOztJQUMvQywyQ0FBZ0U7O0lBQ2hFLHNDQUFxQzs7SUFDckMsdUNBQTRDOztJQUM1Qyx5REFBbUQ7O0lBQ25ELCtDQUF5Qzs7SUFDekMsZ0RBQXNDOztJQUN0QywyQ0FBbUM7O0lBQ25DLGdEQUErQzs7SUFDL0MsOENBQXNDOztJQUN0QyxrREFBd0M7Ozs7O0lBRTVCLGdEQUFzRDs7Ozs7SUFBRSxpQ0FBc0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXN9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3JtQ29udHJvbCwgRm9ybUdyb3VwfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge09ic2VydmFibGUsIG9mLCB6aXB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtjYXRjaEVycm9yLCBmaWx0ZXIsIG1hcCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtQZXJzb24sIFBlcnNvblJvbGV9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge0ZpbmRBUGVyc29uU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmluZC1wZXJzb24vZmluZC1wZXJzb24uc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3h1aWxpYi1maW5kLXBlcnNvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9maW5kLXBlcnNvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZpbmQtcGVyc29uLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuXG5leHBvcnQgY2xhc3MgRmluZFBlcnNvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgQE91dHB1dCgpIHB1YmxpYyBwZXJzb25TZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8UGVyc29uPigpO1xuICBASW5wdXQoKSBwdWJsaWMgdGl0bGU6IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIGJvbGRUaXRsZSA9ICdGaW5kIHRoZSBwZXJzb24nO1xuICBASW5wdXQoKSBwdWJsaWMgc3ViVGl0bGUgPSAnVHlwZSB0aGUgbmFtZSBvZiB0aGUgcGVyc29uIGFuZCBzZWxlY3QgdGhlbS4nO1xuICBASW5wdXQoKSBwdWJsaWMgZG9tYWluID0gUGVyc29uUm9sZS5BTEw7XG4gIEBJbnB1dCgpIHB1YmxpYyBmaW5kUGVyc29uR3JvdXA6IEZvcm1Hcm91cDtcbiAgQElucHV0KCkgcHVibGljIHNlbGVjdGVkUGVyc29uOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyBzdWJtaXR0ZWQ6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQ6IGJvb2xlYW4gPSBudWxsO1xuICBASW5wdXQoKSBwdWJsaWMgdXNlckluY2x1ZGVkPzogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXJDb250ZW50OiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcHVibGljIGlzTm9SZXN1bHRzU2hvd246IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBwdWJsaWMgc2hvd1VwZGF0ZWRDb2xvcjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgc2VsZWN0ZWRQZXJzb25zOiBQZXJzb25bXSA9IFtdO1xuICBASW5wdXQoKSBwdWJsaWMgZXJyb3JNZXNzYWdlOiBzdHJpbmcgPSAnWW91IG11c3Qgc2VsZWN0IGEgbmFtZSc7XG4gIEBJbnB1dCgpIHB1YmxpYyBpZFZhbHVlOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcHVibGljIHNlcnZpY2VzOiBzdHJpbmdbXSA9IFsnSUEnXTtcbiAgcHVibGljIGlzUGVyc29uU2VsZWN0aW9uQ29tcGxldGVkOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBzaG93QXV0b2NvbXBsZXRlOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBjdXJyZW50SW5wdXRWYWx1ZTogc3RyaW5nID0gJyc7XG4gIHB1YmxpYyBjaG9zZW5QZXJzb246IFBlcnNvbiA9IG51bGw7XG4gIHB1YmxpYyBmaW5kUGVyc29uQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XG4gIHB1YmxpYyBmaWx0ZXJlZE9wdGlvbnM6IFBlcnNvbltdID0gW107XG4gIHB1YmxpYyByZWFkb25seSBtaW5TZWFyY2hDaGFyYWN0ZXJzID0gMjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGZpbmRQZXJzb25TZXJ2aWNlOiBGaW5kQVBlcnNvblNlcnZpY2UsIHByaXZhdGUgcmVhZG9ubHkgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmZpbmRQZXJzb25Hcm91cCkge1xuICAgICAgdGhpcy5maW5kUGVyc29uR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maW5kUGVyc29uR3JvdXAuYWRkQ29udHJvbCgnZmluZFBlcnNvbkNvbnRyb2wnLCB0aGlzLmZpbmRQZXJzb25Db250cm9sKTtcbiAgICB9XG4gICAgdGhpcy5maW5kUGVyc29uQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgIHN0YXJ0V2l0aCgnJyksXG4gICAgICB0YXAoKCkgPT4gdGhpcy5zaG93QXV0b2NvbXBsZXRlID0gZmFsc2UpLFxuICAgICAgdGFwKCgpID0+IHRoaXMuZmlsdGVyZWRPcHRpb25zID0gW10pLFxuICAgICAgZmlsdGVyKHNlYXJjaFRlcm0gPT4gc2VhcmNoVGVybSAmJiBzZWFyY2hUZXJtLmxlbmd0aCA+IHRoaXMubWluU2VhcmNoQ2hhcmFjdGVycyksXG4gICAgICBzd2l0Y2hNYXAoc2VhcmNoVGVybSA9PiB0aGlzLmZpbHRlcihzZWFyY2hUZXJtKS5waXBlKFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5zaG93QXV0b2NvbXBsZXRlID0gdHJ1ZSksXG4gICAgICAgIGNhdGNoRXJyb3IoKCkgPT4gdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSBbXSksXG4gICAgICApKVxuICAgICkuc3Vic2NyaWJlKChwZW9wbGU6IFBlcnNvbltdKSA9PiB7XG4gICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IHBlb3BsZTtcbiAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0pO1xuICAgIHRoaXMuZmluZFBlcnNvbkNvbnRyb2wuc2V0VmFsdWUodGhpcy5zZWxlY3RlZFBlcnNvbik7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydkb21haW4nXSAmJiAhY2hhbmdlc1snZG9tYWluJ10uZmlyc3RDaGFuZ2UpIHtcbiAgICAgIHRoaXMuZmluZFBlcnNvbkNvbnRyb2wuc2V0VmFsdWUobnVsbCk7XG4gICAgICB0aGlzLnNlbGVjdGVkUGVyc29uID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXNbJ3NlbGVjdGVkUGVyc29uJ10gJiYgY2hhbmdlc1snc2VsZWN0ZWRQZXJzb24nXS5jdXJyZW50VmFsdWUgPT09ICcnKSB7XG4gICAgICB0aGlzLmN1cnJlbnRJbnB1dFZhbHVlID0gJyc7XG4gICAgICB0aGlzLmlzUGVyc29uU2VsZWN0aW9uQ29tcGxldGVkID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGZpbHRlcihzZWFyY2hUZXJtOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFBlcnNvbltdPiB7XG4gICAgY29uc3QgZmluZEp1ZGljaWFsUGVvcGxlID0gdGhpcy5maW5kUGVyc29uU2VydmljZS5maW5kKHtzZWFyY2hUZXJtLCB1c2VyUm9sZTogdGhpcy5kb21haW4sIHNlcnZpY2VzOiB0aGlzLnNlcnZpY2VzfSk7XG4gICAgY29uc3QgZmluZENhc2V3b3JrZXJzT3JBZG1pbnMgPSB0aGlzLmZpbmRQZXJzb25TZXJ2aWNlLmZpbmRDYXNld29ya2Vycyh7c2VhcmNoVGVybSwgdXNlclJvbGU6IHRoaXMuZG9tYWluLCBzZXJ2aWNlczogdGhpcy5zZXJ2aWNlc30pO1xuICAgIGlmIChzZWFyY2hUZXJtICYmIHNlYXJjaFRlcm0ubGVuZ3RoID4gdGhpcy5taW5TZWFyY2hDaGFyYWN0ZXJzKSB7XG4gICAgICBzd2l0Y2ggKHRoaXMuZG9tYWluKSB7XG4gICAgICAgIGNhc2UgUGVyc29uUm9sZS5KVURJQ0lBTDoge1xuICAgICAgICAgIHJldHVybiBmaW5kSnVkaWNpYWxQZW9wbGUucGlwZShtYXAocGVyc29ucyA9PiB7XG4gICAgICAgICAgICBjb25zdCBpZHM6IHN0cmluZ1tdID0gdGhpcy5zZWxlY3RlZFBlcnNvbnMubWFwKCh7aWR9KSA9PiBpZCk7XG4gICAgICAgICAgICByZXR1cm4gcGVyc29ucy5maWx0ZXIoKHtpZH0pID0+ICFpZHMuaW5jbHVkZXMoaWQpKTtcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBQZXJzb25Sb2xlLkFMTDoge1xuICAgICAgICAgIHJldHVybiB6aXAoZmluZEp1ZGljaWFsUGVvcGxlLCBmaW5kQ2FzZXdvcmtlcnNPckFkbWlucykucGlwZShtYXAoc2VwYXJhdGVQZW9wbGUgPT4gc2VwYXJhdGVQZW9wbGVbMF0uY29uY2F0KHNlcGFyYXRlUGVvcGxlWzFdKSkpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgUGVyc29uUm9sZS5DQVNFV09SS0VSOlxuICAgICAgICBjYXNlIFBlcnNvblJvbGUuQURNSU46IHtcbiAgICAgICAgICByZXR1cm4gZmluZENhc2V3b3JrZXJzT3JBZG1pbnM7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIHJldHVybiBvZihbXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9mKFtdKTtcbiAgfVxuXG4gIHB1YmxpYyBvblNlbGVjdGlvbkNoYW5nZShzZWxlY3RlZFBlcnNvbjogUGVyc29uKSB7XG4gICAgdGhpcy5pc1BlcnNvblNlbGVjdGlvbkNvbXBsZXRlZCA9IHRydWU7XG4gICAgdGhpcy5jaG9zZW5QZXJzb24gPSBzZWxlY3RlZFBlcnNvbjtcbiAgICB0aGlzLnBlcnNvblNlbGVjdGVkLmVtaXQoc2VsZWN0ZWRQZXJzb24pO1xuICAgIHRoaXMuZmluZFBlcnNvbkNvbnRyb2wuc2V0VmFsdWUoJycpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZWRWYWwoY3VycmVudFZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmN1cnJlbnRJbnB1dFZhbHVlID0gY3VycmVudFZhbHVlO1xuICAgIHRoaXMuc2hvd0F1dG9jb21wbGV0ZSA9ICEhY3VycmVudFZhbHVlICYmIChjdXJyZW50VmFsdWUubGVuZ3RoID4gdGhpcy5taW5TZWFyY2hDaGFyYWN0ZXJzKTtcbiAgICB0aGlzLmlzUGVyc29uU2VsZWN0aW9uQ29tcGxldGVkID0gdGhpcy5nZXREaXNwbGF5TmFtZSh0aGlzLmNob3NlblBlcnNvbikgPT09IGN1cnJlbnRWYWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXREaXNwbGF5TmFtZShzZWxlY3RlZFBlcnNvbjogUGVyc29uKTogc3RyaW5nIHtcbiAgICBpZiAoIXNlbGVjdGVkUGVyc29uKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGlmIChzZWxlY3RlZFBlcnNvbi5kb21haW4gPT09IFBlcnNvblJvbGUuSlVESUNJQUwgJiYgc2VsZWN0ZWRQZXJzb24ua25vd25Bcykge1xuICAgICAgcmV0dXJuIGAke3NlbGVjdGVkUGVyc29uLmtub3duQXN9KCR7c2VsZWN0ZWRQZXJzb24uZW1haWx9KWA7XG4gICAgfVxuICAgIHJldHVybiBzZWxlY3RlZFBlcnNvbi5lbWFpbCA/IGAke3NlbGVjdGVkUGVyc29uLm5hbWV9KCR7c2VsZWN0ZWRQZXJzb24uZW1haWx9KWAgOiBzZWxlY3RlZFBlcnNvbi5uYW1lO1xuICB9XG59XG4iXX0=
@@ -48,7 +48,7 @@ export function maxSelectedValidator(max) {
48
48
  * @param {?} values
49
49
  * @return {?}
50
50
  */
51
- export function getCheckBoxesValues(options, values) {
51
+ export function getValues(options, values) {
52
52
  return options.reduce((/**
53
53
  * @param {?} acc
54
54
  * @param {?} option
@@ -62,4 +62,4 @@ export function getCheckBoxesValues(options, values) {
62
62
  return acc;
63
63
  }), []);
64
64
  }
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1maWx0ZXItdXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AaG1jdHMvcnB4LXh1aS1jb21tb24tbGliLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvZ2VuZXJpYy1maWx0ZXIvZ2VuZXJpYy1maWx0ZXItdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUVBLE1BQU0sVUFBVSxvQkFBb0IsQ0FBSSxHQUFXO0lBQ2pEOzs7O0lBQU8sQ0FBQyxPQUF3QixFQUEyQixFQUFFOztjQUNyRCxNQUFNLEdBQUcsbUJBQUEsT0FBTyxDQUFDLEtBQUssRUFBTztRQUNuQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU07Ozs7UUFBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBQyxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBQyxTQUFTLEVBQUUsSUFBSSxFQUFDLENBQUM7SUFDakcsQ0FBQyxFQUFDO0FBQ0osQ0FBQzs7Ozs7O0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUFJLEdBQVc7SUFDakQ7Ozs7SUFBTyxDQUFDLE9BQXdCLEVBQTJCLEVBQUU7O2NBQ3JELE1BQU0sR0FBRyxtQkFBQSxPQUFPLENBQUMsS0FBSyxFQUFPO1FBQ25DLE9BQU8sTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTTs7OztRQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFDLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUMsQ0FBQztJQUNqRyxDQUFDLEVBQUM7QUFDSixDQUFDOzs7Ozs7QUFFRCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsT0FBMkQsRUFBRSxNQUFXO0lBQzFHLE9BQU8sT0FBTyxDQUFDLE1BQU07Ozs7OztJQUFDLENBQUMsR0FBYSxFQUFFLE1BQXNDLEVBQUUsS0FBYSxFQUFFLEVBQUU7UUFDN0YsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDakIsT0FBTyxDQUFDLEdBQUcsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUM3QjtRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ1QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWJzdHJhY3RDb250cm9sLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gbWluU2VsZWN0ZWRWYWxpZGF0b3I8VD4obWluOiBudW1iZXIpOiBWYWxpZGF0b3JGbiB7XG4gIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgIGNvbnN0IHZhbHVlcyA9IGNvbnRyb2wudmFsdWUgYXMgVFtdO1xuICAgIHJldHVybiB2YWx1ZXMubGVuZ3RoICYmIHZhbHVlcy5maWx0ZXIodmFsdWUgPT4gdmFsdWUpLmxlbmd0aCA+PSBtaW4gPyBudWxsIDoge21pbkxlbmd0aDogdHJ1ZX07XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXhTZWxlY3RlZFZhbGlkYXRvcjxUPihtYXg6IG51bWJlcik6IFZhbGlkYXRvckZuIHtcbiAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgY29uc3QgdmFsdWVzID0gY29udHJvbC52YWx1ZSBhcyBUW107XG4gICAgcmV0dXJuIHZhbHVlcy5sZW5ndGggJiYgdmFsdWVzLmZpbHRlcih2YWx1ZSA9PiB2YWx1ZSkubGVuZ3RoIDw9IG1heCA/IG51bGwgOiB7bWF4TGVuZ3RoOiB0cnVlfTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENoZWNrQm94ZXNWYWx1ZXMob3B0aW9uczogeyBrZXk6IHN0cmluZywgbGFiZWw6IHN0cmluZywgc2VsZWN0QWxsPzogdHJ1ZSB9W10sIHZhbHVlczogYW55KTogYW55W10ge1xuICByZXR1cm4gb3B0aW9ucy5yZWR1Y2UoKGFjYzogc3RyaW5nW10sIG9wdGlvbjogeyBrZXk6IHN0cmluZywgbGFiZWw6IHN0cmluZyB9LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgaWYgKHZhbHVlc1tpbmRleF0pIHtcbiAgICAgIHJldHVybiBbLi4uYWNjLCBvcHRpb24ua2V5XTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xufVxuXG4iXX0=
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1maWx0ZXItdXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AaG1jdHMvcnB4LXh1aS1jb21tb24tbGliLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvZ2VuZXJpYy1maWx0ZXIvZ2VuZXJpYy1maWx0ZXItdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUVBLE1BQU0sVUFBVSxvQkFBb0IsQ0FBSSxHQUFXO0lBQ2pEOzs7O0lBQU8sQ0FBQyxPQUF3QixFQUEyQixFQUFFOztjQUNyRCxNQUFNLEdBQUcsbUJBQUEsT0FBTyxDQUFDLEtBQUssRUFBTztRQUNuQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU07Ozs7UUFBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBQyxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBQyxTQUFTLEVBQUUsSUFBSSxFQUFDLENBQUM7SUFDakcsQ0FBQyxFQUFDO0FBQ0osQ0FBQzs7Ozs7O0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUFJLEdBQVc7SUFDakQ7Ozs7SUFBTyxDQUFDLE9BQXdCLEVBQTJCLEVBQUU7O2NBQ3JELE1BQU0sR0FBRyxtQkFBQSxPQUFPLENBQUMsS0FBSyxFQUFPO1FBQ25DLE9BQU8sTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTTs7OztRQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFDLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUMsQ0FBQztJQUNqRyxDQUFDLEVBQUM7QUFDSixDQUFDOzs7Ozs7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUFDLE9BQTJELEVBQUUsTUFBYTtJQUNsRyxPQUFPLE9BQU8sQ0FBQyxNQUFNOzs7Ozs7SUFBQyxDQUFDLEdBQWEsRUFBRSxNQUFzQyxFQUFFLEtBQWEsRUFBRSxFQUFFO1FBQzdGLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2pCLE9BQU8sQ0FBQyxHQUFHLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDN0I7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQztBQUNULENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Fic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yRm59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuZXhwb3J0IGZ1bmN0aW9uIG1pblNlbGVjdGVkVmFsaWRhdG9yPFQ+KG1pbjogbnVtYmVyKTogVmFsaWRhdG9yRm4ge1xuICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICBjb25zdCB2YWx1ZXMgPSBjb250cm9sLnZhbHVlIGFzIFRbXTtcbiAgICByZXR1cm4gdmFsdWVzLmxlbmd0aCAmJiB2YWx1ZXMuZmlsdGVyKHZhbHVlID0+IHZhbHVlKS5sZW5ndGggPj0gbWluID8gbnVsbCA6IHttaW5MZW5ndGg6IHRydWV9O1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWF4U2VsZWN0ZWRWYWxpZGF0b3I8VD4obWF4OiBudW1iZXIpOiBWYWxpZGF0b3JGbiB7XG4gIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgIGNvbnN0IHZhbHVlcyA9IGNvbnRyb2wudmFsdWUgYXMgVFtdO1xuICAgIHJldHVybiB2YWx1ZXMubGVuZ3RoICYmIHZhbHVlcy5maWx0ZXIodmFsdWUgPT4gdmFsdWUpLmxlbmd0aCA8PSBtYXggPyBudWxsIDoge21heExlbmd0aDogdHJ1ZX07XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRWYWx1ZXMob3B0aW9uczogeyBrZXk6IHN0cmluZywgbGFiZWw6IHN0cmluZywgc2VsZWN0QWxsPzogdHJ1ZSB9W10sIHZhbHVlczogYW55W10pOiBhbnlbXSB7XG4gIHJldHVybiBvcHRpb25zLnJlZHVjZSgoYWNjOiBzdHJpbmdbXSwgb3B0aW9uOiB7IGtleTogc3RyaW5nLCBsYWJlbDogc3RyaW5nIH0sIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICBpZiAodmFsdWVzW2luZGV4XSkge1xuICAgICAgcmV0dXJuIFsuLi5hY2MsIG9wdGlvbi5rZXldO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSk7XG59XG5cbiJdfQ==