@angular/material 20.0.4 → 20.1.0-next.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 (219) hide show
  1. package/_index.scss +0 -1
  2. package/autocomplete/_m2-autocomplete.scss +5 -15
  3. package/badge/_badge-theme.scss +2 -2
  4. package/badge/_m2-badge.scss +13 -34
  5. package/bottom-sheet/_m2-bottom-sheet.scss +6 -15
  6. package/button/_button-theme.scss +2 -2
  7. package/button/_fab-theme.scss +2 -2
  8. package/button/_icon-button-theme.scss +2 -2
  9. package/button/_m2-button.scss +83 -127
  10. package/button/_m2-fab.scss +40 -68
  11. package/button/_m2-icon-button.scss +18 -30
  12. package/button/testing/index.d.ts +0 -1
  13. package/button-toggle/_button-toggle-theme.scss +2 -1
  14. package/button-toggle/_m2-button-toggle.scss +24 -49
  15. package/card/_m2-card.scss +9 -18
  16. package/checkbox/_checkbox-theme.scss +4 -3
  17. package/checkbox/_m2-checkbox.scss +33 -62
  18. package/chips/_chips-theme.scss +7 -4
  19. package/chips/_m2-chip.scss +22 -47
  20. package/chips/index.d.ts +56 -4
  21. package/chips/testing/index.d.ts +23 -2
  22. package/core/_m2-app.scss +6 -19
  23. package/core/m2/_theming.scss +89 -79
  24. package/core/option/_m2-optgroup.scss +3 -13
  25. package/core/option/_m2-option.scss +14 -21
  26. package/core/option/_option-theme.scss +3 -3
  27. package/core/ripple/_m2-ripple.scss +5 -22
  28. package/core/selection/pseudo-checkbox/_m2-pseudo-checkbox.scss +11 -22
  29. package/core/selection/pseudo-checkbox/_pseudo-checkbox-theme.scss +3 -3
  30. package/core/style/_private.scss +6 -9
  31. package/core/style/_sass-utils.scss +0 -29
  32. package/core/tokens/_m2-utils.scss +10 -42
  33. package/{date-range-input-harness.d-CaEyN8dT.d.ts → date-range-input-harness.d-CJ4r85Uf.d.ts} +7 -4
  34. package/datepicker/_datepicker-theme.scss +16 -50
  35. package/datepicker/_m2-datepicker.scss +45 -137
  36. package/datepicker/testing/index.d.ts +3 -3
  37. package/dialog/_m2-dialog.scss +6 -25
  38. package/divider/_m2-divider.scss +3 -14
  39. package/expansion/_m2-expansion.scss +15 -25
  40. package/fesm2022/animation-DfMFjxHu.mjs.map +1 -1
  41. package/fesm2022/autocomplete/testing.mjs.map +1 -1
  42. package/fesm2022/autocomplete.mjs +1 -1
  43. package/fesm2022/autocomplete.mjs.map +1 -1
  44. package/fesm2022/badge/testing.mjs.map +1 -1
  45. package/fesm2022/badge.mjs.map +1 -1
  46. package/fesm2022/bottom-sheet/testing.mjs.map +1 -1
  47. package/fesm2022/bottom-sheet.mjs.map +1 -1
  48. package/fesm2022/button/testing.mjs +4 -7
  49. package/fesm2022/button/testing.mjs.map +1 -1
  50. package/fesm2022/button-toggle/testing.mjs.map +1 -1
  51. package/fesm2022/button-toggle.mjs.map +1 -1
  52. package/fesm2022/button.mjs +2 -2
  53. package/fesm2022/button.mjs.map +1 -1
  54. package/fesm2022/card/testing.mjs.map +1 -1
  55. package/fesm2022/card.mjs.map +1 -1
  56. package/fesm2022/checkbox/testing.mjs.map +1 -1
  57. package/fesm2022/checkbox.mjs.map +1 -1
  58. package/fesm2022/chips/testing.mjs +26 -1
  59. package/fesm2022/chips/testing.mjs.map +1 -1
  60. package/fesm2022/chips.mjs +132 -14
  61. package/fesm2022/chips.mjs.map +1 -1
  62. package/fesm2022/common-module-cKSwHniA.mjs.map +1 -1
  63. package/fesm2022/core/testing.mjs.map +1 -1
  64. package/fesm2022/core.mjs +1 -1
  65. package/fesm2022/core.mjs.map +1 -1
  66. package/fesm2022/date-formats-K6TQue-Y.mjs.map +1 -1
  67. package/fesm2022/{date-range-input-harness-Bp1T4oUe.mjs → date-range-input-harness-DEyfkeOs.mjs} +32 -4
  68. package/fesm2022/date-range-input-harness-DEyfkeOs.mjs.map +1 -0
  69. package/fesm2022/datepicker/testing.mjs +3 -3
  70. package/fesm2022/datepicker/testing.mjs.map +1 -1
  71. package/fesm2022/datepicker.mjs +1 -1
  72. package/fesm2022/datepicker.mjs.map +1 -1
  73. package/fesm2022/dialog/testing.mjs.map +1 -1
  74. package/fesm2022/dialog.mjs.map +1 -1
  75. package/fesm2022/divider/testing.mjs.map +1 -1
  76. package/fesm2022/divider.mjs.map +1 -1
  77. package/fesm2022/error-options-DCNQlTOA.mjs.map +1 -1
  78. package/fesm2022/error-state-Dtb1IHM-.mjs.map +1 -1
  79. package/fesm2022/expansion/testing.mjs.map +1 -1
  80. package/fesm2022/expansion.mjs.map +1 -1
  81. package/fesm2022/form-field/testing/control.mjs +26 -1
  82. package/fesm2022/form-field/testing/control.mjs.map +1 -1
  83. package/fesm2022/form-field/testing.mjs +4 -4
  84. package/fesm2022/form-field/testing.mjs.map +1 -1
  85. package/fesm2022/{form-field-CFbrnFED.mjs → form-field-C9DZXojn.mjs} +3 -3
  86. package/fesm2022/form-field-C9DZXojn.mjs.map +1 -0
  87. package/fesm2022/form-field.mjs +2 -2
  88. package/fesm2022/form-field.mjs.map +1 -1
  89. package/fesm2022/grid-list/testing.mjs.map +1 -1
  90. package/fesm2022/grid-list.mjs.map +1 -1
  91. package/fesm2022/icon/testing.mjs.map +1 -1
  92. package/fesm2022/icon-button-DxiIc1ex.mjs.map +1 -1
  93. package/fesm2022/icon-registry-CwOTJ7YM.mjs.map +1 -1
  94. package/fesm2022/icon.mjs.map +1 -1
  95. package/fesm2022/index-BFRo2fUq.mjs.map +1 -1
  96. package/fesm2022/index-DwiL-HGk.mjs.map +1 -1
  97. package/fesm2022/input/testing.mjs +7 -4
  98. package/fesm2022/input/testing.mjs.map +1 -1
  99. package/fesm2022/{input-harness-oQzj5EsQ.mjs → input-harness-C5Msdc4-.mjs} +6 -3
  100. package/fesm2022/input-harness-C5Msdc4-.mjs.map +1 -0
  101. package/fesm2022/input-value-accessor-D1GvPuqO.mjs.map +1 -1
  102. package/fesm2022/input.mjs +27 -3
  103. package/fesm2022/input.mjs.map +1 -1
  104. package/fesm2022/internal-form-field-D5iFxU6d.mjs.map +1 -1
  105. package/fesm2022/line-Bz5f9Cyx.mjs.map +1 -1
  106. package/fesm2022/list/testing.mjs.map +1 -1
  107. package/fesm2022/list.mjs.map +1 -1
  108. package/fesm2022/material.mjs.map +1 -1
  109. package/fesm2022/menu/testing.mjs.map +1 -1
  110. package/fesm2022/menu.mjs +11 -2
  111. package/fesm2022/menu.mjs.map +1 -1
  112. package/fesm2022/{module-B0CLRw5e.mjs → module-BDiw_nWS.mjs} +3 -3
  113. package/fesm2022/module-BDiw_nWS.mjs.map +1 -0
  114. package/fesm2022/module-CWxMD37a.mjs.map +1 -1
  115. package/fesm2022/module-Ce6F7TNm.mjs.map +1 -1
  116. package/fesm2022/{module-B62K-792.mjs → module-DzZHEh7B.mjs} +2 -2
  117. package/fesm2022/module-DzZHEh7B.mjs.map +1 -0
  118. package/fesm2022/option-BzhYL_xC.mjs.map +1 -1
  119. package/fesm2022/option-harness-BFcc-M_4.mjs.map +1 -1
  120. package/fesm2022/paginator/testing.mjs +2 -3
  121. package/fesm2022/paginator/testing.mjs.map +1 -1
  122. package/fesm2022/paginator.mjs +3 -3
  123. package/fesm2022/paginator.mjs.map +1 -1
  124. package/fesm2022/progress-bar/testing.mjs.map +1 -1
  125. package/fesm2022/progress-bar.mjs.map +1 -1
  126. package/fesm2022/progress-spinner/testing.mjs.map +1 -1
  127. package/fesm2022/progress-spinner.mjs.map +1 -1
  128. package/fesm2022/pseudo-checkbox-DDmgx3P4.mjs.map +1 -1
  129. package/fesm2022/pseudo-checkbox-module-4F8Up4PL.mjs.map +1 -1
  130. package/fesm2022/public-api-BoO5eSq-.mjs.map +1 -1
  131. package/fesm2022/radio/testing.mjs.map +1 -1
  132. package/fesm2022/radio.mjs.map +1 -1
  133. package/fesm2022/ripple-BYgV4oZC.mjs.map +1 -1
  134. package/fesm2022/ripple-loader-BnMiRtmT.mjs.map +1 -1
  135. package/fesm2022/select/testing.mjs +8 -5
  136. package/fesm2022/select/testing.mjs.map +1 -1
  137. package/fesm2022/select.mjs +3 -3
  138. package/fesm2022/select.mjs.map +1 -1
  139. package/fesm2022/sidenav/testing.mjs.map +1 -1
  140. package/fesm2022/sidenav.mjs.map +1 -1
  141. package/fesm2022/slide-toggle/testing.mjs.map +1 -1
  142. package/fesm2022/slide-toggle.mjs.map +1 -1
  143. package/fesm2022/slider/testing.mjs.map +1 -1
  144. package/fesm2022/slider.mjs.map +1 -1
  145. package/fesm2022/snack-bar/testing.mjs.map +1 -1
  146. package/fesm2022/snack-bar.mjs.map +1 -1
  147. package/fesm2022/sort/testing.mjs.map +1 -1
  148. package/fesm2022/sort.mjs.map +1 -1
  149. package/fesm2022/stepper/testing.mjs.map +1 -1
  150. package/fesm2022/stepper.mjs +2 -2
  151. package/fesm2022/stepper.mjs.map +1 -1
  152. package/fesm2022/structural-styles-CObeNzjn.mjs.map +1 -1
  153. package/fesm2022/table/testing.mjs.map +1 -1
  154. package/fesm2022/table.mjs.map +1 -1
  155. package/fesm2022/tabs/testing.mjs.map +1 -1
  156. package/fesm2022/tabs.mjs.map +1 -1
  157. package/fesm2022/timepicker/testing.mjs.map +1 -1
  158. package/fesm2022/timepicker.mjs +1 -1
  159. package/fesm2022/timepicker.mjs.map +1 -1
  160. package/fesm2022/toolbar/testing.mjs.map +1 -1
  161. package/fesm2022/toolbar.mjs.map +1 -1
  162. package/fesm2022/tooltip/testing.mjs.map +1 -1
  163. package/fesm2022/tooltip.mjs.map +1 -1
  164. package/fesm2022/tree/testing.mjs.map +1 -1
  165. package/fesm2022/tree.mjs.map +1 -1
  166. package/form-field/_form-field-theme.scss +2 -2
  167. package/form-field/_m2-form-field.scss +59 -93
  168. package/form-field/testing/control/index.d.ts +8 -5
  169. package/form-field/testing/index.d.ts +5 -5
  170. package/form-field-control-harness.d-BLvFBy6v.d.ts +18 -0
  171. package/grid-list/_m2-grid-list.scss +0 -13
  172. package/icon/_m2-icon.scss +0 -13
  173. package/input/index.d.ts +11 -0
  174. package/input/testing/index.d.ts +5 -4
  175. package/{input-harness.d-8fkAAbu2.d.ts → input-harness.d-DVI6ttzl.d.ts} +4 -4
  176. package/list/_list-theme.scss +10 -5
  177. package/list/_m2-list.scss +19 -37
  178. package/menu/_m2-menu.scss +12 -23
  179. package/menu/index.d.ts +2 -0
  180. package/package.json +6 -6
  181. package/paginator/_m2-paginator.scss +7 -18
  182. package/paginator/testing/index.d.ts +2 -3
  183. package/prebuilt-themes/deeppurple-amber.css +1 -1
  184. package/prebuilt-themes/indigo-pink.css +1 -1
  185. package/prebuilt-themes/pink-bluegrey.css +1 -1
  186. package/prebuilt-themes/purple-green.css +1 -1
  187. package/progress-bar/_m2-progress-bar.scss +11 -20
  188. package/progress-bar/_progress-bar-theme.scss +2 -2
  189. package/progress-spinner/_m2-progress-spinner.scss +7 -15
  190. package/progress-spinner/_progress-spinner-theme.scss +2 -2
  191. package/radio/_m2-radio.scss +21 -32
  192. package/radio/_radio-theme.scss +6 -3
  193. package/schematics/ng-add/index.js +2 -2
  194. package/select/_m2-select.scss +14 -36
  195. package/select/_select-theme.scss +6 -3
  196. package/select/testing/index.d.ts +5 -6
  197. package/sidenav/_m2-sidenav.scss +10 -20
  198. package/slide-toggle/_m2-slide-toggle.scss +13 -20
  199. package/slide-toggle/_slide-toggle-theme.scss +3 -2
  200. package/slider/_m2-slider.scss +27 -39
  201. package/slider/_slider-theme.scss +2 -2
  202. package/snack-bar/_m2-snack-bar.scss +5 -22
  203. package/sort/_m2-sort.scss +3 -33
  204. package/stepper/_m2-stepper.scss +23 -34
  205. package/stepper/_m3-stepper.scss +2 -2
  206. package/stepper/_stepper-theme.scss +2 -2
  207. package/table/_m2-table.scss +6 -17
  208. package/tabs/_m2-tabs.scss +19 -36
  209. package/tabs/_tabs-theme.scss +4 -4
  210. package/timepicker/_m2-timepicker.scss +5 -15
  211. package/toolbar/_m2-toolbar.scss +4 -15
  212. package/tooltip/_m2-tooltip.scss +4 -14
  213. package/tree/_m2-tree.scss +4 -16
  214. package/core/tokens/_m2-tokens.scss +0 -131
  215. package/fesm2022/date-range-input-harness-Bp1T4oUe.mjs.map +0 -1
  216. package/fesm2022/form-field-CFbrnFED.mjs.map +0 -1
  217. package/fesm2022/input-harness-oQzj5EsQ.mjs.map +0 -1
  218. package/fesm2022/module-B0CLRw5e.mjs.map +0 -1
  219. package/fesm2022/module-B62K-792.mjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"form-field-CFbrnFED.mjs","sources":["../../../../../k8-fastbuild-ST-46c76129e412/bin/src/material/form-field/directives/label.ts","../../../../../k8-fastbuild-ST-46c76129e412/bin/src/material/form-field/directives/error.ts","../../../../../k8-fastbuild-ST-46c76129e412/bin/src/material/form-field/directives/hint.ts","../../../../../k8-fastbuild-ST-46c76129e412/bin/src/material/form-field/directives/prefix.ts","../../../../../k8-fastbuild-ST-46c76129e412/bin/src/material/form-field/directives/suffix.ts","../../../../../k8-fastbuild-ST-46c76129e412/bin/src/material/form-field/directives/floating-label.ts","../../../../../k8-fastbuild-ST-46c76129e412/bin/src/material/form-field/directives/line-ripple.ts","../../../../../k8-fastbuild-ST-46c76129e412/bin/src/material/form-field/directives/notched-outline.ts","../../../../../k8-fastbuild-ST-46c76129e412/bin/src/material/form-field/directives/notched-outline.html","../../../../../k8-fastbuild-ST-46c76129e412/bin/src/material/form-field/form-field-control.ts","../../../../../k8-fastbuild-ST-46c76129e412/bin/src/material/form-field/form-field-errors.ts","../../../../../k8-fastbuild-ST-46c76129e412/bin/src/material/form-field/form-field.ts","../../../../../k8-fastbuild-ST-46c76129e412/bin/src/material/form-field/form-field.html"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {Directive} from '@angular/core';\n\n/** The floating label for a `mat-form-field`. */\n@Directive({\n selector: 'mat-label',\n})\nexport class MatLabel {}\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.dev/license\n */\n\nimport {Directive, InjectionToken, Input, inject} from '@angular/core';\nimport {_IdGenerator} from '@angular/cdk/a11y';\n\n/**\n * Injection token that can be used to reference instances of `MatError`. It serves as\n * alternative token to the actual `MatError` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nexport const MAT_ERROR = new InjectionToken<MatError>('MatError');\n\n/** Single error message to be shown underneath the form-field. */\n@Directive({\n selector: 'mat-error, [matError]',\n host: {\n 'class': 'mat-mdc-form-field-error mat-mdc-form-field-bottom-align',\n '[id]': 'id',\n },\n providers: [{provide: MAT_ERROR, useExisting: MatError}],\n})\nexport class MatError {\n @Input() id: string = inject(_IdGenerator).getId('mat-mdc-error-');\n\n constructor(...args: unknown[]);\n\n constructor() {}\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.dev/license\n */\n\nimport {Directive, inject, Input} from '@angular/core';\nimport {_IdGenerator} from '@angular/cdk/a11y';\n\n/** Hint text to be shown underneath the form field control. */\n@Directive({\n selector: 'mat-hint',\n host: {\n 'class': 'mat-mdc-form-field-hint mat-mdc-form-field-bottom-align',\n '[class.mat-mdc-form-field-hint-end]': 'align === \"end\"',\n '[id]': 'id',\n // Remove align attribute to prevent it from interfering with layout.\n '[attr.align]': 'null',\n },\n})\nexport class MatHint {\n /** Whether to align the hint label at the start or end of the line. */\n @Input() align: 'start' | 'end' = 'start';\n\n /** Unique ID for the hint. Used for the aria-describedby on the form field control. */\n @Input() id: string = inject(_IdGenerator).getId('mat-mdc-hint-');\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.dev/license\n */\n\nimport {Directive, InjectionToken, Input} from '@angular/core';\n\n/**\n * Injection token that can be used to reference instances of `MatPrefix`. It serves as\n * alternative token to the actual `MatPrefix` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nexport const MAT_PREFIX = new InjectionToken<MatPrefix>('MatPrefix');\n\n/** Prefix to be placed in front of the form field. */\n@Directive({\n selector: '[matPrefix], [matIconPrefix], [matTextPrefix]',\n providers: [{provide: MAT_PREFIX, useExisting: MatPrefix}],\n})\nexport class MatPrefix {\n @Input('matTextPrefix')\n set _isTextSelector(value: '') {\n this._isText = true;\n }\n\n _isText = false;\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.dev/license\n */\n\nimport {Directive, InjectionToken, Input} from '@angular/core';\n\n/**\n * Injection token that can be used to reference instances of `MatSuffix`. It serves as\n * alternative token to the actual `MatSuffix` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nexport const MAT_SUFFIX = new InjectionToken<MatSuffix>('MatSuffix');\n\n/** Suffix to be placed at the end of the form field. */\n@Directive({\n selector: '[matSuffix], [matIconSuffix], [matTextSuffix]',\n providers: [{provide: MAT_SUFFIX, useExisting: MatSuffix}],\n})\nexport class MatSuffix {\n @Input('matTextSuffix')\n set _isTextSelector(value: '') {\n this._isText = true;\n }\n\n _isText = false;\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.dev/license\n */\n\nimport {\n Directive,\n ElementRef,\n inject,\n Input,\n NgZone,\n OnDestroy,\n InjectionToken,\n} from '@angular/core';\nimport {SharedResizeObserver} from '@angular/cdk/observers/private';\nimport {Subscription} from 'rxjs';\n\n/** An interface that the parent form-field should implement to receive resize events. */\nexport interface FloatingLabelParent {\n _handleLabelResized(): void;\n}\n\n/** An injion token for the parent form-field. */\nexport const FLOATING_LABEL_PARENT = new InjectionToken<FloatingLabelParent>('FloatingLabelParent');\n\n/**\n * Internal directive that maintains a MDC floating label. This directive does not\n * use the `MDCFloatingLabelFoundation` class, as it is not worth the size cost of\n * including it just to measure the label width and toggle some classes.\n *\n * The use of a directive allows us to conditionally render a floating label in the\n * template without having to manually manage instantiation and destruction of the\n * floating label component based on.\n *\n * The component is responsible for setting up the floating label styles, measuring label\n * width for the outline notch, and providing inputs that can be used to toggle the\n * label's floating or required state.\n */\n@Directive({\n selector: 'label[matFormFieldFloatingLabel]',\n host: {\n 'class': 'mdc-floating-label mat-mdc-floating-label',\n '[class.mdc-floating-label--float-above]': 'floating',\n },\n})\nexport class MatFormFieldFloatingLabel implements OnDestroy {\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /** Whether the label is floating. */\n @Input()\n get floating() {\n return this._floating;\n }\n set floating(value: boolean) {\n this._floating = value;\n if (this.monitorResize) {\n this._handleResize();\n }\n }\n private _floating = false;\n\n /** Whether to monitor for resize events on the floating label. */\n @Input()\n get monitorResize() {\n return this._monitorResize;\n }\n set monitorResize(value: boolean) {\n this._monitorResize = value;\n if (this._monitorResize) {\n this._subscribeToResize();\n } else {\n this._resizeSubscription.unsubscribe();\n }\n }\n private _monitorResize = false;\n\n /** The shared ResizeObserver. */\n private _resizeObserver = inject(SharedResizeObserver);\n\n /** The Angular zone. */\n private _ngZone = inject(NgZone);\n\n /** The parent form-field. */\n private _parent = inject(FLOATING_LABEL_PARENT);\n\n /** The current resize event subscription. */\n private _resizeSubscription = new Subscription();\n\n constructor(...args: unknown[]);\n constructor() {}\n\n ngOnDestroy() {\n this._resizeSubscription.unsubscribe();\n }\n\n /** Gets the width of the label. Used for the outline notch. */\n getWidth(): number {\n return estimateScrollWidth(this._elementRef.nativeElement);\n }\n\n /** Gets the HTML element for the floating label. */\n get element(): HTMLElement {\n return this._elementRef.nativeElement;\n }\n\n /** Handles resize events from the ResizeObserver. */\n private _handleResize() {\n // In the case where the label grows in size, the following sequence of events occurs:\n // 1. The label grows by 1px triggering the ResizeObserver\n // 2. The notch is expanded to accommodate the entire label\n // 3. The label expands to its full width, triggering the ResizeObserver again\n //\n // This is expected, but If we allow this to all happen within the same macro task it causes an\n // error: `ResizeObserver loop limit exceeded`. Therefore we push the notch resize out until\n // the next macro task.\n setTimeout(() => this._parent._handleLabelResized());\n }\n\n /** Subscribes to resize events. */\n private _subscribeToResize() {\n this._resizeSubscription.unsubscribe();\n this._ngZone.runOutsideAngular(() => {\n this._resizeSubscription = this._resizeObserver\n .observe(this._elementRef.nativeElement, {box: 'border-box'})\n .subscribe(() => this._handleResize());\n });\n }\n}\n\n/**\n * Estimates the scroll width of an element.\n * via https://github.com/material-components/material-components-web/blob/c0a11ef0d000a098fd0c372be8f12d6a99302855/packages/mdc-dom/ponyfill.ts\n */\nfunction estimateScrollWidth(element: HTMLElement): number {\n // Check the offsetParent. If the element inherits display: none from any\n // parent, the offsetParent property will be null (see\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetParent).\n // This check ensures we only clone the node when necessary.\n const htmlEl = element as HTMLElement;\n if (htmlEl.offsetParent !== null) {\n return htmlEl.scrollWidth;\n }\n\n const clone = htmlEl.cloneNode(true) as HTMLElement;\n clone.style.setProperty('position', 'absolute');\n clone.style.setProperty('transform', 'translate(-9999px, -9999px)');\n document.documentElement.appendChild(clone);\n const scrollWidth = clone.scrollWidth;\n clone.remove();\n return scrollWidth;\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.dev/license\n */\n\nimport {Directive, ElementRef, NgZone, OnDestroy, Renderer2, inject} from '@angular/core';\n\n/** Class added when the line ripple is active. */\nconst ACTIVATE_CLASS = 'mdc-line-ripple--active';\n\n/** Class added when the line ripple is being deactivated. */\nconst DEACTIVATING_CLASS = 'mdc-line-ripple--deactivating';\n\n/**\n * Internal directive that creates an instance of the MDC line-ripple component. Using a\n * directive allows us to conditionally render a line-ripple in the template without having\n * to manually create and destroy the `MDCLineRipple` component whenever the condition changes.\n *\n * The directive sets up the styles for the line-ripple and provides an API for activating\n * and deactivating the line-ripple.\n */\n@Directive({\n selector: 'div[matFormFieldLineRipple]',\n host: {\n 'class': 'mdc-line-ripple',\n },\n})\nexport class MatFormFieldLineRipple implements OnDestroy {\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _cleanupTransitionEnd: () => void;\n\n constructor(...args: unknown[]);\n\n constructor() {\n const ngZone = inject(NgZone);\n const renderer = inject(Renderer2);\n\n ngZone.runOutsideAngular(() => {\n this._cleanupTransitionEnd = renderer.listen(\n this._elementRef.nativeElement,\n 'transitionend',\n this._handleTransitionEnd,\n );\n });\n }\n\n activate() {\n const classList = this._elementRef.nativeElement.classList;\n classList.remove(DEACTIVATING_CLASS);\n classList.add(ACTIVATE_CLASS);\n }\n\n deactivate() {\n this._elementRef.nativeElement.classList.add(DEACTIVATING_CLASS);\n }\n\n private _handleTransitionEnd = (event: TransitionEvent) => {\n const classList = this._elementRef.nativeElement.classList;\n const isDeactivating = classList.contains(DEACTIVATING_CLASS);\n\n if (event.propertyName === 'opacity' && isDeactivating) {\n classList.remove(ACTIVATE_CLASS, DEACTIVATING_CLASS);\n }\n };\n\n ngOnDestroy() {\n this._cleanupTransitionEnd();\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.dev/license\n */\n\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n NgZone,\n ViewChild,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\n\n/**\n * Internal component that creates an instance of the MDC notched-outline component.\n *\n * The component sets up the HTML structure and styles for the notched-outline. It provides\n * inputs to toggle the notch state and width.\n */\n@Component({\n selector: 'div[matFormFieldNotchedOutline]',\n templateUrl: './notched-outline.html',\n host: {\n 'class': 'mdc-notched-outline',\n // Besides updating the notch state through the MDC component, we toggle this class through\n // a host binding in order to ensure that the notched-outline renders correctly on the server.\n '[class.mdc-notched-outline--notched]': 'open',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatFormFieldNotchedOutline implements AfterViewInit {\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _ngZone = inject(NgZone);\n\n /** Whether the notch should be opened. */\n @Input('matFormFieldNotchedOutlineOpen') open: boolean = false;\n\n @ViewChild('notch') _notch: ElementRef<HTMLElement>;\n\n ngAfterViewInit(): void {\n const element = this._elementRef.nativeElement;\n const label = element.querySelector<HTMLElement>('.mdc-floating-label');\n\n if (label) {\n element.classList.add('mdc-notched-outline--upgraded');\n\n if (typeof requestAnimationFrame === 'function') {\n label.style.transitionDuration = '0s';\n this._ngZone.runOutsideAngular(() => {\n requestAnimationFrame(() => (label.style.transitionDuration = ''));\n });\n }\n } else {\n element.classList.add('mdc-notched-outline--no-label');\n }\n }\n\n _setNotchWidth(labelWidth: number) {\n const notch = this._notch.nativeElement;\n\n if (!this.open || !labelWidth) {\n notch.style.width = '';\n } else {\n const NOTCH_ELEMENT_PADDING = 8;\n const NOTCH_ELEMENT_BORDER = 1;\n notch.style.width = `calc(${labelWidth}px * var(--mat-mdc-form-field-floating-label-scale, 0.75) + ${\n NOTCH_ELEMENT_PADDING + NOTCH_ELEMENT_BORDER\n }px)`;\n }\n }\n\n _setMaxWidth(prefixAndSuffixWidth: number) {\n // Set this only on the notch to avoid style recalculations in other parts of the form field.\n this._notch.nativeElement.style.setProperty(\n '--mat-form-field-notch-max-width',\n `calc(100% - ${prefixAndSuffixWidth}px)`,\n );\n }\n}\n","<div class=\"mat-mdc-notch-piece mdc-notched-outline__leading\"></div>\n<div class=\"mat-mdc-notch-piece mdc-notched-outline__notch\" #notch>\n <ng-content></ng-content>\n</div>\n<div class=\"mat-mdc-notch-piece mdc-notched-outline__trailing\"></div>\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.dev/license\n */\n\nimport {Observable} from 'rxjs';\nimport {AbstractControlDirective, NgControl} from '@angular/forms';\nimport {Directive} from '@angular/core';\n\n/** An interface which allows a control to work inside of a `MatFormField`. */\n@Directive()\nexport abstract class MatFormFieldControl<T> {\n /** The value of the control. */\n value: T | null;\n\n /**\n * Stream that emits whenever the state of the control changes such that the parent `MatFormField`\n * needs to run change detection.\n */\n readonly stateChanges: Observable<void>;\n\n /** The element ID for this control. */\n readonly id: string;\n\n /** The placeholder for this control. */\n readonly placeholder: string;\n\n /** Gets the AbstractControlDirective for this control. */\n readonly ngControl: NgControl | AbstractControlDirective | null;\n\n /** Whether the control is focused. */\n readonly focused: boolean;\n\n /** Whether the control is empty. */\n readonly empty: boolean;\n\n /** Whether the `MatFormField` label should try to float. */\n readonly shouldLabelFloat: boolean;\n\n /** Whether the control is required. */\n readonly required: boolean;\n\n /** Whether the control is disabled. */\n readonly disabled: boolean;\n\n /** Whether the control is in an error state. */\n readonly errorState: boolean;\n\n /**\n * An optional name for the control type that can be used to distinguish `mat-form-field` elements\n * based on their control type. The form field will add a class,\n * `mat-form-field-type-{{controlType}}` to its root element.\n */\n readonly controlType?: string;\n\n /**\n * Whether the input is currently in an autofilled state. If property is not present on the\n * control it is assumed to be false.\n */\n readonly autofilled?: boolean;\n\n /**\n * Value of `aria-describedby` that should be merged with the described-by ids\n * which are set by the form-field.\n */\n readonly userAriaDescribedBy?: string;\n\n /**\n * Whether to automatically assign the ID of the form field as the `for` attribute\n * on the `<label>` inside the form field. Set this to true to prevent the form\n * field from associating the label with non-native elements.\n */\n readonly disableAutomaticLabeling?: boolean;\n\n /** Gets the list of element IDs that currently describe this control. */\n readonly describedByIds?: string[];\n\n /** Sets the list of element IDs that currently describe this control. */\n abstract setDescribedByIds(ids: string[]): void;\n\n /** Handles a click on the control's container. */\n abstract onContainerClick(event: MouseEvent): void;\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.dev/license\n */\n\n/** @docs-private */\nexport function getMatFormFieldPlaceholderConflictError(): Error {\n return Error('Placeholder attribute and child element were both specified.');\n}\n\n/** @docs-private */\nexport function getMatFormFieldDuplicatedHintError(align: string): Error {\n return Error(`A hint was already declared for 'align=\"${align}\"'.`);\n}\n\n/** @docs-private */\nexport function getMatFormFieldMissingControlError(): Error {\n return Error('mat-form-field must contain a MatFormFieldControl.');\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.dev/license\n */\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {Platform} from '@angular/cdk/platform';\nimport {NgTemplateOutlet} from '@angular/common';\nimport {\n AfterContentChecked,\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n InjectionToken,\n Input,\n NgZone,\n OnDestroy,\n QueryList,\n ViewChild,\n ViewEncapsulation,\n afterRenderEffect,\n computed,\n contentChild,\n inject,\n signal,\n viewChild,\n} from '@angular/core';\nimport {AbstractControlDirective, ValidatorFn} from '@angular/forms';\nimport {Subject, Subscription, merge} from 'rxjs';\nimport {filter, map, pairwise, startWith, takeUntil} from 'rxjs/operators';\nimport {ThemePalette, _animationsDisabled} from '../core';\nimport {MAT_ERROR, MatError} from './directives/error';\nimport {\n FLOATING_LABEL_PARENT,\n FloatingLabelParent,\n MatFormFieldFloatingLabel,\n} from './directives/floating-label';\nimport {MatHint} from './directives/hint';\nimport {MatLabel} from './directives/label';\nimport {MatFormFieldLineRipple} from './directives/line-ripple';\nimport {MatFormFieldNotchedOutline} from './directives/notched-outline';\nimport {MAT_PREFIX, MatPrefix} from './directives/prefix';\nimport {MAT_SUFFIX, MatSuffix} from './directives/suffix';\nimport {MatFormFieldControl as _MatFormFieldControl} from './form-field-control';\nimport {\n getMatFormFieldDuplicatedHintError,\n getMatFormFieldMissingControlError,\n} from './form-field-errors';\n\n/** Type for the available floatLabel values. */\nexport type FloatLabelType = 'always' | 'auto';\n\n/** Possible appearance styles for the form field. */\nexport type MatFormFieldAppearance = 'fill' | 'outline';\n\n/** Behaviors for how the subscript height is set. */\nexport type SubscriptSizing = 'fixed' | 'dynamic';\n\n/**\n * Represents the default options for the form field that can be configured\n * using the `MAT_FORM_FIELD_DEFAULT_OPTIONS` injection token.\n */\nexport interface MatFormFieldDefaultOptions {\n /** Default form field appearance style. */\n appearance?: MatFormFieldAppearance;\n /**\n * Default theme color of the form field. This API is supported in M2 themes only, it has no\n * effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/form-field/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n color?: ThemePalette;\n /** Whether the required marker should be hidden by default. */\n hideRequiredMarker?: boolean;\n /**\n * Whether the label for form fields should by default float `always`,\n * `never`, or `auto` (only when necessary).\n */\n floatLabel?: FloatLabelType;\n /** Whether the form field should reserve space for one line by default. */\n subscriptSizing?: SubscriptSizing;\n}\n\n/**\n * Injection token that can be used to inject an instances of `MatFormField`. It serves\n * as alternative token to the actual `MatFormField` class which would cause unnecessary\n * retention of the `MatFormField` class and its component metadata.\n */\nexport const MAT_FORM_FIELD = new InjectionToken<MatFormField>('MatFormField');\n\n/**\n * Injection token that can be used to configure the\n * default options for all form field within an app.\n */\nexport const MAT_FORM_FIELD_DEFAULT_OPTIONS = new InjectionToken<MatFormFieldDefaultOptions>(\n 'MAT_FORM_FIELD_DEFAULT_OPTIONS',\n);\n\n/** Styles that are to be applied to the label elements in the outlined appearance. */\ntype OutlinedLabelStyles =\n | [floatingLabelTransform: string, notchedOutlineWidth: number | null]\n | null;\n\n/** Default appearance used by the form field. */\nconst DEFAULT_APPEARANCE: MatFormFieldAppearance = 'fill';\n\n/**\n * Whether the label for form fields should by default float `always`,\n * `never`, or `auto`.\n */\nconst DEFAULT_FLOAT_LABEL: FloatLabelType = 'auto';\n\n/** Default way that the subscript element height is set. */\nconst DEFAULT_SUBSCRIPT_SIZING: SubscriptSizing = 'fixed';\n\n/**\n * Default transform for docked floating labels in a MDC text-field. This value has been\n * extracted from the MDC text-field styles because we programmatically modify the docked\n * label transform, but do not want to accidentally discard the default label transform.\n */\nconst FLOATING_LABEL_DEFAULT_DOCKED_TRANSFORM = `translateY(-50%)`;\n\n/**\n * Despite `MatFormFieldControl` being an abstract class, most of our usages enforce its shape\n * using `implements` instead of `extends`. This appears to be problematic when Closure compiler\n * is configured to use type information to rename properties, because it can't figure out which\n * class properties are coming from. This interface seems to work around the issue while preserving\n * our type safety (alternative being using `any` everywhere).\n * @docs-private\n */\ninterface MatFormFieldControl<T> extends _MatFormFieldControl<T> {}\n\n/** Container for form controls that applies Material Design styling and behavior. */\n@Component({\n selector: 'mat-form-field',\n exportAs: 'matFormField',\n templateUrl: './form-field.html',\n styleUrl: './form-field.css',\n host: {\n 'class': 'mat-mdc-form-field',\n '[class.mat-mdc-form-field-label-always-float]': '_shouldAlwaysFloat()',\n '[class.mat-mdc-form-field-has-icon-prefix]': '_hasIconPrefix',\n '[class.mat-mdc-form-field-has-icon-suffix]': '_hasIconSuffix',\n // Note that these classes reuse the same names as the non-MDC version, because they can be\n // considered a public API since custom form controls may use them to style themselves.\n // See https://github.com/angular/components/pull/20502#discussion_r486124901.\n '[class.mat-form-field-invalid]': '_control.errorState',\n '[class.mat-form-field-disabled]': '_control.disabled',\n '[class.mat-form-field-autofilled]': '_control.autofilled',\n '[class.mat-form-field-appearance-fill]': 'appearance == \"fill\"',\n '[class.mat-form-field-appearance-outline]': 'appearance == \"outline\"',\n '[class.mat-form-field-hide-placeholder]': '_hasFloatingLabel() && !_shouldLabelFloat()',\n '[class.mat-focused]': '_control.focused',\n '[class.mat-primary]': 'color !== \"accent\" && color !== \"warn\"',\n '[class.mat-accent]': 'color === \"accent\"',\n '[class.mat-warn]': 'color === \"warn\"',\n '[class.ng-untouched]': '_shouldForward(\"untouched\")',\n '[class.ng-touched]': '_shouldForward(\"touched\")',\n '[class.ng-pristine]': '_shouldForward(\"pristine\")',\n '[class.ng-dirty]': '_shouldForward(\"dirty\")',\n '[class.ng-valid]': '_shouldForward(\"valid\")',\n '[class.ng-invalid]': '_shouldForward(\"invalid\")',\n '[class.ng-pending]': '_shouldForward(\"pending\")',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {provide: MAT_FORM_FIELD, useExisting: MatFormField},\n {provide: FLOATING_LABEL_PARENT, useExisting: MatFormField},\n ],\n imports: [\n MatFormFieldFloatingLabel,\n MatFormFieldNotchedOutline,\n NgTemplateOutlet,\n MatFormFieldLineRipple,\n MatHint,\n ],\n})\nexport class MatFormField\n implements FloatingLabelParent, AfterContentInit, AfterContentChecked, AfterViewInit, OnDestroy\n{\n _elementRef = inject(ElementRef);\n private _changeDetectorRef = inject(ChangeDetectorRef);\n private _dir = inject(Directionality);\n private _platform = inject(Platform);\n private _idGenerator = inject(_IdGenerator);\n private _ngZone = inject(NgZone);\n private _defaults = inject<MatFormFieldDefaultOptions>(MAT_FORM_FIELD_DEFAULT_OPTIONS, {\n optional: true,\n });\n\n @ViewChild('textField') _textField: ElementRef<HTMLElement>;\n @ViewChild('iconPrefixContainer') _iconPrefixContainer: ElementRef<HTMLElement>;\n @ViewChild('textPrefixContainer') _textPrefixContainer: ElementRef<HTMLElement>;\n @ViewChild('iconSuffixContainer') _iconSuffixContainer: ElementRef<HTMLElement>;\n @ViewChild('textSuffixContainer') _textSuffixContainer: ElementRef<HTMLElement>;\n @ViewChild(MatFormFieldFloatingLabel) _floatingLabel: MatFormFieldFloatingLabel | undefined;\n @ViewChild(MatFormFieldNotchedOutline) _notchedOutline: MatFormFieldNotchedOutline | undefined;\n @ViewChild(MatFormFieldLineRipple) _lineRipple: MatFormFieldLineRipple | undefined;\n\n private _iconPrefixContainerSignal = viewChild<ElementRef<HTMLElement>>('iconPrefixContainer');\n private _textPrefixContainerSignal = viewChild<ElementRef<HTMLElement>>('textPrefixContainer');\n private _iconSuffixContainerSignal = viewChild<ElementRef<HTMLElement>>('iconSuffixContainer');\n private _textSuffixContainerSignal = viewChild<ElementRef<HTMLElement>>('textSuffixContainer');\n private _prefixSuffixContainers = computed(() => {\n return [\n this._iconPrefixContainerSignal(),\n this._textPrefixContainerSignal(),\n this._iconSuffixContainerSignal(),\n this._textSuffixContainerSignal(),\n ]\n .map(container => container?.nativeElement)\n .filter(e => e !== undefined);\n });\n\n @ContentChild(_MatFormFieldControl) _formFieldControl: MatFormFieldControl<any>;\n @ContentChildren(MAT_PREFIX, {descendants: true}) _prefixChildren: QueryList<MatPrefix>;\n @ContentChildren(MAT_SUFFIX, {descendants: true}) _suffixChildren: QueryList<MatSuffix>;\n @ContentChildren(MAT_ERROR, {descendants: true}) _errorChildren: QueryList<MatError>;\n @ContentChildren(MatHint, {descendants: true}) _hintChildren: QueryList<MatHint>;\n\n private readonly _labelChild = contentChild(MatLabel);\n\n /** Whether the required marker should be hidden. */\n @Input()\n get hideRequiredMarker(): boolean {\n return this._hideRequiredMarker;\n }\n set hideRequiredMarker(value: BooleanInput) {\n this._hideRequiredMarker = coerceBooleanProperty(value);\n }\n private _hideRequiredMarker = false;\n\n /**\n * Theme color of the form field. This API is supported in M2 themes only, it\n * has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/form-field/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n @Input() color: ThemePalette = 'primary';\n\n /** Whether the label should always float or float as the user types. */\n @Input()\n get floatLabel(): FloatLabelType {\n return this._floatLabel || this._defaults?.floatLabel || DEFAULT_FLOAT_LABEL;\n }\n set floatLabel(value: FloatLabelType) {\n if (value !== this._floatLabel) {\n this._floatLabel = value;\n // For backwards compatibility. Custom form field controls or directives might set\n // the \"floatLabel\" input and expect the form field view to be updated automatically.\n // e.g. autocomplete trigger. Ideally we'd get rid of this and the consumers would just\n // emit the \"stateChanges\" observable. TODO(devversion): consider removing.\n this._changeDetectorRef.markForCheck();\n }\n }\n private _floatLabel: FloatLabelType;\n\n /** The form field appearance style. */\n @Input()\n get appearance(): MatFormFieldAppearance {\n return this._appearanceSignal();\n }\n set appearance(value: MatFormFieldAppearance) {\n const newAppearance = value || this._defaults?.appearance || DEFAULT_APPEARANCE;\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (newAppearance !== 'fill' && newAppearance !== 'outline') {\n throw new Error(\n `MatFormField: Invalid appearance \"${newAppearance}\", valid values are \"fill\" or \"outline\".`,\n );\n }\n }\n this._appearanceSignal.set(newAppearance);\n }\n private _appearanceSignal = signal(DEFAULT_APPEARANCE);\n\n /**\n * Whether the form field should reserve space for one line of hint/error text (default)\n * or to have the spacing grow from 0px as needed based on the size of the hint/error content.\n * Note that when using dynamic sizing, layout shifts will occur when hint/error text changes.\n */\n @Input()\n get subscriptSizing(): SubscriptSizing {\n return this._subscriptSizing || this._defaults?.subscriptSizing || DEFAULT_SUBSCRIPT_SIZING;\n }\n set subscriptSizing(value: SubscriptSizing) {\n this._subscriptSizing = value || this._defaults?.subscriptSizing || DEFAULT_SUBSCRIPT_SIZING;\n }\n private _subscriptSizing: SubscriptSizing | null = null;\n\n /** Text for the form field hint. */\n @Input()\n get hintLabel(): string {\n return this._hintLabel;\n }\n set hintLabel(value: string) {\n this._hintLabel = value;\n this._processHints();\n }\n private _hintLabel = '';\n\n _hasIconPrefix = false;\n _hasTextPrefix = false;\n _hasIconSuffix = false;\n _hasTextSuffix = false;\n\n // Unique id for the internal form field label.\n readonly _labelId = this._idGenerator.getId('mat-mdc-form-field-label-');\n\n // Unique id for the hint label.\n readonly _hintLabelId = this._idGenerator.getId('mat-mdc-hint-');\n\n // Ids obtained from the error and hint fields\n private _describedByIds: string[] | undefined;\n\n /** Gets the current form field control */\n get _control(): MatFormFieldControl<any> {\n return this._explicitFormFieldControl || this._formFieldControl;\n }\n set _control(value) {\n this._explicitFormFieldControl = value;\n }\n\n private _destroyed = new Subject<void>();\n private _isFocused: boolean | null = null;\n private _explicitFormFieldControl: MatFormFieldControl<any>;\n private _previousControl: MatFormFieldControl<unknown> | null = null;\n private _previousControlValidatorFn: ValidatorFn | null = null;\n private _stateChanges: Subscription | undefined;\n private _valueChanges: Subscription | undefined;\n private _describedByChanges: Subscription | undefined;\n protected readonly _animationsDisabled = _animationsDisabled();\n\n constructor(...args: unknown[]);\n\n constructor() {\n const defaults = this._defaults;\n\n if (defaults) {\n if (defaults.appearance) {\n this.appearance = defaults.appearance;\n }\n this._hideRequiredMarker = Boolean(defaults?.hideRequiredMarker);\n if (defaults.color) {\n this.color = defaults.color;\n }\n }\n\n this._syncOutlineLabelOffset();\n }\n\n ngAfterViewInit() {\n // Initial focus state sync. This happens rarely, but we want to account for\n // it in case the form field control has \"focused\" set to true on init.\n this._updateFocusState();\n\n if (!this._animationsDisabled) {\n this._ngZone.runOutsideAngular(() => {\n // Enable animations after a certain amount of time so that they don't run on init.\n setTimeout(() => {\n this._elementRef.nativeElement.classList.add('mat-form-field-animations-enabled');\n }, 300);\n });\n }\n\n // Because the above changes a value used in the template after it was checked, we need\n // to trigger CD or the change might not be reflected if there is no other CD scheduled.\n this._changeDetectorRef.detectChanges();\n }\n\n ngAfterContentInit() {\n this._assertFormFieldControl();\n this._initializeSubscript();\n this._initializePrefixAndSuffix();\n }\n\n ngAfterContentChecked() {\n this._assertFormFieldControl();\n\n // if form field was being used with an input in first place and then replaced by other\n // component such as select.\n if (this._control !== this._previousControl) {\n this._initializeControl(this._previousControl);\n\n // keep a reference for last validator we had.\n if (this._control.ngControl && this._control.ngControl.control) {\n this._previousControlValidatorFn = this._control.ngControl.control.validator;\n }\n\n this._previousControl = this._control;\n }\n\n // make sure the the control has been initialized.\n if (this._control.ngControl && this._control.ngControl.control) {\n // get the validators for current control.\n const validatorFn = this._control.ngControl.control.validator;\n\n // if our current validatorFn isn't equal to it might be we are CD behind, marking the\n // component will allow us to catch up.\n if (validatorFn !== this._previousControlValidatorFn) {\n this._changeDetectorRef.markForCheck();\n }\n }\n }\n\n ngOnDestroy() {\n this._outlineLabelOffsetResizeObserver?.disconnect();\n this._stateChanges?.unsubscribe();\n this._valueChanges?.unsubscribe();\n this._describedByChanges?.unsubscribe();\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n /**\n * Gets the id of the label element. If no label is present, returns `null`.\n */\n getLabelId = computed(() => (this._hasFloatingLabel() ? this._labelId : null));\n\n /**\n * Gets an ElementRef for the element that a overlay attached to the form field\n * should be positioned relative to.\n */\n getConnectedOverlayOrigin(): ElementRef {\n return this._textField || this._elementRef;\n }\n\n /** Animates the placeholder up and locks it in position. */\n _animateAndLockLabel(): void {\n // This is for backwards compatibility only. Consumers of the form field might use\n // this method. e.g. the autocomplete trigger. This method has been added to the non-MDC\n // form field because setting \"floatLabel\" to \"always\" caused the label to float without\n // animation. This is different in MDC where the label always animates, so this method\n // is no longer necessary. There doesn't seem any benefit in adding logic to allow changing\n // the floating label state without animations. The non-MDC implementation was inconsistent\n // because it always animates if \"floatLabel\" is set away from \"always\".\n // TODO(devversion): consider removing this method when releasing the MDC form field.\n if (this._hasFloatingLabel()) {\n this.floatLabel = 'always';\n }\n }\n\n /** Initializes the registered form field control. */\n private _initializeControl(previousControl: MatFormFieldControl<unknown> | null) {\n const control = this._control;\n const classPrefix = 'mat-mdc-form-field-type-';\n\n if (previousControl) {\n this._elementRef.nativeElement.classList.remove(classPrefix + previousControl.controlType);\n }\n\n if (control.controlType) {\n this._elementRef.nativeElement.classList.add(classPrefix + control.controlType);\n }\n\n // Subscribe to changes in the child control state in order to update the form field UI.\n this._stateChanges?.unsubscribe();\n this._stateChanges = control.stateChanges.subscribe(() => {\n this._updateFocusState();\n this._changeDetectorRef.markForCheck();\n });\n\n // Updating the `aria-describedby` touches the DOM. Only do it if it actually needs to change.\n this._describedByChanges?.unsubscribe();\n this._describedByChanges = control.stateChanges\n .pipe(\n startWith([undefined, undefined] as const),\n map(() => [control.errorState, control.userAriaDescribedBy] as const),\n pairwise(),\n filter(([[prevErrorState, prevDescribedBy], [currentErrorState, currentDescribedBy]]) => {\n return prevErrorState !== currentErrorState || prevDescribedBy !== currentDescribedBy;\n }),\n )\n .subscribe(() => this._syncDescribedByIds());\n\n this._valueChanges?.unsubscribe();\n\n // Run change detection if the value changes.\n if (control.ngControl && control.ngControl.valueChanges) {\n this._valueChanges = control.ngControl.valueChanges\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => this._changeDetectorRef.markForCheck());\n }\n }\n\n private _checkPrefixAndSuffixTypes() {\n this._hasIconPrefix = !!this._prefixChildren.find(p => !p._isText);\n this._hasTextPrefix = !!this._prefixChildren.find(p => p._isText);\n this._hasIconSuffix = !!this._suffixChildren.find(s => !s._isText);\n this._hasTextSuffix = !!this._suffixChildren.find(s => s._isText);\n }\n\n /** Initializes the prefix and suffix containers. */\n private _initializePrefixAndSuffix() {\n this._checkPrefixAndSuffixTypes();\n // Mark the form field as dirty whenever the prefix or suffix children change. This\n // is necessary because we conditionally display the prefix/suffix containers based\n // on whether there is projected content.\n merge(this._prefixChildren.changes, this._suffixChildren.changes).subscribe(() => {\n this._checkPrefixAndSuffixTypes();\n this._changeDetectorRef.markForCheck();\n });\n }\n\n /**\n * Initializes the subscript by validating hints and synchronizing \"aria-describedby\" ids\n * with the custom form field control. Also subscribes to hint and error changes in order\n * to be able to validate and synchronize ids on change.\n */\n private _initializeSubscript() {\n // Re-validate when the number of hints changes.\n this._hintChildren.changes.subscribe(() => {\n this._processHints();\n this._changeDetectorRef.markForCheck();\n });\n\n // Update the aria-described by when the number of errors changes.\n this._errorChildren.changes.subscribe(() => {\n this._syncDescribedByIds();\n this._changeDetectorRef.markForCheck();\n });\n\n // Initial mat-hint validation and subscript describedByIds sync.\n this._validateHints();\n this._syncDescribedByIds();\n }\n\n /** Throws an error if the form field's control is missing. */\n private _assertFormFieldControl() {\n if (!this._control && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatFormFieldMissingControlError();\n }\n }\n\n private _updateFocusState() {\n // Usually the MDC foundation would call \"activateFocus\" and \"deactivateFocus\" whenever\n // certain DOM events are emitted. This is not possible in our implementation of the\n // form field because we support abstract form field controls which are not necessarily\n // of type input, nor do we have a reference to a native form field control element. Instead\n // we handle the focus by checking if the abstract form field control focused state changes.\n if (this._control.focused && !this._isFocused) {\n this._isFocused = true;\n this._lineRipple?.activate();\n } else if (!this._control.focused && (this._isFocused || this._isFocused === null)) {\n this._isFocused = false;\n this._lineRipple?.deactivate();\n }\n\n this._textField?.nativeElement.classList.toggle(\n 'mdc-text-field--focused',\n this._control.focused,\n );\n }\n\n private _outlineLabelOffsetResizeObserver: ResizeObserver | null = null;\n\n /**\n * The floating label in the docked state needs to account for prefixes. The horizontal offset\n * is calculated whenever the appearance changes to `outline`, the prefixes change, or when the\n * form field is added to the DOM. This method sets up all subscriptions which are needed to\n * trigger the label offset update.\n */\n private _syncOutlineLabelOffset() {\n afterRenderEffect({\n earlyRead: () => {\n if (this._appearanceSignal() !== 'outline') {\n this._outlineLabelOffsetResizeObserver?.disconnect();\n return null;\n }\n\n // Setup a resize observer to monitor changes to the size of the prefix / suffix and\n // readjust the label offset.\n if (globalThis.ResizeObserver) {\n this._outlineLabelOffsetResizeObserver ||= new globalThis.ResizeObserver(() => {\n this._writeOutlinedLabelStyles(this._getOutlinedLabelOffset());\n });\n for (const el of this._prefixSuffixContainers()) {\n this._outlineLabelOffsetResizeObserver.observe(el, {box: 'border-box'});\n }\n }\n\n return this._getOutlinedLabelOffset();\n },\n write: labelStyles => this._writeOutlinedLabelStyles(labelStyles()),\n });\n }\n\n /** Whether the floating label should always float or not. */\n _shouldAlwaysFloat() {\n return this.floatLabel === 'always';\n }\n\n _hasOutline() {\n return this.appearance === 'outline';\n }\n\n /**\n * Whether the label should display in the infix. Labels in the outline appearance are\n * displayed as part of the notched-outline and are horizontally offset to account for\n * form field prefix content. This won't work in server side rendering since we cannot\n * measure the width of the prefix container. To make the docked label appear as if the\n * right offset has been calculated, we forcibly render the label inside the infix. Since\n * the label is part of the infix, the label cannot overflow the prefix content.\n */\n _forceDisplayInfixLabel() {\n return !this._platform.isBrowser && this._prefixChildren.length && !this._shouldLabelFloat();\n }\n\n _hasFloatingLabel = computed(() => !!this._labelChild());\n\n _shouldLabelFloat(): boolean {\n if (!this._hasFloatingLabel()) {\n return false;\n }\n return this._control.shouldLabelFloat || this._shouldAlwaysFloat();\n }\n\n /**\n * Determines whether a class from the AbstractControlDirective\n * should be forwarded to the host element.\n */\n _shouldForward(prop: keyof AbstractControlDirective): boolean {\n const control = this._control ? this._control.ngControl : null;\n return control && control[prop];\n }\n\n /** Gets the type of subscript message to render (error or hint). */\n _getSubscriptMessageType(): 'error' | 'hint' {\n return this._errorChildren && this._errorChildren.length > 0 && this._control.errorState\n ? 'error'\n : 'hint';\n }\n\n /** Handle label resize events. */\n _handleLabelResized() {\n this._refreshOutlineNotchWidth();\n }\n\n /** Refreshes the width of the outline-notch, if present. */\n _refreshOutlineNotchWidth() {\n if (!this._hasOutline() || !this._floatingLabel || !this._shouldLabelFloat()) {\n this._notchedOutline?._setNotchWidth(0);\n } else {\n this._notchedOutline?._setNotchWidth(this._floatingLabel.getWidth());\n }\n }\n\n /** Does any extra processing that is required when handling the hints. */\n private _processHints() {\n this._validateHints();\n this._syncDescribedByIds();\n }\n\n /**\n * Ensure that there is a maximum of one of each \"mat-hint\" alignment specified. The hint\n * label specified set through the input is being considered as \"start\" aligned.\n *\n * This method is a noop if Angular runs in production mode.\n */\n private _validateHints() {\n if (this._hintChildren && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n let startHint: MatHint;\n let endHint: MatHint;\n this._hintChildren.forEach((hint: MatHint) => {\n if (hint.align === 'start') {\n if (startHint || this.hintLabel) {\n throw getMatFormFieldDuplicatedHintError('start');\n }\n startHint = hint;\n } else if (hint.align === 'end') {\n if (endHint) {\n throw getMatFormFieldDuplicatedHintError('end');\n }\n endHint = hint;\n }\n });\n }\n }\n\n /**\n * Sets the list of element IDs that describe the child control. This allows the control to update\n * its `aria-describedby` attribute accordingly.\n */\n private _syncDescribedByIds() {\n if (this._control) {\n let ids: string[] = [];\n\n // TODO(wagnermaciel): Remove the type check when we find the root cause of this bug.\n if (\n this._control.userAriaDescribedBy &&\n typeof this._control.userAriaDescribedBy === 'string'\n ) {\n ids.push(...this._control.userAriaDescribedBy.split(' '));\n }\n\n if (this._getSubscriptMessageType() === 'hint') {\n const startHint = this._hintChildren\n ? this._hintChildren.find(hint => hint.align === 'start')\n : null;\n const endHint = this._hintChildren\n ? this._hintChildren.find(hint => hint.align === 'end')\n : null;\n\n if (startHint) {\n ids.push(startHint.id);\n } else if (this._hintLabel) {\n ids.push(this._hintLabelId);\n }\n\n if (endHint) {\n ids.push(endHint.id);\n }\n } else if (this._errorChildren) {\n ids.push(...this._errorChildren.map(error => error.id));\n }\n\n const existingDescribedBy = this._control.describedByIds;\n let toAssign: string[];\n\n // In some cases there might be some `aria-describedby` IDs that were assigned directly,\n // like by the `AriaDescriber` (see #30011). Attempt to preserve them by taking the previous\n // attribute value and filtering out the IDs that came from the previous `setDescribedByIds`\n // call. Note the `|| ids` here allows us to avoid duplicating IDs on the first render.\n if (existingDescribedBy) {\n const exclude = this._describedByIds || ids;\n toAssign = ids.concat(existingDescribedBy.filter(id => id && !exclude.includes(id)));\n } else {\n toAssign = ids;\n }\n\n this._control.setDescribedByIds(toAssign);\n this._describedByIds = ids;\n }\n }\n\n /**\n * Calculates the horizontal offset of the label in the outline appearance. In the outline\n * appearance, the notched-outline and label are not relative to the infix container because\n * the outline intends to surround prefixes, suffixes and the infix. This means that the\n * floating label by default overlaps prefixes in the docked state. To avoid this, we need to\n * horizontally offset the label by the width of the prefix container. The MDC text-field does\n * not need to do this because they use a fixed width for prefixes. Hence, they can simply\n * incorporate the horizontal offset into their default text-field styles.\n */\n private _getOutlinedLabelOffset(): OutlinedLabelStyles {\n const dir = this._dir.valueSignal();\n if (!this._hasOutline() || !this._floatingLabel) {\n return null;\n }\n // If no prefix is displayed, reset the outline label offset from potential\n // previous label offset updates.\n if (!this._iconPrefixContainer && !this._textPrefixContainer) {\n return ['', null];\n }\n // If the form field is not attached to the DOM yet (e.g. in a tab), we defer\n // the label offset update until the zone stabilizes.\n if (!this._isAttachedToDom()) {\n return null;\n }\n const iconPrefixContainer = this._iconPrefixContainer?.nativeElement;\n const textPrefixContainer = this._textPrefixContainer?.nativeElement;\n const iconSuffixContainer = this._iconSuffixContainer?.nativeElement;\n const textSuffixContainer = this._textSuffixContainer?.nativeElement;\n const iconPrefixContainerWidth = iconPrefixContainer?.getBoundingClientRect().width ?? 0;\n const textPrefixContainerWidth = textPrefixContainer?.getBoundingClientRect().width ?? 0;\n const iconSuffixContainerWidth = iconSuffixContainer?.getBoundingClientRect().width ?? 0;\n const textSuffixContainerWidth = textSuffixContainer?.getBoundingClientRect().width ?? 0;\n // If the directionality is RTL, the x-axis transform needs to be inverted. This\n // is because `transformX` does not change based on the page directionality.\n const negate = dir === 'rtl' ? '-1' : '1';\n const prefixWidth = `${iconPrefixContainerWidth + textPrefixContainerWidth}px`;\n const labelOffset = `var(--mat-mdc-form-field-label-offset-x, 0px)`;\n const labelHorizontalOffset = `calc(${negate} * (${prefixWidth} + ${labelOffset}))`;\n\n // Update the translateX of the floating label to account for the prefix container,\n // but allow the CSS to override this setting via a CSS variable when the label is\n // floating.\n const floatingLabelTransform =\n 'var(--mat-mdc-form-field-label-transform, ' +\n `${FLOATING_LABEL_DEFAULT_DOCKED_TRANSFORM} translateX(${labelHorizontalOffset}))`;\n\n // Prevent the label from overlapping the suffix when in resting position.\n const notchedOutlineWidth =\n iconPrefixContainerWidth +\n textPrefixContainerWidth +\n iconSuffixContainerWidth +\n textSuffixContainerWidth;\n\n return [floatingLabelTransform, notchedOutlineWidth];\n }\n\n /** Writes the styles produced by `_getOutlineLabelOffset` synchronously to the DOM. */\n private _writeOutlinedLabelStyles(styles: OutlinedLabelStyles): void {\n if (styles !== null) {\n const [floatingLabelTransform, notchedOutlineWidth] = styles;\n\n if (this._floatingLabel) {\n this._floatingLabel.element.style.transform = floatingLabelTransform;\n }\n\n if (notchedOutlineWidth !== null) {\n this._notchedOutline?._setMaxWidth(notchedOutlineWidth);\n }\n }\n }\n\n /** Checks whether the form field is attached to the DOM. */\n private _isAttachedToDom(): boolean {\n const element: HTMLElement = this._elementRef.nativeElement;\n if (element.getRootNode) {\n const rootNode = element.getRootNode();\n // If the element is inside the DOM the root node will be either the document\n // or the closest shadow root, otherwise it'll be the element itself.\n return rootNode && rootNode !== element;\n }\n // Otherwise fall back to checking if it's in the document. This doesn't account for\n // shadow DOM, however browser that support shadow DOM should support `getRootNode` as well.\n return document.documentElement!.contains(element);\n }\n}\n","<ng-template #labelTemplate>\n <!--\n MDC recommends that the text-field is a `<label>` element. This rather complicates the\n setup because it would require every form-field control to explicitly set `aria-labelledby`.\n This is because the `<label>` itself contains more than the actual label (e.g. prefix, suffix\n or other projected content), and screen readers could potentially read out undesired content.\n Excluding elements from being printed out requires them to be marked with `aria-hidden`, or\n the form control is set to a scoped element for the label (using `aria-labelledby`). Both of\n these options seem to complicate the setup because we know exactly what content is rendered\n as part of the label, and we don't want to spend resources on walking through projected content\n to set `aria-hidden`. Nor do we want to set `aria-labelledby` on every form control if we could\n simply link the label to the control using the label `for` attribute.\n -->\n @if (_hasFloatingLabel()) {\n <label\n matFormFieldFloatingLabel\n [floating]=\"_shouldLabelFloat()\"\n [monitorResize]=\"_hasOutline()\"\n [id]=\"_labelId\"\n [attr.for]=\"_control.disableAutomaticLabeling ? null : _control.id\"\n >\n <ng-content select=\"mat-label\"></ng-content>\n <!--\n We set the required marker as a separate element, in order to make it easier to target if\n apps want to override it and to be able to set `aria-hidden` so that screen readers don't\n pick it up.\n -->\n @if (!hideRequiredMarker && _control.required) {\n <span\n aria-hidden=\"true\"\n class=\"mat-mdc-form-field-required-marker mdc-floating-label--required\"\n ></span>\n }\n </label>\n }\n</ng-template>\n\n<div\n class=\"mat-mdc-text-field-wrapper mdc-text-field\"\n #textField\n [class.mdc-text-field--filled]=\"!_hasOutline()\"\n [class.mdc-text-field--outlined]=\"_hasOutline()\"\n [class.mdc-text-field--no-label]=\"!_hasFloatingLabel()\"\n [class.mdc-text-field--disabled]=\"_control.disabled\"\n [class.mdc-text-field--invalid]=\"_control.errorState\"\n (click)=\"_control.onContainerClick($event)\"\n>\n @if (!_hasOutline() && !_control.disabled) {\n <div class=\"mat-mdc-form-field-focus-overlay\"></div>\n }\n <div class=\"mat-mdc-form-field-flex\">\n @if (_hasOutline()) {\n <div matFormFieldNotchedOutline [matFormFieldNotchedOutlineOpen]=\"_shouldLabelFloat()\">\n @if (!_forceDisplayInfixLabel()) {\n <ng-template [ngTemplateOutlet]=\"labelTemplate\"></ng-template>\n }\n </div>\n }\n\n @if (_hasIconPrefix) {\n <div class=\"mat-mdc-form-field-icon-prefix\" #iconPrefixContainer>\n <ng-content select=\"[matPrefix], [matIconPrefix]\"></ng-content>\n </div>\n }\n\n @if (_hasTextPrefix) {\n <div class=\"mat-mdc-form-field-text-prefix\" #textPrefixContainer>\n <ng-content select=\"[matTextPrefix]\"></ng-content>\n </div>\n }\n\n <div class=\"mat-mdc-form-field-infix\">\n @if (!_hasOutline() || _forceDisplayInfixLabel()) {\n <ng-template [ngTemplateOutlet]=\"labelTemplate\"></ng-template>\n }\n\n <ng-content></ng-content>\n </div>\n\n @if (_hasTextSuffix) {\n <div class=\"mat-mdc-form-field-text-suffix\" #textSuffixContainer>\n <ng-content select=\"[matTextSuffix]\"></ng-content>\n </div>\n }\n\n @if (_hasIconSuffix) {\n <div class=\"mat-mdc-form-field-icon-suffix\" #iconSuffixContainer>\n <ng-content select=\"[matSuffix], [matIconSuffix]\"></ng-content>\n </div>\n }\n </div>\n\n @if (!_hasOutline()) {\n <div matFormFieldLineRipple></div>\n }\n</div>\n\n<div\n class=\"mat-mdc-form-field-subscript-wrapper mat-mdc-form-field-bottom-align\"\n [class.mat-mdc-form-field-subscript-dynamic-size]=\"subscriptSizing === 'dynamic'\"\n>\n @let subscriptMessageType = _getSubscriptMessageType();\n\n <!-- \n Use a single permanent wrapper for both hints and errors so aria-live works correctly,\n as having it appear post render will not consistently work. We also do not want to add\n additional divs as it causes styling regressions.\n -->\n <div aria-atomic=\"true\" aria-live=\"polite\" \n [class.mat-mdc-form-field-error-wrapper]=\"subscriptMessageType === 'error'\"\n [class.mat-mdc-form-field-hint-wrapper]=\"subscriptMessageType === 'hint'\"\n >\n @switch (subscriptMessageType) {\n @case ('error') {\n <ng-content select=\"mat-error, [matError]\"></ng-content>\n }\n\n @case ('hint') {\n @if (hintLabel) {\n <mat-hint [id]=\"_hintLabelId\">{{hintLabel}}</mat-hint>\n }\n <ng-content select=\"mat-hint:not([align='end'])\"></ng-content>\n <div class=\"mat-mdc-form-field-hint-spacer\"></div>\n <ng-content select=\"mat-hint[align='end']\"></ng-content>\n }\n }\n </div>\n</div>\n"],"names":["_MatFormFieldControl"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"input-harness-oQzj5EsQ.mjs","sources":["../../../../../k8-fastbuild-ST-46c76129e412/bin/src/material/input/testing/input-harness.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {HarnessPredicate, parallel} from '@angular/cdk/testing';\nimport {MatFormFieldControlHarness} from '../../form-field/testing/control';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {InputHarnessFilters} from './input-harness-filters';\n\n/** Harness for interacting with a standard Material inputs in tests. */\nexport class MatInputHarness extends MatFormFieldControlHarness {\n // TODO: We do not want to handle `select` elements with `matNativeControl` because\n // not all methods of this harness work reasonably for native select elements.\n // For more details. See: https://github.com/angular/components/pull/18221.\n static hostSelector = '[matInput], input[matNativeControl], textarea[matNativeControl]';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatInputHarness` that meets\n * certain criteria.\n * @param options Options for filtering which input instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: InputHarnessFilters = {}): HarnessPredicate<MatInputHarness> {\n return new HarnessPredicate(MatInputHarness, options)\n .addOption('value', options.value, (harness, value) => {\n return HarnessPredicate.stringMatches(harness.getValue(), value);\n })\n .addOption('placeholder', options.placeholder, (harness, placeholder) => {\n return HarnessPredicate.stringMatches(harness.getPlaceholder(), placeholder);\n });\n }\n\n /** Whether the input is disabled. */\n async isDisabled(): Promise<boolean> {\n const host = await this.host();\n const disabled = await host.getAttribute('disabled');\n\n if (disabled !== null) {\n return coerceBooleanProperty(disabled);\n }\n\n return (await host.getAttribute('aria-disabled')) === 'true';\n }\n\n /** Whether the input is required. */\n async isRequired(): Promise<boolean> {\n return (await this.host()).getProperty<boolean>('required');\n }\n\n /** Whether the input is readonly. */\n async isReadonly(): Promise<boolean> {\n return (await this.host()).getProperty<boolean>('readOnly');\n }\n\n /** Gets the value of the input. */\n async getValue(): Promise<string> {\n // The \"value\" property of the native input is never undefined.\n return await (await this.host()).getProperty<string>('value');\n }\n\n /** Gets the name of the input. */\n async getName(): Promise<string> {\n // The \"name\" property of the native input is never undefined.\n return await (await this.host()).getProperty<string>('name');\n }\n\n /**\n * Gets the type of the input. Returns \"textarea\" if the input is\n * a textarea.\n */\n async getType(): Promise<string> {\n // The \"type\" property of the native input is never undefined.\n return await (await this.host()).getProperty<string>('type');\n }\n\n /** Gets the placeholder of the input. */\n async getPlaceholder(): Promise<string> {\n const host = await this.host();\n const [nativePlaceholder, fallback] = await parallel(() => [\n host.getProperty('placeholder'),\n host.getAttribute('data-placeholder'),\n ]);\n return nativePlaceholder || fallback || '';\n }\n\n /** Gets the id of the input. */\n async getId(): Promise<string> {\n // The input directive always assigns a unique id to the input in\n // case no id has been explicitly specified.\n return await (await this.host()).getProperty<string>('id');\n }\n\n /**\n * Focuses the input and returns a promise that indicates when the\n * action is complete.\n */\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n /**\n * Blurs the input and returns a promise that indicates when the\n * action is complete.\n */\n async blur(): Promise<void> {\n return (await this.host()).blur();\n }\n\n /** Whether the input is focused. */\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\n }\n\n /**\n * Sets the value of the input. The value will be set by simulating\n * keypresses that correspond to the given value.\n */\n async setValue(newValue: string): Promise<void> {\n const inputEl = await this.host();\n await inputEl.clear();\n // We don't want to send keys for the value if the value is an empty\n // string in order to clear the value. Sending keys with an empty string\n // still results in unnecessary focus events.\n if (newValue) {\n await inputEl.sendKeys(newValue);\n }\n\n // Some input types won't respond to key presses (e.g. `color`) so to be sure that the\n // value is set, we also set the property after the keyboard sequence. Note that we don't\n // want to do it before, because it can cause the value to be entered twice.\n await inputEl.setInputValue(newValue);\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"module-B0CLRw5e.mjs","sources":["../../../../../k8-fastbuild-ST-46c76129e412/bin/src/material/select/select-errors.ts","../../../../../k8-fastbuild-ST-46c76129e412/bin/src/material/select/select.ts","../../../../../k8-fastbuild-ST-46c76129e412/bin/src/material/select/select.html","../../../../../k8-fastbuild-ST-46c76129e412/bin/src/material/select/module.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\n// Note that these have been copied over verbatim from\n// `material/select` so that we don't have to expose them publicly.\n\n/**\n * Returns an exception to be thrown when attempting to change a select's `multiple` option\n * after initialization.\n * @docs-private\n */\nexport function getMatSelectDynamicMultipleError(): Error {\n return Error('Cannot change `multiple` mode of select after initialization.');\n}\n\n/**\n * Returns an exception to be thrown when attempting to assign a non-array value to a select\n * in `multiple` mode. Note that `undefined` and `null` are still valid values to allow for\n * resetting the value.\n * @docs-private\n */\nexport function getMatSelectNonArrayValueError(): Error {\n return Error('Value must be an array in multiple-selection mode.');\n}\n\n/**\n * Returns an exception to be thrown when assigning a non-function value to the comparator\n * used to determine if a value corresponds to an option. Note that whether the function\n * actually takes two values and returns a boolean is not checked.\n */\nexport function getMatSelectNonFunctionValueError(): Error {\n return Error('`compareWith` must be a function.');\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.dev/license\n */\n\nimport {\n _IdGenerator,\n ActiveDescendantKeyManager,\n addAriaReferencedId,\n LiveAnnouncer,\n removeAriaReferencedId,\n} from '@angular/cdk/a11y';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {SelectionModel} from '@angular/cdk/collections';\nimport {\n A,\n DOWN_ARROW,\n ENTER,\n ESCAPE,\n hasModifierKey,\n LEFT_ARROW,\n RIGHT_ARROW,\n SPACE,\n UP_ARROW,\n} from '@angular/cdk/keycodes';\nimport {\n CdkConnectedOverlay,\n CdkOverlayOrigin,\n ConnectedPosition,\n createRepositionScrollStrategy,\n ScrollStrategy,\n} from '@angular/cdk/overlay';\nimport {ViewportRuler} from '@angular/cdk/scrolling';\nimport {\n AfterContentInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n Directive,\n DoCheck,\n ElementRef,\n EventEmitter,\n inject,\n InjectionToken,\n Input,\n numberAttribute,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n HostAttributeToken,\n Renderer2,\n Injector,\n signal,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormGroupDirective,\n NgControl,\n NgForm,\n Validators,\n} from '@angular/forms';\nimport {\n _animationsDisabled,\n _countGroupLabelsBeforeOption,\n _ErrorStateTracker,\n _getOptionScrollPosition,\n ErrorStateMatcher,\n MAT_OPTGROUP,\n MAT_OPTION_PARENT_COMPONENT,\n MatOptgroup,\n MatOption,\n MatOptionSelectionChange,\n} from '../core';\nimport {MAT_FORM_FIELD, MatFormField, MatFormFieldControl} from '../form-field';\nimport {defer, merge, Observable, Subject} from 'rxjs';\nimport {filter, map, startWith, switchMap, take, takeUntil} from 'rxjs/operators';\nimport {\n getMatSelectDynamicMultipleError,\n getMatSelectNonArrayValueError,\n getMatSelectNonFunctionValueError,\n} from './select-errors';\nimport {NgClass} from '@angular/common';\n\n/** Injection token that determines the scroll handling while a select is open. */\nexport const MAT_SELECT_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>(\n 'mat-select-scroll-strategy',\n {\n providedIn: 'root',\n factory: () => {\n const injector = inject(Injector);\n return () => createRepositionScrollStrategy(injector);\n },\n },\n);\n\n/**\n * @docs-private\n * @deprecated No longer used, will be removed.\n * @breaking-change 21.0.0\n */\nexport function MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY(\n _overlay: unknown,\n): () => ScrollStrategy {\n const injector = inject(Injector);\n return () => createRepositionScrollStrategy(injector);\n}\n\n/** Object that can be used to configure the default options for the select module. */\nexport interface MatSelectConfig {\n /** Whether option centering should be disabled. */\n disableOptionCentering?: boolean;\n\n /** Time to wait in milliseconds after the last keystroke before moving focus to an item. */\n typeaheadDebounceInterval?: number;\n\n /** Class or list of classes to be applied to the menu's overlay panel. */\n overlayPanelClass?: string | string[];\n\n /** Whether icon indicators should be hidden for single-selection. */\n hideSingleSelectionIndicator?: boolean;\n\n /**\n * Width of the panel. If set to `auto`, the panel will match the trigger width.\n * If set to null or an empty string, the panel will grow to match the longest option's text.\n */\n panelWidth?: string | number | null;\n\n /**\n * Whether nullable options can be selected by default.\n * See `MatSelect.canSelectNullableOptions` for more information.\n */\n canSelectNullableOptions?: boolean;\n}\n\n/** Injection token that can be used to provide the default options the select module. */\nexport const MAT_SELECT_CONFIG = new InjectionToken<MatSelectConfig>('MAT_SELECT_CONFIG');\n\n/**\n * @docs-private\n * @deprecated No longer used, will be removed.\n * @breaking-change 21.0.0\n */\nexport const MAT_SELECT_SCROLL_STRATEGY_PROVIDER = {\n provide: MAT_SELECT_SCROLL_STRATEGY,\n deps: [] as any[],\n useFactory: MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY,\n};\n\n/**\n * Injection token that can be used to reference instances of `MatSelectTrigger`. It serves as\n * alternative token to the actual `MatSelectTrigger` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nexport const MAT_SELECT_TRIGGER = new InjectionToken<MatSelectTrigger>('MatSelectTrigger');\n\n/** Change event object that is emitted when the select value has changed. */\nexport class MatSelectChange<T = any> {\n constructor(\n /** Reference to the select that emitted the change event. */\n public source: MatSelect,\n /** Current value of the select that emitted the event. */\n public value: T,\n ) {}\n}\n\n@Component({\n selector: 'mat-select',\n exportAs: 'matSelect',\n templateUrl: 'select.html',\n styleUrl: 'select.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'role': 'combobox',\n 'aria-haspopup': 'listbox',\n 'class': 'mat-mdc-select',\n '[attr.id]': 'id',\n '[attr.tabindex]': 'disabled ? -1 : tabIndex',\n '[attr.aria-controls]': 'panelOpen ? id + \"-panel\" : null',\n '[attr.aria-expanded]': 'panelOpen',\n '[attr.aria-label]': 'ariaLabel || null',\n '[attr.aria-required]': 'required.toString()',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.aria-invalid]': 'errorState',\n '[attr.aria-activedescendant]': '_getAriaActiveDescendant()',\n '[class.mat-mdc-select-disabled]': 'disabled',\n '[class.mat-mdc-select-invalid]': 'errorState',\n '[class.mat-mdc-select-required]': 'required',\n '[class.mat-mdc-select-empty]': 'empty',\n '[class.mat-mdc-select-multiple]': 'multiple',\n '(keydown)': '_handleKeydown($event)',\n '(focus)': '_onFocus()',\n '(blur)': '_onBlur()',\n },\n providers: [\n {provide: MatFormFieldControl, useExisting: MatSelect},\n {provide: MAT_OPTION_PARENT_COMPONENT, useExisting: MatSelect},\n ],\n imports: [CdkOverlayOrigin, CdkConnectedOverlay, NgClass],\n})\nexport class MatSelect\n implements\n AfterContentInit,\n OnChanges,\n OnDestroy,\n OnInit,\n DoCheck,\n ControlValueAccessor,\n MatFormFieldControl<any>\n{\n protected _viewportRuler = inject(ViewportRuler);\n protected _changeDetectorRef = inject(ChangeDetectorRef);\n readonly _elementRef = inject(ElementRef);\n private _dir = inject(Directionality, {optional: true});\n private _idGenerator = inject(_IdGenerator);\n private _renderer = inject(Renderer2);\n protected _parentFormField = inject<MatFormField>(MAT_FORM_FIELD, {optional: true});\n ngControl = inject(NgControl, {self: true, optional: true})!;\n private _liveAnnouncer = inject(LiveAnnouncer);\n protected _defaultOptions = inject(MAT_SELECT_CONFIG, {optional: true});\n protected _animationsDisabled = _animationsDisabled();\n private _initialized = new Subject();\n private _cleanupDetach: (() => void) | undefined;\n\n /** All of the defined select options. */\n @ContentChildren(MatOption, {descendants: true}) options: QueryList<MatOption>;\n\n // TODO(crisbeto): this is only necessary for the non-MDC select, but it's technically a\n // public API so we have to keep it. It should be deprecated and removed eventually.\n /** All of the defined groups of options. */\n @ContentChildren(MAT_OPTGROUP, {descendants: true}) optionGroups: QueryList<MatOptgroup>;\n\n /** User-supplied override of the trigger element. */\n @ContentChild(MAT_SELECT_TRIGGER) customTrigger: MatSelectTrigger;\n\n /**\n * This position config ensures that the top \"start\" corner of the overlay\n * is aligned with with the top \"start\" of the origin by default (overlapping\n * the trigger completely). If the panel cannot fit below the trigger, it\n * will fall back to a position above the trigger.\n */\n _positions: ConnectedPosition[] = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n panelClass: 'mat-mdc-select-panel-above',\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n panelClass: 'mat-mdc-select-panel-above',\n },\n ];\n\n /** Scrolls a particular option into the view. */\n _scrollOptionIntoView(index: number): void {\n const option = this.options.toArray()[index];\n\n if (option) {\n const panel: HTMLElement = this.panel.nativeElement;\n const labelCount = _countGroupLabelsBeforeOption(index, this.options, this.optionGroups);\n const element = option._getHostElement();\n\n if (index === 0 && labelCount === 1) {\n // If we've got one group label before the option and we're at the top option,\n // scroll the list to the top. This is better UX than scrolling the list to the\n // top of the option, because it allows the user to read the top group's label.\n panel.scrollTop = 0;\n } else {\n panel.scrollTop = _getOptionScrollPosition(\n element.offsetTop,\n element.offsetHeight,\n panel.scrollTop,\n panel.offsetHeight,\n );\n }\n }\n }\n\n /** Called when the panel has been opened and the overlay has settled on its final position. */\n private _positioningSettled() {\n this._scrollOptionIntoView(this._keyManager.activeItemIndex || 0);\n }\n\n /** Creates a change event object that should be emitted by the select. */\n private _getChangeEvent(value: any) {\n return new MatSelectChange(this, value);\n }\n\n /** Factory function used to create a scroll strategy for this select. */\n private _scrollStrategyFactory = inject(MAT_SELECT_SCROLL_STRATEGY);\n\n /** Whether or not the overlay panel is open. */\n private _panelOpen = false;\n\n /** Comparison function to specify which option is displayed. Defaults to object equality. */\n private _compareWith = (o1: any, o2: any) => o1 === o2;\n\n /** Unique id for this input. */\n private _uid = this._idGenerator.getId('mat-select-');\n\n /** Current `aria-labelledby` value for the select trigger. */\n private _triggerAriaLabelledBy: string | null = null;\n\n /**\n * Keeps track of the previous form control assigned to the select.\n * Used to detect if it has changed.\n */\n private _previousControl: AbstractControl | null | undefined;\n\n /** Emits whenever the component is destroyed. */\n protected readonly _destroy = new Subject<void>();\n\n /** Tracks the error state of the select. */\n private _errorStateTracker: _ErrorStateTracker;\n\n /**\n * Emits whenever the component state changes and should cause the parent\n * form-field to update. Implemented as part of `MatFormFieldControl`.\n * @docs-private\n */\n readonly stateChanges = new Subject<void>();\n\n /**\n * Disable the automatic labeling to avoid issues like #27241.\n * @docs-private\n */\n readonly disableAutomaticLabeling = true;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input('aria-describedby') userAriaDescribedBy: string;\n\n /** Deals with the selection logic. */\n _selectionModel: SelectionModel<MatOption>;\n\n /** Manages keyboard events for options in the panel. */\n _keyManager: ActiveDescendantKeyManager<MatOption>;\n\n /** Ideal origin for the overlay panel. */\n _preferredOverlayOrigin: CdkOverlayOrigin | ElementRef | undefined;\n\n /** Width of the overlay panel. */\n _overlayWidth: string | number;\n\n /** `View -> model callback called when value changes` */\n _onChange: (value: any) => void = () => {};\n\n /** `View -> model callback called when select has been touched` */\n _onTouched = () => {};\n\n /** ID for the DOM node containing the select's value. */\n _valueId = this._idGenerator.getId('mat-select-value-');\n\n /** Strategy that will be used to handle scrolling while the select panel is open. */\n _scrollStrategy: ScrollStrategy;\n\n _overlayPanelClass: string | string[] = this._defaultOptions?.overlayPanelClass || '';\n\n /** Whether the select is focused. */\n get focused(): boolean {\n return this._focused || this._panelOpen;\n }\n private _focused = false;\n\n /** A name for this control that can be used by `mat-form-field`. */\n controlType = 'mat-select';\n\n /** Trigger that opens the select. */\n @ViewChild('trigger') trigger: ElementRef;\n\n /** Panel containing the select options. */\n @ViewChild('panel') panel: ElementRef;\n\n /** Overlay pane containing the options. */\n @ViewChild(CdkConnectedOverlay)\n protected _overlayDir: CdkConnectedOverlay;\n\n /** Classes to be passed to the select panel. Supports the same syntax as `ngClass`. */\n @Input() panelClass: string | string[] | Set<string> | {[key: string]: any};\n\n /** Whether the select is disabled. */\n @Input({transform: booleanAttribute})\n disabled: boolean = false;\n\n /** Whether ripples in the select are disabled. */\n @Input({transform: booleanAttribute})\n get disableRipple() {\n return this._disableRipple();\n }\n set disableRipple(value: boolean) {\n this._disableRipple.set(value);\n }\n private _disableRipple = signal(false);\n\n /** Tab index of the select. */\n @Input({\n transform: (value: unknown) => (value == null ? 0 : numberAttribute(value)),\n })\n tabIndex: number = 0;\n\n /** Whether checkmark indicator for single-selection options is hidden. */\n @Input({transform: booleanAttribute})\n get hideSingleSelectionIndicator(): boolean {\n return this._hideSingleSelectionIndicator;\n }\n set hideSingleSelectionIndicator(value: boolean) {\n this._hideSingleSelectionIndicator = value;\n this._syncParentProperties();\n }\n private _hideSingleSelectionIndicator: boolean =\n this._defaultOptions?.hideSingleSelectionIndicator ?? false;\n\n /** Placeholder to be shown if no value has been selected. */\n @Input()\n get placeholder(): string {\n return this._placeholder;\n }\n set placeholder(value: string) {\n this._placeholder = value;\n this.stateChanges.next();\n }\n private _placeholder: string;\n\n /** Whether the component is required. */\n @Input({transform: booleanAttribute})\n get required(): boolean {\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\n }\n set required(value: boolean) {\n this._required = value;\n this.stateChanges.next();\n }\n private _required: boolean | undefined;\n\n /** Whether the user should be allowed to select multiple options. */\n @Input({transform: booleanAttribute})\n get multiple(): boolean {\n return this._multiple;\n }\n set multiple(value: boolean) {\n if (this._selectionModel && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatSelectDynamicMultipleError();\n }\n\n this._multiple = value;\n }\n private _multiple: boolean = false;\n\n /** Whether to center the active option over the trigger. */\n @Input({transform: booleanAttribute})\n disableOptionCentering = this._defaultOptions?.disableOptionCentering ?? false;\n\n /**\n * Function to compare the option values with the selected values. The first argument\n * is a value from an option. The second is a value from the selection. A boolean\n * should be returned.\n */\n @Input()\n get compareWith() {\n return this._compareWith;\n }\n set compareWith(fn: (o1: any, o2: any) => boolean) {\n if (typeof fn !== 'function' && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatSelectNonFunctionValueError();\n }\n this._compareWith = fn;\n if (this._selectionModel) {\n // A different comparator means the selection could change.\n this._initializeSelection();\n }\n }\n\n /** Value of the select control. */\n @Input()\n get value(): any {\n return this._value;\n }\n set value(newValue: any) {\n const hasAssigned = this._assignValue(newValue);\n\n if (hasAssigned) {\n this._onChange(newValue);\n }\n }\n private _value: any;\n\n /** Aria label of the select. */\n @Input('aria-label') ariaLabel: string = '';\n\n /** Input that can be used to specify the `aria-labelledby` attribute. */\n @Input('aria-labelledby') ariaLabelledby: string;\n\n /** Object used to control when error messages are shown. */\n @Input()\n get errorStateMatcher() {\n return this._errorStateTracker.matcher;\n }\n set errorStateMatcher(value: ErrorStateMatcher) {\n this._errorStateTracker.matcher = value;\n }\n\n /** Time to wait in milliseconds after the last keystroke before moving focus to an item. */\n @Input({transform: numberAttribute})\n typeaheadDebounceInterval: number;\n\n /**\n * Function used to sort the values in a select in multiple mode.\n * Follows the same logic as `Array.prototype.sort`.\n */\n @Input() sortComparator: (a: MatOption, b: MatOption, options: MatOption[]) => number;\n\n /** Unique id of the element. */\n @Input()\n get id(): string {\n return this._id;\n }\n set id(value: string) {\n this._id = value || this._uid;\n this.stateChanges.next();\n }\n private _id: string;\n\n /** Whether the select is in an error state. */\n get errorState() {\n return this._errorStateTracker.errorState;\n }\n set errorState(value: boolean) {\n this._errorStateTracker.errorState = value;\n }\n\n /**\n * Width of the panel. If set to `auto`, the panel will match the trigger width.\n * If set to null or an empty string, the panel will grow to match the longest option's text.\n */\n @Input() panelWidth: string | number | null =\n this._defaultOptions && typeof this._defaultOptions.panelWidth !== 'undefined'\n ? this._defaultOptions.panelWidth\n : 'auto';\n\n /**\n * By default selecting an option with a `null` or `undefined` value will reset the select's\n * value. Enable this option if the reset behavior doesn't match your requirements and instead\n * the nullable options should become selected. The value of this input can be controlled app-wide\n * using the `MAT_SELECT_CONFIG` injection token.\n */\n @Input({transform: booleanAttribute})\n canSelectNullableOptions: boolean = this._defaultOptions?.canSelectNullableOptions ?? false;\n\n /** Combined stream of all of the child options' change events. */\n readonly optionSelectionChanges: Observable<MatOptionSelectionChange> = defer(() => {\n const options = this.options;\n\n if (options) {\n return options.changes.pipe(\n startWith(options),\n switchMap(() => merge(...options.map(option => option.onSelectionChange))),\n );\n }\n\n return this._initialized.pipe(switchMap(() => this.optionSelectionChanges));\n });\n\n /** Event emitted when the select panel has been toggled. */\n @Output() readonly openedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** Event emitted when the select has been opened. */\n @Output('opened') readonly _openedStream: Observable<void> = this.openedChange.pipe(\n filter(o => o),\n map(() => {}),\n );\n\n /** Event emitted when the select has been closed. */\n @Output('closed') readonly _closedStream: Observable<void> = this.openedChange.pipe(\n filter(o => !o),\n map(() => {}),\n );\n\n /** Event emitted when the selected value has been changed by the user. */\n @Output() readonly selectionChange = new EventEmitter<MatSelectChange>();\n\n /**\n * Event that emits whenever the raw value of the select changes. This is here primarily\n * to facilitate the two-way binding for the `value` input.\n * @docs-private\n */\n @Output() readonly valueChange: EventEmitter<any> = new EventEmitter<any>();\n\n constructor(...args: unknown[]);\n\n constructor() {\n const defaultErrorStateMatcher = inject(ErrorStateMatcher);\n const parentForm = inject(NgForm, {optional: true});\n const parentFormGroup = inject(FormGroupDirective, {optional: true});\n const tabIndex = inject(new HostAttributeToken('tabindex'), {optional: true});\n\n if (this.ngControl) {\n // Note: we provide the value accessor through here, instead of\n // the `providers` to avoid running into a circular import.\n this.ngControl.valueAccessor = this;\n }\n\n // Note that we only want to set this when the defaults pass it in, otherwise it should\n // stay as `undefined` so that it falls back to the default in the key manager.\n if (this._defaultOptions?.typeaheadDebounceInterval != null) {\n this.typeaheadDebounceInterval = this._defaultOptions.typeaheadDebounceInterval;\n }\n\n this._errorStateTracker = new _ErrorStateTracker(\n defaultErrorStateMatcher,\n this.ngControl,\n parentFormGroup,\n parentForm,\n this.stateChanges,\n );\n this._scrollStrategy = this._scrollStrategyFactory();\n this.tabIndex = tabIndex == null ? 0 : parseInt(tabIndex) || 0;\n\n // Force setter to be called in case id was not specified.\n this.id = this.id;\n }\n\n ngOnInit() {\n this._selectionModel = new SelectionModel<MatOption>(this.multiple);\n this.stateChanges.next();\n this._viewportRuler\n .change()\n .pipe(takeUntil(this._destroy))\n .subscribe(() => {\n if (this.panelOpen) {\n this._overlayWidth = this._getOverlayWidth(this._preferredOverlayOrigin);\n this._changeDetectorRef.detectChanges();\n }\n });\n }\n\n ngAfterContentInit() {\n this._initialized.next();\n this._initialized.complete();\n\n this._initKeyManager();\n\n this._selectionModel.changed.pipe(takeUntil(this._destroy)).subscribe(event => {\n event.added.forEach(option => option.select());\n event.removed.forEach(option => option.deselect());\n });\n\n this.options.changes.pipe(startWith(null), takeUntil(this._destroy)).subscribe(() => {\n this._resetOptions();\n this._initializeSelection();\n });\n }\n\n ngDoCheck() {\n const newAriaLabelledby = this._getTriggerAriaLabelledby();\n const ngControl = this.ngControl;\n\n // We have to manage setting the `aria-labelledby` ourselves, because part of its value\n // is computed as a result of a content query which can cause this binding to trigger a\n // \"changed after checked\" error.\n if (newAriaLabelledby !== this._triggerAriaLabelledBy) {\n const element: HTMLElement = this._elementRef.nativeElement;\n this._triggerAriaLabelledBy = newAriaLabelledby;\n if (newAriaLabelledby) {\n element.setAttribute('aria-labelledby', newAriaLabelledby);\n } else {\n element.removeAttribute('aria-labelledby');\n }\n }\n\n if (ngControl) {\n // The disabled state might go out of sync if the form group is swapped out. See #17860.\n if (this._previousControl !== ngControl.control) {\n if (\n this._previousControl !== undefined &&\n ngControl.disabled !== null &&\n ngControl.disabled !== this.disabled\n ) {\n this.disabled = ngControl.disabled;\n }\n\n this._previousControl = ngControl.control;\n }\n\n this.updateErrorState();\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n // Updating the disabled state is handled by the input, but we need to additionally let\n // the parent form field know to run change detection when the disabled state changes.\n if (changes['disabled'] || changes['userAriaDescribedBy']) {\n this.stateChanges.next();\n }\n\n if (changes['typeaheadDebounceInterval'] && this._keyManager) {\n this._keyManager.withTypeAhead(this.typeaheadDebounceInterval);\n }\n }\n\n ngOnDestroy() {\n this._cleanupDetach?.();\n this._keyManager?.destroy();\n this._destroy.next();\n this._destroy.complete();\n this.stateChanges.complete();\n this._clearFromModal();\n }\n\n /** Toggles the overlay panel open or closed. */\n toggle(): void {\n this.panelOpen ? this.close() : this.open();\n }\n\n /** Opens the overlay panel. */\n open(): void {\n if (!this._canOpen()) {\n return;\n }\n\n // It's important that we read this as late as possible, because doing so earlier will\n // return a different element since it's based on queries in the form field which may\n // not have run yet. Also this needs to be assigned before we measure the overlay width.\n if (this._parentFormField) {\n this._preferredOverlayOrigin = this._parentFormField.getConnectedOverlayOrigin();\n }\n\n this._cleanupDetach?.();\n this._overlayWidth = this._getOverlayWidth(this._preferredOverlayOrigin);\n this._applyModalPanelOwnership();\n this._panelOpen = true;\n this._overlayDir.positionChange.pipe(take(1)).subscribe(() => {\n this._changeDetectorRef.detectChanges();\n this._positioningSettled();\n });\n this._overlayDir.attachOverlay();\n this._keyManager.withHorizontalOrientation(null);\n this._highlightCorrectOption();\n this._changeDetectorRef.markForCheck();\n\n // Required for the MDC form field to pick up when the overlay has been opened.\n this.stateChanges.next();\n\n // Simulate the animation event before we moved away from `@angular/animations`.\n Promise.resolve().then(() => this.openedChange.emit(true));\n }\n\n /**\n * Track which modal we have modified the `aria-owns` attribute of. When the combobox trigger is\n * inside an aria-modal, we apply aria-owns to the parent modal with the `id` of the options\n * panel. Track the modal we have changed so we can undo the changes on destroy.\n */\n private _trackedModal: Element | null = null;\n\n /**\n * If the autocomplete trigger is inside of an `aria-modal` element, connect\n * that modal to the options panel with `aria-owns`.\n *\n * For some browser + screen reader combinations, when navigation is inside\n * of an `aria-modal` element, the screen reader treats everything outside\n * of that modal as hidden or invisible.\n *\n * This causes a problem when the combobox trigger is _inside_ of a modal, because the\n * options panel is rendered _outside_ of that modal, preventing screen reader navigation\n * from reaching the panel.\n *\n * We can work around this issue by applying `aria-owns` to the modal with the `id` of\n * the options panel. This effectively communicates to assistive technology that the\n * options panel is part of the same interaction as the modal.\n *\n * At time of this writing, this issue is present in VoiceOver.\n * See https://github.com/angular/components/issues/20694\n */\n private _applyModalPanelOwnership() {\n // TODO(http://github.com/angular/components/issues/26853): consider de-duplicating this with\n // the `LiveAnnouncer` and any other usages.\n //\n // Note that the selector here is limited to CDK overlays at the moment in order to reduce the\n // section of the DOM we need to look through. This should cover all the cases we support, but\n // the selector can be expanded if it turns out to be too narrow.\n const modal = this._elementRef.nativeElement.closest(\n 'body > .cdk-overlay-container [aria-modal=\"true\"]',\n );\n\n if (!modal) {\n // Most commonly, the autocomplete trigger is not inside a modal.\n return;\n }\n\n const panelId = `${this.id}-panel`;\n\n if (this._trackedModal) {\n removeAriaReferencedId(this._trackedModal, 'aria-owns', panelId);\n }\n\n addAriaReferencedId(modal, 'aria-owns', panelId);\n this._trackedModal = modal;\n }\n\n /** Clears the reference to the listbox overlay element from the modal it was added to. */\n private _clearFromModal() {\n if (!this._trackedModal) {\n // Most commonly, the autocomplete trigger is not used inside a modal.\n return;\n }\n\n const panelId = `${this.id}-panel`;\n\n removeAriaReferencedId(this._trackedModal, 'aria-owns', panelId);\n this._trackedModal = null;\n }\n\n /** Closes the overlay panel and focuses the host element. */\n close(): void {\n if (this._panelOpen) {\n this._panelOpen = false;\n this._exitAndDetach();\n this._keyManager.withHorizontalOrientation(this._isRtl() ? 'rtl' : 'ltr');\n this._changeDetectorRef.markForCheck();\n this._onTouched();\n // Required for the MDC form field to pick up when the overlay has been closed.\n this.stateChanges.next();\n\n // Simulate the animation event before we moved away from `@angular/animations`.\n Promise.resolve().then(() => this.openedChange.emit(false));\n }\n }\n\n /** Triggers the exit animation and detaches the overlay at the end. */\n private _exitAndDetach() {\n if (this._animationsDisabled || !this.panel) {\n this._detachOverlay();\n return;\n }\n\n this._cleanupDetach?.();\n this._cleanupDetach = () => {\n cleanupEvent();\n clearTimeout(exitFallbackTimer);\n this._cleanupDetach = undefined;\n };\n\n const panel: HTMLElement = this.panel.nativeElement;\n const cleanupEvent = this._renderer.listen(panel, 'animationend', (event: AnimationEvent) => {\n if (event.animationName === '_mat-select-exit') {\n this._cleanupDetach?.();\n this._detachOverlay();\n }\n });\n\n // Since closing the overlay depends on the animation, we have a fallback in case the panel\n // doesn't animate. This can happen in some internal tests that do `* {animation: none}`.\n const exitFallbackTimer = setTimeout(() => {\n this._cleanupDetach?.();\n this._detachOverlay();\n }, 200);\n\n panel.classList.add('mat-select-panel-exit');\n }\n\n /** Detaches the current overlay directive. */\n private _detachOverlay() {\n this._overlayDir.detachOverlay();\n // Some of the overlay detachment logic depends on change detection.\n // Mark for check to ensure that things get picked up in a timely manner.\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Sets the select's value. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param value New value to be written to the model.\n */\n writeValue(value: any): void {\n this._assignValue(value);\n }\n\n /**\n * Saves a callback function to be invoked when the select's value\n * changes from user input. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param fn Callback to be triggered when the value changes.\n */\n registerOnChange(fn: (value: any) => void): void {\n this._onChange = fn;\n }\n\n /**\n * Saves a callback function to be invoked when the select is blurred\n * by the user. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param fn Callback to be triggered when the component has been touched.\n */\n registerOnTouched(fn: () => {}): void {\n this._onTouched = fn;\n }\n\n /**\n * Disables the select. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param isDisabled Sets whether the component is disabled.\n */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this._changeDetectorRef.markForCheck();\n this.stateChanges.next();\n }\n\n /** Whether or not the overlay panel is open. */\n get panelOpen(): boolean {\n return this._panelOpen;\n }\n\n /** The currently selected option. */\n get selected(): MatOption | MatOption[] {\n return this.multiple ? this._selectionModel?.selected || [] : this._selectionModel?.selected[0];\n }\n\n /** The value displayed in the trigger. */\n get triggerValue(): string {\n if (this.empty) {\n return '';\n }\n\n if (this._multiple) {\n const selectedOptions = this._selectionModel.selected.map(option => option.viewValue);\n\n if (this._isRtl()) {\n selectedOptions.reverse();\n }\n\n // TODO(crisbeto): delimiter should be configurable for proper localization.\n return selectedOptions.join(', ');\n }\n\n return this._selectionModel.selected[0].viewValue;\n }\n\n /** Refreshes the error state of the select. */\n updateErrorState() {\n this._errorStateTracker.updateErrorState();\n }\n\n /** Whether the element is in RTL mode. */\n _isRtl(): boolean {\n return this._dir ? this._dir.value === 'rtl' : false;\n }\n\n /** Handles all keydown events on the select. */\n _handleKeydown(event: KeyboardEvent): void {\n if (!this.disabled) {\n this.panelOpen ? this._handleOpenKeydown(event) : this._handleClosedKeydown(event);\n }\n }\n\n /** Handles keyboard events while the select is closed. */\n private _handleClosedKeydown(event: KeyboardEvent): void {\n const keyCode = event.keyCode;\n const isArrowKey =\n keyCode === DOWN_ARROW ||\n keyCode === UP_ARROW ||\n keyCode === LEFT_ARROW ||\n keyCode === RIGHT_ARROW;\n const isOpenKey = keyCode === ENTER || keyCode === SPACE;\n const manager = this._keyManager;\n\n // Open the select on ALT + arrow key to match the native <select>\n if (\n (!manager.isTyping() && isOpenKey && !hasModifierKey(event)) ||\n ((this.multiple || event.altKey) && isArrowKey)\n ) {\n event.preventDefault(); // prevents the page from scrolling down when pressing space\n this.open();\n } else if (!this.multiple) {\n const previouslySelectedOption = this.selected;\n manager.onKeydown(event);\n const selectedOption = this.selected;\n\n // Since the value has changed, we need to announce it ourselves.\n if (selectedOption && previouslySelectedOption !== selectedOption) {\n // We set a duration on the live announcement, because we want the live element to be\n // cleared after a while so that users can't navigate to it using the arrow keys.\n this._liveAnnouncer.announce((selectedOption as MatOption).viewValue, 10000);\n }\n }\n }\n\n /** Handles keyboard events when the selected is open. */\n private _handleOpenKeydown(event: KeyboardEvent): void {\n const manager = this._keyManager;\n const keyCode = event.keyCode;\n const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW;\n const isTyping = manager.isTyping();\n\n if (isArrowKey && event.altKey) {\n // Close the select on ALT + arrow key to match the native <select>\n event.preventDefault();\n this.close();\n // Don't do anything in this case if the user is typing,\n // because the typing sequence can include the space key.\n } else if (\n !isTyping &&\n (keyCode === ENTER || keyCode === SPACE) &&\n manager.activeItem &&\n !hasModifierKey(event)\n ) {\n event.preventDefault();\n manager.activeItem._selectViaInteraction();\n } else if (!isTyping && this._multiple && keyCode === A && event.ctrlKey) {\n event.preventDefault();\n const hasDeselectedOptions = this.options.some(opt => !opt.disabled && !opt.selected);\n\n this.options.forEach(option => {\n if (!option.disabled) {\n hasDeselectedOptions ? option.select() : option.deselect();\n }\n });\n } else {\n const previouslyFocusedIndex = manager.activeItemIndex;\n\n manager.onKeydown(event);\n\n if (\n this._multiple &&\n isArrowKey &&\n event.shiftKey &&\n manager.activeItem &&\n manager.activeItemIndex !== previouslyFocusedIndex\n ) {\n manager.activeItem._selectViaInteraction();\n }\n }\n }\n\n /** Handles keyboard events coming from the overlay. */\n protected _handleOverlayKeydown(event: KeyboardEvent): void {\n // TODO(crisbeto): prior to #30363 this was being handled inside the overlay directive, but we\n // need control over the animation timing so we do it manually. We should remove the `keydown`\n // listener from `.mat-mdc-select-panel` and handle all the events here. That may cause\n // further test breakages so it's left for a follow-up.\n if (event.keyCode === ESCAPE && !hasModifierKey(event)) {\n event.preventDefault();\n this.close();\n }\n }\n\n _onFocus() {\n if (!this.disabled) {\n this._focused = true;\n this.stateChanges.next();\n }\n }\n\n /**\n * Calls the touched callback only if the panel is closed. Otherwise, the trigger will\n * \"blur\" to the panel when it opens, causing a false positive.\n */\n _onBlur() {\n this._focused = false;\n this._keyManager?.cancelTypeahead();\n\n if (!this.disabled && !this.panelOpen) {\n this._onTouched();\n this._changeDetectorRef.markForCheck();\n this.stateChanges.next();\n }\n }\n\n /** Returns the theme to be used on the panel. */\n _getPanelTheme(): string {\n return this._parentFormField ? `mat-${this._parentFormField.color}` : '';\n }\n\n /** Whether the select has a value. */\n get empty(): boolean {\n return !this._selectionModel || this._selectionModel.isEmpty();\n }\n\n private _initializeSelection(): void {\n // Defer setting the value in order to avoid the \"Expression\n // has changed after it was checked\" errors from Angular.\n Promise.resolve().then(() => {\n if (this.ngControl) {\n this._value = this.ngControl.value;\n }\n\n this._setSelectionByValue(this._value);\n this.stateChanges.next();\n });\n }\n\n /**\n * Sets the selected option based on a value. If no option can be\n * found with the designated value, the select trigger is cleared.\n */\n private _setSelectionByValue(value: any | any[]): void {\n this.options.forEach(option => option.setInactiveStyles());\n this._selectionModel.clear();\n\n if (this.multiple && value) {\n if (!Array.isArray(value) && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatSelectNonArrayValueError();\n }\n\n value.forEach((currentValue: any) => this._selectOptionByValue(currentValue));\n this._sortValues();\n } else {\n const correspondingOption = this._selectOptionByValue(value);\n\n // Shift focus to the active item. Note that we shouldn't do this in multiple\n // mode, because we don't know what option the user interacted with last.\n if (correspondingOption) {\n this._keyManager.updateActiveItem(correspondingOption);\n } else if (!this.panelOpen) {\n // Otherwise reset the highlighted option. Note that we only want to do this while\n // closed, because doing it while open can shift the user's focus unnecessarily.\n this._keyManager.updateActiveItem(-1);\n }\n }\n\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Finds and selects and option based on its value.\n * @returns Option that has the corresponding value.\n */\n private _selectOptionByValue(value: any): MatOption | undefined {\n const correspondingOption = this.options.find((option: MatOption) => {\n // Skip options that are already in the model. This allows us to handle cases\n // where the same primitive value is selected multiple times.\n if (this._selectionModel.isSelected(option)) {\n return false;\n }\n\n try {\n // Treat null as a special reset value.\n return (\n (option.value != null || this.canSelectNullableOptions) &&\n this._compareWith(option.value, value)\n );\n } catch (error) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n // Notify developers of errors in their comparator.\n console.warn(error);\n }\n return false;\n }\n });\n\n if (correspondingOption) {\n this._selectionModel.select(correspondingOption);\n }\n\n return correspondingOption;\n }\n\n /** Assigns a specific value to the select. Returns whether the value has changed. */\n private _assignValue(newValue: any | any[]): boolean {\n // Always re-assign an array, because it might have been mutated.\n if (newValue !== this._value || (this._multiple && Array.isArray(newValue))) {\n if (this.options) {\n this._setSelectionByValue(newValue);\n }\n\n this._value = newValue;\n return true;\n }\n return false;\n }\n\n // `skipPredicate` determines if key manager should avoid putting a given option in the tab\n // order. Allow disabled list items to receive focus via keyboard to align with WAI ARIA\n // recommendation.\n //\n // Normally WAI ARIA's instructions are to exclude disabled items from the tab order, but it\n // makes a few exceptions for compound widgets.\n //\n // From [Developing a Keyboard Interface](\n // https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/):\n // \"For the following composite widget elements, keep them focusable when disabled: Options in a\n // Listbox...\"\n //\n // The user can focus disabled options using the keyboard, but the user cannot click disabled\n // options.\n private _skipPredicate = (option: MatOption) => {\n if (this.panelOpen) {\n // Support keyboard focusing disabled options in an ARIA listbox.\n return false;\n }\n\n // When the panel is closed, skip over disabled options. Support options via the UP/DOWN arrow\n // keys on a closed select. ARIA listbox interaction pattern is less relevant when the panel is\n // closed.\n return option.disabled;\n };\n\n /** Gets how wide the overlay panel should be. */\n private _getOverlayWidth(\n preferredOrigin: ElementRef<ElementRef> | CdkOverlayOrigin | undefined,\n ): string | number {\n if (this.panelWidth === 'auto') {\n const refToMeasure =\n preferredOrigin instanceof CdkOverlayOrigin\n ? preferredOrigin.elementRef\n : preferredOrigin || this._elementRef;\n return refToMeasure.nativeElement.getBoundingClientRect().width;\n }\n\n return this.panelWidth === null ? '' : this.panelWidth;\n }\n /** Syncs the parent state with the individual options. */\n _syncParentProperties(): void {\n if (this.options) {\n for (const option of this.options) {\n option._changeDetectorRef.markForCheck();\n }\n }\n }\n\n /** Sets up a key manager to listen to keyboard events on the overlay panel. */\n private _initKeyManager() {\n this._keyManager = new ActiveDescendantKeyManager<MatOption>(this.options)\n .withTypeAhead(this.typeaheadDebounceInterval)\n .withVerticalOrientation()\n .withHorizontalOrientation(this._isRtl() ? 'rtl' : 'ltr')\n .withHomeAndEnd()\n .withPageUpDown()\n .withAllowedModifierKeys(['shiftKey'])\n .skipPredicate(this._skipPredicate);\n\n this._keyManager.tabOut.subscribe(() => {\n if (this.panelOpen) {\n // Select the active item when tabbing away. This is consistent with how the native\n // select behaves. Note that we only want to do this in single selection mode.\n if (!this.multiple && this._keyManager.activeItem) {\n this._keyManager.activeItem._selectViaInteraction();\n }\n\n // Restore focus to the trigger before closing. Ensures that the focus\n // position won't be lost if the user got focus into the overlay.\n this.focus();\n this.close();\n }\n });\n\n this._keyManager.change.subscribe(() => {\n if (this._panelOpen && this.panel) {\n this._scrollOptionIntoView(this._keyManager.activeItemIndex || 0);\n } else if (!this._panelOpen && !this.multiple && this._keyManager.activeItem) {\n this._keyManager.activeItem._selectViaInteraction();\n }\n });\n }\n\n /** Drops current option subscriptions and IDs and resets from scratch. */\n private _resetOptions(): void {\n const changedOrDestroyed = merge(this.options.changes, this._destroy);\n\n this.optionSelectionChanges.pipe(takeUntil(changedOrDestroyed)).subscribe(event => {\n this._onSelect(event.source, event.isUserInput);\n\n if (event.isUserInput && !this.multiple && this._panelOpen) {\n this.close();\n this.focus();\n }\n });\n\n // Listen to changes in the internal state of the options and react accordingly.\n // Handles cases like the labels of the selected options changing.\n merge(...this.options.map(option => option._stateChanges))\n .pipe(takeUntil(changedOrDestroyed))\n .subscribe(() => {\n // `_stateChanges` can fire as a result of a change in the label's DOM value which may\n // be the result of an expression changing. We have to use `detectChanges` in order\n // to avoid \"changed after checked\" errors (see #14793).\n this._changeDetectorRef.detectChanges();\n this.stateChanges.next();\n });\n }\n\n /** Invoked when an option is clicked. */\n private _onSelect(option: MatOption, isUserInput: boolean): void {\n const wasSelected = this._selectionModel.isSelected(option);\n\n if (!this.canSelectNullableOptions && option.value == null && !this._multiple) {\n option.deselect();\n this._selectionModel.clear();\n\n if (this.value != null) {\n this._propagateChanges(option.value);\n }\n } else {\n if (wasSelected !== option.selected) {\n option.selected\n ? this._selectionModel.select(option)\n : this._selectionModel.deselect(option);\n }\n\n if (isUserInput) {\n this._keyManager.setActiveItem(option);\n }\n\n if (this.multiple) {\n this._sortValues();\n\n if (isUserInput) {\n // In case the user selected the option with their mouse, we\n // want to restore focus back to the trigger, in order to\n // prevent the select keyboard controls from clashing with\n // the ones from `mat-option`.\n this.focus();\n }\n }\n }\n\n if (wasSelected !== this._selectionModel.isSelected(option)) {\n this._propagateChanges();\n }\n\n this.stateChanges.next();\n }\n\n /** Sorts the selected values in the selected based on their order in the panel. */\n private _sortValues() {\n if (this.multiple) {\n const options = this.options.toArray();\n\n this._selectionModel.sort((a, b) => {\n return this.sortComparator\n ? this.sortComparator(a, b, options)\n : options.indexOf(a) - options.indexOf(b);\n });\n this.stateChanges.next();\n }\n }\n\n /** Emits change event to set the model value. */\n private _propagateChanges(fallbackValue?: any): void {\n let valueToEmit: any;\n\n if (this.multiple) {\n valueToEmit = (this.selected as MatOption[]).map(option => option.value);\n } else {\n valueToEmit = this.selected ? (this.selected as MatOption).value : fallbackValue;\n }\n\n this._value = valueToEmit;\n this.valueChange.emit(valueToEmit);\n this._onChange(valueToEmit);\n this.selectionChange.emit(this._getChangeEvent(valueToEmit));\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Highlights the selected item. If no option is selected, it will highlight\n * the first *enabled* option.\n */\n private _highlightCorrectOption(): void {\n if (this._keyManager) {\n if (this.empty) {\n // Find the index of the first *enabled* option. Avoid calling `_keyManager.setActiveItem`\n // because it activates the first option that passes the skip predicate, rather than the\n // first *enabled* option.\n let firstEnabledOptionIndex = -1;\n for (let index = 0; index < this.options.length; index++) {\n const option = this.options.get(index)!;\n if (!option.disabled) {\n firstEnabledOptionIndex = index;\n break;\n }\n }\n\n this._keyManager.setActiveItem(firstEnabledOptionIndex);\n } else {\n this._keyManager.setActiveItem(this._selectionModel.selected[0]);\n }\n }\n }\n\n /** Whether the panel is allowed to open. */\n protected _canOpen(): boolean {\n return !this._panelOpen && !this.disabled && this.options?.length > 0 && !!this._overlayDir;\n }\n\n /** Focuses the select element. */\n focus(options?: FocusOptions): void {\n this._elementRef.nativeElement.focus(options);\n }\n\n /** Gets the aria-labelledby for the select panel. */\n _getPanelAriaLabelledby(): string | null {\n if (this.ariaLabel) {\n return null;\n }\n\n const labelId = this._parentFormField?.getLabelId() || null;\n const labelExpression = labelId ? labelId + ' ' : '';\n return this.ariaLabelledby ? labelExpression + this.ariaLabelledby : labelId;\n }\n\n /** Determines the `aria-activedescendant` to be set on the host. */\n _getAriaActiveDescendant(): string | null {\n if (this.panelOpen && this._keyManager && this._keyManager.activeItem) {\n return this._keyManager.activeItem.id;\n }\n\n return null;\n }\n\n /** Gets the aria-labelledby of the select component trigger. */\n private _getTriggerAriaLabelledby(): string | null {\n if (this.ariaLabel) {\n return null;\n }\n\n let value = this._parentFormField?.getLabelId() || '';\n\n if (this.ariaLabelledby) {\n value += ' ' + this.ariaLabelledby;\n }\n\n // The value should not be used for the trigger's aria-labelledby,\n // but this currently \"breaks\" accessibility tests since they complain\n // there is no aria-labelledby. This is because they are not setting an\n // appropriate label on the form field or select.\n // TODO: remove this conditional after fixing clients by ensuring their\n // selects have a label applied.\n if (!value) {\n value = this._valueId;\n }\n\n return value;\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get describedByIds(): string[] {\n const element = this._elementRef.nativeElement;\n const existingDescribedBy = element.getAttribute('aria-describedby');\n\n return existingDescribedBy?.split(' ') || [];\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n setDescribedByIds(ids: string[]) {\n if (ids.length) {\n this._elementRef.nativeElement.setAttribute('aria-describedby', ids.join(' '));\n } else {\n this._elementRef.nativeElement.removeAttribute('aria-describedby');\n }\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n onContainerClick() {\n this.focus();\n this.open();\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get shouldLabelFloat(): boolean {\n // Since the panel doesn't overlap the trigger, we\n // want the label to only float when there's a value.\n return this.panelOpen || !this.empty || (this.focused && !!this.placeholder);\n }\n}\n\n/**\n * Allows the user to customize the trigger that is displayed when the select has a value.\n */\n@Directive({\n selector: 'mat-select-trigger',\n providers: [{provide: MAT_SELECT_TRIGGER, useExisting: MatSelectTrigger}],\n})\nexport class MatSelectTrigger {}\n","<div cdk-overlay-origin\n class=\"mat-mdc-select-trigger\"\n (click)=\"open()\"\n #fallbackOverlayOrigin=\"cdkOverlayOrigin\"\n #trigger>\n\n <div class=\"mat-mdc-select-value\" [attr.id]=\"_valueId\">\n @if (empty) {\n <span class=\"mat-mdc-select-placeholder mat-mdc-select-min-line\">{{placeholder}}</span>\n } @else {\n <span class=\"mat-mdc-select-value-text\">\n @if (customTrigger) {\n <ng-content select=\"mat-select-trigger\"></ng-content>\n } @else {\n <span class=\"mat-mdc-select-min-line\">{{triggerValue}}</span>\n }\n </span>\n }\n </div>\n\n <div class=\"mat-mdc-select-arrow-wrapper\">\n <div class=\"mat-mdc-select-arrow\">\n <!-- Use an inline SVG, because it works better than a CSS triangle in high contrast mode. -->\n <svg viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" focusable=\"false\" aria-hidden=\"true\">\n <path d=\"M7 10l5 5 5-5z\"/>\n </svg>\n </div>\n </div>\n</div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayLockPosition\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayDisableClose]=\"true\"\n [cdkConnectedOverlayPanelClass]=\"_overlayPanelClass\"\n [cdkConnectedOverlayScrollStrategy]=\"_scrollStrategy\"\n [cdkConnectedOverlayOrigin]=\"_preferredOverlayOrigin || fallbackOverlayOrigin\"\n [cdkConnectedOverlayPositions]=\"_positions\"\n [cdkConnectedOverlayWidth]=\"_overlayWidth\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (detach)=\"close()\"\n (backdropClick)=\"close()\"\n (overlayKeydown)=\"_handleOverlayKeydown($event)\">\n <div\n #panel\n role=\"listbox\"\n tabindex=\"-1\"\n class=\"mat-mdc-select-panel mdc-menu-surface mdc-menu-surface--open {{ _getPanelTheme() }}\"\n [class.mat-select-panel-animations-enabled]=\"!_animationsDisabled\"\n [attr.id]=\"id + '-panel'\"\n [attr.aria-multiselectable]=\"multiple\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"_getPanelAriaLabelledby()\"\n [ngClass]=\"panelClass\"\n (keydown)=\"_handleKeydown($event)\">\n <ng-content></ng-content>\n </div>\n</ng-template>\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.dev/license\n */\n\nimport {OverlayModule} from '@angular/cdk/overlay';\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule, MatOptionModule} from '../core';\nimport {MatFormFieldModule} from '../form-field';\nimport {CdkScrollableModule} from '@angular/cdk/scrolling';\nimport {MatSelect, MatSelectTrigger, MAT_SELECT_SCROLL_STRATEGY_PROVIDER} from './select';\n\n@NgModule({\n imports: [OverlayModule, MatOptionModule, MatCommonModule, MatSelect, MatSelectTrigger],\n exports: [\n CdkScrollableModule,\n MatFormFieldModule,\n MatSelect,\n MatSelectTrigger,\n MatOptionModule,\n MatCommonModule,\n ],\n providers: [MAT_SELECT_SCROLL_STRATEGY_PROVIDER],\n})\nexport class MatSelectModule {}\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"module-B62K-792.mjs","sources":["../../../../../k8-fastbuild-ST-46c76129e412/bin/src/material/form-field/module.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {ObserversModule} from '@angular/cdk/observers';\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule} from '../core';\nimport {MatError} from './directives/error';\nimport {MatHint} from './directives/hint';\nimport {MatLabel} from './directives/label';\nimport {MatPrefix} from './directives/prefix';\nimport {MatSuffix} from './directives/suffix';\nimport {MatFormField} from './form-field';\n\n@NgModule({\n imports: [\n MatCommonModule,\n ObserversModule,\n MatFormField,\n MatLabel,\n MatError,\n MatHint,\n MatPrefix,\n MatSuffix,\n ],\n exports: [MatFormField, MatLabel, MatHint, MatError, MatPrefix, MatSuffix, MatCommonModule],\n})\nexport class MatFormFieldModule {}\n"],"names":[],"mappings":";;;;;;MA+Ba,kBAAkB,CAAA;uGAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAX3B,eAAe;YACf,eAAe;YACf,YAAY;YACZ,QAAQ;YACR,QAAQ;YACR,OAAO;YACP,SAAS;AACT,YAAA,SAAS,CAED,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,CAAA,EAAA,CAAA;AAE/E,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAX3B,eAAe;YACf,eAAe;AACf,YAAA,YAAY,EAO6D,eAAe,CAAA,EAAA,CAAA;;2FAE/E,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAb9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,eAAe;wBACf,eAAe;wBACf,YAAY;wBACZ,QAAQ;wBACR,QAAQ;wBACR,OAAO;wBACP,SAAS;wBACT,SAAS;AACV,qBAAA;AACD,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,CAAC;AAC5F,iBAAA;;;;;"}