@angular/material 19.0.0-next.9 → 19.0.0-rc.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 (219) hide show
  1. package/autocomplete/_autocomplete-theme.scss +8 -4
  2. package/autocomplete/index.d.ts +5 -6
  3. package/badge/_badge-theme.scss +10 -6
  4. package/bottom-sheet/_bottom-sheet-theme.scss +8 -4
  5. package/button/_button-theme.scss +10 -6
  6. package/button/_fab-theme.scss +10 -6
  7. package/button/_icon-button-theme.scss +8 -4
  8. package/button/index.d.ts +1 -1
  9. package/button-toggle/_button-toggle-theme.scss +11 -6
  10. package/card/_card-theme.scss +8 -4
  11. package/card/index.d.ts +2 -3
  12. package/checkbox/_checkbox-theme.scss +10 -6
  13. package/chips/_chips-theme.scss +10 -6
  14. package/core/_core-theme.scss +4 -7
  15. package/core/_core.scss +2 -5
  16. package/core/option/_optgroup-theme.scss +8 -4
  17. package/core/option/_option-theme.scss +10 -6
  18. package/core/ripple/_ripple-theme.scss +8 -4
  19. package/core/selection/pseudo-checkbox/_pseudo-checkbox-theme.scss +10 -6
  20. package/core/theming/_config-validation.scss +4 -4
  21. package/core/theming/_definition.scss +12 -2
  22. package/core/tokens/_m3-system.scss +55 -39
  23. package/datepicker/_datepicker-theme.scss +10 -6
  24. package/datepicker/index.d.ts +32 -33
  25. package/dialog/_dialog-theme.scss +8 -4
  26. package/divider/_divider-theme.scss +8 -4
  27. package/expansion/_expansion-theme.scss +8 -4
  28. package/fesm2022/autocomplete/testing.mjs +2 -5
  29. package/fesm2022/autocomplete/testing.mjs.map +1 -1
  30. package/fesm2022/autocomplete.mjs +220 -141
  31. package/fesm2022/autocomplete.mjs.map +1 -1
  32. package/fesm2022/badge/testing.mjs +2 -5
  33. package/fesm2022/badge/testing.mjs.map +1 -1
  34. package/fesm2022/badge.mjs +41 -30
  35. package/fesm2022/badge.mjs.map +1 -1
  36. package/fesm2022/bottom-sheet/testing.mjs +1 -1
  37. package/fesm2022/bottom-sheet/testing.mjs.map +1 -1
  38. package/fesm2022/bottom-sheet.mjs +76 -54
  39. package/fesm2022/bottom-sheet.mjs.map +1 -1
  40. package/fesm2022/button/testing.mjs +2 -2
  41. package/fesm2022/button/testing.mjs.map +1 -1
  42. package/fesm2022/button-toggle/testing.mjs +4 -7
  43. package/fesm2022/button-toggle/testing.mjs.map +1 -1
  44. package/fesm2022/button-toggle.mjs +78 -40
  45. package/fesm2022/button-toggle.mjs.map +1 -1
  46. package/fesm2022/button.mjs +87 -60
  47. package/fesm2022/button.mjs.map +1 -1
  48. package/fesm2022/card/testing.mjs +3 -6
  49. package/fesm2022/card/testing.mjs.map +1 -1
  50. package/fesm2022/card.mjs +38 -40
  51. package/fesm2022/card.mjs.map +1 -1
  52. package/fesm2022/checkbox/testing.mjs +4 -7
  53. package/fesm2022/checkbox/testing.mjs.map +1 -1
  54. package/fesm2022/checkbox.mjs +99 -56
  55. package/fesm2022/checkbox.mjs.map +1 -1
  56. package/fesm2022/chips/testing.mjs +11 -14
  57. package/fesm2022/chips/testing.mjs.map +1 -1
  58. package/fesm2022/chips.mjs +303 -251
  59. package/fesm2022/chips.mjs.map +1 -1
  60. package/fesm2022/core/testing.mjs +5 -11
  61. package/fesm2022/core/testing.mjs.map +1 -1
  62. package/fesm2022/core.mjs +217 -160
  63. package/fesm2022/core.mjs.map +1 -1
  64. package/fesm2022/datepicker/testing.mjs +13 -22
  65. package/fesm2022/datepicker/testing.mjs.map +1 -1
  66. package/fesm2022/datepicker.mjs +788 -533
  67. package/fesm2022/datepicker.mjs.map +1 -1
  68. package/fesm2022/dialog/testing.mjs +15 -9
  69. package/fesm2022/dialog/testing.mjs.map +1 -1
  70. package/fesm2022/dialog.mjs +210 -140
  71. package/fesm2022/dialog.mjs.map +1 -1
  72. package/fesm2022/divider/testing.mjs +1 -1
  73. package/fesm2022/divider/testing.mjs.map +1 -1
  74. package/fesm2022/divider.mjs +7 -9
  75. package/fesm2022/divider.mjs.map +1 -1
  76. package/fesm2022/expansion/testing.mjs +7 -10
  77. package/fesm2022/expansion/testing.mjs.map +1 -1
  78. package/fesm2022/expansion.mjs +76 -65
  79. package/fesm2022/expansion.mjs.map +1 -1
  80. package/fesm2022/form-field/testing.mjs +12 -15
  81. package/fesm2022/form-field/testing.mjs.map +1 -1
  82. package/fesm2022/form-field.mjs +165 -111
  83. package/fesm2022/form-field.mjs.map +1 -1
  84. package/fesm2022/grid-list/testing.mjs +11 -17
  85. package/fesm2022/grid-list/testing.mjs.map +1 -1
  86. package/fesm2022/grid-list.mjs +65 -43
  87. package/fesm2022/grid-list.mjs.map +1 -1
  88. package/fesm2022/icon/testing.mjs +6 -6
  89. package/fesm2022/icon/testing.mjs.map +1 -1
  90. package/fesm2022/icon.mjs +62 -42
  91. package/fesm2022/icon.mjs.map +1 -1
  92. package/fesm2022/input/testing.mjs +3 -3
  93. package/fesm2022/input/testing.mjs.map +1 -1
  94. package/fesm2022/input.mjs +101 -69
  95. package/fesm2022/input.mjs.map +1 -1
  96. package/fesm2022/list/testing.mjs +21 -38
  97. package/fesm2022/list/testing.mjs.map +1 -1
  98. package/fesm2022/list.mjs +175 -164
  99. package/fesm2022/list.mjs.map +1 -1
  100. package/fesm2022/menu/testing.mjs +3 -6
  101. package/fesm2022/menu/testing.mjs.map +1 -1
  102. package/fesm2022/menu.mjs +171 -118
  103. package/fesm2022/menu.mjs.map +1 -1
  104. package/fesm2022/paginator/testing.mjs +10 -13
  105. package/fesm2022/paginator/testing.mjs.map +1 -1
  106. package/fesm2022/paginator.mjs +79 -54
  107. package/fesm2022/paginator.mjs.map +1 -1
  108. package/fesm2022/progress-bar/testing.mjs +1 -1
  109. package/fesm2022/progress-bar/testing.mjs.map +1 -1
  110. package/fesm2022/progress-bar.mjs +33 -32
  111. package/fesm2022/progress-bar.mjs.map +1 -1
  112. package/fesm2022/progress-spinner/testing.mjs +1 -1
  113. package/fesm2022/progress-spinner/testing.mjs.map +1 -1
  114. package/fesm2022/progress-spinner.mjs +25 -11
  115. package/fesm2022/progress-spinner.mjs.map +1 -1
  116. package/fesm2022/radio/testing.mjs +6 -12
  117. package/fesm2022/radio/testing.mjs.map +1 -1
  118. package/fesm2022/radio.mjs +119 -82
  119. package/fesm2022/radio.mjs.map +1 -1
  120. package/fesm2022/select/testing.mjs +6 -9
  121. package/fesm2022/select/testing.mjs.map +1 -1
  122. package/fesm2022/select.mjs +215 -177
  123. package/fesm2022/select.mjs.map +1 -1
  124. package/fesm2022/sidenav/testing.mjs +6 -6
  125. package/fesm2022/sidenav/testing.mjs.map +1 -1
  126. package/fesm2022/sidenav.mjs +125 -112
  127. package/fesm2022/sidenav.mjs.map +1 -1
  128. package/fesm2022/slide-toggle/testing.mjs +3 -6
  129. package/fesm2022/slide-toggle/testing.mjs.map +1 -1
  130. package/fesm2022/slide-toggle.mjs +72 -41
  131. package/fesm2022/slide-toggle.mjs.map +1 -1
  132. package/fesm2022/slider/testing.mjs +2 -2
  133. package/fesm2022/slider/testing.mjs.map +1 -1
  134. package/fesm2022/slider.mjs +255 -185
  135. package/fesm2022/slider.mjs.map +1 -1
  136. package/fesm2022/snack-bar/testing.mjs +4 -7
  137. package/fesm2022/snack-bar/testing.mjs.map +1 -1
  138. package/fesm2022/snack-bar.mjs +133 -98
  139. package/fesm2022/snack-bar.mjs.map +1 -1
  140. package/fesm2022/sort/testing.mjs +3 -6
  141. package/fesm2022/sort/testing.mjs.map +1 -1
  142. package/fesm2022/sort.mjs +89 -68
  143. package/fesm2022/sort.mjs.map +1 -1
  144. package/fesm2022/stepper/testing.mjs +4 -4
  145. package/fesm2022/stepper/testing.mjs.map +1 -1
  146. package/fesm2022/stepper.mjs +133 -95
  147. package/fesm2022/stepper.mjs.map +1 -1
  148. package/fesm2022/table/testing.mjs +13 -25
  149. package/fesm2022/table/testing.mjs.map +1 -1
  150. package/fesm2022/table.mjs +164 -159
  151. package/fesm2022/table.mjs.map +1 -1
  152. package/fesm2022/tabs/testing.mjs +5 -5
  153. package/fesm2022/tabs/testing.mjs.map +1 -1
  154. package/fesm2022/tabs.mjs +308 -225
  155. package/fesm2022/tabs.mjs.map +1 -1
  156. package/fesm2022/timepicker/testing.mjs +7 -16
  157. package/fesm2022/timepicker/testing.mjs.map +1 -1
  158. package/fesm2022/timepicker.mjs +152 -146
  159. package/fesm2022/timepicker.mjs.map +1 -1
  160. package/fesm2022/toolbar/testing.mjs +2 -5
  161. package/fesm2022/toolbar/testing.mjs.map +1 -1
  162. package/fesm2022/toolbar.mjs +22 -12
  163. package/fesm2022/toolbar.mjs.map +1 -1
  164. package/fesm2022/tooltip/testing.mjs +6 -9
  165. package/fesm2022/tooltip/testing.mjs.map +1 -1
  166. package/fesm2022/tooltip.mjs +93 -69
  167. package/fesm2022/tooltip.mjs.map +1 -1
  168. package/fesm2022/tree/testing.mjs +3 -6
  169. package/fesm2022/tree/testing.mjs.map +1 -1
  170. package/fesm2022/tree.mjs +48 -46
  171. package/fesm2022/tree.mjs.map +1 -1
  172. package/form-field/_form-field-theme.scss +9 -5
  173. package/form-field/index.d.ts +8 -9
  174. package/grid-list/_grid-list-theme.scss +8 -4
  175. package/icon/_icon-theme.scss +10 -6
  176. package/input/_input-theme.scss +8 -4
  177. package/list/_list-theme.scss +8 -4
  178. package/list/index.d.ts +20 -21
  179. package/menu/_menu-theme.scss +8 -4
  180. package/menu/index.d.ts +8 -9
  181. package/package.json +2 -2
  182. package/paginator/_paginator-theme.scss +8 -4
  183. package/prebuilt-themes/azure-blue.css +1 -1
  184. package/prebuilt-themes/cyan-orange.css +1 -1
  185. package/prebuilt-themes/deeppurple-amber.css +1 -1
  186. package/prebuilt-themes/indigo-pink.css +1 -1
  187. package/prebuilt-themes/magenta-violet.css +1 -1
  188. package/prebuilt-themes/pink-bluegrey.css +1 -1
  189. package/prebuilt-themes/purple-green.css +1 -1
  190. package/prebuilt-themes/rose-red.css +1 -1
  191. package/progress-bar/_progress-bar-theme.scss +11 -9
  192. package/progress-spinner/_progress-spinner-theme.scss +11 -9
  193. package/progress-spinner/index.d.ts +3 -4
  194. package/radio/_radio-theme.scss +10 -6
  195. package/radio/index.d.ts +2 -3
  196. package/schematics/ng-add/index.js +1 -1
  197. package/schematics/ng-add/index.mjs +1 -1
  198. package/schematics/ng-add/theming/create-custom-theme.js +1 -6
  199. package/schematics/ng-add/theming/create-custom-theme.mjs +1 -6
  200. package/schematics/ng-generate/theme-color/index_bundled.js +35 -9
  201. package/schematics/ng-generate/theme-color/index_bundled.js.map +2 -2
  202. package/schematics/ng-update/index_bundled.js +6 -1
  203. package/schematics/ng-update/index_bundled.js.map +1 -1
  204. package/select/_select-theme.scss +10 -6
  205. package/select/index.d.ts +6 -7
  206. package/sidenav/_sidenav-theme.scss +8 -4
  207. package/slide-toggle/_slide-toggle-theme.scss +10 -6
  208. package/slider/_slider-theme.scss +10 -6
  209. package/snack-bar/_snack-bar-theme.scss +10 -6
  210. package/sort/_sort-theme.scss +8 -4
  211. package/stepper/_stepper-theme.scss +10 -6
  212. package/stepper/index.d.ts +14 -15
  213. package/table/_table-theme.scss +8 -4
  214. package/tabs/_tabs-theme.scss +10 -6
  215. package/timepicker/_timepicker-theme.scss +10 -6
  216. package/toolbar/_toolbar-theme.scss +10 -6
  217. package/tooltip/_tooltip-theme.scss +8 -4
  218. package/tooltip/index.d.ts +5 -6
  219. package/tree/_tree-theme.scss +8 -4
@@ -2,20 +2,20 @@ import * as i0 from '@angular/core';
2
2
  import { InjectionToken, inject, ChangeDetectorRef, ElementRef, EventEmitter, booleanAttribute, TemplateRef, Component, ViewEncapsulation, ChangeDetectionStrategy, ViewChild, ContentChildren, Input, Output, Directive, forwardRef, ViewContainerRef, NgZone, Injector, afterNextRender, NgModule } from '@angular/core';
3
3
  import { MAT_OPTION_PARENT_COMPONENT, MatOption, MAT_OPTGROUP, MatOptionSelectionChange, _countGroupLabelsBeforeOption, _getOptionScrollPosition, MatOptionModule, MatCommonModule } from '@angular/material/core';
4
4
  export { MatOptgroup, MatOption } from '@angular/material/core';
5
- import { DOCUMENT, CommonModule } from '@angular/common';
6
5
  import { ViewportRuler, CdkScrollableModule } from '@angular/cdk/scrolling';
7
6
  import { Overlay, OverlayConfig, OverlayModule } from '@angular/cdk/overlay';
8
7
  import { ActiveDescendantKeyManager, removeAriaReferencedId, addAriaReferencedId } from '@angular/cdk/a11y';
9
8
  import { Platform, _getEventTarget } from '@angular/cdk/platform';
10
9
  import { trigger, state, style, transition, group, animate } from '@angular/animations';
11
- import { Subscription, Subject, defer, merge, of, fromEvent, Observable } from 'rxjs';
10
+ import { Subscription, Subject, merge, of, defer, fromEvent, Observable } from 'rxjs';
12
11
  import { Directionality } from '@angular/cdk/bidi';
13
- import { ESCAPE, hasModifierKey, UP_ARROW, ENTER, DOWN_ARROW, TAB } from '@angular/cdk/keycodes';
12
+ import { hasModifierKey, ESCAPE, ENTER, UP_ARROW, DOWN_ARROW, TAB } from '@angular/cdk/keycodes';
14
13
  import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';
15
14
  import { TemplatePortal } from '@angular/cdk/portal';
15
+ import { DOCUMENT } from '@angular/common';
16
16
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
17
17
  import { MAT_FORM_FIELD } from '@angular/material/form-field';
18
- import { startWith, switchMap, filter, map, tap, delay, take } from 'rxjs/operators';
18
+ import { filter, map, startWith, switchMap, tap, delay, take } from 'rxjs/operators';
19
19
 
20
20
  // Animation values come from
21
21
  // TODO(mmalerba): Ideally find a way to import the values from MDC's code.
@@ -40,6 +40,8 @@ const panelAnimation = trigger('panelAnimation', [
40
40
  let _uniqueAutocompleteIdCounter = 0;
41
41
  /** Event object that is emitted when an autocomplete option is selected. */
42
42
  class MatAutocompleteSelectedEvent {
43
+ source;
44
+ option;
43
45
  constructor(
44
46
  /** Reference to the autocomplete panel that emitted the event. */
45
47
  source,
@@ -65,15 +67,76 @@ function MAT_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY() {
65
67
  }
66
68
  /** Autocomplete component. */
67
69
  class MatAutocomplete {
70
+ _changeDetectorRef = inject(ChangeDetectorRef);
71
+ _elementRef = inject(ElementRef);
72
+ _defaults = inject(MAT_AUTOCOMPLETE_DEFAULT_OPTIONS);
73
+ _activeOptionChanges = Subscription.EMPTY;
74
+ /** Emits when the panel animation is done. Null if the panel doesn't animate. */
75
+ _animationDone = new EventEmitter();
76
+ /** Manages active item in option list based on key events. */
77
+ _keyManager;
78
+ /** Whether the autocomplete panel should be visible, depending on option length. */
79
+ showPanel = false;
68
80
  /** Whether the autocomplete panel is open. */
69
81
  get isOpen() {
70
82
  return this._isOpen && this.showPanel;
71
83
  }
84
+ _isOpen = false;
85
+ /** Latest trigger that opened the autocomplete. */
86
+ _latestOpeningTrigger;
72
87
  /** @docs-private Sets the theme color of the panel. */
73
88
  _setColor(value) {
74
89
  this._color = value;
75
90
  this._changeDetectorRef.markForCheck();
76
91
  }
92
+ /** @docs-private theme color of the panel */
93
+ _color;
94
+ // The @ViewChild query for TemplateRef here needs to be static because some code paths
95
+ // lead to the overlay being created before change detection has finished for this component.
96
+ // Notably, another component may trigger `focus` on the autocomplete-trigger.
97
+ /** @docs-private */
98
+ template;
99
+ /** Element for the panel containing the autocomplete options. */
100
+ panel;
101
+ /** Reference to all options within the autocomplete. */
102
+ options;
103
+ /** Reference to all option groups within the autocomplete. */
104
+ optionGroups;
105
+ /** Aria label of the autocomplete. */
106
+ ariaLabel;
107
+ /** Input that can be used to specify the `aria-labelledby` attribute. */
108
+ ariaLabelledby;
109
+ /** Function that maps an option's control value to its display value in the trigger. */
110
+ displayWith = null;
111
+ /**
112
+ * Whether the first option should be highlighted when the autocomplete panel is opened.
113
+ * Can be configured globally through the `MAT_AUTOCOMPLETE_DEFAULT_OPTIONS` token.
114
+ */
115
+ autoActiveFirstOption;
116
+ /** Whether the active option should be selected as the user is navigating. */
117
+ autoSelectActiveOption;
118
+ /**
119
+ * Whether the user is required to make a selection when they're interacting with the
120
+ * autocomplete. If the user moves away from the autocomplete without selecting an option from
121
+ * the list, the value will be reset. If the user opens the panel and closes it without
122
+ * interacting or selecting a value, the initial value will be kept.
123
+ */
124
+ requireSelection;
125
+ /**
126
+ * Specify the width of the autocomplete panel. Can be any CSS sizing value, otherwise it will
127
+ * match the width of its host.
128
+ */
129
+ panelWidth;
130
+ /** Whether ripples are disabled within the autocomplete panel. */
131
+ disableRipple;
132
+ /** Event that is emitted whenever an option from the list is selected. */
133
+ optionSelected = new EventEmitter();
134
+ /** Event that is emitted when the autocomplete panel is opened. */
135
+ opened = new EventEmitter();
136
+ /** Event that is emitted when the autocomplete panel is closed. */
137
+ closed = new EventEmitter();
138
+ /** Emits whenever an option is activated. */
139
+ optionActivated = new EventEmitter();
77
140
  /**
78
141
  * Takes classes set on the host mat-autocomplete element and applies them to the panel
79
142
  * inside the overlay container to allow for easy styling.
@@ -82,6 +145,7 @@ class MatAutocomplete {
82
145
  this._classList = value;
83
146
  this._elementRef.nativeElement.className = '';
84
147
  }
148
+ _classList;
85
149
  /** Whether checkmark indicator for single-selection options is hidden. */
86
150
  get hideSingleSelectionIndicator() {
87
151
  return this._hideSingleSelectionIndicator;
@@ -90,6 +154,7 @@ class MatAutocomplete {
90
154
  this._hideSingleSelectionIndicator = value;
91
155
  this._syncParentProperties();
92
156
  }
157
+ _hideSingleSelectionIndicator;
93
158
  /** Syncs the parent state with the individual options. */
94
159
  _syncParentProperties() {
95
160
  if (this.options) {
@@ -98,28 +163,14 @@ class MatAutocomplete {
98
163
  }
99
164
  }
100
165
  }
166
+ /** Unique ID to be used by autocomplete trigger's "aria-owns" property. */
167
+ id = `mat-autocomplete-${_uniqueAutocompleteIdCounter++}`;
168
+ /**
169
+ * Tells any descendant `mat-optgroup` to use the inert a11y pattern.
170
+ * @docs-private
171
+ */
172
+ inertGroups;
101
173
  constructor() {
102
- this._changeDetectorRef = inject(ChangeDetectorRef);
103
- this._elementRef = inject(ElementRef);
104
- this._defaults = inject(MAT_AUTOCOMPLETE_DEFAULT_OPTIONS);
105
- this._activeOptionChanges = Subscription.EMPTY;
106
- /** Emits when the panel animation is done. Null if the panel doesn't animate. */
107
- this._animationDone = new EventEmitter();
108
- /** Whether the autocomplete panel should be visible, depending on option length. */
109
- this.showPanel = false;
110
- this._isOpen = false;
111
- /** Function that maps an option's control value to its display value in the trigger. */
112
- this.displayWith = null;
113
- /** Event that is emitted whenever an option from the list is selected. */
114
- this.optionSelected = new EventEmitter();
115
- /** Event that is emitted when the autocomplete panel is opened. */
116
- this.opened = new EventEmitter();
117
- /** Event that is emitted when the autocomplete panel is closed. */
118
- this.closed = new EventEmitter();
119
- /** Emits whenever an option is activated. */
120
- this.optionActivated = new EventEmitter();
121
- /** Unique ID to be used by autocomplete trigger's "aria-owns" property. */
122
- this.id = `mat-autocomplete-${_uniqueAutocompleteIdCounter++}`;
123
174
  const platform = inject(Platform);
124
175
  // TODO(crisbeto): the problem that the `inertGroups` option resolves is only present on
125
176
  // Safari using VoiceOver. We should occasionally check back to see whether the bug
@@ -196,8 +247,8 @@ class MatAutocomplete {
196
247
  _skipPredicate() {
197
248
  return false;
198
249
  }
199
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatAutocomplete, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
200
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "19.0.0-next.10", type: MatAutocomplete, isStandalone: true, selector: "mat-autocomplete", inputs: { ariaLabel: ["aria-label", "ariaLabel"], ariaLabelledby: ["aria-labelledby", "ariaLabelledby"], displayWith: "displayWith", autoActiveFirstOption: ["autoActiveFirstOption", "autoActiveFirstOption", booleanAttribute], autoSelectActiveOption: ["autoSelectActiveOption", "autoSelectActiveOption", booleanAttribute], requireSelection: ["requireSelection", "requireSelection", booleanAttribute], panelWidth: "panelWidth", disableRipple: ["disableRipple", "disableRipple", booleanAttribute], classList: ["class", "classList"], hideSingleSelectionIndicator: ["hideSingleSelectionIndicator", "hideSingleSelectionIndicator", booleanAttribute] }, outputs: { optionSelected: "optionSelected", opened: "opened", closed: "closed", optionActivated: "optionActivated" }, host: { classAttribute: "mat-mdc-autocomplete" }, providers: [{ provide: MAT_OPTION_PARENT_COMPONENT, useExisting: MatAutocomplete }], queries: [{ propertyName: "options", predicate: MatOption, descendants: true }, { propertyName: "optionGroups", predicate: MAT_OPTGROUP, descendants: true }], viewQueries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true, static: true }, { propertyName: "panel", first: true, predicate: ["panel"], descendants: true }], exportAs: ["matAutocomplete"], ngImport: i0, template: "<ng-template let-formFieldId=\"id\">\n <div\n class=\"mat-mdc-autocomplete-panel mdc-menu-surface mdc-menu-surface--open\"\n role=\"listbox\"\n [id]=\"id\"\n [class]=\"_classList\"\n [class.mat-mdc-autocomplete-visible]=\"showPanel\"\n [class.mat-mdc-autocomplete-hidden]=\"!showPanel\"\n [class.mat-primary]=\"_color === 'primary'\"\n [class.mat-accent]=\"_color === 'accent'\"\n [class.mat-warn]=\"_color === 'warn'\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"_getPanelAriaLabelledby(formFieldId)\"\n [@panelAnimation]=\"isOpen ? 'visible' : 'hidden'\"\n (@panelAnimation.done)=\"_animationDone.next($event)\"\n #panel>\n <ng-content></ng-content>\n </div>\n</ng-template>\n", styles: ["div.mat-mdc-autocomplete-panel{width:100%;max-height:256px;visibility:hidden;transform-origin:center top;overflow:auto;padding:8px 0;box-sizing:border-box;position:static;border-radius:var(--mat-autocomplete-container-shape, var(--mat-sys-corner-extra-small));box-shadow:var(--mat-autocomplete-container-elevation-shadow, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12));background-color:var(--mat-autocomplete-background-color, var(--mat-sys-surface-container))}@media(forced-colors: active){div.mat-mdc-autocomplete-panel{outline:solid 1px}}.cdk-overlay-pane:not(.mat-mdc-autocomplete-panel-above) div.mat-mdc-autocomplete-panel{border-top-left-radius:0;border-top-right-radius:0}.mat-mdc-autocomplete-panel-above div.mat-mdc-autocomplete-panel{border-bottom-left-radius:0;border-bottom-right-radius:0;transform-origin:center bottom}div.mat-mdc-autocomplete-panel.mat-mdc-autocomplete-visible{visibility:visible}div.mat-mdc-autocomplete-panel.mat-mdc-autocomplete-hidden{visibility:hidden;pointer-events:none}mat-autocomplete{display:none}"], animations: [panelAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
250
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatAutocomplete, deps: [], target: i0.ɵɵFactoryTarget.Component });
251
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "19.0.0-next.10", type: MatAutocomplete, isStandalone: true, selector: "mat-autocomplete", inputs: { ariaLabel: ["aria-label", "ariaLabel"], ariaLabelledby: ["aria-labelledby", "ariaLabelledby"], displayWith: "displayWith", autoActiveFirstOption: ["autoActiveFirstOption", "autoActiveFirstOption", booleanAttribute], autoSelectActiveOption: ["autoSelectActiveOption", "autoSelectActiveOption", booleanAttribute], requireSelection: ["requireSelection", "requireSelection", booleanAttribute], panelWidth: "panelWidth", disableRipple: ["disableRipple", "disableRipple", booleanAttribute], classList: ["class", "classList"], hideSingleSelectionIndicator: ["hideSingleSelectionIndicator", "hideSingleSelectionIndicator", booleanAttribute] }, outputs: { optionSelected: "optionSelected", opened: "opened", closed: "closed", optionActivated: "optionActivated" }, host: { classAttribute: "mat-mdc-autocomplete" }, providers: [{ provide: MAT_OPTION_PARENT_COMPONENT, useExisting: MatAutocomplete }], queries: [{ propertyName: "options", predicate: MatOption, descendants: true }, { propertyName: "optionGroups", predicate: MAT_OPTGROUP, descendants: true }], viewQueries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true, static: true }, { propertyName: "panel", first: true, predicate: ["panel"], descendants: true }], exportAs: ["matAutocomplete"], ngImport: i0, template: "<ng-template let-formFieldId=\"id\">\n <div\n class=\"mat-mdc-autocomplete-panel mdc-menu-surface mdc-menu-surface--open\"\n role=\"listbox\"\n [id]=\"id\"\n [class]=\"_classList\"\n [class.mat-mdc-autocomplete-visible]=\"showPanel\"\n [class.mat-mdc-autocomplete-hidden]=\"!showPanel\"\n [class.mat-primary]=\"_color === 'primary'\"\n [class.mat-accent]=\"_color === 'accent'\"\n [class.mat-warn]=\"_color === 'warn'\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"_getPanelAriaLabelledby(formFieldId)\"\n [@panelAnimation]=\"isOpen ? 'visible' : 'hidden'\"\n (@panelAnimation.done)=\"_animationDone.next($event)\"\n #panel>\n <ng-content></ng-content>\n </div>\n</ng-template>\n", styles: ["div.mat-mdc-autocomplete-panel{width:100%;max-height:256px;visibility:hidden;transform-origin:center top;overflow:auto;padding:8px 0;box-sizing:border-box;position:static;border-radius:var(--mat-autocomplete-container-shape, var(--mat-sys-corner-extra-small));box-shadow:var(--mat-autocomplete-container-elevation-shadow, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12));background-color:var(--mat-autocomplete-background-color, var(--mat-sys-surface-container))}@media(forced-colors: active){div.mat-mdc-autocomplete-panel{outline:solid 1px}}.cdk-overlay-pane:not(.mat-mdc-autocomplete-panel-above) div.mat-mdc-autocomplete-panel{border-top-left-radius:0;border-top-right-radius:0}.mat-mdc-autocomplete-panel-above div.mat-mdc-autocomplete-panel{border-bottom-left-radius:0;border-bottom-right-radius:0;transform-origin:center bottom}div.mat-mdc-autocomplete-panel.mat-mdc-autocomplete-visible{visibility:visible}div.mat-mdc-autocomplete-panel.mat-mdc-autocomplete-hidden{visibility:hidden;pointer-events:none}mat-autocomplete{display:none}"], animations: [panelAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
201
252
  }
202
253
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatAutocomplete, decorators: [{
203
254
  type: Component,
@@ -259,11 +310,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10",
259
310
  * as a connection point for an autocomplete panel.
260
311
  */
261
312
  class MatAutocompleteOrigin {
262
- constructor() {
263
- this.elementRef = inject(ElementRef);
264
- }
265
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatAutocompleteOrigin, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
266
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0-next.10", type: MatAutocompleteOrigin, isStandalone: true, selector: "[matAutocompleteOrigin]", exportAs: ["matAutocompleteOrigin"], ngImport: i0 }); }
313
+ elementRef = inject(ElementRef);
314
+ constructor() { }
315
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatAutocompleteOrigin, deps: [], target: i0.ɵɵFactoryTarget.Directive });
316
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0-next.10", type: MatAutocompleteOrigin, isStandalone: true, selector: "[matAutocompleteOrigin]", exportAs: ["matAutocompleteOrigin"], ngImport: i0 });
267
317
  }
268
318
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatAutocompleteOrigin, decorators: [{
269
319
  type: Directive,
@@ -311,104 +361,99 @@ const MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER = {
311
361
  };
312
362
  /** Base class with all of the `MatAutocompleteTrigger` functionality. */
313
363
  class MatAutocompleteTrigger {
314
- constructor() {
315
- this._element = inject(ElementRef);
316
- this._overlay = inject(Overlay);
317
- this._viewContainerRef = inject(ViewContainerRef);
318
- this._zone = inject(NgZone);
319
- this._changeDetectorRef = inject(ChangeDetectorRef);
320
- this._dir = inject(Directionality, { optional: true });
321
- this._formField = inject(MAT_FORM_FIELD, { optional: true, host: true });
322
- this._document = inject(DOCUMENT);
323
- this._viewportRuler = inject(ViewportRuler);
324
- this._defaults = inject(MAT_AUTOCOMPLETE_DEFAULT_OPTIONS, { optional: true });
325
- this._componentDestroyed = false;
326
- this._scrollStrategy = inject(MAT_AUTOCOMPLETE_SCROLL_STRATEGY);
327
- /** Whether or not the label state is being overridden. */
328
- this._manuallyFloatingLabel = false;
329
- /** Subscription to viewport size changes. */
330
- this._viewportSubscription = Subscription.EMPTY;
331
- /** Implements BreakpointObserver to be used to detect handset landscape */
332
- this._breakpointObserver = inject(BreakpointObserver);
333
- this._handsetLandscapeSubscription = Subscription.EMPTY;
334
- /**
335
- * Whether the autocomplete can open the next time it is focused. Used to prevent a focused,
336
- * closed autocomplete from being reopened if the user switches to another browser tab and then
337
- * comes back.
338
- */
339
- this._canOpenOnNextFocus = true;
340
- /** Stream of keyboard events that can close the panel. */
341
- this._closeKeyEventStream = new Subject();
342
- /**
343
- * Event handler for when the window is blurred. Needs to be an
344
- * arrow function in order to preserve the context.
345
- */
346
- this._windowBlurHandler = () => {
347
- // If the user blurred the window while the autocomplete is focused, it means that it'll be
348
- // refocused when they come back. In this case we want to skip the first focus event, if the
349
- // pane was closed, in order to avoid reopening it unintentionally.
350
- this._canOpenOnNextFocus =
351
- this._document.activeElement !== this._element.nativeElement || this.panelOpen;
352
- };
353
- /** `View -> model callback called when value changes` */
354
- this._onChange = () => { };
355
- /** `View -> model callback called when autocomplete has been touched` */
356
- this._onTouched = () => { };
357
- /**
358
- * Position of the autocomplete panel relative to the trigger element. A position of `auto`
359
- * will render the panel underneath the trigger if there is enough space for it to fit in
360
- * the viewport, otherwise the panel will be shown above it. If the position is set to
361
- * `above` or `below`, the panel will always be shown above or below the trigger. no matter
362
- * whether it fits completely in the viewport.
363
- */
364
- this.position = 'auto';
365
- /**
366
- * `autocomplete` attribute to be set on the input element.
367
- * @docs-private
368
- */
369
- this.autocompleteAttribute = 'off';
370
- this._initialized = new Subject();
371
- this._injector = inject(Injector);
372
- /** Class to apply to the panel when it's above the input. */
373
- this._aboveClass = 'mat-mdc-autocomplete-panel-above';
374
- this._overlayAttached = false;
375
- /** Stream of changes to the selection state of the autocomplete options. */
376
- this.optionSelections = defer(() => {
377
- const options = this.autocomplete ? this.autocomplete.options : null;
378
- if (options) {
379
- return options.changes.pipe(startWith(options), switchMap(() => merge(...options.map(option => option.onSelectionChange))));
380
- }
381
- // If there are any subscribers before `ngAfterViewInit`, the `autocomplete` will be undefined.
382
- // Return a stream that we'll replace with the real one once everything is in place.
383
- return this._initialized.pipe(switchMap(() => this.optionSelections));
384
- });
385
- /** Handles keyboard events coming from the overlay panel. */
386
- this._handlePanelKeydown = (event) => {
387
- // Close when pressing ESCAPE or ALT + UP_ARROW, based on the a11y guidelines.
388
- // See: https://www.w3.org/TR/wai-aria-practices-1.1/#textbox-keyboard-interaction
389
- if ((event.keyCode === ESCAPE && !hasModifierKey(event)) ||
390
- (event.keyCode === UP_ARROW && hasModifierKey(event, 'altKey'))) {
391
- // If the user had typed something in before we autoselected an option, and they decided
392
- // to cancel the selection, restore the input value to the one they had typed in.
393
- if (this._pendingAutoselectedOption) {
394
- this._updateNativeInputValue(this._valueBeforeAutoSelection ?? '');
395
- this._pendingAutoselectedOption = null;
396
- }
397
- this._closeKeyEventStream.next();
398
- this._resetActiveItem();
399
- // We need to stop propagation, otherwise the event will eventually
400
- // reach the input itself and cause the overlay to be reopened.
401
- event.stopPropagation();
402
- event.preventDefault();
403
- }
404
- };
405
- /**
406
- * Track which modal we have modified the `aria-owns` attribute of. When the combobox trigger is
407
- * inside an aria-modal, we apply aria-owns to the parent modal with the `id` of the options
408
- * panel. Track the modal we have changed so we can undo the changes on destroy.
409
- */
410
- this._trackedModal = null;
411
- }
364
+ _element = inject(ElementRef);
365
+ _overlay = inject(Overlay);
366
+ _viewContainerRef = inject(ViewContainerRef);
367
+ _zone = inject(NgZone);
368
+ _changeDetectorRef = inject(ChangeDetectorRef);
369
+ _dir = inject(Directionality, { optional: true });
370
+ _formField = inject(MAT_FORM_FIELD, { optional: true, host: true });
371
+ _document = inject(DOCUMENT);
372
+ _viewportRuler = inject(ViewportRuler);
373
+ _defaults = inject(MAT_AUTOCOMPLETE_DEFAULT_OPTIONS, { optional: true });
374
+ _overlayRef;
375
+ _portal;
376
+ _componentDestroyed = false;
377
+ _scrollStrategy = inject(MAT_AUTOCOMPLETE_SCROLL_STRATEGY);
378
+ _keydownSubscription;
379
+ _outsideClickSubscription;
380
+ /** Old value of the native input. Used to work around issues with the `input` event on IE. */
381
+ _previousValue;
382
+ /** Value of the input element when the panel was attached (even if there are no options). */
383
+ _valueOnAttach;
384
+ /** Value on the previous keydown event. */
385
+ _valueOnLastKeydown;
386
+ /** Strategy that is used to position the panel. */
387
+ _positionStrategy;
388
+ /** Whether or not the label state is being overridden. */
389
+ _manuallyFloatingLabel = false;
390
+ /** The subscription for closing actions (some are bound to document). */
391
+ _closingActionsSubscription;
392
+ /** Subscription to viewport size changes. */
393
+ _viewportSubscription = Subscription.EMPTY;
394
+ /** Implements BreakpointObserver to be used to detect handset landscape */
395
+ _breakpointObserver = inject(BreakpointObserver);
396
+ _handsetLandscapeSubscription = Subscription.EMPTY;
397
+ /**
398
+ * Whether the autocomplete can open the next time it is focused. Used to prevent a focused,
399
+ * closed autocomplete from being reopened if the user switches to another browser tab and then
400
+ * comes back.
401
+ */
402
+ _canOpenOnNextFocus = true;
403
+ /** Value inside the input before we auto-selected an option. */
404
+ _valueBeforeAutoSelection;
405
+ /**
406
+ * Current option that we have auto-selected as the user is navigating,
407
+ * but which hasn't been propagated to the model value yet.
408
+ */
409
+ _pendingAutoselectedOption;
410
+ /** Stream of keyboard events that can close the panel. */
411
+ _closeKeyEventStream = new Subject();
412
+ /**
413
+ * Event handler for when the window is blurred. Needs to be an
414
+ * arrow function in order to preserve the context.
415
+ */
416
+ _windowBlurHandler = () => {
417
+ // If the user blurred the window while the autocomplete is focused, it means that it'll be
418
+ // refocused when they come back. In this case we want to skip the first focus event, if the
419
+ // pane was closed, in order to avoid reopening it unintentionally.
420
+ this._canOpenOnNextFocus =
421
+ this._document.activeElement !== this._element.nativeElement || this.panelOpen;
422
+ };
423
+ /** `View -> model callback called when value changes` */
424
+ _onChange = () => { };
425
+ /** `View -> model callback called when autocomplete has been touched` */
426
+ _onTouched = () => { };
427
+ /** The autocomplete panel to be attached to this trigger. */
428
+ autocomplete;
429
+ /**
430
+ * Position of the autocomplete panel relative to the trigger element. A position of `auto`
431
+ * will render the panel underneath the trigger if there is enough space for it to fit in
432
+ * the viewport, otherwise the panel will be shown above it. If the position is set to
433
+ * `above` or `below`, the panel will always be shown above or below the trigger. no matter
434
+ * whether it fits completely in the viewport.
435
+ */
436
+ position = 'auto';
437
+ /**
438
+ * Reference relative to which to position the autocomplete panel.
439
+ * Defaults to the autocomplete trigger element.
440
+ */
441
+ connectedTo;
442
+ /**
443
+ * `autocomplete` attribute to be set on the input element.
444
+ * @docs-private
445
+ */
446
+ autocompleteAttribute = 'off';
447
+ /**
448
+ * Whether the autocomplete is disabled. When disabled, the element will
449
+ * act as a regular input and the user won't be able to open the panel.
450
+ */
451
+ autocompleteDisabled;
452
+ _initialized = new Subject();
453
+ _injector = inject(Injector);
454
+ constructor() { }
455
+ /** Class to apply to the panel when it's above the input. */
456
+ _aboveClass = 'mat-mdc-autocomplete-panel-above';
412
457
  ngAfterViewInit() {
413
458
  this._initialized.next();
414
459
  this._initialized.complete();
@@ -441,6 +486,7 @@ class MatAutocompleteTrigger {
441
486
  get panelOpen() {
442
487
  return this._overlayAttached && this.autocomplete.showPanel;
443
488
  }
489
+ _overlayAttached = false;
444
490
  /** Opens the autocomplete suggestion panel. */
445
491
  openPanel() {
446
492
  this._openPanelInternal();
@@ -507,6 +553,16 @@ class MatAutocompleteTrigger {
507
553
  // Normalize the output so we return a consistent type.
508
554
  map(event => (event instanceof MatOptionSelectionChange ? event : null)));
509
555
  }
556
+ /** Stream of changes to the selection state of the autocomplete options. */
557
+ optionSelections = defer(() => {
558
+ const options = this.autocomplete ? this.autocomplete.options : null;
559
+ if (options) {
560
+ return options.changes.pipe(startWith(options), switchMap(() => merge(...options.map(option => option.onSelectionChange))));
561
+ }
562
+ // If there are any subscribers before `ngAfterViewInit`, the `autocomplete` will be undefined.
563
+ // Return a stream that we'll replace with the real one once everything is in place.
564
+ return this._initialized.pipe(switchMap(() => this.optionSelections));
565
+ });
510
566
  /** The currently active option, coerced to MatOption type. */
511
567
  get activeOption() {
512
568
  if (this.autocomplete && this.autocomplete._keyManager) {
@@ -885,6 +941,26 @@ class MatAutocompleteTrigger {
885
941
  this._emitOpened();
886
942
  }
887
943
  }
944
+ /** Handles keyboard events coming from the overlay panel. */
945
+ _handlePanelKeydown = (event) => {
946
+ // Close when pressing ESCAPE or ALT + UP_ARROW, based on the a11y guidelines.
947
+ // See: https://www.w3.org/TR/wai-aria-practices-1.1/#textbox-keyboard-interaction
948
+ if ((event.keyCode === ESCAPE && !hasModifierKey(event)) ||
949
+ (event.keyCode === UP_ARROW && hasModifierKey(event, 'altKey'))) {
950
+ // If the user had typed something in before we autoselected an option, and they decided
951
+ // to cancel the selection, restore the input value to the one they had typed in.
952
+ if (this._pendingAutoselectedOption) {
953
+ this._updateNativeInputValue(this._valueBeforeAutoSelection ?? '');
954
+ this._pendingAutoselectedOption = null;
955
+ }
956
+ this._closeKeyEventStream.next();
957
+ this._resetActiveItem();
958
+ // We need to stop propagation, otherwise the event will eventually
959
+ // reach the input itself and cause the overlay to be reopened.
960
+ event.stopPropagation();
961
+ event.preventDefault();
962
+ }
963
+ };
888
964
  /** Updates the panel's visibility state and any trigger state tied to id. */
889
965
  _updatePanelState() {
890
966
  this.autocomplete._setVisibility();
@@ -1034,6 +1110,12 @@ class MatAutocompleteTrigger {
1034
1110
  }
1035
1111
  }
1036
1112
  }
1113
+ /**
1114
+ * Track which modal we have modified the `aria-owns` attribute of. When the combobox trigger is
1115
+ * inside an aria-modal, we apply aria-owns to the parent modal with the `id` of the options
1116
+ * panel. Track the modal we have changed so we can undo the changes on destroy.
1117
+ */
1118
+ _trackedModal = null;
1037
1119
  /**
1038
1120
  * If the autocomplete trigger is inside of an `aria-modal` element, connect
1039
1121
  * that modal to the options panel with `aria-owns`.
@@ -1080,8 +1162,8 @@ class MatAutocompleteTrigger {
1080
1162
  this._trackedModal = null;
1081
1163
  }
1082
1164
  }
1083
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatAutocompleteTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1084
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "19.0.0-next.10", type: MatAutocompleteTrigger, isStandalone: true, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: { autocomplete: ["matAutocomplete", "autocomplete"], position: ["matAutocompletePosition", "position"], connectedTo: ["matAutocompleteConnectedTo", "connectedTo"], autocompleteAttribute: ["autocomplete", "autocompleteAttribute"], autocompleteDisabled: ["matAutocompleteDisabled", "autocompleteDisabled", booleanAttribute] }, host: { listeners: { "focusin": "_handleFocus()", "blur": "_onTouched()", "input": "_handleInput($event)", "keydown": "_handleKeydown($event)", "click": "_handleClick()" }, properties: { "attr.autocomplete": "autocompleteAttribute", "attr.role": "autocompleteDisabled ? null : \"combobox\"", "attr.aria-autocomplete": "autocompleteDisabled ? null : \"list\"", "attr.aria-activedescendant": "(panelOpen && activeOption) ? activeOption.id : null", "attr.aria-expanded": "autocompleteDisabled ? null : panelOpen.toString()", "attr.aria-controls": "(autocompleteDisabled || !panelOpen) ? null : autocomplete?.id", "attr.aria-haspopup": "autocompleteDisabled ? null : \"listbox\"" }, classAttribute: "mat-mdc-autocomplete-trigger" }, providers: [MAT_AUTOCOMPLETE_VALUE_ACCESSOR], exportAs: ["matAutocompleteTrigger"], usesOnChanges: true, ngImport: i0 }); }
1165
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatAutocompleteTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1166
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "19.0.0-next.10", type: MatAutocompleteTrigger, isStandalone: true, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: { autocomplete: ["matAutocomplete", "autocomplete"], position: ["matAutocompletePosition", "position"], connectedTo: ["matAutocompleteConnectedTo", "connectedTo"], autocompleteAttribute: ["autocomplete", "autocompleteAttribute"], autocompleteDisabled: ["matAutocompleteDisabled", "autocompleteDisabled", booleanAttribute] }, host: { listeners: { "focusin": "_handleFocus()", "blur": "_onTouched()", "input": "_handleInput($event)", "keydown": "_handleKeydown($event)", "click": "_handleClick()" }, properties: { "attr.autocomplete": "autocompleteAttribute", "attr.role": "autocompleteDisabled ? null : \"combobox\"", "attr.aria-autocomplete": "autocompleteDisabled ? null : \"list\"", "attr.aria-activedescendant": "(panelOpen && activeOption) ? activeOption.id : null", "attr.aria-expanded": "autocompleteDisabled ? null : panelOpen.toString()", "attr.aria-controls": "(autocompleteDisabled || !panelOpen) ? null : autocomplete?.id", "attr.aria-haspopup": "autocompleteDisabled ? null : \"listbox\"" }, classAttribute: "mat-mdc-autocomplete-trigger" }, providers: [MAT_AUTOCOMPLETE_VALUE_ACCESSOR], exportAs: ["matAutocompleteTrigger"], usesOnChanges: true, ngImport: i0 });
1085
1167
  }
1086
1168
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatAutocompleteTrigger, decorators: [{
1087
1169
  type: Directive,
@@ -1125,11 +1207,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10",
1125
1207
  }] } });
1126
1208
 
1127
1209
  class MatAutocompleteModule {
1128
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatAutocompleteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1129
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatAutocompleteModule, imports: [OverlayModule,
1210
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatAutocompleteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1211
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatAutocompleteModule, imports: [OverlayModule,
1130
1212
  MatOptionModule,
1131
1213
  MatCommonModule,
1132
- CommonModule,
1133
1214
  MatAutocomplete,
1134
1215
  MatAutocompleteTrigger,
1135
1216
  MatAutocompleteOrigin], exports: [CdkScrollableModule,
@@ -1137,13 +1218,12 @@ class MatAutocompleteModule {
1137
1218
  MatOptionModule,
1138
1219
  MatCommonModule,
1139
1220
  MatAutocompleteTrigger,
1140
- MatAutocompleteOrigin] }); }
1141
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatAutocompleteModule, providers: [MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER], imports: [OverlayModule,
1221
+ MatAutocompleteOrigin] });
1222
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatAutocompleteModule, providers: [MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER], imports: [OverlayModule,
1142
1223
  MatOptionModule,
1143
- MatCommonModule,
1144
- CommonModule, CdkScrollableModule,
1224
+ MatCommonModule, CdkScrollableModule,
1145
1225
  MatOptionModule,
1146
- MatCommonModule] }); }
1226
+ MatCommonModule] });
1147
1227
  }
1148
1228
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatAutocompleteModule, decorators: [{
1149
1229
  type: NgModule,
@@ -1152,7 +1232,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10",
1152
1232
  OverlayModule,
1153
1233
  MatOptionModule,
1154
1234
  MatCommonModule,
1155
- CommonModule,
1156
1235
  MatAutocomplete,
1157
1236
  MatAutocompleteTrigger,
1158
1237
  MatAutocompleteOrigin,