valtech-components 2.0.376 → 2.0.377
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.
package/esm2022/lib/components/molecules/multi-select-search/multi-select-search.component.mjs
CHANGED
|
@@ -83,7 +83,7 @@ export class MultiSelectSearchComponent {
|
|
|
83
83
|
subscribeToValueChanges() {
|
|
84
84
|
if (!this.props?.control)
|
|
85
85
|
return;
|
|
86
|
-
this.valueChangesSubscription = this.props.control.valueChanges.subscribe(
|
|
86
|
+
this.valueChangesSubscription = this.props.control.valueChanges.subscribe(() => {
|
|
87
87
|
if (this.isProcessingChanges)
|
|
88
88
|
return;
|
|
89
89
|
try {
|
|
@@ -166,6 +166,8 @@ export class MultiSelectSearchComponent {
|
|
|
166
166
|
console.log('onBlur');
|
|
167
167
|
}
|
|
168
168
|
openModal() {
|
|
169
|
+
this.syncControlValueWithSelectedItems();
|
|
170
|
+
this.updateDisplayValue();
|
|
169
171
|
if (this.modal) {
|
|
170
172
|
this.modal.present();
|
|
171
173
|
}
|
|
@@ -193,6 +195,7 @@ export class MultiSelectSearchComponent {
|
|
|
193
195
|
this.selectedItems.splice(index, 1);
|
|
194
196
|
}
|
|
195
197
|
this.updateDisplayValue();
|
|
198
|
+
this.applyChanges();
|
|
196
199
|
}
|
|
197
200
|
isItemSelected(item) {
|
|
198
201
|
return this.selectedItems.some(selectedItem => selectedItem[this.valueProperty] === item[this.valueProperty]);
|
|
@@ -200,6 +203,7 @@ export class MultiSelectSearchComponent {
|
|
|
200
203
|
clearSelection() {
|
|
201
204
|
this.selectedItems = [];
|
|
202
205
|
this.updateDisplayValue();
|
|
206
|
+
this.applyChanges();
|
|
203
207
|
}
|
|
204
208
|
applySelection() {
|
|
205
209
|
this.applyChanges();
|
|
@@ -272,14 +276,20 @@ export class MultiSelectSearchComponent {
|
|
|
272
276
|
</ion-toolbar>
|
|
273
277
|
</ion-header>
|
|
274
278
|
<ion-content>
|
|
279
|
+
<ion-item *ngIf="selectedItems.length > 0" lines="none" color="light">
|
|
280
|
+
<ion-icon name="checkmark-circle" slot="start" color="success"></ion-icon>
|
|
281
|
+
<ion-label>
|
|
282
|
+
<h3>{{ selectedItems.length }} item{{ selectedItems.length === 1 ? '' : 's' }} seleccionado{{ selectedItems.length === 1 ? '' : 's' }}</h3>
|
|
283
|
+
</ion-label>
|
|
284
|
+
</ion-item>
|
|
275
285
|
<ion-list>
|
|
276
|
-
<ion-item *ngFor="let item of filteredItems" button
|
|
286
|
+
<ion-item *ngFor="let item of filteredItems" button detail="false">
|
|
277
287
|
<ion-checkbox
|
|
278
288
|
[checked]="isItemSelected(item)"
|
|
279
289
|
slot="start"
|
|
280
290
|
(ionChange)="toggleItem(item)"
|
|
281
291
|
></ion-checkbox>
|
|
282
|
-
<ion-label>{{ item[labelProperty] }}</ion-label>
|
|
292
|
+
<ion-label (click)="toggleItem(item)">{{ item[labelProperty] }}</ion-label>
|
|
283
293
|
</ion-item>
|
|
284
294
|
<ion-item *ngIf="filteredItems.length === 0" lines="none">
|
|
285
295
|
<ion-label color="dark">No se encontraron resultados</ion-label>
|
|
@@ -296,7 +306,7 @@ export class MultiSelectSearchComponent {
|
|
|
296
306
|
</ion-footer>
|
|
297
307
|
</ng-template>
|
|
298
308
|
</ion-modal>
|
|
299
|
-
`, isInline: true, styles: ["ion-header{padding:8px 8px 0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: IonicModule }, { kind: "component", type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i2.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i2.IonCheckbox, selector: "ion-checkbox", inputs: ["alignment", "checked", "color", "disabled", "indeterminate", "justify", "labelPlacement", "mode", "name", "value"] }, { kind: "component", type: i2.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i2.IonFooter, selector: "ion-footer", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i2.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i2.IonInput, selector: "ion-input", inputs: ["autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "spellcheck", "step", "type", "value"] }, { kind: "component", type: i2.IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i2.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: i2.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i2.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i2.IonModal, selector: "ion-modal" }, { kind: "directive", type: i2.BooleanValueAccessor, selector: "ion-checkbox,ion-toggle" }, { kind: "directive", type: i2.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: SearchbarComponent, selector: "val-searchbar", inputs: ["disabled"], outputs: ["filterEvent", "focusEvent", "blurEvent"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] }); }
|
|
309
|
+
`, isInline: true, styles: ["ion-header{padding:8px 8px 0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: IonicModule }, { kind: "component", type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i2.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i2.IonCheckbox, selector: "ion-checkbox", inputs: ["alignment", "checked", "color", "disabled", "indeterminate", "justify", "labelPlacement", "mode", "name", "value"] }, { kind: "component", type: i2.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i2.IonFooter, selector: "ion-footer", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i2.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i2.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i2.IonInput, selector: "ion-input", inputs: ["autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "spellcheck", "step", "type", "value"] }, { kind: "component", type: i2.IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i2.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: i2.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i2.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i2.IonModal, selector: "ion-modal" }, { kind: "directive", type: i2.BooleanValueAccessor, selector: "ion-checkbox,ion-toggle" }, { kind: "directive", type: i2.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: SearchbarComponent, selector: "val-searchbar", inputs: ["disabled"], outputs: ["filterEvent", "focusEvent", "blurEvent"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] }); }
|
|
300
310
|
}
|
|
301
311
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MultiSelectSearchComponent, decorators: [{
|
|
302
312
|
type: Component,
|
|
@@ -331,14 +341,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
331
341
|
</ion-toolbar>
|
|
332
342
|
</ion-header>
|
|
333
343
|
<ion-content>
|
|
344
|
+
<ion-item *ngIf="selectedItems.length > 0" lines="none" color="light">
|
|
345
|
+
<ion-icon name="checkmark-circle" slot="start" color="success"></ion-icon>
|
|
346
|
+
<ion-label>
|
|
347
|
+
<h3>{{ selectedItems.length }} item{{ selectedItems.length === 1 ? '' : 's' }} seleccionado{{ selectedItems.length === 1 ? '' : 's' }}</h3>
|
|
348
|
+
</ion-label>
|
|
349
|
+
</ion-item>
|
|
334
350
|
<ion-list>
|
|
335
|
-
<ion-item *ngFor="let item of filteredItems" button
|
|
351
|
+
<ion-item *ngFor="let item of filteredItems" button detail="false">
|
|
336
352
|
<ion-checkbox
|
|
337
353
|
[checked]="isItemSelected(item)"
|
|
338
354
|
slot="start"
|
|
339
355
|
(ionChange)="toggleItem(item)"
|
|
340
356
|
></ion-checkbox>
|
|
341
|
-
<ion-label>{{ item[labelProperty] }}</ion-label>
|
|
357
|
+
<ion-label (click)="toggleItem(item)">{{ item[labelProperty] }}</ion-label>
|
|
342
358
|
</ion-item>
|
|
343
359
|
<ion-item *ngIf="filteredItems.length === 0" lines="none">
|
|
344
360
|
<ion-label color="dark">No se encontraron resultados</ion-label>
|
|
@@ -370,4 +386,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
370
386
|
}], props: [{
|
|
371
387
|
type: Input
|
|
372
388
|
}] } });
|
|
373
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktc2VsZWN0LXNlYXJjaC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0ZWNoLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9tdWx0aS1zZWxlY3Qtc2VhcmNoL211bHRpLXNlbGVjdC1zZWFyY2guY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxNQUFNLEVBQ04sS0FBSyxFQUlMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFdBQVcsRUFBWSxNQUFNLGdCQUFnQixDQUFDO0FBRXZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDcEYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDakYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFakUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7O0FBc0V0RSxNQUFNLE9BQU8sMEJBQTBCO0lBc0JyQztRQWxCUyxrQkFBYSxHQUFXLE1BQU0sQ0FBQztRQUMvQixrQkFBYSxHQUFXLElBQUksQ0FBQztRQUk5QixnQkFBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMxQyxTQUFJLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25CLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7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QUFDLENBQUM7UUFDbEMsQ0FBQztRQUNELElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdEMsQ0FBQzsrR0E5UVUsMEJBQTBCO21HQUExQiwwQkFBMEIsZ1ZBaEUzQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVEVCx3R0F4RFMsWUFBWSwrUEFBRSxXQUFXLG15RUFBRSxXQUFXLHVJQUFFLGtCQUFrQixvSUFBRSxtQkFBbUI7OzRGQWlFOUUsMEJBQTBCO2tCQXBFdEMsU0FBUzsrQkFDRSx5QkFBeUIsY0FDdkIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLENBQUMsWUFDaEY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1RFQ7d0RBVW1CLEtBQUs7c0JBQXhCLFNBQVM7dUJBQUMsT0FBTztnQkFFVCxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJb25pY01vZHVsZSwgSW9uTW9kYWwgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEljb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaWNvbnMuc2VydmljZSc7XG5pbXBvcnQgeyBMYW5nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2xhbmctcHJvdmlkZXIvbGFuZy1wcm92aWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IGFwcGx5RGVmYXVsdFZhbHVlVG9Db250cm9sIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3V0aWxzL2Zvcm0tZGVmYXVsdHMnO1xuaW1wb3J0IHsgcmVwbGFjZVNwZWNpYWxDaGFycyB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC91dGlscy90ZXh0JztcbmltcG9ydCB7IElucHV0TWV0YWRhdGEsIElucHV0T3B0aW9uIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgU2VhcmNoYmFyQ29tcG9uZW50IH0gZnJvbSAnLi4vc2VhcmNoYmFyL3NlYXJjaGJhci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtbXVsdGktc2VsZWN0LXNlYXJjaCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIElvbmljTW9kdWxlLCBGb3Jtc01vZHVsZSwgU2VhcmNoYmFyQ29tcG9uZW50LCBSZWFjdGl2ZUZvcm1zTW9kdWxlXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8aW9uLWlucHV0XG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICBbdmFsdWVdPVwiZGlzcGxheVZhbHVlXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwcm9wcz8ucGxhY2Vob2xkZXIgfHwgcGxhY2Vob2xkZXJcIlxuICAgICAgcmVhZG9ubHlcbiAgICAgIChtb3VzZWRvd24pPVwicHJldmVudERlZmF1bHRCZWhhdmlvcigkZXZlbnQpXCJcbiAgICAvPlxuXG4gICAgPGlvbi1pbnB1dCBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTtcIiBbZm9ybUNvbnRyb2xdPVwicHJvcHMuY29udHJvbFwiIHR5cGU9XCJoaWRkZW5cIj48L2lvbi1pbnB1dD5cblxuICAgIDxpb24tbW9kYWxcbiAgICAgICNtb2RhbFxuICAgICAgdHJpZ2dlcj1cIm9wZW4tbW9kYWxcIlxuICAgICAgW2luaXRpYWxCcmVha3BvaW50XT1cIjFcIlxuICAgICAgW2JyZWFrcG9pbnRzXT1cIlswLCAwLjUsIDAuNzUsIDFdXCJcbiAgICAgIChkaWREaXNtaXNzKT1cImNhbmNlbE1vZGFsKClcIlxuICAgID5cbiAgICAgIDxuZy10ZW1wbGF0ZT5cbiAgICAgICAgPGlvbi1oZWFkZXI+XG4gICAgICAgICAgPGlvbi10b29sYmFyPlxuICAgICAgICAgICAgPGlvbi10aXRsZT57eyBsYWJlbCB9fTwvaW9uLXRpdGxlPlxuICAgICAgICAgICAgPGlvbi1idXR0b25zIHNsb3Q9XCJlbmRcIj5cbiAgICAgICAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cImNhbmNlbE1vZGFsKClcIj5DZXJyYXI8L2lvbi1idXR0b24+XG4gICAgICAgICAgICA8L2lvbi1idXR0b25zPlxuICAgICAgICAgIDwvaW9uLXRvb2xiYXI+XG4gICAgICAgICAgPGlvbi10b29sYmFyPlxuICAgICAgICAgICAgPHZhbC1zZWFyY2hiYXIgKGZpbHRlckV2ZW50KT1cIm9uRmlsdGVyKCRldmVudClcIiAoZm9jdXNFdmVudCk9XCJvbkZvY3VzKClcIiAoYmx1ckV2ZW50KT1cIm9uQmx1cigpXCIgLz5cbiAgICAgICAgICA8L2lvbi10b29sYmFyPlxuICAgICAgICA8L2lvbi1oZWFkZXI+XG4gICAgICAgIDxpb24tY29udGVudD5cbiAgICAgICAgICA8aW9uLWxpc3Q+XG4gICAgICAgICAgICA8aW9uLWl0ZW0gKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmlsdGVyZWRJdGVtc1wiIGJ1dHRvbiAoY2xpY2spPVwidG9nZ2xlSXRlbShpdGVtKVwiIGRldGFpbD1cImZhbHNlXCI+XG4gICAgICAgICAgICAgIDxpb24tY2hlY2tib3ggXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNJdGVtU2VsZWN0ZWQoaXRlbSlcIiBcbiAgICAgICAgICAgICAgICBzbG90PVwic3RhcnRcIlxuICAgICAgICAgICAgICAgIChpb25DaGFuZ2UpPVwidG9nZ2xlSXRlbShpdGVtKVwiXG4gICAgICAgICAgICAgID48L2lvbi1jaGVja2JveD5cbiAgICAgICAgICAgICAgPGlvbi1sYWJlbD57eyBpdGVtW2xhYmVsUHJvcGVydHldIH19PC9pb24tbGFiZWw+XG4gICAgICAgICAgICA8L2lvbi1pdGVtPlxuICAgICAgICAgICAgPGlvbi1pdGVtICpuZ0lmPVwiZmlsdGVyZWRJdGVtcy5sZW5ndGggPT09IDBcIiBsaW5lcz1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgPGlvbi1sYWJlbCBjb2xvcj1cImRhcmtcIj5ObyBzZSBlbmNvbnRyYXJvbiByZXN1bHRhZG9zPC9pb24tbGFiZWw+XG4gICAgICAgICAgICA8L2lvbi1pdGVtPlxuICAgICAgICAgIDwvaW9uLWxpc3Q+XG4gICAgICAgIDwvaW9uLWNvbnRlbnQ+XG4gICAgICAgIDxpb24tZm9vdGVyICpuZ0lmPVwic2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgPGlvbi10b29sYmFyPlxuICAgICAgICAgICAgPGlvbi1idXR0b25zIHNsb3Q9XCJlbmRcIj5cbiAgICAgICAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cImNsZWFyU2VsZWN0aW9uKClcIj5MaW1waWFyPC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwic29saWRcIiAoY2xpY2spPVwiYXBwbHlTZWxlY3Rpb24oKVwiPkFwbGljYXIgKHt7IHNlbGVjdGVkSXRlbXMubGVuZ3RoIH19KTwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbnM+XG4gICAgICAgICAgPC9pb24tdG9vbGJhcj5cbiAgICAgICAgPC9pb24tZm9vdGVyPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2lvbi1tb2RhbD5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgaW9uLWhlYWRlciB7XG4gICAgICAgIHBhZGRpbmc6IDhweCA4cHggMHB4IDhweDtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBNdWx0aVNlbGVjdFNlYXJjaENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZCgnbW9kYWwnKSBtb2RhbCE6IElvbk1vZGFsO1xuXG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGxhYmVsUHJvcGVydHk6IHN0cmluZyA9ICduYW1lJztcbiAgQElucHV0KCkgdmFsdWVQcm9wZXJ0eTogc3RyaW5nID0gJ2lkJztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcbiAgQElucHV0KCkgcHJvcHM6IElucHV0TWV0YWRhdGE7XG5cbiAgcHJpdmF0ZSBsYW5nU2VydmljZSA9IGluamVjdChMYW5nU2VydmljZSk7XG4gIGljb24gPSBpbmplY3QoSWNvblNlcnZpY2UpO1xuICBwcml2YXRlIGNoYW5nZURldGVjdG9yID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICBzZWFyY2hUZXJtOiBzdHJpbmcgPSAnJztcbiAgZmlsdGVyZWRJdGVtczogSW5wdXRPcHRpb25bXSA9IFtdO1xuICBzZWxlY3RlZEl0ZW1zOiBJbnB1dE9wdGlvbltdID0gW107XG4gIGRpc3BsYXlWYWx1ZTogc3RyaW5nID0gJyc7XG5cbiAgcHJpdmF0ZSBwcmV2aW91c09wdGlvbnM6IGFueVtdID0gW107XG4gIHByaXZhdGUgaXNQcm9jZXNzaW5nQ2hhbmdlcyA9IGZhbHNlO1xuICBwcml2YXRlIHZhbHVlQ2hhbmdlc1N1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmxhYmVsID0gdGhpcy5sYW5nU2VydmljZS5nZXRUZXh0KCdfZ2xvYmFsJywgJ3NlbGVjdE11bHRpcGxlJywgJ1NlbGVjY2lvbmFyIG3Dumx0aXBsZXMnKTtcbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gdGhpcy5sYW5nU2VydmljZS5nZXRUZXh0KCdfZ2xvYmFsJywgJ3NlbGVjdE9wdGlvbnMnLCAnU2VsZWNjaW9uZSBvcGNpb25lcycpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5hcHBseURlZmF1bHRWYWx1ZSgpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZUl0ZW1zKCk7XG4gICAgdGhpcy5zeW5jQ29udHJvbFZhbHVlV2l0aFNlbGVjdGVkSXRlbXMoKTtcbiAgICB0aGlzLnVwZGF0ZURpc3BsYXlWYWx1ZSgpO1xuICAgIHRoaXMuc3Vic2NyaWJlVG9WYWx1ZUNoYW5nZXMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLnZhbHVlQ2hhbmdlc1N1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy52YWx1ZUNoYW5nZXNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNQcm9jZXNzaW5nQ2hhbmdlcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzWydwcm9wcyddKSB7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLmlzUHJvY2Vzc2luZ0NoYW5nZXMgPSB0cnVlO1xuXG4gICAgICAgIGlmICh0aGlzLnZhbHVlQ2hhbmdlc1N1YnNjcmlwdGlvbikge1xuICAgICAgICAgIHRoaXMudmFsdWVDaGFuZ2VzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5wcm9wcz8ub3B0aW9ucykge1xuICAgICAgICAgIGNvbnN0IG9wdGlvbnNDaGFuZ2VkID0gIXRoaXMuYXJlT3B0aW9uc0VxdWFsKHRoaXMucHJldmlvdXNPcHRpb25zLCB0aGlzLnByb3BzLm9wdGlvbnMpO1xuXG4gICAgICAgICAgaWYgKG9wdGlvbnNDaGFuZ2VkKSB7XG4gICAgICAgICAgICB0aGlzLnByZXZpb3VzT3B0aW9ucyA9IFsuLi50aGlzLnByb3BzLm9wdGlvbnNdO1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplSXRlbXMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnN5bmNDb250cm9sVmFsdWVXaXRoU2VsZWN0ZWRJdGVtcygpO1xuICAgICAgICB0aGlzLnVwZGF0ZURpc3BsYXlWYWx1ZSgpO1xuICAgICAgICB0aGlzLnN1YnNjcmliZVRvVmFsdWVDaGFuZ2VzKCk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB0aGlzLmlzUHJvY2Vzc2luZ0NoYW5nZXMgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpb25WaWV3V2lsbEVudGVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzUHJvY2Vzc2luZ0NoYW5nZXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5pc1Byb2Nlc3NpbmdDaGFuZ2VzID0gdHJ1ZTtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZUl0ZW1zKCk7XG4gICAgICB0aGlzLnN5bmNDb250cm9sVmFsdWVXaXRoU2VsZWN0ZWRJdGVtcygpO1xuICAgICAgdGhpcy51cGRhdGVEaXNwbGF5VmFsdWUoKTtcbiAgICAgIHRoaXMuc3Vic2NyaWJlVG9WYWx1ZUNoYW5nZXMoKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5pc1Byb2Nlc3NpbmdDaGFuZ2VzID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdWJzY3JpYmVUb1ZhbHVlQ2hhbmdlcygpIHtcbiAgICBpZiAoIXRoaXMucHJvcHM/LmNvbnRyb2wpIHJldHVybjtcblxuICAgIHRoaXMudmFsdWVDaGFuZ2VzU3Vic2NyaXB0aW9uID0gdGhpcy5wcm9wcy5jb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgaWYgKHRoaXMuaXNQcm9jZXNzaW5nQ2hhbmdlcykgcmV0dXJuO1xuXG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLmlzUHJvY2Vzc2luZ0NoYW5nZXMgPSB0cnVlO1xuICAgICAgICB0aGlzLnN5bmNDb250cm9sVmFsdWVXaXRoU2VsZWN0ZWRJdGVtcygpO1xuICAgICAgICB0aGlzLnVwZGF0ZURpc3BsYXlWYWx1ZSgpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdGhpcy5pc1Byb2Nlc3NpbmdDaGFuZ2VzID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFyZU9wdGlvbnNFcXVhbChwcmV2T3B0aW9uczogYW55W10sIG5ld09wdGlvbnM6IGFueVtdKTogYm9vbGVhbiB7XG4gICAgaWYgKHByZXZPcHRpb25zID09PSBuZXdPcHRpb25zKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoIXByZXZPcHRpb25zIHx8ICFuZXdPcHRpb25zKSByZXR1cm4gcHJldk9wdGlvbnMgPT09IG5ld09wdGlvbnM7XG4gICAgaWYgKHByZXZPcHRpb25zLmxlbmd0aCAhPT0gbmV3T3B0aW9ucy5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICBcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByZXZPcHRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAocHJldk9wdGlvbnNbaV1bdGhpcy52YWx1ZVByb3BlcnR5XSAhPT0gbmV3T3B0aW9uc1tpXVt0aGlzLnZhbHVlUHJvcGVydHldKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVJdGVtcygpOiB2b2lkIHtcbiAgICB0aGlzLmZpbHRlcmVkSXRlbXMgPSB0aGlzLnByb3BzPy5vcHRpb25zIHx8IFtdO1xuICB9XG5cbiAgcHJpdmF0ZSBzeW5jQ29udHJvbFZhbHVlV2l0aFNlbGVjdGVkSXRlbXMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnByb3BzPy5jb250cm9sKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb250cm9sVmFsdWUgPSB0aGlzLnByb3BzLmNvbnRyb2wudmFsdWU7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGNvbnRyb2xWYWx1ZSkgfHwgY29udHJvbFZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW107XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucHJvcHMub3B0aW9ucyAmJiB0aGlzLnByb3BzLm9wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgbWFwID0gbmV3IE1hcCh0aGlzLnByb3BzLm9wdGlvbnMubWFwKG9wdCA9PiBbb3B0W3RoaXMudmFsdWVQcm9wZXJ0eV0sIG9wdF0pKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IGNvbnRyb2xWYWx1ZVxuICAgICAgICAubWFwKHZhbHVlID0+IG1hcC5nZXQodmFsdWUpKVxuICAgICAgICAuZmlsdGVyKGl0ZW0gPT4gaXRlbSAhPT0gdW5kZWZpbmVkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW107XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhcHBseURlZmF1bHRWYWx1ZSgpOiB2b2lkIHtcbiAgICBhcHBseURlZmF1bHRWYWx1ZVRvQ29udHJvbCh0aGlzLnByb3BzKTtcbiAgfVxuXG4gIG9uRmlsdGVyKGV2ZW50KSB7XG4gICAgaWYgKCFldmVudCB8fCBldmVudC50cmltKCkgPT09ICcnKSB7XG4gICAgICB0aGlzLmZpbHRlcmVkSXRlbXMgPSB0aGlzLnByb3BzPy5vcHRpb25zID8gWy4uLnRoaXMucHJvcHMub3B0aW9uc10gOiBbXTtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5wcm9wcz8ub3B0aW9ucyB8fCB0aGlzLnByb3BzLm9wdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmZpbHRlcmVkSXRlbXMgPSBbXTtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNlYXJjaCA9IHJlcGxhY2VTcGVjaWFsQ2hhcnMoZXZlbnQudG9Mb3dlckNhc2UoKSk7XG4gICAgdGhpcy5maWx0ZXJlZEl0ZW1zID0gdGhpcy5wcm9wcy5vcHRpb25zLmZpbHRlcihlbGVtZW50ID0+IHtcbiAgICAgIGNvbnN0IGxhYmVsID0gZWxlbWVudFt0aGlzLmxhYmVsUHJvcGVydHldXG4gICAgICAgID8gcmVwbGFjZVNwZWNpYWxDaGFycyhTdHJpbmcoZWxlbWVudFt0aGlzLmxhYmVsUHJvcGVydHldKS50b0xvd2VyQ2FzZSgpKVxuICAgICAgICA6ICcnO1xuICAgICAgY29uc3QgdmFsdWUgPSBlbGVtZW50W3RoaXMudmFsdWVQcm9wZXJ0eV1cbiAgICAgICAgPyByZXBsYWNlU3BlY2lhbENoYXJzKFN0cmluZyhlbGVtZW50W3RoaXMudmFsdWVQcm9wZXJ0eV0pLnRvTG93ZXJDYXNlKCkpXG4gICAgICAgIDogJyc7XG4gICAgICByZXR1cm4gbGFiZWwuaW5jbHVkZXMoc2VhcmNoKSB8fCB2YWx1ZS5pbmNsdWRlcyhzZWFyY2gpO1xuICAgIH0pO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgb25Gb2N1cygpIHtcbiAgICBjb25zb2xlLmxvZygnb25Gb2N1cycpO1xuICB9XG5cbiAgb25CbHVyKCkge1xuICAgIGNvbnNvbGUubG9nKCdvbkJsdXInKTtcbiAgfVxuXG4gIG9wZW5Nb2RhbCgpIHtcbiAgICBpZiAodGhpcy5tb2RhbCkge1xuICAgICAgdGhpcy5tb2RhbC5wcmVzZW50KCk7XG4gICAgfVxuICB9XG5cbiAgcHJldmVudERlZmF1bHRCZWhhdmlvcihldmVudDogTW91c2VFdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5vcGVuTW9kYWwoKTtcbiAgfVxuXG4gIGNhbmNlbE1vZGFsKCkge1xuICAgIC8vIFJlc2V0IGZpbHRlciBhbmQgc2hvdyBhbGwgb3B0aW9ucyB3aGVuIGNsb3NpbmcgbW9kYWxcbiAgICB0aGlzLnNlYXJjaFRlcm0gPSAnJztcbiAgICB0aGlzLmZpbHRlcmVkSXRlbXMgPSB0aGlzLnByb3BzPy5vcHRpb25zID8gWy4uLnRoaXMucHJvcHMub3B0aW9uc10gOiBbXTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICBpZiAodGhpcy5tb2RhbCkge1xuICAgICAgdGhpcy5tb2RhbC5kaXNtaXNzKCk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlSXRlbShpdGVtOiBhbnkpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5maW5kSW5kZXgoXG4gICAgICBzZWxlY3RlZEl0ZW0gPT4gc2VsZWN0ZWRJdGVtW3RoaXMudmFsdWVQcm9wZXJ0eV0gPT09IGl0ZW1bdGhpcy52YWx1ZVByb3BlcnR5XVxuICAgICk7XG5cbiAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaChpdGVtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVEaXNwbGF5VmFsdWUoKTtcbiAgfVxuXG4gIGlzSXRlbVNlbGVjdGVkKGl0ZW06IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkSXRlbXMuc29tZShcbiAgICAgIHNlbGVjdGVkSXRlbSA9PiBzZWxlY3RlZEl0ZW1bdGhpcy52YWx1ZVByb3BlcnR5XSA9PT0gaXRlbVt0aGlzLnZhbHVlUHJvcGVydHldXG4gICAgKTtcbiAgfVxuXG4gIGNsZWFyU2VsZWN0aW9uKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xuICAgIHRoaXMudXBkYXRlRGlzcGxheVZhbHVlKCk7XG4gIH1cblxuICBhcHBseVNlbGVjdGlvbigpIHtcbiAgICB0aGlzLmFwcGx5Q2hhbmdlcygpO1xuICAgIHRoaXMuY2FuY2VsTW9kYWwoKTtcbiAgfVxuXG4gIHVwZGF0ZURpc3BsYXlWYWx1ZSgpIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5kaXNwbGF5VmFsdWUgPSAnJztcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PT0gMSkge1xuICAgICAgdGhpcy5kaXNwbGF5VmFsdWUgPSB0aGlzLnNlbGVjdGVkSXRlbXNbMF1bdGhpcy5sYWJlbFByb3BlcnR5XTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kaXNwbGF5VmFsdWUgPSBgJHt0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RofSBlbGVtZW50b3Mgc2VsZWNjaW9uYWRvc2A7XG4gICAgfVxuICB9XG5cbiAgYXBwbHlDaGFuZ2VzKCkge1xuICAgIGlmICghdGhpcy5wcm9wcz8uY29udHJvbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICB0aGlzLmlzUHJvY2Vzc2luZ0NoYW5nZXMgPSB0cnVlO1xuXG4gICAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLnNlbGVjdGVkSXRlbXMubWFwKGl0ZW0gPT4gaXRlbVt0aGlzLnZhbHVlUHJvcGVydHldKTtcbiAgICAgIHRoaXMucHJvcHMuY29udHJvbC5zZXRWYWx1ZSh2YWx1ZXMpO1xuICAgICAgdGhpcy5wcm9wcy5jb250cm9sLm1hcmtBc0RpcnR5KCk7XG4gICAgICB0aGlzLnByb3BzLmNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmlzUHJvY2Vzc2luZ0NoYW5nZXMgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXNldCgpIHtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcbiAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9ICcnO1xuICAgIGlmICh0aGlzLnByb3BzPy5jb250cm9sKSB7XG4gICAgICB0aGlzLnByb3BzLmNvbnRyb2wuc2V0VmFsdWUoW10pO1xuICAgIH1cbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgfVxufSJdfQ==
|
|
389
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktc2VsZWN0LXNlYXJjaC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0ZWNoLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9tdWx0aS1zZWxlY3Qtc2VhcmNoL211bHRpLXNlbGVjdC1zZWFyY2guY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxNQUFNLEVBQ04sS0FBSyxFQUlMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFdBQVcsRUFBWSxNQUFNLGdCQUFnQixDQUFDO0FBRXZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDcEYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDakYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFakUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7O0FBNEV0RSxNQUFNLE9BQU8sMEJBQTBCO0lBc0JyQztRQWxCUyxrQkFBYSxHQUFXLE1BQU0sQ0FBQztRQUMvQixrQkFBYSxHQUFXLElBQUksQ0FBQztRQUk5QixnQkFBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMxQyxTQUFJLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25CLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7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LENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xDLENBQUM7UUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3RDLENBQUM7K0dBbFJVLDBCQUEwQjttR0FBMUIsMEJBQTBCLGdWQXRFM0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E2RFQsd0dBOURTLFlBQVksK1BBQUUsV0FBVyx3OEVBQUUsV0FBVyx1SUFBRSxrQkFBa0Isb0lBQUUsbUJBQW1COzs0RkF1RTlFLDBCQUEwQjtrQkExRXRDLFNBQVM7K0JBQ0UseUJBQXlCLGNBQ3ZCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixDQUFDLFlBQ2hGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkRUO3dEQVVtQixLQUFLO3NCQUF4QixTQUFTO3VCQUFDLE9BQU87Z0JBRVQsS0FBSztzQkFBYixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBpbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSW9uaWNNb2R1bGUsIElvbk1vZGFsIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJY29uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2ljb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgTGFuZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9sYW5nLXByb3ZpZGVyL2xhbmctcHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBhcHBseURlZmF1bHRWYWx1ZVRvQ29udHJvbCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC91dGlscy9mb3JtLWRlZmF1bHRzJztcbmltcG9ydCB7IHJlcGxhY2VTcGVjaWFsQ2hhcnMgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvdXRpbHMvdGV4dCc7XG5pbXBvcnQgeyBJbnB1dE1ldGFkYXRhLCBJbnB1dE9wdGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IFNlYXJjaGJhckNvbXBvbmVudCB9IGZyb20gJy4uL3NlYXJjaGJhci9zZWFyY2hiYXIuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLW11bHRpLXNlbGVjdC1zZWFyY2gnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJb25pY01vZHVsZSwgRm9ybXNNb2R1bGUsIFNlYXJjaGJhckNvbXBvbmVudCwgUmVhY3RpdmVGb3Jtc01vZHVsZV0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGlvbi1pbnB1dFxuICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgW3ZhbHVlXT1cImRpc3BsYXlWYWx1ZVwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicHJvcHM/LnBsYWNlaG9sZGVyIHx8IHBsYWNlaG9sZGVyXCJcbiAgICAgIHJlYWRvbmx5XG4gICAgICAobW91c2Vkb3duKT1cInByZXZlbnREZWZhdWx0QmVoYXZpb3IoJGV2ZW50KVwiXG4gICAgLz5cblxuICAgIDxpb24taW5wdXQgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7XCIgW2Zvcm1Db250cm9sXT1cInByb3BzLmNvbnRyb2xcIiB0eXBlPVwiaGlkZGVuXCI+PC9pb24taW5wdXQ+XG5cbiAgICA8aW9uLW1vZGFsXG4gICAgICAjbW9kYWxcbiAgICAgIHRyaWdnZXI9XCJvcGVuLW1vZGFsXCJcbiAgICAgIFtpbml0aWFsQnJlYWtwb2ludF09XCIxXCJcbiAgICAgIFticmVha3BvaW50c109XCJbMCwgMC41LCAwLjc1LCAxXVwiXG4gICAgICAoZGlkRGlzbWlzcyk9XCJjYW5jZWxNb2RhbCgpXCJcbiAgICA+XG4gICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgIDxpb24taGVhZGVyPlxuICAgICAgICAgIDxpb24tdG9vbGJhcj5cbiAgICAgICAgICAgIDxpb24tdGl0bGU+e3sgbGFiZWwgfX08L2lvbi10aXRsZT5cbiAgICAgICAgICAgIDxpb24tYnV0dG9ucyBzbG90PVwiZW5kXCI+XG4gICAgICAgICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJjYW5jZWxNb2RhbCgpXCI+Q2VycmFyPC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgPC9pb24tYnV0dG9ucz5cbiAgICAgICAgICA8L2lvbi10b29sYmFyPlxuICAgICAgICAgIDxpb24tdG9vbGJhcj5cbiAgICAgICAgICAgIDx2YWwtc2VhcmNoYmFyIChmaWx0ZXJFdmVudCk9XCJvbkZpbHRlcigkZXZlbnQpXCIgKGZvY3VzRXZlbnQpPVwib25Gb2N1cygpXCIgKGJsdXJFdmVudCk9XCJvbkJsdXIoKVwiIC8+XG4gICAgICAgICAgPC9pb24tdG9vbGJhcj5cbiAgICAgICAgPC9pb24taGVhZGVyPlxuICAgICAgICA8aW9uLWNvbnRlbnQ+XG4gICAgICAgICAgPGlvbi1pdGVtICpuZ0lmPVwic2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwXCIgbGluZXM9XCJub25lXCIgY29sb3I9XCJsaWdodFwiPlxuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjaGVja21hcmstY2lyY2xlXCIgc2xvdD1cInN0YXJ0XCIgY29sb3I9XCJzdWNjZXNzXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgIDxpb24tbGFiZWw+XG4gICAgICAgICAgICAgIDxoMz57eyBzZWxlY3RlZEl0ZW1zLmxlbmd0aCB9fSBpdGVte3sgc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT09IDEgPyAnJyA6ICdzJyB9fSBzZWxlY2Npb25hZG97eyBzZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PT0gMSA/ICcnIDogJ3MnIH19PC9oMz5cbiAgICAgICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgICAgIDwvaW9uLWl0ZW0+XG4gICAgICAgICAgPGlvbi1saXN0PlxuICAgICAgICAgICAgPGlvbi1pdGVtICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZpbHRlcmVkSXRlbXNcIiBidXR0b24gZGV0YWlsPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgPGlvbi1jaGVja2JveCBcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc0l0ZW1TZWxlY3RlZChpdGVtKVwiIFxuICAgICAgICAgICAgICAgIHNsb3Q9XCJzdGFydFwiXG4gICAgICAgICAgICAgICAgKGlvbkNoYW5nZSk9XCJ0b2dnbGVJdGVtKGl0ZW0pXCJcbiAgICAgICAgICAgICAgPjwvaW9uLWNoZWNrYm94PlxuICAgICAgICAgICAgICA8aW9uLWxhYmVsIChjbGljayk9XCJ0b2dnbGVJdGVtKGl0ZW0pXCI+e3sgaXRlbVtsYWJlbFByb3BlcnR5XSB9fTwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgPC9pb24taXRlbT5cbiAgICAgICAgICAgIDxpb24taXRlbSAqbmdJZj1cImZpbHRlcmVkSXRlbXMubGVuZ3RoID09PSAwXCIgbGluZXM9XCJub25lXCI+XG4gICAgICAgICAgICAgIDxpb24tbGFiZWwgY29sb3I9XCJkYXJrXCI+Tm8gc2UgZW5jb250cmFyb24gcmVzdWx0YWRvczwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgPC9pb24taXRlbT5cbiAgICAgICAgICA8L2lvbi1saXN0PlxuICAgICAgICA8L2lvbi1jb250ZW50PlxuICAgICAgICA8aW9uLWZvb3RlciAqbmdJZj1cInNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMFwiPlxuICAgICAgICAgIDxpb24tdG9vbGJhcj5cbiAgICAgICAgICAgIDxpb24tYnV0dG9ucyBzbG90PVwiZW5kXCI+XG4gICAgICAgICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJjbGVhclNlbGVjdGlvbigpXCI+TGltcGlhcjwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgICAgPGlvbi1idXR0b24gZmlsbD1cInNvbGlkXCIgKGNsaWNrKT1cImFwcGx5U2VsZWN0aW9uKClcIj5BcGxpY2FyICh7eyBzZWxlY3RlZEl0ZW1zLmxlbmd0aCB9fSk8L2lvbi1idXR0b24+XG4gICAgICAgICAgICA8L2lvbi1idXR0b25zPlxuICAgICAgICAgIDwvaW9uLXRvb2xiYXI+XG4gICAgICAgIDwvaW9uLWZvb3Rlcj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9pb24tbW9kYWw+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIGlvbi1oZWFkZXIge1xuICAgICAgICBwYWRkaW5nOiA4cHggOHB4IDBweCA4cHg7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTXVsdGlTZWxlY3RTZWFyY2hDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ21vZGFsJykgbW9kYWwhOiBJb25Nb2RhbDtcblxuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nO1xuICBASW5wdXQoKSBsYWJlbFByb3BlcnR5OiBzdHJpbmcgPSAnbmFtZSc7XG4gIEBJbnB1dCgpIHZhbHVlUHJvcGVydHk6IHN0cmluZyA9ICdpZCc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHByb3BzOiBJbnB1dE1ldGFkYXRhO1xuXG4gIHByaXZhdGUgbGFuZ1NlcnZpY2UgPSBpbmplY3QoTGFuZ1NlcnZpY2UpO1xuICBpY29uID0gaW5qZWN0KEljb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgc2VhcmNoVGVybTogc3RyaW5nID0gJyc7XG4gIGZpbHRlcmVkSXRlbXM6IElucHV0T3B0aW9uW10gPSBbXTtcbiAgc2VsZWN0ZWRJdGVtczogSW5wdXRPcHRpb25bXSA9IFtdO1xuICBkaXNwbGF5VmFsdWU6IHN0cmluZyA9ICcnO1xuXG4gIHByaXZhdGUgcHJldmlvdXNPcHRpb25zOiBhbnlbXSA9IFtdO1xuICBwcml2YXRlIGlzUHJvY2Vzc2luZ0NoYW5nZXMgPSBmYWxzZTtcbiAgcHJpdmF0ZSB2YWx1ZUNoYW5nZXNTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5sYWJlbCA9IHRoaXMubGFuZ1NlcnZpY2UuZ2V0VGV4dCgnX2dsb2JhbCcsICdzZWxlY3RNdWx0aXBsZScsICdTZWxlY2Npb25hciBtw7psdGlwbGVzJyk7XG4gICAgdGhpcy5wbGFjZWhvbGRlciA9IHRoaXMubGFuZ1NlcnZpY2UuZ2V0VGV4dCgnX2dsb2JhbCcsICdzZWxlY3RPcHRpb25zJywgJ1NlbGVjY2lvbmUgb3BjaW9uZXMnKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuYXBwbHlEZWZhdWx0VmFsdWUoKTtcbiAgICB0aGlzLmluaXRpYWxpemVJdGVtcygpO1xuICAgIHRoaXMuc3luY0NvbnRyb2xWYWx1ZVdpdGhTZWxlY3RlZEl0ZW1zKCk7XG4gICAgdGhpcy51cGRhdGVEaXNwbGF5VmFsdWUoKTtcbiAgICB0aGlzLnN1YnNjcmliZVRvVmFsdWVDaGFuZ2VzKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy52YWx1ZUNoYW5nZXNTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2VzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzUHJvY2Vzc2luZ0NoYW5nZXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1sncHJvcHMnXSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5pc1Byb2Nlc3NpbmdDaGFuZ2VzID0gdHJ1ZTtcblxuICAgICAgICBpZiAodGhpcy52YWx1ZUNoYW5nZXNTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMucHJvcHM/Lm9wdGlvbnMpIHtcbiAgICAgICAgICBjb25zdCBvcHRpb25zQ2hhbmdlZCA9ICF0aGlzLmFyZU9wdGlvbnNFcXVhbCh0aGlzLnByZXZpb3VzT3B0aW9ucywgdGhpcy5wcm9wcy5vcHRpb25zKTtcblxuICAgICAgICAgIGlmIChvcHRpb25zQ2hhbmdlZCkge1xuICAgICAgICAgICAgdGhpcy5wcmV2aW91c09wdGlvbnMgPSBbLi4udGhpcy5wcm9wcy5vcHRpb25zXTtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZUl0ZW1zKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zeW5jQ29udHJvbFZhbHVlV2l0aFNlbGVjdGVkSXRlbXMoKTtcbiAgICAgICAgdGhpcy51cGRhdGVEaXNwbGF5VmFsdWUoKTtcbiAgICAgICAgdGhpcy5zdWJzY3JpYmVUb1ZhbHVlQ2hhbmdlcygpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdGhpcy5pc1Byb2Nlc3NpbmdDaGFuZ2VzID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaW9uVmlld1dpbGxFbnRlcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc1Byb2Nlc3NpbmdDaGFuZ2VzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuaXNQcm9jZXNzaW5nQ2hhbmdlcyA9IHRydWU7XG4gICAgICB0aGlzLmluaXRpYWxpemVJdGVtcygpO1xuICAgICAgdGhpcy5zeW5jQ29udHJvbFZhbHVlV2l0aFNlbGVjdGVkSXRlbXMoKTtcbiAgICAgIHRoaXMudXBkYXRlRGlzcGxheVZhbHVlKCk7XG4gICAgICB0aGlzLnN1YnNjcmliZVRvVmFsdWVDaGFuZ2VzKCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuaXNQcm9jZXNzaW5nQ2hhbmdlcyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3Vic2NyaWJlVG9WYWx1ZUNoYW5nZXMoKSB7XG4gICAgaWYgKCF0aGlzLnByb3BzPy5jb250cm9sKSByZXR1cm47XG5cbiAgICB0aGlzLnZhbHVlQ2hhbmdlc1N1YnNjcmlwdGlvbiA9IHRoaXMucHJvcHMuY29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmlzUHJvY2Vzc2luZ0NoYW5nZXMpIHJldHVybjtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5pc1Byb2Nlc3NpbmdDaGFuZ2VzID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zeW5jQ29udHJvbFZhbHVlV2l0aFNlbGVjdGVkSXRlbXMoKTtcbiAgICAgICAgdGhpcy51cGRhdGVEaXNwbGF5VmFsdWUoKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRoaXMuaXNQcm9jZXNzaW5nQ2hhbmdlcyA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhcmVPcHRpb25zRXF1YWwocHJldk9wdGlvbnM6IGFueVtdLCBuZXdPcHRpb25zOiBhbnlbXSk6IGJvb2xlYW4ge1xuICAgIGlmIChwcmV2T3B0aW9ucyA9PT0gbmV3T3B0aW9ucykgcmV0dXJuIHRydWU7XG4gICAgaWYgKCFwcmV2T3B0aW9ucyB8fCAhbmV3T3B0aW9ucykgcmV0dXJuIHByZXZPcHRpb25zID09PSBuZXdPcHRpb25zO1xuICAgIGlmIChwcmV2T3B0aW9ucy5sZW5ndGggIT09IG5ld09wdGlvbnMubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG4gICAgXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcmV2T3B0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHByZXZPcHRpb25zW2ldW3RoaXMudmFsdWVQcm9wZXJ0eV0gIT09IG5ld09wdGlvbnNbaV1bdGhpcy52YWx1ZVByb3BlcnR5XSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplSXRlbXMoKTogdm9pZCB7XG4gICAgdGhpcy5maWx0ZXJlZEl0ZW1zID0gdGhpcy5wcm9wcz8ub3B0aW9ucyB8fCBbXTtcbiAgfVxuXG4gIHByaXZhdGUgc3luY0NvbnRyb2xWYWx1ZVdpdGhTZWxlY3RlZEl0ZW1zKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5wcm9wcz8uY29udHJvbCkge1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW107XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY29udHJvbFZhbHVlID0gdGhpcy5wcm9wcy5jb250cm9sLnZhbHVlO1xuICAgIGlmICghQXJyYXkuaXNBcnJheShjb250cm9sVmFsdWUpIHx8IGNvbnRyb2xWYWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnByb3BzLm9wdGlvbnMgJiYgdGhpcy5wcm9wcy5vcHRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IG1hcCA9IG5ldyBNYXAodGhpcy5wcm9wcy5vcHRpb25zLm1hcChvcHQgPT4gW29wdFt0aGlzLnZhbHVlUHJvcGVydHldLCBvcHRdKSk7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBjb250cm9sVmFsdWVcbiAgICAgICAgLm1hcCh2YWx1ZSA9PiBtYXAuZ2V0KHZhbHVlKSlcbiAgICAgICAgLmZpbHRlcihpdGVtID0+IGl0ZW0gIT09IHVuZGVmaW5lZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlEZWZhdWx0VmFsdWUoKTogdm9pZCB7XG4gICAgYXBwbHlEZWZhdWx0VmFsdWVUb0NvbnRyb2wodGhpcy5wcm9wcyk7XG4gIH1cblxuICBvbkZpbHRlcihldmVudDogYW55KSB7XG4gICAgaWYgKCFldmVudCB8fCBldmVudC50cmltKCkgPT09ICcnKSB7XG4gICAgICB0aGlzLmZpbHRlcmVkSXRlbXMgPSB0aGlzLnByb3BzPy5vcHRpb25zID8gWy4uLnRoaXMucHJvcHMub3B0aW9uc10gOiBbXTtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5wcm9wcz8ub3B0aW9ucyB8fCB0aGlzLnByb3BzLm9wdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmZpbHRlcmVkSXRlbXMgPSBbXTtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNlYXJjaCA9IHJlcGxhY2VTcGVjaWFsQ2hhcnMoZXZlbnQudG9Mb3dlckNhc2UoKSk7XG4gICAgdGhpcy5maWx0ZXJlZEl0ZW1zID0gdGhpcy5wcm9wcy5vcHRpb25zLmZpbHRlcihlbGVtZW50ID0+IHtcbiAgICAgIGNvbnN0IGxhYmVsID0gZWxlbWVudFt0aGlzLmxhYmVsUHJvcGVydHldXG4gICAgICAgID8gcmVwbGFjZVNwZWNpYWxDaGFycyhTdHJpbmcoZWxlbWVudFt0aGlzLmxhYmVsUHJvcGVydHldKS50b0xvd2VyQ2FzZSgpKVxuICAgICAgICA6ICcnO1xuICAgICAgY29uc3QgdmFsdWUgPSBlbGVtZW50W3RoaXMudmFsdWVQcm9wZXJ0eV1cbiAgICAgICAgPyByZXBsYWNlU3BlY2lhbENoYXJzKFN0cmluZyhlbGVtZW50W3RoaXMudmFsdWVQcm9wZXJ0eV0pLnRvTG93ZXJDYXNlKCkpXG4gICAgICAgIDogJyc7XG4gICAgICByZXR1cm4gbGFiZWwuaW5jbHVkZXMoc2VhcmNoKSB8fCB2YWx1ZS5pbmNsdWRlcyhzZWFyY2gpO1xuICAgIH0pO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgb25Gb2N1cygpIHtcbiAgICBjb25zb2xlLmxvZygnb25Gb2N1cycpO1xuICB9XG5cbiAgb25CbHVyKCkge1xuICAgIGNvbnNvbGUubG9nKCdvbkJsdXInKTtcbiAgfVxuXG4gIG9wZW5Nb2RhbCgpIHtcbiAgICB0aGlzLnN5bmNDb250cm9sVmFsdWVXaXRoU2VsZWN0ZWRJdGVtcygpO1xuICAgIHRoaXMudXBkYXRlRGlzcGxheVZhbHVlKCk7XG4gICAgaWYgKHRoaXMubW9kYWwpIHtcbiAgICAgIHRoaXMubW9kYWwucHJlc2VudCgpO1xuICAgIH1cbiAgfVxuXG4gIHByZXZlbnREZWZhdWx0QmVoYXZpb3IoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMub3Blbk1vZGFsKCk7XG4gIH1cblxuICBjYW5jZWxNb2RhbCgpIHtcbiAgICAvLyBSZXNldCBmaWx0ZXIgYW5kIHNob3cgYWxsIG9wdGlvbnMgd2hlbiBjbG9zaW5nIG1vZGFsXG4gICAgdGhpcy5zZWFyY2hUZXJtID0gJyc7XG4gICAgdGhpcy5maWx0ZXJlZEl0ZW1zID0gdGhpcy5wcm9wcz8ub3B0aW9ucyA/IFsuLi50aGlzLnByb3BzLm9wdGlvbnNdIDogW107XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgaWYgKHRoaXMubW9kYWwpIHtcbiAgICAgIHRoaXMubW9kYWwuZGlzbWlzcygpO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZUl0ZW0oaXRlbTogYW55KSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGVjdGVkSXRlbXMuZmluZEluZGV4KFxuICAgICAgc2VsZWN0ZWRJdGVtID0+IHNlbGVjdGVkSXRlbVt0aGlzLnZhbHVlUHJvcGVydHldID09PSBpdGVtW3RoaXMudmFsdWVQcm9wZXJ0eV1cbiAgICApO1xuXG4gICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2goaXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlRGlzcGxheVZhbHVlKCk7XG4gICAgdGhpcy5hcHBseUNoYW5nZXMoKTtcbiAgfVxuXG4gIGlzSXRlbVNlbGVjdGVkKGl0ZW06IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkSXRlbXMuc29tZShcbiAgICAgIHNlbGVjdGVkSXRlbSA9PiBzZWxlY3RlZEl0ZW1bdGhpcy52YWx1ZVByb3BlcnR5XSA9PT0gaXRlbVt0aGlzLnZhbHVlUHJvcGVydHldXG4gICAgKTtcbiAgfVxuXG4gIGNsZWFyU2VsZWN0aW9uKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xuICAgIHRoaXMudXBkYXRlRGlzcGxheVZhbHVlKCk7XG4gICAgdGhpcy5hcHBseUNoYW5nZXMoKTtcbiAgfVxuXG4gIGFwcGx5U2VsZWN0aW9uKCkge1xuICAgIHRoaXMuYXBwbHlDaGFuZ2VzKCk7XG4gICAgdGhpcy5jYW5jZWxNb2RhbCgpO1xuICB9XG5cbiAgdXBkYXRlRGlzcGxheVZhbHVlKCkge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9ICcnO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID09PSAxKSB7XG4gICAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9IHRoaXMuc2VsZWN0ZWRJdGVtc1swXVt0aGlzLmxhYmVsUHJvcGVydHldO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9IGAke3RoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGh9IGVsZW1lbnRvcyBzZWxlY2Npb25hZG9zYDtcbiAgICB9XG4gIH1cblxuICBhcHBseUNoYW5nZXMoKSB7XG4gICAgaWYgKCF0aGlzLnByb3BzPy5jb250cm9sKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuaXNQcm9jZXNzaW5nQ2hhbmdlcyA9IHRydWU7XG5cbiAgICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5tYXAoaXRlbSA9PiBpdGVtW3RoaXMudmFsdWVQcm9wZXJ0eV0pO1xuICAgICAgdGhpcy5wcm9wcy5jb250cm9sLnNldFZhbHVlKHZhbHVlcyk7XG4gICAgICB0aGlzLnByb3BzLmNvbnRyb2wubWFya0FzRGlydHkoKTtcbiAgICAgIHRoaXMucHJvcHMuY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuaXNQcm9jZXNzaW5nQ2hhbmdlcyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJlc2V0KCkge1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xuICAgIHRoaXMuZGlzcGxheVZhbHVlID0gJyc7XG4gICAgaWYgKHRoaXMucHJvcHM/LmNvbnRyb2wpIHtcbiAgICAgIHRoaXMucHJvcHMuY29udHJvbC5zZXRWYWx1ZShbXSk7XG4gICAgfVxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG59Il19
|
|
@@ -7584,7 +7584,7 @@ class MultiSelectSearchComponent {
|
|
|
7584
7584
|
subscribeToValueChanges() {
|
|
7585
7585
|
if (!this.props?.control)
|
|
7586
7586
|
return;
|
|
7587
|
-
this.valueChangesSubscription = this.props.control.valueChanges.subscribe(
|
|
7587
|
+
this.valueChangesSubscription = this.props.control.valueChanges.subscribe(() => {
|
|
7588
7588
|
if (this.isProcessingChanges)
|
|
7589
7589
|
return;
|
|
7590
7590
|
try {
|
|
@@ -7667,6 +7667,8 @@ class MultiSelectSearchComponent {
|
|
|
7667
7667
|
console.log('onBlur');
|
|
7668
7668
|
}
|
|
7669
7669
|
openModal() {
|
|
7670
|
+
this.syncControlValueWithSelectedItems();
|
|
7671
|
+
this.updateDisplayValue();
|
|
7670
7672
|
if (this.modal) {
|
|
7671
7673
|
this.modal.present();
|
|
7672
7674
|
}
|
|
@@ -7694,6 +7696,7 @@ class MultiSelectSearchComponent {
|
|
|
7694
7696
|
this.selectedItems.splice(index, 1);
|
|
7695
7697
|
}
|
|
7696
7698
|
this.updateDisplayValue();
|
|
7699
|
+
this.applyChanges();
|
|
7697
7700
|
}
|
|
7698
7701
|
isItemSelected(item) {
|
|
7699
7702
|
return this.selectedItems.some(selectedItem => selectedItem[this.valueProperty] === item[this.valueProperty]);
|
|
@@ -7701,6 +7704,7 @@ class MultiSelectSearchComponent {
|
|
|
7701
7704
|
clearSelection() {
|
|
7702
7705
|
this.selectedItems = [];
|
|
7703
7706
|
this.updateDisplayValue();
|
|
7707
|
+
this.applyChanges();
|
|
7704
7708
|
}
|
|
7705
7709
|
applySelection() {
|
|
7706
7710
|
this.applyChanges();
|
|
@@ -7773,14 +7777,20 @@ class MultiSelectSearchComponent {
|
|
|
7773
7777
|
</ion-toolbar>
|
|
7774
7778
|
</ion-header>
|
|
7775
7779
|
<ion-content>
|
|
7780
|
+
<ion-item *ngIf="selectedItems.length > 0" lines="none" color="light">
|
|
7781
|
+
<ion-icon name="checkmark-circle" slot="start" color="success"></ion-icon>
|
|
7782
|
+
<ion-label>
|
|
7783
|
+
<h3>{{ selectedItems.length }} item{{ selectedItems.length === 1 ? '' : 's' }} seleccionado{{ selectedItems.length === 1 ? '' : 's' }}</h3>
|
|
7784
|
+
</ion-label>
|
|
7785
|
+
</ion-item>
|
|
7776
7786
|
<ion-list>
|
|
7777
|
-
<ion-item *ngFor="let item of filteredItems" button
|
|
7787
|
+
<ion-item *ngFor="let item of filteredItems" button detail="false">
|
|
7778
7788
|
<ion-checkbox
|
|
7779
7789
|
[checked]="isItemSelected(item)"
|
|
7780
7790
|
slot="start"
|
|
7781
7791
|
(ionChange)="toggleItem(item)"
|
|
7782
7792
|
></ion-checkbox>
|
|
7783
|
-
<ion-label>{{ item[labelProperty] }}</ion-label>
|
|
7793
|
+
<ion-label (click)="toggleItem(item)">{{ item[labelProperty] }}</ion-label>
|
|
7784
7794
|
</ion-item>
|
|
7785
7795
|
<ion-item *ngIf="filteredItems.length === 0" lines="none">
|
|
7786
7796
|
<ion-label color="dark">No se encontraron resultados</ion-label>
|
|
@@ -7797,7 +7807,7 @@ class MultiSelectSearchComponent {
|
|
|
7797
7807
|
</ion-footer>
|
|
7798
7808
|
</ng-template>
|
|
7799
7809
|
</ion-modal>
|
|
7800
|
-
`, isInline: true, styles: ["ion-header{padding:8px 8px 0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: IonicModule }, { kind: "component", type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i2.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i2.IonCheckbox, selector: "ion-checkbox", inputs: ["alignment", "checked", "color", "disabled", "indeterminate", "justify", "labelPlacement", "mode", "name", "value"] }, { kind: "component", type: i2.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i2.IonFooter, selector: "ion-footer", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i2.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i2.IonInput, selector: "ion-input", inputs: ["autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "spellcheck", "step", "type", "value"] }, { kind: "component", type: i2.IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i2.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: i2.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i2.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i2.IonModal, selector: "ion-modal" }, { kind: "directive", type: i2.BooleanValueAccessor, selector: "ion-checkbox,ion-toggle" }, { kind: "directive", type: i2.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: SearchbarComponent, selector: "val-searchbar", inputs: ["disabled"], outputs: ["filterEvent", "focusEvent", "blurEvent"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] }); }
|
|
7810
|
+
`, isInline: true, styles: ["ion-header{padding:8px 8px 0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: IonicModule }, { kind: "component", type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i2.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i2.IonCheckbox, selector: "ion-checkbox", inputs: ["alignment", "checked", "color", "disabled", "indeterminate", "justify", "labelPlacement", "mode", "name", "value"] }, { kind: "component", type: i2.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i2.IonFooter, selector: "ion-footer", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i2.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i2.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i2.IonInput, selector: "ion-input", inputs: ["autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "spellcheck", "step", "type", "value"] }, { kind: "component", type: i2.IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i2.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: i2.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i2.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i2.IonModal, selector: "ion-modal" }, { kind: "directive", type: i2.BooleanValueAccessor, selector: "ion-checkbox,ion-toggle" }, { kind: "directive", type: i2.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: SearchbarComponent, selector: "val-searchbar", inputs: ["disabled"], outputs: ["filterEvent", "focusEvent", "blurEvent"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] }); }
|
|
7801
7811
|
}
|
|
7802
7812
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MultiSelectSearchComponent, decorators: [{
|
|
7803
7813
|
type: Component,
|
|
@@ -7832,14 +7842,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
7832
7842
|
</ion-toolbar>
|
|
7833
7843
|
</ion-header>
|
|
7834
7844
|
<ion-content>
|
|
7845
|
+
<ion-item *ngIf="selectedItems.length > 0" lines="none" color="light">
|
|
7846
|
+
<ion-icon name="checkmark-circle" slot="start" color="success"></ion-icon>
|
|
7847
|
+
<ion-label>
|
|
7848
|
+
<h3>{{ selectedItems.length }} item{{ selectedItems.length === 1 ? '' : 's' }} seleccionado{{ selectedItems.length === 1 ? '' : 's' }}</h3>
|
|
7849
|
+
</ion-label>
|
|
7850
|
+
</ion-item>
|
|
7835
7851
|
<ion-list>
|
|
7836
|
-
<ion-item *ngFor="let item of filteredItems" button
|
|
7852
|
+
<ion-item *ngFor="let item of filteredItems" button detail="false">
|
|
7837
7853
|
<ion-checkbox
|
|
7838
7854
|
[checked]="isItemSelected(item)"
|
|
7839
7855
|
slot="start"
|
|
7840
7856
|
(ionChange)="toggleItem(item)"
|
|
7841
7857
|
></ion-checkbox>
|
|
7842
|
-
<ion-label>{{ item[labelProperty] }}</ion-label>
|
|
7858
|
+
<ion-label (click)="toggleItem(item)">{{ item[labelProperty] }}</ion-label>
|
|
7843
7859
|
</ion-item>
|
|
7844
7860
|
<ion-item *ngIf="filteredItems.length === 0" lines="none">
|
|
7845
7861
|
<ion-label color="dark">No se encontraron resultados</ion-label>
|