@angular/material 20.2.0-next.1 → 20.2.0-next.2

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 (132) hide show
  1. package/_index.scss +2 -2
  2. package/core/theming/_m2-inspection.scss +6 -6
  3. package/core/tokens/{_m3-system.scss → _system.scss} +53 -1
  4. package/core/tokens/m2/_md-sys-color.scss +64 -73
  5. package/core/tokens/m2/_md-sys-elevation.scss +6 -12
  6. package/core/tokens/m2/_md-sys-motion.scss +26 -32
  7. package/core/tokens/m2/_md-sys-shape.scss +12 -18
  8. package/core/tokens/m2/_md-sys-state.scss +1 -8
  9. package/core/tokens/m3/_md-sys-color.scss +0 -12
  10. package/{date-range-input-harness.d-CJ4r85Uf.d.ts → date-range-input-harness.d-D9G3xNDV.d.ts} +4 -2
  11. package/datepicker/testing/index.d.ts +2 -2
  12. package/fesm2022/animation-ChQ1vjiF.mjs.map +1 -1
  13. package/fesm2022/autocomplete/testing.mjs.map +1 -1
  14. package/fesm2022/autocomplete.mjs.map +1 -1
  15. package/fesm2022/badge/testing.mjs.map +1 -1
  16. package/fesm2022/badge.mjs.map +1 -1
  17. package/fesm2022/bottom-sheet/testing.mjs.map +1 -1
  18. package/fesm2022/bottom-sheet.mjs.map +1 -1
  19. package/fesm2022/button/testing.mjs.map +1 -1
  20. package/fesm2022/button-toggle/testing.mjs.map +1 -1
  21. package/fesm2022/button-toggle.mjs.map +1 -1
  22. package/fesm2022/button.mjs.map +1 -1
  23. package/fesm2022/card/testing.mjs.map +1 -1
  24. package/fesm2022/card.mjs.map +1 -1
  25. package/fesm2022/checkbox/testing.mjs.map +1 -1
  26. package/fesm2022/checkbox.mjs.map +1 -1
  27. package/fesm2022/chips/testing.mjs.map +1 -1
  28. package/fesm2022/chips.mjs.map +1 -1
  29. package/fesm2022/common-module-Ckwlusp6.mjs.map +1 -1
  30. package/fesm2022/core/testing.mjs.map +1 -1
  31. package/fesm2022/core.mjs +1 -1
  32. package/fesm2022/core.mjs.map +1 -1
  33. package/fesm2022/date-formats-K6TQue-Y.mjs.map +1 -1
  34. package/fesm2022/{date-range-input-harness-DEyfkeOs.mjs → date-range-input-harness-BZyjpIJH.mjs} +16 -10
  35. package/fesm2022/date-range-input-harness-BZyjpIJH.mjs.map +1 -0
  36. package/fesm2022/datepicker/testing.mjs +2 -2
  37. package/fesm2022/datepicker/testing.mjs.map +1 -1
  38. package/fesm2022/datepicker.mjs.map +1 -1
  39. package/fesm2022/dialog/testing.mjs.map +1 -1
  40. package/fesm2022/dialog.mjs.map +1 -1
  41. package/fesm2022/divider/testing.mjs.map +1 -1
  42. package/fesm2022/divider.mjs.map +1 -1
  43. package/fesm2022/error-options-DasykDPK.mjs.map +1 -1
  44. package/fesm2022/error-state-Dtb1IHM-.mjs.map +1 -1
  45. package/fesm2022/expansion/testing.mjs.map +1 -1
  46. package/fesm2022/expansion.mjs.map +1 -1
  47. package/fesm2022/form-field/testing/control.mjs +13 -8
  48. package/fesm2022/form-field/testing/control.mjs.map +1 -1
  49. package/fesm2022/form-field/testing.mjs +1 -1
  50. package/fesm2022/form-field/testing.mjs.map +1 -1
  51. package/fesm2022/form-field-Ce1YJL9K.mjs.map +1 -1
  52. package/fesm2022/form-field.mjs.map +1 -1
  53. package/fesm2022/grid-list/testing.mjs.map +1 -1
  54. package/fesm2022/grid-list.mjs.map +1 -1
  55. package/fesm2022/icon/testing.mjs.map +1 -1
  56. package/fesm2022/icon-button-CfB6KH_E.mjs.map +1 -1
  57. package/fesm2022/icon-registry-CLBDUSOu.mjs.map +1 -1
  58. package/fesm2022/icon.mjs.map +1 -1
  59. package/fesm2022/index-CAi4o7I5.mjs.map +1 -1
  60. package/fesm2022/index-rIXEckYE.mjs.map +1 -1
  61. package/fesm2022/input/testing.mjs.map +1 -1
  62. package/fesm2022/input-harness-C5Msdc4-.mjs.map +1 -1
  63. package/fesm2022/input-value-accessor-D1GvPuqO.mjs.map +1 -1
  64. package/fesm2022/input.mjs.map +1 -1
  65. package/fesm2022/internal-form-field-C-QWn7el.mjs.map +1 -1
  66. package/fesm2022/line-B0IgETj1.mjs.map +1 -1
  67. package/fesm2022/list/testing.mjs.map +1 -1
  68. package/fesm2022/list.mjs +2 -2
  69. package/fesm2022/list.mjs.map +1 -1
  70. package/fesm2022/material.mjs.map +1 -1
  71. package/fesm2022/menu/testing.mjs.map +1 -1
  72. package/fesm2022/menu.mjs.map +1 -1
  73. package/fesm2022/module-BVI4kAmT.mjs.map +1 -1
  74. package/fesm2022/module-BpF6A05B.mjs.map +1 -1
  75. package/fesm2022/module-Bww_vjaX.mjs.map +1 -1
  76. package/fesm2022/module-X8APgGCS.mjs.map +1 -1
  77. package/fesm2022/option-_yFTwxlw.mjs.map +1 -1
  78. package/fesm2022/option-harness-BFcc-M_4.mjs.map +1 -1
  79. package/fesm2022/paginator/testing.mjs.map +1 -1
  80. package/fesm2022/paginator.mjs.map +1 -1
  81. package/fesm2022/progress-bar/testing.mjs.map +1 -1
  82. package/fesm2022/progress-bar.mjs.map +1 -1
  83. package/fesm2022/progress-spinner/testing.mjs.map +1 -1
  84. package/fesm2022/progress-spinner.mjs.map +1 -1
  85. package/fesm2022/pseudo-checkbox-CJSCiP0Y.mjs.map +1 -1
  86. package/fesm2022/pseudo-checkbox-module-BwXRv-p0.mjs.map +1 -1
  87. package/fesm2022/public-api-BoO5eSq-.mjs.map +1 -1
  88. package/fesm2022/radio/testing.mjs.map +1 -1
  89. package/fesm2022/radio.mjs +2 -2
  90. package/fesm2022/radio.mjs.map +1 -1
  91. package/fesm2022/ripple-DToxr3s4.mjs.map +1 -1
  92. package/fesm2022/ripple-loader-B_67UOY7.mjs.map +1 -1
  93. package/fesm2022/select/testing.mjs.map +1 -1
  94. package/fesm2022/select.mjs.map +1 -1
  95. package/fesm2022/sidenav/testing.mjs.map +1 -1
  96. package/fesm2022/sidenav.mjs.map +1 -1
  97. package/fesm2022/slide-toggle/testing.mjs.map +1 -1
  98. package/fesm2022/slide-toggle.mjs.map +1 -1
  99. package/fesm2022/slider/testing.mjs.map +1 -1
  100. package/fesm2022/slider.mjs +11 -1
  101. package/fesm2022/slider.mjs.map +1 -1
  102. package/fesm2022/snack-bar/testing.mjs.map +1 -1
  103. package/fesm2022/snack-bar.mjs.map +1 -1
  104. package/fesm2022/sort/testing.mjs.map +1 -1
  105. package/fesm2022/sort.mjs.map +1 -1
  106. package/fesm2022/stepper/testing.mjs.map +1 -1
  107. package/fesm2022/stepper.mjs.map +1 -1
  108. package/fesm2022/structural-styles-wmZbw0XJ.mjs.map +1 -1
  109. package/fesm2022/table/testing.mjs.map +1 -1
  110. package/fesm2022/table.mjs +0 -4
  111. package/fesm2022/table.mjs.map +1 -1
  112. package/fesm2022/tabs/testing.mjs.map +1 -1
  113. package/fesm2022/tabs.mjs.map +1 -1
  114. package/fesm2022/timepicker/testing.mjs.map +1 -1
  115. package/fesm2022/timepicker.mjs.map +1 -1
  116. package/fesm2022/toolbar/testing.mjs.map +1 -1
  117. package/fesm2022/toolbar.mjs.map +1 -1
  118. package/fesm2022/tooltip/testing.mjs.map +1 -1
  119. package/fesm2022/tooltip.mjs.map +1 -1
  120. package/fesm2022/tree/testing.mjs.map +1 -1
  121. package/fesm2022/tree.mjs.map +1 -1
  122. package/form-field/testing/control/index.d.ts +1 -1
  123. package/form-field/testing/index.d.ts +2 -2
  124. package/{form-field-control-harness.d-BLvFBy6v.d.ts → form-field-control-harness.d-BXb3NofW.d.ts} +4 -2
  125. package/input/testing/index.d.ts +1 -1
  126. package/package.json +2 -2
  127. package/schematics/ng-add/index.js +1 -1
  128. package/schematics/ng-add/theming/create-custom-theme.js +7 -1
  129. package/schematics/ng-add/theming/create-custom-theme.js.map +1 -1
  130. package/slider/index.d.ts +3 -1
  131. package/table/index.d.ts +2 -2
  132. package/fesm2022/date-range-input-harness-DEyfkeOs.mjs.map +0 -1
package/_index.scss CHANGED
@@ -17,9 +17,9 @@
17
17
  @forward './core/theming/theming' as private-* show private-clamp-density;
18
18
  @forward './core/typography/typography' show typography-hierarchy;
19
19
  @forward './core/typography/typography-utils' show font-shorthand;
20
- @forward './core/tokens/m3-system' show system-level-colors,
20
+ @forward 'core/tokens/system' show system-level-colors,
21
21
  system-level-typography, system-level-elevation, system-level-shape,
22
- system-level-motion, system-level-state, theme, theme-overrides;
22
+ system-level-motion, system-level-state, theme, theme-overrides, m2-theme;
23
23
 
24
24
  // Private/Internal
25
25
  @forward './core/density/private/all-density' show all-component-densities;
@@ -42,7 +42,7 @@ $_typography-keys: (
42
42
  $_typography-properties: (font, font-family, line-height, font-size, letter-spacing, font-weight);
43
43
 
44
44
  /// Gets the m2-config from the theme.
45
- @function _get-m2-config($theme) {
45
+ @function get-m2-config($theme) {
46
46
  // It is possible for a user to pass a "density theme" that is just a number.
47
47
  @if meta.type-of($theme) != 'map' {
48
48
  @return $theme;
@@ -89,7 +89,7 @@ $_typography-properties: (font, font-family, line-height, font-size, letter-spac
89
89
  /// @param {Map} $theme The theme
90
90
  /// @return {String} The type of theme (either `light` or `dark`).
91
91
  @function get-theme-type($theme) {
92
- $theme: _get-m2-config($theme);
92
+ $theme: get-m2-config($theme);
93
93
  @if not theme-has($theme, color) {
94
94
  @error 'Color information is not available on this theme.';
95
95
  }
@@ -112,7 +112,7 @@ $_typography-properties: (font, font-family, line-height, font-size, letter-spac
112
112
  /// @param {Number} $opacity The alpha channel value for the color.
113
113
  /// @return {Color} The requested theme color.
114
114
  @function get-theme-color($theme, $palette-name, $args...) {
115
- $theme: _get-m2-config($theme);
115
+ $theme: get-m2-config($theme);
116
116
  @if not theme-has($theme, color) {
117
117
  @error 'Color information is not available on this theme.';
118
118
  }
@@ -137,7 +137,7 @@ $_typography-properties: (font, font-family, line-height, font-size, letter-spac
137
137
  /// (font, font-family, font-size, font-weight, line-height, or letter-spacing).
138
138
  /// @return {*} The value of the requested font property.
139
139
  @function get-theme-typography($theme, $typescale, $property) {
140
- $theme: _get-m2-config($theme);
140
+ $theme: get-m2-config($theme);
141
141
  @if not theme-has($theme, typography) {
142
142
  @error 'Typography information is not available on this theme.';
143
143
  }
@@ -175,7 +175,7 @@ $_typography-properties: (font, font-family, line-height, font-size, letter-spac
175
175
  /// @param {Map} $theme The theme
176
176
  /// @return {Number} The density scale.
177
177
  @function get-theme-density($theme) {
178
- $theme: _get-m2-config($theme);
178
+ $theme: get-m2-config($theme);
179
179
  @if not theme-has($theme, density) {
180
180
  @error 'Density information is not available on this theme.';
181
181
  }
@@ -188,7 +188,7 @@ $_typography-properties: (font, font-family, line-height, font-size, letter-spac
188
188
  /// @param {String} $system The system to check
189
189
  /// @param {Boolean} Whether the theme has information about the system.
190
190
  @function theme-has($theme, $system) {
191
- $theme: _get-m2-config($theme);
191
+ $theme: get-m2-config($theme);
192
192
  @if $system == base {
193
193
  @return true;
194
194
  }
@@ -18,8 +18,10 @@
18
18
  @use '../style/elevation';
19
19
  @use '../theming/config-validation';
20
20
  @use '../theming/definition';
21
+ @use '../theming/m2-inspection';
21
22
  @use '../theming/palettes';
22
23
  @use '../style/sass-utils';
24
+ @use './m2';
23
25
  @use './m3';
24
26
  @use 'sass:map';
25
27
  @use 'sass:meta';
@@ -273,7 +275,6 @@
273
275
  $shadow-color: map.get(
274
276
  $theme, definition.$internals, palettes, neutral, 0);
275
277
 
276
-
277
278
  @include sass-utils.current-selector-or-root {
278
279
  @each $name, $value in m3.md-sys-elevation-values() {
279
280
  $level: map.get($overrides, $name) or $value;
@@ -307,3 +308,54 @@
307
308
  }
308
309
  @return $result;
309
310
  }
311
+
312
+ // Defines Angular Material system variables using M2 values provided by
313
+ // an M2 theme config created with `mat.m2-define-light-theme` or `mat.m2-define-dark-theme`.
314
+ //
315
+ // This enables applications to style custom components with system-level CSS
316
+ // variables instead of creating a separate component theme mixin that relies on
317
+ // the theme config.
318
+ //
319
+ // For example, use `var(--mat-sys-primary)` to get a theme's primary color instead of
320
+ // pulling it from the theme with `m2-get-color-from-palette($primary-palette, default)`.
321
+ //
322
+ // Unlike M3's `mat.theme()`, this mixin does not replace the need to call
323
+ // individual component theme mixins for Angular Material components.
324
+ @mixin m2-theme($theme-config, $overrides: ()) {
325
+ $config: m2-inspection.get-m2-config($theme-config);
326
+
327
+ $color: map.get($config, color);
328
+ @if (m2-inspection.theme-has($theme-config, color)) {
329
+ $system-colors: if(map.get($color, is-dark),
330
+ m2.md-sys-color-values-dark($color),
331
+ m2.md-sys-color-values-light($color),
332
+ );
333
+ @include _define-m2-system-vars($system-colors, $overrides);
334
+
335
+ $shadow: map.get($theme-config, _mat-system, shadow);
336
+ $system-elevations: ();
337
+ @each $name, $value in m2.md-sys-elevation-values() {
338
+ $level: map.get($overrides, $name) or $value;
339
+ $value: elevation.get-box-shadow($level, $shadow);
340
+ $system-elevations: map.set($system-elevations, $name, $value);
341
+ }
342
+ @include _define-m2-system-vars($system-elevations, $overrides);
343
+ }
344
+
345
+ $typography: map.get($config, typography);
346
+ @if ($typography) {
347
+ $system-typography: m2.md-sys-typescale-values($typography);
348
+ @include _define-m2-system-vars($system-typography, $overrides);
349
+ }
350
+
351
+ @include _define-m2-system-vars(m2.md-sys-shape-values(), $overrides);
352
+ @include _define-m2-system-vars(m2.md-sys-state-values(), $overrides);
353
+ }
354
+
355
+ @mixin _define-m2-system-vars($vars, $overrides) {
356
+ @include sass-utils.current-selector-or-root {
357
+ @each $name, $value in $vars {
358
+ --#{definition.$system-fallback-prefix}-#{$name}: #{map.get($overrides, $name) or $value};
359
+ }
360
+ }
361
+ }
@@ -1,8 +1,3 @@
1
- //
2
- // Design system display name: Material 3
3
- // Design system version: v0.161
4
- //
5
-
6
1
  @use 'sass:map';
7
2
  @use '../../m2/palette';
8
3
 
@@ -27,40 +22,38 @@
27
22
  inverse-on-surface: rgba(black, 0.87),
28
23
  outline: rgba(white, 0.12),
29
24
  outline-variant: rgba(white, 0.38),
30
-
31
- // TBD
32
- error-container: null,
33
- on-background: null,
34
- on-error-container: null,
35
- on-primary-container: null,
36
- on-primary-fixed: null,
37
- on-primary-fixed-variant: null,
38
- on-secondary-container: null,
39
- on-secondary-fixed: null,
40
- on-secondary-fixed-variant: null,
41
- on-tertiary: null,
42
- on-tertiary-container: null,
43
- on-tertiary-fixed: null,
44
- on-tertiary-fixed-variant: null,
45
- primary-container: null,
46
- primary-fixed: null,
47
- primary-fixed-dim: null,
48
- scrim: null,
49
- secondary-container: null,
50
- secondary-fixed: null,
51
- secondary-fixed-dim: null,
52
- surface-bright: null,
53
- surface-container: null,
54
- surface-container-high: null,
55
- surface-container-highest: null,
56
- surface-container-low: null,
57
- surface-container-lowest: null,
58
- surface-dim: null,
59
- surface-tint: null,
60
- tertiary: null,
61
- tertiary-container: null,
62
- tertiary-fixed: null,
63
- tertiary-fixed-dim: null,
25
+ error-container: map.get($palettes, warn, default),
26
+ on-background: white,
27
+ on-error-container: map.get($palettes, warn, default-contrast),
28
+ on-primary-container: map.get($palettes, primary, default-contrast),
29
+ on-primary-fixed: map.get($palettes, primary, default-contrast),
30
+ on-primary-fixed-variant: map.get($palettes, primary, default-contrast),
31
+ on-secondary-container: map.get($palettes, accent, default),
32
+ on-secondary-fixed: map.get($palettes, accent, default),
33
+ on-secondary-fixed-variant: map.get($palettes, accent, default),
34
+ on-tertiary: map.get($palettes, accent, default-contrast),
35
+ on-tertiary-container: map.get($palettes, accent, default-contrast),
36
+ on-tertiary-fixed: map.get($palettes, accent, default-contrast),
37
+ on-tertiary-fixed-variant: map.get($palettes, accent, default-contrast),
38
+ primary-container: map.get($palettes, primary, default),
39
+ primary-fixed: map.get($palettes, primary, default),
40
+ primary-fixed-dim: map.get($palettes, primary, default),
41
+ scrim: black,
42
+ secondary-container: map.get($palettes, accent, default-contrast),
43
+ secondary-fixed: map.get($palettes, accent, default-contrast),
44
+ secondary-fixed-dim: map.get($palettes, accent, default-contrast),
45
+ surface-bright: map.get(palette.$grey-palette, 800),
46
+ surface-container: map.get(palette.$grey-palette, 800),
47
+ surface-container-high: map.get(palette.$grey-palette, 800),
48
+ surface-container-highest: map.get(palette.$grey-palette, 800),
49
+ surface-container-low: map.get(palette.$grey-palette, 800),
50
+ surface-container-lowest: map.get(palette.$grey-palette, 800),
51
+ surface-dim: map.get(palette.$grey-palette, 800),
52
+ surface-tint: map.get(palette.$grey-palette, 800),
53
+ tertiary: map.get($palettes, accent, default),
54
+ tertiary-container: map.get($palettes, accent, default),
55
+ tertiary-fixed: map.get($palettes, accent, default),
56
+ tertiary-fixed-dim: map.get($palettes, accent, default),
64
57
  );
65
58
  }
66
59
 
@@ -85,39 +78,37 @@
85
78
  inverse-on-surface: white,
86
79
  outline: rgba(black, 0.12),
87
80
  outline-variant: rgba(black, 0.38),
88
-
89
- // TBD
90
- error-container: null,
91
- on-background: null,
92
- on-error-container: null,
93
- on-primary-container: null,
94
- on-primary-fixed: null,
95
- on-primary-fixed-variant: null,
96
- on-secondary-container: null,
97
- on-secondary-fixed: null,
98
- on-secondary-fixed-variant: null,
99
- on-tertiary: null,
100
- on-tertiary-container: null,
101
- on-tertiary-fixed: null,
102
- on-tertiary-fixed-variant: null,
103
- primary-container: null,
104
- primary-fixed: null,
105
- primary-fixed-dim: null,
106
- scrim: null,
107
- secondary-container: null,
108
- secondary-fixed: null,
109
- secondary-fixed-dim: null,
110
- surface-bright: null,
111
- surface-container: null,
112
- surface-container-high: null,
113
- surface-container-highest: null,
114
- surface-container-low: null,
115
- surface-container-lowest: null,
116
- surface-dim: null,
117
- surface-tint: null,
118
- tertiary: null,
119
- tertiary-container: null,
120
- tertiary-fixed: null,
121
- tertiary-fixed-dim: null,
81
+ error-container: map.get($palettes, warn, default),
82
+ on-background: rgba(black, 0.87),
83
+ on-error-container: map.get($palettes, warn, default-contrast),
84
+ on-primary-container: map.get($palettes, primary, default-contrast),
85
+ on-primary-fixed: map.get($palettes, primary, default-contrast),
86
+ on-primary-fixed-variant: map.get($palettes, primary, default-contrast),
87
+ on-secondary-container: map.get($palettes, accent, default),
88
+ on-secondary-fixed: map.get($palettes, accent, default),
89
+ on-secondary-fixed-variant: map.get($palettes, accent, default),
90
+ on-tertiary: map.get($palettes, accent, default-contrast),
91
+ on-tertiary-container: map.get($palettes, accent, default-contrast),
92
+ on-tertiary-fixed: map.get($palettes, accent, default-contrast),
93
+ on-tertiary-fixed-variant: map.get($palettes, accent, default-contrast),
94
+ primary-container: map.get($palettes, primary, default),
95
+ primary-fixed: map.get($palettes, primary, default),
96
+ primary-fixed-dim: map.get($palettes, primary, default),
97
+ scrim: black,
98
+ secondary-container: map.get($palettes, accent, default-contrast),
99
+ secondary-fixed: map.get($palettes, accent, default-contrast),
100
+ secondary-fixed-dim: map.get($palettes, accent, default-contrast),
101
+ surface-bright: map.get(palette.$grey-palette, 800),
102
+ surface-container: map.get(palette.$grey-palette, 800),
103
+ surface-container-high: map.get(palette.$grey-palette, 800),
104
+ surface-container-highest: map.get(palette.$grey-palette, 800),
105
+ surface-container-low: map.get(palette.$grey-palette, 800),
106
+ surface-container-lowest: map.get(palette.$grey-palette, 800),
107
+ surface-dim: map.get(palette.$grey-palette, 800),
108
+ surface-tint: map.get(palette.$grey-palette, 800),
109
+ tertiary: map.get($palettes, accent, default),
110
+ tertiary-container: map.get($palettes, accent, default),
111
+ tertiary-fixed: map.get($palettes, accent, default),
112
+ tertiary-fixed-dim: map.get($palettes, accent, default),
122
113
  );
123
114
  }
@@ -1,16 +1,10 @@
1
- //
2
- // Design system display name: Material 3
3
- // Design system version: v0.161
4
- //
5
-
6
1
  @function md-sys-elevation-values() {
7
2
  @return (
8
- // TBD
9
- level0: null,
10
- level1: null,
11
- level2: null,
12
- level3: null,
13
- level4: null,
14
- level5: null,
3
+ level0: 0,
4
+ level1: 1,
5
+ level2: 3,
6
+ level3: 6,
7
+ level4: 8,
8
+ level5: 12
15
9
  );
16
10
  }
@@ -1,36 +1,30 @@
1
- //
2
- // Design system display name: Material 3
3
- // Design system version: v0.161
4
- //
5
-
6
1
  @function md-sys-motion-values() {
7
2
  @return (
8
- // TBD
9
- duration-extra-long1: null,
10
- duration-extra-long2: null,
11
- duration-extra-long3: null,
12
- duration-extra-long4: null,
13
- duration-long1: null,
14
- duration-long2: null,
15
- duration-long3: null,
16
- duration-long4: null,
17
- duration-medium1: null,
18
- duration-medium2: null,
19
- duration-medium3: null,
20
- duration-medium4: null,
21
- duration-short1: null,
22
- duration-short2: null,
23
- duration-short3: null,
24
- duration-short4: null,
25
- easing-emphasized: null,
26
- easing-emphasized-accelerate: null,
27
- easing-emphasized-decelerate: null,
28
- easing-legacy: null,
29
- easing-legacy-accelerate: null,
30
- easing-legacy-decelerate: null,
31
- easing-linear: null,
32
- easing-standard: null,
33
- easing-standard-accelerate: null,
34
- easing-standard-decelerate: null,
3
+ duration-extra-long1: 700ms,
4
+ duration-extra-long2: 800ms,
5
+ duration-extra-long3: 900ms,
6
+ duration-extra-long4: 1000ms,
7
+ duration-long1: 450ms,
8
+ duration-long2: 500ms,
9
+ duration-long3: 550ms,
10
+ duration-long4: 600ms,
11
+ duration-medium1: 250ms,
12
+ duration-medium2: 300ms,
13
+ duration-medium3: 350ms,
14
+ duration-medium4: 400ms,
15
+ duration-short1: 50ms,
16
+ duration-short2: 100ms,
17
+ duration-short3: 150ms,
18
+ duration-short4: 200ms,
19
+ easing-emphasized: cubic-bezier(0.2, 0, 0, 1),
20
+ easing-emphasized-accelerate: cubic-bezier(0.3, 0, 0.8, 0.15),
21
+ easing-emphasized-decelerate: cubic-bezier(0.05, 0.7, 0.1, 1),
22
+ easing-legacy: cubic-bezier(0.4, 0, 0.2, 1),
23
+ easing-legacy-accelerate: cubic-bezier(0.4, 0, 1, 1),
24
+ easing-legacy-decelerate: cubic-bezier(0, 0, 0.2, 1),
25
+ easing-linear: cubic-bezier(0, 0, 1, 1),
26
+ easing-standard: cubic-bezier(0.2, 0, 0, 1),
27
+ easing-standard-accelerate: cubic-bezier(0.3, 0, 1, 1),
28
+ easing-standard-decelerate: cubic-bezier(0, 0, 0, 1)
35
29
  );
36
30
  }
@@ -1,22 +1,16 @@
1
- //
2
- // Design system display name: Material 3
3
- // Design system version: v0.161
4
- //
5
-
6
1
  @function md-sys-shape-values() {
7
2
  @return (
8
- // TBD
9
- corner-extra-large: null,
10
- corner-extra-large-top: null,
11
- corner-extra-small: null,
12
- corner-extra-small-top: null,
13
- corner-full: null,
14
- corner-large: null,
15
- corner-large-end: null,
16
- corner-large-start: null,
17
- corner-large-top: null,
18
- corner-medium: null,
19
- corner-none: null,
20
- corner-small: null,
3
+ corner-extra-large: 28px,
4
+ corner-extra-large-top: (28px 28px 0 0),
5
+ corner-extra-small: 4px,
6
+ corner-extra-small-top: (4px 4px 0 0),
7
+ corner-full: 9999px,
8
+ corner-large: 16px,
9
+ corner-large-end: (0 16px 16px 0),
10
+ corner-large-start: (16px 0 0 16px),
11
+ corner-large-top: (16px 16px 0 0),
12
+ corner-medium: 12px,
13
+ corner-none: 0,
14
+ corner-small: 8px
21
15
  );
22
16
  }
@@ -1,15 +1,8 @@
1
- //
2
- // Design system display name: Material 3
3
- // Design system version: v0.161
4
- //
5
-
6
1
  @function md-sys-state-values($exclude-hardcoded-values: false) {
7
2
  @return (
3
+ dragged-state-layer-opacity: 0.16,
8
4
  focus-state-layer-opacity: 0.12,
9
5
  hover-state-layer-opacity: 0.04,
10
6
  pressed-state-layer-opacity: 0.12,
11
-
12
- // TBD
13
- dragged-state-layer-opacity: 0.16,
14
7
  );
15
8
  }
@@ -1,8 +1,3 @@
1
- //
2
- // Design system display name: Material 3
3
- // Design system version: v0.161
4
- //
5
-
6
1
  @use 'sass:map';
7
2
 
8
3
  // Indicates whether alternative tokens should be used
@@ -63,9 +58,7 @@ $_alternate-tokens: false;
63
58
 
64
59
  @if ($_alternate-tokens) {
65
60
  $values: map.merge($values, (
66
- background: map.get($palettes, neutral, 10),
67
61
  on-surface-variant: map.get($palettes, neutral-variant, 80),
68
- surface: map.get($palettes, neutral, 10),
69
62
  surface-bright: #37393b,
70
63
  surface-container: #1e1f20,
71
64
  surface-container-high: #282a2c,
@@ -136,17 +129,12 @@ $_alternate-tokens: false;
136
129
  @if ($_alternate-tokens) {
137
130
  $values: map.merge($values, (
138
131
  background: map.get($palettes, neutral, 100),
139
- on-error-container: map.get($palettes, error, 10),
140
- on-primary-container: map.get($palettes, primary, 10),
141
- on-secondary-container: map.get($palettes, secondary, 10),
142
- on-tertiary-container: map.get($palettes, tertiary, 10),
143
132
  surface: map.get($palettes, neutral, 100),
144
133
  surface-bright: map.get($palettes, neutral, 100),
145
134
  surface-container: #f0f4f9,
146
135
  surface-container-high: #e9eef6,
147
136
  surface-container-highest: #dde3ea,
148
137
  surface-container-low: #f8fafd,
149
- surface-container-lowest: map.get($palettes, primary, 100),
150
138
  surface-dim: #d3dbe5,
151
139
  surface-tint: #6991d6,
152
140
  ));
@@ -251,7 +251,6 @@ declare class MatEndDateHarness extends MatDatepickerInputHarnessBase {
251
251
  /** Harness for interacting with a standard Material date range input in tests. */
252
252
  declare class MatDateRangeInputHarness extends DatepickerTriggerHarnessBase {
253
253
  static hostSelector: string;
254
- private readonly _floatingLabelSelector;
255
254
  /**
256
255
  * Gets a `HarnessPredicate` that can be used to search for a `MatDateRangeInputHarness`
257
256
  * that meets certain criteria.
@@ -265,7 +264,10 @@ declare class MatDateRangeInputHarness extends DatepickerTriggerHarnessBase {
265
264
  getStartInput(): Promise<MatStartDateHarness>;
266
265
  /** Gets the inner start date input inside the range input. */
267
266
  getEndInput(): Promise<MatEndDateHarness>;
268
- /** Gets the floating label text for the range input, if it exists. */
267
+ /**
268
+ * Gets the label for the range input, if it exists. This might be provided by a label element or
269
+ * by the `aria-label` attribute.
270
+ */
269
271
  getLabel(): Promise<string | null>;
270
272
  /** Gets the separator text between the values of the two inputs. */
271
273
  getSeparator(): Promise<string>;
@@ -1,5 +1,5 @@
1
- import { D as DatepickerTriggerHarnessBase, a as DatepickerToggleHarnessFilters } from '../../date-range-input-harness.d-CJ4r85Uf.js';
2
- export { c as CalendarCellHarnessFilters, C as CalendarHarnessFilters, h as CalendarView, d as DateRangeInputHarnessFilters, b as DatepickerInputHarnessFilters, j as MatCalendarCellHarness, i as MatCalendarHarness, g as MatDateRangeInputHarness, M as MatDatepickerInputHarness, f as MatEndDateHarness, e as MatStartDateHarness } from '../../date-range-input-harness.d-CJ4r85Uf.js';
1
+ import { D as DatepickerTriggerHarnessBase, a as DatepickerToggleHarnessFilters } from '../../date-range-input-harness.d-D9G3xNDV.js';
2
+ export { c as CalendarCellHarnessFilters, C as CalendarHarnessFilters, h as CalendarView, d as DateRangeInputHarnessFilters, b as DatepickerInputHarnessFilters, j as MatCalendarCellHarness, i as MatCalendarHarness, g as MatDateRangeInputHarness, M as MatDatepickerInputHarness, f as MatEndDateHarness, e as MatStartDateHarness } from '../../date-range-input-harness.d-D9G3xNDV.js';
3
3
  import { HarnessPredicate } from '@angular/cdk/testing';
4
4
  import '@angular/material/form-field/testing/control';
5
5
 
@@ -1 +1 @@
1
- {"version":3,"file":"animation-ChQ1vjiF.mjs","sources":["../../../../../k8-fastbuild-ST-46c76129e412/bin/src/material/core/animation/animation.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 {MediaMatcher} from '@angular/cdk/layout';\nimport {ANIMATION_MODULE_TYPE, inject, InjectionToken} from '@angular/core';\n\n/** Object used to configure the animation in Angular Material. */\nexport interface AnimationsConfig {\n /** Whether all animations should be disabled. */\n animationsDisabled?: boolean;\n}\n\n/** Injection token used to configure the animations in Angular Material. */\nexport const MATERIAL_ANIMATIONS = new InjectionToken<AnimationsConfig>('MATERIAL_ANIMATIONS');\n\n/**\n * @deprecated No longer used, will be removed.\n * @breaking-change 21.0.0\n * @docs-private\n */\nexport class AnimationCurves {\n static STANDARD_CURVE = 'cubic-bezier(0.4,0.0,0.2,1)';\n static DECELERATION_CURVE = 'cubic-bezier(0.0,0.0,0.2,1)';\n static ACCELERATION_CURVE = 'cubic-bezier(0.4,0.0,1,1)';\n static SHARP_CURVE = 'cubic-bezier(0.4,0.0,0.6,1)';\n}\n\n/**\n * @deprecated No longer used, will be removed.\n * @breaking-change 21.0.0\n * @docs-private\n */\nexport class AnimationDurations {\n static COMPLEX = '375ms';\n static ENTERING = '225ms';\n static EXITING = '195ms';\n}\n\nlet reducedMotion: boolean | null = null;\n\n/**\n * Gets the the configured animations state.\n * @docs-private\n */\nexport function _getAnimationsState(): 'enabled' | 'di-disabled' | 'reduced-motion' {\n if (\n inject(MATERIAL_ANIMATIONS, {optional: true})?.animationsDisabled ||\n inject(ANIMATION_MODULE_TYPE, {optional: true}) === 'NoopAnimations'\n ) {\n return 'di-disabled';\n }\n\n reducedMotion ??= inject(MediaMatcher).matchMedia('(prefers-reduced-motion)').matches;\n return reducedMotion ? 'reduced-motion' : 'enabled';\n}\n\n/**\n * Returns whether animations have been disabled by DI. Must be called in a DI context.\n * @docs-private\n */\nexport function _animationsDisabled(): boolean {\n return _getAnimationsState() !== 'enabled';\n}\n"],"names":[],"mappings":";;;AAiBA;MACa,mBAAmB,GAAG,IAAI,cAAc,CAAmB,qBAAqB;AAE7F;;;;AAIG;MACU,eAAe,CAAA;AAC1B,IAAA,OAAO,cAAc,GAAG,6BAA6B;AACrD,IAAA,OAAO,kBAAkB,GAAG,6BAA6B;AACzD,IAAA,OAAO,kBAAkB,GAAG,2BAA2B;AACvD,IAAA,OAAO,WAAW,GAAG,6BAA6B;;AAGpD;;;;AAIG;MACU,kBAAkB,CAAA;AAC7B,IAAA,OAAO,OAAO,GAAG,OAAO;AACxB,IAAA,OAAO,QAAQ,GAAG,OAAO;AACzB,IAAA,OAAO,OAAO,GAAG,OAAO;;AAG1B,IAAI,aAAa,GAAmB,IAAI;AAExC;;;AAGG;SACa,mBAAmB,GAAA;IACjC,IACE,MAAM,CAAC,mBAAmB,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,EAAE,kBAAkB;AACjE,QAAA,MAAM,CAAC,qBAAqB,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,KAAK,gBAAgB,EACpE;AACA,QAAA,OAAO,aAAa;;AAGtB,IAAA,aAAa,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,0BAA0B,CAAC,CAAC,OAAO;IACrF,OAAO,aAAa,GAAG,gBAAgB,GAAG,SAAS;AACrD;AAEA;;;AAGG;SACa,mBAAmB,GAAA;AACjC,IAAA,OAAO,mBAAmB,EAAE,KAAK,SAAS;AAC5C;;;;"}
1
+ {"version":3,"file":"animation-ChQ1vjiF.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-46c76129e412/bin/src/material/core/animation/animation.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 {MediaMatcher} from '@angular/cdk/layout';\nimport {ANIMATION_MODULE_TYPE, inject, InjectionToken} from '@angular/core';\n\n/** Object used to configure the animation in Angular Material. */\nexport interface AnimationsConfig {\n /** Whether all animations should be disabled. */\n animationsDisabled?: boolean;\n}\n\n/** Injection token used to configure the animations in Angular Material. */\nexport const MATERIAL_ANIMATIONS = new InjectionToken<AnimationsConfig>('MATERIAL_ANIMATIONS');\n\n/**\n * @deprecated No longer used, will be removed.\n * @breaking-change 21.0.0\n * @docs-private\n */\nexport class AnimationCurves {\n static STANDARD_CURVE = 'cubic-bezier(0.4,0.0,0.2,1)';\n static DECELERATION_CURVE = 'cubic-bezier(0.0,0.0,0.2,1)';\n static ACCELERATION_CURVE = 'cubic-bezier(0.4,0.0,1,1)';\n static SHARP_CURVE = 'cubic-bezier(0.4,0.0,0.6,1)';\n}\n\n/**\n * @deprecated No longer used, will be removed.\n * @breaking-change 21.0.0\n * @docs-private\n */\nexport class AnimationDurations {\n static COMPLEX = '375ms';\n static ENTERING = '225ms';\n static EXITING = '195ms';\n}\n\nlet reducedMotion: boolean | null = null;\n\n/**\n * Gets the the configured animations state.\n * @docs-private\n */\nexport function _getAnimationsState(): 'enabled' | 'di-disabled' | 'reduced-motion' {\n if (\n inject(MATERIAL_ANIMATIONS, {optional: true})?.animationsDisabled ||\n inject(ANIMATION_MODULE_TYPE, {optional: true}) === 'NoopAnimations'\n ) {\n return 'di-disabled';\n }\n\n reducedMotion ??= inject(MediaMatcher).matchMedia('(prefers-reduced-motion)').matches;\n return reducedMotion ? 'reduced-motion' : 'enabled';\n}\n\n/**\n * Returns whether animations have been disabled by DI. Must be called in a DI context.\n * @docs-private\n */\nexport function _animationsDisabled(): boolean {\n return _getAnimationsState() !== 'enabled';\n}\n"],"names":[],"mappings":";;;AAiBA;MACa,mBAAmB,GAAG,IAAI,cAAc,CAAmB,qBAAqB;AAE7F;;;;AAIG;MACU,eAAe,CAAA;AAC1B,IAAA,OAAO,cAAc,GAAG,6BAA6B;AACrD,IAAA,OAAO,kBAAkB,GAAG,6BAA6B;AACzD,IAAA,OAAO,kBAAkB,GAAG,2BAA2B;AACvD,IAAA,OAAO,WAAW,GAAG,6BAA6B;;AAGpD;;;;AAIG;MACU,kBAAkB,CAAA;AAC7B,IAAA,OAAO,OAAO,GAAG,OAAO;AACxB,IAAA,OAAO,QAAQ,GAAG,OAAO;AACzB,IAAA,OAAO,OAAO,GAAG,OAAO;;AAG1B,IAAI,aAAa,GAAmB,IAAI;AAExC;;;AAGG;SACa,mBAAmB,GAAA;IACjC,IACE,MAAM,CAAC,mBAAmB,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,EAAE,kBAAkB;AACjE,QAAA,MAAM,CAAC,qBAAqB,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,KAAK,gBAAgB,EACpE;AACA,QAAA,OAAO,aAAa;;AAGtB,IAAA,aAAa,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,0BAA0B,CAAC,CAAC,OAAO;IACrF,OAAO,aAAa,GAAG,gBAAgB,GAAG,SAAS;AACrD;AAEA;;;AAGG;SACa,mBAAmB,GAAA;AACjC,IAAA,OAAO,mBAAmB,EAAE,KAAK,SAAS;AAC5C;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"testing.mjs","sources":["../../../../../../k8-fastbuild-ST-46c76129e412/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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"}
1
+ {"version":3,"file":"testing.mjs","sources":["../../../../../../darwin_arm64-fastbuild-ST-46c76129e412/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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"}