@ng-matero/extensions 12.9.1 → 12.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/alert/alert.component.d.ts +1 -1
  2. package/alert/mtxAlert.metadata.json +1 -1
  3. package/bundles/mtxAlert.umd.js +2 -2
  4. package/bundles/mtxAlert.umd.js.map +1 -1
  5. package/bundles/mtxCore.umd.js.map +1 -1
  6. package/bundles/mtxDatetimepicker.umd.js +5 -0
  7. package/bundles/mtxDatetimepicker.umd.js.map +1 -1
  8. package/bundles/mtxFormGroup.umd.js +1 -1
  9. package/bundles/mtxFormGroup.umd.js.map +1 -1
  10. package/bundles/mtxGrid.umd.js +51 -54
  11. package/bundles/mtxGrid.umd.js.map +1 -1
  12. package/bundles/mtxPopover.umd.js +997 -803
  13. package/bundles/mtxPopover.umd.js.map +1 -1
  14. package/bundles/mtxSelect.umd.js +237 -156
  15. package/bundles/mtxSelect.umd.js.map +1 -1
  16. package/core/datetime/datetime-formats.d.ts +2 -0
  17. package/esm2015/alert/alert.component.js +3 -3
  18. package/esm2015/core/datetime/datetime-formats.js +1 -1
  19. package/esm2015/datetimepicker/datetimepicker-input.js +6 -1
  20. package/esm2015/form-group/form-group.component.js +2 -2
  21. package/esm2015/grid/cell.component.js +32 -32
  22. package/esm2015/grid/column-menu.component.js +10 -14
  23. package/esm2015/grid/grid.component.js +12 -7
  24. package/esm2015/popover/popover-animations.js +10 -13
  25. package/esm2015/popover/popover-content.js +99 -0
  26. package/esm2015/popover/popover-interfaces.js +1 -1
  27. package/esm2015/popover/popover-module.js +7 -5
  28. package/esm2015/popover/popover-target.js +3 -3
  29. package/esm2015/popover/popover-trigger.js +210 -172
  30. package/esm2015/popover/popover-types.js +1 -1
  31. package/esm2015/popover/popover.js +173 -125
  32. package/esm2015/popover/public-api.js +2 -1
  33. package/esm2015/select/option.component.js +4 -6
  34. package/esm2015/select/select.component.js +111 -31
  35. package/fesm2015/mtxAlert.js +2 -2
  36. package/fesm2015/mtxAlert.js.map +1 -1
  37. package/fesm2015/mtxCore.js.map +1 -1
  38. package/fesm2015/mtxDatetimepicker.js +5 -0
  39. package/fesm2015/mtxDatetimepicker.js.map +1 -1
  40. package/fesm2015/mtxFormGroup.js +1 -1
  41. package/fesm2015/mtxFormGroup.js.map +1 -1
  42. package/fesm2015/mtxGrid.js +51 -50
  43. package/fesm2015/mtxGrid.js.map +1 -1
  44. package/fesm2015/mtxPopover.js +526 -351
  45. package/fesm2015/mtxPopover.js.map +1 -1
  46. package/fesm2015/mtxSelect.js +169 -92
  47. package/fesm2015/mtxSelect.js.map +1 -1
  48. package/form-group/mtxFormGroup.metadata.json +1 -1
  49. package/grid/cell.component.d.ts +5 -8
  50. package/grid/column-menu.component.d.ts +3 -5
  51. package/grid/grid.component.d.ts +6 -4
  52. package/grid/mtxGrid.metadata.json +1 -1
  53. package/package.json +1 -1
  54. package/popover/mtxPopover.metadata.json +1 -1
  55. package/popover/popover-animations.d.ts +1 -1
  56. package/popover/popover-content.d.ts +38 -0
  57. package/popover/popover-interfaces.d.ts +37 -31
  58. package/popover/popover-target.d.ts +2 -2
  59. package/popover/popover-trigger.d.ts +65 -60
  60. package/popover/popover-types.d.ts +6 -1
  61. package/popover/popover.d.ts +97 -69
  62. package/popover/popover.scss +2 -0
  63. package/popover/public-api.d.ts +1 -0
  64. package/select/mtxSelect.metadata.json +1 -1
  65. package/select/option.component.d.ts +7 -6
  66. package/select/select.component.d.ts +59 -20
@@ -1,13 +1,76 @@
1
- import { Directive, TemplateRef, Component, ChangeDetectionStrategy, ElementRef, Input, EventEmitter, ViewEncapsulation, ChangeDetectorRef, Optional, Self, ViewChild, ContentChild, ContentChildren, Output, NgModule } from '@angular/core';
1
+ import { Component, ChangeDetectionStrategy, ElementRef, Input, Directive, TemplateRef, EventEmitter, ViewEncapsulation, ChangeDetectorRef, Optional, Self, Inject, ViewChild, ContentChild, ContentChildren, Output, NgModule } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
- import { NgControl, FormsModule, ReactiveFormsModule } from '@angular/forms';
3
+ import { NgForm, FormGroupDirective, NgControl, FormsModule, ReactiveFormsModule } from '@angular/forms';
4
4
  import { NgSelectModule } from '@ng-select/ng-select';
5
- import { MatFormFieldControl } from '@angular/material/form-field';
6
- import { coerceBooleanProperty } from '@angular/cdk/coercion';
7
5
  import { FocusMonitor } from '@angular/cdk/a11y';
6
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
7
+ import { mixinErrorState, ErrorStateMatcher } from '@angular/material/core';
8
+ import { MatFormFieldControl, MatFormField, MAT_FORM_FIELD } from '@angular/material/form-field';
8
9
  import { Subject, merge } from 'rxjs';
9
10
  import { takeUntil, startWith } from 'rxjs/operators';
10
11
 
12
+ class MtxOptionComponent {
13
+ constructor(elementRef) {
14
+ this.elementRef = elementRef;
15
+ this._disabled = false;
16
+ this.stateChange$ = new Subject();
17
+ }
18
+ get disabled() {
19
+ return this._disabled;
20
+ }
21
+ set disabled(value) {
22
+ this._disabled = coerceBooleanProperty(value);
23
+ }
24
+ get label() {
25
+ return (this.elementRef.nativeElement.textContent || '').trim();
26
+ }
27
+ ngOnChanges(changes) {
28
+ if (changes.disabled) {
29
+ this.stateChange$.next({
30
+ value: this.value,
31
+ disabled: this._disabled,
32
+ });
33
+ }
34
+ }
35
+ ngAfterViewChecked() {
36
+ if (this.label !== this._previousLabel) {
37
+ this._previousLabel = this.label;
38
+ this.stateChange$.next({
39
+ value: this.value,
40
+ disabled: this._disabled,
41
+ label: this.elementRef.nativeElement.innerHTML,
42
+ });
43
+ }
44
+ }
45
+ ngOnDestroy() {
46
+ this.stateChange$.complete();
47
+ }
48
+ }
49
+ /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
50
+ MtxOptionComponent.decorators = [
51
+ { type: Component, args: [{
52
+ selector: 'mtx-option',
53
+ exportAs: 'mtxOption',
54
+ changeDetection: ChangeDetectionStrategy.OnPush,
55
+ template: `<ng-content></ng-content>`
56
+ },] }
57
+ ];
58
+ /**
59
+ * @type {function(): !Array<(null|{
60
+ * type: ?,
61
+ * decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>),
62
+ * })>}
63
+ * @nocollapse
64
+ */
65
+ MtxOptionComponent.ctorParameters = () => [
66
+ { type: ElementRef }
67
+ ];
68
+ /** @type {!Object<string, !Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
69
+ MtxOptionComponent.propDecorators = {
70
+ value: [{ type: Input }],
71
+ disabled: [{ type: Input }]
72
+ };
73
+
11
74
  class MtxSelectOptionTemplateDirective {
12
75
  constructor(template) {
13
76
  this.template = template;
@@ -218,82 +281,36 @@ MtxSelectLoadingSpinnerTemplateDirective.ctorParameters = () => [
218
281
  { type: TemplateRef }
219
282
  ];
220
283
 
221
- class MtxOptionComponent {
222
- constructor(elementRef) {
223
- this.elementRef = elementRef;
224
- this.stateChange$ = new Subject();
225
- this._disabled = false;
226
- }
227
- get disabled() {
228
- return this._disabled;
229
- }
230
- set disabled(value) {
231
- this._disabled = this._isDisabled(value);
232
- }
233
- get label() {
234
- return (this.elementRef.nativeElement.textContent || '').trim();
235
- }
236
- ngOnChanges(changes) {
237
- if (changes.disabled) {
238
- this.stateChange$.next({
239
- value: this.value,
240
- disabled: this._disabled,
241
- });
242
- }
243
- }
244
- ngAfterViewChecked() {
245
- if (this.label !== this._previousLabel) {
246
- this._previousLabel = this.label;
247
- this.stateChange$.next({
248
- value: this.value,
249
- disabled: this._disabled,
250
- label: this.elementRef.nativeElement.innerHTML,
251
- });
252
- }
253
- }
254
- ngOnDestroy() {
255
- this.stateChange$.complete();
256
- }
257
- _isDisabled(value) {
258
- return value != null && `${value}` !== 'false';
259
- }
260
- }
261
- /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
262
- MtxOptionComponent.decorators = [
263
- { type: Component, args: [{
264
- selector: 'mtx-option',
265
- exportAs: 'mtxOption',
266
- changeDetection: ChangeDetectionStrategy.OnPush,
267
- template: `<ng-content></ng-content>`
268
- },] }
269
- ];
270
- /**
271
- * @type {function(): !Array<(null|{
272
- * type: ?,
273
- * decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>),
274
- * })>}
275
- * @nocollapse
276
- */
277
- MtxOptionComponent.ctorParameters = () => [
278
- { type: ElementRef }
279
- ];
280
- /** @type {!Object<string, !Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
281
- MtxOptionComponent.propDecorators = {
282
- value: [{ type: Input }],
283
- disabled: [{ type: Input }]
284
- };
285
-
286
- function isDefined(value) {
287
- return value !== undefined && value !== null;
288
- }
289
284
  let nextUniqueId = 0;
290
- class MtxSelectComponent {
291
- constructor(_focusMonitor, _elementRef, _changeDetectorRef, ngControl) {
292
- this._focusMonitor = _focusMonitor;
293
- this._elementRef = _elementRef;
294
- this._changeDetectorRef = _changeDetectorRef;
285
+ // Boilerplate for applying mixins to MtxSelect.
286
+ /** @docs-private */
287
+ const _MtxSelectMixinBase = mixinErrorState(class {
288
+ constructor(_defaultErrorStateMatcher, _parentForm, _parentFormGroup,
289
+ /**
290
+ * Form control bound to the component.
291
+ * Implemented as part of `MatFormFieldControl`.
292
+ * @docs-private
293
+ */
294
+ ngControl) {
295
+ this._defaultErrorStateMatcher = _defaultErrorStateMatcher;
296
+ this._parentForm = _parentForm;
297
+ this._parentFormGroup = _parentFormGroup;
295
298
  this.ngControl = ngControl;
296
- /** MtxSelect options */
299
+ /**
300
+ * Emits whenever the component state changes and should cause the parent
301
+ * form-field to update. Implemented as part of `MatFormFieldControl`.
302
+ * @docs-private
303
+ */
304
+ this.stateChanges = new Subject();
305
+ }
306
+ });
307
+ class MtxSelectComponent extends _MtxSelectMixinBase {
308
+ constructor(_changeDetectorRef, _elementRef, _focusMonitor, _defaultErrorStateMatcher, _parentForm, _parentFormGroup, ngControl, _parentFormField) {
309
+ super(_defaultErrorStateMatcher, _parentForm, _parentFormGroup, ngControl);
310
+ this._changeDetectorRef = _changeDetectorRef;
311
+ this._elementRef = _elementRef;
312
+ this._focusMonitor = _focusMonitor;
313
+ this._parentFormField = _parentFormField;
297
314
  this.addTag = false;
298
315
  this.addTagText = 'Add item';
299
316
  this.appearance = 'underline';
@@ -335,23 +352,32 @@ class MtxSelectComponent {
335
352
  this.scroll = new EventEmitter();
336
353
  this.scrollToEnd = new EventEmitter();
337
354
  this._items = [];
355
+ this._itemsAreUsed = false;
356
+ /** Emits whenever the component is destroyed. */
338
357
  this._destroy$ = new Subject();
339
358
  this._value = null;
340
359
  /** Implemented as part of MatFormFieldControl. */
341
360
  this.stateChanges = new Subject();
342
- /** Unique id for this input. */
361
+ /** Unique id for this select. */
343
362
  this._uid = `mtx-select-${nextUniqueId++}`;
344
363
  this._focused = false;
345
364
  this._required = false;
346
365
  this._disabled = false;
347
- this.errorState = false;
366
+ /** Aria label of the select. */
367
+ this.ariaLabel = '';
368
+ /** Input that can be used to specify the `aria-labelledby` attribute. */
369
+ this.ariaLabelledby = null;
370
+ /** The aria-describedby attribute on the select for improved a11y. */
371
+ this._ariaDescribedby = null;
348
372
  /** A name for this control that can be used by `mat-form-field`. */
349
373
  this.controlType = 'mtx-select';
350
374
  /** `View -> model callback called when value changes` */
351
375
  this._onChange = () => { };
352
376
  /** `View -> model callback called when select has been touched` */
353
377
  this._onTouched = () => { };
354
- _focusMonitor.monitor(_elementRef, true).subscribe(origin => {
378
+ /** ID for the DOM node containing the select's value. */
379
+ this._valueId = `mtx-select-value-${nextUniqueId++}`;
380
+ _focusMonitor.monitor(this._elementRef, true).subscribe(origin => {
355
381
  if (this._focused && !origin) {
356
382
  this._onTouched();
357
383
  }
@@ -359,11 +385,17 @@ class MtxSelectComponent {
359
385
  this.stateChanges.next();
360
386
  });
361
387
  if (this.ngControl != null) {
388
+ // Note: we provide the value accessor through here, instead of
389
+ // the `providers` to avoid running into a circular import.
362
390
  this.ngControl.valueAccessor = this;
363
391
  }
392
+ // Force setter to be called in case id was not specified.
393
+ // eslint-disable-next-line no-self-assign
394
+ this.id = this.id;
364
395
  }
365
396
  get clearSearchOnAdd() {
366
- return isDefined(this._clearSearchOnAdd) ? this._clearSearchOnAdd : this.closeOnSelect;
397
+ var _a;
398
+ return (_a = this._clearSearchOnAdd) !== null && _a !== void 0 ? _a : this.closeOnSelect;
367
399
  }
368
400
  set clearSearchOnAdd(value) {
369
401
  this._clearSearchOnAdd = value;
@@ -400,16 +432,22 @@ class MtxSelectComponent {
400
432
  this._placeholder = value;
401
433
  this.stateChanges.next();
402
434
  }
403
- /** Whether the input is focused. */
435
+ /** Whether the select is focused. */
404
436
  get focused() {
405
437
  return this._focused;
406
438
  }
439
+ /** Whether the select has a value. */
407
440
  get empty() {
408
441
  return this.value == null || (Array.isArray(this.value) && this.value.length === 0);
409
442
  }
443
+ /**
444
+ * Implemented as part of MatFormFieldControl.
445
+ * @docs-private
446
+ */
410
447
  get shouldLabelFloat() {
411
448
  return this.focused || !this.empty;
412
449
  }
450
+ /** Whether the component is required. */
413
451
  get required() {
414
452
  return this._required;
415
453
  }
@@ -417,6 +455,7 @@ class MtxSelectComponent {
417
455
  this._required = coerceBooleanProperty(value);
418
456
  this.stateChanges.next();
419
457
  }
458
+ /** Whether the select is disabled. */
420
459
  get disabled() {
421
460
  return this._disabled;
422
461
  }
@@ -426,6 +465,10 @@ class MtxSelectComponent {
426
465
  this.stateChanges.next();
427
466
  this._changeDetectorRef.markForCheck();
428
467
  }
468
+ /** Whether or not the overlay panel is open. */
469
+ get panelOpen() {
470
+ return !!this.ngSelect.isOpen;
471
+ }
429
472
  ngOnInit() {
430
473
  // Fix compareWith warning of undefined value
431
474
  // https://github.com/ng-select/ng-select/issues/1537
@@ -440,8 +483,10 @@ class MtxSelectComponent {
440
483
  }
441
484
  ngDoCheck() {
442
485
  if (this.ngControl) {
443
- this.errorState = (this.ngControl.invalid && this.ngControl.touched);
444
- this.stateChanges.next();
486
+ // We need to re-evaluate this on every change detection cycle, because there are some
487
+ // error triggers that we can't subscribe to (e.g. parent form submissions). This means
488
+ // that whatever logic is in here has to be super lean or we risk destroying the performance.
489
+ this.updateErrorState();
445
490
  }
446
491
  }
447
492
  ngOnDestroy() {
@@ -450,9 +495,22 @@ class MtxSelectComponent {
450
495
  this.stateChanges.complete();
451
496
  this._focusMonitor.stopMonitoring(this._elementRef);
452
497
  }
498
+ /** Gets the value for the `aria-labelledby` attribute of the inputs. */
499
+ _getAriaLabelledby() {
500
+ var _a;
501
+ if (this.ariaLabel) {
502
+ return null;
503
+ }
504
+ const labelId = (_a = this._parentFormField) === null || _a === void 0 ? void 0 : _a.getLabelId();
505
+ let value = (labelId ? labelId + ' ' : '') + this._valueId;
506
+ if (this.ariaLabelledby) {
507
+ value += ' ' + this.ariaLabelledby;
508
+ }
509
+ return value;
510
+ }
453
511
  /** Implemented as part of MatFormFieldControl. */
454
512
  setDescribedByIds(ids) {
455
- this._ariaDescribedby = ids.join(' ');
513
+ this._ariaDescribedby = ids.length ? ids.join(' ') : null;
456
514
  }
457
515
  /**
458
516
  * Disables the select. Part of the ControlValueAccessor interface required
@@ -502,7 +560,7 @@ class MtxSelectComponent {
502
560
  registerOnTouched(fn) {
503
561
  this._onTouched = fn;
504
562
  }
505
- /** NgSelect: _setItemsFromNgOptions */
563
+ /** NgSelect's `_setItemsFromNgOptions` */
506
564
  _setItemsFromMtxOptions() {
507
565
  const mapMtxOptions = (options) => {
508
566
  this.items = options.map(option => ({
@@ -553,10 +611,22 @@ MtxSelectComponent.decorators = [
553
611
  selector: 'mtx-select',
554
612
  exportAs: 'mtxSelect',
555
613
  host: {
614
+ 'role': 'combobox',
615
+ 'aria-autocomplete': 'none',
556
616
  '[attr.id]': 'id',
617
+ '[attr.aria-expanded]': 'panelOpen',
618
+ '[attr.aria-label]': 'ariaLabel || null',
619
+ '[attr.aria-labelledby]': '_getAriaLabelledby()',
557
620
  '[attr.aria-describedby]': '_ariaDescribedby || null',
621
+ '[attr.aria-required]': 'required.toString()',
622
+ '[attr.aria-disabled]': 'disabled.toString()',
623
+ '[attr.aria-invalid]': 'errorState',
558
624
  '[class.mtx-select-floating]': 'shouldLabelFloat',
625
+ '[class.mtx-select-disabled]': 'disabled',
559
626
  '[class.mtx-select-invalid]': 'errorState',
627
+ '[class.mtx-select-required]': 'required',
628
+ '[class.mtx-select-empty]': 'empty',
629
+ '[class.mtx-select-multiple]': 'multiple',
560
630
  'class': 'mtx-select',
561
631
  },
562
632
  template: "<ng-select #ngSelect [class.ng-select-invalid]=\"errorState\"\n [(ngModel)]=\"value\"\n [placeholder]=\"placeholder\"\n [items]=\"items\"\n [addTag]=\"addTag\"\n [addTagText]=\"addTagText\"\n [appendTo]=\"appendTo\"\n [appearance]=\"appearance\"\n [bindLabel]=\"bindLabel\"\n [bindValue]=\"bindValue\"\n [closeOnSelect]=\"closeOnSelect\"\n [clearAllText]=\"clearAllText\"\n [clearable]=\"clearable\"\n [clearOnBackspace]=\"clearOnBackspace\"\n [dropdownPosition]=\"dropdownPosition\"\n [groupBy]=\"groupBy\"\n [groupValue]=\"groupValue\"\n [hideSelected]=\"hideSelected\"\n [isOpen]=\"isOpen\"\n [inputAttrs]=\"inputAttrs\"\n [loading]=\"loading\"\n [loadingText]=\"loadingText\"\n [labelForId]=\"labelForId\"\n [markFirst]=\"markFirst\"\n [maxSelectedItems]=\"maxSelectedItems\"\n [multiple]=\"multiple\"\n [notFoundText]=\"notFoundText\"\n [readonly]=\"readonly\"\n [typeahead]=\"typeahead\"\n [typeToSearchText]=\"typeToSearchText\"\n [trackByFn]=\"trackByFn\"\n [searchable]=\"searchable\"\n [searchFn]=\"searchFn\"\n [searchWhileComposing]=\"searchWhileComposing\"\n [clearSearchOnAdd]=\"clearSearchOnAdd\"\n [selectableGroup]=\"selectableGroup\"\n [selectableGroupAsModel]=\"selectableGroupAsModel\"\n [selectOnTab]=\"selectOnTab\"\n [tabIndex]=\"tabIndex\"\n [openOnEnter]=\"openOnEnter\"\n [minTermLength]=\"minTermLength\"\n [editableSearchTerm]=\"editableSearchTerm\"\n [keyDownFn]=\"keyDownFn\"\n [virtualScroll]=\"virtualScroll\"\n (blur)=\"blurEvent.emit($event)\"\n (focus)=\"focusEvent.emit($event)\"\n (change)=\"changeEvent.emit($event)\"\n (open)=\"openEvent.emit($event)\"\n (close)=\"closeEvent.emit($event)\"\n (search)=\"searchEvent.emit($event)\"\n (clear)=\"clearEvent.emit($event)\"\n (add)=\"addEvent.emit($event)\"\n (remove)=\"removeEvent.emit($event)\"\n (scroll)=\"scroll.emit($event)\"\n (scrollToEnd)=\"scrollToEnd.emit($event)\">\n\n <ng-container *ngIf=\"optionTemplate\">\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\" let-index=\"index\"\n let-searchTerm=\"searchTerm\">\n <ng-template [ngTemplateOutlet]=\"optionTemplate\"\n [ngTemplateOutletContext]=\"{ item: item, item$: item$, index: index, searchTerm: searchTerm }\">\n </ng-template>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"optgroupTemplate\">\n <ng-template ng-optgroup-tmp let-item=\"item\" let-item$=\"item$\" let-index=\"index\"\n let-searchTerm=\"searchTerm\">\n <ng-template [ngTemplateOutlet]=\"optgroupTemplate\"\n [ngTemplateOutletContext]=\"{ item: item, item$: item$, index: index, searchTerm: searchTerm }\">\n </ng-template>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"labelTemplate\">\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\" let-label=\"label\">\n <ng-template [ngTemplateOutlet]=\"labelTemplate\"\n [ngTemplateOutletContext]=\"{ item: item, clear: clear, label: label }\">\n </ng-template>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"multiLabelTemplate\">\n <ng-template ng-multi-label-tmp let-items=\"items\" let-clear=\"clear\">\n <ng-template [ngTemplateOutlet]=\"multiLabelTemplate\"\n [ngTemplateOutletContext]=\"{ items: items, clear: clear }\">\n </ng-template>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"headerTemplate\">\n <ng-template ng-header-tmp>\n <ng-template [ngTemplateOutlet]=\"headerTemplate\">\n </ng-template>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"footerTemplate\">\n <ng-template ng-footer-tmp>\n <ng-template [ngTemplateOutlet]=\"footerTemplate\">\n </ng-template>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"notFoundTemplate\">\n <ng-template ng-notfound-tmp let-searchTerm=\"searchTerm\">\n <ng-template [ngTemplateOutlet]=\"notFoundTemplate\"\n [ngTemplateOutletContext]=\"{ searchTerm: searchTerm }\">\n </ng-template>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"typeToSearchTemplate\">\n <ng-template ng-typetosearch-tmp>\n <ng-template [ngTemplateOutlet]=\"typeToSearchTemplate\">\n </ng-template>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"loadingTextTemplate\">\n <ng-template ng-loadingtext-tmp let-searchTerm=\"searchTerm\">\n <ng-template [ngTemplateOutlet]=\"loadingTextTemplate\"\n [ngTemplateOutletContext]=\"{ searchTerm: searchTerm }\">\n </ng-template>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"tagTemplate\">\n <ng-template ng-tag-tmp let-searchTerm=\"searchTerm\">\n <ng-template [ngTemplateOutlet]=\"tagTemplate\"\n [ngTemplateOutletContext]=\"{ searchTerm: searchTerm }\">\n </ng-template>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"loadingSpinnerTemplate\">\n <ng-template ng-loadingspinner-tmp>\n <ng-template [ngTemplateOutlet]=\"loadingSpinnerTemplate\">\n </ng-template>\n </ng-template>\n </ng-container>\n\n</ng-select>\n",
@@ -574,10 +644,14 @@ MtxSelectComponent.decorators = [
574
644
  * @nocollapse
575
645
  */
576
646
  MtxSelectComponent.ctorParameters = () => [
577
- { type: FocusMonitor },
578
- { type: ElementRef },
579
647
  { type: ChangeDetectorRef },
580
- { type: NgControl, decorators: [{ type: Optional }, { type: Self }] }
648
+ { type: ElementRef },
649
+ { type: FocusMonitor },
650
+ { type: ErrorStateMatcher },
651
+ { type: NgForm, decorators: [{ type: Optional }] },
652
+ { type: FormGroupDirective, decorators: [{ type: Optional }] },
653
+ { type: NgControl, decorators: [{ type: Optional }, { type: Self }] },
654
+ { type: MatFormField, decorators: [{ type: Optional }, { type: Inject, args: [MAT_FORM_FIELD,] }] }
581
655
  ];
582
656
  /** @type {!Object<string, !Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
583
657
  MtxSelectComponent.propDecorators = {
@@ -651,7 +725,10 @@ MtxSelectComponent.propDecorators = {
651
725
  id: [{ type: Input }],
652
726
  placeholder: [{ type: Input }],
653
727
  required: [{ type: Input }],
654
- disabled: [{ type: Input }]
728
+ disabled: [{ type: Input }],
729
+ errorStateMatcher: [{ type: Input }],
730
+ ariaLabel: [{ type: Input, args: ['aria-label',] }],
731
+ ariaLabelledby: [{ type: Input, args: ['aria-labelledby',] }]
655
732
  };
656
733
 
657
734
  class MtxSelectModule {
@@ -697,5 +774,5 @@ MtxSelectModule.decorators = [
697
774
  * Generated bundle index. Do not edit.
698
775
  */
699
776
 
700
- export { MtxOptionComponent, MtxSelectComponent, MtxSelectFooterTemplateDirective, MtxSelectHeaderTemplateDirective, MtxSelectLabelTemplateDirective, MtxSelectLoadingSpinnerTemplateDirective, MtxSelectLoadingTextTemplateDirective, MtxSelectModule, MtxSelectMultiLabelTemplateDirective, MtxSelectNotFoundTemplateDirective, MtxSelectOptgroupTemplateDirective, MtxSelectOptionTemplateDirective, MtxSelectTagTemplateDirective, MtxSelectTypeToSearchTemplateDirective, isDefined };
777
+ export { MtxOptionComponent, MtxSelectComponent, MtxSelectFooterTemplateDirective, MtxSelectHeaderTemplateDirective, MtxSelectLabelTemplateDirective, MtxSelectLoadingSpinnerTemplateDirective, MtxSelectLoadingTextTemplateDirective, MtxSelectModule, MtxSelectMultiLabelTemplateDirective, MtxSelectNotFoundTemplateDirective, MtxSelectOptgroupTemplateDirective, MtxSelectOptionTemplateDirective, MtxSelectTagTemplateDirective, MtxSelectTypeToSearchTemplateDirective };
701
778
  //# sourceMappingURL=mtxSelect.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mtxSelect.js","sources":["../../../projects/extensions/select/templates.directive.ts","../../../projects/extensions/select/option.component.ts","../../../projects/extensions/select/select.component.ts","../../../projects/extensions/select/select.module.ts","../../../projects/extensions/select/mtxSelect.ts"],"sourcesContent":["import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({ selector: '[ng-option-tmp]' })\nexport class MtxSelectOptionTemplateDirective {\n constructor(public template: TemplateRef<any>) { }\n}\n\n@Directive({ selector: '[ng-optgroup-tmp]' })\nexport class MtxSelectOptgroupTemplateDirective {\n constructor(public template: TemplateRef<any>) { }\n}\n\n@Directive({ selector: '[ng-label-tmp]' })\nexport class MtxSelectLabelTemplateDirective {\n constructor(public template: TemplateRef<any>) { }\n}\n\n@Directive({ selector: '[ng-multi-label-tmp]' })\nexport class MtxSelectMultiLabelTemplateDirective {\n constructor(public template: TemplateRef<any>) { }\n}\n\n@Directive({ selector: '[ng-header-tmp]' })\nexport class MtxSelectHeaderTemplateDirective {\n constructor(public template: TemplateRef<any>) { }\n}\n\n@Directive({ selector: '[ng-footer-tmp]' })\nexport class MtxSelectFooterTemplateDirective {\n constructor(public template: TemplateRef<any>) { }\n}\n\n@Directive({ selector: '[ng-notfound-tmp]' })\nexport class MtxSelectNotFoundTemplateDirective {\n constructor(public template: TemplateRef<any>) { }\n}\n\n@Directive({ selector: '[ng-typetosearch-tmp]' })\nexport class MtxSelectTypeToSearchTemplateDirective {\n constructor(public template: TemplateRef<any>) { }\n}\n\n@Directive({ selector: '[ng-loadingtext-tmp]' })\nexport class MtxSelectLoadingTextTemplateDirective {\n constructor(public template: TemplateRef<any>) { }\n}\n\n@Directive({ selector: '[ng-tag-tmp]' })\nexport class MtxSelectTagTemplateDirective {\n constructor(public template: TemplateRef<any>) { }\n}\n\n@Directive({ selector: '[ng-loadingspinner-tmp]' })\nexport class MtxSelectLoadingSpinnerTemplateDirective {\n constructor(public template: TemplateRef<any>) { }\n}\n","import {\n AfterViewChecked,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Component({\n selector: 'mtx-option',\n exportAs: 'mtxOption',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<ng-content></ng-content>`,\n})\nexport class MtxOptionComponent implements OnChanges, AfterViewChecked, OnDestroy {\n @Input() value: any;\n @Input()\n get disabled() {\n return this._disabled;\n }\n set disabled(value: any) {\n this._disabled = this._isDisabled(value);\n }\n\n readonly stateChange$ = new Subject<{ value: any; disabled: boolean; label?: string }>();\n\n private _disabled = false;\n private _previousLabel!: string;\n\n constructor(public elementRef: ElementRef<HTMLElement>) {}\n\n get label(): string {\n return (this.elementRef.nativeElement.textContent || '').trim();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.disabled) {\n this.stateChange$.next({\n value: this.value,\n disabled: this._disabled,\n });\n }\n }\n\n ngAfterViewChecked() {\n if (this.label !== this._previousLabel) {\n this._previousLabel = this.label;\n this.stateChange$.next({\n value: this.value,\n disabled: this._disabled,\n label: this.elementRef.nativeElement.innerHTML,\n });\n }\n }\n\n ngOnDestroy() {\n this.stateChange$.complete();\n }\n\n private _isDisabled(value: null) {\n return value != null && `${value}` !== 'false';\n }\n}\n","import {\n Component,\n OnInit,\n OnDestroy,\n DoCheck,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n Input,\n ElementRef,\n ChangeDetectorRef,\n Optional,\n Self,\n Output,\n EventEmitter,\n TemplateRef,\n ContentChild,\n ContentChildren,\n QueryList,\n AfterViewInit,\n ViewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { Subject, merge } from 'rxjs';\nimport { takeUntil, startWith } from 'rxjs/operators';\n\nimport {\n MtxSelectOptionTemplateDirective,\n MtxSelectLabelTemplateDirective,\n MtxSelectHeaderTemplateDirective,\n MtxSelectFooterTemplateDirective,\n MtxSelectOptgroupTemplateDirective,\n MtxSelectNotFoundTemplateDirective,\n MtxSelectTypeToSearchTemplateDirective,\n MtxSelectLoadingTextTemplateDirective,\n MtxSelectMultiLabelTemplateDirective,\n MtxSelectTagTemplateDirective,\n MtxSelectLoadingSpinnerTemplateDirective,\n} from './templates.directive';\nimport { MtxOptionComponent } from './option.component';\nimport { NgSelectComponent } from '@ng-select/ng-select';\n\nexport type DropdownPosition = 'bottom' | 'top' | 'auto';\nexport type AddTagFn = (term: string) => any | Promise<any>;\nexport type CompareWithFn = (a: any, b: any) => boolean;\nexport type GroupValueFn = (\n key: string | Record<string, any>,\n children: any[]\n) => string | Record<string, any>;\nexport type SearchFn = (term: string, item: any) => boolean;\nexport type TrackByFn = (item: any) => any;\n\nexport function isDefined(value: any) {\n return value !== undefined && value !== null;\n}\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'mtx-select',\n exportAs: 'mtxSelect',\n host: {\n '[attr.id]': 'id',\n '[attr.aria-describedby]': '_ariaDescribedby || null',\n '[class.mtx-select-floating]': 'shouldLabelFloat',\n '[class.mtx-select-invalid]': 'errorState',\n 'class': 'mtx-select',\n },\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: MatFormFieldControl, useExisting: MtxSelectComponent }],\n})\nexport class MtxSelectComponent\n implements\n OnInit,\n OnDestroy,\n DoCheck,\n AfterViewInit,\n ControlValueAccessor,\n MatFormFieldControl<any>\n{\n @ViewChild('ngSelect', { static: true }) ngSelect!: NgSelectComponent;\n\n // MtxSelect custom templates\n @ContentChild(MtxSelectOptionTemplateDirective, { read: TemplateRef })\n optionTemplate!: TemplateRef<any>;\n @ContentChild(MtxSelectOptgroupTemplateDirective, { read: TemplateRef })\n optgroupTemplate!: TemplateRef<any>;\n @ContentChild(MtxSelectLabelTemplateDirective, { read: TemplateRef })\n labelTemplate!: TemplateRef<any>;\n @ContentChild(MtxSelectMultiLabelTemplateDirective, { read: TemplateRef })\n multiLabelTemplate!: TemplateRef<any>;\n @ContentChild(MtxSelectHeaderTemplateDirective, { read: TemplateRef })\n headerTemplate!: TemplateRef<any>;\n @ContentChild(MtxSelectFooterTemplateDirective, { read: TemplateRef })\n footerTemplate!: TemplateRef<any>;\n @ContentChild(MtxSelectNotFoundTemplateDirective, { read: TemplateRef })\n notFoundTemplate!: TemplateRef<any>;\n @ContentChild(MtxSelectTypeToSearchTemplateDirective, { read: TemplateRef })\n typeToSearchTemplate!: TemplateRef<any>;\n @ContentChild(MtxSelectLoadingTextTemplateDirective, { read: TemplateRef })\n loadingTextTemplate!: TemplateRef<any>;\n @ContentChild(MtxSelectTagTemplateDirective, { read: TemplateRef })\n tagTemplate!: TemplateRef<any>;\n @ContentChild(MtxSelectLoadingSpinnerTemplateDirective, { read: TemplateRef })\n loadingSpinnerTemplate!: TemplateRef<any>;\n\n @ContentChildren(MtxOptionComponent, { descendants: true })\n mtxOptions!: QueryList<MtxOptionComponent>;\n\n /** MtxSelect options */\n @Input() addTag: boolean | AddTagFn = false;\n @Input() addTagText = 'Add item';\n @Input() appearance = 'underline';\n @Input() appendTo!: string;\n @Input() bindLabel!: string;\n @Input() bindValue!: string;\n @Input() closeOnSelect = true;\n @Input() clearAllText = 'Clear all';\n @Input() clearable = true;\n @Input() clearOnBackspace = true;\n @Input() compareWith!: CompareWithFn;\n @Input() dropdownPosition: DropdownPosition = 'auto';\n @Input() groupBy!: string | (() => void);\n @Input() groupValue!: GroupValueFn;\n @Input() selectableGroup = false;\n @Input() selectableGroupAsModel = true;\n @Input() hideSelected = false;\n @Input() isOpen!: boolean;\n @Input() loading = false;\n @Input() loadingText = 'Loading...';\n @Input() labelForId: string | null = null;\n @Input() markFirst = true;\n @Input() maxSelectedItems!: number;\n @Input() multiple = false;\n @Input() notFoundText = 'No items found';\n @Input() searchable = true;\n @Input() readonly = false;\n @Input() searchFn: SearchFn | null = null;\n @Input() searchWhileComposing = true;\n @Input() selectOnTab = false;\n @Input() trackByFn: TrackByFn | null = null;\n @Input() inputAttrs: { [key: string]: string } = {};\n @Input() tabIndex!: number;\n @Input() openOnEnter!: boolean;\n @Input() minTermLength = 0;\n @Input() editableSearchTerm = false;\n @Input() keyDownFn = (_: KeyboardEvent) => true;\n @Input() virtualScroll = false;\n @Input() typeToSearchText = 'Type to search';\n @Input() typeahead!: Subject<string>;\n\n @Output('blur') blurEvent = new EventEmitter();\n @Output('focus') focusEvent = new EventEmitter();\n @Output('change') changeEvent = new EventEmitter();\n @Output('open') openEvent = new EventEmitter();\n @Output('close') closeEvent = new EventEmitter();\n @Output('search') searchEvent = new EventEmitter<{ term: string; items: any[] }>();\n @Output('clear') clearEvent = new EventEmitter();\n @Output('add') addEvent = new EventEmitter();\n @Output('remove') removeEvent = new EventEmitter();\n @Output('scroll') scroll = new EventEmitter<{ start: number; end: number }>();\n @Output('scrollToEnd') scrollToEnd = new EventEmitter();\n\n @Input()\n get clearSearchOnAdd() {\n return isDefined(this._clearSearchOnAdd) ? this._clearSearchOnAdd : this.closeOnSelect;\n }\n set clearSearchOnAdd(value) {\n this._clearSearchOnAdd = value;\n }\n private _clearSearchOnAdd!: boolean;\n\n @Input()\n get items() {\n return this._items;\n }\n set items(value: any[]) {\n this._itemsAreUsed = true;\n this._items = value;\n }\n private _items: any[] = [];\n private _itemsAreUsed!: boolean;\n private readonly _destroy$ = new Subject<void>();\n\n /** Value of the select control. */\n @Input()\n get value(): any {\n return this._value;\n }\n set value(newValue: any) {\n this._value = newValue;\n this._onChange(newValue);\n this.stateChanges.next();\n }\n private _value = null;\n\n /** Implemented as part of MatFormFieldControl. */\n readonly stateChanges: Subject<void> = new Subject<void>();\n\n /** Unique id of the element. */\n @Input()\n get id(): string {\n return this._id;\n }\n set id(value: string) {\n this._id = value || this._uid;\n this.stateChanges.next();\n }\n private _id!: string;\n\n /** Unique id for this input. */\n private _uid = `mtx-select-${nextUniqueId++}`;\n\n /** Placeholder to be shown if value is empty. */\n @Input()\n get placeholder(): string {\n return this._placeholder;\n }\n set placeholder(value: string) {\n this._placeholder = value;\n this.stateChanges.next();\n }\n private _placeholder!: string;\n\n /** Whether the input is focused. */\n get focused(): boolean {\n return this._focused;\n }\n private _focused = false;\n\n get empty(): boolean {\n return this.value == null || (Array.isArray(this.value) && this.value.length === 0);\n }\n\n get shouldLabelFloat(): boolean {\n return this.focused || !this.empty;\n }\n\n @Input()\n get required(): boolean {\n return this._required;\n }\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n this.stateChanges.next();\n }\n private _required = false;\n\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n this.readonly = this._disabled;\n this.stateChanges.next();\n this._changeDetectorRef.markForCheck();\n }\n private _disabled = false;\n\n errorState = false;\n\n /** A name for this control that can be used by `mat-form-field`. */\n controlType = 'mtx-select';\n\n /** The aria-describedby attribute on the select for improved a11y. */\n _ariaDescribedby!: string;\n\n /** `View -> model callback called when value changes` */\n _onChange: (value: any) => void = () => {};\n\n /** `View -> model callback called when select has been touched` */\n _onTouched = () => {};\n\n constructor(\n private _focusMonitor: FocusMonitor,\n private _elementRef: ElementRef<HTMLElement>,\n private _changeDetectorRef: ChangeDetectorRef,\n @Optional() @Self() public ngControl: NgControl\n ) {\n _focusMonitor.monitor(_elementRef, true).subscribe(origin => {\n if (this._focused && !origin) {\n this._onTouched();\n }\n this._focused = !!origin;\n this.stateChanges.next();\n });\n\n if (this.ngControl != null) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n ngOnInit() {\n // Fix compareWith warning of undefined value\n // https://github.com/ng-select/ng-select/issues/1537\n if (this.compareWith) {\n this.ngSelect.compareWith = this.compareWith;\n }\n }\n\n ngAfterViewInit() {\n if (!this._itemsAreUsed) {\n this._setItemsFromMtxOptions();\n }\n }\n\n ngDoCheck(): void {\n if (this.ngControl) {\n this.errorState = (this.ngControl.invalid && this.ngControl.touched) as boolean;\n this.stateChanges.next();\n }\n }\n\n ngOnDestroy() {\n this._destroy$.next();\n this._destroy$.complete();\n this.stateChanges.complete();\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n\n /** Implemented as part of MatFormFieldControl. */\n setDescribedByIds(ids: string[]) {\n this._ariaDescribedby = ids.join(' ');\n }\n\n /**\n * Disables the select. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param isDisabled Sets whether the component is disabled.\n */\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n /** Implemented as part of MatFormFieldControl. */\n onContainerClick(event: MouseEvent) {\n const target = event.target as HTMLElement;\n if (/mat-form-field|mtx-select/g.test(target.parentElement?.classList[0] || '')) {\n this.focus();\n this.open();\n }\n }\n\n /**\n * Sets the select's value. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param value New value to be written to the model.\n */\n writeValue(value: any): void {\n this.value = value;\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Saves a callback function to be invoked when the select's value\n * changes from user input. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param fn Callback to be triggered when the value changes.\n */\n registerOnChange(fn: any): void {\n this._onChange = fn;\n }\n\n /**\n * Saves a callback function to be invoked when the select is blurred\n * by the user. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param fn Callback to be triggered when the component has been touched.\n */\n registerOnTouched(fn: any): void {\n this._onTouched = fn;\n }\n\n /** NgSelect: _setItemsFromNgOptions */\n private _setItemsFromMtxOptions() {\n const mapMtxOptions = (options: QueryList<MtxOptionComponent>) => {\n this.items = options.map(option => ({\n $ngOptionValue: option.value,\n $ngOptionLabel: option.elementRef.nativeElement.innerHTML,\n disabled: option.disabled,\n }));\n this.ngSelect.itemsList.setItems(this.items);\n if (this.ngSelect.hasValue) {\n this.ngSelect.itemsList.mapSelectedItems();\n }\n this.ngSelect.detectChanges();\n };\n\n const handleOptionChange = () => {\n const changedOrDestroyed = merge(this.mtxOptions.changes, this._destroy$);\n merge(...this.mtxOptions.map(option => option.stateChange$))\n .pipe(takeUntil(changedOrDestroyed))\n .subscribe(option => {\n const item = this.ngSelect.itemsList.findItem(option.value);\n item.disabled = option.disabled;\n item.label = option.label || item.label;\n this.ngSelect.detectChanges();\n });\n };\n\n this.mtxOptions.changes\n .pipe(startWith(this.mtxOptions), takeUntil(this._destroy$))\n .subscribe(options => {\n mapMtxOptions(options);\n handleOptionChange();\n });\n }\n\n open() {\n this.ngSelect.open();\n }\n\n close() {\n this.ngSelect.close();\n }\n\n focus() {\n this.ngSelect.focus();\n }\n\n blur() {\n this.ngSelect.blur();\n }\n\n static ngAcceptInputType_required: BooleanInput;\n static ngAcceptInputType_disabled: BooleanInput;\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { NgSelectModule } from '@ng-select/ng-select';\n\nimport { MtxSelectComponent } from './select.component';\nimport {\n MtxSelectFooterTemplateDirective,\n MtxSelectHeaderTemplateDirective,\n MtxSelectLabelTemplateDirective,\n MtxSelectLoadingSpinnerTemplateDirective,\n MtxSelectLoadingTextTemplateDirective,\n MtxSelectMultiLabelTemplateDirective,\n MtxSelectNotFoundTemplateDirective,\n MtxSelectOptgroupTemplateDirective,\n MtxSelectOptionTemplateDirective,\n MtxSelectTagTemplateDirective,\n MtxSelectTypeToSearchTemplateDirective,\n} from './templates.directive';\nimport { MtxOptionComponent } from './option.component';\n\n@NgModule({\n imports: [CommonModule, FormsModule, ReactiveFormsModule, NgSelectModule],\n exports: [\n MtxSelectComponent,\n MtxOptionComponent,\n MtxSelectOptgroupTemplateDirective,\n MtxSelectOptionTemplateDirective,\n MtxSelectLabelTemplateDirective,\n MtxSelectMultiLabelTemplateDirective,\n MtxSelectHeaderTemplateDirective,\n MtxSelectFooterTemplateDirective,\n MtxSelectNotFoundTemplateDirective,\n MtxSelectTypeToSearchTemplateDirective,\n MtxSelectLoadingTextTemplateDirective,\n MtxSelectTagTemplateDirective,\n MtxSelectLoadingSpinnerTemplateDirective,\n ],\n declarations: [\n MtxSelectComponent,\n MtxOptionComponent,\n MtxSelectOptgroupTemplateDirective,\n MtxSelectOptionTemplateDirective,\n MtxSelectLabelTemplateDirective,\n MtxSelectMultiLabelTemplateDirective,\n MtxSelectHeaderTemplateDirective,\n MtxSelectFooterTemplateDirective,\n MtxSelectNotFoundTemplateDirective,\n MtxSelectTypeToSearchTemplateDirective,\n MtxSelectLoadingTextTemplateDirective,\n MtxSelectTagTemplateDirective,\n MtxSelectLoadingSpinnerTemplateDirective,\n ],\n})\nexport class MtxSelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mtxSelect.js","sources":["../../../projects/extensions/select/option.component.ts","../../../projects/extensions/select/templates.directive.ts","../../../projects/extensions/select/select.component.ts","../../../projects/extensions/select/select.module.ts","../../../projects/extensions/select/mtxSelect.ts"],"sourcesContent":["import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n AfterViewChecked,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Component({\n selector: 'mtx-option',\n exportAs: 'mtxOption',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<ng-content></ng-content>`,\n})\nexport class MtxOptionComponent implements OnChanges, AfterViewChecked, OnDestroy {\n @Input() value: any;\n\n @Input()\n get disabled() {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n }\n private _disabled = false;\n\n get label() {\n return (this.elementRef.nativeElement.textContent || '').trim();\n }\n private _previousLabel?: string;\n\n readonly stateChange$ = new Subject<{\n value: any;\n disabled: boolean;\n label?: string;\n }>();\n\n constructor(public elementRef: ElementRef<HTMLElement>) {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.disabled) {\n this.stateChange$.next({\n value: this.value,\n disabled: this._disabled,\n });\n }\n }\n\n ngAfterViewChecked() {\n if (this.label !== this._previousLabel) {\n this._previousLabel = this.label;\n this.stateChange$.next({\n value: this.value,\n disabled: this._disabled,\n label: this.elementRef.nativeElement.innerHTML,\n });\n }\n }\n\n ngOnDestroy() {\n this.stateChange$.complete();\n }\n\n static ngAcceptInputType_disabled: BooleanInput;\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({ selector: '[ng-option-tmp]' })\nexport class MtxSelectOptionTemplateDirective {\n constructor(public template: TemplateRef<any>) { }\n}\n\n@Directive({ selector: '[ng-optgroup-tmp]' })\nexport class MtxSelectOptgroupTemplateDirective {\n constructor(public template: TemplateRef<any>) { }\n}\n\n@Directive({ selector: '[ng-label-tmp]' })\nexport class MtxSelectLabelTemplateDirective {\n constructor(public template: TemplateRef<any>) { }\n}\n\n@Directive({ selector: '[ng-multi-label-tmp]' })\nexport class MtxSelectMultiLabelTemplateDirective {\n constructor(public template: TemplateRef<any>) { }\n}\n\n@Directive({ selector: '[ng-header-tmp]' })\nexport class MtxSelectHeaderTemplateDirective {\n constructor(public template: TemplateRef<any>) { }\n}\n\n@Directive({ selector: '[ng-footer-tmp]' })\nexport class MtxSelectFooterTemplateDirective {\n constructor(public template: TemplateRef<any>) { }\n}\n\n@Directive({ selector: '[ng-notfound-tmp]' })\nexport class MtxSelectNotFoundTemplateDirective {\n constructor(public template: TemplateRef<any>) { }\n}\n\n@Directive({ selector: '[ng-typetosearch-tmp]' })\nexport class MtxSelectTypeToSearchTemplateDirective {\n constructor(public template: TemplateRef<any>) { }\n}\n\n@Directive({ selector: '[ng-loadingtext-tmp]' })\nexport class MtxSelectLoadingTextTemplateDirective {\n constructor(public template: TemplateRef<any>) { }\n}\n\n@Directive({ selector: '[ng-tag-tmp]' })\nexport class MtxSelectTagTemplateDirective {\n constructor(public template: TemplateRef<any>) { }\n}\n\n@Directive({ selector: '[ng-loadingspinner-tmp]' })\nexport class MtxSelectLoadingSpinnerTemplateDirective {\n constructor(public template: TemplateRef<any>) { }\n}\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n DoCheck,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n Self,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ErrorStateMatcher, mixinErrorState } from '@angular/material/core';\nimport { ControlValueAccessor, FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport { MatFormField, MatFormFieldControl, MAT_FORM_FIELD } from '@angular/material/form-field';\nimport { merge, Subject } from 'rxjs';\nimport { startWith, takeUntil } from 'rxjs/operators';\nimport { NgSelectComponent } from '@ng-select/ng-select';\nimport { MtxOptionComponent } from './option.component';\nimport {\n MtxSelectFooterTemplateDirective,\n MtxSelectHeaderTemplateDirective,\n MtxSelectLabelTemplateDirective,\n MtxSelectLoadingSpinnerTemplateDirective,\n MtxSelectLoadingTextTemplateDirective,\n MtxSelectMultiLabelTemplateDirective,\n MtxSelectNotFoundTemplateDirective,\n MtxSelectOptgroupTemplateDirective,\n MtxSelectOptionTemplateDirective,\n MtxSelectTagTemplateDirective,\n MtxSelectTypeToSearchTemplateDirective,\n} from './templates.directive';\n\nexport type DropdownPosition = 'bottom' | 'top' | 'auto';\nexport type AddTagFn = (term: string) => any | Promise<any>;\nexport type CompareWithFn = (a: any, b: any) => boolean;\nexport type GroupValueFn = (\n key: string | Record<string, any>,\n children: any[]\n) => string | Record<string, any>;\nexport type SearchFn = (term: string, item: any) => boolean;\nexport type TrackByFn = (item: any) => any;\n\nlet nextUniqueId = 0;\n\n// Boilerplate for applying mixins to MtxSelect.\n/** @docs-private */\nconst _MtxSelectMixinBase = mixinErrorState(\n class {\n /**\n * Emits whenever the component state changes and should cause the parent\n * form-field to update. Implemented as part of `MatFormFieldControl`.\n * @docs-private\n */\n readonly stateChanges = new Subject<void>();\n\n constructor(\n public _defaultErrorStateMatcher: ErrorStateMatcher,\n public _parentForm: NgForm,\n public _parentFormGroup: FormGroupDirective,\n /**\n * Form control bound to the component.\n * Implemented as part of `MatFormFieldControl`.\n * @docs-private\n */\n public ngControl: NgControl\n ) {}\n }\n);\n\n@Component({\n selector: 'mtx-select',\n exportAs: 'mtxSelect',\n host: {\n 'role': 'combobox',\n 'aria-autocomplete': 'none',\n '[attr.id]': 'id',\n '[attr.aria-expanded]': 'panelOpen',\n '[attr.aria-label]': 'ariaLabel || null',\n '[attr.aria-labelledby]': '_getAriaLabelledby()',\n '[attr.aria-describedby]': '_ariaDescribedby || null',\n '[attr.aria-required]': 'required.toString()',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.aria-invalid]': 'errorState',\n '[class.mtx-select-floating]': 'shouldLabelFloat',\n '[class.mtx-select-disabled]': 'disabled',\n '[class.mtx-select-invalid]': 'errorState',\n '[class.mtx-select-required]': 'required',\n '[class.mtx-select-empty]': 'empty',\n '[class.mtx-select-multiple]': 'multiple',\n 'class': 'mtx-select',\n },\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: MatFormFieldControl, useExisting: MtxSelectComponent }],\n})\nexport class MtxSelectComponent\n extends _MtxSelectMixinBase\n implements\n OnInit,\n OnDestroy,\n DoCheck,\n AfterViewInit,\n ControlValueAccessor,\n MatFormFieldControl<any>\n{\n @ViewChild('ngSelect', { static: true }) ngSelect!: NgSelectComponent;\n\n @ContentChild(MtxSelectOptionTemplateDirective, { read: TemplateRef })\n optionTemplate!: TemplateRef<any>;\n @ContentChild(MtxSelectOptgroupTemplateDirective, { read: TemplateRef })\n optgroupTemplate!: TemplateRef<any>;\n @ContentChild(MtxSelectLabelTemplateDirective, { read: TemplateRef })\n labelTemplate!: TemplateRef<any>;\n @ContentChild(MtxSelectMultiLabelTemplateDirective, { read: TemplateRef })\n multiLabelTemplate!: TemplateRef<any>;\n @ContentChild(MtxSelectHeaderTemplateDirective, { read: TemplateRef })\n headerTemplate!: TemplateRef<any>;\n @ContentChild(MtxSelectFooterTemplateDirective, { read: TemplateRef })\n footerTemplate!: TemplateRef<any>;\n @ContentChild(MtxSelectNotFoundTemplateDirective, { read: TemplateRef })\n notFoundTemplate!: TemplateRef<any>;\n @ContentChild(MtxSelectTypeToSearchTemplateDirective, { read: TemplateRef })\n typeToSearchTemplate!: TemplateRef<any>;\n @ContentChild(MtxSelectLoadingTextTemplateDirective, { read: TemplateRef })\n loadingTextTemplate!: TemplateRef<any>;\n @ContentChild(MtxSelectTagTemplateDirective, { read: TemplateRef })\n tagTemplate!: TemplateRef<any>;\n @ContentChild(MtxSelectLoadingSpinnerTemplateDirective, { read: TemplateRef })\n loadingSpinnerTemplate!: TemplateRef<any>;\n\n @ContentChildren(MtxOptionComponent, { descendants: true })\n mtxOptions!: QueryList<MtxOptionComponent>;\n\n @Input() addTag: boolean | AddTagFn = false;\n @Input() addTagText = 'Add item';\n @Input() appearance = 'underline';\n @Input() appendTo!: string;\n @Input() bindLabel!: string;\n @Input() bindValue!: string;\n @Input() closeOnSelect = true;\n @Input() clearAllText = 'Clear all';\n @Input() clearable = true;\n @Input() clearOnBackspace = true;\n @Input() compareWith!: CompareWithFn;\n @Input() dropdownPosition: DropdownPosition = 'auto';\n @Input() groupBy!: string | (() => void);\n @Input() groupValue!: GroupValueFn;\n @Input() selectableGroup = false;\n @Input() selectableGroupAsModel = true;\n @Input() hideSelected = false;\n @Input() isOpen!: boolean;\n @Input() loading = false;\n @Input() loadingText = 'Loading...';\n @Input() labelForId: string | null = null;\n @Input() markFirst = true;\n @Input() maxSelectedItems!: number;\n @Input() multiple = false;\n @Input() notFoundText = 'No items found';\n @Input() searchable = true;\n @Input() readonly = false;\n @Input() searchFn: SearchFn | null = null;\n @Input() searchWhileComposing = true;\n @Input() selectOnTab = false;\n @Input() trackByFn: TrackByFn | null = null;\n @Input() inputAttrs: { [key: string]: string } = {};\n @Input() tabIndex!: number;\n @Input() openOnEnter!: boolean;\n @Input() minTermLength = 0;\n @Input() editableSearchTerm = false;\n @Input() keyDownFn = (_: KeyboardEvent) => true;\n @Input() virtualScroll = false;\n @Input() typeToSearchText = 'Type to search';\n @Input() typeahead!: Subject<string>;\n\n @Output('blur') blurEvent = new EventEmitter();\n @Output('focus') focusEvent = new EventEmitter();\n @Output('change') changeEvent = new EventEmitter();\n @Output('open') openEvent = new EventEmitter();\n @Output('close') closeEvent = new EventEmitter();\n @Output('search') searchEvent = new EventEmitter<{ term: string; items: any[] }>();\n @Output('clear') clearEvent = new EventEmitter();\n @Output('add') addEvent = new EventEmitter();\n @Output('remove') removeEvent = new EventEmitter();\n @Output('scroll') scroll = new EventEmitter<{ start: number; end: number }>();\n @Output('scrollToEnd') scrollToEnd = new EventEmitter();\n\n @Input()\n get clearSearchOnAdd() {\n return this._clearSearchOnAdd ?? this.closeOnSelect;\n }\n set clearSearchOnAdd(value) {\n this._clearSearchOnAdd = value;\n }\n private _clearSearchOnAdd?: boolean;\n\n @Input()\n get items() {\n return this._items;\n }\n set items(value: any[]) {\n this._itemsAreUsed = true;\n this._items = value;\n }\n private _items: any[] = [];\n private _itemsAreUsed = false;\n\n /** Emits whenever the component is destroyed. */\n private readonly _destroy$ = new Subject<void>();\n\n /** Value of the select control. */\n @Input()\n get value(): any {\n return this._value;\n }\n set value(newValue: any) {\n this._value = newValue;\n this._onChange(newValue);\n this.stateChanges.next();\n }\n private _value = null;\n\n /** Implemented as part of MatFormFieldControl. */\n readonly stateChanges: Subject<void> = new Subject<void>();\n\n /** Unique id of the element. */\n @Input()\n get id(): string {\n return this._id;\n }\n set id(value: string) {\n this._id = value || this._uid;\n this.stateChanges.next();\n }\n private _id!: string;\n\n /** Unique id for this select. */\n private _uid = `mtx-select-${nextUniqueId++}`;\n\n /** Placeholder to be shown if value is empty. */\n @Input()\n get placeholder(): string {\n return this._placeholder;\n }\n set placeholder(value: string) {\n this._placeholder = value;\n this.stateChanges.next();\n }\n private _placeholder!: string;\n\n /** Whether the select is focused. */\n get focused(): boolean {\n return this._focused;\n }\n private _focused = false;\n\n /** Whether the select has a value. */\n get empty(): boolean {\n return this.value == null || (Array.isArray(this.value) && this.value.length === 0);\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get shouldLabelFloat(): boolean {\n return this.focused || !this.empty;\n }\n\n /** Whether the component is required. */\n @Input()\n get required(): boolean {\n return this._required;\n }\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n this.stateChanges.next();\n }\n private _required = false;\n\n /** Whether the select is disabled. */\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n this.readonly = this._disabled;\n this.stateChanges.next();\n this._changeDetectorRef.markForCheck();\n }\n private _disabled = false;\n\n /** Object used to control when error messages are shown. */\n @Input() override errorStateMatcher!: ErrorStateMatcher;\n\n /** Aria label of the select. */\n @Input('aria-label') ariaLabel: string = '';\n\n /** Input that can be used to specify the `aria-labelledby` attribute. */\n @Input('aria-labelledby') ariaLabelledby: string | null = null;\n\n /** The aria-describedby attribute on the select for improved a11y. */\n _ariaDescribedby: string | null = null;\n\n /** A name for this control that can be used by `mat-form-field`. */\n controlType = 'mtx-select';\n\n /** `View -> model callback called when value changes` */\n _onChange: (value: any) => void = () => {};\n\n /** `View -> model callback called when select has been touched` */\n _onTouched = () => {};\n\n /** ID for the DOM node containing the select's value. */\n _valueId = `mtx-select-value-${nextUniqueId++}`;\n\n /** Whether or not the overlay panel is open. */\n get panelOpen(): boolean {\n return !!this.ngSelect.isOpen;\n }\n\n constructor(\n protected _changeDetectorRef: ChangeDetectorRef,\n protected _elementRef: ElementRef,\n protected _focusMonitor: FocusMonitor,\n _defaultErrorStateMatcher: ErrorStateMatcher,\n @Optional() _parentForm: NgForm,\n @Optional() _parentFormGroup: FormGroupDirective,\n @Optional() @Self() ngControl: NgControl,\n @Optional() @Inject(MAT_FORM_FIELD) private _parentFormField?: MatFormField\n ) {\n super(_defaultErrorStateMatcher, _parentForm, _parentFormGroup, ngControl);\n\n _focusMonitor.monitor(this._elementRef, true).subscribe(origin => {\n if (this._focused && !origin) {\n this._onTouched();\n }\n this._focused = !!origin;\n this.stateChanges.next();\n });\n\n if (this.ngControl != null) {\n // Note: we provide the value accessor through here, instead of\n // the `providers` to avoid running into a circular import.\n this.ngControl.valueAccessor = this;\n }\n\n // Force setter to be called in case id was not specified.\n // eslint-disable-next-line no-self-assign\n this.id = this.id;\n }\n\n ngOnInit() {\n // Fix compareWith warning of undefined value\n // https://github.com/ng-select/ng-select/issues/1537\n if (this.compareWith) {\n this.ngSelect.compareWith = this.compareWith;\n }\n }\n\n ngAfterViewInit() {\n if (!this._itemsAreUsed) {\n this._setItemsFromMtxOptions();\n }\n }\n\n ngDoCheck(): void {\n if (this.ngControl) {\n // We need to re-evaluate this on every change detection cycle, because there are some\n // error triggers that we can't subscribe to (e.g. parent form submissions). This means\n // that whatever logic is in here has to be super lean or we risk destroying the performance.\n this.updateErrorState();\n }\n }\n\n ngOnDestroy() {\n this._destroy$.next();\n this._destroy$.complete();\n this.stateChanges.complete();\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n\n /** Gets the value for the `aria-labelledby` attribute of the inputs. */\n _getAriaLabelledby() {\n if (this.ariaLabel) {\n return null;\n }\n\n const labelId = this._parentFormField?.getLabelId();\n let value = (labelId ? labelId + ' ' : '') + this._valueId;\n\n if (this.ariaLabelledby) {\n value += ' ' + this.ariaLabelledby;\n }\n\n return value;\n }\n\n /** Implemented as part of MatFormFieldControl. */\n setDescribedByIds(ids: string[]) {\n this._ariaDescribedby = ids.length ? ids.join(' ') : null;\n }\n\n /**\n * Disables the select. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param isDisabled Sets whether the component is disabled.\n */\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n /** Implemented as part of MatFormFieldControl. */\n onContainerClick(event: MouseEvent) {\n const target = event.target as HTMLElement;\n if (/mat-form-field|mtx-select/g.test(target.parentElement?.classList[0] || '')) {\n this.focus();\n this.open();\n }\n }\n\n /**\n * Sets the select's value. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param value New value to be written to the model.\n */\n writeValue(value: any): void {\n this.value = value;\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Saves a callback function to be invoked when the select's value\n * changes from user input. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param fn Callback to be triggered when the value changes.\n */\n registerOnChange(fn: any): void {\n this._onChange = fn;\n }\n\n /**\n * Saves a callback function to be invoked when the select is blurred\n * by the user. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param fn Callback to be triggered when the component has been touched.\n */\n registerOnTouched(fn: any): void {\n this._onTouched = fn;\n }\n\n /** NgSelect's `_setItemsFromNgOptions` */\n private _setItemsFromMtxOptions() {\n const mapMtxOptions = (options: QueryList<MtxOptionComponent>) => {\n this.items = options.map(option => ({\n $ngOptionValue: option.value,\n $ngOptionLabel: option.elementRef.nativeElement.innerHTML,\n disabled: option.disabled,\n }));\n this.ngSelect.itemsList.setItems(this.items);\n if (this.ngSelect.hasValue) {\n this.ngSelect.itemsList.mapSelectedItems();\n }\n this.ngSelect.detectChanges();\n };\n\n const handleOptionChange = () => {\n const changedOrDestroyed = merge(this.mtxOptions.changes, this._destroy$);\n merge(...this.mtxOptions.map(option => option.stateChange$))\n .pipe(takeUntil(changedOrDestroyed))\n .subscribe(option => {\n const item = this.ngSelect.itemsList.findItem(option.value);\n item.disabled = option.disabled;\n item.label = option.label || item.label;\n this.ngSelect.detectChanges();\n });\n };\n\n this.mtxOptions.changes\n .pipe(startWith(this.mtxOptions), takeUntil(this._destroy$))\n .subscribe(options => {\n mapMtxOptions(options);\n handleOptionChange();\n });\n }\n\n open() {\n this.ngSelect.open();\n }\n\n close() {\n this.ngSelect.close();\n }\n\n focus() {\n this.ngSelect.focus();\n }\n\n blur() {\n this.ngSelect.blur();\n }\n\n static ngAcceptInputType_required: BooleanInput;\n static ngAcceptInputType_disabled: BooleanInput;\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { NgSelectModule } from '@ng-select/ng-select';\n\nimport { MtxSelectComponent } from './select.component';\nimport {\n MtxSelectFooterTemplateDirective,\n MtxSelectHeaderTemplateDirective,\n MtxSelectLabelTemplateDirective,\n MtxSelectLoadingSpinnerTemplateDirective,\n MtxSelectLoadingTextTemplateDirective,\n MtxSelectMultiLabelTemplateDirective,\n MtxSelectNotFoundTemplateDirective,\n MtxSelectOptgroupTemplateDirective,\n MtxSelectOptionTemplateDirective,\n MtxSelectTagTemplateDirective,\n MtxSelectTypeToSearchTemplateDirective,\n} from './templates.directive';\nimport { MtxOptionComponent } from './option.component';\n\n@NgModule({\n imports: [CommonModule, FormsModule, ReactiveFormsModule, NgSelectModule],\n exports: [\n MtxSelectComponent,\n MtxOptionComponent,\n MtxSelectOptgroupTemplateDirective,\n MtxSelectOptionTemplateDirective,\n MtxSelectLabelTemplateDirective,\n MtxSelectMultiLabelTemplateDirective,\n MtxSelectHeaderTemplateDirective,\n MtxSelectFooterTemplateDirective,\n MtxSelectNotFoundTemplateDirective,\n MtxSelectTypeToSearchTemplateDirective,\n MtxSelectLoadingTextTemplateDirective,\n MtxSelectTagTemplateDirective,\n MtxSelectLoadingSpinnerTemplateDirective,\n ],\n declarations: [\n MtxSelectComponent,\n MtxOptionComponent,\n MtxSelectOptgroupTemplateDirective,\n MtxSelectOptionTemplateDirective,\n MtxSelectLabelTemplateDirective,\n MtxSelectMultiLabelTemplateDirective,\n MtxSelectHeaderTemplateDirective,\n MtxSelectFooterTemplateDirective,\n MtxSelectNotFoundTemplateDirective,\n MtxSelectTypeToSearchTemplateDirective,\n MtxSelectLoadingTextTemplateDirective,\n MtxSelectTagTemplateDirective,\n MtxSelectLoadingSpinnerTemplateDirective,\n ],\n})\nexport class MtxSelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"__symbolic":"module","version":4,"metadata":{"MtxFormGroupModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":6,"character":12}],"exports":[{"__symbolic":"reference","name":"MtxFormGroupComponent"}],"declarations":[{"__symbolic":"reference","name":"MtxFormGroupComponent"}]}]}],"members":{}},"MtxFormGroupComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":12,"character":1},"arguments":[{"selector":"mtx-form-group","host":{"class":"mtx-form-group"},"exportAs":"mtxFormGroup","encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":20,"character":17},"member":"None"},"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":21,"character":19},"member":"OnPush"},"template":"<div class=\"mtx-form-field-layout mtx-form-field-appearance-fluent\">\r\n <label *ngIf=\"label\"\r\n class=\"mtx-form-label\"\r\n [class.mtx-form-label-marker]=\"showRequiredMarker\">{{label}}</label>\r\n <ng-content></ng-content>\r\n</div>\r\n","styles":[".mtx-form-group{display:inline-block}.mtx-form-group .mtx-form-field-layout{display:inline-flex;align-items:flex-start;width:100%}.mtx-form-group .mtx-form-label{position:relative;display:inline-block;padding-top:calc(.375em + 1px);padding-bottom:calc(.375em + 1px);padding-right:1em;line-height:1.125}[dir=rtl] .mtx-form-group .mtx-form-label{padding-right:unset;padding-left:1em}.mtx-form-group .mtx-form-label.mtx-form-label-marker:after{content:\"*\";margin-left:4px}[dir=rtl] .mtx-form-group .mtx-form-label.mtx-form-label-marker:after{margin-left:auto;margin-right:4px}.mtx-form-field-appearance-fluent .mat-form-field{margin-bottom:.25em}.mtx-form-field-appearance-fluent .mat-form-field .mat-form-field-suffix .mat-datepicker-toggle{display:flex}.mtx-form-field-appearance-fluent .mat-form-field .mat-form-field-suffix .mat-icon-button{height:1.5em;width:1.5em}.mtx-form-field-appearance-fluent .mat-form-field .mat-form-field-suffix .mat-icon-button .mat-datepicker-toggle-default-icon{width:1em}.mtx-form-field-appearance-fluent .mat-form-field-has-label .mat-form-field-flex{margin-top:.84375em}.mtx-form-field-appearance-fluent .mat-form-field-appearance-standard .mat-form-field-flex{padding-top:0}.mtx-form-field-appearance-fluent .mat-form-field-flex{align-items:center;padding:0 .5em;border-radius:2px}.mtx-form-field-appearance-fluent .mat-form-field-infix{border-top:0;padding:.375em 0}.mtx-form-field-appearance-fluent .mat-form-field-prefix,.mtx-form-field-appearance-fluent .mat-form-field-suffix{display:inline-flex}.mtx-form-field-appearance-fluent .mat-form-field-prefix .mat-icon,.mtx-form-field-appearance-fluent .mat-form-field-suffix .mat-icon{line-height:normal}.mtx-form-field-appearance-fluent .mat-form-field-underline{display:none}.mtx-form-field-appearance-fluent .mtx-select{display:block;margin:0 -8px}.mtx-form-field-appearance-fluent .ng-select{padding-top:.4375em;padding-left:8px;padding-right:8px;margin-top:-.4375em}\n"]}]}],"members":{"formFields":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChildren","line":24,"character":3},"arguments":[{"__symbolic":"reference","module":"@angular/material/form-field","name":"MatFormField","line":24,"character":19}]}]}],"label":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":26,"character":3}}]}],"showRequiredMarker":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":27,"character":3}}]}],"ngAfterContentInit":[{"__symbolic":"method"}]}}},"origins":{"MtxFormGroupModule":"./form-group.module","MtxFormGroupComponent":"./form-group.component"},"importAs":"@ng-matero/extensions/form-group"}
1
+ {"__symbolic":"module","version":4,"metadata":{"MtxFormGroupModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":6,"character":12}],"exports":[{"__symbolic":"reference","name":"MtxFormGroupComponent"}],"declarations":[{"__symbolic":"reference","name":"MtxFormGroupComponent"}]}]}],"members":{}},"MtxFormGroupComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":12,"character":1},"arguments":[{"selector":"mtx-form-group","host":{"class":"mtx-form-group"},"exportAs":"mtxFormGroup","encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":20,"character":17},"member":"None"},"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":21,"character":19},"member":"OnPush"},"template":"<div class=\"mtx-form-field-layout mtx-form-field-appearance-fluent\">\r\n <label *ngIf=\"label\" class=\"mtx-form-label\"\r\n [class.mtx-form-label-marker]=\"showRequiredMarker\">{{label}}</label>\r\n <ng-content></ng-content>\r\n</div>\r\n","styles":[".mtx-form-group{display:inline-block}.mtx-form-group .mtx-form-field-layout{display:inline-flex;align-items:flex-start;width:100%}.mtx-form-group .mtx-form-label{position:relative;display:inline-block;padding-top:calc(.375em + 1px);padding-bottom:calc(.375em + 1px);padding-right:1em;line-height:1.125}[dir=rtl] .mtx-form-group .mtx-form-label{padding-right:unset;padding-left:1em}.mtx-form-group .mtx-form-label.mtx-form-label-marker:after{content:\"*\";margin-left:4px}[dir=rtl] .mtx-form-group .mtx-form-label.mtx-form-label-marker:after{margin-left:auto;margin-right:4px}.mtx-form-field-appearance-fluent .mat-form-field{margin-bottom:.25em}.mtx-form-field-appearance-fluent .mat-form-field .mat-form-field-suffix .mat-datepicker-toggle{display:flex}.mtx-form-field-appearance-fluent .mat-form-field .mat-form-field-suffix .mat-icon-button{height:1.5em;width:1.5em}.mtx-form-field-appearance-fluent .mat-form-field .mat-form-field-suffix .mat-icon-button .mat-datepicker-toggle-default-icon{width:1em}.mtx-form-field-appearance-fluent .mat-form-field-has-label .mat-form-field-flex{margin-top:.84375em}.mtx-form-field-appearance-fluent .mat-form-field-appearance-standard .mat-form-field-flex{padding-top:0}.mtx-form-field-appearance-fluent .mat-form-field-flex{align-items:center;padding:0 .5em;border-radius:2px}.mtx-form-field-appearance-fluent .mat-form-field-infix{border-top:0;padding:.375em 0}.mtx-form-field-appearance-fluent .mat-form-field-prefix,.mtx-form-field-appearance-fluent .mat-form-field-suffix{display:inline-flex}.mtx-form-field-appearance-fluent .mat-form-field-prefix .mat-icon,.mtx-form-field-appearance-fluent .mat-form-field-suffix .mat-icon{line-height:normal}.mtx-form-field-appearance-fluent .mat-form-field-underline{display:none}.mtx-form-field-appearance-fluent .mtx-select{display:block;margin:0 -8px}.mtx-form-field-appearance-fluent .ng-select{padding-top:.4375em;padding-left:8px;padding-right:8px;margin-top:-.4375em}\n"]}]}],"members":{"formFields":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChildren","line":24,"character":3},"arguments":[{"__symbolic":"reference","module":"@angular/material/form-field","name":"MatFormField","line":24,"character":19}]}]}],"label":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":26,"character":3}}]}],"showRequiredMarker":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":28,"character":3}}]}],"ngAfterContentInit":[{"__symbolic":"method"}]}}},"origins":{"MtxFormGroupModule":"./form-group.module","MtxFormGroupComponent":"./form-group.component"},"importAs":"@ng-matero/extensions/form-group"}
@@ -1,30 +1,27 @@
1
- import { ThemePalette } from '@angular/material/core';
2
1
  import { MtxDialog } from '@ng-matero/extensions/dialog';
3
- import { Observable } from 'rxjs';
4
2
  import { MtxGridColumn, MtxGridColumnButton } from './grid.interface';
5
3
  import { MtxGridService } from './grid.service';
6
4
  export declare class MtxGridCellComponent {
7
5
  private _dialog;
8
6
  private _dataGridSrv;
9
7
  /** Row data */
10
- rowData: {};
8
+ rowData: any;
11
9
  /** Column definition */
12
10
  colDef: MtxGridColumn;
13
- /** All data */
11
+ /** Table data */
14
12
  data: any[];
15
13
  /** Whether show summary */
16
14
  summary: boolean;
15
+ /** Placeholder for the empty value (`null`, `''`, `[]`) */
16
+ placeholder: string;
17
17
  get _colValue(): string;
18
- _isString(fn: any): boolean;
19
- _isFunction(fn: any): boolean;
20
18
  _isEmptyValue(value: any): boolean;
21
19
  _isContainHTML(value: string): boolean;
22
20
  _getText(value: any): any;
23
21
  _getTooltip(value: any): any;
24
22
  _getFormatterTooltip(value: any): any;
25
- _formatSummary(data: any[], colDef: MtxGridColumn): string | void | ((data: any[], colDef?: MtxGridColumn | undefined) => void);
23
+ _formatSummary(data: any[], colDef: MtxGridColumn): string | void;
26
24
  constructor(_dialog: MtxDialog, _dataGridSrv: MtxGridService);
27
- _handleActionConfirm(event: MouseEvent, title: string | Observable<string>, description: string | Observable<string> | undefined, okColor: ThemePalette, okText: string | Observable<string> | undefined, closeColor: ThemePalette, closeText?: string | Observable<string>, fn?: (p: any) => void, data?: any): void;
28
25
  _handleActionClick(event: MouseEvent, btn: MtxGridColumnButton, rowData: any): void;
29
26
  /** Preview enlarged image */
30
27
  _handleImagePreview(urlStr: string): void;