@sebgroup/green-angular 1.0.0-beta.20 → 1.0.0-beta.23

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.
@@ -4,7 +4,6 @@ import * as i1 from '@angular/common';
4
4
  import { CommonModule } from '@angular/common';
5
5
  import * as i2 from '@angular/router';
6
6
  import { RouterModule } from '@angular/router';
7
- import { __rest } from 'tslib';
8
7
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
9
8
  import { dropdownValues, createDropdown, randomId, months, years, createDatepicker } from '@sebgroup/extract';
10
9
  import { startOfDay, endOfDay } from 'date-fns';
@@ -78,66 +77,48 @@ class NggDropdownComponent {
78
77
  var _a, _b, _c;
79
78
  this.cd = cd;
80
79
  this.loop = false;
81
- this._multiSelect = false;
82
80
  this.options = [];
81
+ this._multiSelect = false;
82
+ this._searchable = false;
83
83
  this.valueChange = new EventEmitter();
84
84
  this.touched = new EventEmitter();
85
85
  this.toggler = (_a = dropdownValues.elements) === null || _a === void 0 ? void 0 : _a.toggler;
86
86
  this.listbox = (_b = dropdownValues.elements) === null || _b === void 0 ? void 0 : _b.listbox;
87
87
  this.fieldset = (_c = dropdownValues.elements) === null || _c === void 0 ? void 0 : _c.fieldset;
88
88
  this.trackByKey = (index, option) => {
89
- return option[''] || option.key;
89
+ var _a;
90
+ return (_a = option.attributes.id) !== null && _a !== void 0 ? _a : '';
90
91
  };
91
92
  }
92
93
  set multiSelect(value) {
93
- this._multiSelect =
94
- value === '' || value === 'true' || value.toString() === 'true' || false;
94
+ this._multiSelect = this.convertToBoolean(value);
95
95
  }
96
96
  get multiSelect() {
97
97
  return this._multiSelect;
98
98
  }
99
- get value() {
100
- return this._value;
99
+ set searchable(value) {
100
+ this._searchable = this.convertToBoolean(value);
101
+ }
102
+ get searchable() {
103
+ return this._searchable;
101
104
  }
102
105
  set value(newValue) {
103
106
  this.setSelectionByValue(newValue);
104
107
  }
108
+ get value() {
109
+ return this._value;
110
+ }
105
111
  ngAfterViewInit() {
106
112
  var _a, _b, _c;
107
113
  if (((_a = this.togglerRef) === null || _a === void 0 ? void 0 : _a.nativeElement) && ((_b = this.listboxRef) === null || _b === void 0 ? void 0 : _b.nativeElement)) {
108
114
  this.handler = createDropdown(this.props, this.togglerRef.nativeElement, this.listboxRef.nativeElement, (_c = this.fieldsetRef) === null || _c === void 0 ? void 0 : _c.nativeElement, (dropdown) => {
109
- var _a, _b;
110
115
  this.dropdown = dropdown;
111
116
  this.toggler = dropdown.elements.toggler;
112
117
  this.listbox = dropdown.elements.listbox;
113
118
  this.fieldset = dropdown.elements.fieldset;
114
- // TODO: refactor state handling to only emit value changes when value changes (not on state change), perhaps using rxjs?
115
- if (!dropdown.isMultiSelect) {
116
- let selectedOption = (_a = this.dropdown.options) === null || _a === void 0 ? void 0 : _a.find((option) => option.selected);
117
- if ((selectedOption && !this._value) ||
118
- (selectedOption &&
119
- selectedOption[dropdown.useValue] !==
120
- this._value[dropdown.useValue])) {
121
- const { attributes, classes, active, selected } = selectedOption, data = __rest(selectedOption, ["attributes", "classes", "active", "selected"]);
122
- selectedOption = dropdown.selectValue
123
- ? data[dropdown.selectValue]
124
- : data;
125
- this.updateValue(selectedOption);
126
- }
127
- }
128
- else {
129
- const selectedOption = (_b = this.dropdown.options) === null || _b === void 0 ? void 0 : _b.filter((option) => option.selected).map((option) => {
130
- const { attributes, classes, active, selected } = option, data = __rest(option, ["attributes", "classes", "active", "selected"]);
131
- return dropdown.selectValue ? data[dropdown.selectValue] : data;
132
- });
133
- if ((this._value !== undefined || (selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.length) > 0) &&
134
- this._value !== [] &&
135
- selectedOption &&
136
- JSON.stringify(this._value) !== JSON.stringify(selectedOption)) {
137
- this.updateValue(selectedOption);
138
- }
139
- }
140
119
  this.cd.detectChanges();
120
+ }, (value) => {
121
+ this.updateValue(value);
141
122
  });
142
123
  }
143
124
  }
@@ -160,6 +141,10 @@ class NggDropdownComponent {
160
141
  registerOnTouched(fn) {
161
142
  this.onTouchedFn = fn;
162
143
  }
144
+ search($event) {
145
+ var _a;
146
+ (_a = this.handler) === null || _a === void 0 ? void 0 : _a.search($event.target.value);
147
+ }
163
148
  get props() {
164
149
  var _a;
165
150
  return {
@@ -167,11 +152,13 @@ class NggDropdownComponent {
167
152
  texts: this.texts,
168
153
  useValue: this.useValue,
169
154
  display: this.display,
170
- selectValue: this.selectValue,
171
155
  options: this.options,
172
156
  loop: this.loop,
173
157
  value: this.value,
174
158
  multiSelect: this.multiSelect,
159
+ searchable: this.searchable,
160
+ searchFilter: this.searchFilter,
161
+ compareWith: this.compareWith,
175
162
  onTouched: () => {
176
163
  var _a;
177
164
  (_a = this.onTouchedFn) === null || _a === void 0 ? void 0 : _a.call(this);
@@ -192,293 +179,33 @@ class NggDropdownComponent {
192
179
  if (this._value !== value && value !== undefined) {
193
180
  this._value = value;
194
181
  const valueKey = (_b = this.handler) === null || _b === void 0 ? void 0 : _b.dropdown.useValue;
195
- const selected = (_d = (_c = this.handler) === null || _c === void 0 ? void 0 : _c.dropdown) === null || _d === void 0 ? void 0 : _d.options.find((option) => option[valueKey] === value[valueKey] || option[valueKey] === value);
182
+ const selected = (_d = (_c = this.handler) === null || _c === void 0 ? void 0 : _c.dropdown) === null || _d === void 0 ? void 0 : _d.options.find((option) => { var _a; return (_a = this.dropdown) === null || _a === void 0 ? void 0 : _a.compareWith(option[valueKey], value); });
196
183
  if (selected)
197
184
  (_e = this.handler) === null || _e === void 0 ? void 0 : _e.select(selected);
198
185
  }
199
186
  }
200
187
  }
188
+ convertToBoolean(value) {
189
+ return (value === '' || value === 'true' || value.toString() === 'true' || false);
190
+ }
201
191
  }
202
192
  NggDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: NggDropdownComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
203
- NggDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: NggDropdownComponent, selector: "ngg-dropdown", inputs: { id: "id", texts: "texts", loop: "loop", display: "display", selectValue: "selectValue", useValue: "useValue", multiSelect: "multiSelect", label: "label", options: "options", valid: "valid", invalid: "invalid", value: "value" }, outputs: { valueChange: "valueChange", touched: "touched" }, providers: [
193
+ NggDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: NggDropdownComponent, selector: "ngg-dropdown", inputs: { id: "id", texts: "texts", loop: "loop", display: "display", useValue: "useValue", label: "label", options: "options", valid: "valid", invalid: "invalid", compareWith: "compareWith", searchFilter: "searchFilter", multiSelect: "multiSelect", searchable: "searchable", value: "value" }, outputs: { valueChange: "valueChange", touched: "touched" }, providers: [
204
194
  {
205
195
  provide: NG_VALUE_ACCESSOR,
206
196
  useExisting: NggDropdownComponent,
207
197
  multi: true,
208
198
  },
209
- ], queries: [{ propertyName: "customOption", first: true, predicate: NggDropdownOptionDirective, descendants: true }], viewQueries: [{ propertyName: "togglerRef", first: true, predicate: ["togglerRef"], descendants: true }, { propertyName: "listboxRef", first: true, predicate: ["listboxRef"], descendants: true }, { propertyName: "fieldsetRef", first: true, predicate: ["fieldsetRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
210
- <div>
211
- <span
212
- class="label"
213
- *ngIf="label"
214
- [id]="toggler?.attributes?.id + '_label'"
215
- >{{ label }}</span
216
- >
217
- <button
218
- [attr.aria-labelledby]="
219
- label ? toggler?.attributes?.id + '_label' : null
220
- "
221
- [attr.aria-describedby]="
222
- formInfo?.textContent && (formInfo?.textContent?.length ?? 0 > 0)
223
- ? toggler?.attributes?.id + '_info'
224
- : null
225
- "
226
- type="button"
227
- #togglerRef
228
- [id]="toggler?.attributes?.id"
229
- [attr.aria-haspopup]="toggler?.attributes?.['aria-haspopup']"
230
- [attr.aria-expanded]="toggler?.attributes?.['aria-expanded']"
231
- [attr.aria-owns]="toggler?.attributes?.['aria-owns']"
232
- [tabindex]="toggler?.attributes?.tabIndex"
233
- [style]="toggler?.attributes?.style"
234
- [class]="toggler?.classes"
235
- (click)="handler?.toggle()"
236
- [class.is-valid]="valid"
237
- [class.is-invalid]="invalid"
238
- >
239
- <span>{{
240
- dropdown?.texts?.select || dropdown?.texts?.placeholder
241
- }}</span>
242
- </button>
243
- <span
244
- class="form-info"
245
- #formInfo
246
- [attr.id]="toggler?.attributes?.id + '_info'"
247
- ><ng-content select="[data-form-info]"></ng-content
248
- ></span>
249
- <div
250
- #listboxRef
251
- [id]="listbox?.attributes?.id"
252
- [attr.role]="listbox?.attributes?.role"
253
- [attr.aria-activedescendant]="
254
- listbox?.attributes?.['aria-activedescendant']
255
- "
256
- [tabindex]="listbox?.attributes?.tabIndex"
257
- [style]="listbox?.attributes?.style"
258
- [class]="listbox?.classes"
259
- >
260
- <button
261
- type="button"
262
- class="close m-4 m-sm-2 d-block d-sm-none"
263
- (click)="handler?.close()"
264
- >
265
- <span class="sr-only">{{ dropdown?.texts?.close }}</span>
266
- </button>
267
- <ul role="listbox" *ngIf="!dropdown?.isMultiSelect">
268
- <li
269
- *ngFor="
270
- let option of dropdown?.options;
271
- let index = index;
272
- trackBy: trackByKey
273
- "
274
- [id]="option.attributes.id"
275
- [attr.role]="option.attributes.role"
276
- [attr.aria-selected]="option.attributes['aria-selected']"
277
- [style]="option.attributes.style"
278
- [class]="option.classes"
279
- (click)="handler?.select(option)"
280
- >
281
- <ng-container
282
- *ngTemplateOutlet="
283
- customOption?.templateRef
284
- ? customOption!.templateRef
285
- : defaultOption;
286
- context: { option: option, index: index }
287
- "
288
- ></ng-container>
289
- </li>
290
- </ul>
291
- <div *ngIf="dropdown?.isMultiSelect" class="sg-fieldset-container">
292
- <fieldset
293
- #fieldsetRef
294
- [attr.aria-describedby]="fieldset?.attributes?.id"
295
- role="listbox"
296
- tabIndex="-1"
297
- aria-multiselectable="true"
298
- >
299
- <legend class="sr-only" [id]="fieldset?.attributes?.id">
300
- Options
301
- </legend>
302
- <label
303
- class="form-control"
304
- [attr.role]="option.attributes.role"
305
- [id]="option.attributes.id"
306
- [attr.aria-selected]="option.attributes['aria-selected']"
307
- [class]="option.classes"
308
- *ngFor="
309
- let option of dropdown?.options;
310
- let index = index;
311
- trackBy: trackByKey
312
- "
313
- >
314
- <input
315
- type="checkbox"
316
- (change)="handler?.select(option, false)"
317
- [checked]="option.selected"
318
- tabIndex="-1"
319
- />
320
- <ng-container
321
- *ngTemplateOutlet="
322
- customOption?.templateRef
323
- ? customOption!.templateRef
324
- : defaultOption;
325
- context: { option: option, index: index }
326
- "
327
- ></ng-container>
328
- <i></i>
329
- </label>
330
- </fieldset>
331
- </div>
332
- </div>
333
- </div>
334
-
335
- <ng-template #defaultOption let-option="option">
336
- {{ option[dropdown!.display] }}
337
- </ng-template>
338
- `, isInline: true, directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
199
+ ], queries: [{ propertyName: "customOption", first: true, predicate: NggDropdownOptionDirective, descendants: true }], viewQueries: [{ propertyName: "togglerRef", first: true, predicate: ["togglerRef"], descendants: true }, { propertyName: "listboxRef", first: true, predicate: ["listboxRef"], descendants: true }, { propertyName: "fieldsetRef", first: true, predicate: ["fieldsetRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div>\n <span class=\"label\" *ngIf=\"label\" [id]=\"toggler?.attributes?.id + '_label'\">{{\n label\n }}</span>\n <button\n [attr.aria-labelledby]=\"label ? toggler?.attributes?.id + '_label' : null\"\n [attr.aria-describedby]=\"\n formInfo?.textContent && (formInfo?.textContent?.length ?? 0 > 0)\n ? toggler?.attributes?.id + '_info'\n : null\n \"\n type=\"button\"\n #togglerRef\n [id]=\"toggler?.attributes?.id\"\n [attr.aria-haspopup]=\"toggler?.attributes?.['aria-haspopup']\"\n [attr.aria-expanded]=\"toggler?.attributes?.['aria-expanded']\"\n [attr.aria-owns]=\"toggler?.attributes?.['aria-owns']\"\n [tabindex]=\"toggler?.attributes?.tabIndex\"\n [style]=\"toggler?.attributes?.style\"\n [class]=\"toggler?.classes\"\n (click)=\"handler?.toggle()\"\n [class.is-valid]=\"valid\"\n [class.is-invalid]=\"invalid\"\n >\n <span>{{ dropdown?.texts?.select || dropdown?.texts?.placeholder }}</span>\n </button>\n <span\n class=\"form-info\"\n #formInfo\n [attr.id]=\"toggler?.attributes?.id + '_info'\"\n ><ng-content select=\"[data-form-info]\"></ng-content\n ></span>\n <div\n #listboxRef\n [id]=\"listbox?.attributes?.id\"\n [attr.role]=\"listbox?.attributes?.role\"\n [attr.aria-activedescendant]=\"\n listbox?.attributes?.['aria-activedescendant']\n \"\n [tabindex]=\"listbox?.attributes?.tabIndex\"\n [style]=\"listbox?.attributes?.style\"\n [class]=\"listbox?.classes\"\n >\n <button\n type=\"button\"\n class=\"close m-4 m-sm-2 d-block d-sm-none\"\n (click)=\"handler?.close()\"\n >\n <span class=\"sr-only\">{{ dropdown?.texts?.close }}</span>\n </button>\n <ul role=\"listbox\" *ngIf=\"!dropdown?.isMultiSelect\">\n <ng-container *ngTemplateOutlet=\"searchInput\"></ng-container>\n <li\n *ngFor=\"\n let option of dropdown?.options;\n let index = index;\n trackBy: trackByKey\n \"\n [id]=\"option.attributes.id\"\n [attr.role]=\"option.attributes.role\"\n [attr.aria-selected]=\"option.attributes['aria-selected']\"\n [style]=\"option.attributes.style\"\n [class]=\"option.classes\"\n (click)=\"handler?.select(option)\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n customOption?.templateRef\n ? customOption!.templateRef\n : defaultOption;\n context: { option: option, index: index }\n \"\n ></ng-container>\n </li>\n </ul>\n <div *ngIf=\"dropdown?.isMultiSelect\" class=\"sg-fieldset-container\">\n <ng-container *ngTemplateOutlet=\"searchInput\"></ng-container>\n <fieldset\n #fieldsetRef\n [attr.aria-describedby]=\"fieldset?.attributes?.id\"\n role=\"listbox\"\n tabIndex=\"-1\"\n aria-multiselectable=\"true\"\n >\n <legend class=\"sr-only\" [id]=\"fieldset?.attributes?.id\">Options</legend>\n <label\n class=\"form-control\"\n [attr.role]=\"option.attributes.role\"\n [id]=\"option.attributes.id\"\n [attr.aria-selected]=\"option.attributes['aria-selected']\"\n [class]=\"option.classes\"\n *ngFor=\"\n let option of dropdown?.options;\n let index = index;\n trackBy: trackByKey\n \"\n >\n <input\n type=\"checkbox\"\n (change)=\"handler?.select(option, false)\"\n [checked]=\"option.selected\"\n tabIndex=\"-1\"\n />\n <ng-container\n *ngTemplateOutlet=\"\n customOption?.templateRef\n ? customOption!.templateRef\n : defaultOption;\n context: { option: option, index: index }\n \"\n ></ng-container>\n <i></i>\n </label>\n </fieldset>\n </div>\n </div>\n</div>\n\n<ng-template #defaultOption let-option=\"option\">\n {{ option[dropdown!.display] }}\n</ng-template>\n\n<ng-template #searchInput>\n <input\n *ngIf=\"dropdown?.isSearchable\"\n type=\"search\"\n (input)=\"search($event)\"\n placeholder=\"{{ dropdown?.texts?.searchPlaceholder }}\"\n class=\"rounded-0 rounded-top border-0 border-bottom border-info\"\n />\n</ng-template>\n", directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
339
200
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: NggDropdownComponent, decorators: [{
340
201
  type: Component,
341
- args: [{
342
- selector: 'ngg-dropdown',
343
- template: `
344
- <div>
345
- <span
346
- class="label"
347
- *ngIf="label"
348
- [id]="toggler?.attributes?.id + '_label'"
349
- >{{ label }}</span
350
- >
351
- <button
352
- [attr.aria-labelledby]="
353
- label ? toggler?.attributes?.id + '_label' : null
354
- "
355
- [attr.aria-describedby]="
356
- formInfo?.textContent && (formInfo?.textContent?.length ?? 0 > 0)
357
- ? toggler?.attributes?.id + '_info'
358
- : null
359
- "
360
- type="button"
361
- #togglerRef
362
- [id]="toggler?.attributes?.id"
363
- [attr.aria-haspopup]="toggler?.attributes?.['aria-haspopup']"
364
- [attr.aria-expanded]="toggler?.attributes?.['aria-expanded']"
365
- [attr.aria-owns]="toggler?.attributes?.['aria-owns']"
366
- [tabindex]="toggler?.attributes?.tabIndex"
367
- [style]="toggler?.attributes?.style"
368
- [class]="toggler?.classes"
369
- (click)="handler?.toggle()"
370
- [class.is-valid]="valid"
371
- [class.is-invalid]="invalid"
372
- >
373
- <span>{{
374
- dropdown?.texts?.select || dropdown?.texts?.placeholder
375
- }}</span>
376
- </button>
377
- <span
378
- class="form-info"
379
- #formInfo
380
- [attr.id]="toggler?.attributes?.id + '_info'"
381
- ><ng-content select="[data-form-info]"></ng-content
382
- ></span>
383
- <div
384
- #listboxRef
385
- [id]="listbox?.attributes?.id"
386
- [attr.role]="listbox?.attributes?.role"
387
- [attr.aria-activedescendant]="
388
- listbox?.attributes?.['aria-activedescendant']
389
- "
390
- [tabindex]="listbox?.attributes?.tabIndex"
391
- [style]="listbox?.attributes?.style"
392
- [class]="listbox?.classes"
393
- >
394
- <button
395
- type="button"
396
- class="close m-4 m-sm-2 d-block d-sm-none"
397
- (click)="handler?.close()"
398
- >
399
- <span class="sr-only">{{ dropdown?.texts?.close }}</span>
400
- </button>
401
- <ul role="listbox" *ngIf="!dropdown?.isMultiSelect">
402
- <li
403
- *ngFor="
404
- let option of dropdown?.options;
405
- let index = index;
406
- trackBy: trackByKey
407
- "
408
- [id]="option.attributes.id"
409
- [attr.role]="option.attributes.role"
410
- [attr.aria-selected]="option.attributes['aria-selected']"
411
- [style]="option.attributes.style"
412
- [class]="option.classes"
413
- (click)="handler?.select(option)"
414
- >
415
- <ng-container
416
- *ngTemplateOutlet="
417
- customOption?.templateRef
418
- ? customOption!.templateRef
419
- : defaultOption;
420
- context: { option: option, index: index }
421
- "
422
- ></ng-container>
423
- </li>
424
- </ul>
425
- <div *ngIf="dropdown?.isMultiSelect" class="sg-fieldset-container">
426
- <fieldset
427
- #fieldsetRef
428
- [attr.aria-describedby]="fieldset?.attributes?.id"
429
- role="listbox"
430
- tabIndex="-1"
431
- aria-multiselectable="true"
432
- >
433
- <legend class="sr-only" [id]="fieldset?.attributes?.id">
434
- Options
435
- </legend>
436
- <label
437
- class="form-control"
438
- [attr.role]="option.attributes.role"
439
- [id]="option.attributes.id"
440
- [attr.aria-selected]="option.attributes['aria-selected']"
441
- [class]="option.classes"
442
- *ngFor="
443
- let option of dropdown?.options;
444
- let index = index;
445
- trackBy: trackByKey
446
- "
447
- >
448
- <input
449
- type="checkbox"
450
- (change)="handler?.select(option, false)"
451
- [checked]="option.selected"
452
- tabIndex="-1"
453
- />
454
- <ng-container
455
- *ngTemplateOutlet="
456
- customOption?.templateRef
457
- ? customOption!.templateRef
458
- : defaultOption;
459
- context: { option: option, index: index }
460
- "
461
- ></ng-container>
462
- <i></i>
463
- </label>
464
- </fieldset>
465
- </div>
466
- </div>
467
- </div>
468
-
469
- <ng-template #defaultOption let-option="option">
470
- {{ option[dropdown!.display] }}
471
- </ng-template>
472
- `,
473
- providers: [
202
+ args: [{ selector: 'ngg-dropdown', providers: [
474
203
  {
475
204
  provide: NG_VALUE_ACCESSOR,
476
205
  useExisting: NggDropdownComponent,
477
206
  multi: true,
478
207
  },
479
- ],
480
- changeDetection: ChangeDetectionStrategy.OnPush,
481
- }]
208
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div>\n <span class=\"label\" *ngIf=\"label\" [id]=\"toggler?.attributes?.id + '_label'\">{{\n label\n }}</span>\n <button\n [attr.aria-labelledby]=\"label ? toggler?.attributes?.id + '_label' : null\"\n [attr.aria-describedby]=\"\n formInfo?.textContent && (formInfo?.textContent?.length ?? 0 > 0)\n ? toggler?.attributes?.id + '_info'\n : null\n \"\n type=\"button\"\n #togglerRef\n [id]=\"toggler?.attributes?.id\"\n [attr.aria-haspopup]=\"toggler?.attributes?.['aria-haspopup']\"\n [attr.aria-expanded]=\"toggler?.attributes?.['aria-expanded']\"\n [attr.aria-owns]=\"toggler?.attributes?.['aria-owns']\"\n [tabindex]=\"toggler?.attributes?.tabIndex\"\n [style]=\"toggler?.attributes?.style\"\n [class]=\"toggler?.classes\"\n (click)=\"handler?.toggle()\"\n [class.is-valid]=\"valid\"\n [class.is-invalid]=\"invalid\"\n >\n <span>{{ dropdown?.texts?.select || dropdown?.texts?.placeholder }}</span>\n </button>\n <span\n class=\"form-info\"\n #formInfo\n [attr.id]=\"toggler?.attributes?.id + '_info'\"\n ><ng-content select=\"[data-form-info]\"></ng-content\n ></span>\n <div\n #listboxRef\n [id]=\"listbox?.attributes?.id\"\n [attr.role]=\"listbox?.attributes?.role\"\n [attr.aria-activedescendant]=\"\n listbox?.attributes?.['aria-activedescendant']\n \"\n [tabindex]=\"listbox?.attributes?.tabIndex\"\n [style]=\"listbox?.attributes?.style\"\n [class]=\"listbox?.classes\"\n >\n <button\n type=\"button\"\n class=\"close m-4 m-sm-2 d-block d-sm-none\"\n (click)=\"handler?.close()\"\n >\n <span class=\"sr-only\">{{ dropdown?.texts?.close }}</span>\n </button>\n <ul role=\"listbox\" *ngIf=\"!dropdown?.isMultiSelect\">\n <ng-container *ngTemplateOutlet=\"searchInput\"></ng-container>\n <li\n *ngFor=\"\n let option of dropdown?.options;\n let index = index;\n trackBy: trackByKey\n \"\n [id]=\"option.attributes.id\"\n [attr.role]=\"option.attributes.role\"\n [attr.aria-selected]=\"option.attributes['aria-selected']\"\n [style]=\"option.attributes.style\"\n [class]=\"option.classes\"\n (click)=\"handler?.select(option)\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n customOption?.templateRef\n ? customOption!.templateRef\n : defaultOption;\n context: { option: option, index: index }\n \"\n ></ng-container>\n </li>\n </ul>\n <div *ngIf=\"dropdown?.isMultiSelect\" class=\"sg-fieldset-container\">\n <ng-container *ngTemplateOutlet=\"searchInput\"></ng-container>\n <fieldset\n #fieldsetRef\n [attr.aria-describedby]=\"fieldset?.attributes?.id\"\n role=\"listbox\"\n tabIndex=\"-1\"\n aria-multiselectable=\"true\"\n >\n <legend class=\"sr-only\" [id]=\"fieldset?.attributes?.id\">Options</legend>\n <label\n class=\"form-control\"\n [attr.role]=\"option.attributes.role\"\n [id]=\"option.attributes.id\"\n [attr.aria-selected]=\"option.attributes['aria-selected']\"\n [class]=\"option.classes\"\n *ngFor=\"\n let option of dropdown?.options;\n let index = index;\n trackBy: trackByKey\n \"\n >\n <input\n type=\"checkbox\"\n (change)=\"handler?.select(option, false)\"\n [checked]=\"option.selected\"\n tabIndex=\"-1\"\n />\n <ng-container\n *ngTemplateOutlet=\"\n customOption?.templateRef\n ? customOption!.templateRef\n : defaultOption;\n context: { option: option, index: index }\n \"\n ></ng-container>\n <i></i>\n </label>\n </fieldset>\n </div>\n </div>\n</div>\n\n<ng-template #defaultOption let-option=\"option\">\n {{ option[dropdown!.display] }}\n</ng-template>\n\n<ng-template #searchInput>\n <input\n *ngIf=\"dropdown?.isSearchable\"\n type=\"search\"\n (input)=\"search($event)\"\n placeholder=\"{{ dropdown?.texts?.searchPlaceholder }}\"\n class=\"rounded-0 rounded-top border-0 border-bottom border-info\"\n />\n</ng-template>\n" }]
482
209
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { id: [{
483
210
  type: Input
484
211
  }], texts: [{
@@ -487,12 +214,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImpor
487
214
  type: Input
488
215
  }], display: [{
489
216
  type: Input
490
- }], selectValue: [{
491
- type: Input
492
217
  }], useValue: [{
493
218
  type: Input
494
- }], multiSelect: [{
495
- type: Input
496
219
  }], label: [{
497
220
  type: Input
498
221
  }], options: [{
@@ -501,6 +224,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImpor
501
224
  type: Input
502
225
  }], invalid: [{
503
226
  type: Input
227
+ }], compareWith: [{
228
+ type: Input
229
+ }], searchFilter: [{
230
+ type: Input
231
+ }], multiSelect: [{
232
+ type: Input
233
+ }], searchable: [{
234
+ type: Input
504
235
  }], value: [{
505
236
  type: Input
506
237
  }], valueChange: [{
@@ -647,7 +378,7 @@ NggDatepickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
647
378
  useExisting: NggDatepickerComponent,
648
379
  multi: true,
649
380
  },
650
- ], viewQueries: [{ propertyName: "datepickerDialogElRef", first: true, predicate: ["datepickerDialogElRef"], descendants: true }, { propertyName: "dateInputElRef", first: true, predicate: ["dateInputElRef"], descendants: true }, { propertyName: "datepickerElRef", first: true, predicate: ["datepickerElRef"], descendants: true }, { propertyName: "datepickerTriggerElRef", first: true, predicate: ["datepickerTriggerElRef"], descendants: true }], ngImport: i0, template: "<div class=\"form-group\">\n <label *ngIf=\"label\" [for]=\"id\">{{ label }}</label>\n <div\n class=\"group\"\n #datepickerElRef\n [class.is-valid]=\"isValid\"\n [class.is-invalid]=\"isValid === false\"\n >\n <input\n [attr.id]=\"id\"\n [attr.aria-describedby]=\"\n formInfo?.innerText && formInfo.innerText.length > 0\n ? id + '_info'\n : null\n \"\n type=\"text\"\n placeholder=\"yyyy-mm-dd\"\n #dateInputElRef\n [value]=\"data?.formattedSelectedDate || ''\"\n (change)=\"onDateChange(dateInputElRef.value)\"\n />\n <button\n #datepickerTriggerElRef\n (click)=\"dp?.toggle()\"\n type=\"button\"\n class=\"primary\"\n >\n <i class=\"sg-icon sg-icon-calendar\">Select date</i>\n </button>\n </div>\n <span class=\"form-info\" #formInfo [attr.id]=\"id + '_info'\"\n ><ng-content select=\"[data-form-info]\"></ng-content\n ></span>\n</div>\n<!-- TODO: get or set attributes from within datepicker instance (dp) -->\n<div\n #datepickerDialogElRef\n class=\"popover popover-datepicker\"\n [class.active]=\"dp?.state?.isActive\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Choose Date\"\n>\n <button type=\"button\" class=\"close\" (click)=\"dp?.close()\">Close</button>\n <div class=\"sg-date\">\n <header>\n <button type=\"button\" class=\"link\" (click)=\"dp?.sub(1, 'months')\">\n <i class=\"sg-icon sg-icon-previous\">Previous month</i>\n </button>\n <ngg-dropdown\n [options]=\"months\"\n text=\"Select\"\n [value]=\"data?.month\"\n selectValue=\"value\"\n (valueChange)=\"dp?.setMonth($event)\"\n ></ngg-dropdown>\n <ngg-dropdown\n *ngIf=\"years\"\n [options]=\"years\"\n text=\"Select\"\n [value]=\"data?.year\"\n selectValue=\"value\"\n (valueChange)=\"dp?.setYear($event)\"\n ></ngg-dropdown>\n <button type=\"button\" class=\"link\" (click)=\"dp?.add(1, 'months')\">\n <i class=\"sg-icon sg-icon-next\">Next month</i>\n </button>\n </header>\n <main>\n <table role=\"grid\">\n <thead>\n <tr>\n <th\n scope=\"col\"\n *ngFor=\"let header of data?.calendar?.headers\"\n [abbr]=\"header.abbr\"\n [class.sg-week-header]=\"header.type === 'week'\"\n [class.sg-day-header]=\"header.type === 'day'\"\n >\n {{ header.displayText }}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n *ngFor=\"\n let week of data?.calendar?.calendarGrid;\n trackBy: trackWeek;\n let i = index\n \"\n >\n <th\n *ngIf=\"data?.calendar?.weekNumbers as weekNumbers\"\n class=\"sg-week-number\"\n >\n {{ weekNumbers[i] }}\n </th>\n <td\n *ngFor=\"let day of week\"\n [attr.data-date]=\"day.formattedDate\"\n [attr.role]=\"day.selected ? 'gridcell' : null\"\n [attr.aria-selected]=\"\n day.selected && !data?.highlightedDate ? true : null\n \"\n [class.disabled]=\"day.disabled\"\n [class.sg-date-today]=\"day.today\"\n [title]=\"day.today ? 'Today' : ''\"\n [tabIndex]=\"\n day.highlighted ||\n (day.selected && !data?.highlightedDate) ||\n (day.today && !data?.highlightedDate && !data?.selectedDate)\n ? 0\n : -1\n \"\n (click)=\"day.currentMonth && dp?.select(day.date)\"\n >\n {{ day.day }}\n </td>\n </tr>\n </tbody>\n </table>\n </main>\n </div>\n</div>\n", components: [{ type: NggDropdownComponent, selector: "ngg-dropdown", inputs: ["id", "texts", "loop", "display", "selectValue", "useValue", "multiSelect", "label", "options", "valid", "invalid", "value"], outputs: ["valueChange", "touched"] }], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
381
+ ], viewQueries: [{ propertyName: "datepickerDialogElRef", first: true, predicate: ["datepickerDialogElRef"], descendants: true }, { propertyName: "dateInputElRef", first: true, predicate: ["dateInputElRef"], descendants: true }, { propertyName: "datepickerElRef", first: true, predicate: ["datepickerElRef"], descendants: true }, { propertyName: "datepickerTriggerElRef", first: true, predicate: ["datepickerTriggerElRef"], descendants: true }], ngImport: i0, template: "<div class=\"form-group\">\n <label *ngIf=\"label\" [for]=\"id\">{{ label }}</label>\n <div\n class=\"group\"\n #datepickerElRef\n [class.is-valid]=\"isValid\"\n [class.is-invalid]=\"isValid === false\"\n >\n <input\n [attr.id]=\"id\"\n [attr.aria-describedby]=\"\n formInfo?.innerText && formInfo.innerText.length > 0\n ? id + '_info'\n : null\n \"\n type=\"text\"\n placeholder=\"yyyy-mm-dd\"\n #dateInputElRef\n [value]=\"data?.formattedSelectedDate || ''\"\n (change)=\"onDateChange(dateInputElRef.value)\"\n />\n <button\n #datepickerTriggerElRef\n (click)=\"dp?.toggle()\"\n type=\"button\"\n class=\"primary\"\n >\n <i class=\"sg-icon sg-icon-calendar\">Select date</i>\n </button>\n </div>\n <span class=\"form-info\" #formInfo [attr.id]=\"id + '_info'\"\n ><ng-content select=\"[data-form-info]\"></ng-content\n ></span>\n</div>\n<!-- TODO: get or set attributes from within datepicker instance (dp) -->\n<div\n #datepickerDialogElRef\n class=\"popover popover-datepicker\"\n [class.active]=\"dp?.state?.isActive\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Choose Date\"\n>\n <button type=\"button\" class=\"close\" (click)=\"dp?.close()\">Close</button>\n <div class=\"sg-date\">\n <header>\n <button type=\"button\" class=\"link\" (click)=\"dp?.sub(1, 'months')\">\n <i class=\"sg-icon sg-icon-previous\">Previous month</i>\n </button>\n <ngg-dropdown\n [options]=\"months\"\n display=\"key\"\n text=\"Select\"\n [value]=\"data?.month\"\n (valueChange)=\"dp?.setMonth($event)\"\n ></ngg-dropdown>\n <ngg-dropdown\n *ngIf=\"years\"\n [options]=\"years\"\n display=\"key\"\n text=\"Select\"\n [value]=\"data?.year\"\n (valueChange)=\"dp?.setYear($event)\"\n ></ngg-dropdown>\n <button type=\"button\" class=\"link\" (click)=\"dp?.add(1, 'months')\">\n <i class=\"sg-icon sg-icon-next\">Next month</i>\n </button>\n </header>\n <main>\n <table role=\"grid\">\n <thead>\n <tr>\n <th\n scope=\"col\"\n *ngFor=\"let header of data?.calendar?.headers\"\n [abbr]=\"header.abbr\"\n [class.sg-week-header]=\"header.type === 'week'\"\n [class.sg-day-header]=\"header.type === 'day'\"\n >\n {{ header.displayText }}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n *ngFor=\"\n let week of data?.calendar?.calendarGrid;\n trackBy: trackWeek;\n let i = index\n \"\n >\n <th\n *ngIf=\"data?.calendar?.weekNumbers as weekNumbers\"\n class=\"sg-week-number\"\n >\n {{ weekNumbers[i] }}\n </th>\n <td\n *ngFor=\"let day of week\"\n [attr.data-date]=\"day.formattedDate\"\n [attr.role]=\"day.selected ? 'gridcell' : null\"\n [attr.aria-selected]=\"\n day.selected && !data?.highlightedDate ? true : null\n \"\n [class.disabled]=\"day.disabled\"\n [class.sg-date-today]=\"day.today\"\n [title]=\"day.today ? 'Today' : ''\"\n [tabIndex]=\"\n day.highlighted ||\n (day.selected && !data?.highlightedDate) ||\n (day.today && !data?.highlightedDate && !data?.selectedDate)\n ? 0\n : -1\n \"\n (click)=\"day.currentMonth && dp?.select(day.date)\"\n >\n {{ day.day }}\n </td>\n </tr>\n </tbody>\n </table>\n </main>\n </div>\n</div>\n", components: [{ type: NggDropdownComponent, selector: "ngg-dropdown", inputs: ["id", "texts", "loop", "display", "useValue", "label", "options", "valid", "invalid", "compareWith", "searchFilter", "multiSelect", "searchable", "value"], outputs: ["valueChange", "touched"] }], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
651
382
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: NggDatepickerComponent, decorators: [{
652
383
  type: Component,
653
384
  args: [{ selector: 'ngg-datepicker', providers: [
@@ -656,7 +387,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImpor
656
387
  useExisting: NggDatepickerComponent,
657
388
  multi: true,
658
389
  },
659
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"form-group\">\n <label *ngIf=\"label\" [for]=\"id\">{{ label }}</label>\n <div\n class=\"group\"\n #datepickerElRef\n [class.is-valid]=\"isValid\"\n [class.is-invalid]=\"isValid === false\"\n >\n <input\n [attr.id]=\"id\"\n [attr.aria-describedby]=\"\n formInfo?.innerText && formInfo.innerText.length > 0\n ? id + '_info'\n : null\n \"\n type=\"text\"\n placeholder=\"yyyy-mm-dd\"\n #dateInputElRef\n [value]=\"data?.formattedSelectedDate || ''\"\n (change)=\"onDateChange(dateInputElRef.value)\"\n />\n <button\n #datepickerTriggerElRef\n (click)=\"dp?.toggle()\"\n type=\"button\"\n class=\"primary\"\n >\n <i class=\"sg-icon sg-icon-calendar\">Select date</i>\n </button>\n </div>\n <span class=\"form-info\" #formInfo [attr.id]=\"id + '_info'\"\n ><ng-content select=\"[data-form-info]\"></ng-content\n ></span>\n</div>\n<!-- TODO: get or set attributes from within datepicker instance (dp) -->\n<div\n #datepickerDialogElRef\n class=\"popover popover-datepicker\"\n [class.active]=\"dp?.state?.isActive\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Choose Date\"\n>\n <button type=\"button\" class=\"close\" (click)=\"dp?.close()\">Close</button>\n <div class=\"sg-date\">\n <header>\n <button type=\"button\" class=\"link\" (click)=\"dp?.sub(1, 'months')\">\n <i class=\"sg-icon sg-icon-previous\">Previous month</i>\n </button>\n <ngg-dropdown\n [options]=\"months\"\n text=\"Select\"\n [value]=\"data?.month\"\n selectValue=\"value\"\n (valueChange)=\"dp?.setMonth($event)\"\n ></ngg-dropdown>\n <ngg-dropdown\n *ngIf=\"years\"\n [options]=\"years\"\n text=\"Select\"\n [value]=\"data?.year\"\n selectValue=\"value\"\n (valueChange)=\"dp?.setYear($event)\"\n ></ngg-dropdown>\n <button type=\"button\" class=\"link\" (click)=\"dp?.add(1, 'months')\">\n <i class=\"sg-icon sg-icon-next\">Next month</i>\n </button>\n </header>\n <main>\n <table role=\"grid\">\n <thead>\n <tr>\n <th\n scope=\"col\"\n *ngFor=\"let header of data?.calendar?.headers\"\n [abbr]=\"header.abbr\"\n [class.sg-week-header]=\"header.type === 'week'\"\n [class.sg-day-header]=\"header.type === 'day'\"\n >\n {{ header.displayText }}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n *ngFor=\"\n let week of data?.calendar?.calendarGrid;\n trackBy: trackWeek;\n let i = index\n \"\n >\n <th\n *ngIf=\"data?.calendar?.weekNumbers as weekNumbers\"\n class=\"sg-week-number\"\n >\n {{ weekNumbers[i] }}\n </th>\n <td\n *ngFor=\"let day of week\"\n [attr.data-date]=\"day.formattedDate\"\n [attr.role]=\"day.selected ? 'gridcell' : null\"\n [attr.aria-selected]=\"\n day.selected && !data?.highlightedDate ? true : null\n \"\n [class.disabled]=\"day.disabled\"\n [class.sg-date-today]=\"day.today\"\n [title]=\"day.today ? 'Today' : ''\"\n [tabIndex]=\"\n day.highlighted ||\n (day.selected && !data?.highlightedDate) ||\n (day.today && !data?.highlightedDate && !data?.selectedDate)\n ? 0\n : -1\n \"\n (click)=\"day.currentMonth && dp?.select(day.date)\"\n >\n {{ day.day }}\n </td>\n </tr>\n </tbody>\n </table>\n </main>\n </div>\n</div>\n" }]
390
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"form-group\">\n <label *ngIf=\"label\" [for]=\"id\">{{ label }}</label>\n <div\n class=\"group\"\n #datepickerElRef\n [class.is-valid]=\"isValid\"\n [class.is-invalid]=\"isValid === false\"\n >\n <input\n [attr.id]=\"id\"\n [attr.aria-describedby]=\"\n formInfo?.innerText && formInfo.innerText.length > 0\n ? id + '_info'\n : null\n \"\n type=\"text\"\n placeholder=\"yyyy-mm-dd\"\n #dateInputElRef\n [value]=\"data?.formattedSelectedDate || ''\"\n (change)=\"onDateChange(dateInputElRef.value)\"\n />\n <button\n #datepickerTriggerElRef\n (click)=\"dp?.toggle()\"\n type=\"button\"\n class=\"primary\"\n >\n <i class=\"sg-icon sg-icon-calendar\">Select date</i>\n </button>\n </div>\n <span class=\"form-info\" #formInfo [attr.id]=\"id + '_info'\"\n ><ng-content select=\"[data-form-info]\"></ng-content\n ></span>\n</div>\n<!-- TODO: get or set attributes from within datepicker instance (dp) -->\n<div\n #datepickerDialogElRef\n class=\"popover popover-datepicker\"\n [class.active]=\"dp?.state?.isActive\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Choose Date\"\n>\n <button type=\"button\" class=\"close\" (click)=\"dp?.close()\">Close</button>\n <div class=\"sg-date\">\n <header>\n <button type=\"button\" class=\"link\" (click)=\"dp?.sub(1, 'months')\">\n <i class=\"sg-icon sg-icon-previous\">Previous month</i>\n </button>\n <ngg-dropdown\n [options]=\"months\"\n display=\"key\"\n text=\"Select\"\n [value]=\"data?.month\"\n (valueChange)=\"dp?.setMonth($event)\"\n ></ngg-dropdown>\n <ngg-dropdown\n *ngIf=\"years\"\n [options]=\"years\"\n display=\"key\"\n text=\"Select\"\n [value]=\"data?.year\"\n (valueChange)=\"dp?.setYear($event)\"\n ></ngg-dropdown>\n <button type=\"button\" class=\"link\" (click)=\"dp?.add(1, 'months')\">\n <i class=\"sg-icon sg-icon-next\">Next month</i>\n </button>\n </header>\n <main>\n <table role=\"grid\">\n <thead>\n <tr>\n <th\n scope=\"col\"\n *ngFor=\"let header of data?.calendar?.headers\"\n [abbr]=\"header.abbr\"\n [class.sg-week-header]=\"header.type === 'week'\"\n [class.sg-day-header]=\"header.type === 'day'\"\n >\n {{ header.displayText }}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n *ngFor=\"\n let week of data?.calendar?.calendarGrid;\n trackBy: trackWeek;\n let i = index\n \"\n >\n <th\n *ngIf=\"data?.calendar?.weekNumbers as weekNumbers\"\n class=\"sg-week-number\"\n >\n {{ weekNumbers[i] }}\n </th>\n <td\n *ngFor=\"let day of week\"\n [attr.data-date]=\"day.formattedDate\"\n [attr.role]=\"day.selected ? 'gridcell' : null\"\n [attr.aria-selected]=\"\n day.selected && !data?.highlightedDate ? true : null\n \"\n [class.disabled]=\"day.disabled\"\n [class.sg-date-today]=\"day.today\"\n [title]=\"day.today ? 'Today' : ''\"\n [tabIndex]=\"\n day.highlighted ||\n (day.selected && !data?.highlightedDate) ||\n (day.today && !data?.highlightedDate && !data?.selectedDate)\n ? 0\n : -1\n \"\n (click)=\"day.currentMonth && dp?.select(day.date)\"\n >\n {{ day.day }}\n </td>\n </tr>\n </tbody>\n </table>\n </main>\n </div>\n</div>\n" }]
660
391
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { options: [{
661
392
  type: Input
662
393
  }], value: [{