@angular/material 11.1.0 → 11.1.1

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 (83) hide show
  1. package/autocomplete/index.metadata.json +1 -1
  2. package/autocomplete/testing/autocomplete-harness.d.ts +29 -15
  3. package/bundles/material-autocomplete-testing.umd.js +45 -35
  4. package/bundles/material-autocomplete-testing.umd.js.map +1 -1
  5. package/bundles/material-autocomplete-testing.umd.min.js +2 -2
  6. package/bundles/material-autocomplete-testing.umd.min.js.map +1 -1
  7. package/bundles/material-autocomplete.umd.js +1 -1
  8. package/bundles/material-autocomplete.umd.min.js +1 -1
  9. package/bundles/material-autocomplete.umd.min.js.map +1 -1
  10. package/bundles/material-checkbox-testing.umd.js +64 -63
  11. package/bundles/material-checkbox-testing.umd.js.map +1 -1
  12. package/bundles/material-checkbox-testing.umd.min.js +2 -2
  13. package/bundles/material-checkbox-testing.umd.min.js.map +1 -1
  14. package/bundles/material-core.umd.js +2 -2
  15. package/bundles/material-core.umd.js.map +1 -1
  16. package/bundles/material-core.umd.min.js +2 -2
  17. package/bundles/material-core.umd.min.js.map +1 -1
  18. package/bundles/material-datepicker.umd.js +17 -4
  19. package/bundles/material-datepicker.umd.js.map +1 -1
  20. package/bundles/material-datepicker.umd.min.js +8 -8
  21. package/bundles/material-datepicker.umd.min.js.map +1 -1
  22. package/bundles/material-form-field.umd.js +1 -1
  23. package/bundles/material-form-field.umd.min.js +1 -1
  24. package/bundles/material-form-field.umd.min.js.map +1 -1
  25. package/bundles/material-menu-testing.umd.js +85 -66
  26. package/bundles/material-menu-testing.umd.js.map +1 -1
  27. package/bundles/material-menu-testing.umd.min.js +2 -2
  28. package/bundles/material-menu-testing.umd.min.js.map +1 -1
  29. package/bundles/material-paginator-testing.umd.js +41 -33
  30. package/bundles/material-paginator-testing.umd.js.map +1 -1
  31. package/bundles/material-paginator-testing.umd.min.js +2 -2
  32. package/bundles/material-paginator-testing.umd.min.js.map +1 -1
  33. package/bundles/material-radio-testing.umd.js +79 -62
  34. package/bundles/material-radio-testing.umd.js.map +1 -1
  35. package/bundles/material-radio-testing.umd.min.js +2 -2
  36. package/bundles/material-radio-testing.umd.min.js.map +1 -1
  37. package/bundles/material-select-testing.umd.js +62 -51
  38. package/bundles/material-select-testing.umd.js.map +1 -1
  39. package/bundles/material-select-testing.umd.min.js +2 -2
  40. package/bundles/material-select-testing.umd.min.js.map +1 -1
  41. package/checkbox/testing/checkbox-harness.d.ts +21 -16
  42. package/core/index.metadata.json +1 -1
  43. package/datepicker/date-range-input.d.ts +1 -0
  44. package/datepicker/datepicker-input.d.ts +4 -2
  45. package/datepicker/index.metadata.json +1 -1
  46. package/esm2015/autocomplete/autocomplete.js +1 -1
  47. package/esm2015/autocomplete/testing/autocomplete-harness.js +27 -19
  48. package/esm2015/checkbox/testing/checkbox-harness.js +31 -36
  49. package/esm2015/core/common-behaviors/common-module.js +1 -1
  50. package/esm2015/core/version.js +1 -1
  51. package/esm2015/datepicker/date-range-input.js +10 -2
  52. package/esm2015/datepicker/datepicker-input.js +8 -1
  53. package/esm2015/datepicker/datepicker-toggle.js +2 -5
  54. package/esm2015/form-field/form-field.js +1 -1
  55. package/esm2015/menu/testing/menu-harness.js +44 -32
  56. package/esm2015/paginator/testing/paginator-harness.js +27 -25
  57. package/esm2015/radio/testing/radio-harness.js +40 -29
  58. package/esm2015/select/testing/select-harness.js +35 -29
  59. package/fesm2015/autocomplete/testing.js +26 -18
  60. package/fesm2015/autocomplete/testing.js.map +1 -1
  61. package/fesm2015/autocomplete.js +1 -1
  62. package/fesm2015/checkbox/testing.js +30 -35
  63. package/fesm2015/checkbox/testing.js.map +1 -1
  64. package/fesm2015/core.js +2 -2
  65. package/fesm2015/core.js.map +1 -1
  66. package/fesm2015/datepicker.js +15 -4
  67. package/fesm2015/datepicker.js.map +1 -1
  68. package/fesm2015/form-field.js +1 -1
  69. package/fesm2015/menu/testing.js +45 -33
  70. package/fesm2015/menu/testing.js.map +1 -1
  71. package/fesm2015/paginator/testing.js +26 -24
  72. package/fesm2015/paginator/testing.js.map +1 -1
  73. package/fesm2015/radio/testing.js +39 -28
  74. package/fesm2015/radio/testing.js.map +1 -1
  75. package/fesm2015/select/testing.js +35 -29
  76. package/fesm2015/select/testing.js.map +1 -1
  77. package/form-field/index.metadata.json +1 -1
  78. package/menu/testing/menu-harness.d.ts +39 -26
  79. package/package.json +2 -2
  80. package/paginator/testing/paginator-harness.d.ts +32 -19
  81. package/radio/testing/radio-harness.d.ts +39 -24
  82. package/schematics/ng-add/index.js +1 -1
  83. package/select/testing/select-harness.d.ts +28 -16
@@ -1,5 +1,5 @@
1
1
  import { __awaiter } from 'tslib';
2
- import { HarnessPredicate, parallel } from '@angular/cdk/testing';
2
+ import { parallel, HarnessPredicate } from '@angular/cdk/testing';
3
3
  import { MatFormFieldControlHarness } from '@angular/material/form-field/testing/control';
4
4
  import { MatOptionHarness, MatOptgroupHarness } from '@angular/material/core/testing';
5
5
 
@@ -10,28 +10,16 @@ import { MatOptionHarness, MatOptgroupHarness } from '@angular/material/core/tes
10
10
  * Use of this source code is governed by an MIT-style license that can be
11
11
  * found in the LICENSE file at https://angular.io/license
12
12
  */
13
- /** Harness for interacting with a standard mat-select in tests. */
14
- class MatSelectHarness extends MatFormFieldControlHarness {
13
+ class _MatSelectHarnessBase extends MatFormFieldControlHarness {
15
14
  constructor() {
16
15
  super(...arguments);
17
16
  this._documentRootLocator = this.documentRootLocatorFactory();
18
17
  this._backdrop = this._documentRootLocator.locatorFor('.cdk-overlay-backdrop');
19
- this._trigger = this.locatorFor('.mat-select-trigger');
20
- this._value = this.locatorFor('.mat-select-value');
21
- }
22
- /**
23
- * Gets a `HarnessPredicate` that can be used to search for a `MatSelectHarness` that meets
24
- * certain criteria.
25
- * @param options Options for filtering which select instances are considered a match.
26
- * @return a `HarnessPredicate` configured with the given options.
27
- */
28
- static with(options = {}) {
29
- return new HarnessPredicate(MatSelectHarness, options);
30
18
  }
31
19
  /** Gets a boolean promise indicating if the select is disabled. */
32
20
  isDisabled() {
33
21
  return __awaiter(this, void 0, void 0, function* () {
34
- return (yield this.host()).hasClass('mat-select-disabled');
22
+ return (yield this.host()).hasClass(`${this._prefix}-select-disabled`);
35
23
  });
36
24
  }
37
25
  /** Gets a boolean promise indicating if the select is valid. */
@@ -43,25 +31,26 @@ class MatSelectHarness extends MatFormFieldControlHarness {
43
31
  /** Gets a boolean promise indicating if the select is required. */
44
32
  isRequired() {
45
33
  return __awaiter(this, void 0, void 0, function* () {
46
- return (yield this.host()).hasClass('mat-select-required');
34
+ return (yield this.host()).hasClass(`${this._prefix}-select-required`);
47
35
  });
48
36
  }
49
37
  /** Gets a boolean promise indicating if the select is empty (no value is selected). */
50
38
  isEmpty() {
51
39
  return __awaiter(this, void 0, void 0, function* () {
52
- return (yield this.host()).hasClass('mat-select-empty');
40
+ return (yield this.host()).hasClass(`${this._prefix}-select-empty`);
53
41
  });
54
42
  }
55
43
  /** Gets a boolean promise indicating if the select is in multi-selection mode. */
56
44
  isMultiple() {
57
45
  return __awaiter(this, void 0, void 0, function* () {
58
- return (yield this.host()).hasClass('mat-select-multiple');
46
+ return (yield this.host()).hasClass(`${this._prefix}-select-multiple`);
59
47
  });
60
48
  }
61
49
  /** Gets a promise for the select's value text. */
62
50
  getValueText() {
63
51
  return __awaiter(this, void 0, void 0, function* () {
64
- return (yield this._value()).text();
52
+ const value = yield this.locatorFor(`.${this._prefix}-select-value`)();
53
+ return value.text();
65
54
  });
66
55
  }
67
56
  /** Focuses the select and returns a void promise that indicates when the action is complete. */
@@ -83,15 +72,15 @@ class MatSelectHarness extends MatFormFieldControlHarness {
83
72
  });
84
73
  }
85
74
  /** Gets the options inside the select panel. */
86
- getOptions(filter = {}) {
75
+ getOptions(filter) {
87
76
  return __awaiter(this, void 0, void 0, function* () {
88
- return this._documentRootLocator.locatorForAll(MatOptionHarness.with(Object.assign(Object.assign({}, filter), { ancestor: yield this._getPanelSelector() })))();
77
+ return this._documentRootLocator.locatorForAll(this._optionClass.with(Object.assign(Object.assign({}, (filter || {})), { ancestor: yield this._getPanelSelector() })))();
89
78
  });
90
79
  }
91
80
  /** Gets the groups of options inside the panel. */
92
- getOptionGroups(filter = {}) {
81
+ getOptionGroups(filter) {
93
82
  return __awaiter(this, void 0, void 0, function* () {
94
- return this._documentRootLocator.locatorForAll(MatOptgroupHarness.with(Object.assign(Object.assign({}, filter), { ancestor: yield this._getPanelSelector() })))();
83
+ return this._documentRootLocator.locatorForAll(this._optionGroupClass.with(Object.assign(Object.assign({}, (filter || {})), { ancestor: yield this._getPanelSelector() })))();
95
84
  });
96
85
  }
97
86
  /** Gets whether the select is open. */
@@ -104,7 +93,8 @@ class MatSelectHarness extends MatFormFieldControlHarness {
104
93
  open() {
105
94
  return __awaiter(this, void 0, void 0, function* () {
106
95
  if (!(yield this.isOpen())) {
107
- return (yield this._trigger()).click();
96
+ const trigger = yield this.locatorFor(`.${this._prefix}-select-trigger`)();
97
+ return trigger.click();
108
98
  }
109
99
  });
110
100
  }
@@ -112,12 +102,10 @@ class MatSelectHarness extends MatFormFieldControlHarness {
112
102
  * Clicks the options that match the passed-in filter. If the select is in multi-selection
113
103
  * mode all options will be clicked, otherwise the harness will pick the first matching option.
114
104
  */
115
- clickOptions(filter = {}) {
105
+ clickOptions(filter) {
116
106
  return __awaiter(this, void 0, void 0, function* () {
117
107
  yield this.open();
118
- const [isMultiple, options] = yield parallel(() => {
119
- return [this.isMultiple(), this.getOptions(filter)];
120
- });
108
+ const [isMultiple, options] = yield parallel(() => [this.isMultiple(), this.getOptions(filter)]);
121
109
  if (options.length === 0) {
122
110
  throw Error('Select does not have options matching the specified filter');
123
111
  }
@@ -148,6 +136,24 @@ class MatSelectHarness extends MatFormFieldControlHarness {
148
136
  });
149
137
  }
150
138
  }
139
+ /** Harness for interacting with a standard mat-select in tests. */
140
+ class MatSelectHarness extends _MatSelectHarnessBase {
141
+ constructor() {
142
+ super(...arguments);
143
+ this._prefix = 'mat';
144
+ this._optionClass = MatOptionHarness;
145
+ this._optionGroupClass = MatOptgroupHarness;
146
+ }
147
+ /**
148
+ * Gets a `HarnessPredicate` that can be used to search for a `MatSelectHarness` that meets
149
+ * certain criteria.
150
+ * @param options Options for filtering which select instances are considered a match.
151
+ * @return a `HarnessPredicate` configured with the given options.
152
+ */
153
+ static with(options = {}) {
154
+ return new HarnessPredicate(MatSelectHarness, options);
155
+ }
156
+ }
151
157
  MatSelectHarness.hostSelector = '.mat-select';
152
158
 
153
159
  /**
@@ -174,5 +180,5 @@ MatSelectHarness.hostSelector = '.mat-select';
174
180
  * found in the LICENSE file at https://angular.io/license
175
181
  */
176
182
 
177
- export { MatSelectHarness };
183
+ export { MatSelectHarness, _MatSelectHarnessBase };
178
184
  //# sourceMappingURL=testing.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"select__testing.js","sources":["../../../../../../src/material/select/testing/select-harness.ts","../../../../../../src/material/select/testing/select-harness-filters.ts","../../../../../../src/material/select/testing/public-api.ts","../../../../../../src/material/select/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 {HarnessPredicate, parallel} from '@angular/cdk/testing';\nimport {MatFormFieldControlHarness} from '@angular/material/form-field/testing/control';\nimport {\n MatOptionHarness,\n MatOptgroupHarness,\n OptionHarnessFilters,\n OptgroupHarnessFilters,\n} from '@angular/material/core/testing';\nimport {SelectHarnessFilters} from './select-harness-filters';\n\n\n/** Harness for interacting with a standard mat-select in tests. */\nexport class MatSelectHarness extends MatFormFieldControlHarness {\n private _documentRootLocator = this.documentRootLocatorFactory();\n private _backdrop = this._documentRootLocator.locatorFor('.cdk-overlay-backdrop');\n private _trigger = this.locatorFor('.mat-select-trigger');\n private _value = this.locatorFor('.mat-select-value');\n\n static hostSelector = '.mat-select';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatSelectHarness` that meets\n * certain criteria.\n * @param options Options for filtering which select instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: SelectHarnessFilters = {}): HarnessPredicate<MatSelectHarness> {\n return new HarnessPredicate(MatSelectHarness, options);\n }\n\n /** Gets a boolean promise indicating if the select is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await this.host()).hasClass('mat-select-disabled');\n }\n\n /** Gets a boolean promise indicating if the select is valid. */\n async isValid(): Promise<boolean> {\n return !(await (await this.host()).hasClass('ng-invalid'));\n }\n\n /** Gets a boolean promise indicating if the select is required. */\n async isRequired(): Promise<boolean> {\n return (await this.host()).hasClass('mat-select-required');\n }\n\n /** Gets a boolean promise indicating if the select is empty (no value is selected). */\n async isEmpty(): Promise<boolean> {\n return (await this.host()).hasClass('mat-select-empty');\n }\n\n /** Gets a boolean promise indicating if the select is in multi-selection mode. */\n async isMultiple(): Promise<boolean> {\n return (await this.host()).hasClass('mat-select-multiple');\n }\n\n /** Gets a promise for the select's value text. */\n async getValueText(): Promise<string> {\n return (await this._value()).text();\n }\n\n /** Focuses the select and returns a void promise that indicates when the action is complete. */\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n /** Blurs the select and returns a void promise that indicates when the action is complete. */\n async blur(): Promise<void> {\n return (await this.host()).blur();\n }\n\n /** Whether the select is focused. */\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\n }\n\n /** Gets the options inside the select panel. */\n async getOptions(filter: Omit<OptionHarnessFilters, 'ancestor'> = {}):\n Promise<MatOptionHarness[]> {\n return this._documentRootLocator.locatorForAll(MatOptionHarness.with({\n ...filter,\n ancestor: await this._getPanelSelector()\n }))();\n }\n\n /** Gets the groups of options inside the panel. */\n async getOptionGroups(filter: Omit<OptgroupHarnessFilters, 'ancestor'> = {}):\n Promise<MatOptgroupHarness[]> {\n return this._documentRootLocator.locatorForAll(MatOptgroupHarness.with({\n ...filter,\n ancestor: await this._getPanelSelector()\n }))();\n }\n\n /** Gets whether the select is open. */\n async isOpen(): Promise<boolean> {\n return !!await this._documentRootLocator.locatorForOptional(await this._getPanelSelector())();\n }\n\n /** Opens the select's panel. */\n async open(): Promise<void> {\n if (!await this.isOpen()) {\n return (await this._trigger()).click();\n }\n }\n\n /**\n * Clicks the options that match the passed-in filter. If the select is in multi-selection\n * mode all options will be clicked, otherwise the harness will pick the first matching option.\n */\n async clickOptions(filter: OptionHarnessFilters = {}): Promise<void> {\n await this.open();\n\n const [isMultiple, options] = await parallel(() => {\n return [this.isMultiple(), this.getOptions(filter)];\n });\n\n if (options.length === 0) {\n throw Error('Select does not have options matching the specified filter');\n }\n\n if (isMultiple) {\n await parallel(() => options.map(option => option.click()));\n } else {\n await options[0].click();\n }\n }\n\n /** Closes the select's panel. */\n async close(): Promise<void> {\n if (await this.isOpen()) {\n // This is the most consistent way that works both in both single and multi-select modes,\n // but it assumes that only one overlay is open at a time. We should be able to make it\n // a bit more precise after #16645 where we can dispatch an ESCAPE press to the host instead.\n return (await this._backdrop()).click();\n }\n }\n\n /** Gets the selector that should be used to find this select's panel. */\n private async _getPanelSelector(): Promise<string> {\n const id = await (await this.host()).getAttribute('id');\n return `#${id}-panel`;\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 `MatSelectHarness` instances. */\nexport interface SelectHarnessFilters extends BaseHarnessFilters {}\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 './select-harness';\nexport * from './select-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":"select__testing.js","sources":["../../../../../../src/material/select/testing/select-harness.ts","../../../../../../src/material/select/testing/select-harness-filters.ts","../../../../../../src/material/select/testing/public-api.ts","../../../../../../src/material/select/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 HarnessPredicate,\n parallel,\n ComponentHarness,\n BaseHarnessFilters,\n ComponentHarnessConstructor,\n} from '@angular/cdk/testing';\nimport {MatFormFieldControlHarness} from '@angular/material/form-field/testing/control';\nimport {\n MatOptionHarness,\n MatOptgroupHarness,\n OptionHarnessFilters,\n OptgroupHarnessFilters,\n} from '@angular/material/core/testing';\nimport {SelectHarnessFilters} from './select-harness-filters';\n\nexport abstract class _MatSelectHarnessBase<\n OptionType extends (ComponentHarnessConstructor<Option> & {\n with: (options?: OptionFilters) => HarnessPredicate<Option>}),\n Option extends ComponentHarness & {click(): Promise<void>},\n OptionFilters extends BaseHarnessFilters,\n OptionGroupType extends (ComponentHarnessConstructor<OptionGroup> & {\n with: (options?: OptionGroupFilters) => HarnessPredicate<OptionGroup>}),\n OptionGroup extends ComponentHarness,\n OptionGroupFilters extends BaseHarnessFilters\n> extends MatFormFieldControlHarness {\n protected abstract _prefix: string;\n protected abstract _optionClass: OptionType;\n protected abstract _optionGroupClass: OptionGroupType;\n private _documentRootLocator = this.documentRootLocatorFactory();\n private _backdrop = this._documentRootLocator.locatorFor('.cdk-overlay-backdrop');\n\n /** Gets a boolean promise indicating if the select is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await this.host()).hasClass(`${this._prefix}-select-disabled`);\n }\n\n /** Gets a boolean promise indicating if the select is valid. */\n async isValid(): Promise<boolean> {\n return !(await (await this.host()).hasClass('ng-invalid'));\n }\n\n /** Gets a boolean promise indicating if the select is required. */\n async isRequired(): Promise<boolean> {\n return (await this.host()).hasClass(`${this._prefix}-select-required`);\n }\n\n /** Gets a boolean promise indicating if the select is empty (no value is selected). */\n async isEmpty(): Promise<boolean> {\n return (await this.host()).hasClass(`${this._prefix}-select-empty`);\n }\n\n /** Gets a boolean promise indicating if the select is in multi-selection mode. */\n async isMultiple(): Promise<boolean> {\n return (await this.host()).hasClass(`${this._prefix}-select-multiple`);\n }\n\n /** Gets a promise for the select's value text. */\n async getValueText(): Promise<string> {\n const value = await this.locatorFor(`.${this._prefix}-select-value`)();\n return value.text();\n }\n\n /** Focuses the select and returns a void promise that indicates when the action is complete. */\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n /** Blurs the select and returns a void promise that indicates when the action is complete. */\n async blur(): Promise<void> {\n return (await this.host()).blur();\n }\n\n /** Whether the select is focused. */\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\n }\n\n /** Gets the options inside the select panel. */\n async getOptions(filter?: Omit<OptionFilters, 'ancestor'>): Promise<Option[]> {\n return this._documentRootLocator.locatorForAll(this._optionClass.with({\n ...(filter || {}),\n ancestor: await this._getPanelSelector()\n } as OptionFilters))();\n }\n\n /** Gets the groups of options inside the panel. */\n async getOptionGroups(filter?: Omit<OptionGroupFilters, 'ancestor'>): Promise<OptionGroup[]> {\n return this._documentRootLocator.locatorForAll(this._optionGroupClass.with({\n ...(filter || {}),\n ancestor: await this._getPanelSelector()\n } as OptionGroupFilters))() as Promise<OptionGroup[]>;\n }\n\n /** Gets whether the select is open. */\n async isOpen(): Promise<boolean> {\n return !!await this._documentRootLocator.locatorForOptional(await this._getPanelSelector())();\n }\n\n /** Opens the select's panel. */\n async open(): Promise<void> {\n if (!await this.isOpen()) {\n const trigger = await this.locatorFor(`.${this._prefix}-select-trigger`)();\n return trigger.click();\n }\n }\n\n /**\n * Clicks the options that match the passed-in filter. If the select is in multi-selection\n * mode all options will be clicked, otherwise the harness will pick the first matching option.\n */\n async clickOptions(filter?: OptionFilters): Promise<void> {\n await this.open();\n\n const [isMultiple, options] =\n await parallel(() => [this.isMultiple(), this.getOptions(filter)]);\n\n if (options.length === 0) {\n throw Error('Select does not have options matching the specified filter');\n }\n\n if (isMultiple) {\n await parallel(() => options.map(option => option.click()));\n } else {\n await options[0].click();\n }\n }\n\n /** Closes the select's panel. */\n async close(): Promise<void> {\n if (await this.isOpen()) {\n // This is the most consistent way that works both in both single and multi-select modes,\n // but it assumes that only one overlay is open at a time. We should be able to make it\n // a bit more precise after #16645 where we can dispatch an ESCAPE press to the host instead.\n return (await this._backdrop()).click();\n }\n }\n\n /** Gets the selector that should be used to find this select's panel. */\n private async _getPanelSelector(): Promise<string> {\n const id = await (await this.host()).getAttribute('id');\n return `#${id}-panel`;\n }\n}\n\n/** Harness for interacting with a standard mat-select in tests. */\nexport class MatSelectHarness extends _MatSelectHarnessBase<\n typeof MatOptionHarness, MatOptionHarness, OptionHarnessFilters,\n typeof MatOptgroupHarness, MatOptgroupHarness, OptgroupHarnessFilters\n> {\n static hostSelector = '.mat-select';\n protected _prefix = 'mat';\n protected _optionClass = MatOptionHarness;\n protected _optionGroupClass = MatOptgroupHarness;\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatSelectHarness` that meets\n * certain criteria.\n * @param options Options for filtering which select instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: SelectHarnessFilters = {}): HarnessPredicate<MatSelectHarness> {\n return new HarnessPredicate(MatSelectHarness, options);\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 `MatSelectHarness` instances. */\nexport interface SelectHarnessFilters extends BaseHarnessFilters {}\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 './select-harness';\nexport * from './select-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 +1 @@
1
- {"__symbolic":"module","version":4,"metadata":{"MatFormFieldModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":20,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"MatError"},{"__symbolic":"reference","name":"MatFormField"},{"__symbolic":"reference","name":"MatHint"},{"__symbolic":"reference","name":"MatLabel"},{"__symbolic":"reference","name":"MatPlaceholder"},{"__symbolic":"reference","name":"MatPrefix"},{"__symbolic":"reference","name":"MatSuffix"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":31,"character":4},{"__symbolic":"reference","module":"@angular/material/core","name":"MatCommonModule","line":32,"character":4},{"__symbolic":"reference","module":"@angular/cdk/observers","name":"ObserversModule","line":33,"character":4}],"exports":[{"__symbolic":"reference","module":"@angular/material/core","name":"MatCommonModule","line":36,"character":4},{"__symbolic":"reference","name":"MatError"},{"__symbolic":"reference","name":"MatFormField"},{"__symbolic":"reference","name":"MatHint"},{"__symbolic":"reference","name":"MatLabel"},{"__symbolic":"reference","name":"MatPlaceholder"},{"__symbolic":"reference","name":"MatPrefix"},{"__symbolic":"reference","name":"MatSuffix"}]}]}],"members":{}},"MAT_ERROR":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":17,"character":29},"arguments":["MatError"]},"MatError":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":20,"character":1},"arguments":[{"selector":"mat-error","host":{"class":"mat-error","role":"alert","[attr.id]":"id","$quoted$":["class","role","[attr.id]"]},"providers":[{"provide":{"__symbolic":"reference","name":"MAT_ERROR"},"useExisting":{"__symbolic":"reference","name":"MatError"}}]}]}],"members":{"id":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":30,"character":3}}]}]}},"MatFormFieldAppearance":{"__symbolic":"interface"},"FloatLabelType":{"__symbolic":"interface"},"MatFormFieldDefaultOptions":{"__symbolic":"interface"},"MAT_FORM_FIELD_DEFAULT_OPTIONS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":99,"character":8},"arguments":["MAT_FORM_FIELD_DEFAULT_OPTIONS"]},"MAT_FORM_FIELD":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":106,"character":34},"arguments":["MatFormField"]},"MatFormField":{"__symbolic":"class","extends":{"__symbolic":"error","message":"Symbol reference expected","line":158,"character":34,"module":"./form-field"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":109,"character":1},"arguments":[{"selector":"mat-form-field","exportAs":"matFormField","animations":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"matFormFieldAnimations"},"member":"transitionMessages"}],"host":{"class":"mat-form-field","[class.mat-form-field-appearance-standard]":"appearance == \"standard\"","[class.mat-form-field-appearance-fill]":"appearance == \"fill\"","[class.mat-form-field-appearance-outline]":"appearance == \"outline\"","[class.mat-form-field-appearance-legacy]":"appearance == \"legacy\"","[class.mat-form-field-invalid]":"_control.errorState","[class.mat-form-field-can-float]":"_canLabelFloat()","[class.mat-form-field-should-float]":"_shouldLabelFloat()","[class.mat-form-field-has-label]":"_hasFloatingLabel()","[class.mat-form-field-hide-placeholder]":"_hideControlPlaceholder()","[class.mat-form-field-disabled]":"_control.disabled","[class.mat-form-field-autofilled]":"_control.autofilled","[class.mat-focused]":"_control.focused","[class.mat-accent]":"color == \"accent\"","[class.mat-warn]":"color == \"warn\"","[class.ng-untouched]":"_shouldForward(\"untouched\")","[class.ng-touched]":"_shouldForward(\"touched\")","[class.ng-pristine]":"_shouldForward(\"pristine\")","[class.ng-dirty]":"_shouldForward(\"dirty\")","[class.ng-valid]":"_shouldForward(\"valid\")","[class.ng-invalid]":"_shouldForward(\"invalid\")","[class.ng-pending]":"_shouldForward(\"pending\")","[class._mat-animation-noopable]":"!_animationsEnabled","$quoted$":["class","[class.mat-form-field-appearance-standard]","[class.mat-form-field-appearance-fill]","[class.mat-form-field-appearance-outline]","[class.mat-form-field-appearance-legacy]","[class.mat-form-field-invalid]","[class.mat-form-field-can-float]","[class.mat-form-field-should-float]","[class.mat-form-field-has-label]","[class.mat-form-field-hide-placeholder]","[class.mat-form-field-disabled]","[class.mat-form-field-autofilled]","[class.mat-focused]","[class.mat-accent]","[class.mat-warn]","[class.ng-untouched]","[class.ng-touched]","[class.ng-pristine]","[class.ng-dirty]","[class.ng-valid]","[class.ng-invalid]","[class.ng-pending]","[class._mat-animation-noopable]"]},"inputs":["color"],"encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":151,"character":17},"member":"None"},"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":152,"character":19},"member":"OnPush"},"providers":[{"provide":{"__symbolic":"reference","name":"MAT_FORM_FIELD"},"useExisting":{"__symbolic":"reference","name":"MatFormField"}}],"template":"<div class=\"mat-form-field-wrapper\">\n <div class=\"mat-form-field-flex\" #connectionContainer\n (click)=\"_control.onContainerClick && _control.onContainerClick($event)\">\n\n <!-- Outline used for outline appearance. -->\n <ng-container *ngIf=\"appearance == 'outline'\">\n <div class=\"mat-form-field-outline\">\n <div class=\"mat-form-field-outline-start\"></div>\n <div class=\"mat-form-field-outline-gap\"></div>\n <div class=\"mat-form-field-outline-end\"></div>\n </div>\n <div class=\"mat-form-field-outline mat-form-field-outline-thick\">\n <div class=\"mat-form-field-outline-start\"></div>\n <div class=\"mat-form-field-outline-gap\"></div>\n <div class=\"mat-form-field-outline-end\"></div>\n </div>\n </ng-container>\n\n <div class=\"mat-form-field-prefix\" *ngIf=\"_prefixChildren.length\">\n <ng-content select=\"[matPrefix]\"></ng-content>\n </div>\n\n <div class=\"mat-form-field-infix\" #inputContainer>\n <ng-content></ng-content>\n\n <span class=\"mat-form-field-label-wrapper\">\n <!-- We add aria-owns as a workaround for an issue in JAWS & NVDA where the label isn't\n read if it comes before the control in the DOM. -->\n <label class=\"mat-form-field-label\"\n (cdkObserveContent)=\"updateOutlineGap()\"\n [cdkObserveContentDisabled]=\"appearance != 'outline'\"\n [id]=\"_labelId\"\n [attr.for]=\"_control.id\"\n [attr.aria-owns]=\"_control.id\"\n [class.mat-empty]=\"_control.empty && !_shouldAlwaysFloat()\"\n [class.mat-form-field-empty]=\"_control.empty && !_shouldAlwaysFloat()\"\n [class.mat-accent]=\"color == 'accent'\"\n [class.mat-warn]=\"color == 'warn'\"\n #label\n *ngIf=\"_hasFloatingLabel()\"\n [ngSwitch]=\"_hasLabel()\">\n\n <!-- @breaking-change 8.0.0 remove in favor of mat-label element an placeholder attr. -->\n <ng-container *ngSwitchCase=\"false\">\n <ng-content select=\"mat-placeholder\"></ng-content>\n <span>{{_control.placeholder}}</span>\n </ng-container>\n\n <ng-content select=\"mat-label\" *ngSwitchCase=\"true\"></ng-content>\n\n <!-- @breaking-change 8.0.0 remove `mat-placeholder-required` class -->\n <span\n class=\"mat-placeholder-required mat-form-field-required-marker\"\n aria-hidden=\"true\"\n *ngIf=\"!hideRequiredMarker && _control.required && !_control.disabled\">&#32;*</span>\n </label>\n </span>\n </div>\n\n <div class=\"mat-form-field-suffix\" *ngIf=\"_suffixChildren.length\">\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </div>\n\n <!-- Underline used for legacy, standard, and box appearances. -->\n <div class=\"mat-form-field-underline\" #underline\n *ngIf=\"appearance != 'outline'\">\n <span class=\"mat-form-field-ripple\"\n [class.mat-accent]=\"color == 'accent'\"\n [class.mat-warn]=\"color == 'warn'\"></span>\n </div>\n\n <div class=\"mat-form-field-subscript-wrapper\"\n [ngSwitch]=\"_getDisplayedMessages()\">\n <div *ngSwitchCase=\"'error'\" [@transitionMessages]=\"_subscriptAnimationState\">\n <ng-content select=\"mat-error\"></ng-content>\n </div>\n\n <div class=\"mat-form-field-hint-wrapper\" *ngSwitchCase=\"'hint'\"\n [@transitionMessages]=\"_subscriptAnimationState\">\n <!-- TODO(mmalerba): use an actual <mat-hint> once all selectors are switched to mat-* -->\n <div *ngIf=\"hintLabel\" [id]=\"_hintLabelId\" class=\"mat-hint\">{{hintLabel}}</div>\n <ng-content select=\"mat-hint:not([align='end'])\"></ng-content>\n <div class=\"mat-form-field-hint-spacer\"></div>\n <ng-content select=\"mat-hint[align='end']\"></ng-content>\n </div>\n </div>\n</div>\n","styles":[".mat-form-field{display:inline-block;position:relative;text-align:left}[dir=rtl] .mat-form-field{text-align:right}.mat-form-field-wrapper{position:relative}.mat-form-field-flex{display:inline-flex;align-items:baseline;box-sizing:border-box;width:100%}.mat-form-field-prefix,.mat-form-field-suffix{white-space:nowrap;flex:none;position:relative}.mat-form-field-infix{display:block;position:relative;flex:auto;min-width:0;width:180px}.cdk-high-contrast-active .mat-form-field-infix{border-image:linear-gradient(transparent, transparent)}.mat-form-field-label-wrapper{position:absolute;left:0;box-sizing:content-box;width:100%;height:100%;overflow:hidden;pointer-events:none}[dir=rtl] .mat-form-field-label-wrapper{left:auto;right:0}.mat-form-field-label{position:absolute;left:0;font:inherit;pointer-events:none;width:100%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;transform-origin:0 0;transition:transform 400ms cubic-bezier(0.25, 0.8, 0.25, 1),color 400ms cubic-bezier(0.25, 0.8, 0.25, 1),width 400ms cubic-bezier(0.25, 0.8, 0.25, 1);display:none}[dir=rtl] .mat-form-field-label{transform-origin:100% 0;left:auto;right:0}.mat-form-field-empty.mat-form-field-label,.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label{display:block}.mat-form-field-autofill-control:-webkit-autofill+.mat-form-field-label-wrapper .mat-form-field-label{display:none}.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill+.mat-form-field-label-wrapper .mat-form-field-label{display:block;transition:none}.mat-input-server:focus+.mat-form-field-label-wrapper .mat-form-field-label,.mat-input-server[placeholder]:not(:placeholder-shown)+.mat-form-field-label-wrapper .mat-form-field-label{display:none}.mat-form-field-can-float .mat-input-server:focus+.mat-form-field-label-wrapper .mat-form-field-label,.mat-form-field-can-float .mat-input-server[placeholder]:not(:placeholder-shown)+.mat-form-field-label-wrapper .mat-form-field-label{display:block}.mat-form-field-label:not(.mat-form-field-empty){transition:none}.mat-form-field-underline{position:absolute;width:100%;pointer-events:none;transform:scale3d(1, 1.0001, 1)}.mat-form-field-ripple{position:absolute;left:0;width:100%;transform-origin:50%;transform:scaleX(0.5);opacity:0;transition:background-color 300ms cubic-bezier(0.55, 0, 0.55, 0.2)}.mat-form-field.mat-focused .mat-form-field-ripple,.mat-form-field.mat-form-field-invalid .mat-form-field-ripple{opacity:1;transform:scaleX(1);transition:transform 300ms cubic-bezier(0.25, 0.8, 0.25, 1),opacity 100ms cubic-bezier(0.25, 0.8, 0.25, 1),background-color 300ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-form-field-subscript-wrapper{position:absolute;box-sizing:border-box;width:100%;overflow:hidden}.mat-form-field-subscript-wrapper .mat-icon,.mat-form-field-label-wrapper .mat-icon{width:1em;height:1em;font-size:inherit;vertical-align:baseline}.mat-form-field-hint-wrapper{display:flex}.mat-form-field-hint-spacer{flex:1 0 1em}.mat-error{display:block}.mat-form-field-control-wrapper{position:relative}.mat-form-field-hint-end{order:1}.mat-form-field._mat-animation-noopable .mat-form-field-label,.mat-form-field._mat-animation-noopable .mat-form-field-ripple{transition:none}\n",".mat-form-field-appearance-fill .mat-form-field-flex{border-radius:4px 4px 0 0;padding:.75em .75em 0 .75em}.cdk-high-contrast-active .mat-form-field-appearance-fill .mat-form-field-flex{outline:solid 1px}.mat-form-field-appearance-fill .mat-form-field-underline::before{content:\"\";display:block;position:absolute;bottom:0;height:1px;width:100%}.mat-form-field-appearance-fill .mat-form-field-ripple{bottom:0;height:2px}.cdk-high-contrast-active .mat-form-field-appearance-fill .mat-form-field-ripple{height:0;border-top:solid 2px}.mat-form-field-appearance-fill:not(.mat-form-field-disabled) .mat-form-field-flex:hover~.mat-form-field-underline .mat-form-field-ripple{opacity:1;transform:none;transition:opacity 600ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-form-field-appearance-fill._mat-animation-noopable:not(.mat-form-field-disabled) .mat-form-field-flex:hover~.mat-form-field-underline .mat-form-field-ripple{transition:none}.mat-form-field-appearance-fill .mat-form-field-subscript-wrapper{padding:0 1em}\n",".mat-input-element{font:inherit;background:transparent;color:currentColor;border:none;outline:none;padding:0;margin:0;width:100%;max-width:100%;vertical-align:bottom;text-align:inherit}.mat-input-element:-moz-ui-invalid{box-shadow:none}.mat-input-element::-ms-clear,.mat-input-element::-ms-reveal{display:none}.mat-input-element,.mat-input-element::-webkit-search-cancel-button,.mat-input-element::-webkit-search-decoration,.mat-input-element::-webkit-search-results-button,.mat-input-element::-webkit-search-results-decoration{-webkit-appearance:none}.mat-input-element::-webkit-contacts-auto-fill-button,.mat-input-element::-webkit-caps-lock-indicator,.mat-input-element::-webkit-credentials-auto-fill-button{visibility:hidden}.mat-input-element[type=date],.mat-input-element[type=datetime],.mat-input-element[type=datetime-local],.mat-input-element[type=month],.mat-input-element[type=week],.mat-input-element[type=time]{line-height:1}.mat-input-element[type=date]::after,.mat-input-element[type=datetime]::after,.mat-input-element[type=datetime-local]::after,.mat-input-element[type=month]::after,.mat-input-element[type=week]::after,.mat-input-element[type=time]::after{content:\" \";white-space:pre;width:1px}.mat-input-element::-webkit-inner-spin-button,.mat-input-element::-webkit-calendar-picker-indicator,.mat-input-element::-webkit-clear-button{font-size:.75em}.mat-input-element::placeholder{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-input-element::placeholder:-ms-input-placeholder{-ms-user-select:text}.mat-input-element::-moz-placeholder{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-input-element::-moz-placeholder:-ms-input-placeholder{-ms-user-select:text}.mat-input-element::-webkit-input-placeholder{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-input-element::-webkit-input-placeholder:-ms-input-placeholder{-ms-user-select:text}.mat-input-element:-ms-input-placeholder{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-input-element:-ms-input-placeholder:-ms-input-placeholder{-ms-user-select:text}.mat-form-field-hide-placeholder .mat-input-element::placeholder{color:transparent !important;-webkit-text-fill-color:transparent;transition:none}.mat-form-field-hide-placeholder .mat-input-element::-moz-placeholder{color:transparent !important;-webkit-text-fill-color:transparent;transition:none}.mat-form-field-hide-placeholder .mat-input-element::-webkit-input-placeholder{color:transparent !important;-webkit-text-fill-color:transparent;transition:none}.mat-form-field-hide-placeholder .mat-input-element:-ms-input-placeholder{color:transparent !important;-webkit-text-fill-color:transparent;transition:none}textarea.mat-input-element{resize:vertical;overflow:auto}textarea.mat-input-element.cdk-textarea-autosize{resize:none}textarea.mat-input-element{padding:2px 0;margin:-2px 0}select.mat-input-element{-moz-appearance:none;-webkit-appearance:none;position:relative;background-color:transparent;display:inline-flex;box-sizing:border-box;padding-top:1em;top:-1em;margin-bottom:-1em}select.mat-input-element::-ms-expand{display:none}select.mat-input-element::-moz-focus-inner{border:0}select.mat-input-element:not(:disabled){cursor:pointer}select.mat-input-element::-ms-value{color:inherit;background:none}.mat-focused .cdk-high-contrast-active select.mat-input-element::-ms-value{color:inherit}.mat-form-field-type-mat-native-select .mat-form-field-infix::after{content:\"\";width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid;position:absolute;top:50%;right:0;margin-top:-2.5px;pointer-events:none}[dir=rtl] .mat-form-field-type-mat-native-select .mat-form-field-infix::after{right:auto;left:0}.mat-form-field-type-mat-native-select .mat-input-element{padding-right:15px}[dir=rtl] .mat-form-field-type-mat-native-select .mat-input-element{padding-right:0;padding-left:15px}.mat-form-field-type-mat-native-select .mat-form-field-label-wrapper{max-width:calc(100% - 10px)}.mat-form-field-type-mat-native-select.mat-form-field-appearance-outline .mat-form-field-infix::after{margin-top:-5px}.mat-form-field-type-mat-native-select.mat-form-field-appearance-fill .mat-form-field-infix::after{margin-top:-10px}\n",".mat-form-field-appearance-legacy .mat-form-field-label{transform:perspective(100px);-ms-transform:none}.mat-form-field-appearance-legacy .mat-form-field-prefix .mat-icon,.mat-form-field-appearance-legacy .mat-form-field-suffix .mat-icon{width:1em}.mat-form-field-appearance-legacy .mat-form-field-prefix .mat-icon-button,.mat-form-field-appearance-legacy .mat-form-field-suffix .mat-icon-button{font:inherit;vertical-align:baseline}.mat-form-field-appearance-legacy .mat-form-field-prefix .mat-icon-button .mat-icon,.mat-form-field-appearance-legacy .mat-form-field-suffix .mat-icon-button .mat-icon{font-size:inherit}.mat-form-field-appearance-legacy .mat-form-field-underline{height:1px}.cdk-high-contrast-active .mat-form-field-appearance-legacy .mat-form-field-underline{height:0;border-top:solid 1px}.mat-form-field-appearance-legacy .mat-form-field-ripple{top:0;height:2px;overflow:hidden}.cdk-high-contrast-active .mat-form-field-appearance-legacy .mat-form-field-ripple{height:0;border-top:solid 2px}.mat-form-field-appearance-legacy.mat-form-field-disabled .mat-form-field-underline{background-position:0;background-color:transparent}.cdk-high-contrast-active .mat-form-field-appearance-legacy.mat-form-field-disabled .mat-form-field-underline{border-top-style:dotted;border-top-width:2px}.mat-form-field-appearance-legacy.mat-form-field-invalid:not(.mat-focused) .mat-form-field-ripple{height:1px}\n",".mat-form-field-appearance-outline .mat-form-field-wrapper{margin:.25em 0}.mat-form-field-appearance-outline .mat-form-field-flex{padding:0 .75em 0 .75em;margin-top:-0.25em;position:relative}.mat-form-field-appearance-outline .mat-form-field-prefix,.mat-form-field-appearance-outline .mat-form-field-suffix{top:.25em}.mat-form-field-appearance-outline .mat-form-field-outline{display:flex;position:absolute;top:.25em;left:0;right:0;bottom:0;pointer-events:none}.mat-form-field-appearance-outline .mat-form-field-outline-start,.mat-form-field-appearance-outline .mat-form-field-outline-end{border:1px solid currentColor;min-width:5px}.mat-form-field-appearance-outline .mat-form-field-outline-start{border-radius:5px 0 0 5px;border-right-style:none}[dir=rtl] .mat-form-field-appearance-outline .mat-form-field-outline-start{border-right-style:solid;border-left-style:none;border-radius:0 5px 5px 0}.mat-form-field-appearance-outline .mat-form-field-outline-end{border-radius:0 5px 5px 0;border-left-style:none;flex-grow:1}[dir=rtl] .mat-form-field-appearance-outline .mat-form-field-outline-end{border-left-style:solid;border-right-style:none;border-radius:5px 0 0 5px}.mat-form-field-appearance-outline .mat-form-field-outline-gap{border-radius:.000001px;border:1px solid currentColor;border-left-style:none;border-right-style:none}.mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-outline-gap{border-top-color:transparent}.mat-form-field-appearance-outline .mat-form-field-outline-thick{opacity:0}.mat-form-field-appearance-outline .mat-form-field-outline-thick .mat-form-field-outline-start,.mat-form-field-appearance-outline .mat-form-field-outline-thick .mat-form-field-outline-end,.mat-form-field-appearance-outline .mat-form-field-outline-thick .mat-form-field-outline-gap{border-width:2px}.mat-form-field-appearance-outline.mat-focused .mat-form-field-outline,.mat-form-field-appearance-outline.mat-form-field-invalid .mat-form-field-outline{opacity:0;transition:opacity 100ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-form-field-appearance-outline.mat-focused .mat-form-field-outline-thick,.mat-form-field-appearance-outline.mat-form-field-invalid .mat-form-field-outline-thick{opacity:1}.mat-form-field-appearance-outline:not(.mat-form-field-disabled) .mat-form-field-flex:hover .mat-form-field-outline{opacity:0;transition:opacity 600ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-form-field-appearance-outline:not(.mat-form-field-disabled) .mat-form-field-flex:hover .mat-form-field-outline-thick{opacity:1}.mat-form-field-appearance-outline .mat-form-field-subscript-wrapper{padding:0 1em}.mat-form-field-appearance-outline._mat-animation-noopable:not(.mat-form-field-disabled) .mat-form-field-flex:hover~.mat-form-field-outline,.mat-form-field-appearance-outline._mat-animation-noopable .mat-form-field-outline,.mat-form-field-appearance-outline._mat-animation-noopable .mat-form-field-outline-start,.mat-form-field-appearance-outline._mat-animation-noopable .mat-form-field-outline-end,.mat-form-field-appearance-outline._mat-animation-noopable .mat-form-field-outline-gap{transition:none}\n",".mat-form-field-appearance-standard .mat-form-field-flex{padding-top:.75em}.mat-form-field-appearance-standard .mat-form-field-underline{height:1px}.cdk-high-contrast-active .mat-form-field-appearance-standard .mat-form-field-underline{height:0;border-top:solid 1px}.mat-form-field-appearance-standard .mat-form-field-ripple{bottom:0;height:2px}.cdk-high-contrast-active .mat-form-field-appearance-standard .mat-form-field-ripple{height:0;border-top:2px}.mat-form-field-appearance-standard.mat-form-field-disabled .mat-form-field-underline{background-position:0;background-color:transparent}.cdk-high-contrast-active .mat-form-field-appearance-standard.mat-form-field-disabled .mat-form-field-underline{border-top-style:dotted;border-top-width:2px}.mat-form-field-appearance-standard:not(.mat-form-field-disabled) .mat-form-field-flex:hover~.mat-form-field-underline .mat-form-field-ripple{opacity:1;transform:none;transition:opacity 600ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-form-field-appearance-standard._mat-animation-noopable:not(.mat-form-field-disabled) .mat-form-field-flex:hover~.mat-form-field-underline .mat-form-field-ripple{transition:none}\n"]}]}],"members":{"appearance":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":173,"character":3}}]}],"hideRequiredMarker":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":187,"character":3}}]}],"_shouldAlwaysFloat":[{"__symbolic":"method"}],"_canLabelFloat":[{"__symbolic":"method"}],"hintLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":209,"character":3}}]}],"floatLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":231,"character":3}}]}],"underlineRef":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":250,"character":3},"arguments":["underline"]}]}],"_connectionContainerRef":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":252,"character":3},"arguments":["connectionContainer",{"static":true}]}]}],"_inputContainerRef":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":253,"character":3},"arguments":["inputContainer"]}]}],"_label":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":254,"character":3},"arguments":["label"]}]}],"_controlNonStatic":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild","line":256,"character":3},"arguments":[{"__symbolic":"reference","name":"MatFormFieldControl"}]}]}],"_controlStatic":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild","line":257,"character":3},"arguments":[{"__symbolic":"reference","name":"MatFormFieldControl"},{"static":true}]}]}],"_labelChildNonStatic":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild","line":268,"character":3},"arguments":[{"__symbolic":"reference","name":"MatLabel"}]}]}],"_labelChildStatic":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild","line":269,"character":3},"arguments":[{"__symbolic":"reference","name":"MatLabel"},{"static":true}]}]}],"_placeholderChild":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild","line":270,"character":3},"arguments":[{"__symbolic":"reference","name":"MatPlaceholder"}]}]}],"_errorChildren":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChildren","line":272,"character":3},"arguments":[{"__symbolic":"reference","name":"MAT_ERROR"},{"descendants":true}]}]}],"_hintChildren":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChildren","line":273,"character":3},"arguments":[{"__symbolic":"reference","name":"_MAT_HINT"},{"descendants":true}]}]}],"_prefixChildren":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChildren","line":274,"character":3},"arguments":[{"__symbolic":"reference","name":"MAT_PREFIX"},{"descendants":true}]}]}],"_suffixChildren":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChildren","line":275,"character":3},"arguments":[{"__symbolic":"reference","name":"MAT_SUFFIX"},{"descendants":true}]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":283,"character":7},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":278,"character":26}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":286,"character":7}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":287,"character":7}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":287,"character":19},"arguments":[{"__symbolic":"reference","name":"MAT_FORM_FIELD_DEFAULT_OPTIONS"}]}],null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":289,"character":7}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":289,"character":19},"arguments":[{"__symbolic":"reference","module":"@angular/platform-browser/animations","name":"ANIMATION_MODULE_TYPE","line":289,"character":26}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":278,"character":26},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":278,"character":66},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","module":"@angular/cdk/bidi","name":"Directionality","line":286,"character":32},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","module":"@angular/cdk/platform","name":"Platform","line":288,"character":57},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":288,"character":84},{"__symbolic":"reference","name":"string"}]}],"getLabelId":[{"__symbolic":"method"}],"getConnectedOverlayOrigin":[{"__symbolic":"method"}],"ngAfterContentInit":[{"__symbolic":"method"}],"ngAfterContentChecked":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"_shouldForward":[{"__symbolic":"method"}],"_hasPlaceholder":[{"__symbolic":"method"}],"_hasLabel":[{"__symbolic":"method"}],"_shouldLabelFloat":[{"__symbolic":"method"}],"_hideControlPlaceholder":[{"__symbolic":"method"}],"_hasFloatingLabel":[{"__symbolic":"method"}],"_getDisplayedMessages":[{"__symbolic":"method"}],"_animateAndLockLabel":[{"__symbolic":"method"}],"_validatePlaceholders":[{"__symbolic":"method"}],"_processHints":[{"__symbolic":"method"}],"_validateHints":[{"__symbolic":"method"}],"_getDefaultFloatLabelState":[{"__symbolic":"method"}],"_syncDescribedByIds":[{"__symbolic":"method"}],"_validateControlChild":[{"__symbolic":"method"}],"updateOutlineGap":[{"__symbolic":"method"}],"_getStartEnd":[{"__symbolic":"method"}],"_isAttachedToDOM":[{"__symbolic":"method"}]}},"MatFormFieldControl":{"__symbolic":"class","arity":1,"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":14,"character":1}}],"members":{"setDescribedByIds":[{"__symbolic":"method"}],"onContainerClick":[{"__symbolic":"method"}]}},"getMatFormFieldPlaceholderConflictError":{"__symbolic":"function","parameters":[],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"Error"},"arguments":["Placeholder attribute and child element were both specified."]}},"getMatFormFieldDuplicatedHintError":{"__symbolic":"function","parameters":["align"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"Error"},"arguments":[{"__symbolic":"binop","operator":"+","left":{"__symbolic":"binop","operator":"+","left":"A hint was already declared for 'align=\"","right":{"__symbolic":"reference","name":"align"}},"right":"\"'."}]}},"getMatFormFieldMissingControlError":{"__symbolic":"function","parameters":[],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"Error"},"arguments":["mat-form-field must contain a MatFormFieldControl."]}},"_MAT_HINT":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":20,"character":29},"arguments":["MatHint"]},"MatHint":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":23,"character":1},"arguments":[{"selector":"mat-hint","host":{"class":"mat-hint","[class.mat-form-field-hint-end]":"align === \"end\"","[attr.id]":"id","[attr.align]":"null","$quoted$":["class","[class.mat-form-field-hint-end]","[attr.id]","[attr.align]"]},"providers":[{"provide":{"__symbolic":"reference","name":"_MAT_HINT"},"useExisting":{"__symbolic":"reference","name":"MatHint"}}]}]}],"members":{"align":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":36,"character":3}}]}],"id":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":39,"character":3}}]}]}},"MatPlaceholder":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":17,"character":1},"arguments":[{"selector":"mat-placeholder"}]}],"members":{}},"MAT_PREFIX":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":15,"character":30},"arguments":["MatPrefix"]},"MatPrefix":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":18,"character":1},"arguments":[{"selector":"[matPrefix]","providers":[{"provide":{"__symbolic":"reference","name":"MAT_PREFIX"},"useExisting":{"__symbolic":"reference","name":"MatPrefix"}}]}]}],"members":{}},"MAT_SUFFIX":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":15,"character":30},"arguments":["MatSuffix"]},"MatSuffix":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":18,"character":1},"arguments":[{"selector":"[matSuffix]","providers":[{"provide":{"__symbolic":"reference","name":"MAT_SUFFIX"},"useExisting":{"__symbolic":"reference","name":"MatSuffix"}}]}]}],"members":{}},"MatLabel":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":12,"character":1},"arguments":[{"selector":"mat-label"}]}],"members":{}},"matFormFieldAnimations":{"transitionMessages":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"trigger","line":24,"character":22},"arguments":["transitionMessages",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":26,"character":4},"arguments":["enter",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":26,"character":19},"arguments":[{"opacity":1,"transform":"translateY(0%)"}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":27,"character":4},"arguments":["void => enter",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":28,"character":6},"arguments":[{"opacity":0,"transform":"translateY(-100%)"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":29,"character":6},"arguments":["300ms cubic-bezier(0.55, 0, 0.55, 0.2)"]}]]}]]}}},"origins":{"MatFormFieldModule":"./form-field-module","MAT_ERROR":"./error","MatError":"./error","MatFormFieldAppearance":"./form-field","FloatLabelType":"./form-field","MatFormFieldDefaultOptions":"./form-field","MAT_FORM_FIELD_DEFAULT_OPTIONS":"./form-field","MAT_FORM_FIELD":"./form-field","MatFormField":"./form-field","MatFormFieldControl":"./form-field-control","getMatFormFieldPlaceholderConflictError":"./form-field-errors","getMatFormFieldDuplicatedHintError":"./form-field-errors","getMatFormFieldMissingControlError":"./form-field-errors","_MAT_HINT":"./hint","MatHint":"./hint","MatPlaceholder":"./placeholder","MAT_PREFIX":"./prefix","MatPrefix":"./prefix","MAT_SUFFIX":"./suffix","MatSuffix":"./suffix","MatLabel":"./label","matFormFieldAnimations":"./form-field-animations"},"importAs":"@angular/material/form-field"}
1
+ {"__symbolic":"module","version":4,"metadata":{"MatFormFieldModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":20,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"MatError"},{"__symbolic":"reference","name":"MatFormField"},{"__symbolic":"reference","name":"MatHint"},{"__symbolic":"reference","name":"MatLabel"},{"__symbolic":"reference","name":"MatPlaceholder"},{"__symbolic":"reference","name":"MatPrefix"},{"__symbolic":"reference","name":"MatSuffix"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":31,"character":4},{"__symbolic":"reference","module":"@angular/material/core","name":"MatCommonModule","line":32,"character":4},{"__symbolic":"reference","module":"@angular/cdk/observers","name":"ObserversModule","line":33,"character":4}],"exports":[{"__symbolic":"reference","module":"@angular/material/core","name":"MatCommonModule","line":36,"character":4},{"__symbolic":"reference","name":"MatError"},{"__symbolic":"reference","name":"MatFormField"},{"__symbolic":"reference","name":"MatHint"},{"__symbolic":"reference","name":"MatLabel"},{"__symbolic":"reference","name":"MatPlaceholder"},{"__symbolic":"reference","name":"MatPrefix"},{"__symbolic":"reference","name":"MatSuffix"}]}]}],"members":{}},"MAT_ERROR":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":17,"character":29},"arguments":["MatError"]},"MatError":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":20,"character":1},"arguments":[{"selector":"mat-error","host":{"class":"mat-error","role":"alert","[attr.id]":"id","$quoted$":["class","role","[attr.id]"]},"providers":[{"provide":{"__symbolic":"reference","name":"MAT_ERROR"},"useExisting":{"__symbolic":"reference","name":"MatError"}}]}]}],"members":{"id":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":30,"character":3}}]}]}},"MatFormFieldAppearance":{"__symbolic":"interface"},"FloatLabelType":{"__symbolic":"interface"},"MatFormFieldDefaultOptions":{"__symbolic":"interface"},"MAT_FORM_FIELD_DEFAULT_OPTIONS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":99,"character":8},"arguments":["MAT_FORM_FIELD_DEFAULT_OPTIONS"]},"MAT_FORM_FIELD":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":106,"character":34},"arguments":["MatFormField"]},"MatFormField":{"__symbolic":"class","extends":{"__symbolic":"error","message":"Symbol reference expected","line":158,"character":34,"module":"./form-field"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":109,"character":1},"arguments":[{"selector":"mat-form-field","exportAs":"matFormField","animations":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"matFormFieldAnimations"},"member":"transitionMessages"}],"host":{"class":"mat-form-field","[class.mat-form-field-appearance-standard]":"appearance == \"standard\"","[class.mat-form-field-appearance-fill]":"appearance == \"fill\"","[class.mat-form-field-appearance-outline]":"appearance == \"outline\"","[class.mat-form-field-appearance-legacy]":"appearance == \"legacy\"","[class.mat-form-field-invalid]":"_control.errorState","[class.mat-form-field-can-float]":"_canLabelFloat()","[class.mat-form-field-should-float]":"_shouldLabelFloat()","[class.mat-form-field-has-label]":"_hasFloatingLabel()","[class.mat-form-field-hide-placeholder]":"_hideControlPlaceholder()","[class.mat-form-field-disabled]":"_control.disabled","[class.mat-form-field-autofilled]":"_control.autofilled","[class.mat-focused]":"_control.focused","[class.mat-accent]":"color == \"accent\"","[class.mat-warn]":"color == \"warn\"","[class.ng-untouched]":"_shouldForward(\"untouched\")","[class.ng-touched]":"_shouldForward(\"touched\")","[class.ng-pristine]":"_shouldForward(\"pristine\")","[class.ng-dirty]":"_shouldForward(\"dirty\")","[class.ng-valid]":"_shouldForward(\"valid\")","[class.ng-invalid]":"_shouldForward(\"invalid\")","[class.ng-pending]":"_shouldForward(\"pending\")","[class._mat-animation-noopable]":"!_animationsEnabled","$quoted$":["class","[class.mat-form-field-appearance-standard]","[class.mat-form-field-appearance-fill]","[class.mat-form-field-appearance-outline]","[class.mat-form-field-appearance-legacy]","[class.mat-form-field-invalid]","[class.mat-form-field-can-float]","[class.mat-form-field-should-float]","[class.mat-form-field-has-label]","[class.mat-form-field-hide-placeholder]","[class.mat-form-field-disabled]","[class.mat-form-field-autofilled]","[class.mat-focused]","[class.mat-accent]","[class.mat-warn]","[class.ng-untouched]","[class.ng-touched]","[class.ng-pristine]","[class.ng-dirty]","[class.ng-valid]","[class.ng-invalid]","[class.ng-pending]","[class._mat-animation-noopable]"]},"inputs":["color"],"encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":151,"character":17},"member":"None"},"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":152,"character":19},"member":"OnPush"},"providers":[{"provide":{"__symbolic":"reference","name":"MAT_FORM_FIELD"},"useExisting":{"__symbolic":"reference","name":"MatFormField"}}],"template":"<div class=\"mat-form-field-wrapper\">\n <div class=\"mat-form-field-flex\" #connectionContainer\n (click)=\"_control.onContainerClick && _control.onContainerClick($event)\">\n\n <!-- Outline used for outline appearance. -->\n <ng-container *ngIf=\"appearance == 'outline'\">\n <div class=\"mat-form-field-outline\">\n <div class=\"mat-form-field-outline-start\"></div>\n <div class=\"mat-form-field-outline-gap\"></div>\n <div class=\"mat-form-field-outline-end\"></div>\n </div>\n <div class=\"mat-form-field-outline mat-form-field-outline-thick\">\n <div class=\"mat-form-field-outline-start\"></div>\n <div class=\"mat-form-field-outline-gap\"></div>\n <div class=\"mat-form-field-outline-end\"></div>\n </div>\n </ng-container>\n\n <div class=\"mat-form-field-prefix\" *ngIf=\"_prefixChildren.length\">\n <ng-content select=\"[matPrefix]\"></ng-content>\n </div>\n\n <div class=\"mat-form-field-infix\" #inputContainer>\n <ng-content></ng-content>\n\n <span class=\"mat-form-field-label-wrapper\">\n <!-- We add aria-owns as a workaround for an issue in JAWS & NVDA where the label isn't\n read if it comes before the control in the DOM. -->\n <label class=\"mat-form-field-label\"\n (cdkObserveContent)=\"updateOutlineGap()\"\n [cdkObserveContentDisabled]=\"appearance != 'outline'\"\n [id]=\"_labelId\"\n [attr.for]=\"_control.id\"\n [attr.aria-owns]=\"_control.id\"\n [class.mat-empty]=\"_control.empty && !_shouldAlwaysFloat()\"\n [class.mat-form-field-empty]=\"_control.empty && !_shouldAlwaysFloat()\"\n [class.mat-accent]=\"color == 'accent'\"\n [class.mat-warn]=\"color == 'warn'\"\n #label\n *ngIf=\"_hasFloatingLabel()\"\n [ngSwitch]=\"_hasLabel()\">\n\n <!-- @breaking-change 8.0.0 remove in favor of mat-label element an placeholder attr. -->\n <ng-container *ngSwitchCase=\"false\">\n <ng-content select=\"mat-placeholder\"></ng-content>\n <span>{{_control.placeholder}}</span>\n </ng-container>\n\n <ng-content select=\"mat-label\" *ngSwitchCase=\"true\"></ng-content>\n\n <!-- @breaking-change 8.0.0 remove `mat-placeholder-required` class -->\n <span\n class=\"mat-placeholder-required mat-form-field-required-marker\"\n aria-hidden=\"true\"\n *ngIf=\"!hideRequiredMarker && _control.required && !_control.disabled\">&#32;*</span>\n </label>\n </span>\n </div>\n\n <div class=\"mat-form-field-suffix\" *ngIf=\"_suffixChildren.length\">\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </div>\n\n <!-- Underline used for legacy, standard, and box appearances. -->\n <div class=\"mat-form-field-underline\" #underline\n *ngIf=\"appearance != 'outline'\">\n <span class=\"mat-form-field-ripple\"\n [class.mat-accent]=\"color == 'accent'\"\n [class.mat-warn]=\"color == 'warn'\"></span>\n </div>\n\n <div class=\"mat-form-field-subscript-wrapper\"\n [ngSwitch]=\"_getDisplayedMessages()\">\n <div *ngSwitchCase=\"'error'\" [@transitionMessages]=\"_subscriptAnimationState\">\n <ng-content select=\"mat-error\"></ng-content>\n </div>\n\n <div class=\"mat-form-field-hint-wrapper\" *ngSwitchCase=\"'hint'\"\n [@transitionMessages]=\"_subscriptAnimationState\">\n <!-- TODO(mmalerba): use an actual <mat-hint> once all selectors are switched to mat-* -->\n <div *ngIf=\"hintLabel\" [id]=\"_hintLabelId\" class=\"mat-hint\">{{hintLabel}}</div>\n <ng-content select=\"mat-hint:not([align='end'])\"></ng-content>\n <div class=\"mat-form-field-hint-spacer\"></div>\n <ng-content select=\"mat-hint[align='end']\"></ng-content>\n </div>\n </div>\n</div>\n","styles":[".mat-form-field{display:inline-block;position:relative;text-align:left}[dir=rtl] .mat-form-field{text-align:right}.mat-form-field-wrapper{position:relative}.mat-form-field-flex{display:inline-flex;align-items:baseline;box-sizing:border-box;width:100%}.mat-form-field-prefix,.mat-form-field-suffix{white-space:nowrap;flex:none;position:relative}.mat-form-field-infix{display:block;position:relative;flex:auto;min-width:0;width:180px}.cdk-high-contrast-active .mat-form-field-infix{border-image:linear-gradient(transparent, transparent)}.mat-form-field-label-wrapper{position:absolute;left:0;box-sizing:content-box;width:100%;height:100%;overflow:hidden;pointer-events:none}[dir=rtl] .mat-form-field-label-wrapper{left:auto;right:0}.mat-form-field-label{position:absolute;left:0;font:inherit;pointer-events:none;width:100%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;transform-origin:0 0;transition:transform 400ms cubic-bezier(0.25, 0.8, 0.25, 1),color 400ms cubic-bezier(0.25, 0.8, 0.25, 1),width 400ms cubic-bezier(0.25, 0.8, 0.25, 1);display:none}[dir=rtl] .mat-form-field-label{transform-origin:100% 0;left:auto;right:0}.mat-form-field-empty.mat-form-field-label,.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label{display:block}.mat-form-field-autofill-control:-webkit-autofill+.mat-form-field-label-wrapper .mat-form-field-label{display:none}.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill+.mat-form-field-label-wrapper .mat-form-field-label{display:block;transition:none}.mat-input-server:focus+.mat-form-field-label-wrapper .mat-form-field-label,.mat-input-server[placeholder]:not(:placeholder-shown)+.mat-form-field-label-wrapper .mat-form-field-label{display:none}.mat-form-field-can-float .mat-input-server:focus+.mat-form-field-label-wrapper .mat-form-field-label,.mat-form-field-can-float .mat-input-server[placeholder]:not(:placeholder-shown)+.mat-form-field-label-wrapper .mat-form-field-label{display:block}.mat-form-field-label:not(.mat-form-field-empty){transition:none}.mat-form-field-underline{position:absolute;width:100%;pointer-events:none;transform:scale3d(1, 1.0001, 1)}.mat-form-field-ripple{position:absolute;left:0;width:100%;transform-origin:50%;transform:scaleX(0.5);opacity:0;transition:background-color 300ms cubic-bezier(0.55, 0, 0.55, 0.2)}.mat-form-field.mat-focused .mat-form-field-ripple,.mat-form-field.mat-form-field-invalid .mat-form-field-ripple{opacity:1;transform:none;transition:transform 300ms cubic-bezier(0.25, 0.8, 0.25, 1),opacity 100ms cubic-bezier(0.25, 0.8, 0.25, 1),background-color 300ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-form-field-subscript-wrapper{position:absolute;box-sizing:border-box;width:100%;overflow:hidden}.mat-form-field-subscript-wrapper .mat-icon,.mat-form-field-label-wrapper .mat-icon{width:1em;height:1em;font-size:inherit;vertical-align:baseline}.mat-form-field-hint-wrapper{display:flex}.mat-form-field-hint-spacer{flex:1 0 1em}.mat-error{display:block}.mat-form-field-control-wrapper{position:relative}.mat-form-field-hint-end{order:1}.mat-form-field._mat-animation-noopable .mat-form-field-label,.mat-form-field._mat-animation-noopable .mat-form-field-ripple{transition:none}\n",".mat-form-field-appearance-fill .mat-form-field-flex{border-radius:4px 4px 0 0;padding:.75em .75em 0 .75em}.cdk-high-contrast-active .mat-form-field-appearance-fill .mat-form-field-flex{outline:solid 1px}.mat-form-field-appearance-fill .mat-form-field-underline::before{content:\"\";display:block;position:absolute;bottom:0;height:1px;width:100%}.mat-form-field-appearance-fill .mat-form-field-ripple{bottom:0;height:2px}.cdk-high-contrast-active .mat-form-field-appearance-fill .mat-form-field-ripple{height:0;border-top:solid 2px}.mat-form-field-appearance-fill:not(.mat-form-field-disabled) .mat-form-field-flex:hover~.mat-form-field-underline .mat-form-field-ripple{opacity:1;transform:none;transition:opacity 600ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-form-field-appearance-fill._mat-animation-noopable:not(.mat-form-field-disabled) .mat-form-field-flex:hover~.mat-form-field-underline .mat-form-field-ripple{transition:none}.mat-form-field-appearance-fill .mat-form-field-subscript-wrapper{padding:0 1em}\n",".mat-input-element{font:inherit;background:transparent;color:currentColor;border:none;outline:none;padding:0;margin:0;width:100%;max-width:100%;vertical-align:bottom;text-align:inherit}.mat-input-element:-moz-ui-invalid{box-shadow:none}.mat-input-element::-ms-clear,.mat-input-element::-ms-reveal{display:none}.mat-input-element,.mat-input-element::-webkit-search-cancel-button,.mat-input-element::-webkit-search-decoration,.mat-input-element::-webkit-search-results-button,.mat-input-element::-webkit-search-results-decoration{-webkit-appearance:none}.mat-input-element::-webkit-contacts-auto-fill-button,.mat-input-element::-webkit-caps-lock-indicator,.mat-input-element::-webkit-credentials-auto-fill-button{visibility:hidden}.mat-input-element[type=date],.mat-input-element[type=datetime],.mat-input-element[type=datetime-local],.mat-input-element[type=month],.mat-input-element[type=week],.mat-input-element[type=time]{line-height:1}.mat-input-element[type=date]::after,.mat-input-element[type=datetime]::after,.mat-input-element[type=datetime-local]::after,.mat-input-element[type=month]::after,.mat-input-element[type=week]::after,.mat-input-element[type=time]::after{content:\" \";white-space:pre;width:1px}.mat-input-element::-webkit-inner-spin-button,.mat-input-element::-webkit-calendar-picker-indicator,.mat-input-element::-webkit-clear-button{font-size:.75em}.mat-input-element::placeholder{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-input-element::placeholder:-ms-input-placeholder{-ms-user-select:text}.mat-input-element::-moz-placeholder{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-input-element::-moz-placeholder:-ms-input-placeholder{-ms-user-select:text}.mat-input-element::-webkit-input-placeholder{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-input-element::-webkit-input-placeholder:-ms-input-placeholder{-ms-user-select:text}.mat-input-element:-ms-input-placeholder{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-input-element:-ms-input-placeholder:-ms-input-placeholder{-ms-user-select:text}.mat-form-field-hide-placeholder .mat-input-element::placeholder{color:transparent !important;-webkit-text-fill-color:transparent;transition:none}.mat-form-field-hide-placeholder .mat-input-element::-moz-placeholder{color:transparent !important;-webkit-text-fill-color:transparent;transition:none}.mat-form-field-hide-placeholder .mat-input-element::-webkit-input-placeholder{color:transparent !important;-webkit-text-fill-color:transparent;transition:none}.mat-form-field-hide-placeholder .mat-input-element:-ms-input-placeholder{color:transparent !important;-webkit-text-fill-color:transparent;transition:none}textarea.mat-input-element{resize:vertical;overflow:auto}textarea.mat-input-element.cdk-textarea-autosize{resize:none}textarea.mat-input-element{padding:2px 0;margin:-2px 0}select.mat-input-element{-moz-appearance:none;-webkit-appearance:none;position:relative;background-color:transparent;display:inline-flex;box-sizing:border-box;padding-top:1em;top:-1em;margin-bottom:-1em}select.mat-input-element::-ms-expand{display:none}select.mat-input-element::-moz-focus-inner{border:0}select.mat-input-element:not(:disabled){cursor:pointer}select.mat-input-element::-ms-value{color:inherit;background:none}.mat-focused .cdk-high-contrast-active select.mat-input-element::-ms-value{color:inherit}.mat-form-field-type-mat-native-select .mat-form-field-infix::after{content:\"\";width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid;position:absolute;top:50%;right:0;margin-top:-2.5px;pointer-events:none}[dir=rtl] .mat-form-field-type-mat-native-select .mat-form-field-infix::after{right:auto;left:0}.mat-form-field-type-mat-native-select .mat-input-element{padding-right:15px}[dir=rtl] .mat-form-field-type-mat-native-select .mat-input-element{padding-right:0;padding-left:15px}.mat-form-field-type-mat-native-select .mat-form-field-label-wrapper{max-width:calc(100% - 10px)}.mat-form-field-type-mat-native-select.mat-form-field-appearance-outline .mat-form-field-infix::after{margin-top:-5px}.mat-form-field-type-mat-native-select.mat-form-field-appearance-fill .mat-form-field-infix::after{margin-top:-10px}\n",".mat-form-field-appearance-legacy .mat-form-field-label{transform:perspective(100px);-ms-transform:none}.mat-form-field-appearance-legacy .mat-form-field-prefix .mat-icon,.mat-form-field-appearance-legacy .mat-form-field-suffix .mat-icon{width:1em}.mat-form-field-appearance-legacy .mat-form-field-prefix .mat-icon-button,.mat-form-field-appearance-legacy .mat-form-field-suffix .mat-icon-button{font:inherit;vertical-align:baseline}.mat-form-field-appearance-legacy .mat-form-field-prefix .mat-icon-button .mat-icon,.mat-form-field-appearance-legacy .mat-form-field-suffix .mat-icon-button .mat-icon{font-size:inherit}.mat-form-field-appearance-legacy .mat-form-field-underline{height:1px}.cdk-high-contrast-active .mat-form-field-appearance-legacy .mat-form-field-underline{height:0;border-top:solid 1px}.mat-form-field-appearance-legacy .mat-form-field-ripple{top:0;height:2px;overflow:hidden}.cdk-high-contrast-active .mat-form-field-appearance-legacy .mat-form-field-ripple{height:0;border-top:solid 2px}.mat-form-field-appearance-legacy.mat-form-field-disabled .mat-form-field-underline{background-position:0;background-color:transparent}.cdk-high-contrast-active .mat-form-field-appearance-legacy.mat-form-field-disabled .mat-form-field-underline{border-top-style:dotted;border-top-width:2px}.mat-form-field-appearance-legacy.mat-form-field-invalid:not(.mat-focused) .mat-form-field-ripple{height:1px}\n",".mat-form-field-appearance-outline .mat-form-field-wrapper{margin:.25em 0}.mat-form-field-appearance-outline .mat-form-field-flex{padding:0 .75em 0 .75em;margin-top:-0.25em;position:relative}.mat-form-field-appearance-outline .mat-form-field-prefix,.mat-form-field-appearance-outline .mat-form-field-suffix{top:.25em}.mat-form-field-appearance-outline .mat-form-field-outline{display:flex;position:absolute;top:.25em;left:0;right:0;bottom:0;pointer-events:none}.mat-form-field-appearance-outline .mat-form-field-outline-start,.mat-form-field-appearance-outline .mat-form-field-outline-end{border:1px solid currentColor;min-width:5px}.mat-form-field-appearance-outline .mat-form-field-outline-start{border-radius:5px 0 0 5px;border-right-style:none}[dir=rtl] .mat-form-field-appearance-outline .mat-form-field-outline-start{border-right-style:solid;border-left-style:none;border-radius:0 5px 5px 0}.mat-form-field-appearance-outline .mat-form-field-outline-end{border-radius:0 5px 5px 0;border-left-style:none;flex-grow:1}[dir=rtl] .mat-form-field-appearance-outline .mat-form-field-outline-end{border-left-style:solid;border-right-style:none;border-radius:5px 0 0 5px}.mat-form-field-appearance-outline .mat-form-field-outline-gap{border-radius:.000001px;border:1px solid currentColor;border-left-style:none;border-right-style:none}.mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-outline-gap{border-top-color:transparent}.mat-form-field-appearance-outline .mat-form-field-outline-thick{opacity:0}.mat-form-field-appearance-outline .mat-form-field-outline-thick .mat-form-field-outline-start,.mat-form-field-appearance-outline .mat-form-field-outline-thick .mat-form-field-outline-end,.mat-form-field-appearance-outline .mat-form-field-outline-thick .mat-form-field-outline-gap{border-width:2px}.mat-form-field-appearance-outline.mat-focused .mat-form-field-outline,.mat-form-field-appearance-outline.mat-form-field-invalid .mat-form-field-outline{opacity:0;transition:opacity 100ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-form-field-appearance-outline.mat-focused .mat-form-field-outline-thick,.mat-form-field-appearance-outline.mat-form-field-invalid .mat-form-field-outline-thick{opacity:1}.mat-form-field-appearance-outline:not(.mat-form-field-disabled) .mat-form-field-flex:hover .mat-form-field-outline{opacity:0;transition:opacity 600ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-form-field-appearance-outline:not(.mat-form-field-disabled) .mat-form-field-flex:hover .mat-form-field-outline-thick{opacity:1}.mat-form-field-appearance-outline .mat-form-field-subscript-wrapper{padding:0 1em}.mat-form-field-appearance-outline._mat-animation-noopable:not(.mat-form-field-disabled) .mat-form-field-flex:hover~.mat-form-field-outline,.mat-form-field-appearance-outline._mat-animation-noopable .mat-form-field-outline,.mat-form-field-appearance-outline._mat-animation-noopable .mat-form-field-outline-start,.mat-form-field-appearance-outline._mat-animation-noopable .mat-form-field-outline-end,.mat-form-field-appearance-outline._mat-animation-noopable .mat-form-field-outline-gap{transition:none}\n",".mat-form-field-appearance-standard .mat-form-field-flex{padding-top:.75em}.mat-form-field-appearance-standard .mat-form-field-underline{height:1px}.cdk-high-contrast-active .mat-form-field-appearance-standard .mat-form-field-underline{height:0;border-top:solid 1px}.mat-form-field-appearance-standard .mat-form-field-ripple{bottom:0;height:2px}.cdk-high-contrast-active .mat-form-field-appearance-standard .mat-form-field-ripple{height:0;border-top:2px}.mat-form-field-appearance-standard.mat-form-field-disabled .mat-form-field-underline{background-position:0;background-color:transparent}.cdk-high-contrast-active .mat-form-field-appearance-standard.mat-form-field-disabled .mat-form-field-underline{border-top-style:dotted;border-top-width:2px}.mat-form-field-appearance-standard:not(.mat-form-field-disabled) .mat-form-field-flex:hover~.mat-form-field-underline .mat-form-field-ripple{opacity:1;transform:none;transition:opacity 600ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-form-field-appearance-standard._mat-animation-noopable:not(.mat-form-field-disabled) .mat-form-field-flex:hover~.mat-form-field-underline .mat-form-field-ripple{transition:none}\n"]}]}],"members":{"appearance":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":173,"character":3}}]}],"hideRequiredMarker":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":187,"character":3}}]}],"_shouldAlwaysFloat":[{"__symbolic":"method"}],"_canLabelFloat":[{"__symbolic":"method"}],"hintLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":209,"character":3}}]}],"floatLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":231,"character":3}}]}],"underlineRef":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":250,"character":3},"arguments":["underline"]}]}],"_connectionContainerRef":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":252,"character":3},"arguments":["connectionContainer",{"static":true}]}]}],"_inputContainerRef":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":253,"character":3},"arguments":["inputContainer"]}]}],"_label":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":254,"character":3},"arguments":["label"]}]}],"_controlNonStatic":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild","line":256,"character":3},"arguments":[{"__symbolic":"reference","name":"MatFormFieldControl"}]}]}],"_controlStatic":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild","line":257,"character":3},"arguments":[{"__symbolic":"reference","name":"MatFormFieldControl"},{"static":true}]}]}],"_labelChildNonStatic":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild","line":268,"character":3},"arguments":[{"__symbolic":"reference","name":"MatLabel"}]}]}],"_labelChildStatic":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild","line":269,"character":3},"arguments":[{"__symbolic":"reference","name":"MatLabel"},{"static":true}]}]}],"_placeholderChild":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild","line":270,"character":3},"arguments":[{"__symbolic":"reference","name":"MatPlaceholder"}]}]}],"_errorChildren":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChildren","line":272,"character":3},"arguments":[{"__symbolic":"reference","name":"MAT_ERROR"},{"descendants":true}]}]}],"_hintChildren":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChildren","line":273,"character":3},"arguments":[{"__symbolic":"reference","name":"_MAT_HINT"},{"descendants":true}]}]}],"_prefixChildren":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChildren","line":274,"character":3},"arguments":[{"__symbolic":"reference","name":"MAT_PREFIX"},{"descendants":true}]}]}],"_suffixChildren":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChildren","line":275,"character":3},"arguments":[{"__symbolic":"reference","name":"MAT_SUFFIX"},{"descendants":true}]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":283,"character":7},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":278,"character":26}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":286,"character":7}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":287,"character":7}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":287,"character":19},"arguments":[{"__symbolic":"reference","name":"MAT_FORM_FIELD_DEFAULT_OPTIONS"}]}],null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":289,"character":7}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":289,"character":19},"arguments":[{"__symbolic":"reference","module":"@angular/platform-browser/animations","name":"ANIMATION_MODULE_TYPE","line":289,"character":26}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":278,"character":26},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":278,"character":66},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","module":"@angular/cdk/bidi","name":"Directionality","line":286,"character":32},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","module":"@angular/cdk/platform","name":"Platform","line":288,"character":57},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":288,"character":84},{"__symbolic":"reference","name":"string"}]}],"getLabelId":[{"__symbolic":"method"}],"getConnectedOverlayOrigin":[{"__symbolic":"method"}],"ngAfterContentInit":[{"__symbolic":"method"}],"ngAfterContentChecked":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"_shouldForward":[{"__symbolic":"method"}],"_hasPlaceholder":[{"__symbolic":"method"}],"_hasLabel":[{"__symbolic":"method"}],"_shouldLabelFloat":[{"__symbolic":"method"}],"_hideControlPlaceholder":[{"__symbolic":"method"}],"_hasFloatingLabel":[{"__symbolic":"method"}],"_getDisplayedMessages":[{"__symbolic":"method"}],"_animateAndLockLabel":[{"__symbolic":"method"}],"_validatePlaceholders":[{"__symbolic":"method"}],"_processHints":[{"__symbolic":"method"}],"_validateHints":[{"__symbolic":"method"}],"_getDefaultFloatLabelState":[{"__symbolic":"method"}],"_syncDescribedByIds":[{"__symbolic":"method"}],"_validateControlChild":[{"__symbolic":"method"}],"updateOutlineGap":[{"__symbolic":"method"}],"_getStartEnd":[{"__symbolic":"method"}],"_isAttachedToDOM":[{"__symbolic":"method"}]}},"MatFormFieldControl":{"__symbolic":"class","arity":1,"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":14,"character":1}}],"members":{"setDescribedByIds":[{"__symbolic":"method"}],"onContainerClick":[{"__symbolic":"method"}]}},"getMatFormFieldPlaceholderConflictError":{"__symbolic":"function","parameters":[],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"Error"},"arguments":["Placeholder attribute and child element were both specified."]}},"getMatFormFieldDuplicatedHintError":{"__symbolic":"function","parameters":["align"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"Error"},"arguments":[{"__symbolic":"binop","operator":"+","left":{"__symbolic":"binop","operator":"+","left":"A hint was already declared for 'align=\"","right":{"__symbolic":"reference","name":"align"}},"right":"\"'."}]}},"getMatFormFieldMissingControlError":{"__symbolic":"function","parameters":[],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"Error"},"arguments":["mat-form-field must contain a MatFormFieldControl."]}},"_MAT_HINT":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":20,"character":29},"arguments":["MatHint"]},"MatHint":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":23,"character":1},"arguments":[{"selector":"mat-hint","host":{"class":"mat-hint","[class.mat-form-field-hint-end]":"align === \"end\"","[attr.id]":"id","[attr.align]":"null","$quoted$":["class","[class.mat-form-field-hint-end]","[attr.id]","[attr.align]"]},"providers":[{"provide":{"__symbolic":"reference","name":"_MAT_HINT"},"useExisting":{"__symbolic":"reference","name":"MatHint"}}]}]}],"members":{"align":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":36,"character":3}}]}],"id":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":39,"character":3}}]}]}},"MatPlaceholder":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":17,"character":1},"arguments":[{"selector":"mat-placeholder"}]}],"members":{}},"MAT_PREFIX":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":15,"character":30},"arguments":["MatPrefix"]},"MatPrefix":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":18,"character":1},"arguments":[{"selector":"[matPrefix]","providers":[{"provide":{"__symbolic":"reference","name":"MAT_PREFIX"},"useExisting":{"__symbolic":"reference","name":"MatPrefix"}}]}]}],"members":{}},"MAT_SUFFIX":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":15,"character":30},"arguments":["MatSuffix"]},"MatSuffix":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":18,"character":1},"arguments":[{"selector":"[matSuffix]","providers":[{"provide":{"__symbolic":"reference","name":"MAT_SUFFIX"},"useExisting":{"__symbolic":"reference","name":"MatSuffix"}}]}]}],"members":{}},"MatLabel":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":12,"character":1},"arguments":[{"selector":"mat-label"}]}],"members":{}},"matFormFieldAnimations":{"transitionMessages":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"trigger","line":24,"character":22},"arguments":["transitionMessages",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":26,"character":4},"arguments":["enter",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":26,"character":19},"arguments":[{"opacity":1,"transform":"translateY(0%)"}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":27,"character":4},"arguments":["void => enter",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":28,"character":6},"arguments":[{"opacity":0,"transform":"translateY(-100%)"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":29,"character":6},"arguments":["300ms cubic-bezier(0.55, 0, 0.55, 0.2)"]}]]}]]}}},"origins":{"MatFormFieldModule":"./form-field-module","MAT_ERROR":"./error","MatError":"./error","MatFormFieldAppearance":"./form-field","FloatLabelType":"./form-field","MatFormFieldDefaultOptions":"./form-field","MAT_FORM_FIELD_DEFAULT_OPTIONS":"./form-field","MAT_FORM_FIELD":"./form-field","MatFormField":"./form-field","MatFormFieldControl":"./form-field-control","getMatFormFieldPlaceholderConflictError":"./form-field-errors","getMatFormFieldDuplicatedHintError":"./form-field-errors","getMatFormFieldMissingControlError":"./form-field-errors","_MAT_HINT":"./hint","MatHint":"./hint","MatPlaceholder":"./placeholder","MAT_PREFIX":"./prefix","MatPrefix":"./prefix","MAT_SUFFIX":"./suffix","MatSuffix":"./suffix","MatLabel":"./label","matFormFieldAnimations":"./form-field-animations"},"importAs":"@angular/material/form-field"}
@@ -5,20 +5,16 @@
5
5
  * Use of this source code is governed by an MIT-style license that can be
6
6
  * found in the LICENSE file at https://angular.io/license
7
7
  */
8
- import { ContentContainerComponentHarness, HarnessLoader, HarnessPredicate } from '@angular/cdk/testing';
8
+ import { BaseHarnessFilters, ComponentHarness, ComponentHarnessConstructor, ContentContainerComponentHarness, HarnessLoader, HarnessPredicate } from '@angular/cdk/testing';
9
9
  import { MenuHarnessFilters, MenuItemHarnessFilters } from './menu-harness-filters';
10
- /** Harness for interacting with a standard mat-menu in tests. */
11
- export declare class MatMenuHarness extends ContentContainerComponentHarness<string> {
12
- /** The selector for the host element of a `MatMenu` instance. */
13
- static hostSelector: string;
10
+ export declare abstract class _MatMenuHarnessBase<ItemType extends (ComponentHarnessConstructor<Item> & {
11
+ with: (options?: ItemFilters) => HarnessPredicate<Item>;
12
+ }), Item extends ComponentHarness & {
13
+ click(): Promise<void>;
14
+ getSubmenu(): Promise<_MatMenuHarnessBase<ItemType, Item, ItemFilters> | null>;
15
+ }, ItemFilters extends BaseHarnessFilters> extends ContentContainerComponentHarness<string> {
14
16
  private _documentRootLocator;
15
- /**
16
- * Gets a `HarnessPredicate` that can be used to search for a `MatMenuHarness` that meets certain
17
- * criteria.
18
- * @param options Options for filtering which menu instances are considered a match.
19
- * @return a `HarnessPredicate` configured with the given options.
20
- */
21
- static with(options?: MenuHarnessFilters): HarnessPredicate<MatMenuHarness>;
17
+ protected abstract _itemClass: ItemType;
22
18
  /** Whether the menu is disabled. */
23
19
  isDisabled(): Promise<boolean>;
24
20
  /** Whether the menu is open. */
@@ -39,7 +35,7 @@ export declare class MatMenuHarness extends ContentContainerComponentHarness<str
39
35
  * Gets a list of `MatMenuItemHarness` representing the items in the menu.
40
36
  * @param filters Optionally filters which menu items are included.
41
37
  */
42
- getItems(filters?: Omit<MenuItemHarnessFilters, 'ancestor'>): Promise<MatMenuItemHarness[]>;
38
+ getItems(filters?: Omit<ItemFilters, 'ancestor'>): Promise<Item[]>;
43
39
  /**
44
40
  * Clicks an item in the menu, and optionally continues clicking items in subsequent sub-menus.
45
41
  * @param itemFilter A filter used to represent which item in the menu should be clicked. The
@@ -48,24 +44,15 @@ export declare class MatMenuHarness extends ContentContainerComponentHarness<str
48
44
  * sub-menus. The first item in the sub-menu matching the corresponding filter in
49
45
  * `subItemFilters` will be clicked.
50
46
  */
51
- clickItem(itemFilter: Omit<MenuItemHarnessFilters, 'ancestor'>, ...subItemFilters: Omit<MenuItemHarnessFilters, 'ancestor'>[]): Promise<void>;
47
+ clickItem(itemFilter: Omit<ItemFilters, 'ancestor'>, ...subItemFilters: Omit<ItemFilters, 'ancestor'>[]): Promise<void>;
52
48
  protected getRootHarnessLoader(): Promise<HarnessLoader>;
53
49
  /** Gets the menu panel associated with this menu. */
54
50
  private _getMenuPanel;
55
51
  /** Gets the id of the menu panel associated with this menu. */
56
52
  private _getPanelId;
57
53
  }
58
- /** Harness for interacting with a standard mat-menu-item in tests. */
59
- export declare class MatMenuItemHarness extends ContentContainerComponentHarness<string> {
60
- /** The selector for the host element of a `MatMenuItem` instance. */
61
- static hostSelector: string;
62
- /**
63
- * Gets a `HarnessPredicate` that can be used to search for a `MatMenuItemHarness` that meets
64
- * certain criteria.
65
- * @param options Options for filtering which menu item instances are considered a match.
66
- * @return a `HarnessPredicate` configured with the given options.
67
- */
68
- static with(options?: MenuItemHarnessFilters): HarnessPredicate<MatMenuItemHarness>;
54
+ export declare abstract class _MatMenuItemHarnessBase<MenuType extends ComponentHarnessConstructor<Menu>, Menu extends ComponentHarness> extends ContentContainerComponentHarness<string> {
55
+ protected abstract _menuClass: MenuType;
69
56
  /** Whether the menu is disabled. */
70
57
  isDisabled(): Promise<boolean>;
71
58
  /** Gets the text of the menu item. */
@@ -81,5 +68,31 @@ export declare class MatMenuItemHarness extends ContentContainerComponentHarness
81
68
  /** Whether this item has a submenu. */
82
69
  hasSubmenu(): Promise<boolean>;
83
70
  /** Gets the submenu associated with this menu item, or null if none. */
84
- getSubmenu(): Promise<MatMenuHarness | null>;
71
+ getSubmenu(): Promise<Menu | null>;
72
+ }
73
+ /** Harness for interacting with a standard mat-menu in tests. */
74
+ export declare class MatMenuHarness extends _MatMenuHarnessBase<typeof MatMenuItemHarness, MatMenuItemHarness, MenuItemHarnessFilters> {
75
+ /** The selector for the host element of a `MatMenu` instance. */
76
+ static hostSelector: string;
77
+ protected _itemClass: typeof MatMenuItemHarness;
78
+ /**
79
+ * Gets a `HarnessPredicate` that can be used to search for a `MatMenuHarness` that meets certain
80
+ * criteria.
81
+ * @param options Options for filtering which menu instances are considered a match.
82
+ * @return a `HarnessPredicate` configured with the given options.
83
+ */
84
+ static with(options?: MenuHarnessFilters): HarnessPredicate<MatMenuHarness>;
85
+ }
86
+ /** Harness for interacting with a standard mat-menu-item in tests. */
87
+ export declare class MatMenuItemHarness extends _MatMenuItemHarnessBase<typeof MatMenuHarness, MatMenuHarness> {
88
+ /** The selector for the host element of a `MatMenuItem` instance. */
89
+ static hostSelector: string;
90
+ protected _menuClass: typeof MatMenuHarness;
91
+ /**
92
+ * Gets a `HarnessPredicate` that can be used to search for a `MatMenuItemHarness` that meets
93
+ * certain criteria.
94
+ * @param options Options for filtering which menu item instances are considered a match.
95
+ * @return a `HarnessPredicate` configured with the given options.
96
+ */
97
+ static with(options?: MenuItemHarnessFilters): HarnessPredicate<MatMenuItemHarness>;
85
98
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@angular/material",
3
- "version": "11.1.0",
3
+ "version": "11.1.1",
4
4
  "description": "Angular Material",
5
5
  "repository": {
6
6
  "type": "git",
@@ -19,7 +19,7 @@
19
19
  "homepage": "https://github.com/angular/components#readme",
20
20
  "peerDependencies": {
21
21
  "@angular/animations": "^11.0.0 || ^12.0.0-0",
22
- "@angular/cdk": "11.1.0",
22
+ "@angular/cdk": "11.1.1",
23
23
  "@angular/core": "^11.0.0 || ^12.0.0-0",
24
24
  "@angular/common": "^11.0.0 || ^12.0.0-0",
25
25
  "@angular/forms": "^11.0.0 || ^12.0.0-0"