valtech-components 2.0.388 → 2.0.390

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  import { CommonModule } from '@angular/common';
2
- import { Component, inject, Input, ViewChild, signal, computed } from '@angular/core';
2
+ import { Component, inject, Input, ViewChild, signal, computed, effect } from '@angular/core';
3
3
  import { FormsModule, ReactiveFormsModule } from '@angular/forms';
4
4
  import { IonicModule } from '@ionic/angular';
5
5
  import { LangService } from '../../../services/lang-provider/lang-provider.service';
@@ -19,6 +19,8 @@ export class SelectSearchComponent {
19
19
  this.isOpen = signal(false);
20
20
  this.searchTerm = signal('');
21
21
  this.selectedValue = signal(null);
22
+ // Force options to be reactive
23
+ this.optionsSignal = signal([]);
22
24
  // Computed signals
23
25
  this.displayValue = computed(() => {
24
26
  const value = this.selectedValue();
@@ -28,20 +30,25 @@ export class SelectSearchComponent {
28
30
  return option ? option[this.labelProperty] : '';
29
31
  });
30
32
  this.filteredOptions = computed(() => {
31
- const options = this.props?.options || [];
33
+ // Use signal instead of props directly
34
+ const options = this.optionsSignal();
32
35
  const search = this.searchTerm().toLowerCase();
33
36
  // Debug mejorado
34
37
  console.log('[SelectSearch] filteredOptions computed:', {
35
38
  optionsCount: options.length,
36
39
  searchTerm: search,
37
- options: options.slice(0, 3),
40
+ options: options,
38
41
  labelProperty: this.labelProperty,
39
42
  valueProperty: this.valueProperty,
43
+ propsExists: !!this.props,
44
+ propsOptionsExists: !!this.props?.options,
45
+ propsOptionsLength: this.props?.options?.length || 0,
40
46
  firstOptionStructure: options[0] ? {
41
47
  [this.labelProperty]: options[0][this.labelProperty],
42
48
  [this.valueProperty]: options[0][this.valueProperty],
43
- typeOfId: typeof options[0][this.valueProperty]
44
- } : null
49
+ typeOfId: typeof options[0][this.valueProperty],
50
+ fullOption: options[0]
51
+ } : 'NO_OPTIONS'
45
52
  });
46
53
  if (!search) {
47
54
  return options;
@@ -60,8 +67,26 @@ export class SelectSearchComponent {
60
67
  this.placeholder = this.langService.getText('_global', 'selectOption', 'Seleccione una opción');
61
68
  // Close dropdown when clicking outside
62
69
  document.addEventListener('click', this.handleClickOutside.bind(this));
70
+ // Debug effect to track when filteredOptions changes
71
+ effect(() => {
72
+ const options = this.filteredOptions();
73
+ console.log('[SelectSearch] EFFECT - filteredOptions changed:', {
74
+ optionsCount: options.length,
75
+ options: options,
76
+ timestamp: new Date().toLocaleTimeString()
77
+ });
78
+ });
63
79
  }
64
80
  ngOnInit() {
81
+ console.log('[SelectSearch] ngOnInit:', {
82
+ props: !!this.props,
83
+ options: this.props?.options?.length || 0,
84
+ control: !!this.props?.control
85
+ });
86
+ // Update options signal
87
+ if (this.props?.options) {
88
+ this.optionsSignal.set(this.props.options);
89
+ }
65
90
  this.applyDefaultValue();
66
91
  this.syncSelectedValue();
67
92
  }
@@ -69,7 +94,18 @@ export class SelectSearchComponent {
69
94
  document.removeEventListener('click', this.handleClickOutside.bind(this));
70
95
  }
71
96
  ngOnChanges(changes) {
97
+ console.log('[SelectSearch] ngOnChanges:', {
98
+ hasPropsChange: !!changes['props'],
99
+ props: !!this.props,
100
+ options: this.props?.options?.length || 0,
101
+ propsOptions: this.props?.options
102
+ });
72
103
  if (changes['props'] && this.props) {
104
+ // Update options signal when props change
105
+ if (this.props.options) {
106
+ console.log('[SelectSearch] Updating optionsSignal with:', this.props.options);
107
+ this.optionsSignal.set(this.props.options);
108
+ }
73
109
  this.syncSelectedValue();
74
110
  }
75
111
  }
@@ -117,13 +153,22 @@ export class SelectSearchComponent {
117
153
  }
118
154
  }
119
155
  getOptionByValue(value) {
120
- return this.props?.options?.find(option => String(option[this.valueProperty]) === String(value));
156
+ return this.optionsSignal().find(option => String(option[this.valueProperty]) === String(value));
121
157
  }
122
158
  applyDefaultValue() {
123
159
  if (this.props) {
124
160
  applyDefaultValueToControl(this.props);
125
161
  }
126
162
  }
163
+ debugOptions() {
164
+ console.log('[SelectSearch] DEBUG CLICK:', {
165
+ props: this.props,
166
+ filteredOptions: this.filteredOptions(),
167
+ searchTerm: this.searchTerm(),
168
+ propsOptions: this.props?.options,
169
+ computed: this.filteredOptions()
170
+ });
171
+ }
127
172
  syncSelectedValue() {
128
173
  if (this.props?.control?.value) {
129
174
  this.selectedValue.set(String(this.props.control.value));
@@ -164,6 +209,11 @@ export class SelectSearchComponent {
164
209
  [class.visible]="isOpen()"
165
210
  #dropdown
166
211
  >
212
+ <!-- Debug button -->
213
+ <div class="search-container" style="background: red; color: white; padding: 4px;">
214
+ <button (click)="debugOptions()">DEBUG: {{ filteredOptions().length }} opciones</button>
215
+ </div>
216
+
167
217
  <!-- Search bar -->
168
218
  <div class="search-container" *ngIf="props?.options && props.options.length > 5">
169
219
  <ion-searchbar
@@ -198,6 +248,8 @@ export class SelectSearchComponent {
198
248
  <ion-item *ngIf="filteredOptions().length === 0" class="no-results">
199
249
  <ion-label color="medium">
200
250
  {{ searchTerm() ? 'No se encontraron resultados' : 'No hay opciones disponibles' }}
251
+ <!-- Debug info -->
252
+ <br><small>Debug: {{ filteredOptions().length }} opciones | Props: {{ !!props }} | Search: "{{ searchTerm() }}"</small>
201
253
  </ion-label>
202
254
  </ion-item>
203
255
  </ion-list>
@@ -241,6 +293,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
241
293
  [class.visible]="isOpen()"
242
294
  #dropdown
243
295
  >
296
+ <!-- Debug button -->
297
+ <div class="search-container" style="background: red; color: white; padding: 4px;">
298
+ <button (click)="debugOptions()">DEBUG: {{ filteredOptions().length }} opciones</button>
299
+ </div>
300
+
244
301
  <!-- Search bar -->
245
302
  <div class="search-container" *ngIf="props?.options && props.options.length > 5">
246
303
  <ion-searchbar
@@ -275,6 +332,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
275
332
  <ion-item *ngIf="filteredOptions().length === 0" class="no-results">
276
333
  <ion-label color="medium">
277
334
  {{ searchTerm() ? 'No se encontraron resultados' : 'No hay opciones disponibles' }}
335
+ <!-- Debug info -->
336
+ <br><small>Debug: {{ filteredOptions().length }} opciones | Props: {{ !!props }} | Search: "{{ searchTerm() }}"</small>
278
337
  </ion-label>
279
338
  </ion-item>
280
339
  </ion-list>
@@ -296,4 +355,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
296
355
  }], placeholder: [{
297
356
  type: Input
298
357
  }] } });
299
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LXNlYXJjaC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0ZWNoLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9zZWxlY3Qtc2VhcmNoL3NlbGVjdC1zZWFyY2guY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsU0FBUyxFQUVULE1BQU0sRUFDTixLQUFLLEVBS0wsU0FBUyxFQUNULE1BQU0sRUFDTixRQUFRLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDcEYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDakYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7O0FBbUZqRSxNQUFNLE9BQU8scUJBQXFCO0lBMkRoQztRQXREUyxrQkFBYSxHQUFXLE1BQU0sQ0FBQztRQUMvQixrQkFBYSxHQUFXLElBQUksQ0FBQztRQUM3QixnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUUxQixnQkFBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUUxQyx3Q0FBd0M7UUFDeEMsV0FBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QixlQUFVLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hCLGtCQUFhLEdBQUcsTUFBTSxDQUFnQixJQUFJLENBQUMsQ0FBQztRQUU1QyxtQkFBbUI7UUFDbkIs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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlFVDt3REFJc0IsV0FBVztzQkFBakMsU0FBUzt1QkFBQyxVQUFVO2dCQUNHLFlBQVk7c0JBQW5DLFNBQVM7dUJBQUMsV0FBVztnQkFFYixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBpbmplY3QsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE9uRGVzdHJveSxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG4gIHNpZ25hbCxcbiAgY29tcHV0ZWRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElvbmljTW9kdWxlIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgTGFuZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9sYW5nLXByb3ZpZGVyL2xhbmctcHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBhcHBseURlZmF1bHRWYWx1ZVRvQ29udHJvbCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC91dGlscy9mb3JtLWRlZmF1bHRzJztcbmltcG9ydCB7IHJlcGxhY2VTcGVjaWFsQ2hhcnMgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvdXRpbHMvdGV4dCc7XG5pbXBvcnQgeyBJbnB1dE1ldGFkYXRhLCBJbnB1dE9wdGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXNlbGVjdC1zZWFyY2gnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJb25pY01vZHVsZSwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGVdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJzZWxlY3QtY29udGFpbmVyXCIgKGNsaWNrKT1cInRvZ2dsZURyb3Bkb3duKCRldmVudClcIj5cbiAgICAgIDwhLS0gTWFpbiBpbnB1dCBkaXNwbGF5IC0tPlxuICAgICAgPGlvbi1pbnB1dFxuICAgICAgICAjbWFpbklucHV0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgW3ZhbHVlXT1cImRpc3BsYXlWYWx1ZSgpXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInByb3BzPy5wbGFjZWhvbGRlciB8fCBwbGFjZWhvbGRlclwiXG4gICAgICAgIHJlYWRvbmx5XG4gICAgICAgIGNsYXNzPVwibWFpbi1pbnB1dFwiXG4gICAgICAgIFtjbGFzcy5pcy1vcGVuXT1cImlzT3BlbigpXCJcbiAgICAgIC8+XG4gICAgICBcbiAgICAgIDwhLS0gRHJvcGRvd24gaWNvbiAtLT5cbiAgICAgIDxpb24taWNvbiBcbiAgICAgICAgbmFtZT1cImNoZXZyb24tZG93bi1vdXRsaW5lXCIgXG4gICAgICAgIGNsYXNzPVwiZHJvcGRvd24taWNvblwiIFxuICAgICAgICBbY2xhc3Mucm90YXRlZF09XCJpc09wZW4oKVwiXG4gICAgICA+PC9pb24taWNvbj5cbiAgICAgIFxuICAgICAgPCEtLSBIaWRkZW4gaW5wdXQgZm9yIGZvcm0gY29udHJvbCAtLT5cbiAgICAgIDxpb24taW5wdXQgXG4gICAgICAgIHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlOyBvcGFjaXR5OiAwOyBwb2ludGVyLWV2ZW50czogbm9uZTtcIiBcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cInByb3BzPy5jb250cm9sXCIgXG4gICAgICAgIHR5cGU9XCJoaWRkZW5cIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gRHJvcGRvd24gb3ZlcmxheSAtLT5cbiAgICA8ZGl2IFxuICAgICAgY2xhc3M9XCJkcm9wZG93bi1vdmVybGF5XCIgXG4gICAgICBbY2xhc3MudmlzaWJsZV09XCJpc09wZW4oKVwiXG4gICAgICAjZHJvcGRvd25cbiAgICA+XG4gICAgICA8IS0tIFNlYXJjaCBiYXIgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWNvbnRhaW5lclwiICpuZ0lmPVwicHJvcHM/Lm9wdGlvbnMgJiYgcHJvcHMub3B0aW9ucy5sZW5ndGggPiA1XCI+XG4gICAgICAgIDxpb24tc2VhcmNoYmFyXG4gICAgICAgICAgI3NlYXJjaGJhclxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInQnVzY2FyJ1wiXG4gICAgICAgICAgKGlvbklucHV0KT1cIm9uU2VhcmNoKCRldmVudClcIlxuICAgICAgICAgIFt2YWx1ZV09XCJzZWFyY2hUZXJtKClcIlxuICAgICAgICAgIHNob3ctY2xlYXItYnV0dG9uPVwiZm9jdXNcIlxuICAgICAgICAgIFtkZWJvdW5jZV09XCIyMDBcIlxuICAgICAgICA+PC9pb24tc2VhcmNoYmFyPlxuICAgICAgPC9kaXY+XG4gICAgICBcbiAgICAgIDwhLS0gT3B0aW9ucyBsaXN0IC0tPlxuICAgICAgPGRpdiBjbGFzcz1cIm9wdGlvbnMtY29udGFpbmVyXCI+XG4gICAgICAgIDxpb24tbGlzdCBjbGFzcz1cIm9wdGlvbnMtbGlzdFwiPlxuICAgICAgICAgIDxpb24taXRlbSBcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZmlsdGVyZWRPcHRpb25zKCk7IHRyYWNrQnk6IHRyYWNrQnlGblwiIFxuICAgICAgICAgICAgYnV0dG9uIFxuICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE9wdGlvbihvcHRpb24pXCJcbiAgICAgICAgICAgIGNsYXNzPVwib3B0aW9uLWl0ZW1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpb24tbGFiZWw+e3sgb3B0aW9uW2xhYmVsUHJvcGVydHldIH19PC9pb24tbGFiZWw+XG4gICAgICAgICAgICA8aW9uLWljb24gXG4gICAgICAgICAgICAgICpuZ0lmPVwiaXNTZWxlY3RlZChvcHRpb24pXCIgXG4gICAgICAgICAgICAgIG5hbWU9XCJjaGVja21hcmstb3V0bGluZVwiIFxuICAgICAgICAgICAgICBzbG90PVwiZW5kXCIgXG4gICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICA+PC9pb24taWNvbj5cbiAgICAgICAgICA8L2lvbi1pdGVtPlxuICAgICAgICAgIFxuICAgICAgICAgIDwhLS0gTm8gcmVzdWx0cyBtZXNzYWdlIC0tPlxuICAgICAgICAgIDxpb24taXRlbSAqbmdJZj1cImZpbHRlcmVkT3B0aW9ucygpLmxlbmd0aCA9PT0gMFwiIGNsYXNzPVwibm8tcmVzdWx0c1wiPlxuICAgICAgICAgICAgPGlvbi1sYWJlbCBjb2xvcj1cIm1lZGl1bVwiPlxuICAgICAgICAgICAgICB7eyBzZWFyY2hUZXJtKCkgPyAnTm8gc2UgZW5jb250cmFyb24gcmVzdWx0YWRvcycgOiAnTm8gaGF5IG9wY2lvbmVzIGRpc3BvbmlibGVzJyB9fVxuICAgICAgICAgICAgPC9pb24tbGFiZWw+XG4gICAgICAgICAgPC9pb24taXRlbT5cbiAgICAgICAgPC9pb24tbGlzdD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9zZWxlY3Qtc2VhcmNoLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0U2VhcmNoQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duJykgZHJvcGRvd25SZWYhOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdtYWluSW5wdXQnKSBtYWluSW5wdXRSZWYhOiBFbGVtZW50UmVmO1xuXG4gIEBJbnB1dCgpIHByb3BzITogSW5wdXRNZXRhZGF0YTtcbiAgQElucHV0KCkgbGFiZWxQcm9wZXJ0eTogc3RyaW5nID0gJ25hbWUnO1xuICBASW5wdXQoKSB2YWx1ZVByb3BlcnR5OiBzdHJpbmcgPSAnaWQnO1xuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XG5cbiAgcHJpdmF0ZSBsYW5nU2VydmljZSA9IGluamVjdChMYW5nU2VydmljZSk7XG4gIFxuICAvLyBTaWduYWxzIGZvciByZWFjdGl2ZSBzdGF0ZSBtYW5hZ2VtZW50XG4gIGlzT3BlbiA9IHNpZ25hbChmYWxzZSk7XG4gIHNlYXJjaFRlcm0gPSBzaWduYWwoJycpO1xuICBzZWxlY3RlZFZhbHVlID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICBcbiAgLy8gQ29tcHV0ZWQgc2lnbmFsc1xuICBkaXNwbGF5VmFsdWUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLnNlbGVjdGVkVmFsdWUoKTtcbiAgICBpZiAoIXZhbHVlKSByZXR1cm4gJyc7XG4gICAgXG4gICAgY29uc3Qgb3B0aW9uID0gdGhpcy5nZXRPcHRpb25CeVZhbHVlKHZhbHVlKTtcbiAgICByZXR1cm4gb3B0aW9uID8gb3B0aW9uW3RoaXMubGFiZWxQcm9wZXJ0eV0gOiAnJztcbiAgfSk7XG5cbiAgZmlsdGVyZWRPcHRpb25zID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLnByb3BzPy5vcHRpb25zIHx8IFtdO1xuICAgIGNvbnN0IHNlYXJjaCA9IHRoaXMuc2VhcmNoVGVybSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgXG4gICAgLy8gRGVidWcgbWVqb3JhZG9cbiAgICBjb25zb2xlLmxvZygnW1NlbGVjdFNlYXJjaF0gZmlsdGVyZWRPcHRpb25zIGNvbXB1dGVkOicsIHtcbiAgICAgIG9wdGlvbnNDb3VudDogb3B0aW9ucy5sZW5ndGgsXG4gICAgICBzZWFyY2hUZXJtOiBzZWFyY2gsXG4gICAgICBvcHRpb25zOiBvcHRpb25zLnNsaWNlKDAsIDMpLFxuICAgICAgbGFiZWxQcm9wZXJ0eTogdGhpcy5sYWJlbFByb3BlcnR5LFxuICAgICAgdmFsdWVQcm9wZXJ0eTogdGhpcy52YWx1ZVByb3BlcnR5LFxuICAgICAgZmlyc3RPcHRpb25TdHJ1Y3R1cmU6IG9wdGlvbnNbMF0gPyB7XG4gICAgICAgIFt0aGlzLmxhYmVsUHJvcGVydHldOiBvcHRpb25zWzBdW3RoaXMubGFiZWxQcm9wZXJ0eV0sXG4gICAgICAgIFt0aGlzLnZhbHVlUHJvcGVydHldOiBvcHRpb25zWzBdW3RoaXMudmFsdWVQcm9wZXJ0eV0sXG4gICAgICAgIHR5cGVPZklkOiB0eXBlb2Ygb3B0aW9uc1swXVt0aGlzLnZhbHVlUHJvcGVydHldXG4gICAgICB9IDogbnVsbFxuICAgIH0pO1xuICAgIFxuICAgIGlmICghc2VhcmNoKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucztcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIG9wdGlvbnMuZmlsdGVyKG9wdGlvbiA9PiB7XG4gICAgICBjb25zdCBsYWJlbCA9IG9wdGlvblt0aGlzLmxhYmVsUHJvcGVydHldXG4gICAgICAgID8gcmVwbGFjZVNwZWNpYWxDaGFycyhTdHJpbmcob3B0aW9uW3RoaXMubGFiZWxQcm9wZXJ0eV0pLnRvTG93ZXJDYXNlKCkpXG4gICAgICAgIDogJyc7XG4gICAgICBjb25zdCB2YWx1ZSA9IG9wdGlvblt0aGlzLnZhbHVlUHJvcGVydHldXG4gICAgICAgID8gcmVwbGFjZVNwZWNpYWxDaGFycyhTdHJpbmcob3B0aW9uW3RoaXMudmFsdWVQcm9wZXJ0eV0pLnRvTG93ZXJDYXNlKCkpXG4gICAgICAgIDogJyc7XG4gICAgICBjb25zdCBzZWFyY2hUZXJtID0gcmVwbGFjZVNwZWNpYWxDaGFycyhzZWFyY2gpO1xuICAgICAgcmV0dXJuIGxhYmVsLmluY2x1ZGVzKHNlYXJjaFRlcm0pIHx8IHZhbHVlLmluY2x1ZGVzKHNlYXJjaFRlcm0pO1xuICAgIH0pO1xuICB9KTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gdGhpcy5sYW5nU2VydmljZS5nZXRUZXh0KCdfZ2xvYmFsJywgJ3NlbGVjdE9wdGlvbicsICdTZWxlY2Npb25lIHVuYSBvcGNpw7NuJyk7XG4gICAgXG4gICAgLy8gQ2xvc2UgZHJvcGRvd24gd2hlbiBjbGlja2luZyBvdXRzaWRlXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmhhbmRsZUNsaWNrT3V0c2lkZS5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuYXBwbHlEZWZhdWx0VmFsdWUoKTtcbiAgICB0aGlzLnN5bmNTZWxlY3RlZFZhbHVlKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuaGFuZGxlQ2xpY2tPdXRzaWRlLmJpbmQodGhpcykpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzWydwcm9wcyddICYmIHRoaXMucHJvcHMpIHtcbiAgICAgIHRoaXMuc3luY1NlbGVjdGVkVmFsdWUoKTtcbiAgICB9XG4gIH1cblxuICAvLyBDb21wb25lbnQgbWV0aG9kc1xuICB0b2dnbGVEcm9wZG93bihldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmlzT3Blbi51cGRhdGUodmFsdWUgPT4gIXZhbHVlKTtcbiAgICBcbiAgICBpZiAodGhpcy5pc09wZW4oKSkge1xuICAgICAgLy8gRm9jdXMgc2VhcmNoIGJhciB3aGVuIG9wZW5pbmcgaWYgYXZhaWxhYmxlXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29uc3Qgc2VhcmNoYmFyID0gdGhpcy5kcm9wZG93blJlZj8ubmF0aXZlRWxlbWVudD8ucXVlcnlTZWxlY3RvcignaW9uLXNlYXJjaGJhcicpO1xuICAgICAgICBpZiAoc2VhcmNoYmFyKSB7XG4gICAgICAgICAgc2VhcmNoYmFyLnNldEZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0sIDEwMCk7XG4gICAgfVxuICB9XG5cbiAgb25TZWFyY2goZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoVGVybS5zZXQoZXZlbnQuZGV0YWlsLnZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIHNlbGVjdE9wdGlvbihvcHRpb246IElucHV0T3B0aW9uKTogdm9pZCB7XG4gICAgY29uc3QgdmFsdWUgPSBTdHJpbmcob3B0aW9uW3RoaXMudmFsdWVQcm9wZXJ0eV0pOyAvLyBDb252ZXJ0aXIgYSBzdHJpbmdcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWUuc2V0KHZhbHVlKTtcbiAgICB0aGlzLmlzT3Blbi5zZXQoZmFsc2UpO1xuICAgIHRoaXMuc2VhcmNoVGVybS5zZXQoJycpO1xuICAgIFxuICAgIC8vIFVwZGF0ZSBmb3JtIGNvbnRyb2xcbiAgICBpZiAodGhpcy5wcm9wcz8uY29udHJvbCkge1xuICAgICAgdGhpcy5wcm9wcy5jb250cm9sLnNldFZhbHVlKHZhbHVlKTtcbiAgICAgIHRoaXMucHJvcHMuY29udHJvbC5tYXJrQXNEaXJ0eSgpO1xuICAgICAgdGhpcy5wcm9wcy5jb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICB9XG4gIH1cblxuICBpc1NlbGVjdGVkKG9wdGlvbjogSW5wdXRPcHRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gU3RyaW5nKHRoaXMuc2VsZWN0ZWRWYWx1ZSgpKSA9PT0gU3RyaW5nKG9wdGlvblt0aGlzLnZhbHVlUHJvcGVydHldKTtcbiAgfVxuXG4gIHRyYWNrQnlGbihfaW5kZXg6IG51bWJlciwgb3B0aW9uOiBJbnB1dE9wdGlvbik6IGFueSB7XG4gICAgcmV0dXJuIG9wdGlvblt0aGlzLnZhbHVlUHJvcGVydHldO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVDbGlja091dHNpZGUoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNPcGVuKCkgJiYgXG4gICAgICAgICF0aGlzLm1haW5JbnB1dFJlZj8ubmF0aXZlRWxlbWVudD8uY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJlxuICAgICAgICAhdGhpcy5kcm9wZG93blJlZj8ubmF0aXZlRWxlbWVudD8uY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgdGhpcy5pc09wZW4uc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMuc2VhcmNoVGVybS5zZXQoJycpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0T3B0aW9uQnlWYWx1ZSh2YWx1ZTogc3RyaW5nKTogSW5wdXRPcHRpb24gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnByb3BzPy5vcHRpb25zPy5maW5kKG9wdGlvbiA9PiBcbiAgICAgIFN0cmluZyhvcHRpb25bdGhpcy52YWx1ZVByb3BlcnR5XSkgPT09IFN0cmluZyh2YWx1ZSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseURlZmF1bHRWYWx1ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9wcykge1xuICAgICAgYXBwbHlEZWZhdWx0VmFsdWVUb0NvbnRyb2wodGhpcy5wcm9wcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzeW5jU2VsZWN0ZWRWYWx1ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9wcz8uY29udHJvbD8udmFsdWUpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZS5zZXQoU3RyaW5nKHRoaXMucHJvcHMuY29udHJvbC52YWx1ZSkpO1xuICAgIH1cbiAgfVxufVxuIl19
358
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LXNlYXJjaC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0ZWNoLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9zZWxlY3Qtc2VhcmNoL3NlbGVjdC1zZWFyY2guY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsU0FBUyxFQUVULE1BQU0sRUFDTixLQUFLLEVBS0wsU0FBUyxFQUNULE1BQU0sRUFDTixRQUFRLEVBQ1IsTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ3BGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7OztBQTBGakUsTUFBTSxPQUFPLHFCQUFxQjtJQW1FaEM7UUE5RFMsa0JBQWEsR0FBVyxNQUFNLENBQUM7UUFDL0Isa0JBQWEsR0FBVyxJQUFJLENBQUM7UUFDN0IsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFFMUIsZ0JBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFMUMsd0NBQXdDO1FBQ3hDLFdBQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4QixrQkFBYSxHQUFHLE1BQU0sQ0FBZ0IsSUFBSSxDQUFDLENBQUM7UUFFNUMsK0JB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b3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgaW5qZWN0LFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPbkRlc3Ryb3ksXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxuICBzaWduYWwsXG4gIGNvbXB1dGVkLFxuICBlZmZlY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElvbmljTW9kdWxlIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgTGFuZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9sYW5nLXByb3ZpZGVyL2xhbmctcHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBhcHBseURlZmF1bHRWYWx1ZVRvQ29udHJvbCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC91dGlscy9mb3JtLWRlZmF1bHRzJztcbmltcG9ydCB7IHJlcGxhY2VTcGVjaWFsQ2hhcnMgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvdXRpbHMvdGV4dCc7XG5pbXBvcnQgeyBJbnB1dE1ldGFkYXRhLCBJbnB1dE9wdGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXNlbGVjdC1zZWFyY2gnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJb25pY01vZHVsZSwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGVdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJzZWxlY3QtY29udGFpbmVyXCIgKGNsaWNrKT1cInRvZ2dsZURyb3Bkb3duKCRldmVudClcIj5cbiAgICAgIDwhLS0gTWFpbiBpbnB1dCBkaXNwbGF5IC0tPlxuICAgICAgPGlvbi1pbnB1dFxuICAgICAgICAjbWFpbklucHV0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgW3ZhbHVlXT1cImRpc3BsYXlWYWx1ZSgpXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInByb3BzPy5wbGFjZWhvbGRlciB8fCBwbGFjZWhvbGRlclwiXG4gICAgICAgIHJlYWRvbmx5XG4gICAgICAgIGNsYXNzPVwibWFpbi1pbnB1dFwiXG4gICAgICAgIFtjbGFzcy5pcy1vcGVuXT1cImlzT3BlbigpXCJcbiAgICAgIC8+XG4gICAgICBcbiAgICAgIDwhLS0gRHJvcGRvd24gaWNvbiAtLT5cbiAgICAgIDxpb24taWNvbiBcbiAgICAgICAgbmFtZT1cImNoZXZyb24tZG93bi1vdXRsaW5lXCIgXG4gICAgICAgIGNsYXNzPVwiZHJvcGRvd24taWNvblwiIFxuICAgICAgICBbY2xhc3Mucm90YXRlZF09XCJpc09wZW4oKVwiXG4gICAgICA+PC9pb24taWNvbj5cbiAgICAgIFxuICAgICAgPCEtLSBIaWRkZW4gaW5wdXQgZm9yIGZvcm0gY29udHJvbCAtLT5cbiAgICAgIDxpb24taW5wdXQgXG4gICAgICAgIHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlOyBvcGFjaXR5OiAwOyBwb2ludGVyLWV2ZW50czogbm9uZTtcIiBcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cInByb3BzPy5jb250cm9sXCIgXG4gICAgICAgIHR5cGU9XCJoaWRkZW5cIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gRHJvcGRvd24gb3ZlcmxheSAtLT5cbiAgICA8ZGl2IFxuICAgICAgY2xhc3M9XCJkcm9wZG93bi1vdmVybGF5XCIgXG4gICAgICBbY2xhc3MudmlzaWJsZV09XCJpc09wZW4oKVwiXG4gICAgICAjZHJvcGRvd25cbiAgICA+XG4gICAgICA8IS0tIERlYnVnIGJ1dHRvbiAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtY29udGFpbmVyXCIgc3R5bGU9XCJiYWNrZ3JvdW5kOiByZWQ7IGNvbG9yOiB3aGl0ZTsgcGFkZGluZzogNHB4O1wiPlxuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJkZWJ1Z09wdGlvbnMoKVwiPkRFQlVHOiB7eyBmaWx0ZXJlZE9wdGlvbnMoKS5sZW5ndGggfX0gb3BjaW9uZXM8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgXG4gICAgICA8IS0tIFNlYXJjaCBiYXIgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWNvbnRhaW5lclwiICpuZ0lmPVwicHJvcHM/Lm9wdGlvbnMgJiYgcHJvcHMub3B0aW9ucy5sZW5ndGggPiA1XCI+XG4gICAgICAgIDxpb24tc2VhcmNoYmFyXG4gICAgICAgICAgI3NlYXJjaGJhclxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInQnVzY2FyJ1wiXG4gICAgICAgICAgKGlvbklucHV0KT1cIm9uU2VhcmNoKCRldmVudClcIlxuICAgICAgICAgIFt2YWx1ZV09XCJzZWFyY2hUZXJtKClcIlxuICAgICAgICAgIHNob3ctY2xlYXItYnV0dG9uPVwiZm9jdXNcIlxuICAgICAgICAgIFtkZWJvdW5jZV09XCIyMDBcIlxuICAgICAgICA+PC9pb24tc2VhcmNoYmFyPlxuICAgICAgPC9kaXY+XG4gICAgICBcbiAgICAgIDwhLS0gT3B0aW9ucyBsaXN0IC0tPlxuICAgICAgPGRpdiBjbGFzcz1cIm9wdGlvbnMtY29udGFpbmVyXCI+XG4gICAgICAgIDxpb24tbGlzdCBjbGFzcz1cIm9wdGlvbnMtbGlzdFwiPlxuICAgICAgICAgIDxpb24taXRlbSBcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZmlsdGVyZWRPcHRpb25zKCk7IHRyYWNrQnk6IHRyYWNrQnlGblwiIFxuICAgICAgICAgICAgYnV0dG9uIFxuICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE9wdGlvbihvcHRpb24pXCJcbiAgICAgICAgICAgIGNsYXNzPVwib3B0aW9uLWl0ZW1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpb24tbGFiZWw+e3sgb3B0aW9uW2xhYmVsUHJvcGVydHldIH19PC9pb24tbGFiZWw+XG4gICAgICAgICAgICA8aW9uLWljb24gXG4gICAgICAgICAgICAgICpuZ0lmPVwiaXNTZWxlY3RlZChvcHRpb24pXCIgXG4gICAgICAgICAgICAgIG5hbWU9XCJjaGVja21hcmstb3V0bGluZVwiIFxuICAgICAgICAgICAgICBzbG90PVwiZW5kXCIgXG4gICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICA+PC9pb24taWNvbj5cbiAgICAgICAgICA8L2lvbi1pdGVtPlxuICAgICAgICAgIFxuICAgICAgICAgIDwhLS0gTm8gcmVzdWx0cyBtZXNzYWdlIC0tPlxuICAgICAgICAgIDxpb24taXRlbSAqbmdJZj1cImZpbHRlcmVkT3B0aW9ucygpLmxlbmd0aCA9PT0gMFwiIGNsYXNzPVwibm8tcmVzdWx0c1wiPlxuICAgICAgICAgICAgPGlvbi1sYWJlbCBjb2xvcj1cIm1lZGl1bVwiPlxuICAgICAgICAgICAgICB7eyBzZWFyY2hUZXJtKCkgPyAnTm8gc2UgZW5jb250cmFyb24gcmVzdWx0YWRvcycgOiAnTm8gaGF5IG9wY2lvbmVzIGRpc3BvbmlibGVzJyB9fVxuICAgICAgICAgICAgICA8IS0tIERlYnVnIGluZm8gLS0+XG4gICAgICAgICAgICAgIDxicj48c21hbGw+RGVidWc6IHt7IGZpbHRlcmVkT3B0aW9ucygpLmxlbmd0aCB9fSBvcGNpb25lcyB8IFByb3BzOiB7eyAhIXByb3BzIH19IHwgU2VhcmNoOiBcInt7IHNlYXJjaFRlcm0oKSB9fVwiPC9zbWFsbD5cbiAgICAgICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgICAgIDwvaW9uLWl0ZW0+XG4gICAgICAgIDwvaW9uLWxpc3Q+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0LXNlYXJjaC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdFNlYXJjaENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICBAVmlld0NoaWxkKCdkcm9wZG93bicpIGRyb3Bkb3duUmVmITogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnbWFpbklucHV0JykgbWFpbklucHV0UmVmITogRWxlbWVudFJlZjtcblxuICBASW5wdXQoKSBwcm9wcyE6IElucHV0TWV0YWRhdGE7XG4gIEBJbnB1dCgpIGxhYmVsUHJvcGVydHk6IHN0cmluZyA9ICduYW1lJztcbiAgQElucHV0KCkgdmFsdWVQcm9wZXJ0eTogc3RyaW5nID0gJ2lkJztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xuXG4gIHByaXZhdGUgbGFuZ1NlcnZpY2UgPSBpbmplY3QoTGFuZ1NlcnZpY2UpO1xuICBcbiAgLy8gU2lnbmFscyBmb3IgcmVhY3RpdmUgc3RhdGUgbWFuYWdlbWVudFxuICBpc09wZW4gPSBzaWduYWwoZmFsc2UpO1xuICBzZWFyY2hUZXJtID0gc2lnbmFsKCcnKTtcbiAgc2VsZWN0ZWRWYWx1ZSA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAgXG4gIC8vIEZvcmNlIG9wdGlvbnMgdG8gYmUgcmVhY3RpdmVcbiAgb3B0aW9uc1NpZ25hbCA9IHNpZ25hbDxJbnB1dE9wdGlvbltdPihbXSk7XG4gIFxuICAvLyBDb21wdXRlZCBzaWduYWxzXG4gIGRpc3BsYXlWYWx1ZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuc2VsZWN0ZWRWYWx1ZSgpO1xuICAgIGlmICghdmFsdWUpIHJldHVybiAnJztcbiAgICBcbiAgICBjb25zdCBvcHRpb24gPSB0aGlzLmdldE9wdGlvbkJ5VmFsdWUodmFsdWUpO1xuICAgIHJldHVybiBvcHRpb24gPyBvcHRpb25bdGhpcy5sYWJlbFByb3BlcnR5XSA6ICcnO1xuICB9KTtcblxuICBmaWx0ZXJlZE9wdGlvbnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgLy8gVXNlIHNpZ25hbCBpbnN0ZWFkIG9mIHByb3BzIGRpcmVjdGx5XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMub3B0aW9uc1NpZ25hbCgpO1xuICAgIGNvbnN0IHNlYXJjaCA9IHRoaXMuc2VhcmNoVGVybSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgXG4gICAgLy8gRGVidWcgbWVqb3JhZG9cbiAgICBjb25zb2xlLmxvZygnW1NlbGVjdFNlYXJjaF0gZmlsdGVyZWRPcHRpb25zIGNvbXB1dGVkOicsIHtcbiAgICAgIG9wdGlvbnNDb3VudDogb3B0aW9ucy5sZW5ndGgsXG4gICAgICBzZWFyY2hUZXJtOiBzZWFyY2gsXG4gICAgICBvcHRpb25zOiBvcHRpb25zLFxuICAgICAgbGFiZWxQcm9wZXJ0eTogdGhpcy5sYWJlbFByb3BlcnR5LFxuICAgICAgdmFsdWVQcm9wZXJ0eTogdGhpcy52YWx1ZVByb3BlcnR5LFxuICAgICAgcHJvcHNFeGlzdHM6ICEhdGhpcy5wcm9wcyxcbiAgICAgIHByb3BzT3B0aW9uc0V4aXN0czogISF0aGlzLnByb3BzPy5vcHRpb25zLFxuICAgICAgcHJvcHNPcHRpb25zTGVuZ3RoOiB0aGlzLnByb3BzPy5vcHRpb25zPy5sZW5ndGggfHwgMCxcbiAgICAgIGZpcnN0T3B0aW9uU3RydWN0dXJlOiBvcHRpb25zWzBdID8ge1xuICAgICAgICBbdGhpcy5sYWJlbFByb3BlcnR5XTogb3B0aW9uc1swXVt0aGlzLmxhYmVsUHJvcGVydHldLFxuICAgICAgICBbdGhpcy52YWx1ZVByb3BlcnR5XTogb3B0aW9uc1swXVt0aGlzLnZhbHVlUHJvcGVydHldLFxuICAgICAgICB0eXBlT2ZJZDogdHlwZW9mIG9wdGlvbnNbMF1bdGhpcy52YWx1ZVByb3BlcnR5XSxcbiAgICAgICAgZnVsbE9wdGlvbjogb3B0aW9uc1swXVxuICAgICAgfSA6ICdOT19PUFRJT05TJ1xuICAgIH0pO1xuICAgIFxuICAgIGlmICghc2VhcmNoKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucztcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIG9wdGlvbnMuZmlsdGVyKG9wdGlvbiA9PiB7XG4gICAgICBjb25zdCBsYWJlbCA9IG9wdGlvblt0aGlzLmxhYmVsUHJvcGVydHldXG4gICAgICAgID8gcmVwbGFjZVNwZWNpYWxDaGFycyhTdHJpbmcob3B0aW9uW3RoaXMubGFiZWxQcm9wZXJ0eV0pLnRvTG93ZXJDYXNlKCkpXG4gICAgICAgIDogJyc7XG4gICAgICBjb25zdCB2YWx1ZSA9IG9wdGlvblt0aGlzLnZhbHVlUHJvcGVydHldXG4gICAgICAgID8gcmVwbGFjZVNwZWNpYWxDaGFycyhTdHJpbmcob3B0aW9uW3RoaXMudmFsdWVQcm9wZXJ0eV0pLnRvTG93ZXJDYXNlKCkpXG4gICAgICAgIDogJyc7XG4gICAgICBjb25zdCBzZWFyY2hUZXJtID0gcmVwbGFjZVNwZWNpYWxDaGFycyhzZWFyY2gpO1xuICAgICAgcmV0dXJuIGxhYmVsLmluY2x1ZGVzKHNlYXJjaFRlcm0pIHx8IHZhbHVlLmluY2x1ZGVzKHNlYXJjaFRlcm0pO1xuICAgIH0pO1xuICB9KTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gdGhpcy5sYW5nU2VydmljZS5nZXRUZXh0KCdfZ2xvYmFsJywgJ3NlbGVjdE9wdGlvbicsICdTZWxlY2Npb25lIHVuYSBvcGNpw7NuJyk7XG4gICAgXG4gICAgLy8gQ2xvc2UgZHJvcGRvd24gd2hlbiBjbGlja2luZyBvdXRzaWRlXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmhhbmRsZUNsaWNrT3V0c2lkZS5iaW5kKHRoaXMpKTtcbiAgICBcbiAgICAvLyBEZWJ1ZyBlZmZlY3QgdG8gdHJhY2sgd2hlbiBmaWx0ZXJlZE9wdGlvbnMgY2hhbmdlc1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5maWx0ZXJlZE9wdGlvbnMoKTtcbiAgICAgIGNvbnNvbGUubG9nKCdbU2VsZWN0U2VhcmNoXSBFRkZFQ1QgLSBmaWx0ZXJlZE9wdGlvbnMgY2hhbmdlZDonLCB7XG4gICAgICAgIG9wdGlvbnNDb3VudDogb3B0aW9ucy5sZW5ndGgsXG4gICAgICAgIG9wdGlvbnM6IG9wdGlvbnMsXG4gICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0xvY2FsZVRpbWVTdHJpbmcoKVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zb2xlLmxvZygnW1NlbGVjdFNlYXJjaF0gbmdPbkluaXQ6Jywge1xuICAgICAgcHJvcHM6ICEhdGhpcy5wcm9wcyxcbiAgICAgIG9wdGlvbnM6IHRoaXMucHJvcHM/Lm9wdGlvbnM/Lmxlbmd0aCB8fCAwLFxuICAgICAgY29udHJvbDogISF0aGlzLnByb3BzPy5jb250cm9sXG4gICAgfSk7XG4gICAgXG4gICAgLy8gVXBkYXRlIG9wdGlvbnMgc2lnbmFsXG4gICAgaWYgKHRoaXMucHJvcHM/Lm9wdGlvbnMpIHtcbiAgICAgIHRoaXMub3B0aW9uc1NpZ25hbC5zZXQodGhpcy5wcm9wcy5vcHRpb25zKTtcbiAgICB9XG4gICAgXG4gICAgdGhpcy5hcHBseURlZmF1bHRWYWx1ZSgpO1xuICAgIHRoaXMuc3luY1NlbGVjdGVkVmFsdWUoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5oYW5kbGVDbGlja091dHNpZGUuYmluZCh0aGlzKSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgY29uc29sZS5sb2coJ1tTZWxlY3RTZWFyY2hdIG5nT25DaGFuZ2VzOicsIHtcbiAgICAgIGhhc1Byb3BzQ2hhbmdlOiAhIWNoYW5nZXNbJ3Byb3BzJ10sXG4gICAgICBwcm9wczogISF0aGlzLnByb3BzLFxuICAgICAgb3B0aW9uczogdGhpcy5wcm9wcz8ub3B0aW9ucz8ubGVuZ3RoIHx8IDAsXG4gICAgICBwcm9wc09wdGlvbnM6IHRoaXMucHJvcHM/Lm9wdGlvbnNcbiAgICB9KTtcbiAgICBcbiAgICBpZiAoY2hhbmdlc1sncHJvcHMnXSAmJiB0aGlzLnByb3BzKSB7XG4gICAgICAvLyBVcGRhdGUgb3B0aW9ucyBzaWduYWwgd2hlbiBwcm9wcyBjaGFuZ2VcbiAgICAgIGlmICh0aGlzLnByb3BzLm9wdGlvbnMpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ1tTZWxlY3RTZWFyY2hdIFVwZGF0aW5nIG9wdGlvbnNTaWduYWwgd2l0aDonLCB0aGlzLnByb3BzLm9wdGlvbnMpO1xuICAgICAgICB0aGlzLm9wdGlvbnNTaWduYWwuc2V0KHRoaXMucHJvcHMub3B0aW9ucyk7XG4gICAgICB9XG4gICAgICB0aGlzLnN5bmNTZWxlY3RlZFZhbHVlKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gQ29tcG9uZW50IG1ldGhvZHNcbiAgdG9nZ2xlRHJvcGRvd24oZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5pc09wZW4udXBkYXRlKHZhbHVlID0+ICF2YWx1ZSk7XG4gICAgXG4gICAgaWYgKHRoaXMuaXNPcGVuKCkpIHtcbiAgICAgIC8vIEZvY3VzIHNlYXJjaCBiYXIgd2hlbiBvcGVuaW5nIGlmIGF2YWlsYWJsZVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHNlYXJjaGJhciA9IHRoaXMuZHJvcGRvd25SZWY/Lm5hdGl2ZUVsZW1lbnQ/LnF1ZXJ5U2VsZWN0b3IoJ2lvbi1zZWFyY2hiYXInKTtcbiAgICAgICAgaWYgKHNlYXJjaGJhcikge1xuICAgICAgICAgIHNlYXJjaGJhci5zZXRGb2N1cygpO1xuICAgICAgICB9XG4gICAgICB9LCAxMDApO1xuICAgIH1cbiAgfVxuXG4gIG9uU2VhcmNoKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaFRlcm0uc2V0KGV2ZW50LmRldGFpbC52YWx1ZSB8fCAnJyk7XG4gIH1cblxuICBzZWxlY3RPcHRpb24ob3B0aW9uOiBJbnB1dE9wdGlvbik6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlID0gU3RyaW5nKG9wdGlvblt0aGlzLnZhbHVlUHJvcGVydHldKTsgLy8gQ29udmVydGlyIGEgc3RyaW5nXG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlLnNldCh2YWx1ZSk7XG4gICAgdGhpcy5pc09wZW4uc2V0KGZhbHNlKTtcbiAgICB0aGlzLnNlYXJjaFRlcm0uc2V0KCcnKTtcbiAgICBcbiAgICAvLyBVcGRhdGUgZm9ybSBjb250cm9sXG4gICAgaWYgKHRoaXMucHJvcHM/LmNvbnRyb2wpIHtcbiAgICAgIHRoaXMucHJvcHMuY29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICB0aGlzLnByb3BzLmNvbnRyb2wubWFya0FzRGlydHkoKTtcbiAgICAgIHRoaXMucHJvcHMuY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgfVxuICB9XG5cbiAgaXNTZWxlY3RlZChvcHRpb246IElucHV0T3B0aW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFN0cmluZyh0aGlzLnNlbGVjdGVkVmFsdWUoKSkgPT09IFN0cmluZyhvcHRpb25bdGhpcy52YWx1ZVByb3BlcnR5XSk7XG4gIH1cblxuICB0cmFja0J5Rm4oX2luZGV4OiBudW1iZXIsIG9wdGlvbjogSW5wdXRPcHRpb24pOiBhbnkge1xuICAgIHJldHVybiBvcHRpb25bdGhpcy52YWx1ZVByb3BlcnR5XTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQ2xpY2tPdXRzaWRlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzT3BlbigpICYmIFxuICAgICAgICAhdGhpcy5tYWluSW5wdXRSZWY/Lm5hdGl2ZUVsZW1lbnQ/LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgJiZcbiAgICAgICAgIXRoaXMuZHJvcGRvd25SZWY/Lm5hdGl2ZUVsZW1lbnQ/LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIHRoaXMuaXNPcGVuLnNldChmYWxzZSk7XG4gICAgICB0aGlzLnNlYXJjaFRlcm0uc2V0KCcnKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldE9wdGlvbkJ5VmFsdWUodmFsdWU6IHN0cmluZyk6IElucHV0T3B0aW9uIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zU2lnbmFsKCkuZmluZChvcHRpb24gPT4gXG4gICAgICBTdHJpbmcob3B0aW9uW3RoaXMudmFsdWVQcm9wZXJ0eV0pID09PSBTdHJpbmcodmFsdWUpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlEZWZhdWx0VmFsdWUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJvcHMpIHtcbiAgICAgIGFwcGx5RGVmYXVsdFZhbHVlVG9Db250cm9sKHRoaXMucHJvcHMpO1xuICAgIH1cbiAgfVxuXG4gIGRlYnVnT3B0aW9ucygpOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZygnW1NlbGVjdFNlYXJjaF0gREVCVUcgQ0xJQ0s6Jywge1xuICAgICAgcHJvcHM6IHRoaXMucHJvcHMsXG4gICAgICBmaWx0ZXJlZE9wdGlvbnM6IHRoaXMuZmlsdGVyZWRPcHRpb25zKCksXG4gICAgICBzZWFyY2hUZXJtOiB0aGlzLnNlYXJjaFRlcm0oKSxcbiAgICAgIHByb3BzT3B0aW9uczogdGhpcy5wcm9wcz8ub3B0aW9ucyxcbiAgICAgIGNvbXB1dGVkOiB0aGlzLmZpbHRlcmVkT3B0aW9ucygpXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHN5bmNTZWxlY3RlZFZhbHVlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByb3BzPy5jb250cm9sPy52YWx1ZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlLnNldChTdHJpbmcodGhpcy5wcm9wcy5jb250cm9sLnZhbHVlKSk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { EventEmitter, Component, Input, Output, Injectable, inject, InjectionToken, Inject, ChangeDetectorRef, HostListener, Pipe, ChangeDetectionStrategy, ViewChild, signal, computed, forwardRef } from '@angular/core';
2
+ import { EventEmitter, Component, Input, Output, Injectable, inject, InjectionToken, Inject, ChangeDetectorRef, HostListener, Pipe, ChangeDetectionStrategy, ViewChild, signal, computed, forwardRef, effect } from '@angular/core';
3
3
  import { IonAvatar, IonCard, IonIcon, IonButton, IonSpinner, IonText, IonModal, IonHeader, IonToolbar, IonContent, IonButtons, IonTitle, IonProgressBar, IonCardContent, IonCardHeader, IonCardTitle, IonCardSubtitle, IonCheckbox, IonTextarea, IonDatetime, IonDatetimeButton, IonInput, IonSelect, IonSelectOption, IonLabel, IonSearchbar, IonRadioGroup, IonRadio, IonMenuButton, IonFooter, IonList, IonListHeader, IonNote, IonItem } from '@ionic/angular/standalone';
4
4
  import * as i1 from '@angular/common';
5
5
  import { CommonModule, NgStyle, Location, AsyncPipe, NgFor, NgClass } from '@angular/common';
@@ -6769,6 +6769,8 @@ class SelectSearchComponent {
6769
6769
  this.isOpen = signal(false);
6770
6770
  this.searchTerm = signal('');
6771
6771
  this.selectedValue = signal(null);
6772
+ // Force options to be reactive
6773
+ this.optionsSignal = signal([]);
6772
6774
  // Computed signals
6773
6775
  this.displayValue = computed(() => {
6774
6776
  const value = this.selectedValue();
@@ -6778,20 +6780,25 @@ class SelectSearchComponent {
6778
6780
  return option ? option[this.labelProperty] : '';
6779
6781
  });
6780
6782
  this.filteredOptions = computed(() => {
6781
- const options = this.props?.options || [];
6783
+ // Use signal instead of props directly
6784
+ const options = this.optionsSignal();
6782
6785
  const search = this.searchTerm().toLowerCase();
6783
6786
  // Debug mejorado
6784
6787
  console.log('[SelectSearch] filteredOptions computed:', {
6785
6788
  optionsCount: options.length,
6786
6789
  searchTerm: search,
6787
- options: options.slice(0, 3),
6790
+ options: options,
6788
6791
  labelProperty: this.labelProperty,
6789
6792
  valueProperty: this.valueProperty,
6793
+ propsExists: !!this.props,
6794
+ propsOptionsExists: !!this.props?.options,
6795
+ propsOptionsLength: this.props?.options?.length || 0,
6790
6796
  firstOptionStructure: options[0] ? {
6791
6797
  [this.labelProperty]: options[0][this.labelProperty],
6792
6798
  [this.valueProperty]: options[0][this.valueProperty],
6793
- typeOfId: typeof options[0][this.valueProperty]
6794
- } : null
6799
+ typeOfId: typeof options[0][this.valueProperty],
6800
+ fullOption: options[0]
6801
+ } : 'NO_OPTIONS'
6795
6802
  });
6796
6803
  if (!search) {
6797
6804
  return options;
@@ -6810,8 +6817,26 @@ class SelectSearchComponent {
6810
6817
  this.placeholder = this.langService.getText('_global', 'selectOption', 'Seleccione una opción');
6811
6818
  // Close dropdown when clicking outside
6812
6819
  document.addEventListener('click', this.handleClickOutside.bind(this));
6820
+ // Debug effect to track when filteredOptions changes
6821
+ effect(() => {
6822
+ const options = this.filteredOptions();
6823
+ console.log('[SelectSearch] EFFECT - filteredOptions changed:', {
6824
+ optionsCount: options.length,
6825
+ options: options,
6826
+ timestamp: new Date().toLocaleTimeString()
6827
+ });
6828
+ });
6813
6829
  }
6814
6830
  ngOnInit() {
6831
+ console.log('[SelectSearch] ngOnInit:', {
6832
+ props: !!this.props,
6833
+ options: this.props?.options?.length || 0,
6834
+ control: !!this.props?.control
6835
+ });
6836
+ // Update options signal
6837
+ if (this.props?.options) {
6838
+ this.optionsSignal.set(this.props.options);
6839
+ }
6815
6840
  this.applyDefaultValue();
6816
6841
  this.syncSelectedValue();
6817
6842
  }
@@ -6819,7 +6844,18 @@ class SelectSearchComponent {
6819
6844
  document.removeEventListener('click', this.handleClickOutside.bind(this));
6820
6845
  }
6821
6846
  ngOnChanges(changes) {
6847
+ console.log('[SelectSearch] ngOnChanges:', {
6848
+ hasPropsChange: !!changes['props'],
6849
+ props: !!this.props,
6850
+ options: this.props?.options?.length || 0,
6851
+ propsOptions: this.props?.options
6852
+ });
6822
6853
  if (changes['props'] && this.props) {
6854
+ // Update options signal when props change
6855
+ if (this.props.options) {
6856
+ console.log('[SelectSearch] Updating optionsSignal with:', this.props.options);
6857
+ this.optionsSignal.set(this.props.options);
6858
+ }
6823
6859
  this.syncSelectedValue();
6824
6860
  }
6825
6861
  }
@@ -6867,13 +6903,22 @@ class SelectSearchComponent {
6867
6903
  }
6868
6904
  }
6869
6905
  getOptionByValue(value) {
6870
- return this.props?.options?.find(option => String(option[this.valueProperty]) === String(value));
6906
+ return this.optionsSignal().find(option => String(option[this.valueProperty]) === String(value));
6871
6907
  }
6872
6908
  applyDefaultValue() {
6873
6909
  if (this.props) {
6874
6910
  applyDefaultValueToControl(this.props);
6875
6911
  }
6876
6912
  }
6913
+ debugOptions() {
6914
+ console.log('[SelectSearch] DEBUG CLICK:', {
6915
+ props: this.props,
6916
+ filteredOptions: this.filteredOptions(),
6917
+ searchTerm: this.searchTerm(),
6918
+ propsOptions: this.props?.options,
6919
+ computed: this.filteredOptions()
6920
+ });
6921
+ }
6877
6922
  syncSelectedValue() {
6878
6923
  if (this.props?.control?.value) {
6879
6924
  this.selectedValue.set(String(this.props.control.value));
@@ -6914,6 +6959,11 @@ class SelectSearchComponent {
6914
6959
  [class.visible]="isOpen()"
6915
6960
  #dropdown
6916
6961
  >
6962
+ <!-- Debug button -->
6963
+ <div class="search-container" style="background: red; color: white; padding: 4px;">
6964
+ <button (click)="debugOptions()">DEBUG: {{ filteredOptions().length }} opciones</button>
6965
+ </div>
6966
+
6917
6967
  <!-- Search bar -->
6918
6968
  <div class="search-container" *ngIf="props?.options && props.options.length > 5">
6919
6969
  <ion-searchbar
@@ -6948,6 +6998,8 @@ class SelectSearchComponent {
6948
6998
  <ion-item *ngIf="filteredOptions().length === 0" class="no-results">
6949
6999
  <ion-label color="medium">
6950
7000
  {{ searchTerm() ? 'No se encontraron resultados' : 'No hay opciones disponibles' }}
7001
+ <!-- Debug info -->
7002
+ <br><small>Debug: {{ filteredOptions().length }} opciones | Props: {{ !!props }} | Search: "{{ searchTerm() }}"</small>
6951
7003
  </ion-label>
6952
7004
  </ion-item>
6953
7005
  </ion-list>
@@ -6991,6 +7043,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
6991
7043
  [class.visible]="isOpen()"
6992
7044
  #dropdown
6993
7045
  >
7046
+ <!-- Debug button -->
7047
+ <div class="search-container" style="background: red; color: white; padding: 4px;">
7048
+ <button (click)="debugOptions()">DEBUG: {{ filteredOptions().length }} opciones</button>
7049
+ </div>
7050
+
6994
7051
  <!-- Search bar -->
6995
7052
  <div class="search-container" *ngIf="props?.options && props.options.length > 5">
6996
7053
  <ion-searchbar
@@ -7025,6 +7082,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
7025
7082
  <ion-item *ngIf="filteredOptions().length === 0" class="no-results">
7026
7083
  <ion-label color="medium">
7027
7084
  {{ searchTerm() ? 'No se encontraron resultados' : 'No hay opciones disponibles' }}
7085
+ <!-- Debug info -->
7086
+ <br><small>Debug: {{ filteredOptions().length }} opciones | Props: {{ !!props }} | Search: "{{ searchTerm() }}"</small>
7028
7087
  </ion-label>
7029
7088
  </ion-item>
7030
7089
  </ion-list>