@ptsecurity/mosaic 15.2.1 → 15.3.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 (111) hide show
  1. package/_theming.scss +1 -3
  2. package/core/datetime/date-adapter.d.ts +2 -2
  3. package/core/formatters/number/formatter.d.ts +5 -5
  4. package/core/forms/_forms.scss +1 -1
  5. package/core/locales/en-US.d.ts +11 -0
  6. package/core/locales/es-LA.d.ts +7 -0
  7. package/core/locales/fa-IR.d.ts +7 -0
  8. package/core/locales/index.d.ts +4 -0
  9. package/core/locales/locale-service.d.ts +63 -0
  10. package/core/locales/locale-service.module.d.ts +6 -0
  11. package/core/locales/pt-BR.d.ts +7 -0
  12. package/core/locales/ru-RU.d.ts +11 -0
  13. package/core/locales/zh-CN.d.ts +7 -0
  14. package/core/option/option.d.ts +2 -1
  15. package/core/public-api.d.ts +2 -0
  16. package/core/styles/theming/_components-theming.scss +0 -1
  17. package/core/title/index.d.ts +1 -0
  18. package/core/title/title-text-ref.d.ts +6 -0
  19. package/datepicker/datepicker-input.directive.d.ts +9 -4
  20. package/dropdown/dropdown-item.component.d.ts +3 -2
  21. package/esm2020/core/datetime/date-adapter.mjs +1 -1
  22. package/esm2020/core/formatters/number/formatter.mjs +17 -9
  23. package/esm2020/core/locales/en-US.mjs +10 -0
  24. package/esm2020/core/locales/es-LA.mjs +6 -0
  25. package/esm2020/core/locales/fa-IR.mjs +6 -0
  26. package/esm2020/core/locales/index.mjs +5 -0
  27. package/esm2020/core/locales/locale-service.mjs +70 -0
  28. package/esm2020/core/locales/locale-service.module.mjs +19 -0
  29. package/esm2020/core/locales/pt-BR.mjs +6 -0
  30. package/esm2020/core/locales/ru-RU.mjs +10 -0
  31. package/esm2020/core/locales/zh-CN.mjs +6 -0
  32. package/esm2020/core/option/option.mjs +9 -4
  33. package/esm2020/core/public-api.mjs +3 -1
  34. package/esm2020/core/title/index.mjs +2 -0
  35. package/esm2020/core/title/title-text-ref.mjs +3 -0
  36. package/esm2020/core/version.mjs +2 -2
  37. package/esm2020/datepicker/datepicker-input.directive.mjs +31 -10
  38. package/esm2020/dropdown/dropdown-item.component.mjs +13 -6
  39. package/esm2020/form-field/form-field.mjs +2 -2
  40. package/esm2020/list/list-selection.component.mjs +13 -8
  41. package/esm2020/list/list.component.mjs +2 -2
  42. package/esm2020/popover/popover.module.mjs +10 -4
  43. package/esm2020/select/select.component.mjs +56 -33
  44. package/esm2020/sidepanel/sidepanel-directives.mjs +5 -4
  45. package/esm2020/sidepanel/sidepanel.module.mjs +5 -1
  46. package/esm2020/tags/tag.component.mjs +9 -6
  47. package/esm2020/title/index.mjs +2 -0
  48. package/esm2020/title/ptsecurity-mosaic-title.mjs +5 -0
  49. package/esm2020/title/public-api.mjs +3 -0
  50. package/esm2020/title/title.directive.mjs +107 -0
  51. package/esm2020/title/title.module.mjs +21 -0
  52. package/esm2020/tree/tree-option.component.mjs +10 -5
  53. package/fesm2015/ptsecurity-mosaic-core.mjs +143 -14
  54. package/fesm2015/ptsecurity-mosaic-core.mjs.map +1 -1
  55. package/fesm2015/ptsecurity-mosaic-datepicker.mjs +31 -9
  56. package/fesm2015/ptsecurity-mosaic-datepicker.mjs.map +1 -1
  57. package/fesm2015/ptsecurity-mosaic-dropdown.mjs +12 -5
  58. package/fesm2015/ptsecurity-mosaic-dropdown.mjs.map +1 -1
  59. package/fesm2015/ptsecurity-mosaic-form-field.mjs +2 -2
  60. package/fesm2015/ptsecurity-mosaic-form-field.mjs.map +1 -1
  61. package/fesm2015/ptsecurity-mosaic-list.mjs +14 -9
  62. package/fesm2015/ptsecurity-mosaic-list.mjs.map +1 -1
  63. package/fesm2015/ptsecurity-mosaic-popover.mjs +9 -3
  64. package/fesm2015/ptsecurity-mosaic-popover.mjs.map +1 -1
  65. package/fesm2015/ptsecurity-mosaic-select.mjs +66 -41
  66. package/fesm2015/ptsecurity-mosaic-select.mjs.map +1 -1
  67. package/fesm2015/ptsecurity-mosaic-sidepanel.mjs +8 -3
  68. package/fesm2015/ptsecurity-mosaic-sidepanel.mjs.map +1 -1
  69. package/fesm2015/ptsecurity-mosaic-tags.mjs +8 -5
  70. package/fesm2015/ptsecurity-mosaic-tags.mjs.map +1 -1
  71. package/fesm2015/ptsecurity-mosaic-title.mjs +131 -0
  72. package/fesm2015/ptsecurity-mosaic-title.mjs.map +1 -0
  73. package/fesm2015/ptsecurity-mosaic-tree.mjs +9 -4
  74. package/fesm2015/ptsecurity-mosaic-tree.mjs.map +1 -1
  75. package/fesm2020/ptsecurity-mosaic-core.mjs +149 -14
  76. package/fesm2020/ptsecurity-mosaic-core.mjs.map +1 -1
  77. package/fesm2020/ptsecurity-mosaic-datepicker.mjs +30 -9
  78. package/fesm2020/ptsecurity-mosaic-datepicker.mjs.map +1 -1
  79. package/fesm2020/ptsecurity-mosaic-dropdown.mjs +12 -5
  80. package/fesm2020/ptsecurity-mosaic-dropdown.mjs.map +1 -1
  81. package/fesm2020/ptsecurity-mosaic-form-field.mjs +2 -2
  82. package/fesm2020/ptsecurity-mosaic-form-field.mjs.map +1 -1
  83. package/fesm2020/ptsecurity-mosaic-list.mjs +14 -9
  84. package/fesm2020/ptsecurity-mosaic-list.mjs.map +1 -1
  85. package/fesm2020/ptsecurity-mosaic-popover.mjs +9 -3
  86. package/fesm2020/ptsecurity-mosaic-popover.mjs.map +1 -1
  87. package/fesm2020/ptsecurity-mosaic-select.mjs +64 -41
  88. package/fesm2020/ptsecurity-mosaic-select.mjs.map +1 -1
  89. package/fesm2020/ptsecurity-mosaic-sidepanel.mjs +8 -3
  90. package/fesm2020/ptsecurity-mosaic-sidepanel.mjs.map +1 -1
  91. package/fesm2020/ptsecurity-mosaic-tags.mjs +8 -5
  92. package/fesm2020/ptsecurity-mosaic-tags.mjs.map +1 -1
  93. package/fesm2020/ptsecurity-mosaic-title.mjs +128 -0
  94. package/fesm2020/ptsecurity-mosaic-title.mjs.map +1 -0
  95. package/fesm2020/ptsecurity-mosaic-tree.mjs +9 -4
  96. package/fesm2020/ptsecurity-mosaic-tree.mjs.map +1 -1
  97. package/form-field/_form-field-theme.scss +1 -0
  98. package/list/_list-base.scss +4 -0
  99. package/list/list-selection.component.d.ts +3 -2
  100. package/package.json +10 -2
  101. package/prebuilt-themes/dark-theme.css +1 -1
  102. package/prebuilt-themes/default-theme.css +1 -1
  103. package/select/select.component.d.ts +10 -5
  104. package/sidepanel/_sidepanel-theme.scss +4 -4
  105. package/sidepanel/sidepanel.module.d.ts +3 -2
  106. package/tags/tag.component.d.ts +3 -2
  107. package/title/index.d.ts +1 -0
  108. package/title/public-api.d.ts +2 -0
  109. package/title/title.directive.d.ts +31 -0
  110. package/title/title.module.d.ts +11 -0
  111. package/tree/tree-option.component.d.ts +3 -2
@@ -1,16 +1,15 @@
1
- import * as i2 from '@angular/cdk/overlay';
1
+ import * as i2$1 from '@angular/cdk/overlay';
2
2
  import { CdkConnectedOverlay, OverlayModule } from '@angular/cdk/overlay';
3
3
  import * as i5 from '@angular/common';
4
4
  import { CommonModule } from '@angular/common';
5
5
  import * as i0 from '@angular/core';
6
- import { Directive, Inject, Optional, ContentChild, EventEmitter, isDevMode, Component, ViewEncapsulation, ChangeDetectionStrategy, Self, ViewChild, ViewChildren, ContentChildren, Input, Output, NgModule } from '@angular/core';
7
- import * as i1 from '@ptsecurity/mosaic/core';
8
- import { mixinTabIndex, mixinDisabled, mixinErrorState, getMcSelectDynamicMultipleError, getMcSelectNonFunctionValueError, getMcSelectNonArrayValueError, SELECT_PANEL_PADDING_X, SELECT_PANEL_INDENT_PADDING_X, SELECT_PANEL_VIEWPORT_PADDING, MC_SELECT_SCROLL_STRATEGY, MC_OPTION_PARENT_COMPONENT, McOption, McOptgroup, mcSelectAnimations, McOptionModule, MC_SELECT_SCROLL_STRATEGY_PROVIDER } from '@ptsecurity/mosaic/core';
9
- import * as i1$1 from '@ptsecurity/mosaic/form-field';
6
+ import { Directive, Inject, Optional, ContentChild, EventEmitter, isDevMode, TemplateRef, Component, ViewEncapsulation, ChangeDetectionStrategy, Self, ViewChild, ViewChildren, ContentChildren, Input, Output, NgModule } from '@angular/core';
7
+ import * as i2 from '@ptsecurity/mosaic/core';
8
+ import { mixinTabIndex, mixinDisabled, mixinErrorState, getMcSelectDynamicMultipleError, getMcSelectNonFunctionValueError, getMcSelectNonArrayValueError, SELECT_PANEL_PADDING_X, SELECT_PANEL_INDENT_PADDING_X, SELECT_PANEL_VIEWPORT_PADDING, MC_SELECT_SCROLL_STRATEGY, MC_LOCALE_SERVICE, MC_OPTION_PARENT_COMPONENT, McOption, McOptgroup, mcSelectAnimations, McOptionModule, MC_SELECT_SCROLL_STRATEGY_PROVIDER } from '@ptsecurity/mosaic/core';
9
+ import * as i1 from '@ptsecurity/mosaic/form-field';
10
10
  import { McFormFieldControl, McFormFieldModule } from '@ptsecurity/mosaic/form-field';
11
11
  import * as i7 from '@ptsecurity/mosaic/icon';
12
12
  import { McIconModule } from '@ptsecurity/mosaic/icon';
13
- import * as i8 from '@ptsecurity/mosaic/tags';
14
13
  import { McTag, McTagsModule } from '@ptsecurity/mosaic/tags';
15
14
  import { McTooltipTrigger, MC_TOOLTIP_SCROLL_STRATEGY, McToolTipModule } from '@ptsecurity/mosaic/tooltip';
16
15
  import * as i3 from '@angular/cdk/bidi';
@@ -61,7 +60,7 @@ class McOptionTooltip extends McTooltipTrigger {
61
60
  this.disabled = true;
62
61
  }
63
62
  }
64
- /** @nocollapse */ McOptionTooltip.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: McOptionTooltip, deps: [{ token: i1.McOption }, { token: i2.Overlay }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i2.ScrollDispatcher }, { token: i0.ViewContainerRef }, { token: MC_TOOLTIP_SCROLL_STRATEGY }, { token: i3.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
63
+ /** @nocollapse */ McOptionTooltip.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: McOptionTooltip, deps: [{ token: i2.McOption }, { token: i2$1.Overlay }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i2$1.ScrollDispatcher }, { token: i0.ViewContainerRef }, { token: MC_TOOLTIP_SCROLL_STRATEGY }, { token: i3.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
65
64
  /** @nocollapse */ McOptionTooltip.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: McOptionTooltip, selector: "mc-option", host: { listeners: { "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()" } }, usesInheritance: true, ngImport: i0 });
66
65
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: McOptionTooltip, decorators: [{
67
66
  type: Directive,
@@ -73,7 +72,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
73
72
  }
74
73
  }]
75
74
  }], ctorParameters: function () {
76
- return [{ type: i1.McOption }, { type: i2.Overlay }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i2.ScrollDispatcher }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{
75
+ return [{ type: i2.McOption }, { type: i2$1.Overlay }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i2$1.ScrollDispatcher }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{
77
76
  type: Inject,
78
77
  args: [MC_TOOLTIP_SCROLL_STRATEGY]
79
78
  }] }, { type: i3.Directionality, decorators: [{
@@ -139,7 +138,7 @@ class McSelectSearch {
139
138
  }
140
139
  }
141
140
  }
142
- /** @nocollapse */ McSelectSearch.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: McSelectSearch, deps: [{ token: i1$1.McFormField }], target: i0.ɵɵFactoryTarget.Directive });
141
+ /** @nocollapse */ McSelectSearch.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: McSelectSearch, deps: [{ token: i1.McFormField }], target: i0.ɵɵFactoryTarget.Directive });
143
142
  /** @nocollapse */ McSelectSearch.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: McSelectSearch, selector: "[mcSelectSearch]", host: { listeners: { "keydown": "handleKeydown($event)" } }, queries: [{ propertyName: "input", first: true, predicate: McInput, descendants: true }], exportAs: ["mcSelectSearch"], ngImport: i0 });
144
143
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: McSelectSearch, decorators: [{
145
144
  type: Directive,
@@ -150,7 +149,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
150
149
  '(keydown)': 'handleKeydown($event)'
151
150
  }
152
151
  }]
153
- }], ctorParameters: function () { return [{ type: i1$1.McFormField }]; }, propDecorators: { input: [{
152
+ }], ctorParameters: function () { return [{ type: i1.McFormField }]; }, propDecorators: { input: [{
154
153
  type: ContentChild,
155
154
  args: [McInput, { static: false }]
156
155
  }] } });
@@ -200,7 +199,8 @@ class McSelectBase {
200
199
  /** @docs-private */
201
200
  const McSelectMixinBase = mixinTabIndex(mixinDisabled(mixinErrorState(McSelectBase)));
202
201
  class McSelect extends McSelectMixinBase {
203
- constructor(_changeDetectorRef, _ngZone, _renderer, defaultErrorStateMatcher, elementRef, _dir, parentForm, parentFormGroup, parentFormField, ngControl, scrollStrategyFactory) {
202
+ constructor(_changeDetectorRef, _ngZone, _renderer, defaultErrorStateMatcher, elementRef, _dir, parentForm, parentFormGroup, parentFormField, ngControl, scrollStrategyFactory, localeService) {
203
+ var _a;
204
204
  super(elementRef, defaultErrorStateMatcher, parentForm, parentFormGroup, ngControl);
205
205
  this._changeDetectorRef = _changeDetectorRef;
206
206
  this._ngZone = _ngZone;
@@ -208,6 +208,7 @@ class McSelect extends McSelectMixinBase {
208
208
  this._dir = _dir;
209
209
  this.parentFormField = parentFormField;
210
210
  this.scrollStrategyFactory = scrollStrategyFactory;
211
+ this.localeService = localeService;
211
212
  /** A name for this control that can be used by `mc-form-field`. */
212
213
  this.controlType = 'select';
213
214
  this.hiddenItems = 0;
@@ -289,8 +290,14 @@ class McSelect extends McSelectMixinBase {
289
290
  this.onChange = () => { };
290
291
  /** `View -> model callback called when select has been touched` */
291
292
  this.onTouched = () => { };
293
+ this.updateLocaleParams = () => {
294
+ var _a;
295
+ this.hiddenItemsText = (_a = this.localeService) === null || _a === void 0 ? void 0 : _a.getParams('select').hiddenItemsText;
296
+ this._changeDetectorRef.markForCheck();
297
+ };
292
298
  /** Comparison function to specify which option is displayed. Defaults to object equality. */
293
299
  this._compareWith = (o1, o2) => o1 === o2;
300
+ (_a = this.localeService) === null || _a === void 0 ? void 0 : _a.changes.subscribe(this.updateLocaleParams);
294
301
  if (this.ngControl) {
295
302
  // Note: we provide the value accessor through here, instead of
296
303
  // the `providers` to avoid running into a circular import.
@@ -429,9 +436,8 @@ class McSelect extends McSelectMixinBase {
429
436
  this._changeDetectorRef.markForCheck();
430
437
  }
431
438
  });
432
- this.visibleChanges
433
- .pipe(takeUntil(this.destroy), distinctUntilChanged())
434
- .subscribe(() => this.calculateHiddenItems());
439
+ merge(this.optionSelectionChanges, this.visibleChanges).pipe(takeUntil(this.destroy), distinctUntilChanged())
440
+ .subscribe(() => setTimeout(() => this.calculateHiddenItems(), 0));
435
441
  }
436
442
  ngAfterContentInit() {
437
443
  this.initKeyManager();
@@ -658,35 +664,26 @@ class McSelect extends McSelectMixinBase {
658
664
  if (this.customTrigger || this.empty || !this.multiple) {
659
665
  return;
660
666
  }
661
- let visibleItems = 0;
662
667
  const totalItemsWidth = this.getTotalItemsWidthInMatcher();
663
- let totalVisibleItemsWidth = 0;
664
- this.tags.forEach((tag) => {
665
- if (tag.nativeElement.offsetTop < tag.nativeElement.offsetHeight) {
666
- totalVisibleItemsWidth += this.getItemWidth(tag.nativeElement);
667
- visibleItems++;
668
- }
669
- });
668
+ const [totalVisibleItemsWidth, visibleItems] = this.getTotalVisibleItems();
670
669
  this.hiddenItems = this.selected.length - visibleItems;
670
+ this._changeDetectorRef.detectChanges();
671
671
  if (this.hiddenItems) {
672
672
  const itemsCounter = this.trigger.nativeElement.querySelector('.mc-select__match-hidden-text');
673
673
  const matcherList = this.trigger.nativeElement.querySelector('.mc-select__match-list');
674
674
  const itemsCounterShowed = itemsCounter.offsetTop < itemsCounter.offsetHeight;
675
- // const itemsCounterWidth: number = itemsCounter.getBoundingClientRect().width;
676
- const itemsCounterWidth = 86;
675
+ const itemsCounterWidth = Math.floor(itemsCounter.getBoundingClientRect().width);
677
676
  const matcherListWidth = Math.floor(matcherList.getBoundingClientRect().width);
678
677
  const matcherWidth = matcherListWidth + (itemsCounterShowed ? itemsCounterWidth : 0);
679
678
  if (itemsCounterShowed && (totalItemsWidth < matcherWidth)) {
680
679
  this.hiddenItems = 0;
680
+ this._changeDetectorRef.detectChanges();
681
681
  }
682
682
  if (totalVisibleItemsWidth === matcherListWidth ||
683
683
  (totalVisibleItemsWidth + itemsCounterWidth) < matcherListWidth) {
684
684
  this._changeDetectorRef.markForCheck();
685
685
  return;
686
686
  }
687
- else if (!itemsCounterShowed && (totalItemsWidth + itemsCounterWidth) > matcherWidth) {
688
- this.hiddenItems++;
689
- }
690
687
  }
691
688
  this._changeDetectorRef.markForCheck();
692
689
  }
@@ -710,17 +707,13 @@ class McSelect extends McSelectMixinBase {
710
707
  this.keyManager.withScrollSize(Math.floor(this.getHeightOfOptionsContainer() / this.options.first.getHeight()));
711
708
  }
712
709
  getTotalItemsWidthInMatcher() {
713
- const triggerClone = this.trigger.nativeElement.cloneNode(true);
714
- triggerClone.querySelector('.mc-select__match-hidden-text').remove();
715
- this._renderer.setStyle(triggerClone, 'position', 'absolute');
716
- this._renderer.setStyle(triggerClone, 'visibility', 'hidden');
717
- this._renderer.setStyle(triggerClone, 'top', '-100%');
718
- this._renderer.setStyle(triggerClone, 'left', '0');
710
+ var _a;
711
+ const triggerClone = this.buildTriggerClone();
712
+ (_a = triggerClone.querySelector('.mc-select__match-hidden-text')) === null || _a === void 0 ? void 0 : _a.remove();
719
713
  this._renderer.appendChild(this.trigger.nativeElement, triggerClone);
720
714
  let totalItemsWidth = 0;
721
- triggerClone.querySelectorAll('mc-tag').forEach((item) => {
722
- totalItemsWidth += this.getItemWidth(item);
723
- });
715
+ triggerClone.querySelectorAll('mc-tag')
716
+ .forEach((item) => totalItemsWidth += this.getItemWidth(item));
724
717
  triggerClone.remove();
725
718
  return totalItemsWidth;
726
719
  }
@@ -1065,12 +1058,36 @@ class McSelect extends McSelectMixinBase {
1065
1058
  getOverlayWidth() {
1066
1059
  return this.scrollStrategy._overlayRef.hostElement.clientWidth;
1067
1060
  }
1061
+ getTotalVisibleItems() {
1062
+ const triggerClone = this.buildTriggerClone();
1063
+ this._renderer.setStyle(triggerClone.querySelector('.mc-select__match-hidden-text'), 'display', 'block');
1064
+ this._renderer.appendChild(this.trigger.nativeElement, triggerClone);
1065
+ let visibleItemsCount = 0;
1066
+ let totalVisibleItemsWidth = 0;
1067
+ triggerClone.querySelectorAll('mc-tag')
1068
+ .forEach((item) => {
1069
+ if (item.offsetTop < item.offsetHeight) {
1070
+ totalVisibleItemsWidth += this.getItemWidth(item);
1071
+ visibleItemsCount++;
1072
+ }
1073
+ });
1074
+ triggerClone.remove();
1075
+ return [totalVisibleItemsWidth, visibleItemsCount];
1076
+ }
1077
+ buildTriggerClone() {
1078
+ const triggerClone = this.trigger.nativeElement.cloneNode(true);
1079
+ this._renderer.setStyle(triggerClone, 'position', 'absolute');
1080
+ this._renderer.setStyle(triggerClone, 'visibility', 'hidden');
1081
+ this._renderer.setStyle(triggerClone, 'top', '-100%');
1082
+ this._renderer.setStyle(triggerClone, 'left', '0');
1083
+ return triggerClone;
1084
+ }
1068
1085
  }
1069
- /** @nocollapse */ McSelect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: McSelect, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i1.ErrorStateMatcher }, { token: i0.ElementRef }, { token: i3.Directionality, optional: true }, { token: i4.NgForm, optional: true }, { token: i4.FormGroupDirective, optional: true }, { token: i1$1.McFormField, optional: true }, { token: i4.NgControl, optional: true, self: true }, { token: MC_SELECT_SCROLL_STRATEGY }], target: i0.ɵɵFactoryTarget.Component });
1086
+ /** @nocollapse */ McSelect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: McSelect, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i2.ErrorStateMatcher }, { token: i0.ElementRef }, { token: i3.Directionality, optional: true }, { token: i4.NgForm, optional: true }, { token: i4.FormGroupDirective, optional: true }, { token: i1.McFormField, optional: true }, { token: i4.NgControl, optional: true, self: true }, { token: MC_SELECT_SCROLL_STRATEGY }, { token: MC_LOCALE_SERVICE, optional: true }], target: i0.ɵɵFactoryTarget.Component });
1070
1087
  /** @nocollapse */ McSelect.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: McSelect, selector: "mc-select", inputs: { disabled: "disabled", tabIndex: "tabIndex", hiddenItemsText: "hiddenItemsText", panelClass: "panelClass", backdropClass: "backdropClass", errorStateMatcher: "errorStateMatcher", sortComparator: "sortComparator", hasBackdrop: "hasBackdrop", placeholder: "placeholder", required: "required", multiple: "multiple", compareWith: "compareWith", value: "value", id: "id", hiddenItemsTextFormatter: "hiddenItemsTextFormatter" }, outputs: { openedChange: "openedChange", openedStream: "opened", closedStream: "closed", selectionChange: "selectionChange", valueChange: "valueChange" }, host: { listeners: { "keydown": "handleKeydown($event)", "focus": "onFocus()", "blur": "onBlur()", "window:resize": "calculateHiddenItems()" }, properties: { "attr.id": "id", "attr.tabindex": "tabIndex", "attr.disabled": "disabled || null", "class.mc-disabled": "disabled", "class.mc-invalid": "errorState" }, classAttribute: "mc-select" }, providers: [
1071
1088
  { provide: McFormFieldControl, useExisting: McSelect },
1072
1089
  { provide: MC_OPTION_PARENT_COMPONENT, useExisting: McSelect }
1073
- ], queries: [{ propertyName: "customTrigger", first: true, predicate: McSelectTrigger, descendants: true }, { propertyName: "customMatcher", first: true, predicate: McSelectMatcher, descendants: true }, { propertyName: "cleaner", first: true, predicate: ["mcSelectCleaner"], descendants: true, static: true }, { propertyName: "search", first: true, predicate: McSelectSearch, descendants: true }, { propertyName: "options", predicate: McOption, descendants: true }, { propertyName: "optionGroups", predicate: McOptgroup }], viewQueries: [{ propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true }, { propertyName: "panel", first: true, predicate: ["panel"], descendants: true }, { propertyName: "optionsContainer", first: true, predicate: ["optionsContainer"], descendants: true }, { propertyName: "overlayDir", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "tags", predicate: McTag, descendants: true }], exportAs: ["mcSelect"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div cdk-overlay-origin\n class=\"mc-select__trigger\"\n (click)=\"toggle()\"\n [class.mc-select__trigger_multiple]=\"multiple\"\n #origin=\"cdkOverlayOrigin\"\n #trigger\n [ngSwitch]=\"!!customMatcher\">\n\n <div class=\"mc-select__matcher\" *ngSwitchCase=\"false\">\n <span class=\"mc-select__placeholder\" *ngIf=\"empty\">{{ placeholder || '\\u00A0' }}</span>\n <span *ngIf=\"!empty\" [ngSwitch]=\"!!customTrigger\">\n <div *ngSwitchDefault [ngSwitch]=\"multiple\" class=\"mc-select__match-container\">\n <span *ngSwitchCase=\"false\" class=\"mc-select__matcher-text\">{{ triggerValue }}</span>\n <div *ngSwitchCase=\"true\" class=\"mc-select__match-list\">\n <mc-tag *ngFor=\"let option of triggerValues\"\n [disabled]=\"option.disabled || disabled\"\n [selectable]=\"false\"\n [class.mc-error]=\"errorState\">\n {{ option.viewValue }}\n <i mc-icon=\"mc-close-S_16\" mcTagRemove\n *ngIf=\"!option.disabled && !disabled\"\n (click)=\"onRemoveMatcherItem(option, $event)\">\n </i>\n </mc-tag>\n </div>\n <div class=\"mc-select__match-hidden-text\" [style.display]=\"hiddenItems > 0 ? 'block' : 'none'\">\n {{ hiddenItemsTextFormatter(hiddenItemsText, hiddenItems) }}\n </div>\n </div>\n <ng-content select=\"mc-select-trigger, [mc-select-trigger]\" *ngSwitchCase=\"true\"></ng-content>\n </span>\n\n <div class=\"mc-select__cleaner\" *ngIf=\"canShowCleaner\" (click)=\"clearValue($event)\">\n <ng-content select=\"mc-cleaner\"></ng-content>\n </div>\n\n <div class=\"mc-select__arrow-wrapper\">\n <i class=\"mc-select__arrow\" mc-icon=\"mc-angle-down-S_16\"></i>\n </div>\n </div>\n\n <ng-content select=\"mc-select-matcher, [mc-select-matcher]\" *ngSwitchCase=\"true\"></ng-content>\n</div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayLockPosition\n [cdkConnectedOverlayHasBackdrop]=\"hasBackdrop\"\n [cdkConnectedOverlayBackdropClass]=\"backdropClass\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayMinWidth]=\"triggerRect?.width!\"\n [cdkConnectedOverlayOffsetY]=\"offsetY\"\n (backdropClick)=\"close()\"\n (attach)=\"onAttached()\"\n (detach)=\"close()\">\n <div\n #panel\n class=\"mc-select__panel {{ getPanelTheme() }}\"\n [ngClass]=\"panelClass\"\n [style.transformOrigin]=\"transformOrigin\"\n [style.font-size.px]=\"triggerFontSize\"\n (keydown)=\"handleKeydown($event)\">\n\n <div *ngIf=\"search\" class=\"mc-select__search-container\">\n <ng-content select=\"[mcSelectSearch]\"></ng-content>\n </div>\n\n <div #optionsContainer\n class=\"mc-select__content mc-scrollbar\"\n [@fadeInContent]=\"'showing'\"\n (@fadeInContent.done)=\"panelDoneAnimatingStream.next($event.toState)\">\n\n <div *ngIf=\"isEmptySearchResult\" class=\"mc-select__no-options-message\">\n <ng-content select=\"[mc-select-search-empty-result]\"></ng-content>\n </div>\n <ng-content></ng-content>\n </div>\n\n <ng-content select=\"[mc-select-footer]\"></ng-content>\n </div>\n</ng-template>\n", styles: [".mc-select__matcher{display:flex;align-items:center;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mc-select__matcher>span{width:100%}.mc-select{box-sizing:border-box;display:inline-block;width:100%;outline:none}.mc-select .mc-select__trigger{display:flex;box-sizing:border-box;position:relative;height:calc(var(--mc-form-field-size-height, 32px) - var(--mc-form-field-size-border-width, 1px) * 2);cursor:pointer}.mc-select .mc-select__trigger .mc-select__matcher{padding-left:calc(var(--mc-select-size-left-padding, 12px) - var(--mc-form-field-size-border-width, 1px));padding-right:calc(var(--mc-select-size-right-padding, 6px) - var(--mc-form-field-size-border-width, 1px))}.mc-select .mc-select__trigger.mc-select__trigger_multiple .mc-select__matcher{padding-left:calc(var(--mc-select-size-left-padding-multiple, 12px) - var(--mc-form-field-size-border-width, 1px))}.mc-select .mc-select__trigger.mc-select__trigger_multiple .mc-select__matcher .mc-tag.mc-disabled .mc-tag__text{margin-right:7px}.mc-select.mc-disabled .mc-select__trigger{-webkit-user-select:none;user-select:none;cursor:default}.mc-select__no-options-message{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;position:relative;max-width:100%;height:var(--mc-option-size-height, 32px);cursor:default;outline:none;padding-left:var(--mc-option-size-horizontal-padding, 12px);padding-right:var(--mc-option-size-horizontal-padding, 12px)}.mc-select__match-list{display:flex;flex-wrap:wrap;overflow:hidden;max-height:calc(var(--mc-form-field-size-height, 32px) - var(--mc-form-field-size-border-width, 1px) * 2)}.mc-select__match-list .mc-tag{margin-right:4px}.mc-select__match-container{display:flex;flex-direction:row;justify-content:space-between;width:100%}.mc-select__match-container .mc-select__match-hidden-text{flex:0 0 70px;align-self:center;padding:0 8px;text-align:right}.mc-select__arrow-wrapper{display:flex;align-self:center}.mc-form-field-appearance-fill .mc-select__arrow-wrapper,.mc-form-field-appearance-standard .mc-select__arrow-wrapper{transform:translateY(-50%)}.mc-form-field-appearance-outline .mc-select__arrow-wrapper{transform:translateY(-25%)}.mc-select__panel{min-width:100%;max-width:var(--mc-select-panel-size-max-width, 640px);overflow:hidden;border-width:var(--mc-select-panel-size-border-width, 1px);border-style:solid;border-bottom-left-radius:var(--mc-select-panel-size-border-radius, 4px);border-bottom-right-radius:var(--mc-select-panel-size-border-radius, 4px)}.mc-select__panel .mc-optgroup-label,.mc-select__panel .mc-option{font-size:inherit;line-height:var(--mc-option-size-height, 32px);height:var(--mc-option-size-height, 32px)}.mc-select__content{max-height:var(--mc-select-panel-size-max-height, 232px);padding:var(--mc-select-panel-size-vertical-padding, 4px) 0;overflow:hidden auto}.mc-select__content .cdk-virtual-scroll-viewport{min-height:calc(var(--mc-select-panel-size-max-height, 232px) - 8px);max-height:calc(var(--mc-select-panel-size-max-height, 232px) - 8px)}.mc-form-field-type-select:not(.mc-disabled) .mc-form-field-flex{cursor:pointer}.mc-select__search-container{border-bottom-width:1px;border-bottom-style:solid}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i5.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i5.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i2.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i2.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: i7.McIcon, selector: "[mc-icon]", inputs: ["color"] }, { kind: "directive", type: i7.McIconCSSStyler, selector: "[mc-icon]" }, { kind: "component", type: i8.McTag, selector: "mc-tag, [mc-tag], mc-basic-tag, [mc-basic-tag]", inputs: ["color", "selected", "value", "selectable", "removable", "tabindex", "disabled"], outputs: ["selectionChange", "destroyed", "removed"], exportAs: ["mcTag"] }, { kind: "directive", type: i8.McTagRemove, selector: "[mcTagRemove]" }], animations: [
1090
+ ], queries: [{ propertyName: "customTrigger", first: true, predicate: McSelectTrigger, descendants: true }, { propertyName: "customMatcher", first: true, predicate: McSelectMatcher, descendants: true }, { propertyName: "customTagTemplateRef", first: true, predicate: ["mcSelectTagContent"], descendants: true, read: TemplateRef }, { propertyName: "cleaner", first: true, predicate: ["mcSelectCleaner"], descendants: true, static: true }, { propertyName: "search", first: true, predicate: McSelectSearch, descendants: true }, { propertyName: "options", predicate: McOption, descendants: true }, { propertyName: "optionGroups", predicate: McOptgroup }], viewQueries: [{ propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true }, { propertyName: "panel", first: true, predicate: ["panel"], descendants: true }, { propertyName: "optionsContainer", first: true, predicate: ["optionsContainer"], descendants: true }, { propertyName: "overlayDir", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "tags", predicate: McTag, descendants: true }], exportAs: ["mcSelect"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div cdk-overlay-origin\n class=\"mc-select__trigger\"\n (click)=\"toggle()\"\n [class.mc-select__trigger_multiple]=\"multiple\"\n #origin=\"cdkOverlayOrigin\"\n #trigger\n [ngSwitch]=\"!!customMatcher\">\n\n <div class=\"mc-select__matcher\" *ngSwitchCase=\"false\">\n <span class=\"mc-select__placeholder\" *ngIf=\"empty\">{{ placeholder || '\\u00A0' }}</span>\n <span *ngIf=\"!empty\" [ngSwitch]=\"!!customTrigger\">\n <div *ngSwitchDefault [ngSwitch]=\"multiple\" class=\"mc-select__match-container\">\n <span *ngSwitchCase=\"false\" class=\"mc-select__matcher-text\">{{ triggerValue }}</span>\n <div *ngSwitchCase=\"true\" class=\"mc-select__match-list\">\n <ng-container *ngFor=\"let option of triggerValues\"\n [ngTemplateOutlet]=\"customTagTemplateRef\"\n [ngTemplateOutletContext]=\"{$implicit: option, select: this}\">\n </ng-container>\n </div>\n <div class=\"mc-select__match-hidden-text\" [style.display]=\"hiddenItems > 0 ? 'block' : 'none'\">\n {{ hiddenItemsTextFormatter(hiddenItemsText, hiddenItems) }}\n </div>\n </div>\n <ng-content select=\"mc-select-trigger, [mc-select-trigger]\" *ngSwitchCase=\"true\"></ng-content>\n </span>\n\n <div class=\"mc-select__cleaner\" *ngIf=\"canShowCleaner\" (click)=\"clearValue($event)\">\n <ng-content select=\"mc-cleaner\"></ng-content>\n </div>\n\n <div class=\"mc-select__arrow-wrapper\">\n <i class=\"mc-select__arrow\" mc-icon=\"mc-angle-down-S_16\"></i>\n </div>\n </div>\n\n <ng-content select=\"mc-select-matcher, [mc-select-matcher]\" *ngSwitchCase=\"true\"></ng-content>\n</div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayLockPosition\n [cdkConnectedOverlayHasBackdrop]=\"hasBackdrop\"\n [cdkConnectedOverlayBackdropClass]=\"backdropClass\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayMinWidth]=\"triggerRect?.width!\"\n [cdkConnectedOverlayOffsetY]=\"offsetY\"\n (backdropClick)=\"close()\"\n (attach)=\"onAttached()\"\n (detach)=\"close()\">\n <div\n #panel\n class=\"mc-select__panel {{ getPanelTheme() }}\"\n [ngClass]=\"panelClass\"\n [style.transformOrigin]=\"transformOrigin\"\n [style.font-size.px]=\"triggerFontSize\"\n (keydown)=\"handleKeydown($event)\">\n\n <div *ngIf=\"search\" class=\"mc-select__search-container\">\n <ng-content select=\"[mcSelectSearch]\"></ng-content>\n </div>\n\n <div #optionsContainer\n class=\"mc-select__content mc-scrollbar\"\n [@fadeInContent]=\"'showing'\"\n (@fadeInContent.done)=\"panelDoneAnimatingStream.next($event.toState)\">\n\n <div *ngIf=\"isEmptySearchResult\" class=\"mc-select__no-options-message\">\n <ng-content select=\"[mc-select-search-empty-result]\"></ng-content>\n </div>\n <ng-content></ng-content>\n </div>\n\n <ng-content select=\"[mc-select-footer]\"></ng-content>\n </div>\n</ng-template>\n", styles: [".mc-select__matcher{display:flex;align-items:center;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mc-select__matcher>span{width:100%}.mc-select{box-sizing:border-box;display:inline-block;width:100%;outline:none}.mc-select .mc-select__trigger{display:flex;box-sizing:border-box;position:relative;height:calc(var(--mc-form-field-size-height, 32px) - var(--mc-form-field-size-border-width, 1px) * 2);cursor:pointer}.mc-select .mc-select__trigger .mc-select__matcher{padding-left:calc(var(--mc-select-size-left-padding, 12px) - var(--mc-form-field-size-border-width, 1px));padding-right:calc(var(--mc-select-size-right-padding, 6px) - var(--mc-form-field-size-border-width, 1px))}.mc-select .mc-select__trigger.mc-select__trigger_multiple .mc-select__matcher{padding-left:calc(var(--mc-select-size-left-padding-multiple, 12px) - var(--mc-form-field-size-border-width, 1px))}.mc-select .mc-select__trigger.mc-select__trigger_multiple .mc-select__matcher .mc-tag.mc-disabled .mc-tag__text{margin-right:7px}.mc-select.mc-disabled .mc-select__trigger{-webkit-user-select:none;user-select:none;cursor:default}.mc-select__no-options-message{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;position:relative;max-width:100%;height:var(--mc-option-size-height, 32px);cursor:default;outline:none;padding-left:var(--mc-option-size-horizontal-padding, 12px);padding-right:var(--mc-option-size-horizontal-padding, 12px)}.mc-select__match-list{display:flex;flex-wrap:wrap;overflow:hidden;max-height:calc(var(--mc-form-field-size-height, 32px) - var(--mc-form-field-size-border-width, 1px) * 2)}.mc-select__match-list .mc-tag{margin-right:4px}.mc-select__match-container{display:flex;flex-direction:row;justify-content:space-between;width:100%}.mc-select__match-container .mc-select__match-hidden-text{flex:0 0 70px;align-self:center;padding:0 8px;text-align:right}.mc-select__arrow-wrapper{display:flex;align-self:center}.mc-form-field-appearance-fill .mc-select__arrow-wrapper,.mc-form-field-appearance-standard .mc-select__arrow-wrapper{transform:translateY(-50%)}.mc-form-field-appearance-outline .mc-select__arrow-wrapper{transform:translateY(-25%)}.mc-select__panel{min-width:100%;max-width:var(--mc-select-panel-size-max-width, 640px);overflow:hidden;border-width:var(--mc-select-panel-size-border-width, 1px);border-style:solid;border-bottom-left-radius:var(--mc-select-panel-size-border-radius, 4px);border-bottom-right-radius:var(--mc-select-panel-size-border-radius, 4px)}.mc-select__panel .mc-optgroup-label,.mc-select__panel .mc-option{font-size:inherit;line-height:var(--mc-option-size-height, 32px);height:var(--mc-option-size-height, 32px)}.mc-select__content{max-height:var(--mc-select-panel-size-max-height, 232px);padding:var(--mc-select-panel-size-vertical-padding, 4px) 0;overflow:hidden auto}.mc-select__content .cdk-virtual-scroll-viewport{min-height:calc(var(--mc-select-panel-size-max-height, 232px) - 8px);max-height:calc(var(--mc-select-panel-size-max-height, 232px) - 8px)}.mc-form-field-type-select:not(.mc-disabled) .mc-form-field-flex{cursor:pointer}.mc-select__search-container{border-bottom-width:1px;border-bottom-style:solid}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i5.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i5.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i5.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i2$1.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i2$1.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: i7.McIcon, selector: "[mc-icon]", inputs: ["color"] }, { kind: "directive", type: i7.McIconCSSStyler, selector: "[mc-icon]" }], animations: [
1074
1091
  mcSelectAnimations.transformPanel,
1075
1092
  mcSelectAnimations.fadeInContent
1076
1093
  ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
@@ -1093,15 +1110,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
1093
1110
  ], providers: [
1094
1111
  { provide: McFormFieldControl, useExisting: McSelect },
1095
1112
  { provide: MC_OPTION_PARENT_COMPONENT, useExisting: McSelect }
1096
- ], template: "<div cdk-overlay-origin\n class=\"mc-select__trigger\"\n (click)=\"toggle()\"\n [class.mc-select__trigger_multiple]=\"multiple\"\n #origin=\"cdkOverlayOrigin\"\n #trigger\n [ngSwitch]=\"!!customMatcher\">\n\n <div class=\"mc-select__matcher\" *ngSwitchCase=\"false\">\n <span class=\"mc-select__placeholder\" *ngIf=\"empty\">{{ placeholder || '\\u00A0' }}</span>\n <span *ngIf=\"!empty\" [ngSwitch]=\"!!customTrigger\">\n <div *ngSwitchDefault [ngSwitch]=\"multiple\" class=\"mc-select__match-container\">\n <span *ngSwitchCase=\"false\" class=\"mc-select__matcher-text\">{{ triggerValue }}</span>\n <div *ngSwitchCase=\"true\" class=\"mc-select__match-list\">\n <mc-tag *ngFor=\"let option of triggerValues\"\n [disabled]=\"option.disabled || disabled\"\n [selectable]=\"false\"\n [class.mc-error]=\"errorState\">\n {{ option.viewValue }}\n <i mc-icon=\"mc-close-S_16\" mcTagRemove\n *ngIf=\"!option.disabled && !disabled\"\n (click)=\"onRemoveMatcherItem(option, $event)\">\n </i>\n </mc-tag>\n </div>\n <div class=\"mc-select__match-hidden-text\" [style.display]=\"hiddenItems > 0 ? 'block' : 'none'\">\n {{ hiddenItemsTextFormatter(hiddenItemsText, hiddenItems) }}\n </div>\n </div>\n <ng-content select=\"mc-select-trigger, [mc-select-trigger]\" *ngSwitchCase=\"true\"></ng-content>\n </span>\n\n <div class=\"mc-select__cleaner\" *ngIf=\"canShowCleaner\" (click)=\"clearValue($event)\">\n <ng-content select=\"mc-cleaner\"></ng-content>\n </div>\n\n <div class=\"mc-select__arrow-wrapper\">\n <i class=\"mc-select__arrow\" mc-icon=\"mc-angle-down-S_16\"></i>\n </div>\n </div>\n\n <ng-content select=\"mc-select-matcher, [mc-select-matcher]\" *ngSwitchCase=\"true\"></ng-content>\n</div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayLockPosition\n [cdkConnectedOverlayHasBackdrop]=\"hasBackdrop\"\n [cdkConnectedOverlayBackdropClass]=\"backdropClass\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayMinWidth]=\"triggerRect?.width!\"\n [cdkConnectedOverlayOffsetY]=\"offsetY\"\n (backdropClick)=\"close()\"\n (attach)=\"onAttached()\"\n (detach)=\"close()\">\n <div\n #panel\n class=\"mc-select__panel {{ getPanelTheme() }}\"\n [ngClass]=\"panelClass\"\n [style.transformOrigin]=\"transformOrigin\"\n [style.font-size.px]=\"triggerFontSize\"\n (keydown)=\"handleKeydown($event)\">\n\n <div *ngIf=\"search\" class=\"mc-select__search-container\">\n <ng-content select=\"[mcSelectSearch]\"></ng-content>\n </div>\n\n <div #optionsContainer\n class=\"mc-select__content mc-scrollbar\"\n [@fadeInContent]=\"'showing'\"\n (@fadeInContent.done)=\"panelDoneAnimatingStream.next($event.toState)\">\n\n <div *ngIf=\"isEmptySearchResult\" class=\"mc-select__no-options-message\">\n <ng-content select=\"[mc-select-search-empty-result]\"></ng-content>\n </div>\n <ng-content></ng-content>\n </div>\n\n <ng-content select=\"[mc-select-footer]\"></ng-content>\n </div>\n</ng-template>\n", styles: [".mc-select__matcher{display:flex;align-items:center;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mc-select__matcher>span{width:100%}.mc-select{box-sizing:border-box;display:inline-block;width:100%;outline:none}.mc-select .mc-select__trigger{display:flex;box-sizing:border-box;position:relative;height:calc(var(--mc-form-field-size-height, 32px) - var(--mc-form-field-size-border-width, 1px) * 2);cursor:pointer}.mc-select .mc-select__trigger .mc-select__matcher{padding-left:calc(var(--mc-select-size-left-padding, 12px) - var(--mc-form-field-size-border-width, 1px));padding-right:calc(var(--mc-select-size-right-padding, 6px) - var(--mc-form-field-size-border-width, 1px))}.mc-select .mc-select__trigger.mc-select__trigger_multiple .mc-select__matcher{padding-left:calc(var(--mc-select-size-left-padding-multiple, 12px) - var(--mc-form-field-size-border-width, 1px))}.mc-select .mc-select__trigger.mc-select__trigger_multiple .mc-select__matcher .mc-tag.mc-disabled .mc-tag__text{margin-right:7px}.mc-select.mc-disabled .mc-select__trigger{-webkit-user-select:none;user-select:none;cursor:default}.mc-select__no-options-message{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;position:relative;max-width:100%;height:var(--mc-option-size-height, 32px);cursor:default;outline:none;padding-left:var(--mc-option-size-horizontal-padding, 12px);padding-right:var(--mc-option-size-horizontal-padding, 12px)}.mc-select__match-list{display:flex;flex-wrap:wrap;overflow:hidden;max-height:calc(var(--mc-form-field-size-height, 32px) - var(--mc-form-field-size-border-width, 1px) * 2)}.mc-select__match-list .mc-tag{margin-right:4px}.mc-select__match-container{display:flex;flex-direction:row;justify-content:space-between;width:100%}.mc-select__match-container .mc-select__match-hidden-text{flex:0 0 70px;align-self:center;padding:0 8px;text-align:right}.mc-select__arrow-wrapper{display:flex;align-self:center}.mc-form-field-appearance-fill .mc-select__arrow-wrapper,.mc-form-field-appearance-standard .mc-select__arrow-wrapper{transform:translateY(-50%)}.mc-form-field-appearance-outline .mc-select__arrow-wrapper{transform:translateY(-25%)}.mc-select__panel{min-width:100%;max-width:var(--mc-select-panel-size-max-width, 640px);overflow:hidden;border-width:var(--mc-select-panel-size-border-width, 1px);border-style:solid;border-bottom-left-radius:var(--mc-select-panel-size-border-radius, 4px);border-bottom-right-radius:var(--mc-select-panel-size-border-radius, 4px)}.mc-select__panel .mc-optgroup-label,.mc-select__panel .mc-option{font-size:inherit;line-height:var(--mc-option-size-height, 32px);height:var(--mc-option-size-height, 32px)}.mc-select__content{max-height:var(--mc-select-panel-size-max-height, 232px);padding:var(--mc-select-panel-size-vertical-padding, 4px) 0;overflow:hidden auto}.mc-select__content .cdk-virtual-scroll-viewport{min-height:calc(var(--mc-select-panel-size-max-height, 232px) - 8px);max-height:calc(var(--mc-select-panel-size-max-height, 232px) - 8px)}.mc-form-field-type-select:not(.mc-disabled) .mc-form-field-flex{cursor:pointer}.mc-select__search-container{border-bottom-width:1px;border-bottom-style:solid}\n"] }]
1113
+ ], template: "<div cdk-overlay-origin\n class=\"mc-select__trigger\"\n (click)=\"toggle()\"\n [class.mc-select__trigger_multiple]=\"multiple\"\n #origin=\"cdkOverlayOrigin\"\n #trigger\n [ngSwitch]=\"!!customMatcher\">\n\n <div class=\"mc-select__matcher\" *ngSwitchCase=\"false\">\n <span class=\"mc-select__placeholder\" *ngIf=\"empty\">{{ placeholder || '\\u00A0' }}</span>\n <span *ngIf=\"!empty\" [ngSwitch]=\"!!customTrigger\">\n <div *ngSwitchDefault [ngSwitch]=\"multiple\" class=\"mc-select__match-container\">\n <span *ngSwitchCase=\"false\" class=\"mc-select__matcher-text\">{{ triggerValue }}</span>\n <div *ngSwitchCase=\"true\" class=\"mc-select__match-list\">\n <ng-container *ngFor=\"let option of triggerValues\"\n [ngTemplateOutlet]=\"customTagTemplateRef\"\n [ngTemplateOutletContext]=\"{$implicit: option, select: this}\">\n </ng-container>\n </div>\n <div class=\"mc-select__match-hidden-text\" [style.display]=\"hiddenItems > 0 ? 'block' : 'none'\">\n {{ hiddenItemsTextFormatter(hiddenItemsText, hiddenItems) }}\n </div>\n </div>\n <ng-content select=\"mc-select-trigger, [mc-select-trigger]\" *ngSwitchCase=\"true\"></ng-content>\n </span>\n\n <div class=\"mc-select__cleaner\" *ngIf=\"canShowCleaner\" (click)=\"clearValue($event)\">\n <ng-content select=\"mc-cleaner\"></ng-content>\n </div>\n\n <div class=\"mc-select__arrow-wrapper\">\n <i class=\"mc-select__arrow\" mc-icon=\"mc-angle-down-S_16\"></i>\n </div>\n </div>\n\n <ng-content select=\"mc-select-matcher, [mc-select-matcher]\" *ngSwitchCase=\"true\"></ng-content>\n</div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayLockPosition\n [cdkConnectedOverlayHasBackdrop]=\"hasBackdrop\"\n [cdkConnectedOverlayBackdropClass]=\"backdropClass\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayMinWidth]=\"triggerRect?.width!\"\n [cdkConnectedOverlayOffsetY]=\"offsetY\"\n (backdropClick)=\"close()\"\n (attach)=\"onAttached()\"\n (detach)=\"close()\">\n <div\n #panel\n class=\"mc-select__panel {{ getPanelTheme() }}\"\n [ngClass]=\"panelClass\"\n [style.transformOrigin]=\"transformOrigin\"\n [style.font-size.px]=\"triggerFontSize\"\n (keydown)=\"handleKeydown($event)\">\n\n <div *ngIf=\"search\" class=\"mc-select__search-container\">\n <ng-content select=\"[mcSelectSearch]\"></ng-content>\n </div>\n\n <div #optionsContainer\n class=\"mc-select__content mc-scrollbar\"\n [@fadeInContent]=\"'showing'\"\n (@fadeInContent.done)=\"panelDoneAnimatingStream.next($event.toState)\">\n\n <div *ngIf=\"isEmptySearchResult\" class=\"mc-select__no-options-message\">\n <ng-content select=\"[mc-select-search-empty-result]\"></ng-content>\n </div>\n <ng-content></ng-content>\n </div>\n\n <ng-content select=\"[mc-select-footer]\"></ng-content>\n </div>\n</ng-template>\n", styles: [".mc-select__matcher{display:flex;align-items:center;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mc-select__matcher>span{width:100%}.mc-select{box-sizing:border-box;display:inline-block;width:100%;outline:none}.mc-select .mc-select__trigger{display:flex;box-sizing:border-box;position:relative;height:calc(var(--mc-form-field-size-height, 32px) - var(--mc-form-field-size-border-width, 1px) * 2);cursor:pointer}.mc-select .mc-select__trigger .mc-select__matcher{padding-left:calc(var(--mc-select-size-left-padding, 12px) - var(--mc-form-field-size-border-width, 1px));padding-right:calc(var(--mc-select-size-right-padding, 6px) - var(--mc-form-field-size-border-width, 1px))}.mc-select .mc-select__trigger.mc-select__trigger_multiple .mc-select__matcher{padding-left:calc(var(--mc-select-size-left-padding-multiple, 12px) - var(--mc-form-field-size-border-width, 1px))}.mc-select .mc-select__trigger.mc-select__trigger_multiple .mc-select__matcher .mc-tag.mc-disabled .mc-tag__text{margin-right:7px}.mc-select.mc-disabled .mc-select__trigger{-webkit-user-select:none;user-select:none;cursor:default}.mc-select__no-options-message{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;position:relative;max-width:100%;height:var(--mc-option-size-height, 32px);cursor:default;outline:none;padding-left:var(--mc-option-size-horizontal-padding, 12px);padding-right:var(--mc-option-size-horizontal-padding, 12px)}.mc-select__match-list{display:flex;flex-wrap:wrap;overflow:hidden;max-height:calc(var(--mc-form-field-size-height, 32px) - var(--mc-form-field-size-border-width, 1px) * 2)}.mc-select__match-list .mc-tag{margin-right:4px}.mc-select__match-container{display:flex;flex-direction:row;justify-content:space-between;width:100%}.mc-select__match-container .mc-select__match-hidden-text{flex:0 0 70px;align-self:center;padding:0 8px;text-align:right}.mc-select__arrow-wrapper{display:flex;align-self:center}.mc-form-field-appearance-fill .mc-select__arrow-wrapper,.mc-form-field-appearance-standard .mc-select__arrow-wrapper{transform:translateY(-50%)}.mc-form-field-appearance-outline .mc-select__arrow-wrapper{transform:translateY(-25%)}.mc-select__panel{min-width:100%;max-width:var(--mc-select-panel-size-max-width, 640px);overflow:hidden;border-width:var(--mc-select-panel-size-border-width, 1px);border-style:solid;border-bottom-left-radius:var(--mc-select-panel-size-border-radius, 4px);border-bottom-right-radius:var(--mc-select-panel-size-border-radius, 4px)}.mc-select__panel .mc-optgroup-label,.mc-select__panel .mc-option{font-size:inherit;line-height:var(--mc-option-size-height, 32px);height:var(--mc-option-size-height, 32px)}.mc-select__content{max-height:var(--mc-select-panel-size-max-height, 232px);padding:var(--mc-select-panel-size-vertical-padding, 4px) 0;overflow:hidden auto}.mc-select__content .cdk-virtual-scroll-viewport{min-height:calc(var(--mc-select-panel-size-max-height, 232px) - 8px);max-height:calc(var(--mc-select-panel-size-max-height, 232px) - 8px)}.mc-form-field-type-select:not(.mc-disabled) .mc-form-field-flex{cursor:pointer}.mc-select__search-container{border-bottom-width:1px;border-bottom-style:solid}\n"] }]
1097
1114
  }], ctorParameters: function () {
1098
- return [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i1.ErrorStateMatcher }, { type: i0.ElementRef }, { type: i3.Directionality, decorators: [{
1115
+ return [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i2.ErrorStateMatcher }, { type: i0.ElementRef }, { type: i3.Directionality, decorators: [{
1099
1116
  type: Optional
1100
1117
  }] }, { type: i4.NgForm, decorators: [{
1101
1118
  type: Optional
1102
1119
  }] }, { type: i4.FormGroupDirective, decorators: [{
1103
1120
  type: Optional
1104
- }] }, { type: i1$1.McFormField, decorators: [{
1121
+ }] }, { type: i1.McFormField, decorators: [{
1105
1122
  type: Optional
1106
1123
  }] }, { type: i4.NgControl, decorators: [{
1107
1124
  type: Self
@@ -1110,6 +1127,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
1110
1127
  }] }, { type: undefined, decorators: [{
1111
1128
  type: Inject,
1112
1129
  args: [MC_SELECT_SCROLL_STRATEGY]
1130
+ }] }, { type: i2.McLocaleService, decorators: [{
1131
+ type: Optional
1132
+ }, {
1133
+ type: Inject,
1134
+ args: [MC_LOCALE_SERVICE]
1113
1135
  }] }];
1114
1136
  }, propDecorators: { trigger: [{
1115
1137
  type: ViewChild,
@@ -1132,6 +1154,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
1132
1154
  }], customMatcher: [{
1133
1155
  type: ContentChild,
1134
1156
  args: [McSelectMatcher, { static: false }]
1157
+ }], customTagTemplateRef: [{
1158
+ type: ContentChild,
1159
+ args: ['mcSelectTagContent', { static: false, read: TemplateRef }]
1135
1160
  }], cleaner: [{
1136
1161
  type: ContentChild,
1137
1162
  args: ['mcSelectCleaner', { static: true }]