@angular/material 19.2.6 → 19.2.7

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 (73) hide show
  1. package/autocomplete/index.d.ts +4 -0
  2. package/core/m2/_theming.scss +68 -44
  3. package/fesm2022/autocomplete/testing.mjs.map +1 -1
  4. package/fesm2022/autocomplete.mjs +3 -0
  5. package/fesm2022/autocomplete.mjs.map +1 -1
  6. package/fesm2022/badge/testing.mjs.map +1 -1
  7. package/fesm2022/core.mjs +1 -1
  8. package/fesm2022/core.mjs.map +1 -1
  9. package/fesm2022/material.mjs.map +1 -1
  10. package/fesm2022/{module-b0a3e0af.mjs → module-c1888a58.mjs} +3 -3
  11. package/fesm2022/{module-b0a3e0af.mjs.map → module-c1888a58.mjs.map} +1 -1
  12. package/fesm2022/paginator.mjs +1 -1
  13. package/fesm2022/select.mjs +1 -1
  14. package/fesm2022/sort.mjs +2 -2
  15. package/fesm2022/sort.mjs.map +1 -1
  16. package/package.json +2 -2
  17. package/schematics/ng-add/fonts/material-fonts.js +1 -1
  18. package/schematics/ng-add/fonts/material-fonts.js.map +1 -0
  19. package/schematics/ng-add/index.js +2 -2
  20. package/schematics/ng-add/index.js.map +1 -0
  21. package/schematics/ng-add/package-config.js +1 -1
  22. package/schematics/ng-add/package-config.js.map +1 -0
  23. package/schematics/ng-add/schema.js +1 -1
  24. package/schematics/ng-add/schema.js.map +1 -0
  25. package/schematics/ng-add/setup-project.js +1 -1
  26. package/schematics/ng-add/setup-project.js.map +1 -0
  27. package/schematics/ng-add/theming/create-custom-theme.js +1 -1
  28. package/schematics/ng-add/theming/create-custom-theme.js.map +1 -0
  29. package/schematics/ng-add/theming/theming.js +1 -1
  30. package/schematics/ng-add/theming/theming.js.map +1 -0
  31. package/schematics/ng-generate/address-form/index.js +1 -1
  32. package/schematics/ng-generate/address-form/index.js.map +1 -0
  33. package/schematics/ng-generate/address-form/schema.js +1 -1
  34. package/schematics/ng-generate/address-form/schema.js.map +1 -0
  35. package/schematics/ng-generate/dashboard/index.js +1 -1
  36. package/schematics/ng-generate/dashboard/index.js.map +1 -0
  37. package/schematics/ng-generate/dashboard/schema.js +1 -1
  38. package/schematics/ng-generate/dashboard/schema.js.map +1 -0
  39. package/schematics/ng-generate/navigation/index.js +1 -1
  40. package/schematics/ng-generate/navigation/index.js.map +1 -0
  41. package/schematics/ng-generate/navigation/schema.js +1 -1
  42. package/schematics/ng-generate/navigation/schema.js.map +1 -0
  43. package/schematics/ng-generate/table/index.js +1 -1
  44. package/schematics/ng-generate/table/index.js.map +1 -0
  45. package/schematics/ng-generate/table/schema.js +1 -1
  46. package/schematics/ng-generate/table/schema.js.map +1 -0
  47. package/schematics/ng-generate/theme-color/index_bundled.js +3828 -2237
  48. package/schematics/ng-generate/theme-color/index_bundled.js.map +4 -4
  49. package/schematics/ng-generate/tree/index.js +1 -1
  50. package/schematics/ng-generate/tree/index.js.map +1 -0
  51. package/schematics/ng-generate/tree/schema.js +1 -1
  52. package/schematics/ng-generate/tree/schema.js.map +1 -0
  53. package/schematics/ng-update/index_bundled.js +194 -782
  54. package/schematics/ng-update/index_bundled.js.map +4 -4
  55. package/schematics/tsconfig.json +26 -0
  56. package/schematics/ng-add/fonts/material-fonts.mjs +0 -34
  57. package/schematics/ng-add/index.mjs +0 -54
  58. package/schematics/ng-add/package-config.mjs +0 -51
  59. package/schematics/ng-add/schema.mjs +0 -10
  60. package/schematics/ng-add/setup-project.mjs +0 -75
  61. package/schematics/ng-add/theming/create-custom-theme.mjs +0 -30
  62. package/schematics/ng-add/theming/theming.mjs +0 -151
  63. package/schematics/ng-generate/address-form/index.mjs +0 -43
  64. package/schematics/ng-generate/address-form/schema.mjs +0 -10
  65. package/schematics/ng-generate/dashboard/index.mjs +0 -42
  66. package/schematics/ng-generate/dashboard/schema.mjs +0 -10
  67. package/schematics/ng-generate/navigation/index.mjs +0 -42
  68. package/schematics/ng-generate/navigation/schema.mjs +0 -10
  69. package/schematics/ng-generate/table/index.mjs +0 -40
  70. package/schematics/ng-generate/table/schema.mjs +0 -10
  71. package/schematics/ng-generate/tree/index.mjs +0 -40
  72. package/schematics/ng-generate/tree/schema.mjs +0 -10
  73. package/schematics/schematics.externs.js +0 -0
@@ -47,6 +47,10 @@ interface MatAutocompleteDefaultOptions {
47
47
  * they're interacting with the autocomplete.
48
48
  */
49
49
  requireSelection?: boolean;
50
+ /** Class to be applied to the autocomplete's backdrop. */
51
+ backdropClass?: string;
52
+ /** Whether the autocomplete has a backdrop. */
53
+ hasBackdrop?: boolean;
50
54
  /** Class or list of classes to be applied to the autocomplete's overlay panel. */
51
55
  overlayPanelClass?: string | string[];
52
56
  /** Whether icon indicators should be hidden for single-selection. */
@@ -24,7 +24,6 @@
24
24
  @return map.get(map.get($palette, contrast), $hue);
25
25
  }
26
26
 
27
-
28
27
  /// Creates a map of hues to colors for a theme. This is used to define a theme palette in terms
29
28
  /// of the Material Design hues.
30
29
  /// @param {Map} $base-palette Map of hue keys to color values for the basis for this palette.
@@ -33,29 +32,39 @@
33
32
  /// @param {String | Number} $darker "darker" hue for this palette.
34
33
  /// @param {String | Number} $text "text" hue for this palette.
35
34
  /// @returns {Map} A complete Angular Material theming palette.
36
- @function define-palette($base-palette, $default: 500, $lighter: 100, $darker: 700,
37
- $text: $default) {
38
- $result: map.merge($base-palette, (
39
- default: _get-color-from-palette($base-palette, $default),
40
- lighter: _get-color-from-palette($base-palette, $lighter),
41
- darker: _get-color-from-palette($base-palette, $darker),
42
- text: _get-color-from-palette($base-palette, $text),
43
- default-contrast: get-contrast-color-from-palette($base-palette, $default),
44
- lighter-contrast: get-contrast-color-from-palette($base-palette, $lighter),
45
- darker-contrast: get-contrast-color-from-palette($base-palette, $darker)
46
- ));
35
+ @function define-palette(
36
+ $base-palette,
37
+ $default: 500,
38
+ $lighter: 100,
39
+ $darker: 700,
40
+ $text: $default
41
+ ) {
42
+ $result: map.merge(
43
+ $base-palette,
44
+ (
45
+ default: _get-color-from-palette($base-palette, $default),
46
+ lighter: _get-color-from-palette($base-palette, $lighter),
47
+ darker: _get-color-from-palette($base-palette, $darker),
48
+ text: _get-color-from-palette($base-palette, $text),
49
+ default-contrast: get-contrast-color-from-palette($base-palette, $default),
50
+ lighter-contrast: get-contrast-color-from-palette($base-palette, $lighter),
51
+ darker-contrast: get-contrast-color-from-palette($base-palette, $darker),
52
+ )
53
+ );
47
54
 
48
55
  // For each hue in the palette, add a "-contrast" color to the map.
49
56
  @each $hue, $color in $base-palette {
50
- $result: map.merge($result, (
51
- '#{$hue}-contrast': get-contrast-color-from-palette($base-palette, $hue)
52
- ));
57
+ $result: map.merge(
58
+ $result,
59
+ (
60
+ '#{$hue}-contrast': get-contrast-color-from-palette($base-palette, $hue),
61
+ )
62
+ );
53
63
  }
54
64
 
55
65
  @return $result;
56
66
  }
57
67
 
58
-
59
68
  /// Gets a color from a theme palette (the output of mat-palette).
60
69
  /// The hue can be one of the standard values (500, A400, etc.), one of the three preconfigured
61
70
  /// hues (default, lighter, darker), or any of the aforementioned suffixed with "-contrast".
@@ -93,11 +102,9 @@
93
102
  $color: map.get($theme, color);
94
103
  @if not map.get($color, primary) {
95
104
  @error 'Theme does not define a valid "primary" palette.';
96
- }
97
- @else if not map.get($color, accent) {
105
+ } @else if not map.get($color, accent) {
98
106
  @error 'Theme does not define a valid "accent" palette.';
99
- }
100
- @else if not map.get($color, warn) {
107
+ } @else if not map.get($color, warn) {
101
108
  @error 'Theme does not define a valid "warn" palette.';
102
109
  }
103
110
  }
@@ -113,7 +120,7 @@
113
120
  warn: if($warn != null, $warn, define-palette(palette.$red-palette)),
114
121
  is-dark: false,
115
122
  foreground: palette.$light-theme-foreground-palette,
116
- background: palette.$light-theme-background-palette,
123
+ background: palette.$light-theme-background-palette
117
124
  );
118
125
  }
119
126
 
@@ -126,7 +133,7 @@
126
133
  warn: if($warn != null, $warn, define-palette(palette.$red-palette)),
127
134
  is-dark: true,
128
135
  foreground: palette.$dark-theme-foreground-palette,
129
- background: palette.$dark-theme-background-palette,
136
+ background: palette.$dark-theme-background-palette
130
137
  );
131
138
  }
132
139
 
@@ -152,10 +159,12 @@
152
159
  // configuration for the `color` theming part.
153
160
  @if $accent != null {
154
161
  @warn theming.$private-legacy-theme-warning;
155
- $theme: _mat-validate-theme((
156
- _is-legacy-theme: true,
157
- color: _mat-create-light-color-config($primary, $accent, $warn),
158
- ));
162
+ $theme: _mat-validate-theme(
163
+ (
164
+ _is-legacy-theme: true,
165
+ color: _mat-create-light-color-config($primary, $accent, $warn),
166
+ )
167
+ );
159
168
 
160
169
  @return _internalize-theme(theming.private-create-backwards-compatibility-theme($theme));
161
170
  }
@@ -168,10 +177,16 @@
168
177
  $primary: map.get($color-settings, primary);
169
178
  $accent: map.get($color-settings, accent);
170
179
  $warn: map.get($color-settings, warn);
171
- $result: map.merge($result, (color: _mat-create-light-color-config($primary, $accent, $warn)));
180
+ $result: map.merge(
181
+ $result,
182
+ (
183
+ color: _mat-create-light-color-config($primary, $accent, $warn),
184
+ )
185
+ );
172
186
  }
173
187
  @return _internalize-theme(
174
- theming.private-create-backwards-compatibility-theme(_mat-validate-theme($result)));
188
+ theming.private-create-backwards-compatibility-theme(_mat-validate-theme($result))
189
+ );
175
190
  }
176
191
 
177
192
  // TODO: Remove legacy API and rename below `$primary` to `$config`. Currently it cannot be renamed
@@ -196,10 +211,12 @@
196
211
  // configuration for the `color` theming part.
197
212
  @if $accent != null {
198
213
  @warn theming.$private-legacy-theme-warning;
199
- $theme: _mat-validate-theme((
200
- _is-legacy-theme: true,
201
- color: _mat-create-dark-color-config($primary, $accent, $warn),
202
- ));
214
+ $theme: _mat-validate-theme(
215
+ (
216
+ _is-legacy-theme: true,
217
+ color: _mat-create-dark-color-config($primary, $accent, $warn),
218
+ )
219
+ );
203
220
  @return _internalize-theme(theming.private-create-backwards-compatibility-theme($theme));
204
221
  }
205
222
  // If the map pattern is used (1), we just pass-through the configurations for individual
@@ -211,10 +228,16 @@
211
228
  $primary: map.get($color-settings, primary);
212
229
  $accent: map.get($color-settings, accent);
213
230
  $warn: map.get($color-settings, warn);
214
- $result: map.merge($result, (color: _mat-create-dark-color-config($primary, $accent, $warn)));
231
+ $result: map.merge(
232
+ $result,
233
+ (
234
+ color: _mat-create-dark-color-config($primary, $accent, $warn),
235
+ )
236
+ );
215
237
  }
216
238
  @return _internalize-theme(
217
- theming.private-create-backwards-compatibility-theme(_mat-validate-theme($result)));
239
+ theming.private-create-backwards-compatibility-theme(_mat-validate-theme($result))
240
+ );
218
241
  }
219
242
 
220
243
  /// Gets the color configuration from the given theme or configuration.
@@ -227,11 +250,11 @@
227
250
  }
228
251
 
229
252
  /// Gets the density configuration from the given theme or configuration.
230
- /// @param {Map} $theme-or-config The theme map returned from `define-light-theme` or
253
+ /// @param {Map|string|number} $theme-or-config The theme map returned from `define-light-theme` or
231
254
  /// `define-dark-theme`.
232
- /// @param {Map} $default The default value returned if the given `$theme` does not include a
233
- /// `density` configuration.
234
- /// @returns {Map} Density configuration for a theme.
255
+ /// @param {string|number} $default The default value returned if the given `$theme` does not
256
+ /// include a `density` configuration.
257
+ /// @returns {string|number} Density configuration for a theme.
235
258
  @function get-density-config($theme-or-config, $default: 0) {
236
259
  @return theming.private-get-density-config($theme-or-config, $default);
237
260
  }
@@ -258,14 +281,16 @@
258
281
  $internalized-theme: (
259
282
  theming.$private-internal-name: (
260
283
  theme-version: 0,
261
- m2-config: $theme
262
- )
284
+ m2-config: $theme,
285
+ ),
263
286
  );
264
287
  @if (theming.$theme-legacy-inspection-api-compatibility) {
265
288
  @return map.merge($theme, $internalized-theme);
266
289
  }
267
- $error-theme:
268
- _replace-values-with-errors($theme, 'Theme may only be accessed via theme inspection API');
290
+ $error-theme: _replace-values-with-errors(
291
+ $theme,
292
+ 'Theme may only be accessed via theme inspection API'
293
+ );
269
294
  @return map.merge($error-theme, $internalized-theme);
270
295
  }
271
296
 
@@ -285,8 +310,7 @@
285
310
  $value: map.set($value, $k, _replace-values-with-errors($v, $message));
286
311
  }
287
312
  @return $value;
288
- }
289
- @else if $value-type == 'list' and list.length($value) > 0 {
313
+ } @else if $value-type == 'list' and list.length($value) > 0 {
290
314
  @for $i from 1 through list.length() {
291
315
  $value: list.set-nth($value, $i, _replace-values-with-errors(list.nth($value, $i), $message));
292
316
  }
@@ -1 +1 @@
1
- {"version":3,"file":"testing.mjs","sources":["../../../../../../../src/material/autocomplete/testing/autocomplete-harness.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n TestElement,\n} from '@angular/cdk/testing';\nimport {\n MatOptgroupHarness,\n MatOptionHarness,\n OptgroupHarnessFilters,\n OptionHarnessFilters,\n} from '../../core/testing';\nimport {AutocompleteHarnessFilters} from './autocomplete-harness-filters';\n\nexport class MatAutocompleteHarness extends ComponentHarness {\n private _documentRootLocator = this.documentRootLocatorFactory();\n\n /** The selector for the host element of a `MatAutocomplete` instance. */\n static hostSelector = '.mat-mdc-autocomplete-trigger';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for an autocomplete with specific\n * attributes.\n * @param options Options for filtering which autocomplete instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatAutocompleteHarness>(\n this: ComponentHarnessConstructor<T>,\n options: AutocompleteHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options)\n .addOption('value', options.value, (harness, value) =>\n HarnessPredicate.stringMatches(harness.getValue(), value),\n )\n .addOption('disabled', options.disabled, async (harness, disabled) => {\n return (await harness.isDisabled()) === disabled;\n });\n }\n\n /** Gets the value of the autocomplete input. */\n async getValue(): Promise<string> {\n return (await this.host()).getProperty<string>('value');\n }\n\n /** Whether the autocomplete input is disabled. */\n async isDisabled(): Promise<boolean> {\n const disabled = (await this.host()).getAttribute('disabled');\n return coerceBooleanProperty(await disabled);\n }\n\n /** Focuses the autocomplete input. */\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n /** Blurs the autocomplete input. */\n async blur(): Promise<void> {\n return (await this.host()).blur();\n }\n\n /** Whether the autocomplete input is focused. */\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\n }\n\n /** Enters text into the autocomplete. */\n async enterText(value: string): Promise<void> {\n return (await this.host()).sendKeys(value);\n }\n\n /** Clears the input value. */\n async clear(): Promise<void> {\n return (await this.host()).clear();\n }\n\n /** Gets the options inside the autocomplete panel. */\n async getOptions(filters?: Omit<OptionHarnessFilters, 'ancestor'>): Promise<MatOptionHarness[]> {\n if (!(await this.isOpen())) {\n throw new Error('Unable to retrieve options for autocomplete. Autocomplete panel is closed.');\n }\n\n return this._documentRootLocator.locatorForAll(\n MatOptionHarness.with({\n ...(filters || {}),\n ancestor: await this._getPanelSelector(),\n } as OptionHarnessFilters),\n )();\n }\n\n /** Gets the option groups inside the autocomplete panel. */\n async getOptionGroups(\n filters?: Omit<OptgroupHarnessFilters, 'ancestor'>,\n ): Promise<MatOptgroupHarness[]> {\n if (!(await this.isOpen())) {\n throw new Error(\n 'Unable to retrieve option groups for autocomplete. Autocomplete panel is closed.',\n );\n }\n\n return this._documentRootLocator.locatorForAll(\n MatOptgroupHarness.with({\n ...(filters || {}),\n ancestor: await this._getPanelSelector(),\n } as OptgroupHarnessFilters),\n )();\n }\n\n /** Selects the first option matching the given filters. */\n async selectOption(filters: OptionHarnessFilters): Promise<void> {\n await this.focus(); // Focus the input to make sure the autocomplete panel is shown.\n const options = await this.getOptions(filters);\n if (!options.length) {\n throw Error(`Could not find a mat-option matching ${JSON.stringify(filters)}`);\n }\n await options[0].click();\n }\n\n /** Whether the autocomplete is open. */\n async isOpen(): Promise<boolean> {\n const panel = await this._getPanel();\n return !!panel && (await panel.hasClass(`mat-mdc-autocomplete-visible`));\n }\n\n /** Gets the panel associated with this autocomplete trigger. */\n private async _getPanel(): Promise<TestElement | null> {\n // Technically this is static, but it needs to be in a\n // function, because the autocomplete's panel ID can changed.\n return this._documentRootLocator.locatorForOptional(await this._getPanelSelector())();\n }\n\n /** Gets the selector that can be used to find the autocomplete trigger's panel. */\n protected async _getPanelSelector(): Promise<string> {\n return `#${await (await this.host()).getAttribute('aria-controls')}`;\n }\n}\n"],"names":[],"mappings":";;;;;AAuBM,MAAO,sBAAuB,SAAQ,gBAAgB,CAAA;AAClD,IAAA,oBAAoB,GAAG,IAAI,CAAC,0BAA0B,EAAE,CAAA;;AAGhE,IAAA,OAAO,YAAY,GAAG,+BAA+B,CAAA;AAErD;;;;;AAKG;AACH,IAAA,OAAO,IAAI,CAET,OAAA,GAAsC,EAAE,EAAA;AAExC,QAAA,OAAO,IAAI,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAA;aACtC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,KAAK,KAChD,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAA;AAE1D,aAAA,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,OAAO,EAAE,QAAQ,KAAI;YACnE,OAAO,CAAC,MAAM,OAAO,CAAC,UAAU,EAAE,MAAM,QAAQ,CAAA;AAClD,SAAC,CAAC,CAAA;KACN;;AAGA,IAAA,MAAM,QAAQ,GAAA;AACZ,QAAA,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,WAAW,CAAS,OAAO,CAAC,CAAA;KACzD;;AAGA,IAAA,MAAM,UAAU,GAAA;AACd,QAAA,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,YAAY,CAAC,UAAU,CAAC,CAAA;AAC7D,QAAA,OAAO,qBAAqB,CAAC,MAAM,QAAQ,CAAC,CAAA;KAC9C;;AAGA,IAAA,MAAM,KAAK,GAAA;QACT,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAA;KACpC;;AAGA,IAAA,MAAM,IAAI,GAAA;QACR,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAA;KACnC;;AAGA,IAAA,MAAM,SAAS,GAAA;QACb,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,CAAA;KACxC;;IAGA,MAAM,SAAS,CAAC,KAAa,EAAA;AAC3B,QAAA,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAA;KAC5C;;AAGA,IAAA,MAAM,KAAK,GAAA;QACT,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAA;KACpC;;IAGA,MAAM,UAAU,CAAC,OAAgD,EAAA;QAC/D,IAAI,EAAE,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE;AAC1B,YAAA,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAA;SAC/F;QAEA,OAAO,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAC5C,gBAAgB,CAAC,IAAI,CAAC;AACpB,YAAA,IAAI,OAAO,IAAI,EAAE,CAAC;AAClB,YAAA,QAAQ,EAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE;SACjB,CAAC,CAC3B,EAAE,CAAA;KACL;;IAGA,MAAM,eAAe,CACnB,OAAkD,EAAA;QAElD,IAAI,EAAE,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE;AAC1B,YAAA,MAAM,IAAI,KAAK,CACb,kFAAkF,CACnF,CAAA;SACH;QAEA,OAAO,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAC5C,kBAAkB,CAAC,IAAI,CAAC;AACtB,YAAA,IAAI,OAAO,IAAI,EAAE,CAAC;AAClB,YAAA,QAAQ,EAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE;SACf,CAAC,CAC7B,EAAE,CAAA;KACL;;IAGA,MAAM,YAAY,CAAC,OAA6B,EAAA;AAC9C,QAAA,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;AAC9C,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YACnB,MAAM,KAAK,CAAC,CAAA,qCAAA,EAAwC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAE,CAAA,CAAC,CAAA;SAChF;AACA,QAAA,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAA;KAC1B;;AAGA,IAAA,MAAM,MAAM,GAAA;AACV,QAAA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAA;AACpC,QAAA,OAAO,CAAC,CAAC,KAAK,KAAK,MAAM,KAAK,CAAC,QAAQ,CAAC,CAA8B,4BAAA,CAAA,CAAC,CAAC,CAAA;KAC1E;;AAGQ,IAAA,MAAM,SAAS,GAAA;;;AAGrB,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,EAAE,CAAA;KACvF;;AAGU,IAAA,MAAM,iBAAiB,GAAA;AAC/B,QAAA,OAAO,CAAI,CAAA,EAAA,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,YAAY,CAAC,eAAe,CAAC,EAAE,CAAA;KACtE;;;;;"}
1
+ {"version":3,"file":"testing.mjs","sources":["../../../../../../k8-fastbuild-ST-70f2edae98f4/bin/src/material/autocomplete/testing/autocomplete-harness.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n TestElement,\n} from '@angular/cdk/testing';\nimport {\n MatOptgroupHarness,\n MatOptionHarness,\n OptgroupHarnessFilters,\n OptionHarnessFilters,\n} from '../../core/testing';\nimport {AutocompleteHarnessFilters} from './autocomplete-harness-filters';\n\nexport class MatAutocompleteHarness extends ComponentHarness {\n private _documentRootLocator = this.documentRootLocatorFactory();\n\n /** The selector for the host element of a `MatAutocomplete` instance. */\n static hostSelector = '.mat-mdc-autocomplete-trigger';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for an autocomplete with specific\n * attributes.\n * @param options Options for filtering which autocomplete instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatAutocompleteHarness>(\n this: ComponentHarnessConstructor<T>,\n options: AutocompleteHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options)\n .addOption('value', options.value, (harness, value) =>\n HarnessPredicate.stringMatches(harness.getValue(), value),\n )\n .addOption('disabled', options.disabled, async (harness, disabled) => {\n return (await harness.isDisabled()) === disabled;\n });\n }\n\n /** Gets the value of the autocomplete input. */\n async getValue(): Promise<string> {\n return (await this.host()).getProperty<string>('value');\n }\n\n /** Whether the autocomplete input is disabled. */\n async isDisabled(): Promise<boolean> {\n const disabled = (await this.host()).getAttribute('disabled');\n return coerceBooleanProperty(await disabled);\n }\n\n /** Focuses the autocomplete input. */\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n /** Blurs the autocomplete input. */\n async blur(): Promise<void> {\n return (await this.host()).blur();\n }\n\n /** Whether the autocomplete input is focused. */\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\n }\n\n /** Enters text into the autocomplete. */\n async enterText(value: string): Promise<void> {\n return (await this.host()).sendKeys(value);\n }\n\n /** Clears the input value. */\n async clear(): Promise<void> {\n return (await this.host()).clear();\n }\n\n /** Gets the options inside the autocomplete panel. */\n async getOptions(filters?: Omit<OptionHarnessFilters, 'ancestor'>): Promise<MatOptionHarness[]> {\n if (!(await this.isOpen())) {\n throw new Error('Unable to retrieve options for autocomplete. Autocomplete panel is closed.');\n }\n\n return this._documentRootLocator.locatorForAll(\n MatOptionHarness.with({\n ...(filters || {}),\n ancestor: await this._getPanelSelector(),\n } as OptionHarnessFilters),\n )();\n }\n\n /** Gets the option groups inside the autocomplete panel. */\n async getOptionGroups(\n filters?: Omit<OptgroupHarnessFilters, 'ancestor'>,\n ): Promise<MatOptgroupHarness[]> {\n if (!(await this.isOpen())) {\n throw new Error(\n 'Unable to retrieve option groups for autocomplete. Autocomplete panel is closed.',\n );\n }\n\n return this._documentRootLocator.locatorForAll(\n MatOptgroupHarness.with({\n ...(filters || {}),\n ancestor: await this._getPanelSelector(),\n } as OptgroupHarnessFilters),\n )();\n }\n\n /** Selects the first option matching the given filters. */\n async selectOption(filters: OptionHarnessFilters): Promise<void> {\n await this.focus(); // Focus the input to make sure the autocomplete panel is shown.\n const options = await this.getOptions(filters);\n if (!options.length) {\n throw Error(`Could not find a mat-option matching ${JSON.stringify(filters)}`);\n }\n await options[0].click();\n }\n\n /** Whether the autocomplete is open. */\n async isOpen(): Promise<boolean> {\n const panel = await this._getPanel();\n return !!panel && (await panel.hasClass(`mat-mdc-autocomplete-visible`));\n }\n\n /** Gets the panel associated with this autocomplete trigger. */\n private async _getPanel(): Promise<TestElement | null> {\n // Technically this is static, but it needs to be in a\n // function, because the autocomplete's panel ID can changed.\n return this._documentRootLocator.locatorForOptional(await this._getPanelSelector())();\n }\n\n /** Gets the selector that can be used to find the autocomplete trigger's panel. */\n protected async _getPanelSelector(): Promise<string> {\n return `#${await (await this.host()).getAttribute('aria-controls')}`;\n }\n}\n"],"names":[],"mappings":"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"}
@@ -55,6 +55,7 @@ function MAT_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY() {
55
55
  autoSelectActiveOption: false,
56
56
  hideSingleSelectionIndicator: false,
57
57
  requireSelection: false,
58
+ hasBackdrop: false,
58
59
  };
59
60
  }
60
61
  /** Autocomplete component. */
@@ -994,6 +995,8 @@ class MatAutocompleteTrigger {
994
995
  scrollStrategy: this._scrollStrategy(),
995
996
  width: this._getPanelWidth(),
996
997
  direction: this._dir ?? undefined,
998
+ hasBackdrop: this._defaults?.hasBackdrop,
999
+ backdropClass: this._defaults?.backdropClass,
997
1000
  panelClass: this._defaults?.overlayPanelClass,
998
1001
  });
999
1002
  }