@angular/material 11.2.1 → 11.2.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 (121) hide show
  1. package/_theming.scss +153 -150
  2. package/autocomplete/_autocomplete-theme.import.scss +2 -0
  3. package/autocomplete/autocomplete.d.ts +1 -1
  4. package/badge/_badge-theme.import.scss +5 -0
  5. package/bottom-sheet/_bottom-sheet-theme.import.scss +4 -0
  6. package/bottom-sheet/bottom-sheet-container.d.ts +2 -0
  7. package/bottom-sheet/index.metadata.json +1 -1
  8. package/bundles/material-autocomplete.umd.js.map +1 -1
  9. package/bundles/material-bottom-sheet.umd.js +11 -3
  10. package/bundles/material-bottom-sheet.umd.js.map +1 -1
  11. package/bundles/material-bottom-sheet.umd.min.js +1 -1
  12. package/bundles/material-bottom-sheet.umd.min.js.map +1 -1
  13. package/bundles/material-core.umd.js +3 -3
  14. package/bundles/material-core.umd.js.map +1 -1
  15. package/bundles/material-core.umd.min.js +3 -3
  16. package/bundles/material-core.umd.min.js.map +1 -1
  17. package/bundles/material-form-field-testing.umd.js +137 -140
  18. package/bundles/material-form-field-testing.umd.js.map +1 -1
  19. package/bundles/material-form-field-testing.umd.min.js +3 -3
  20. package/bundles/material-form-field-testing.umd.min.js.map +1 -1
  21. package/bundles/material-select.umd.js +1 -1
  22. package/bundles/material-select.umd.js.map +1 -1
  23. package/bundles/material-select.umd.min.js.map +1 -1
  24. package/button/_button-base.import.scss +4 -0
  25. package/button/_button-theme.import.scss +3 -0
  26. package/button-toggle/_button-toggle-theme.import.scss +6 -0
  27. package/button-toggle/_button-toggle-variables.import.scss +1 -0
  28. package/card/_card-theme.import.scss +4 -0
  29. package/checkbox/_checkbox-theme.import.scss +3 -0
  30. package/chips/_chips-theme.import.scss +4 -0
  31. package/core/_core.import.scss +10 -0
  32. package/core/color/_all-color.import.scss +3 -0
  33. package/core/density/private/_all-density.import.scss +9 -0
  34. package/core/density/private/_compatibility.import.scss +1 -0
  35. package/core/focus-indicators/_focus-indicators.import.scss +3 -0
  36. package/core/index.metadata.json +1 -1
  37. package/core/option/_optgroup-theme.import.scss +4 -0
  38. package/core/option/_option-theme.import.scss +4 -0
  39. package/core/ripple/_ripple.import.scss +3 -0
  40. package/core/selection/pseudo-checkbox/_pseudo-checkbox-theme.import.scss +2 -0
  41. package/core/style/_button-common.import.scss +2 -0
  42. package/core/style/_checkbox-common.import.scss +2 -0
  43. package/core/style/_elevation.import.scss +2 -0
  44. package/core/style/_form-common.import.scss +2 -0
  45. package/core/style/_layout-common.import.scss +1 -0
  46. package/core/style/_list-common.import.scss +1 -0
  47. package/core/style/_menu-common.import.scss +5 -0
  48. package/core/style/_private.import.scss +2 -0
  49. package/core/style/_variables.import.scss +1 -0
  50. package/core/style/_vendor-prefixes.import.scss +1 -0
  51. package/core/theming/_all-theme.import.scss +37 -0
  52. package/core/theming/_palette.import.scss +1 -0
  53. package/core/theming/_theming.import.scss +2 -0
  54. package/core/theming/_theming.scss +1 -0
  55. package/core/typography/_all-typography.import.scss +38 -0
  56. package/core/typography/_typography-utils.import.scss +1 -0
  57. package/core/typography/_typography.import.scss +2 -0
  58. package/datepicker/_datepicker-theme.import.scss +4 -0
  59. package/dialog/_dialog-theme.import.scss +4 -0
  60. package/divider/_divider-offset.import.scss +1 -0
  61. package/divider/_divider-theme.import.scss +3 -0
  62. package/esm2015/autocomplete/autocomplete.js +1 -1
  63. package/esm2015/bottom-sheet/bottom-sheet-container.js +12 -4
  64. package/esm2015/core/common-behaviors/common-module.js +1 -1
  65. package/esm2015/core/option/optgroup.js +2 -2
  66. package/esm2015/core/version.js +1 -1
  67. package/esm2015/form-field/testing/form-field-harness.js +68 -76
  68. package/esm2015/select/select.js +2 -2
  69. package/expansion/_expansion-mixins.import.scss +1 -0
  70. package/expansion/_expansion-theme.import.scss +6 -0
  71. package/expansion/_expansion-variables.import.scss +1 -0
  72. package/fesm2015/autocomplete.js.map +1 -1
  73. package/fesm2015/bottom-sheet.js +11 -3
  74. package/fesm2015/bottom-sheet.js.map +1 -1
  75. package/fesm2015/core.js +3 -3
  76. package/fesm2015/core.js.map +1 -1
  77. package/fesm2015/form-field/testing.js +69 -77
  78. package/fesm2015/form-field/testing.js.map +1 -1
  79. package/fesm2015/select.js +1 -1
  80. package/fesm2015/select.js.map +1 -1
  81. package/form-field/_form-field-fill-theme.import.scss +5 -0
  82. package/form-field/_form-field-legacy-theme.import.scss +5 -0
  83. package/form-field/_form-field-outline-theme.import.scss +5 -0
  84. package/form-field/_form-field-standard-theme.import.scss +5 -0
  85. package/form-field/_form-field-theme.import.scss +9 -0
  86. package/form-field/testing/form-field-harness.d.ts +47 -32
  87. package/grid-list/_grid-list-theme.import.scss +5 -0
  88. package/icon/_icon-theme.import.scss +2 -0
  89. package/input/_input-theme.import.scss +6 -0
  90. package/list/_list-theme.import.scss +5 -0
  91. package/menu/_menu-theme.import.scss +4 -0
  92. package/package.json +2 -2
  93. package/paginator/_paginator-theme.import.scss +5 -0
  94. package/paginator/_paginator-variables.import.scss +1 -0
  95. package/prebuilt-themes/deeppurple-amber.css +1 -1
  96. package/prebuilt-themes/indigo-pink.css +1 -1
  97. package/prebuilt-themes/pink-bluegrey.css +1 -1
  98. package/prebuilt-themes/purple-green.css +1 -1
  99. package/progress-bar/_progress-bar-theme.import.scss +3 -0
  100. package/progress-spinner/_progress-spinner-theme.import.scss +3 -0
  101. package/radio/_radio-theme.import.scss +4 -0
  102. package/schematics/ng-add/index.js +1 -1
  103. package/select/_select-theme.import.scss +5 -0
  104. package/select/select.d.ts +1 -1
  105. package/sidenav/_sidenav-theme.import.scss +3 -0
  106. package/slide-toggle/_slide-toggle-theme.import.scss +4 -0
  107. package/slider/_slider-theme.import.scss +4 -0
  108. package/snack-bar/_snack-bar-theme.import.scss +4 -0
  109. package/sort/_sort-theme.import.scss +2 -0
  110. package/stepper/_stepper-theme.import.scss +5 -0
  111. package/stepper/_stepper-variables.import.scss +1 -0
  112. package/table/_table-flex-styles.import.scss +1 -0
  113. package/table/_table-flex-styles.scss +72 -0
  114. package/table/_table-theme.import.scss +4 -0
  115. package/tabs/_tabs-common.import.scss +4 -0
  116. package/tabs/_tabs-theme.import.scss +4 -0
  117. package/toolbar/_toolbar-theme.import.scss +6 -0
  118. package/toolbar/_toolbar-variables.import.scss +1 -0
  119. package/tooltip/_tooltip-theme.import.scss +4 -0
  120. package/tree/_tree-theme.import.scss +4 -0
  121. package/tree/_tree-variables.import.scss +1 -0
@@ -1,6 +1,6 @@
1
1
  export * from '@angular/material/form-field/testing/control';
2
2
  import { __awaiter } from 'tslib';
3
- import { ComponentHarness, HarnessPredicate, parallel } from '@angular/cdk/testing';
3
+ import { ComponentHarness, parallel, HarnessPredicate } from '@angular/cdk/testing';
4
4
  import { MatInputHarness } from '@angular/material/input/testing';
5
5
  import { MatSelectHarness } from '@angular/material/select/testing';
6
6
 
@@ -11,68 +11,7 @@ import { MatSelectHarness } from '@angular/material/select/testing';
11
11
  * Use of this source code is governed by an MIT-style license that can be
12
12
  * found in the LICENSE file at https://angular.io/license
13
13
  */
14
- /** Harness for interacting with a standard Material form-field's in tests. */
15
- class MatFormFieldHarness extends ComponentHarness {
16
- constructor() {
17
- super(...arguments);
18
- this._prefixContainer = this.locatorForOptional('.mat-form-field-prefix');
19
- this._suffixContainer = this.locatorForOptional('.mat-form-field-suffix');
20
- this._label = this.locatorForOptional('.mat-form-field-label');
21
- this._errors = this.locatorForAll('.mat-error');
22
- this._hints = this.locatorForAll('mat-hint, .mat-hint');
23
- this._inputControl = this.locatorForOptional(MatInputHarness);
24
- this._selectControl = this.locatorForOptional(MatSelectHarness);
25
- }
26
- /**
27
- * Gets a `HarnessPredicate` that can be used to search for a `MatFormFieldHarness` that meets
28
- * certain criteria.
29
- * @param options Options for filtering which form field instances are considered a match.
30
- * @return a `HarnessPredicate` configured with the given options.
31
- */
32
- static with(options = {}) {
33
- return new HarnessPredicate(MatFormFieldHarness, options)
34
- .addOption('floatingLabelText', options.floatingLabelText, (harness, text) => __awaiter(this, void 0, void 0, function* () { return HarnessPredicate.stringMatches(yield harness.getLabel(), text); }))
35
- .addOption('hasErrors', options.hasErrors, (harness, hasErrors) => __awaiter(this, void 0, void 0, function* () { return (yield harness.hasErrors()) === hasErrors; }));
36
- }
37
- /** Gets the appearance of the form-field. */
38
- getAppearance() {
39
- return __awaiter(this, void 0, void 0, function* () {
40
- const hostClasses = yield (yield this.host()).getAttribute('class');
41
- if (hostClasses !== null) {
42
- const appearanceMatch = hostClasses.match(/mat-form-field-appearance-(legacy|standard|fill|outline)(?:$| )/);
43
- if (appearanceMatch) {
44
- return appearanceMatch[1];
45
- }
46
- }
47
- throw Error('Could not determine appearance of form-field.');
48
- });
49
- }
50
- // Implementation of the "getControl" method overload signatures.
51
- getControl(type) {
52
- return __awaiter(this, void 0, void 0, function* () {
53
- if (type) {
54
- return this.locatorForOptional(type)();
55
- }
56
- const hostEl = yield this.host();
57
- const [isInput, isSelect] = yield parallel(() => [
58
- hostEl.hasClass('mat-form-field-type-mat-input'),
59
- hostEl.hasClass('mat-form-field-type-mat-select'),
60
- ]);
61
- if (isInput) {
62
- return this._inputControl();
63
- }
64
- else if (isSelect) {
65
- return this._selectControl();
66
- }
67
- return null;
68
- });
69
- }
70
- /** Whether the form-field has a label. */
71
- hasLabel() {
72
- return __awaiter(this, void 0, void 0, function* () {
73
- return (yield this.host()).hasClass('mat-form-field-has-label');
74
- });
75
- }
14
+ class _MatFormFieldHarnessBase extends ComponentHarness {
76
15
  /** Gets the label of the form-field. */
77
16
  getLabel() {
78
17
  return __awaiter(this, void 0, void 0, function* () {
@@ -86,19 +25,6 @@ class MatFormFieldHarness extends ComponentHarness {
86
25
  return (yield this.getTextErrors()).length > 0;
87
26
  });
88
27
  }
89
- /** Whether the label is currently floating. */
90
- isLabelFloating() {
91
- return __awaiter(this, void 0, void 0, function* () {
92
- const host = yield this.host();
93
- const [hasLabel, shouldFloat] = yield parallel(() => [
94
- this.hasLabel(),
95
- host.hasClass('mat-form-field-should-float'),
96
- ]);
97
- // If there is no label, the label conceptually can never float. The `should-float` class
98
- // is just always set regardless of whether the label is displayed or not.
99
- return hasLabel && shouldFloat;
100
- });
101
- }
102
28
  /** Whether the form-field is disabled. */
103
29
  isDisabled() {
104
30
  return __awaiter(this, void 0, void 0, function* () {
@@ -111,6 +37,16 @@ class MatFormFieldHarness extends ComponentHarness {
111
37
  return (yield this.host()).hasClass('mat-form-field-autofilled');
112
38
  });
113
39
  }
40
+ // Implementation of the "getControl" method overload signatures.
41
+ getControl(type) {
42
+ return __awaiter(this, void 0, void 0, function* () {
43
+ if (type) {
44
+ return this.locatorForOptional(type)();
45
+ }
46
+ const [select, input] = yield parallel(() => [this._selectControl(), this._inputControl()]);
47
+ return select || input;
48
+ });
49
+ }
114
50
  /** Gets the theme color of the form-field. */
115
51
  getThemeColor() {
116
52
  return __awaiter(this, void 0, void 0, function* () {
@@ -237,6 +173,62 @@ class MatFormFieldHarness extends ComponentHarness {
237
173
  });
238
174
  }
239
175
  }
176
+ /** Harness for interacting with a standard Material form-field's in tests. */
177
+ class MatFormFieldHarness extends _MatFormFieldHarnessBase {
178
+ constructor() {
179
+ super(...arguments);
180
+ this._prefixContainer = this.locatorForOptional('.mat-form-field-prefix');
181
+ this._suffixContainer = this.locatorForOptional('.mat-form-field-suffix');
182
+ this._label = this.locatorForOptional('.mat-form-field-label');
183
+ this._errors = this.locatorForAll('.mat-error');
184
+ this._hints = this.locatorForAll('mat-hint, .mat-hint');
185
+ this._inputControl = this.locatorForOptional(MatInputHarness);
186
+ this._selectControl = this.locatorForOptional(MatSelectHarness);
187
+ }
188
+ /**
189
+ * Gets a `HarnessPredicate` that can be used to search for a `MatFormFieldHarness` that meets
190
+ * certain criteria.
191
+ * @param options Options for filtering which form field instances are considered a match.
192
+ * @return a `HarnessPredicate` configured with the given options.
193
+ */
194
+ static with(options = {}) {
195
+ return new HarnessPredicate(MatFormFieldHarness, options)
196
+ .addOption('floatingLabelText', options.floatingLabelText, (harness, text) => __awaiter(this, void 0, void 0, function* () { return HarnessPredicate.stringMatches(yield harness.getLabel(), text); }))
197
+ .addOption('hasErrors', options.hasErrors, (harness, hasErrors) => __awaiter(this, void 0, void 0, function* () { return (yield harness.hasErrors()) === hasErrors; }));
198
+ }
199
+ /** Gets the appearance of the form-field. */
200
+ getAppearance() {
201
+ return __awaiter(this, void 0, void 0, function* () {
202
+ const hostClasses = yield (yield this.host()).getAttribute('class');
203
+ if (hostClasses !== null) {
204
+ const appearanceMatch = hostClasses.match(/mat-form-field-appearance-(legacy|standard|fill|outline)(?:$| )/);
205
+ if (appearanceMatch) {
206
+ return appearanceMatch[1];
207
+ }
208
+ }
209
+ throw Error('Could not determine appearance of form-field.');
210
+ });
211
+ }
212
+ /** Whether the form-field has a label. */
213
+ hasLabel() {
214
+ return __awaiter(this, void 0, void 0, function* () {
215
+ return (yield this.host()).hasClass('mat-form-field-has-label');
216
+ });
217
+ }
218
+ /** Whether the label is currently floating. */
219
+ isLabelFloating() {
220
+ return __awaiter(this, void 0, void 0, function* () {
221
+ const host = yield this.host();
222
+ const [hasLabel, shouldFloat] = yield parallel(() => [
223
+ this.hasLabel(),
224
+ host.hasClass('mat-form-field-should-float'),
225
+ ]);
226
+ // If there is no label, the label conceptually can never float. The `should-float` class
227
+ // is just always set regardless of whether the label is displayed or not.
228
+ return hasLabel && shouldFloat;
229
+ });
230
+ }
231
+ }
240
232
  MatFormFieldHarness.hostSelector = '.mat-form-field';
241
233
 
242
234
  /**
@@ -263,5 +255,5 @@ MatFormFieldHarness.hostSelector = '.mat-form-field';
263
255
  * found in the LICENSE file at https://angular.io/license
264
256
  */
265
257
 
266
- export { MatFormFieldHarness };
258
+ export { MatFormFieldHarness, _MatFormFieldHarnessBase };
267
259
  //# sourceMappingURL=testing.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"form-field__testing.js","sources":["../../../../../../src/material/form-field/testing/form-field-harness.ts","../../../../../../src/material/form-field/testing/form-field-harness-filters.ts","../../../../../../src/material/form-field/testing/public-api.ts","../../../../../../src/material/form-field/testing/index.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.io/license\n */\n\nimport {\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n HarnessQuery,\n parallel,\n TestElement\n} from '@angular/cdk/testing';\nimport {MatFormFieldControlHarness} from '@angular/material/form-field/testing/control';\nimport {MatInputHarness} from '@angular/material/input/testing';\nimport {MatSelectHarness} from '@angular/material/select/testing';\nimport {FormFieldHarnessFilters} from './form-field-harness-filters';\n\n// TODO(devversion): support datepicker harness once developed (COMP-203).\n// Also support chip list harness.\n/** Possible harnesses of controls which can be bound to a form-field. */\nexport type FormFieldControlHarness = MatInputHarness|MatSelectHarness;\n\n/** Harness for interacting with a standard Material form-field's in tests. */\nexport class MatFormFieldHarness extends ComponentHarness {\n static hostSelector = '.mat-form-field';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatFormFieldHarness` that meets\n * certain criteria.\n * @param options Options for filtering which form field instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: FormFieldHarnessFilters = {}): HarnessPredicate<MatFormFieldHarness> {\n return new HarnessPredicate(MatFormFieldHarness, options)\n .addOption('floatingLabelText', options.floatingLabelText, async (harness, text) =>\n HarnessPredicate.stringMatches(await harness.getLabel(), text))\n .addOption('hasErrors', options.hasErrors, async (harness, hasErrors) =>\n await harness.hasErrors() === hasErrors);\n }\n\n private _prefixContainer = this.locatorForOptional('.mat-form-field-prefix');\n private _suffixContainer = this.locatorForOptional('.mat-form-field-suffix');\n private _label = this.locatorForOptional('.mat-form-field-label');\n private _errors = this.locatorForAll('.mat-error');\n private _hints = this.locatorForAll('mat-hint, .mat-hint');\n\n private _inputControl = this.locatorForOptional(MatInputHarness);\n private _selectControl = this.locatorForOptional(MatSelectHarness);\n\n /** Gets the appearance of the form-field. */\n async getAppearance(): Promise<'legacy'|'standard'|'fill'|'outline'> {\n const hostClasses = await (await this.host()).getAttribute('class');\n if (hostClasses !== null) {\n const appearanceMatch =\n hostClasses.match(/mat-form-field-appearance-(legacy|standard|fill|outline)(?:$| )/);\n if (appearanceMatch) {\n return appearanceMatch[1] as 'legacy' | 'standard' | 'fill' | 'outline';\n }\n }\n throw Error('Could not determine appearance of form-field.');\n }\n\n /**\n * Gets the harness of the control that is bound to the form-field. Only\n * default controls such as \"MatInputHarness\" and \"MatSelectHarness\" are\n * supported.\n */\n async getControl(): Promise<FormFieldControlHarness|null>;\n\n /**\n * Gets the harness of the control that is bound to the form-field. Searches\n * for a control that matches the specified harness type.\n */\n async getControl<X extends MatFormFieldControlHarness>(type: ComponentHarnessConstructor<X>):\n Promise<X|null>;\n\n /**\n * Gets the harness of the control that is bound to the form-field. Searches\n * for a control that matches the specified harness predicate.\n */\n async getControl<X extends MatFormFieldControlHarness>(type: HarnessPredicate<X>):\n Promise<X|null>;\n\n // Implementation of the \"getControl\" method overload signatures.\n async getControl<X extends MatFormFieldControlHarness>(type?: HarnessQuery<X>) {\n if (type) {\n return this.locatorForOptional(type)();\n }\n const hostEl = await this.host();\n const [isInput, isSelect] = await parallel(() => [\n hostEl.hasClass('mat-form-field-type-mat-input'),\n hostEl.hasClass('mat-form-field-type-mat-select'),\n ]);\n if (isInput) {\n return this._inputControl();\n } else if (isSelect) {\n return this._selectControl();\n }\n return null;\n }\n\n /** Whether the form-field has a label. */\n async hasLabel(): Promise<boolean> {\n return (await this.host()).hasClass('mat-form-field-has-label');\n }\n\n /** Gets the label of the form-field. */\n async getLabel(): Promise<string|null> {\n const labelEl = await this._label();\n return labelEl ? labelEl.text() : null;\n }\n\n /** Whether the form-field has errors. */\n async hasErrors(): Promise<boolean> {\n return (await this.getTextErrors()).length > 0;\n }\n\n /** Whether the label is currently floating. */\n async isLabelFloating(): Promise<boolean> {\n const host = await this.host();\n const [hasLabel, shouldFloat] = await parallel(() => [\n this.hasLabel(),\n host.hasClass('mat-form-field-should-float'),\n ]);\n // If there is no label, the label conceptually can never float. The `should-float` class\n // is just always set regardless of whether the label is displayed or not.\n return hasLabel && shouldFloat;\n }\n\n /** Whether the form-field is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await this.host()).hasClass('mat-form-field-disabled');\n }\n\n /** Whether the form-field is currently autofilled. */\n async isAutofilled(): Promise<boolean> {\n return (await this.host()).hasClass('mat-form-field-autofilled');\n }\n\n /** Gets the theme color of the form-field. */\n async getThemeColor(): Promise<'primary'|'accent'|'warn'> {\n const hostEl = await this.host();\n const [isAccent, isWarn] = await parallel(() => {\n return [hostEl.hasClass('mat-accent'), hostEl.hasClass('mat-warn')];\n });\n if (isAccent) {\n return 'accent';\n } else if (isWarn) {\n return 'warn';\n }\n return 'primary';\n }\n\n /** Gets error messages which are currently displayed in the form-field. */\n async getTextErrors(): Promise<string[]> {\n const errors = await this._errors();\n return parallel(() => errors.map(e => e.text()));\n }\n\n /** Gets hint messages which are currently displayed in the form-field. */\n async getTextHints(): Promise<string[]> {\n const hints = await this._hints();\n return parallel(() => hints.map(e => e.text()));\n }\n\n /**\n * Gets a reference to the container element which contains all projected\n * prefixes of the form-field.\n * @deprecated Use `getPrefixText` instead.\n * @breaking-change 11.0.0\n */\n async getHarnessLoaderForPrefix(): Promise<TestElement|null> {\n return this._prefixContainer();\n }\n\n /** Gets the text inside the prefix element. */\n async getPrefixText(): Promise<string> {\n const prefix = await this._prefixContainer();\n return prefix ? prefix.text() : '';\n }\n\n /**\n * Gets a reference to the container element which contains all projected\n * suffixes of the form-field.\n * @deprecated Use `getSuffixText` instead.\n * @breaking-change 11.0.0\n */\n async getHarnessLoaderForSuffix(): Promise<TestElement|null> {\n return this._suffixContainer();\n }\n\n /** Gets the text inside the suffix element. */\n async getSuffixText(): Promise<string> {\n const suffix = await this._suffixContainer();\n return suffix ? suffix.text() : '';\n }\n\n /**\n * Whether the form control has been touched. Returns \"null\"\n * if no form control is set up.\n */\n async isControlTouched(): Promise<boolean|null> {\n if (!await this._hasFormControl()) {\n return null;\n }\n return (await this.host()).hasClass('ng-touched');\n }\n\n /**\n * Whether the form control is dirty. Returns \"null\"\n * if no form control is set up.\n */\n async isControlDirty(): Promise<boolean|null> {\n if (!await this._hasFormControl()) {\n return null;\n }\n return (await this.host()).hasClass('ng-dirty');\n }\n\n /**\n * Whether the form control is valid. Returns \"null\"\n * if no form control is set up.\n */\n async isControlValid(): Promise<boolean|null> {\n if (!await this._hasFormControl()) {\n return null;\n }\n return (await this.host()).hasClass('ng-valid');\n }\n\n /**\n * Whether the form control is pending validation. Returns \"null\"\n * if no form control is set up.\n */\n async isControlPending(): Promise<boolean|null> {\n if (!await this._hasFormControl()) {\n return null;\n }\n return (await this.host()).hasClass('ng-pending');\n }\n\n /** Checks whether the form-field control has set up a form control. */\n private async _hasFormControl(): Promise<boolean> {\n const hostEl = await this.host();\n // If no form \"NgControl\" is bound to the form-field control, the form-field\n // is not able to forward any control status classes. Therefore if either the\n // \"ng-touched\" or \"ng-untouched\" class is set, we know that it has a form control\n const [isTouched, isUntouched] =\n await parallel(() => [hostEl.hasClass('ng-touched'), hostEl.hasClass('ng-untouched')]);\n return isTouched || isUntouched;\n }\n}\n","/**\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.io/license\n */\n\nimport {BaseHarnessFilters} from '@angular/cdk/testing';\n\n/** A set of criteria that can be used to filter a list of `MatFormFieldHarness` instances. */\nexport interface FormFieldHarnessFilters extends BaseHarnessFilters {\n /** Filters based on the text of the form field's floating label. */\n floatingLabelText?: string | RegExp;\n /** Filters based on whether the form field has error messages. */\n hasErrors?: boolean;\n}\n","/**\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.io/license\n */\n\n// Re-export everything from the \"form-field/testing/control\" entry-point. To avoid\n// circular dependencies, harnesses for default form-field controls (i.e. input, select)\n// need to import the base form-field control harness through a separate entry-point.\nexport * from '@angular/material/form-field/testing/control';\n\nexport * from './form-field-harness';\nexport * from './form-field-harness-filters';\n","/**\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.io/license\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"form-field__testing.js","sources":["../../../../../../src/material/form-field/testing/form-field-harness.ts","../../../../../../src/material/form-field/testing/form-field-harness-filters.ts","../../../../../../src/material/form-field/testing/public-api.ts","../../../../../../src/material/form-field/testing/index.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.io/license\n */\n\nimport {\n AsyncFactoryFn,\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n HarnessQuery,\n parallel,\n TestElement\n} from '@angular/cdk/testing';\nimport {MatFormFieldControlHarness} from '@angular/material/form-field/testing/control';\nimport {MatInputHarness} from '@angular/material/input/testing';\nimport {MatSelectHarness} from '@angular/material/select/testing';\nimport {FormFieldHarnessFilters} from './form-field-harness-filters';\n\n// TODO(devversion): support datepicker harness once developed (COMP-203).\n// Also support chip list harness.\n/** Possible harnesses of controls which can be bound to a form-field. */\nexport type FormFieldControlHarness = MatInputHarness|MatSelectHarness;\n\nexport abstract class _MatFormFieldHarnessBase<ControlHarness extends MatFormFieldControlHarness>\n extends ComponentHarness {\n protected abstract _prefixContainer: AsyncFactoryFn<TestElement|null>;\n protected abstract _suffixContainer: AsyncFactoryFn<TestElement|null>;\n protected abstract _label: AsyncFactoryFn<TestElement|null>;\n protected abstract _errors: AsyncFactoryFn<TestElement[]>;\n protected abstract _hints: AsyncFactoryFn<TestElement[]>;\n protected abstract _inputControl: AsyncFactoryFn<ControlHarness|null>;\n protected abstract _selectControl: AsyncFactoryFn<ControlHarness|null>;\n\n /** Gets the appearance of the form-field. */\n abstract getAppearance(): Promise<string>;\n\n /** Whether the label is currently floating. */\n abstract isLabelFloating(): Promise<boolean>;\n\n /** Whether the form-field has a label. */\n abstract hasLabel(): Promise<boolean>;\n\n /** Gets the label of the form-field. */\n async getLabel(): Promise<string|null> {\n const labelEl = await this._label();\n return labelEl ? labelEl.text() : null;\n }\n\n /** Whether the form-field has errors. */\n async hasErrors(): Promise<boolean> {\n return (await this.getTextErrors()).length > 0;\n }\n\n /** Whether the form-field is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await this.host()).hasClass('mat-form-field-disabled');\n }\n\n /** Whether the form-field is currently autofilled. */\n async isAutofilled(): Promise<boolean> {\n return (await this.host()).hasClass('mat-form-field-autofilled');\n }\n\n /**\n * Gets the harness of the control that is bound to the form-field. Only\n * default controls such as \"MatInputHarness\" and \"MatSelectHarness\" are\n * supported.\n */\n async getControl(): Promise<ControlHarness|null>;\n\n /**\n * Gets the harness of the control that is bound to the form-field. Searches\n * for a control that matches the specified harness type.\n */\n async getControl<X extends MatFormFieldControlHarness>(type: ComponentHarnessConstructor<X>):\n Promise<X|null>;\n\n /**\n * Gets the harness of the control that is bound to the form-field. Searches\n * for a control that matches the specified harness predicate.\n */\n async getControl<X extends MatFormFieldControlHarness>(type: HarnessPredicate<X>):\n Promise<X|null>;\n\n // Implementation of the \"getControl\" method overload signatures.\n async getControl<X extends MatFormFieldControlHarness>(type?: HarnessQuery<X>) {\n if (type) {\n return this.locatorForOptional(type)();\n }\n const [select, input] = await parallel(() => [this._selectControl(), this._inputControl()]);\n return select || input;\n }\n\n /** Gets the theme color of the form-field. */\n async getThemeColor(): Promise<'primary'|'accent'|'warn'> {\n const hostEl = await this.host();\n const [isAccent, isWarn] = await parallel(() => {\n return [hostEl.hasClass('mat-accent'), hostEl.hasClass('mat-warn')];\n });\n if (isAccent) {\n return 'accent';\n } else if (isWarn) {\n return 'warn';\n }\n return 'primary';\n }\n\n /** Gets error messages which are currently displayed in the form-field. */\n async getTextErrors(): Promise<string[]> {\n const errors = await this._errors();\n return parallel(() => errors.map(e => e.text()));\n }\n\n /** Gets hint messages which are currently displayed in the form-field. */\n async getTextHints(): Promise<string[]> {\n const hints = await this._hints();\n return parallel(() => hints.map(e => e.text()));\n }\n\n /**\n * Gets a reference to the container element which contains all projected\n * prefixes of the form-field.\n * @deprecated Use `getPrefixText` instead.\n * @breaking-change 11.0.0\n */\n async getHarnessLoaderForPrefix(): Promise<TestElement|null> {\n return this._prefixContainer();\n }\n\n /** Gets the text inside the prefix element. */\n async getPrefixText(): Promise<string> {\n const prefix = await this._prefixContainer();\n return prefix ? prefix.text() : '';\n }\n\n /**\n * Gets a reference to the container element which contains all projected\n * suffixes of the form-field.\n * @deprecated Use `getSuffixText` instead.\n * @breaking-change 11.0.0\n */\n async getHarnessLoaderForSuffix(): Promise<TestElement|null> {\n return this._suffixContainer();\n }\n\n /** Gets the text inside the suffix element. */\n async getSuffixText(): Promise<string> {\n const suffix = await this._suffixContainer();\n return suffix ? suffix.text() : '';\n }\n\n /**\n * Whether the form control has been touched. Returns \"null\"\n * if no form control is set up.\n */\n async isControlTouched(): Promise<boolean|null> {\n if (!await this._hasFormControl()) {\n return null;\n }\n return (await this.host()).hasClass('ng-touched');\n }\n\n /**\n * Whether the form control is dirty. Returns \"null\"\n * if no form control is set up.\n */\n async isControlDirty(): Promise<boolean|null> {\n if (!await this._hasFormControl()) {\n return null;\n }\n return (await this.host()).hasClass('ng-dirty');\n }\n\n /**\n * Whether the form control is valid. Returns \"null\"\n * if no form control is set up.\n */\n async isControlValid(): Promise<boolean|null> {\n if (!await this._hasFormControl()) {\n return null;\n }\n return (await this.host()).hasClass('ng-valid');\n }\n\n /**\n * Whether the form control is pending validation. Returns \"null\"\n * if no form control is set up.\n */\n async isControlPending(): Promise<boolean|null> {\n if (!await this._hasFormControl()) {\n return null;\n }\n return (await this.host()).hasClass('ng-pending');\n }\n\n /** Checks whether the form-field control has set up a form control. */\n private async _hasFormControl(): Promise<boolean> {\n const hostEl = await this.host();\n // If no form \"NgControl\" is bound to the form-field control, the form-field\n // is not able to forward any control status classes. Therefore if either the\n // \"ng-touched\" or \"ng-untouched\" class is set, we know that it has a form control\n const [isTouched, isUntouched] =\n await parallel(() => [hostEl.hasClass('ng-touched'), hostEl.hasClass('ng-untouched')]);\n return isTouched || isUntouched;\n }\n}\n\n/** Harness for interacting with a standard Material form-field's in tests. */\nexport class MatFormFieldHarness extends _MatFormFieldHarnessBase<FormFieldControlHarness> {\n static hostSelector = '.mat-form-field';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatFormFieldHarness` that meets\n * certain criteria.\n * @param options Options for filtering which form field instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: FormFieldHarnessFilters = {}): HarnessPredicate<MatFormFieldHarness> {\n return new HarnessPredicate(MatFormFieldHarness, options)\n .addOption('floatingLabelText', options.floatingLabelText, async (harness, text) =>\n HarnessPredicate.stringMatches(await harness.getLabel(), text))\n .addOption('hasErrors', options.hasErrors, async (harness, hasErrors) =>\n await harness.hasErrors() === hasErrors);\n }\n\n protected _prefixContainer = this.locatorForOptional('.mat-form-field-prefix');\n protected _suffixContainer = this.locatorForOptional('.mat-form-field-suffix');\n protected _label = this.locatorForOptional('.mat-form-field-label');\n protected _errors = this.locatorForAll('.mat-error');\n protected _hints = this.locatorForAll('mat-hint, .mat-hint');\n protected _inputControl = this.locatorForOptional(MatInputHarness);\n protected _selectControl = this.locatorForOptional(MatSelectHarness);\n\n /** Gets the appearance of the form-field. */\n async getAppearance(): Promise<'legacy'|'standard'|'fill'|'outline'> {\n const hostClasses = await (await this.host()).getAttribute('class');\n if (hostClasses !== null) {\n const appearanceMatch =\n hostClasses.match(/mat-form-field-appearance-(legacy|standard|fill|outline)(?:$| )/);\n if (appearanceMatch) {\n return appearanceMatch[1] as 'legacy' | 'standard' | 'fill' | 'outline';\n }\n }\n throw Error('Could not determine appearance of form-field.');\n }\n\n /** Whether the form-field has a label. */\n async hasLabel(): Promise<boolean> {\n return (await this.host()).hasClass('mat-form-field-has-label');\n }\n\n /** Whether the label is currently floating. */\n async isLabelFloating(): Promise<boolean> {\n const host = await this.host();\n const [hasLabel, shouldFloat] = await parallel(() => [\n this.hasLabel(),\n host.hasClass('mat-form-field-should-float'),\n ]);\n // If there is no label, the label conceptually can never float. The `should-float` class\n // is just always set regardless of whether the label is displayed or not.\n return hasLabel && shouldFloat;\n }\n}\n","/**\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.io/license\n */\n\nimport {BaseHarnessFilters} from '@angular/cdk/testing';\n\n/** A set of criteria that can be used to filter a list of `MatFormFieldHarness` instances. */\nexport interface FormFieldHarnessFilters extends BaseHarnessFilters {\n /** Filters based on the text of the form field's floating label. */\n floatingLabelText?: string | RegExp;\n /** Filters based on whether the form field has error messages. */\n hasErrors?: boolean;\n}\n","/**\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.io/license\n */\n\n// Re-export everything from the \"form-field/testing/control\" entry-point. To avoid\n// circular dependencies, harnesses for default form-field controls (i.e. input, select)\n// need to import the base form-field control harness through a separate entry-point.\nexport * from '@angular/material/form-field/testing/control';\n\nexport * from './form-field-harness';\nexport * from './form-field-harness-filters';\n","/**\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.io/license\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -251,7 +251,7 @@ class _MatSelectBase extends _MatSelectMixinBase {
251
251
  this._required = false;
252
252
  this._multiple = false;
253
253
  this._disableOptionCentering = (_c = (_b = this._defaultOptions) === null || _b === void 0 ? void 0 : _b.disableOptionCentering) !== null && _c !== void 0 ? _c : false;
254
- /** Aria label of the select. If not specified, the placeholder will be used as label. */
254
+ /** Aria label of the select. */
255
255
  this.ariaLabel = '';
256
256
  /** Combined stream of all of the child options' change events. */
257
257
  this.optionSelectionChanges = defer(() => {