@angular/material 21.0.0-next.4 → 21.0.0-next.5

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 (117) hide show
  1. package/button/testing/index.d.ts +2 -0
  2. package/core/focus-indicators/_private.scss +16 -0
  3. package/core/tokens/m2/_md-sys-color-internal.scss +11 -0
  4. package/core/tokens/m2/_md-sys-color.scss +11 -2
  5. package/core/tokens/m3/_md-sys-color-internal.scss +11 -0
  6. package/core/tokens/m3/_md-sys-color.scss +5 -31
  7. package/core/tokens/m3/_md-sys-typescale-internal.scss +5 -0
  8. package/core/tokens/m3/_md-sys-typescale.scss +2 -16
  9. package/fesm2022/animation.mjs.map +1 -1
  10. package/fesm2022/autocomplete/testing.mjs.map +1 -1
  11. package/fesm2022/autocomplete.mjs.map +1 -1
  12. package/fesm2022/badge/testing.mjs.map +1 -1
  13. package/fesm2022/badge.mjs.map +1 -1
  14. package/fesm2022/bottom-sheet/testing.mjs.map +1 -1
  15. package/fesm2022/bottom-sheet.mjs.map +1 -1
  16. package/fesm2022/button/testing.mjs +5 -1
  17. package/fesm2022/button/testing.mjs.map +1 -1
  18. package/fesm2022/button-toggle/testing.mjs.map +1 -1
  19. package/fesm2022/button-toggle.mjs.map +1 -1
  20. package/fesm2022/button.mjs.map +1 -1
  21. package/fesm2022/card/testing.mjs.map +1 -1
  22. package/fesm2022/card.mjs.map +1 -1
  23. package/fesm2022/checkbox/testing.mjs.map +1 -1
  24. package/fesm2022/checkbox.mjs.map +1 -1
  25. package/fesm2022/chips/testing.mjs.map +1 -1
  26. package/fesm2022/chips.mjs +6 -6
  27. package/fesm2022/chips.mjs.map +1 -1
  28. package/fesm2022/core/testing.mjs.map +1 -1
  29. package/fesm2022/core.mjs +1 -1
  30. package/fesm2022/core.mjs.map +1 -1
  31. package/fesm2022/date-formats.mjs.map +1 -1
  32. package/fesm2022/date-range-input-harness.mjs.map +1 -1
  33. package/fesm2022/datepicker/testing.mjs.map +1 -1
  34. package/fesm2022/datepicker.mjs.map +1 -1
  35. package/fesm2022/dialog/testing.mjs.map +1 -1
  36. package/fesm2022/dialog.mjs.map +1 -1
  37. package/fesm2022/divider/testing.mjs.map +1 -1
  38. package/fesm2022/divider.mjs.map +1 -1
  39. package/fesm2022/error-options.mjs.map +1 -1
  40. package/fesm2022/error-state.mjs.map +1 -1
  41. package/fesm2022/expansion/testing.mjs.map +1 -1
  42. package/fesm2022/expansion.mjs.map +1 -1
  43. package/fesm2022/form-field/testing/control.mjs.map +1 -1
  44. package/fesm2022/form-field/testing.mjs.map +1 -1
  45. package/fesm2022/form-field.mjs.map +1 -1
  46. package/fesm2022/form-field2.mjs +2 -2
  47. package/fesm2022/form-field2.mjs.map +1 -1
  48. package/fesm2022/grid-list/testing.mjs.map +1 -1
  49. package/fesm2022/grid-list.mjs.map +1 -1
  50. package/fesm2022/icon/testing.mjs.map +1 -1
  51. package/fesm2022/icon-button.mjs.map +1 -1
  52. package/fesm2022/icon-registry.mjs.map +1 -1
  53. package/fesm2022/icon.mjs.map +1 -1
  54. package/fesm2022/input/testing.mjs.map +1 -1
  55. package/fesm2022/input-harness.mjs.map +1 -1
  56. package/fesm2022/input-value-accessor.mjs.map +1 -1
  57. package/fesm2022/input.mjs.map +1 -1
  58. package/fesm2022/internal-form-field.mjs.map +1 -1
  59. package/fesm2022/line.mjs.map +1 -1
  60. package/fesm2022/list/testing.mjs.map +1 -1
  61. package/fesm2022/list.mjs.map +1 -1
  62. package/fesm2022/material.mjs.map +1 -1
  63. package/fesm2022/menu/testing.mjs.map +1 -1
  64. package/fesm2022/menu.mjs.map +1 -1
  65. package/fesm2022/option-harness.mjs.map +1 -1
  66. package/fesm2022/option-module.mjs.map +1 -1
  67. package/fesm2022/option.mjs.map +1 -1
  68. package/fesm2022/paginator/testing.mjs.map +1 -1
  69. package/fesm2022/paginator.mjs.map +1 -1
  70. package/fesm2022/progress-bar/testing.mjs.map +1 -1
  71. package/fesm2022/progress-bar.mjs.map +1 -1
  72. package/fesm2022/progress-spinner/testing.mjs.map +1 -1
  73. package/fesm2022/progress-spinner.mjs.map +1 -1
  74. package/fesm2022/pseudo-checkbox-module.mjs.map +1 -1
  75. package/fesm2022/pseudo-checkbox.mjs.map +1 -1
  76. package/fesm2022/public-api.mjs.map +1 -1
  77. package/fesm2022/radio/testing.mjs.map +1 -1
  78. package/fesm2022/radio.mjs +2 -2
  79. package/fesm2022/radio.mjs.map +1 -1
  80. package/fesm2022/ripple-loader.mjs.map +1 -1
  81. package/fesm2022/ripple-module.mjs.map +1 -1
  82. package/fesm2022/ripple.mjs.map +1 -1
  83. package/fesm2022/select/testing.mjs.map +1 -1
  84. package/fesm2022/select.mjs.map +1 -1
  85. package/fesm2022/sidenav/testing.mjs.map +1 -1
  86. package/fesm2022/sidenav.mjs.map +1 -1
  87. package/fesm2022/slide-toggle/testing.mjs.map +1 -1
  88. package/fesm2022/slide-toggle.mjs.map +1 -1
  89. package/fesm2022/slider/testing.mjs.map +1 -1
  90. package/fesm2022/slider.mjs.map +1 -1
  91. package/fesm2022/snack-bar/testing.mjs.map +1 -1
  92. package/fesm2022/snack-bar.mjs.map +1 -1
  93. package/fesm2022/sort/testing.mjs.map +1 -1
  94. package/fesm2022/sort.mjs.map +1 -1
  95. package/fesm2022/stepper/testing.mjs +2 -1
  96. package/fesm2022/stepper/testing.mjs.map +1 -1
  97. package/fesm2022/stepper.mjs +4 -6
  98. package/fesm2022/stepper.mjs.map +1 -1
  99. package/fesm2022/structural-styles.mjs.map +1 -1
  100. package/fesm2022/table/testing.mjs +2 -2
  101. package/fesm2022/table/testing.mjs.map +1 -1
  102. package/fesm2022/table.mjs +8 -3
  103. package/fesm2022/table.mjs.map +1 -1
  104. package/fesm2022/tabs/testing.mjs.map +1 -1
  105. package/fesm2022/tabs.mjs.map +1 -1
  106. package/fesm2022/timepicker/testing.mjs.map +1 -1
  107. package/fesm2022/timepicker.mjs.map +1 -1
  108. package/fesm2022/toolbar/testing.mjs.map +1 -1
  109. package/fesm2022/toolbar.mjs.map +1 -1
  110. package/fesm2022/tooltip/testing.mjs.map +1 -1
  111. package/fesm2022/tooltip.mjs.map +1 -1
  112. package/fesm2022/tooltip2.mjs.map +1 -1
  113. package/fesm2022/tree/testing.mjs.map +1 -1
  114. package/fesm2022/tree.mjs.map +1 -1
  115. package/package.json +2 -2
  116. package/schematics/ng-add/index.js +1 -1
  117. package/table/index.d.ts +2 -1
@@ -18,6 +18,8 @@ interface ButtonHarnessFilters extends BaseHarnessFilters {
18
18
  disabled?: boolean;
19
19
  /** Only find instances with the specified type. */
20
20
  buttonType?: ButtonType;
21
+ /** Only find instances that contain an icon whose name matches the given value. */
22
+ iconName?: string | RegExp;
21
23
  }
22
24
 
23
25
  /** Harness for interacting with a mat-button in tests. */
@@ -86,6 +86,10 @@ $default-border-radius: 4px;
86
86
  $config: map.merge($default-config, $config);
87
87
 
88
88
  @include _customize-focus-indicators($config);
89
+
90
+ // Strong focus indicators currently need chip labels to have overflow visible.
91
+ // TODO(b/446709063) revisit the structure to find a way to remove this dependency.
92
+ @include _chip-label-overflow-visible();
89
93
  }
90
94
 
91
95
  @mixin strong-focus-indicators-color($theme-or-color) {
@@ -108,3 +112,15 @@ $default-border-radius: 4px;
108
112
  }
109
113
  }
110
114
  }
115
+
116
+ @mixin _chip-label-overflow-visible {
117
+ .mat-mdc-standard-chip {
118
+ // MDC sets `overflow: hidden` on these elements in order to truncate the text. This conflicts
119
+ // with how we structure and style the strong focus indicators so we need to override it.
120
+ .mdc-evolution-chip__cell--primary,
121
+ .mdc-evolution-chip__action--primary,
122
+ .mat-mdc-chip-action-label {
123
+ overflow: visible;
124
+ }
125
+ }
126
+ }
@@ -0,0 +1,11 @@
1
+ // Dark system color values that are google3-internal and diverge from the
2
+ // external Material Design spec.
3
+ @function values-dark($palettes) {
4
+ @return ();
5
+ }
6
+
7
+ // Light system color values that are google3-internal and diverge from the
8
+ // external Material Design spec.
9
+ @function values-light($palettes) {
10
+ @return ();
11
+ }
@@ -1,8 +1,9 @@
1
1
  @use 'sass:map';
2
2
  @use '../../m2/palette';
3
+ @use './md-sys-color-internal';
3
4
 
4
5
  @function md-sys-color-values-dark($palettes) {
5
- @return (
6
+ $values: (
6
7
  primary: map.get($palettes, primary, default),
7
8
  on-primary: map.get($palettes, primary, default-contrast),
8
9
  inverse-primary: map.get($palettes, primary, 600),
@@ -55,10 +56,14 @@
55
56
  tertiary-fixed: map.get($palettes, accent, default),
56
57
  tertiary-fixed-dim: map.get($palettes, accent, default),
57
58
  );
59
+
60
+ $values: map.merge($values, md-sys-color-internal.values-dark($palettes));
61
+
62
+ @return $values;
58
63
  }
59
64
 
60
65
  @function md-sys-color-values-light($palettes) {
61
- @return (
66
+ $values: (
62
67
  primary: map.get($palettes, primary, default),
63
68
  on-primary: map.get($palettes, primary, default-contrast),
64
69
  inverse-primary: map.get($palettes, primary, 300),
@@ -111,4 +116,8 @@
111
116
  tertiary-fixed: map.get($palettes, accent, default),
112
117
  tertiary-fixed-dim: map.get($palettes, accent, default),
113
118
  );
119
+
120
+ $values: map.merge($values, md-sys-color-internal.values-light($palettes));
121
+
122
+ @return $values;
114
123
  }
@@ -0,0 +1,11 @@
1
+ // Dark system color values that are internal-only and diverge from the
2
+ // external Material Design spec.
3
+ @function values-dark($palettes) {
4
+ @return ();
5
+ }
6
+
7
+ // Light system color values that are internal-only and diverge from the
8
+ // external Material Design spec.
9
+ @function values-light($palettes) {
10
+ @return ();
11
+ }
@@ -1,7 +1,5 @@
1
1
  @use 'sass:map';
2
-
3
- // Indicates whether alternative tokens should be used
4
- $_alternate-tokens: false;
2
+ @use './md-sys-color-internal';
5
3
 
6
4
  @function md-sys-color-values-dark($palettes: ()) {
7
5
  $values: (
@@ -53,22 +51,10 @@ $_alternate-tokens: false;
53
51
  tertiary: map.get($palettes, tertiary, 80),
54
52
  tertiary-container: map.get($palettes, tertiary, 30),
55
53
  tertiary-fixed: map.get($palettes, tertiary, 90),
56
- tertiary-fixed-dim: map.get($palettes, tertiary, 80)
54
+ tertiary-fixed-dim: map.get($palettes, tertiary, 80),
57
55
  );
58
56
 
59
- @if ($_alternate-tokens) {
60
- $values: map.merge($values, (
61
- on-surface-variant: map.get($palettes, neutral-variant, 80),
62
- surface-bright: #37393b,
63
- surface-container: #1e1f20,
64
- surface-container-high: #282a2c,
65
- surface-container-highest: #333537,
66
- surface-container-low: #1b1b1b,
67
- surface-container-lowest: #0e0e0e,
68
- surface-dim: #131313,
69
- surface-tint: #d1e1ff,
70
- ));
71
- }
57
+ $values: map.merge($values, md-sys-color-internal.values-dark($palettes));
72
58
 
73
59
  @return $values;
74
60
  }
@@ -123,22 +109,10 @@ $_alternate-tokens: false;
123
109
  tertiary: map.get($palettes, tertiary, 40),
124
110
  tertiary-container: map.get($palettes, tertiary, 90),
125
111
  tertiary-fixed: map.get($palettes, tertiary, 90),
126
- tertiary-fixed-dim: map.get($palettes, tertiary, 80)
112
+ tertiary-fixed-dim: map.get($palettes, tertiary, 80),
127
113
  );
128
114
 
129
- @if ($_alternate-tokens) {
130
- $values: map.merge($values, (
131
- background: map.get($palettes, neutral, 100),
132
- surface: map.get($palettes, neutral, 100),
133
- surface-bright: map.get($palettes, neutral, 100),
134
- surface-container: #f0f4f9,
135
- surface-container-high: #e9eef6,
136
- surface-container-highest: #dde3ea,
137
- surface-container-low: #f8fafd,
138
- surface-dim: #d3dbe5,
139
- surface-tint: #6991d6,
140
- ));
141
- }
115
+ $values: map.merge($values, md-sys-color-internal.values-light($palettes));
142
116
 
143
117
  @return $values;
144
118
  }
@@ -0,0 +1,5 @@
1
+ // System typescale values that are internal-only and diverge from the
2
+ // external Material Design spec.
3
+ @function values($typography) {
4
+ @return ();
5
+ }
@@ -4,9 +4,7 @@
4
4
  //
5
5
 
6
6
  @use 'sass:map';
7
-
8
- // Indicates whether alternative tokens should be used
9
- $_alternate-tokens: false;
7
+ @use './md-sys-typescale-internal';
10
8
 
11
9
  @function md-sys-typescale-values($typography: ()) {
12
10
  $plain: map.get($typography, plain);
@@ -110,19 +108,7 @@ $_alternate-tokens: false;
110
108
  title-small-weight: $medium
111
109
  );
112
110
 
113
- @if ($_alternate-tokens) {
114
- $values: map.merge($values, (
115
- body-large-tracking: 0,
116
- body-medium-tracking: 0,
117
- body-small-tracking: 0.006rem,
118
- display-large-tracking: 0,
119
- label-large-tracking: 0,
120
- label-medium-tracking: 0.006rem,
121
- label-small-tracking: 0.006rem,
122
- title-medium-tracking: 0,
123
- title-small-tracking: 0,
124
- ));
125
- }
111
+ $values: map.merge($values, md-sys-typescale-internal.values($typography));
126
112
 
127
113
  @return $values;
128
114
  }
@@ -1 +1 @@
1
- {"version":3,"file":"animation.mjs","sources":["../../../../../k8-fastbuild-ST-199a4f3c4e20/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.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/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-199a4f3c4e20/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-199a4f3c4e20/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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"}