@angular/material 20.0.0-next.0 → 20.0.0-next.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (368) hide show
  1. package/autocomplete/_autocomplete-theme.scss +4 -4
  2. package/autocomplete/index.d.ts +96 -126
  3. package/autocomplete/testing/index.d.ts +6 -11
  4. package/badge/_badge-theme.scss +5 -5
  5. package/badge/index.d.ts +8 -112
  6. package/badge/testing/index.d.ts +7 -8
  7. package/badge.d-49a8a74b.d.ts +98 -0
  8. package/bottom-sheet/_bottom-sheet-theme.scss +3 -3
  9. package/bottom-sheet/index.d.ts +88 -103
  10. package/bottom-sheet/testing/index.d.ts +4 -6
  11. package/button/_button-theme.scss +84 -32
  12. package/button/_fab-theme.scss +13 -13
  13. package/button/_icon-button-theme.scss +5 -5
  14. package/button/index.d.ts +10 -245
  15. package/button/testing/index.d.ts +13 -10
  16. package/button-toggle/_button-toggle-theme.scss +8 -8
  17. package/button-toggle/index.d.ts +12 -285
  18. package/button-toggle/testing/index.d.ts +38 -37
  19. package/button-toggle.d-edc8acff.d.ts +257 -0
  20. package/card/_card-theme.scss +12 -12
  21. package/card/index.d.ts +80 -117
  22. package/card/testing/index.d.ts +11 -15
  23. package/checkbox/_checkbox-theme.scss +10 -10
  24. package/checkbox/index.d.ts +43 -104
  25. package/checkbox/testing/index.d.ts +6 -10
  26. package/chips/_chips-theme.scss +14 -14
  27. package/chips/index.d.ts +599 -693
  28. package/chips/testing/index.d.ts +78 -93
  29. package/common-module.d-0e6515ae.d.ts +43 -0
  30. package/core/_core-theme.scss +2 -2
  31. package/core/index.d.ts +50 -979
  32. package/core/option/_optgroup-theme.scss +2 -2
  33. package/core/option/_option-theme.scss +4 -4
  34. package/core/ripple/_ripple-theme.scss +3 -3
  35. package/core/selection/pseudo-checkbox/_pseudo-checkbox-theme.scss +4 -4
  36. package/core/testing/index.d.ts +3 -65
  37. package/core/theming/_color-api-backwards-compatibility.scss +19 -8
  38. package/core/tokens/_density.scss +3 -0
  39. package/core/tokens/_token-definition.scss +1 -2
  40. package/core/tokens/_token-utils.scss +20 -5
  41. package/core/tokens/m2/_index.scss +2 -0
  42. package/core/tokens/m2/mat/_tonal-button.scss +110 -0
  43. package/core/tokens/m3/_index.scss +2 -0
  44. package/core/tokens/m3/definitions/_index.scss +1 -1
  45. package/core/tokens/m3/definitions/_md-comp-elevated-card.scss +3 -1
  46. package/core/tokens/m3/definitions/_md-sys-color.scss +44 -2
  47. package/core/tokens/m3/definitions/_md-sys-typescale.scss +20 -1
  48. package/core/tokens/m3/mat/_tonal-button.scss +101 -0
  49. package/date-adapter.d-c6835d41.d.ts +267 -0
  50. package/date-range-input-harness.d-549a9f7e.d.ts +278 -0
  51. package/datepicker/_datepicker-theme.scss +8 -7
  52. package/datepicker/index.d.ts +1332 -1482
  53. package/datepicker/testing/index.d.ts +5 -287
  54. package/dialog/_dialog-theme.scss +6 -6
  55. package/dialog/index.d.ts +59 -453
  56. package/dialog/testing/index.d.ts +22 -26
  57. package/dialog.d-57867441.d.ts +335 -0
  58. package/divider/_divider-theme.scss +2 -2
  59. package/divider/index.d.ts +6 -11
  60. package/divider/testing/index.d.ts +2 -16
  61. package/divider-harness.d-d34fede4.d.ts +14 -0
  62. package/error-options.d-448d9046.d.ts +17 -0
  63. package/expansion/_expansion-theme.scss +4 -4
  64. package/expansion/index.d.ts +139 -190
  65. package/expansion/testing/index.d.ts +25 -31
  66. package/fesm2022/autocomplete/testing.mjs +2 -1
  67. package/fesm2022/autocomplete/testing.mjs.map +1 -1
  68. package/fesm2022/autocomplete.mjs +56 -32
  69. package/fesm2022/autocomplete.mjs.map +1 -1
  70. package/fesm2022/badge/testing.mjs.map +1 -1
  71. package/fesm2022/badge.mjs +14 -17
  72. package/fesm2022/badge.mjs.map +1 -1
  73. package/fesm2022/bottom-sheet/testing.mjs.map +1 -1
  74. package/fesm2022/bottom-sheet.mjs +13 -15
  75. package/fesm2022/bottom-sheet.mjs.map +1 -1
  76. package/fesm2022/button/testing.mjs +34 -15
  77. package/fesm2022/button/testing.mjs.map +1 -1
  78. package/fesm2022/button-toggle/testing.mjs.map +1 -1
  79. package/fesm2022/button-toggle.mjs +22 -15
  80. package/fesm2022/button-toggle.mjs.map +1 -1
  81. package/fesm2022/button.mjs +14 -395
  82. package/fesm2022/button.mjs.map +1 -1
  83. package/fesm2022/card/testing.mjs.map +1 -1
  84. package/fesm2022/card.mjs +49 -51
  85. package/fesm2022/card.mjs.map +1 -1
  86. package/fesm2022/checkbox/testing.mjs.map +1 -1
  87. package/fesm2022/checkbox.mjs +32 -73
  88. package/fesm2022/checkbox.mjs.map +1 -1
  89. package/fesm2022/chips/testing.mjs.map +1 -1
  90. package/fesm2022/chips.mjs +51 -46
  91. package/fesm2022/chips.mjs.map +1 -1
  92. package/fesm2022/common-module-2d64df09.mjs +42 -0
  93. package/fesm2022/common-module-2d64df09.mjs.map +1 -0
  94. package/fesm2022/core/testing.mjs +3 -76
  95. package/fesm2022/core/testing.mjs.map +1 -1
  96. package/fesm2022/core.mjs +38 -1598
  97. package/fesm2022/core.mjs.map +1 -1
  98. package/fesm2022/date-formats-b618acb8.mjs +190 -0
  99. package/fesm2022/date-formats-b618acb8.mjs.map +1 -0
  100. package/fesm2022/date-range-input-harness-de70be6a.mjs +467 -0
  101. package/fesm2022/date-range-input-harness-de70be6a.mjs.map +1 -0
  102. package/fesm2022/datepicker/testing.mjs +5 -465
  103. package/fesm2022/datepicker/testing.mjs.map +1 -1
  104. package/fesm2022/datepicker.mjs +162 -131
  105. package/fesm2022/datepicker.mjs.map +1 -1
  106. package/fesm2022/dialog/testing.mjs +12 -1
  107. package/fesm2022/dialog/testing.mjs.map +1 -1
  108. package/fesm2022/dialog.mjs +14 -895
  109. package/fesm2022/dialog.mjs.map +1 -1
  110. package/fesm2022/divider/testing.mjs +2 -17
  111. package/fesm2022/divider/testing.mjs.map +1 -1
  112. package/fesm2022/divider-harness-8099453f.mjs +18 -0
  113. package/fesm2022/divider-harness-8099453f.mjs.map +1 -0
  114. package/fesm2022/divider.mjs +10 -12
  115. package/fesm2022/divider.mjs.map +1 -1
  116. package/fesm2022/error-options-4a00765e.mjs +29 -0
  117. package/fesm2022/error-options-4a00765e.mjs.map +1 -0
  118. package/fesm2022/error-state-8f4ce1af.mjs +37 -0
  119. package/fesm2022/error-state-8f4ce1af.mjs.map +1 -0
  120. package/fesm2022/expansion/testing.mjs.map +1 -1
  121. package/fesm2022/expansion.mjs +30 -32
  122. package/fesm2022/expansion.mjs.map +1 -1
  123. package/fesm2022/form-field/testing/control.mjs +2 -10
  124. package/fesm2022/form-field/testing/control.mjs.map +1 -1
  125. package/fesm2022/form-field/testing.mjs +7 -6
  126. package/fesm2022/form-field/testing.mjs.map +1 -1
  127. package/fesm2022/form-field-6d755764.mjs +1076 -0
  128. package/fesm2022/form-field-6d755764.mjs.map +1 -0
  129. package/fesm2022/form-field-control-harness-efefd4cf.mjs +11 -0
  130. package/fesm2022/form-field-control-harness-efefd4cf.mjs.map +1 -0
  131. package/fesm2022/form-field.mjs +14 -1110
  132. package/fesm2022/form-field.mjs.map +1 -1
  133. package/fesm2022/grid-list/testing.mjs +1 -1
  134. package/fesm2022/grid-list/testing.mjs.map +1 -1
  135. package/fesm2022/grid-list.mjs +30 -173
  136. package/fesm2022/grid-list.mjs.map +1 -1
  137. package/fesm2022/icon/testing.mjs +12 -12
  138. package/fesm2022/icon/testing.mjs.map +1 -1
  139. package/fesm2022/icon-button-0850d958.mjs +211 -0
  140. package/fesm2022/icon-button-0850d958.mjs.map +1 -0
  141. package/fesm2022/icon-module-3f77a24d.mjs +395 -0
  142. package/fesm2022/icon-module-3f77a24d.mjs.map +1 -0
  143. package/fesm2022/icon-registry-13a3b98e.mjs +639 -0
  144. package/fesm2022/icon-registry-13a3b98e.mjs.map +1 -0
  145. package/fesm2022/icon.mjs +11 -1016
  146. package/fesm2022/icon.mjs.map +1 -1
  147. package/fesm2022/index-1763d3a6.mjs +22 -0
  148. package/fesm2022/index-1763d3a6.mjs.map +1 -0
  149. package/fesm2022/index-4bc1d6d3.mjs +20 -0
  150. package/fesm2022/index-4bc1d6d3.mjs.map +1 -0
  151. package/fesm2022/input/testing.mjs +5 -113
  152. package/fesm2022/input/testing.mjs.map +1 -1
  153. package/fesm2022/input-harness-e68bb132.mjs +115 -0
  154. package/fesm2022/input-harness-e68bb132.mjs.map +1 -0
  155. package/fesm2022/input-value-accessor-8a79a24e.mjs +12 -0
  156. package/fesm2022/input-value-accessor-8a79a24e.mjs.map +1 -0
  157. package/fesm2022/input.mjs +21 -23
  158. package/fesm2022/input.mjs.map +1 -1
  159. package/fesm2022/internal-form-field-434c4039.mjs +27 -0
  160. package/fesm2022/internal-form-field-434c4039.mjs.map +1 -0
  161. package/fesm2022/line-d6afe347.mjs +59 -0
  162. package/fesm2022/line-d6afe347.mjs.map +1 -0
  163. package/fesm2022/list/testing.mjs +2 -2
  164. package/fesm2022/list/testing.mjs.map +1 -1
  165. package/fesm2022/list.mjs +59 -56
  166. package/fesm2022/list.mjs.map +1 -1
  167. package/fesm2022/menu/testing.mjs.map +1 -1
  168. package/fesm2022/menu.mjs +37 -25
  169. package/fesm2022/menu.mjs.map +1 -1
  170. package/fesm2022/module-1c16a0a9.mjs +1293 -0
  171. package/fesm2022/module-1c16a0a9.mjs.map +1 -0
  172. package/fesm2022/module-47e3be58.mjs +970 -0
  173. package/fesm2022/module-47e3be58.mjs.map +1 -0
  174. package/fesm2022/module-a5f9ab72.mjs +875 -0
  175. package/fesm2022/module-a5f9ab72.mjs.map +1 -0
  176. package/fesm2022/module-cf951a02.mjs +214 -0
  177. package/fesm2022/module-cf951a02.mjs.map +1 -0
  178. package/fesm2022/module-d757bba0.mjs +38 -0
  179. package/fesm2022/module-d757bba0.mjs.map +1 -0
  180. package/fesm2022/optgroup-harness-5e66b138.mjs +36 -0
  181. package/fesm2022/optgroup-harness-5e66b138.mjs.map +1 -0
  182. package/fesm2022/option-07c3c660.mjs +348 -0
  183. package/fesm2022/option-07c3c660.mjs.map +1 -0
  184. package/fesm2022/option-harness-3b7c1106.mjs +46 -0
  185. package/fesm2022/option-harness-3b7c1106.mjs.map +1 -0
  186. package/fesm2022/paginator/testing.mjs +4 -1
  187. package/fesm2022/paginator/testing.mjs.map +1 -1
  188. package/fesm2022/paginator.mjs +52 -22
  189. package/fesm2022/paginator.mjs.map +1 -1
  190. package/fesm2022/progress-bar/testing.mjs +0 -4
  191. package/fesm2022/progress-bar/testing.mjs.map +1 -1
  192. package/fesm2022/progress-bar.mjs +15 -13
  193. package/fesm2022/progress-bar.mjs.map +1 -1
  194. package/fesm2022/progress-spinner/testing.mjs +0 -4
  195. package/fesm2022/progress-spinner/testing.mjs.map +1 -1
  196. package/fesm2022/progress-spinner.mjs +15 -13
  197. package/fesm2022/progress-spinner.mjs.map +1 -1
  198. package/fesm2022/pseudo-checkbox-af5a4ea4.mjs +52 -0
  199. package/fesm2022/pseudo-checkbox-af5a4ea4.mjs.map +1 -0
  200. package/fesm2022/pseudo-checkbox-module-216fae38.mjs +20 -0
  201. package/fesm2022/pseudo-checkbox-module-216fae38.mjs.map +1 -0
  202. package/fesm2022/public-api-c5ab57f5.mjs +147 -0
  203. package/fesm2022/public-api-c5ab57f5.mjs.map +1 -0
  204. package/fesm2022/radio/testing.mjs.map +1 -1
  205. package/fesm2022/radio.mjs +23 -15
  206. package/fesm2022/radio.mjs.map +1 -1
  207. package/fesm2022/ripple-9939d1f5.mjs +639 -0
  208. package/fesm2022/ripple-9939d1f5.mjs.map +1 -0
  209. package/fesm2022/ripple-loader-f2078c66.mjs +165 -0
  210. package/fesm2022/ripple-loader-f2078c66.mjs.map +1 -0
  211. package/fesm2022/select/testing.mjs +5 -121
  212. package/fesm2022/select/testing.mjs.map +1 -1
  213. package/fesm2022/select-harness-69d47123.mjs +123 -0
  214. package/fesm2022/select-harness-69d47123.mjs.map +1 -0
  215. package/fesm2022/select.mjs +30 -1311
  216. package/fesm2022/select.mjs.map +1 -1
  217. package/fesm2022/sidenav/testing.mjs +1 -1
  218. package/fesm2022/sidenav/testing.mjs.map +1 -1
  219. package/fesm2022/sidenav.mjs +31 -31
  220. package/fesm2022/sidenav.mjs.map +1 -1
  221. package/fesm2022/slide-toggle/testing.mjs.map +1 -1
  222. package/fesm2022/slide-toggle.mjs +27 -75
  223. package/fesm2022/slide-toggle.mjs.map +1 -1
  224. package/fesm2022/slider/testing.mjs.map +1 -1
  225. package/fesm2022/slider.mjs +27 -23
  226. package/fesm2022/slider.mjs.map +1 -1
  227. package/fesm2022/snack-bar/testing.mjs.map +1 -1
  228. package/fesm2022/snack-bar.mjs +38 -30
  229. package/fesm2022/snack-bar.mjs.map +1 -1
  230. package/fesm2022/sort/testing.mjs.map +1 -1
  231. package/fesm2022/sort.mjs +26 -20
  232. package/fesm2022/sort.mjs.map +1 -1
  233. package/fesm2022/stepper/testing.mjs.map +1 -1
  234. package/fesm2022/stepper.mjs +52 -39
  235. package/fesm2022/stepper.mjs.map +1 -1
  236. package/fesm2022/structural-styles-d5ada3b3.mjs +18 -0
  237. package/fesm2022/structural-styles-d5ada3b3.mjs.map +1 -0
  238. package/fesm2022/table/testing.mjs.map +1 -1
  239. package/fesm2022/table.mjs +58 -60
  240. package/fesm2022/table.mjs.map +1 -1
  241. package/fesm2022/tabs/testing.mjs.map +1 -1
  242. package/fesm2022/tabs.mjs +54 -58
  243. package/fesm2022/tabs.mjs.map +1 -1
  244. package/fesm2022/timepicker/testing.mjs +1 -1
  245. package/fesm2022/timepicker/testing.mjs.map +1 -1
  246. package/fesm2022/timepicker.mjs +37 -26
  247. package/fesm2022/timepicker.mjs.map +1 -1
  248. package/fesm2022/toolbar/testing.mjs.map +1 -1
  249. package/fesm2022/toolbar.mjs +13 -15
  250. package/fesm2022/toolbar.mjs.map +1 -1
  251. package/fesm2022/tooltip/testing.mjs.map +1 -1
  252. package/fesm2022/tooltip.mjs +15 -960
  253. package/fesm2022/tooltip.mjs.map +1 -1
  254. package/fesm2022/tree/testing.mjs.map +1 -1
  255. package/fesm2022/tree.mjs +28 -30
  256. package/fesm2022/tree.mjs.map +1 -1
  257. package/form-field/_form-field-theme.scss +16 -16
  258. package/form-field/index.d.ts +16 -508
  259. package/form-field/testing/control/index.d.ts +2 -10
  260. package/form-field/testing/index.d.ts +19 -24
  261. package/form-field-control-harness.d-2d91f25a.d.ts +10 -0
  262. package/form-field-control.d-eb86711c.d.ts +62 -0
  263. package/form-field.d-2edbc094.d.ts +367 -0
  264. package/grid-list/_grid-list-theme.scss +1 -1
  265. package/grid-list/index.d.ts +128 -152
  266. package/grid-list/testing/index.d.ts +39 -44
  267. package/icon/_icon-theme.scss +2 -2
  268. package/icon/index.d.ts +9 -470
  269. package/icon/testing/index.d.ts +41 -44
  270. package/icon-module.d-aa3bbba0.d.ts +167 -0
  271. package/icon-registry.d-1dffe9de.d.ts +286 -0
  272. package/index.d-0536b706.d.ts +11 -0
  273. package/index.d-37e31cd3.d.ts +13 -0
  274. package/index.d.ts +2 -3
  275. package/input/index.d.ts +33 -62
  276. package/input/testing/index.d.ts +13 -71
  277. package/input-harness.d-4eecd1d3.d.ts +60 -0
  278. package/line.d-570a2537.d.ts +25 -0
  279. package/list/_list-theme.scss +15 -15
  280. package/list/index.d.ts +155 -244
  281. package/list/testing/index.d.ts +158 -180
  282. package/list-option-types.d-8739f903.d.ts +15 -0
  283. package/menu/_menu-theme.scss +3 -3
  284. package/menu/index.d.ts +183 -231
  285. package/menu/testing/index.d.ts +17 -23
  286. package/module.d-74a721b9.d.ts +326 -0
  287. package/module.d-792a497c.d.ts +213 -0
  288. package/module.d-ba05faa6.d.ts +448 -0
  289. package/module.d-c17c834e.d.ts +18 -0
  290. package/optgroup-harness.d-7f741f69.d.ts +31 -0
  291. package/option-harness.d-3d33fc9a.d.ts +34 -0
  292. package/option-parent.d-559ad5c5.d.ts +19 -0
  293. package/option.d-6f493d78.d.ts +146 -0
  294. package/package.json +2 -2
  295. package/paginator/_paginator-theme.scss +3 -3
  296. package/paginator/index.d.ts +31 -216
  297. package/paginator/testing/index.d.ts +14 -15
  298. package/paginator.d-40b1766e.d.ts +199 -0
  299. package/palette.d-ec4a617c.d.ts +4 -0
  300. package/prebuilt-themes/deeppurple-amber.css +1 -1
  301. package/prebuilt-themes/indigo-pink.css +1 -1
  302. package/prebuilt-themes/pink-bluegrey.css +1 -1
  303. package/prebuilt-themes/purple-green.css +1 -1
  304. package/progress-bar/_progress-bar-theme.scss +2 -2
  305. package/progress-bar/index.d.ts +40 -59
  306. package/progress-bar/testing/index.d.ts +7 -10
  307. package/progress-spinner/_progress-spinner-theme.scss +4 -4
  308. package/progress-spinner/index.d.ts +8 -110
  309. package/progress-spinner/testing/index.d.ts +10 -11
  310. package/progress-spinner.d-1fc040c5.d.ts +96 -0
  311. package/pseudo-checkbox-module.d-3abc0461.d.ts +44 -0
  312. package/radio/_radio-theme.scss +12 -12
  313. package/radio/index.d.ts +151 -170
  314. package/radio/testing/index.d.ts +61 -67
  315. package/ripple-loader.d-8aac2988.d.ts +48 -0
  316. package/ripple.d-2fb57d04.d.ts +255 -0
  317. package/schematics/ng-add/index.js +1 -1
  318. package/schematics/ng-add/index.mjs +1 -1
  319. package/schematics/ng-generate/address-form/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.html.template +2 -2
  320. package/schematics/ng-generate/dashboard/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.html.template +1 -1
  321. package/schematics/ng-generate/navigation/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.html.template +1 -1
  322. package/schematics/ng-generate/theme-color/index_bundled.js +2 -2
  323. package/schematics/ng-generate/theme-color/schema.json +10 -0
  324. package/schematics/ng-generate/tree/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.html.template +2 -2
  325. package/schematics/ng-update/index_bundled.js +31 -31
  326. package/select/_select-theme.scss +6 -6
  327. package/select/index.d.ts +25 -505
  328. package/select/testing/index.d.ts +5 -67
  329. package/select-harness.d-7441a7ac.d.ts +63 -0
  330. package/sidenav/_sidenav-theme.scss +2 -2
  331. package/sidenav/index.d.ts +49 -92
  332. package/sidenav/testing/index.d.ts +58 -63
  333. package/slide-toggle/_slide-toggle-theme.scss +10 -10
  334. package/slide-toggle/index.d.ts +39 -110
  335. package/slide-toggle/testing/index.d.ts +17 -21
  336. package/slider/_slider-theme.scss +10 -10
  337. package/slider/index.d.ts +281 -328
  338. package/slider/testing/index.d.ts +42 -47
  339. package/snack-bar/_snack-bar-theme.scss +4 -4
  340. package/snack-bar/index.d.ts +152 -185
  341. package/snack-bar/testing/index.d.ts +7 -9
  342. package/sort/_sort-theme.scss +3 -3
  343. package/sort/index.d.ts +61 -169
  344. package/sort/testing/index.d.ts +22 -25
  345. package/sort-direction.d-f4ce4649.d.ts +3 -0
  346. package/sort.d-c2b79a45.d.ts +87 -0
  347. package/stepper/_stepper-theme.scss +5 -5
  348. package/stepper/index.d.ts +115 -167
  349. package/stepper/testing/index.d.ts +43 -52
  350. package/table/_table-theme.scss +4 -4
  351. package/table/index.d.ts +97 -156
  352. package/table/testing/index.d.ts +64 -78
  353. package/tabs/_tabs-theme.scss +16 -16
  354. package/tabs/index.d.ts +309 -383
  355. package/tabs/testing/index.d.ts +67 -76
  356. package/timepicker/_timepicker-theme.scss +4 -4
  357. package/timepicker/index.d.ts +127 -160
  358. package/timepicker/testing/index.d.ts +20 -26
  359. package/toolbar/_toolbar-theme.scss +4 -4
  360. package/toolbar/index.d.ts +15 -26
  361. package/toolbar/testing/index.d.ts +13 -16
  362. package/tooltip/_tooltip-theme.scss +4 -4
  363. package/tooltip/index.d.ts +11 -355
  364. package/tooltip/testing/index.d.ts +7 -10
  365. package/tree/_tree-theme.scss +3 -3
  366. package/tree/index.d.ts +117 -163
  367. package/tree/testing/index.d.ts +52 -58
  368. /package/core/tokens/m3/definitions/{unused/_md-comp-filled-tonal-button.scss → _md-comp-filled-tonal-button.scss} +0 -0
@@ -0,0 +1,1076 @@
1
+ import { Directionality } from '@angular/cdk/bidi';
2
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
3
+ import { Platform } from '@angular/cdk/platform';
4
+ import { NgTemplateOutlet } from '@angular/common';
5
+ import * as i0 from '@angular/core';
6
+ import { Directive, InjectionToken, inject, HostAttributeToken, ElementRef, Input, NgZone, Renderer2, Component, ChangeDetectionStrategy, ViewEncapsulation, ViewChild, ChangeDetectorRef, Injector, contentChild, ANIMATION_MODULE_TYPE, computed, afterRender, ContentChild, ContentChildren } from '@angular/core';
7
+ import { _IdGenerator } from '@angular/cdk/a11y';
8
+ import { Subscription, Subject, merge } from 'rxjs';
9
+ import { startWith, map, pairwise, filter, takeUntil } from 'rxjs/operators';
10
+ import { SharedResizeObserver } from '@angular/cdk/observers/private';
11
+
12
+ /** The floating label for a `mat-form-field`. */
13
+ class MatLabel {
14
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.1", ngImport: i0, type: MatLabel, deps: [], target: i0.ɵɵFactoryTarget.Directive });
15
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.0-next.1", type: MatLabel, isStandalone: true, selector: "mat-label", ngImport: i0 });
16
+ }
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.1", ngImport: i0, type: MatLabel, decorators: [{
18
+ type: Directive,
19
+ args: [{
20
+ selector: 'mat-label',
21
+ }]
22
+ }] });
23
+
24
+ /**
25
+ * Injection token that can be used to reference instances of `MatError`. It serves as
26
+ * alternative token to the actual `MatError` class which could cause unnecessary
27
+ * retention of the class and its directive metadata.
28
+ */
29
+ const MAT_ERROR = new InjectionToken('MatError');
30
+ /** Single error message to be shown underneath the form-field. */
31
+ class MatError {
32
+ id = inject(_IdGenerator).getId('mat-mdc-error-');
33
+ constructor() {
34
+ const ariaLive = inject(new HostAttributeToken('aria-live'), { optional: true });
35
+ // If no aria-live value is set add 'polite' as a default. This is preferred over setting
36
+ // role='alert' so that screen readers do not interrupt the current task to read this aloud.
37
+ if (!ariaLive) {
38
+ const elementRef = inject(ElementRef);
39
+ elementRef.nativeElement.setAttribute('aria-live', 'polite');
40
+ }
41
+ }
42
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.1", ngImport: i0, type: MatError, deps: [], target: i0.ɵɵFactoryTarget.Directive });
43
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.0-next.1", type: MatError, isStandalone: true, selector: "mat-error, [matError]", inputs: { id: "id" }, host: { attributes: { "aria-atomic": "true" }, properties: { "id": "id" }, classAttribute: "mat-mdc-form-field-error mat-mdc-form-field-bottom-align" }, providers: [{ provide: MAT_ERROR, useExisting: MatError }], ngImport: i0 });
44
+ }
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.1", ngImport: i0, type: MatError, decorators: [{
46
+ type: Directive,
47
+ args: [{
48
+ selector: 'mat-error, [matError]',
49
+ host: {
50
+ 'class': 'mat-mdc-form-field-error mat-mdc-form-field-bottom-align',
51
+ 'aria-atomic': 'true',
52
+ '[id]': 'id',
53
+ },
54
+ providers: [{ provide: MAT_ERROR, useExisting: MatError }],
55
+ }]
56
+ }], ctorParameters: () => [], propDecorators: { id: [{
57
+ type: Input
58
+ }] } });
59
+
60
+ /** Hint text to be shown underneath the form field control. */
61
+ class MatHint {
62
+ /** Whether to align the hint label at the start or end of the line. */
63
+ align = 'start';
64
+ /** Unique ID for the hint. Used for the aria-describedby on the form field control. */
65
+ id = inject(_IdGenerator).getId('mat-mdc-hint-');
66
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.1", ngImport: i0, type: MatHint, deps: [], target: i0.ɵɵFactoryTarget.Directive });
67
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.0-next.1", type: MatHint, isStandalone: true, selector: "mat-hint", inputs: { align: "align", id: "id" }, host: { properties: { "class.mat-mdc-form-field-hint-end": "align === \"end\"", "id": "id", "attr.align": "null" }, classAttribute: "mat-mdc-form-field-hint mat-mdc-form-field-bottom-align" }, ngImport: i0 });
68
+ }
69
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.1", ngImport: i0, type: MatHint, decorators: [{
70
+ type: Directive,
71
+ args: [{
72
+ selector: 'mat-hint',
73
+ host: {
74
+ 'class': 'mat-mdc-form-field-hint mat-mdc-form-field-bottom-align',
75
+ '[class.mat-mdc-form-field-hint-end]': 'align === "end"',
76
+ '[id]': 'id',
77
+ // Remove align attribute to prevent it from interfering with layout.
78
+ '[attr.align]': 'null',
79
+ },
80
+ }]
81
+ }], propDecorators: { align: [{
82
+ type: Input
83
+ }], id: [{
84
+ type: Input
85
+ }] } });
86
+
87
+ /**
88
+ * Injection token that can be used to reference instances of `MatPrefix`. It serves as
89
+ * alternative token to the actual `MatPrefix` class which could cause unnecessary
90
+ * retention of the class and its directive metadata.
91
+ */
92
+ const MAT_PREFIX = new InjectionToken('MatPrefix');
93
+ /** Prefix to be placed in front of the form field. */
94
+ class MatPrefix {
95
+ set _isTextSelector(value) {
96
+ this._isText = true;
97
+ }
98
+ _isText = false;
99
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.1", ngImport: i0, type: MatPrefix, deps: [], target: i0.ɵɵFactoryTarget.Directive });
100
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.0-next.1", type: MatPrefix, isStandalone: true, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: { _isTextSelector: ["matTextPrefix", "_isTextSelector"] }, providers: [{ provide: MAT_PREFIX, useExisting: MatPrefix }], ngImport: i0 });
101
+ }
102
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.1", ngImport: i0, type: MatPrefix, decorators: [{
103
+ type: Directive,
104
+ args: [{
105
+ selector: '[matPrefix], [matIconPrefix], [matTextPrefix]',
106
+ providers: [{ provide: MAT_PREFIX, useExisting: MatPrefix }],
107
+ }]
108
+ }], propDecorators: { _isTextSelector: [{
109
+ type: Input,
110
+ args: ['matTextPrefix']
111
+ }] } });
112
+
113
+ /**
114
+ * Injection token that can be used to reference instances of `MatSuffix`. It serves as
115
+ * alternative token to the actual `MatSuffix` class which could cause unnecessary
116
+ * retention of the class and its directive metadata.
117
+ */
118
+ const MAT_SUFFIX = new InjectionToken('MatSuffix');
119
+ /** Suffix to be placed at the end of the form field. */
120
+ class MatSuffix {
121
+ set _isTextSelector(value) {
122
+ this._isText = true;
123
+ }
124
+ _isText = false;
125
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.1", ngImport: i0, type: MatSuffix, deps: [], target: i0.ɵɵFactoryTarget.Directive });
126
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.0-next.1", type: MatSuffix, isStandalone: true, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: { _isTextSelector: ["matTextSuffix", "_isTextSelector"] }, providers: [{ provide: MAT_SUFFIX, useExisting: MatSuffix }], ngImport: i0 });
127
+ }
128
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.1", ngImport: i0, type: MatSuffix, decorators: [{
129
+ type: Directive,
130
+ args: [{
131
+ selector: '[matSuffix], [matIconSuffix], [matTextSuffix]',
132
+ providers: [{ provide: MAT_SUFFIX, useExisting: MatSuffix }],
133
+ }]
134
+ }], propDecorators: { _isTextSelector: [{
135
+ type: Input,
136
+ args: ['matTextSuffix']
137
+ }] } });
138
+
139
+ /** An injion token for the parent form-field. */
140
+ const FLOATING_LABEL_PARENT = new InjectionToken('FloatingLabelParent');
141
+ /**
142
+ * Internal directive that maintains a MDC floating label. This directive does not
143
+ * use the `MDCFloatingLabelFoundation` class, as it is not worth the size cost of
144
+ * including it just to measure the label width and toggle some classes.
145
+ *
146
+ * The use of a directive allows us to conditionally render a floating label in the
147
+ * template without having to manually manage instantiation and destruction of the
148
+ * floating label component based on.
149
+ *
150
+ * The component is responsible for setting up the floating label styles, measuring label
151
+ * width for the outline notch, and providing inputs that can be used to toggle the
152
+ * label's floating or required state.
153
+ */
154
+ class MatFormFieldFloatingLabel {
155
+ _elementRef = inject(ElementRef);
156
+ /** Whether the label is floating. */
157
+ get floating() {
158
+ return this._floating;
159
+ }
160
+ set floating(value) {
161
+ this._floating = value;
162
+ if (this.monitorResize) {
163
+ this._handleResize();
164
+ }
165
+ }
166
+ _floating = false;
167
+ /** Whether to monitor for resize events on the floating label. */
168
+ get monitorResize() {
169
+ return this._monitorResize;
170
+ }
171
+ set monitorResize(value) {
172
+ this._monitorResize = value;
173
+ if (this._monitorResize) {
174
+ this._subscribeToResize();
175
+ }
176
+ else {
177
+ this._resizeSubscription.unsubscribe();
178
+ }
179
+ }
180
+ _monitorResize = false;
181
+ /** The shared ResizeObserver. */
182
+ _resizeObserver = inject(SharedResizeObserver);
183
+ /** The Angular zone. */
184
+ _ngZone = inject(NgZone);
185
+ /** The parent form-field. */
186
+ _parent = inject(FLOATING_LABEL_PARENT);
187
+ /** The current resize event subscription. */
188
+ _resizeSubscription = new Subscription();
189
+ constructor() { }
190
+ ngOnDestroy() {
191
+ this._resizeSubscription.unsubscribe();
192
+ }
193
+ /** Gets the width of the label. Used for the outline notch. */
194
+ getWidth() {
195
+ return estimateScrollWidth(this._elementRef.nativeElement);
196
+ }
197
+ /** Gets the HTML element for the floating label. */
198
+ get element() {
199
+ return this._elementRef.nativeElement;
200
+ }
201
+ /** Handles resize events from the ResizeObserver. */
202
+ _handleResize() {
203
+ // In the case where the label grows in size, the following sequence of events occurs:
204
+ // 1. The label grows by 1px triggering the ResizeObserver
205
+ // 2. The notch is expanded to accommodate the entire label
206
+ // 3. The label expands to its full width, triggering the ResizeObserver again
207
+ //
208
+ // This is expected, but If we allow this to all happen within the same macro task it causes an
209
+ // error: `ResizeObserver loop limit exceeded`. Therefore we push the notch resize out until
210
+ // the next macro task.
211
+ setTimeout(() => this._parent._handleLabelResized());
212
+ }
213
+ /** Subscribes to resize events. */
214
+ _subscribeToResize() {
215
+ this._resizeSubscription.unsubscribe();
216
+ this._ngZone.runOutsideAngular(() => {
217
+ this._resizeSubscription = this._resizeObserver
218
+ .observe(this._elementRef.nativeElement, { box: 'border-box' })
219
+ .subscribe(() => this._handleResize());
220
+ });
221
+ }
222
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.1", ngImport: i0, type: MatFormFieldFloatingLabel, deps: [], target: i0.ɵɵFactoryTarget.Directive });
223
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.0-next.1", type: MatFormFieldFloatingLabel, isStandalone: true, selector: "label[matFormFieldFloatingLabel]", inputs: { floating: "floating", monitorResize: "monitorResize" }, host: { properties: { "class.mdc-floating-label--float-above": "floating" }, classAttribute: "mdc-floating-label mat-mdc-floating-label" }, ngImport: i0 });
224
+ }
225
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.1", ngImport: i0, type: MatFormFieldFloatingLabel, decorators: [{
226
+ type: Directive,
227
+ args: [{
228
+ selector: 'label[matFormFieldFloatingLabel]',
229
+ host: {
230
+ 'class': 'mdc-floating-label mat-mdc-floating-label',
231
+ '[class.mdc-floating-label--float-above]': 'floating',
232
+ },
233
+ }]
234
+ }], ctorParameters: () => [], propDecorators: { floating: [{
235
+ type: Input
236
+ }], monitorResize: [{
237
+ type: Input
238
+ }] } });
239
+ /**
240
+ * Estimates the scroll width of an element.
241
+ * via https://github.com/material-components/material-components-web/blob/c0a11ef0d000a098fd0c372be8f12d6a99302855/packages/mdc-dom/ponyfill.ts
242
+ */
243
+ function estimateScrollWidth(element) {
244
+ // Check the offsetParent. If the element inherits display: none from any
245
+ // parent, the offsetParent property will be null (see
246
+ // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetParent).
247
+ // This check ensures we only clone the node when necessary.
248
+ const htmlEl = element;
249
+ if (htmlEl.offsetParent !== null) {
250
+ return htmlEl.scrollWidth;
251
+ }
252
+ const clone = htmlEl.cloneNode(true);
253
+ clone.style.setProperty('position', 'absolute');
254
+ clone.style.setProperty('transform', 'translate(-9999px, -9999px)');
255
+ document.documentElement.appendChild(clone);
256
+ const scrollWidth = clone.scrollWidth;
257
+ clone.remove();
258
+ return scrollWidth;
259
+ }
260
+
261
+ /** Class added when the line ripple is active. */
262
+ const ACTIVATE_CLASS = 'mdc-line-ripple--active';
263
+ /** Class added when the line ripple is being deactivated. */
264
+ const DEACTIVATING_CLASS = 'mdc-line-ripple--deactivating';
265
+ /**
266
+ * Internal directive that creates an instance of the MDC line-ripple component. Using a
267
+ * directive allows us to conditionally render a line-ripple in the template without having
268
+ * to manually create and destroy the `MDCLineRipple` component whenever the condition changes.
269
+ *
270
+ * The directive sets up the styles for the line-ripple and provides an API for activating
271
+ * and deactivating the line-ripple.
272
+ */
273
+ class MatFormFieldLineRipple {
274
+ _elementRef = inject(ElementRef);
275
+ _cleanupTransitionEnd;
276
+ constructor() {
277
+ const ngZone = inject(NgZone);
278
+ const renderer = inject(Renderer2);
279
+ ngZone.runOutsideAngular(() => {
280
+ this._cleanupTransitionEnd = renderer.listen(this._elementRef.nativeElement, 'transitionend', this._handleTransitionEnd);
281
+ });
282
+ }
283
+ activate() {
284
+ const classList = this._elementRef.nativeElement.classList;
285
+ classList.remove(DEACTIVATING_CLASS);
286
+ classList.add(ACTIVATE_CLASS);
287
+ }
288
+ deactivate() {
289
+ this._elementRef.nativeElement.classList.add(DEACTIVATING_CLASS);
290
+ }
291
+ _handleTransitionEnd = (event) => {
292
+ const classList = this._elementRef.nativeElement.classList;
293
+ const isDeactivating = classList.contains(DEACTIVATING_CLASS);
294
+ if (event.propertyName === 'opacity' && isDeactivating) {
295
+ classList.remove(ACTIVATE_CLASS, DEACTIVATING_CLASS);
296
+ }
297
+ };
298
+ ngOnDestroy() {
299
+ this._cleanupTransitionEnd();
300
+ }
301
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.1", ngImport: i0, type: MatFormFieldLineRipple, deps: [], target: i0.ɵɵFactoryTarget.Directive });
302
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.0-next.1", type: MatFormFieldLineRipple, isStandalone: true, selector: "div[matFormFieldLineRipple]", host: { classAttribute: "mdc-line-ripple" }, ngImport: i0 });
303
+ }
304
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.1", ngImport: i0, type: MatFormFieldLineRipple, decorators: [{
305
+ type: Directive,
306
+ args: [{
307
+ selector: 'div[matFormFieldLineRipple]',
308
+ host: {
309
+ 'class': 'mdc-line-ripple',
310
+ },
311
+ }]
312
+ }], ctorParameters: () => [] });
313
+
314
+ /**
315
+ * Internal component that creates an instance of the MDC notched-outline component.
316
+ *
317
+ * The component sets up the HTML structure and styles for the notched-outline. It provides
318
+ * inputs to toggle the notch state and width.
319
+ */
320
+ class MatFormFieldNotchedOutline {
321
+ _elementRef = inject(ElementRef);
322
+ _ngZone = inject(NgZone);
323
+ /** Whether the notch should be opened. */
324
+ open = false;
325
+ _notch;
326
+ constructor() { }
327
+ ngAfterViewInit() {
328
+ const label = this._elementRef.nativeElement.querySelector('.mdc-floating-label');
329
+ if (label) {
330
+ this._elementRef.nativeElement.classList.add('mdc-notched-outline--upgraded');
331
+ if (typeof requestAnimationFrame === 'function') {
332
+ label.style.transitionDuration = '0s';
333
+ this._ngZone.runOutsideAngular(() => {
334
+ requestAnimationFrame(() => (label.style.transitionDuration = ''));
335
+ });
336
+ }
337
+ }
338
+ else {
339
+ this._elementRef.nativeElement.classList.add('mdc-notched-outline--no-label');
340
+ }
341
+ }
342
+ _setNotchWidth(labelWidth) {
343
+ if (!this.open || !labelWidth) {
344
+ this._notch.nativeElement.style.width = '';
345
+ }
346
+ else {
347
+ const NOTCH_ELEMENT_PADDING = 8;
348
+ const NOTCH_ELEMENT_BORDER = 1;
349
+ this._notch.nativeElement.style.width = `calc(${labelWidth}px * var(--mat-mdc-form-field-floating-label-scale, 0.75) + ${NOTCH_ELEMENT_PADDING + NOTCH_ELEMENT_BORDER}px)`;
350
+ }
351
+ }
352
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.1", ngImport: i0, type: MatFormFieldNotchedOutline, deps: [], target: i0.ɵɵFactoryTarget.Component });
353
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.0-next.1", type: MatFormFieldNotchedOutline, isStandalone: true, selector: "div[matFormFieldNotchedOutline]", inputs: { open: ["matFormFieldNotchedOutlineOpen", "open"] }, host: { properties: { "class.mdc-notched-outline--notched": "open" }, classAttribute: "mdc-notched-outline" }, viewQueries: [{ propertyName: "_notch", first: true, predicate: ["notch"], descendants: true }], ngImport: i0, template: "<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", changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
354
+ }
355
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.1", ngImport: i0, type: MatFormFieldNotchedOutline, decorators: [{
356
+ type: Component,
357
+ args: [{ selector: 'div[matFormFieldNotchedOutline]', host: {
358
+ 'class': 'mdc-notched-outline',
359
+ // Besides updating the notch state through the MDC component, we toggle this class through
360
+ // a host binding in order to ensure that the notched-outline renders correctly on the server.
361
+ '[class.mdc-notched-outline--notched]': 'open',
362
+ }, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<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" }]
363
+ }], ctorParameters: () => [], propDecorators: { open: [{
364
+ type: Input,
365
+ args: ['matFormFieldNotchedOutlineOpen']
366
+ }], _notch: [{
367
+ type: ViewChild,
368
+ args: ['notch']
369
+ }] } });
370
+
371
+ /** An interface which allows a control to work inside of a `MatFormField`. */
372
+ class MatFormFieldControl {
373
+ /** The value of the control. */
374
+ value;
375
+ /**
376
+ * Stream that emits whenever the state of the control changes such that the parent `MatFormField`
377
+ * needs to run change detection.
378
+ */
379
+ stateChanges;
380
+ /** The element ID for this control. */
381
+ id;
382
+ /** The placeholder for this control. */
383
+ placeholder;
384
+ /** Gets the AbstractControlDirective for this control. */
385
+ ngControl;
386
+ /** Whether the control is focused. */
387
+ focused;
388
+ /** Whether the control is empty. */
389
+ empty;
390
+ /** Whether the `MatFormField` label should try to float. */
391
+ shouldLabelFloat;
392
+ /** Whether the control is required. */
393
+ required;
394
+ /** Whether the control is disabled. */
395
+ disabled;
396
+ /** Whether the control is in an error state. */
397
+ errorState;
398
+ /**
399
+ * An optional name for the control type that can be used to distinguish `mat-form-field` elements
400
+ * based on their control type. The form field will add a class,
401
+ * `mat-form-field-type-{{controlType}}` to its root element.
402
+ */
403
+ controlType;
404
+ /**
405
+ * Whether the input is currently in an autofilled state. If property is not present on the
406
+ * control it is assumed to be false.
407
+ */
408
+ autofilled;
409
+ /**
410
+ * Value of `aria-describedby` that should be merged with the described-by ids
411
+ * which are set by the form-field.
412
+ */
413
+ userAriaDescribedBy;
414
+ /**
415
+ * Whether to automatically assign the ID of the form field as the `for` attribute
416
+ * on the `<label>` inside the form field. Set this to true to prevent the form
417
+ * field from associating the label with non-native elements.
418
+ */
419
+ disableAutomaticLabeling;
420
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.1", ngImport: i0, type: MatFormFieldControl, deps: [], target: i0.ɵɵFactoryTarget.Directive });
421
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.0-next.1", type: MatFormFieldControl, isStandalone: true, ngImport: i0 });
422
+ }
423
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.1", ngImport: i0, type: MatFormFieldControl, decorators: [{
424
+ type: Directive
425
+ }] });
426
+
427
+ /** @docs-private */
428
+ function getMatFormFieldPlaceholderConflictError() {
429
+ return Error('Placeholder attribute and child element were both specified.');
430
+ }
431
+ /** @docs-private */
432
+ function getMatFormFieldDuplicatedHintError(align) {
433
+ return Error(`A hint was already declared for 'align="${align}"'.`);
434
+ }
435
+ /** @docs-private */
436
+ function getMatFormFieldMissingControlError() {
437
+ return Error('mat-form-field must contain a MatFormFieldControl.');
438
+ }
439
+
440
+ /**
441
+ * Injection token that can be used to inject an instances of `MatFormField`. It serves
442
+ * as alternative token to the actual `MatFormField` class which would cause unnecessary
443
+ * retention of the `MatFormField` class and its component metadata.
444
+ */
445
+ const MAT_FORM_FIELD = new InjectionToken('MatFormField');
446
+ /**
447
+ * Injection token that can be used to configure the
448
+ * default options for all form field within an app.
449
+ */
450
+ const MAT_FORM_FIELD_DEFAULT_OPTIONS = new InjectionToken('MAT_FORM_FIELD_DEFAULT_OPTIONS');
451
+ /** Default appearance used by the form field. */
452
+ const DEFAULT_APPEARANCE = 'fill';
453
+ /**
454
+ * Whether the label for form fields should by default float `always`,
455
+ * `never`, or `auto`.
456
+ */
457
+ const DEFAULT_FLOAT_LABEL = 'auto';
458
+ /** Default way that the subscript element height is set. */
459
+ const DEFAULT_SUBSCRIPT_SIZING = 'fixed';
460
+ /**
461
+ * Default transform for docked floating labels in a MDC text-field. This value has been
462
+ * extracted from the MDC text-field styles because we programmatically modify the docked
463
+ * label transform, but do not want to accidentally discard the default label transform.
464
+ */
465
+ const FLOATING_LABEL_DEFAULT_DOCKED_TRANSFORM = `translateY(-50%)`;
466
+ /** Container for form controls that applies Material Design styling and behavior. */
467
+ class MatFormField {
468
+ _elementRef = inject(ElementRef);
469
+ _changeDetectorRef = inject(ChangeDetectorRef);
470
+ _dir = inject(Directionality);
471
+ _platform = inject(Platform);
472
+ _idGenerator = inject(_IdGenerator);
473
+ _ngZone = inject(NgZone);
474
+ _injector = inject(Injector);
475
+ _defaults = inject(MAT_FORM_FIELD_DEFAULT_OPTIONS, {
476
+ optional: true,
477
+ });
478
+ _textField;
479
+ _iconPrefixContainer;
480
+ _textPrefixContainer;
481
+ _iconSuffixContainer;
482
+ _textSuffixContainer;
483
+ _floatingLabel;
484
+ _notchedOutline;
485
+ _lineRipple;
486
+ _formFieldControl;
487
+ _prefixChildren;
488
+ _suffixChildren;
489
+ _errorChildren;
490
+ _hintChildren;
491
+ _labelChild = contentChild(MatLabel);
492
+ /** Whether the required marker should be hidden. */
493
+ get hideRequiredMarker() {
494
+ return this._hideRequiredMarker;
495
+ }
496
+ set hideRequiredMarker(value) {
497
+ this._hideRequiredMarker = coerceBooleanProperty(value);
498
+ }
499
+ _hideRequiredMarker = false;
500
+ /**
501
+ * Theme color of the form field. This API is supported in M2 themes only, it
502
+ * has no effect in M3 themes. For color customization in M3, see https://material.angular.io/components/form-field/styling.
503
+ *
504
+ * For information on applying color variants in M3, see
505
+ * https://material.angular.io/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants
506
+ */
507
+ color = 'primary';
508
+ /** Whether the label should always float or float as the user types. */
509
+ get floatLabel() {
510
+ return this._floatLabel || this._defaults?.floatLabel || DEFAULT_FLOAT_LABEL;
511
+ }
512
+ set floatLabel(value) {
513
+ if (value !== this._floatLabel) {
514
+ this._floatLabel = value;
515
+ // For backwards compatibility. Custom form field controls or directives might set
516
+ // the "floatLabel" input and expect the form field view to be updated automatically.
517
+ // e.g. autocomplete trigger. Ideally we'd get rid of this and the consumers would just
518
+ // emit the "stateChanges" observable. TODO(devversion): consider removing.
519
+ this._changeDetectorRef.markForCheck();
520
+ }
521
+ }
522
+ _floatLabel;
523
+ /** The form field appearance style. */
524
+ get appearance() {
525
+ return this._appearance;
526
+ }
527
+ set appearance(value) {
528
+ const oldValue = this._appearance;
529
+ const newAppearance = value || this._defaults?.appearance || DEFAULT_APPEARANCE;
530
+ if (typeof ngDevMode === 'undefined' || ngDevMode) {
531
+ if (newAppearance !== 'fill' && newAppearance !== 'outline') {
532
+ throw new Error(`MatFormField: Invalid appearance "${newAppearance}", valid values are "fill" or "outline".`);
533
+ }
534
+ }
535
+ this._appearance = newAppearance;
536
+ if (this._appearance === 'outline' && this._appearance !== oldValue) {
537
+ // If the appearance has been switched to `outline`, the label offset needs to be updated.
538
+ // The update can happen once the view has been re-checked, but not immediately because
539
+ // the view has not been updated and the notched-outline floating label is not present.
540
+ this._needsOutlineLabelOffsetUpdate = true;
541
+ }
542
+ }
543
+ _appearance = DEFAULT_APPEARANCE;
544
+ /**
545
+ * Whether the form field should reserve space for one line of hint/error text (default)
546
+ * or to have the spacing grow from 0px as needed based on the size of the hint/error content.
547
+ * Note that when using dynamic sizing, layout shifts will occur when hint/error text changes.
548
+ */
549
+ get subscriptSizing() {
550
+ return this._subscriptSizing || this._defaults?.subscriptSizing || DEFAULT_SUBSCRIPT_SIZING;
551
+ }
552
+ set subscriptSizing(value) {
553
+ this._subscriptSizing = value || this._defaults?.subscriptSizing || DEFAULT_SUBSCRIPT_SIZING;
554
+ }
555
+ _subscriptSizing = null;
556
+ /** Text for the form field hint. */
557
+ get hintLabel() {
558
+ return this._hintLabel;
559
+ }
560
+ set hintLabel(value) {
561
+ this._hintLabel = value;
562
+ this._processHints();
563
+ }
564
+ _hintLabel = '';
565
+ _hasIconPrefix = false;
566
+ _hasTextPrefix = false;
567
+ _hasIconSuffix = false;
568
+ _hasTextSuffix = false;
569
+ // Unique id for the internal form field label.
570
+ _labelId = this._idGenerator.getId('mat-mdc-form-field-label-');
571
+ // Unique id for the hint label.
572
+ _hintLabelId = this._idGenerator.getId('mat-mdc-hint-');
573
+ /** Gets the current form field control */
574
+ get _control() {
575
+ return this._explicitFormFieldControl || this._formFieldControl;
576
+ }
577
+ set _control(value) {
578
+ this._explicitFormFieldControl = value;
579
+ }
580
+ _destroyed = new Subject();
581
+ _isFocused = null;
582
+ _explicitFormFieldControl;
583
+ _needsOutlineLabelOffsetUpdate = false;
584
+ _previousControl = null;
585
+ _previousControlValidatorFn = null;
586
+ _stateChanges;
587
+ _valueChanges;
588
+ _describedByChanges;
589
+ _animationsDisabled;
590
+ constructor() {
591
+ const defaults = this._defaults;
592
+ if (defaults) {
593
+ if (defaults.appearance) {
594
+ this.appearance = defaults.appearance;
595
+ }
596
+ this._hideRequiredMarker = Boolean(defaults?.hideRequiredMarker);
597
+ if (defaults.color) {
598
+ this.color = defaults.color;
599
+ }
600
+ }
601
+ this._animationsDisabled = inject(ANIMATION_MODULE_TYPE, { optional: true }) === 'NoopAnimations';
602
+ }
603
+ ngAfterViewInit() {
604
+ // Initial focus state sync. This happens rarely, but we want to account for
605
+ // it in case the form field control has "focused" set to true on init.
606
+ this._updateFocusState();
607
+ if (!this._animationsDisabled) {
608
+ this._ngZone.runOutsideAngular(() => {
609
+ // Enable animations after a certain amount of time so that they don't run on init.
610
+ setTimeout(() => {
611
+ this._elementRef.nativeElement.classList.add('mat-form-field-animations-enabled');
612
+ }, 300);
613
+ });
614
+ }
615
+ // Because the above changes a value used in the template after it was checked, we need
616
+ // to trigger CD or the change might not be reflected if there is no other CD scheduled.
617
+ this._changeDetectorRef.detectChanges();
618
+ }
619
+ ngAfterContentInit() {
620
+ this._assertFormFieldControl();
621
+ this._initializeSubscript();
622
+ this._initializePrefixAndSuffix();
623
+ this._initializeOutlineLabelOffsetSubscriptions();
624
+ }
625
+ ngAfterContentChecked() {
626
+ this._assertFormFieldControl();
627
+ // if form field was being used with an input in first place and then replaced by other
628
+ // component such as select.
629
+ if (this._control !== this._previousControl) {
630
+ this._initializeControl(this._previousControl);
631
+ // keep a reference for last validator we had.
632
+ if (this._control.ngControl && this._control.ngControl.control) {
633
+ this._previousControlValidatorFn = this._control.ngControl.control.validator;
634
+ }
635
+ this._previousControl = this._control;
636
+ }
637
+ // make sure the the control has been initialized.
638
+ if (this._control.ngControl && this._control.ngControl.control) {
639
+ // get the validators for current control.
640
+ const validatorFn = this._control.ngControl.control.validator;
641
+ // if our current validatorFn isn't equal to it might be we are CD behind, marking the
642
+ // component will allow us to catch up.
643
+ if (validatorFn !== this._previousControlValidatorFn) {
644
+ this._changeDetectorRef.markForCheck();
645
+ }
646
+ }
647
+ }
648
+ ngOnDestroy() {
649
+ this._stateChanges?.unsubscribe();
650
+ this._valueChanges?.unsubscribe();
651
+ this._describedByChanges?.unsubscribe();
652
+ this._destroyed.next();
653
+ this._destroyed.complete();
654
+ }
655
+ /**
656
+ * Gets the id of the label element. If no label is present, returns `null`.
657
+ */
658
+ getLabelId = computed(() => (this._hasFloatingLabel() ? this._labelId : null));
659
+ /**
660
+ * Gets an ElementRef for the element that a overlay attached to the form field
661
+ * should be positioned relative to.
662
+ */
663
+ getConnectedOverlayOrigin() {
664
+ return this._textField || this._elementRef;
665
+ }
666
+ /** Animates the placeholder up and locks it in position. */
667
+ _animateAndLockLabel() {
668
+ // This is for backwards compatibility only. Consumers of the form field might use
669
+ // this method. e.g. the autocomplete trigger. This method has been added to the non-MDC
670
+ // form field because setting "floatLabel" to "always" caused the label to float without
671
+ // animation. This is different in MDC where the label always animates, so this method
672
+ // is no longer necessary. There doesn't seem any benefit in adding logic to allow changing
673
+ // the floating label state without animations. The non-MDC implementation was inconsistent
674
+ // because it always animates if "floatLabel" is set away from "always".
675
+ // TODO(devversion): consider removing this method when releasing the MDC form field.
676
+ if (this._hasFloatingLabel()) {
677
+ this.floatLabel = 'always';
678
+ }
679
+ }
680
+ /** Initializes the registered form field control. */
681
+ _initializeControl(previousControl) {
682
+ const control = this._control;
683
+ const classPrefix = 'mat-mdc-form-field-type-';
684
+ if (previousControl) {
685
+ this._elementRef.nativeElement.classList.remove(classPrefix + previousControl.controlType);
686
+ }
687
+ if (control.controlType) {
688
+ this._elementRef.nativeElement.classList.add(classPrefix + control.controlType);
689
+ }
690
+ // Subscribe to changes in the child control state in order to update the form field UI.
691
+ this._stateChanges?.unsubscribe();
692
+ this._stateChanges = control.stateChanges.subscribe(() => {
693
+ this._updateFocusState();
694
+ this._changeDetectorRef.markForCheck();
695
+ });
696
+ // Updating the `aria-describedby` touches the DOM. Only do it if it actually needs to change.
697
+ this._describedByChanges?.unsubscribe();
698
+ this._describedByChanges = control.stateChanges
699
+ .pipe(startWith([undefined, undefined]), map(() => [control.errorState, control.userAriaDescribedBy]), pairwise(), filter(([[prevErrorState, prevDescribedBy], [currentErrorState, currentDescribedBy]]) => {
700
+ return prevErrorState !== currentErrorState || prevDescribedBy !== currentDescribedBy;
701
+ }))
702
+ .subscribe(() => this._syncDescribedByIds());
703
+ this._valueChanges?.unsubscribe();
704
+ // Run change detection if the value changes.
705
+ if (control.ngControl && control.ngControl.valueChanges) {
706
+ this._valueChanges = control.ngControl.valueChanges
707
+ .pipe(takeUntil(this._destroyed))
708
+ .subscribe(() => this._changeDetectorRef.markForCheck());
709
+ }
710
+ }
711
+ _checkPrefixAndSuffixTypes() {
712
+ this._hasIconPrefix = !!this._prefixChildren.find(p => !p._isText);
713
+ this._hasTextPrefix = !!this._prefixChildren.find(p => p._isText);
714
+ this._hasIconSuffix = !!this._suffixChildren.find(s => !s._isText);
715
+ this._hasTextSuffix = !!this._suffixChildren.find(s => s._isText);
716
+ }
717
+ /** Initializes the prefix and suffix containers. */
718
+ _initializePrefixAndSuffix() {
719
+ this._checkPrefixAndSuffixTypes();
720
+ // Mark the form field as dirty whenever the prefix or suffix children change. This
721
+ // is necessary because we conditionally display the prefix/suffix containers based
722
+ // on whether there is projected content.
723
+ merge(this._prefixChildren.changes, this._suffixChildren.changes).subscribe(() => {
724
+ this._checkPrefixAndSuffixTypes();
725
+ this._changeDetectorRef.markForCheck();
726
+ });
727
+ }
728
+ /**
729
+ * Initializes the subscript by validating hints and synchronizing "aria-describedby" ids
730
+ * with the custom form field control. Also subscribes to hint and error changes in order
731
+ * to be able to validate and synchronize ids on change.
732
+ */
733
+ _initializeSubscript() {
734
+ // Re-validate when the number of hints changes.
735
+ this._hintChildren.changes.subscribe(() => {
736
+ this._processHints();
737
+ this._changeDetectorRef.markForCheck();
738
+ });
739
+ // Update the aria-described by when the number of errors changes.
740
+ this._errorChildren.changes.subscribe(() => {
741
+ this._syncDescribedByIds();
742
+ this._changeDetectorRef.markForCheck();
743
+ });
744
+ // Initial mat-hint validation and subscript describedByIds sync.
745
+ this._validateHints();
746
+ this._syncDescribedByIds();
747
+ }
748
+ /** Throws an error if the form field's control is missing. */
749
+ _assertFormFieldControl() {
750
+ if (!this._control && (typeof ngDevMode === 'undefined' || ngDevMode)) {
751
+ throw getMatFormFieldMissingControlError();
752
+ }
753
+ }
754
+ _updateFocusState() {
755
+ // Usually the MDC foundation would call "activateFocus" and "deactivateFocus" whenever
756
+ // certain DOM events are emitted. This is not possible in our implementation of the
757
+ // form field because we support abstract form field controls which are not necessarily
758
+ // of type input, nor do we have a reference to a native form field control element. Instead
759
+ // we handle the focus by checking if the abstract form field control focused state changes.
760
+ if (this._control.focused && !this._isFocused) {
761
+ this._isFocused = true;
762
+ this._lineRipple?.activate();
763
+ }
764
+ else if (!this._control.focused && (this._isFocused || this._isFocused === null)) {
765
+ this._isFocused = false;
766
+ this._lineRipple?.deactivate();
767
+ }
768
+ this._textField?.nativeElement.classList.toggle('mdc-text-field--focused', this._control.focused);
769
+ }
770
+ /**
771
+ * The floating label in the docked state needs to account for prefixes. The horizontal offset
772
+ * is calculated whenever the appearance changes to `outline`, the prefixes change, or when the
773
+ * form field is added to the DOM. This method sets up all subscriptions which are needed to
774
+ * trigger the label offset update.
775
+ */
776
+ _initializeOutlineLabelOffsetSubscriptions() {
777
+ // Whenever the prefix changes, schedule an update of the label offset.
778
+ // TODO(mmalerba): Use ResizeObserver to better support dynamically changing prefix content.
779
+ this._prefixChildren.changes.subscribe(() => (this._needsOutlineLabelOffsetUpdate = true));
780
+ // TODO(mmalerba): Split this into separate `afterRender` calls using the `EarlyRead` and
781
+ // `Write` phases.
782
+ afterRender(() => {
783
+ if (this._needsOutlineLabelOffsetUpdate) {
784
+ this._needsOutlineLabelOffsetUpdate = false;
785
+ this._updateOutlineLabelOffset();
786
+ }
787
+ }, {
788
+ injector: this._injector,
789
+ });
790
+ this._dir.change
791
+ .pipe(takeUntil(this._destroyed))
792
+ .subscribe(() => (this._needsOutlineLabelOffsetUpdate = true));
793
+ }
794
+ /** Whether the floating label should always float or not. */
795
+ _shouldAlwaysFloat() {
796
+ return this.floatLabel === 'always';
797
+ }
798
+ _hasOutline() {
799
+ return this.appearance === 'outline';
800
+ }
801
+ /**
802
+ * Whether the label should display in the infix. Labels in the outline appearance are
803
+ * displayed as part of the notched-outline and are horizontally offset to account for
804
+ * form field prefix content. This won't work in server side rendering since we cannot
805
+ * measure the width of the prefix container. To make the docked label appear as if the
806
+ * right offset has been calculated, we forcibly render the label inside the infix. Since
807
+ * the label is part of the infix, the label cannot overflow the prefix content.
808
+ */
809
+ _forceDisplayInfixLabel() {
810
+ return !this._platform.isBrowser && this._prefixChildren.length && !this._shouldLabelFloat();
811
+ }
812
+ _hasFloatingLabel = computed(() => !!this._labelChild());
813
+ _shouldLabelFloat() {
814
+ if (!this._hasFloatingLabel()) {
815
+ return false;
816
+ }
817
+ return this._control.shouldLabelFloat || this._shouldAlwaysFloat();
818
+ }
819
+ /**
820
+ * Determines whether a class from the AbstractControlDirective
821
+ * should be forwarded to the host element.
822
+ */
823
+ _shouldForward(prop) {
824
+ const control = this._control ? this._control.ngControl : null;
825
+ return control && control[prop];
826
+ }
827
+ /** Determines whether to display hints or errors. */
828
+ _getDisplayedMessages() {
829
+ return this._errorChildren && this._errorChildren.length > 0 && this._control.errorState
830
+ ? 'error'
831
+ : 'hint';
832
+ }
833
+ /** Handle label resize events. */
834
+ _handleLabelResized() {
835
+ this._refreshOutlineNotchWidth();
836
+ }
837
+ /** Refreshes the width of the outline-notch, if present. */
838
+ _refreshOutlineNotchWidth() {
839
+ if (!this._hasOutline() || !this._floatingLabel || !this._shouldLabelFloat()) {
840
+ this._notchedOutline?._setNotchWidth(0);
841
+ }
842
+ else {
843
+ this._notchedOutline?._setNotchWidth(this._floatingLabel.getWidth());
844
+ }
845
+ }
846
+ /** Does any extra processing that is required when handling the hints. */
847
+ _processHints() {
848
+ this._validateHints();
849
+ this._syncDescribedByIds();
850
+ }
851
+ /**
852
+ * Ensure that there is a maximum of one of each "mat-hint" alignment specified. The hint
853
+ * label specified set through the input is being considered as "start" aligned.
854
+ *
855
+ * This method is a noop if Angular runs in production mode.
856
+ */
857
+ _validateHints() {
858
+ if (this._hintChildren && (typeof ngDevMode === 'undefined' || ngDevMode)) {
859
+ let startHint;
860
+ let endHint;
861
+ this._hintChildren.forEach((hint) => {
862
+ if (hint.align === 'start') {
863
+ if (startHint || this.hintLabel) {
864
+ throw getMatFormFieldDuplicatedHintError('start');
865
+ }
866
+ startHint = hint;
867
+ }
868
+ else if (hint.align === 'end') {
869
+ if (endHint) {
870
+ throw getMatFormFieldDuplicatedHintError('end');
871
+ }
872
+ endHint = hint;
873
+ }
874
+ });
875
+ }
876
+ }
877
+ /**
878
+ * Sets the list of element IDs that describe the child control. This allows the control to update
879
+ * its `aria-describedby` attribute accordingly.
880
+ */
881
+ _syncDescribedByIds() {
882
+ if (this._control) {
883
+ let ids = [];
884
+ // TODO(wagnermaciel): Remove the type check when we find the root cause of this bug.
885
+ if (this._control.userAriaDescribedBy &&
886
+ typeof this._control.userAriaDescribedBy === 'string') {
887
+ ids.push(...this._control.userAriaDescribedBy.split(' '));
888
+ }
889
+ if (this._getDisplayedMessages() === 'hint') {
890
+ const startHint = this._hintChildren
891
+ ? this._hintChildren.find(hint => hint.align === 'start')
892
+ : null;
893
+ const endHint = this._hintChildren
894
+ ? this._hintChildren.find(hint => hint.align === 'end')
895
+ : null;
896
+ if (startHint) {
897
+ ids.push(startHint.id);
898
+ }
899
+ else if (this._hintLabel) {
900
+ ids.push(this._hintLabelId);
901
+ }
902
+ if (endHint) {
903
+ ids.push(endHint.id);
904
+ }
905
+ }
906
+ else if (this._errorChildren) {
907
+ ids.push(...this._errorChildren.map(error => error.id));
908
+ }
909
+ this._control.setDescribedByIds(ids);
910
+ }
911
+ }
912
+ /**
913
+ * Updates the horizontal offset of the label in the outline appearance. In the outline
914
+ * appearance, the notched-outline and label are not relative to the infix container because
915
+ * the outline intends to surround prefixes, suffixes and the infix. This means that the
916
+ * floating label by default overlaps prefixes in the docked state. To avoid this, we need to
917
+ * horizontally offset the label by the width of the prefix container. The MDC text-field does
918
+ * not need to do this because they use a fixed width for prefixes. Hence, they can simply
919
+ * incorporate the horizontal offset into their default text-field styles.
920
+ */
921
+ _updateOutlineLabelOffset() {
922
+ if (!this._hasOutline() || !this._floatingLabel) {
923
+ return;
924
+ }
925
+ const floatingLabel = this._floatingLabel.element;
926
+ // If no prefix is displayed, reset the outline label offset from potential
927
+ // previous label offset updates.
928
+ if (!(this._iconPrefixContainer || this._textPrefixContainer)) {
929
+ floatingLabel.style.transform = '';
930
+ return;
931
+ }
932
+ // If the form field is not attached to the DOM yet (e.g. in a tab), we defer
933
+ // the label offset update until the zone stabilizes.
934
+ if (!this._isAttachedToDom()) {
935
+ this._needsOutlineLabelOffsetUpdate = true;
936
+ return;
937
+ }
938
+ const iconPrefixContainer = this._iconPrefixContainer?.nativeElement;
939
+ const textPrefixContainer = this._textPrefixContainer?.nativeElement;
940
+ const iconSuffixContainer = this._iconSuffixContainer?.nativeElement;
941
+ const textSuffixContainer = this._textSuffixContainer?.nativeElement;
942
+ const iconPrefixContainerWidth = iconPrefixContainer?.getBoundingClientRect().width ?? 0;
943
+ const textPrefixContainerWidth = textPrefixContainer?.getBoundingClientRect().width ?? 0;
944
+ const iconSuffixContainerWidth = iconSuffixContainer?.getBoundingClientRect().width ?? 0;
945
+ const textSuffixContainerWidth = textSuffixContainer?.getBoundingClientRect().width ?? 0;
946
+ // If the directionality is RTL, the x-axis transform needs to be inverted. This
947
+ // is because `transformX` does not change based on the page directionality.
948
+ const negate = this._dir.value === 'rtl' ? '-1' : '1';
949
+ const prefixWidth = `${iconPrefixContainerWidth + textPrefixContainerWidth}px`;
950
+ const labelOffset = `var(--mat-mdc-form-field-label-offset-x, 0px)`;
951
+ const labelHorizontalOffset = `calc(${negate} * (${prefixWidth} + ${labelOffset}))`;
952
+ // Update the translateX of the floating label to account for the prefix container,
953
+ // but allow the CSS to override this setting via a CSS variable when the label is
954
+ // floating.
955
+ floatingLabel.style.transform = `var(
956
+ --mat-mdc-form-field-label-transform,
957
+ ${FLOATING_LABEL_DEFAULT_DOCKED_TRANSFORM} translateX(${labelHorizontalOffset})
958
+ )`;
959
+ // Prevent the label from overlapping the suffix when in resting position.
960
+ const prefixAndSuffixWidth = iconPrefixContainerWidth +
961
+ textPrefixContainerWidth +
962
+ iconSuffixContainerWidth +
963
+ textSuffixContainerWidth;
964
+ this._elementRef.nativeElement.style.setProperty('--mat-form-field-notch-max-width', `calc(100% - ${prefixAndSuffixWidth}px)`);
965
+ }
966
+ /** Checks whether the form field is attached to the DOM. */
967
+ _isAttachedToDom() {
968
+ const element = this._elementRef.nativeElement;
969
+ if (element.getRootNode) {
970
+ const rootNode = element.getRootNode();
971
+ // If the element is inside the DOM the root node will be either the document
972
+ // or the closest shadow root, otherwise it'll be the element itself.
973
+ return rootNode && rootNode !== element;
974
+ }
975
+ // Otherwise fall back to checking if it's in the document. This doesn't account for
976
+ // shadow DOM, however browser that support shadow DOM should support `getRootNode` as well.
977
+ return document.documentElement.contains(element);
978
+ }
979
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.1", ngImport: i0, type: MatFormField, deps: [], target: i0.ɵɵFactoryTarget.Component });
980
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0-next.1", type: MatFormField, isStandalone: true, selector: "mat-form-field", inputs: { hideRequiredMarker: "hideRequiredMarker", color: "color", floatLabel: "floatLabel", appearance: "appearance", subscriptSizing: "subscriptSizing", hintLabel: "hintLabel" }, host: { properties: { "class.mat-mdc-form-field-label-always-float": "_shouldAlwaysFloat()", "class.mat-mdc-form-field-has-icon-prefix": "_hasIconPrefix", "class.mat-mdc-form-field-has-icon-suffix": "_hasIconSuffix", "class.mat-form-field-invalid": "_control.errorState", "class.mat-form-field-disabled": "_control.disabled", "class.mat-form-field-autofilled": "_control.autofilled", "class.mat-form-field-appearance-fill": "appearance == \"fill\"", "class.mat-form-field-appearance-outline": "appearance == \"outline\"", "class.mat-form-field-hide-placeholder": "_hasFloatingLabel() && !_shouldLabelFloat()", "class.mat-focused": "_control.focused", "class.mat-primary": "color !== \"accent\" && color !== \"warn\"", "class.mat-accent": "color === \"accent\"", "class.mat-warn": "color === \"warn\"", "class.ng-untouched": "_shouldForward(\"untouched\")", "class.ng-touched": "_shouldForward(\"touched\")", "class.ng-pristine": "_shouldForward(\"pristine\")", "class.ng-dirty": "_shouldForward(\"dirty\")", "class.ng-valid": "_shouldForward(\"valid\")", "class.ng-invalid": "_shouldForward(\"invalid\")", "class.ng-pending": "_shouldForward(\"pending\")" }, classAttribute: "mat-mdc-form-field" }, providers: [
981
+ { provide: MAT_FORM_FIELD, useExisting: MatFormField },
982
+ { provide: FLOATING_LABEL_PARENT, useExisting: MatFormField },
983
+ ], queries: [{ propertyName: "_labelChild", first: true, predicate: MatLabel, descendants: true, isSignal: true }, { propertyName: "_formFieldControl", first: true, predicate: MatFormFieldControl, descendants: true }, { propertyName: "_prefixChildren", predicate: MAT_PREFIX, descendants: true }, { propertyName: "_suffixChildren", predicate: MAT_SUFFIX, descendants: true }, { propertyName: "_errorChildren", predicate: MAT_ERROR, descendants: true }, { propertyName: "_hintChildren", predicate: MatHint, descendants: true }], viewQueries: [{ propertyName: "_textField", first: true, predicate: ["textField"], descendants: true }, { propertyName: "_iconPrefixContainer", first: true, predicate: ["iconPrefixContainer"], descendants: true }, { propertyName: "_textPrefixContainer", first: true, predicate: ["textPrefixContainer"], descendants: true }, { propertyName: "_iconSuffixContainer", first: true, predicate: ["iconSuffixContainer"], descendants: true }, { propertyName: "_textSuffixContainer", first: true, predicate: ["textSuffixContainer"], descendants: true }, { propertyName: "_floatingLabel", first: true, predicate: MatFormFieldFloatingLabel, descendants: true }, { propertyName: "_notchedOutline", first: true, predicate: MatFormFieldNotchedOutline, descendants: true }, { propertyName: "_lineRipple", first: true, predicate: MatFormFieldLineRipple, descendants: true }], exportAs: ["matFormField"], ngImport: i0, template: "<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 @switch (_getDisplayedMessages()) {\n @case ('error') {\n <div class=\"mat-mdc-form-field-error-wrapper\">\n <ng-content select=\"mat-error, [matError]\"></ng-content>\n </div>\n }\n\n @case ('hint') {\n <div class=\"mat-mdc-form-field-hint-wrapper\">\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 </div>\n }\n }\n</div>\n", styles: [".mdc-text-field{display:inline-flex;align-items:baseline;padding:0 16px;position:relative;box-sizing:border-box;overflow:hidden;will-change:opacity,transform,color;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.mdc-text-field__input{width:100%;min-width:0;border:none;border-radius:0;background:none;padding:0;-moz-appearance:none;-webkit-appearance:none;height:28px}.mdc-text-field__input::-webkit-calendar-picker-indicator{display:none}.mdc-text-field__input::-ms-clear{display:none}.mdc-text-field__input:focus{outline:none}.mdc-text-field__input:invalid{box-shadow:none}.mdc-text-field__input::placeholder{opacity:0}.mdc-text-field__input::-moz-placeholder{opacity:0}.mdc-text-field__input::-webkit-input-placeholder{opacity:0}.mdc-text-field__input:-ms-input-placeholder{opacity:0}.mdc-text-field--no-label .mdc-text-field__input::placeholder,.mdc-text-field--focused .mdc-text-field__input::placeholder{opacity:1}.mdc-text-field--no-label .mdc-text-field__input::-moz-placeholder,.mdc-text-field--focused .mdc-text-field__input::-moz-placeholder{opacity:1}.mdc-text-field--no-label .mdc-text-field__input::-webkit-input-placeholder,.mdc-text-field--focused .mdc-text-field__input::-webkit-input-placeholder{opacity:1}.mdc-text-field--no-label .mdc-text-field__input:-ms-input-placeholder,.mdc-text-field--focused .mdc-text-field__input:-ms-input-placeholder{opacity:1}.mdc-text-field--disabled:not(.mdc-text-field--no-label) .mdc-text-field__input.mat-mdc-input-disabled-interactive::placeholder{opacity:0}.mdc-text-field--disabled:not(.mdc-text-field--no-label) .mdc-text-field__input.mat-mdc-input-disabled-interactive::-moz-placeholder{opacity:0}.mdc-text-field--disabled:not(.mdc-text-field--no-label) .mdc-text-field__input.mat-mdc-input-disabled-interactive::-webkit-input-placeholder{opacity:0}.mdc-text-field--disabled:not(.mdc-text-field--no-label) .mdc-text-field__input.mat-mdc-input-disabled-interactive:-ms-input-placeholder{opacity:0}.mdc-text-field--outlined .mdc-text-field__input,.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input{height:100%}.mdc-text-field--outlined .mdc-text-field__input{display:flex;border:none !important;background-color:rgba(0,0,0,0)}.mdc-text-field--disabled .mdc-text-field__input{pointer-events:auto}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input{color:var(--mdc-filled-text-field-input-text-color, var(--mat-sys-on-surface));caret-color:var(--mdc-filled-text-field-caret-color, var(--mat-sys-primary))}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:var(--mdc-filled-text-field-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input::-moz-placeholder{color:var(--mdc-filled-text-field-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input::-webkit-input-placeholder{color:var(--mdc-filled-text-field-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:var(--mdc-filled-text-field-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mdc-filled-text-field-error-caret-color)}.mdc-text-field--filled.mdc-text-field--disabled .mdc-text-field__input{color:var(--mdc-filled-text-field-disabled-input-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input{color:var(--mdc-outlined-text-field-input-text-color, var(--mat-sys-on-surface));caret-color:var(--mdc-outlined-text-field-caret-color, var(--mat-sys-primary))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:var(--mdc-outlined-text-field-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input::-moz-placeholder{color:var(--mdc-outlined-text-field-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input::-webkit-input-placeholder{color:var(--mdc-outlined-text-field-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:var(--mdc-outlined-text-field-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mdc-outlined-text-field-error-caret-color)}.mdc-text-field--outlined.mdc-text-field--disabled .mdc-text-field__input{color:var(--mdc-outlined-text-field-disabled-input-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}@media(forced-colors: active){.mdc-text-field--disabled .mdc-text-field__input{background-color:Window}}.mdc-text-field--filled{height:56px;border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-left-radius:var(--mdc-filled-text-field-container-shape, var(--mat-sys-corner-extra-small));border-top-right-radius:var(--mdc-filled-text-field-container-shape, var(--mat-sys-corner-extra-small))}.mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:var(--mdc-filled-text-field-container-color, var(--mat-sys-surface-variant))}.mdc-text-field--filled.mdc-text-field--disabled{background-color:var(--mdc-filled-text-field-disabled-container-color, color-mix(in srgb, var(--mat-sys-on-surface) 4%, transparent))}.mdc-text-field--outlined{height:56px;overflow:visible;padding-right:max(16px,var(--mdc-outlined-text-field-container-shape, var(--mat-sys-corner-extra-small)));padding-left:max(16px,var(--mdc-outlined-text-field-container-shape, var(--mat-sys-corner-extra-small)) + 4px)}[dir=rtl] .mdc-text-field--outlined{padding-right:max(16px,var(--mdc-outlined-text-field-container-shape, var(--mat-sys-corner-extra-small)) + 4px);padding-left:max(16px,var(--mdc-outlined-text-field-container-shape, var(--mat-sys-corner-extra-small)))}.mdc-floating-label{position:absolute;left:0;transform-origin:left top;line-height:1.15rem;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:text;overflow:hidden;will-change:transform}[dir=rtl] .mdc-floating-label{right:0;left:auto;transform-origin:right top;text-align:right}.mdc-text-field .mdc-floating-label{top:50%;transform:translateY(-50%);pointer-events:none}.mdc-notched-outline .mdc-floating-label{display:inline-block;position:relative;max-width:100%}.mdc-text-field--outlined .mdc-floating-label{left:4px;right:auto}[dir=rtl] .mdc-text-field--outlined .mdc-floating-label{left:auto;right:4px}.mdc-text-field--filled .mdc-floating-label{left:16px;right:auto}[dir=rtl] .mdc-text-field--filled .mdc-floating-label{left:auto;right:16px}.mdc-text-field--disabled .mdc-floating-label{cursor:default}@media(forced-colors: active){.mdc-text-field--disabled .mdc-floating-label{z-index:1}}.mdc-text-field--filled.mdc-text-field--no-label .mdc-floating-label{display:none}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-filled-text-field-label-text-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label{color:var(--mdc-filled-text-field-focus-label-text-color, var(--mat-sys-primary))}.mdc-text-field--filled:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-floating-label{color:var(--mdc-filled-text-field-hover-label-text-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled.mdc-text-field--disabled .mdc-floating-label{color:var(--mdc-filled-text-field-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid .mdc-floating-label{color:var(--mdc-filled-text-field-error-label-text-color, var(--mat-sys-error))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid.mdc-text-field--focused .mdc-floating-label{color:var(--mdc-filled-text-field-error-focus-label-text-color, var(--mat-sys-error))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-floating-label{color:var(--mdc-filled-text-field-error-hover-label-text-color, var(--mat-sys-on-error-container))}.mdc-text-field--filled .mdc-floating-label{font-family:var(--mdc-filled-text-field-label-text-font, var(--mat-sys-body-large-font));font-size:var(--mdc-filled-text-field-label-text-size, var(--mat-sys-body-large-size));font-weight:var(--mdc-filled-text-field-label-text-weight, var(--mat-sys-body-large-weight));letter-spacing:var(--mdc-filled-text-field-label-text-tracking, var(--mat-sys-body-large-tracking))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-outlined-text-field-label-text-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label{color:var(--mdc-outlined-text-field-focus-label-text-color, var(--mat-sys-primary))}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-floating-label{color:var(--mdc-outlined-text-field-hover-label-text-color, var(--mat-sys-on-surface))}.mdc-text-field--outlined.mdc-text-field--disabled .mdc-floating-label{color:var(--mdc-outlined-text-field-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid .mdc-floating-label{color:var(--mdc-outlined-text-field-error-label-text-color, var(--mat-sys-error))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid.mdc-text-field--focused .mdc-floating-label{color:var(--mdc-outlined-text-field-error-focus-label-text-color, var(--mat-sys-error))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-floating-label{color:var(--mdc-outlined-text-field-error-hover-label-text-color, var(--mat-sys-on-error-container))}.mdc-text-field--outlined .mdc-floating-label{font-family:var(--mdc-outlined-text-field-label-text-font, var(--mat-sys-body-large-font));font-size:var(--mdc-outlined-text-field-label-text-size, var(--mat-sys-body-large-size));font-weight:var(--mdc-outlined-text-field-label-text-weight, var(--mat-sys-body-large-weight));letter-spacing:var(--mdc-outlined-text-field-label-text-tracking, var(--mat-sys-body-large-tracking))}.mdc-floating-label--float-above{cursor:auto;transform:translateY(-106%) scale(0.75)}.mdc-text-field--filled .mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-37.25px) scale(1);font-size:.75rem}.mdc-notched-outline .mdc-floating-label--float-above{text-overflow:clip}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:133.3333333333%}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) scale(0.75)}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)::after{margin-left:1px;margin-right:0;content:\"*\"}[dir=rtl] .mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)::after{margin-left:0;margin-right:1px}.mdc-notched-outline{display:flex;position:absolute;top:0;right:0;left:0;box-sizing:border-box;width:100%;max-width:100%;height:100%;text-align:left;pointer-events:none}[dir=rtl] .mdc-notched-outline{text-align:right}.mdc-text-field--outlined .mdc-notched-outline{z-index:1}.mat-mdc-notch-piece{box-sizing:border-box;height:100%;pointer-events:none;border-top:1px solid;border-bottom:1px solid}.mdc-text-field--focused .mat-mdc-notch-piece{border-width:2px}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mat-mdc-notch-piece{border-color:var(--mdc-outlined-text-field-outline-color, var(--mat-sys-outline));border-width:var(--mdc-outlined-text-field-outline-width, 1px)}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mat-mdc-notch-piece{border-color:var(--mdc-outlined-text-field-hover-outline-color, var(--mat-sys-on-surface))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mat-mdc-notch-piece{border-color:var(--mdc-outlined-text-field-focus-outline-color, var(--mat-sys-primary))}.mdc-text-field--outlined.mdc-text-field--disabled .mat-mdc-notch-piece{border-color:var(--mdc-outlined-text-field-disabled-outline-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid .mat-mdc-notch-piece{border-color:var(--mdc-outlined-text-field-error-outline-color, var(--mat-sys-error))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid:not(.mdc-text-field--focused):hover .mdc-notched-outline .mat-mdc-notch-piece{border-color:var(--mdc-outlined-text-field-error-hover-outline-color, var(--mat-sys-on-error-container))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid.mdc-text-field--focused .mat-mdc-notch-piece{border-color:var(--mdc-outlined-text-field-error-focus-outline-color, var(--mat-sys-error))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline .mat-mdc-notch-piece{border-width:var(--mdc-outlined-text-field-focus-outline-width, 2px)}.mdc-notched-outline__leading{border-left:1px solid;border-right:none;border-top-right-radius:0;border-bottom-right-radius:0;border-top-left-radius:var(--mdc-outlined-text-field-container-shape, var(--mat-sys-corner-extra-small));border-bottom-left-radius:var(--mdc-outlined-text-field-container-shape, var(--mat-sys-corner-extra-small))}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{width:max(12px,var(--mdc-outlined-text-field-container-shape, var(--mat-sys-corner-extra-small)))}[dir=rtl] .mdc-notched-outline__leading{border-left:none;border-right:1px solid;border-bottom-left-radius:0;border-top-left-radius:0;border-top-right-radius:var(--mdc-outlined-text-field-container-shape, var(--mat-sys-corner-extra-small));border-bottom-right-radius:var(--mdc-outlined-text-field-container-shape, var(--mat-sys-corner-extra-small))}.mdc-notched-outline__trailing{flex-grow:1;border-left:none;border-right:1px solid;border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--mdc-outlined-text-field-container-shape, var(--mat-sys-corner-extra-small));border-bottom-right-radius:var(--mdc-outlined-text-field-container-shape, var(--mat-sys-corner-extra-small))}[dir=rtl] .mdc-notched-outline__trailing{border-left:1px solid;border-right:none;border-top-right-radius:0;border-bottom-right-radius:0;border-top-left-radius:var(--mdc-outlined-text-field-container-shape, var(--mat-sys-corner-extra-small));border-bottom-left-radius:var(--mdc-outlined-text-field-container-shape, var(--mat-sys-corner-extra-small))}.mdc-notched-outline__notch{flex:0 0 auto;width:auto}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__notch{max-width:min(var(--mat-form-field-notch-max-width, 100%),100% - max(12px,var(--mdc-outlined-text-field-container-shape, var(--mat-sys-corner-extra-small)))*2)}.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:1px}.mdc-text-field--focused.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:2px}.mdc-notched-outline--notched .mdc-notched-outline__notch{padding-left:0;padding-right:8px;border-top:none;--mat-form-field-notch-max-width: 100%}[dir=rtl] .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-left:8px;padding-right:0}.mdc-notched-outline--no-label .mdc-notched-outline__notch{display:none}.mdc-line-ripple::before,.mdc-line-ripple::after{position:absolute;bottom:0;left:0;width:100%;border-bottom-style:solid;content:\"\"}.mdc-line-ripple::before{z-index:1;border-bottom-width:var(--mdc-filled-text-field-active-indicator-height, 1px)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-active-indicator-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-hover-active-indicator-color, var(--mat-sys-on-surface))}.mdc-text-field--filled.mdc-text-field--disabled .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-disabled-active-indicator-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-error-active-indicator-color, var(--mat-sys-error))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid:not(.mdc-text-field--focused):hover .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-error-hover-active-indicator-color, var(--mat-sys-on-error-container))}.mdc-line-ripple::after{transform:scaleX(0);opacity:0;z-index:2}.mdc-text-field--filled .mdc-line-ripple::after{border-bottom-width:var(--mdc-filled-text-field-focus-active-indicator-height, 2px)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple::after{border-bottom-color:var(--mdc-filled-text-field-focus-active-indicator-color, var(--mat-sys-primary))}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple::after{border-bottom-color:var(--mdc-filled-text-field-error-focus-active-indicator-color, var(--mat-sys-error))}.mdc-line-ripple--active::after{transform:scaleX(1);opacity:1}.mdc-line-ripple--deactivating::after{opacity:0}.mdc-text-field--disabled{pointer-events:none}.mat-mdc-form-field-textarea-control{vertical-align:middle;resize:vertical;box-sizing:border-box;height:auto;margin:0;padding:0;border:none;overflow:auto}.mat-mdc-form-field-input-control.mat-mdc-form-field-input-control{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font:inherit;letter-spacing:inherit;text-decoration:inherit;text-transform:inherit;border:none}.mat-mdc-form-field .mat-mdc-floating-label.mdc-floating-label{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;line-height:normal;pointer-events:all;will-change:auto}.mat-mdc-form-field:not(.mat-form-field-disabled) .mat-mdc-floating-label.mdc-floating-label{cursor:inherit}.mdc-text-field--no-label:not(.mdc-text-field--textarea) .mat-mdc-form-field-input-control.mdc-text-field__input,.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control{height:auto}.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control.mdc-text-field__input[type=color]{height:23px}.mat-mdc-text-field-wrapper{height:auto;flex:auto;will-change:auto}.mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-left:0;--mat-mdc-form-field-label-offset-x: -16px}.mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-right:0}[dir=rtl] .mat-mdc-text-field-wrapper{padding-left:16px;padding-right:16px}[dir=rtl] .mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-left:0}[dir=rtl] .mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-right:0}.mat-form-field-disabled .mdc-text-field__input::placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-form-field-disabled .mdc-text-field__input::-moz-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-form-field-disabled .mdc-text-field__input::-webkit-input-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-form-field-disabled .mdc-text-field__input:-ms-input-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-form-field-label-always-float .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms;opacity:1}.mat-mdc-text-field-wrapper .mat-mdc-form-field-infix .mat-mdc-floating-label{left:auto;right:auto}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-text-field__input{display:inline-block}.mat-mdc-form-field .mat-mdc-text-field-wrapper.mdc-text-field .mdc-notched-outline__notch{padding-top:0}.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:1px solid rgba(0,0,0,0)}[dir=rtl] .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:none;border-right:1px solid rgba(0,0,0,0)}.mat-mdc-form-field-infix{min-height:var(--mat-form-field-container-height, 56px);padding-top:var(--mat-form-field-filled-with-label-container-padding-top, 24px);padding-bottom:var(--mat-form-field-filled-with-label-container-padding-bottom, 8px)}.mdc-text-field--outlined .mat-mdc-form-field-infix,.mdc-text-field--no-label .mat-mdc-form-field-infix{padding-top:var(--mat-form-field-container-vertical-padding, 16px);padding-bottom:var(--mat-form-field-container-vertical-padding, 16px)}.mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:calc(var(--mat-form-field-container-height, 56px)/2)}.mdc-text-field--filled .mat-mdc-floating-label{display:var(--mat-form-field-filled-label-display, block)}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY(calc(calc(6.75px + var(--mat-form-field-container-height, 56px) / 2) * -1)) scale(var(--mat-mdc-form-field-floating-label-scale, 0.75));transform:var(--mat-mdc-form-field-label-transform)}@keyframes _mat-form-field-subscript-animation{from{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.mat-mdc-form-field-subscript-wrapper{box-sizing:border-box;width:100%;position:relative}.mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-error-wrapper{position:absolute;top:0;left:0;right:0;padding:0 16px;opacity:1;transform:translateY(0);animation:_mat-form-field-subscript-animation 0ms cubic-bezier(0.55, 0, 0.55, 0.2)}.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-error-wrapper{position:static}.mat-mdc-form-field-bottom-align::before{content:\"\";display:inline-block;height:16px}.mat-mdc-form-field-bottom-align.mat-mdc-form-field-subscript-dynamic-size::before{content:unset}.mat-mdc-form-field-hint-end{order:1}.mat-mdc-form-field-hint-wrapper{display:flex}.mat-mdc-form-field-hint-spacer{flex:1 0 1em}.mat-mdc-form-field-error{display:block;color:var(--mat-form-field-error-text-color, var(--mat-sys-error))}.mat-mdc-form-field-subscript-wrapper,.mat-mdc-form-field-bottom-align::before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-form-field-subscript-text-font, var(--mat-sys-body-small-font));line-height:var(--mat-form-field-subscript-text-line-height, var(--mat-sys-body-small-line-height));font-size:var(--mat-form-field-subscript-text-size, var(--mat-sys-body-small-size));letter-spacing:var(--mat-form-field-subscript-text-tracking, var(--mat-sys-body-small-tracking));font-weight:var(--mat-form-field-subscript-text-weight, var(--mat-sys-body-small-weight))}.mat-mdc-form-field-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;opacity:0;pointer-events:none;background-color:var(--mat-form-field-state-layer-color, var(--mat-sys-on-surface))}.mat-mdc-text-field-wrapper:hover .mat-mdc-form-field-focus-overlay{opacity:var(--mat-form-field-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-form-field.mat-focused .mat-mdc-form-field-focus-overlay{opacity:var(--mat-form-field-focus-state-layer-opacity, 0)}select.mat-mdc-form-field-input-control{-moz-appearance:none;-webkit-appearance:none;background-color:rgba(0,0,0,0);display:inline-flex;box-sizing:border-box}select.mat-mdc-form-field-input-control:not(:disabled){cursor:pointer}select.mat-mdc-form-field-input-control:not(.mat-mdc-native-select-inline) option{color:var(--mat-form-field-select-option-text-color, var(--mat-sys-neutral10))}select.mat-mdc-form-field-input-control:not(.mat-mdc-native-select-inline) option:disabled{color:var(--mat-form-field-select-disabled-option-text-color, color-mix(in srgb, var(--mat-sys-neutral10) 38%, transparent))}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{content:\"\";width:0;height:0;border-left:5px solid rgba(0,0,0,0);border-right:5px solid rgba(0,0,0,0);border-top:5px solid;position:absolute;right:0;top:50%;margin-top:-2.5px;pointer-events:none;color:var(--mat-form-field-enabled-select-arrow-color, var(--mat-sys-on-surface-variant))}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{right:auto;left:0}.mat-mdc-form-field-type-mat-native-select.mat-focused .mat-mdc-form-field-infix::after{color:var(--mat-form-field-focus-select-arrow-color, var(--mat-sys-primary))}.mat-mdc-form-field-type-mat-native-select.mat-form-field-disabled .mat-mdc-form-field-infix::after{color:var(--mat-form-field-disabled-select-arrow-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:15px}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:0;padding-left:15px}@media(forced-colors: active){.mat-form-field-appearance-fill .mat-mdc-text-field-wrapper{outline:solid 1px}}@media(forced-colors: active){.mat-form-field-appearance-fill.mat-form-field-disabled .mat-mdc-text-field-wrapper{outline-color:GrayText}}@media(forced-colors: active){.mat-form-field-appearance-fill.mat-focused .mat-mdc-text-field-wrapper{outline:dashed 3px}}@media(forced-colors: active){.mat-mdc-form-field.mat-focused .mdc-notched-outline{border:dashed 3px}}.mat-mdc-form-field-input-control[type=date],.mat-mdc-form-field-input-control[type=datetime],.mat-mdc-form-field-input-control[type=datetime-local],.mat-mdc-form-field-input-control[type=month],.mat-mdc-form-field-input-control[type=week],.mat-mdc-form-field-input-control[type=time]{line-height:1}.mat-mdc-form-field-input-control::-webkit-datetime-edit{line-height:1;padding:0;margin-bottom:-2px}.mat-mdc-form-field{--mat-mdc-form-field-floating-label-scale: 0.75;display:inline-flex;flex-direction:column;min-width:0;text-align:left;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-form-field-container-text-font, var(--mat-sys-body-large-font));line-height:var(--mat-form-field-container-text-line-height, var(--mat-sys-body-large-line-height));font-size:var(--mat-form-field-container-text-size, var(--mat-sys-body-large-size));letter-spacing:var(--mat-form-field-container-text-tracking, var(--mat-sys-body-large-tracking));font-weight:var(--mat-form-field-container-text-weight, var(--mat-sys-body-large-weight))}.mat-mdc-form-field .mdc-text-field--outlined .mdc-floating-label--float-above{font-size:calc(var(--mat-form-field-outlined-label-text-populated-size)*var(--mat-mdc-form-field-floating-label-scale))}.mat-mdc-form-field .mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:var(--mat-form-field-outlined-label-text-populated-size)}[dir=rtl] .mat-mdc-form-field{text-align:right}.mat-mdc-form-field-flex{display:inline-flex;align-items:baseline;box-sizing:border-box;width:100%}.mat-mdc-text-field-wrapper{width:100%;z-index:0}.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix{align-self:center;line-height:0;pointer-events:auto;position:relative;z-index:1}.mat-mdc-form-field-icon-prefix>.mat-icon,.mat-mdc-form-field-icon-suffix>.mat-icon{padding:0 12px;box-sizing:content-box}.mat-mdc-form-field-icon-prefix{color:var(--mat-form-field-leading-icon-color, var(--mat-sys-on-surface-variant))}.mat-form-field-disabled .mat-mdc-form-field-icon-prefix{color:var(--mat-form-field-disabled-leading-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-trailing-icon-color, var(--mat-sys-on-surface-variant))}.mat-form-field-disabled .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-disabled-trailing-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-form-field-invalid .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-error-trailing-icon-color, var(--mat-sys-error))}.mat-form-field-invalid:not(.mat-focused):not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper:hover .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-error-hover-trailing-icon-color, var(--mat-sys-on-error-container))}.mat-form-field-invalid.mat-focused .mat-mdc-text-field-wrapper .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-error-focus-trailing-icon-color, var(--mat-sys-error))}.mat-mdc-form-field-icon-prefix,[dir=rtl] .mat-mdc-form-field-icon-suffix{padding:0 4px 0 0}.mat-mdc-form-field-icon-suffix,[dir=rtl] .mat-mdc-form-field-icon-prefix{padding:0 0 0 4px}.mat-mdc-form-field-subscript-wrapper .mat-icon,.mat-mdc-form-field label .mat-icon{width:1em;height:1em;font-size:inherit}.mat-mdc-form-field-infix{flex:auto;min-width:0;width:180px;position:relative;box-sizing:border-box}.mat-mdc-form-field-infix:has(textarea[cols]){width:auto}.mat-mdc-form-field .mdc-notched-outline__notch{margin-left:-1px;-webkit-clip-path:inset(-9em -999em -9em 1px);clip-path:inset(-9em -999em -9em 1px)}[dir=rtl] .mat-mdc-form-field .mdc-notched-outline__notch{margin-left:0;margin-right:-1px;-webkit-clip-path:inset(-9em 1px -9em -999em);clip-path:inset(-9em 1px -9em -999em)}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-floating-label{transition:transform 150ms cubic-bezier(0.4, 0, 0.2, 1),color 150ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-text-field__input{transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-text-field__input::placeholder{transition:opacity 67ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-text-field__input::-moz-placeholder{transition:opacity 67ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-text-field__input::-webkit-input-placeholder{transition:opacity 67ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-text-field__input:-ms-input-placeholder{transition:opacity 67ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--no-label .mdc-text-field__input::placeholder,.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--focused .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms}.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--no-label .mdc-text-field__input::-moz-placeholder,.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--focused .mdc-text-field__input::-moz-placeholder{transition-delay:40ms;transition-duration:110ms}.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--no-label .mdc-text-field__input::-webkit-input-placeholder,.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--focused .mdc-text-field__input::-webkit-input-placeholder{transition-delay:40ms;transition-duration:110ms}.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--no-label .mdc-text-field__input:-ms-input-placeholder,.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--focused .mdc-text-field__input:-ms-input-placeholder{transition-delay:40ms;transition-duration:110ms}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple::before{transition-duration:75ms}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-line-ripple::after{transition:transform 180ms cubic-bezier(0.4, 0, 0.2, 1),opacity 180ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled .mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field.mat-form-field-animations-enabled .mat-mdc-form-field-error-wrapper{animation-duration:300ms}.mdc-notched-outline .mdc-floating-label{max-width:calc(100% + 1px)}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:calc(133.3333333333% + 1px)}"], dependencies: [{ kind: "directive", type: MatFormFieldFloatingLabel, selector: "label[matFormFieldFloatingLabel]", inputs: ["floating", "monitorResize"] }, { kind: "component", type: MatFormFieldNotchedOutline, selector: "div[matFormFieldNotchedOutline]", inputs: ["matFormFieldNotchedOutlineOpen"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: MatFormFieldLineRipple, selector: "div[matFormFieldLineRipple]" }, { kind: "directive", type: MatHint, selector: "mat-hint", inputs: ["align", "id"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
984
+ }
985
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.1", ngImport: i0, type: MatFormField, decorators: [{
986
+ type: Component,
987
+ args: [{ selector: 'mat-form-field', exportAs: 'matFormField', host: {
988
+ 'class': 'mat-mdc-form-field',
989
+ '[class.mat-mdc-form-field-label-always-float]': '_shouldAlwaysFloat()',
990
+ '[class.mat-mdc-form-field-has-icon-prefix]': '_hasIconPrefix',
991
+ '[class.mat-mdc-form-field-has-icon-suffix]': '_hasIconSuffix',
992
+ // Note that these classes reuse the same names as the non-MDC version, because they can be
993
+ // considered a public API since custom form controls may use them to style themselves.
994
+ // See https://github.com/angular/components/pull/20502#discussion_r486124901.
995
+ '[class.mat-form-field-invalid]': '_control.errorState',
996
+ '[class.mat-form-field-disabled]': '_control.disabled',
997
+ '[class.mat-form-field-autofilled]': '_control.autofilled',
998
+ '[class.mat-form-field-appearance-fill]': 'appearance == "fill"',
999
+ '[class.mat-form-field-appearance-outline]': 'appearance == "outline"',
1000
+ '[class.mat-form-field-hide-placeholder]': '_hasFloatingLabel() && !_shouldLabelFloat()',
1001
+ '[class.mat-focused]': '_control.focused',
1002
+ '[class.mat-primary]': 'color !== "accent" && color !== "warn"',
1003
+ '[class.mat-accent]': 'color === "accent"',
1004
+ '[class.mat-warn]': 'color === "warn"',
1005
+ '[class.ng-untouched]': '_shouldForward("untouched")',
1006
+ '[class.ng-touched]': '_shouldForward("touched")',
1007
+ '[class.ng-pristine]': '_shouldForward("pristine")',
1008
+ '[class.ng-dirty]': '_shouldForward("dirty")',
1009
+ '[class.ng-valid]': '_shouldForward("valid")',
1010
+ '[class.ng-invalid]': '_shouldForward("invalid")',
1011
+ '[class.ng-pending]': '_shouldForward("pending")',
1012
+ }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
1013
+ { provide: MAT_FORM_FIELD, useExisting: MatFormField },
1014
+ { provide: FLOATING_LABEL_PARENT, useExisting: MatFormField },
1015
+ ], imports: [
1016
+ MatFormFieldFloatingLabel,
1017
+ MatFormFieldNotchedOutline,
1018
+ NgTemplateOutlet,
1019
+ MatFormFieldLineRipple,
1020
+ MatHint,
1021
+ ], template: "<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 @switch (_getDisplayedMessages()) {\n @case ('error') {\n <div class=\"mat-mdc-form-field-error-wrapper\">\n <ng-content select=\"mat-error, [matError]\"></ng-content>\n </div>\n }\n\n @case ('hint') {\n <div class=\"mat-mdc-form-field-hint-wrapper\">\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 </div>\n }\n }\n</div>\n", styles: [".mdc-text-field{display:inline-flex;align-items:baseline;padding:0 16px;position:relative;box-sizing:border-box;overflow:hidden;will-change:opacity,transform,color;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.mdc-text-field__input{width:100%;min-width:0;border:none;border-radius:0;background:none;padding:0;-moz-appearance:none;-webkit-appearance:none;height:28px}.mdc-text-field__input::-webkit-calendar-picker-indicator{display:none}.mdc-text-field__input::-ms-clear{display:none}.mdc-text-field__input:focus{outline:none}.mdc-text-field__input:invalid{box-shadow:none}.mdc-text-field__input::placeholder{opacity:0}.mdc-text-field__input::-moz-placeholder{opacity:0}.mdc-text-field__input::-webkit-input-placeholder{opacity:0}.mdc-text-field__input:-ms-input-placeholder{opacity:0}.mdc-text-field--no-label .mdc-text-field__input::placeholder,.mdc-text-field--focused .mdc-text-field__input::placeholder{opacity:1}.mdc-text-field--no-label .mdc-text-field__input::-moz-placeholder,.mdc-text-field--focused .mdc-text-field__input::-moz-placeholder{opacity:1}.mdc-text-field--no-label .mdc-text-field__input::-webkit-input-placeholder,.mdc-text-field--focused .mdc-text-field__input::-webkit-input-placeholder{opacity:1}.mdc-text-field--no-label .mdc-text-field__input:-ms-input-placeholder,.mdc-text-field--focused .mdc-text-field__input:-ms-input-placeholder{opacity:1}.mdc-text-field--disabled:not(.mdc-text-field--no-label) .mdc-text-field__input.mat-mdc-input-disabled-interactive::placeholder{opacity:0}.mdc-text-field--disabled:not(.mdc-text-field--no-label) .mdc-text-field__input.mat-mdc-input-disabled-interactive::-moz-placeholder{opacity:0}.mdc-text-field--disabled:not(.mdc-text-field--no-label) .mdc-text-field__input.mat-mdc-input-disabled-interactive::-webkit-input-placeholder{opacity:0}.mdc-text-field--disabled:not(.mdc-text-field--no-label) .mdc-text-field__input.mat-mdc-input-disabled-interactive:-ms-input-placeholder{opacity:0}.mdc-text-field--outlined .mdc-text-field__input,.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input{height:100%}.mdc-text-field--outlined .mdc-text-field__input{display:flex;border:none !important;background-color:rgba(0,0,0,0)}.mdc-text-field--disabled .mdc-text-field__input{pointer-events:auto}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input{color:var(--mdc-filled-text-field-input-text-color, var(--mat-sys-on-surface));caret-color:var(--mdc-filled-text-field-caret-color, var(--mat-sys-primary))}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:var(--mdc-filled-text-field-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input::-moz-placeholder{color:var(--mdc-filled-text-field-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input::-webkit-input-placeholder{color:var(--mdc-filled-text-field-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:var(--mdc-filled-text-field-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mdc-filled-text-field-error-caret-color)}.mdc-text-field--filled.mdc-text-field--disabled .mdc-text-field__input{color:var(--mdc-filled-text-field-disabled-input-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input{color:var(--mdc-outlined-text-field-input-text-color, var(--mat-sys-on-surface));caret-color:var(--mdc-outlined-text-field-caret-color, var(--mat-sys-primary))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:var(--mdc-outlined-text-field-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input::-moz-placeholder{color:var(--mdc-outlined-text-field-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input::-webkit-input-placeholder{color:var(--mdc-outlined-text-field-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:var(--mdc-outlined-text-field-input-text-placeholder-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mdc-outlined-text-field-error-caret-color)}.mdc-text-field--outlined.mdc-text-field--disabled .mdc-text-field__input{color:var(--mdc-outlined-text-field-disabled-input-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}@media(forced-colors: active){.mdc-text-field--disabled .mdc-text-field__input{background-color:Window}}.mdc-text-field--filled{height:56px;border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-left-radius:var(--mdc-filled-text-field-container-shape, var(--mat-sys-corner-extra-small));border-top-right-radius:var(--mdc-filled-text-field-container-shape, var(--mat-sys-corner-extra-small))}.mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:var(--mdc-filled-text-field-container-color, var(--mat-sys-surface-variant))}.mdc-text-field--filled.mdc-text-field--disabled{background-color:var(--mdc-filled-text-field-disabled-container-color, color-mix(in srgb, var(--mat-sys-on-surface) 4%, transparent))}.mdc-text-field--outlined{height:56px;overflow:visible;padding-right:max(16px,var(--mdc-outlined-text-field-container-shape, var(--mat-sys-corner-extra-small)));padding-left:max(16px,var(--mdc-outlined-text-field-container-shape, var(--mat-sys-corner-extra-small)) + 4px)}[dir=rtl] .mdc-text-field--outlined{padding-right:max(16px,var(--mdc-outlined-text-field-container-shape, var(--mat-sys-corner-extra-small)) + 4px);padding-left:max(16px,var(--mdc-outlined-text-field-container-shape, var(--mat-sys-corner-extra-small)))}.mdc-floating-label{position:absolute;left:0;transform-origin:left top;line-height:1.15rem;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:text;overflow:hidden;will-change:transform}[dir=rtl] .mdc-floating-label{right:0;left:auto;transform-origin:right top;text-align:right}.mdc-text-field .mdc-floating-label{top:50%;transform:translateY(-50%);pointer-events:none}.mdc-notched-outline .mdc-floating-label{display:inline-block;position:relative;max-width:100%}.mdc-text-field--outlined .mdc-floating-label{left:4px;right:auto}[dir=rtl] .mdc-text-field--outlined .mdc-floating-label{left:auto;right:4px}.mdc-text-field--filled .mdc-floating-label{left:16px;right:auto}[dir=rtl] .mdc-text-field--filled .mdc-floating-label{left:auto;right:16px}.mdc-text-field--disabled .mdc-floating-label{cursor:default}@media(forced-colors: active){.mdc-text-field--disabled .mdc-floating-label{z-index:1}}.mdc-text-field--filled.mdc-text-field--no-label .mdc-floating-label{display:none}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-filled-text-field-label-text-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label{color:var(--mdc-filled-text-field-focus-label-text-color, var(--mat-sys-primary))}.mdc-text-field--filled:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-floating-label{color:var(--mdc-filled-text-field-hover-label-text-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled.mdc-text-field--disabled .mdc-floating-label{color:var(--mdc-filled-text-field-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid .mdc-floating-label{color:var(--mdc-filled-text-field-error-label-text-color, var(--mat-sys-error))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid.mdc-text-field--focused .mdc-floating-label{color:var(--mdc-filled-text-field-error-focus-label-text-color, var(--mat-sys-error))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-floating-label{color:var(--mdc-filled-text-field-error-hover-label-text-color, var(--mat-sys-on-error-container))}.mdc-text-field--filled .mdc-floating-label{font-family:var(--mdc-filled-text-field-label-text-font, var(--mat-sys-body-large-font));font-size:var(--mdc-filled-text-field-label-text-size, var(--mat-sys-body-large-size));font-weight:var(--mdc-filled-text-field-label-text-weight, var(--mat-sys-body-large-weight));letter-spacing:var(--mdc-filled-text-field-label-text-tracking, var(--mat-sys-body-large-tracking))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-outlined-text-field-label-text-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label{color:var(--mdc-outlined-text-field-focus-label-text-color, var(--mat-sys-primary))}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-floating-label{color:var(--mdc-outlined-text-field-hover-label-text-color, var(--mat-sys-on-surface))}.mdc-text-field--outlined.mdc-text-field--disabled .mdc-floating-label{color:var(--mdc-outlined-text-field-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid .mdc-floating-label{color:var(--mdc-outlined-text-field-error-label-text-color, var(--mat-sys-error))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid.mdc-text-field--focused .mdc-floating-label{color:var(--mdc-outlined-text-field-error-focus-label-text-color, var(--mat-sys-error))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-floating-label{color:var(--mdc-outlined-text-field-error-hover-label-text-color, var(--mat-sys-on-error-container))}.mdc-text-field--outlined .mdc-floating-label{font-family:var(--mdc-outlined-text-field-label-text-font, var(--mat-sys-body-large-font));font-size:var(--mdc-outlined-text-field-label-text-size, var(--mat-sys-body-large-size));font-weight:var(--mdc-outlined-text-field-label-text-weight, var(--mat-sys-body-large-weight));letter-spacing:var(--mdc-outlined-text-field-label-text-tracking, var(--mat-sys-body-large-tracking))}.mdc-floating-label--float-above{cursor:auto;transform:translateY(-106%) scale(0.75)}.mdc-text-field--filled .mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-37.25px) scale(1);font-size:.75rem}.mdc-notched-outline .mdc-floating-label--float-above{text-overflow:clip}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:133.3333333333%}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) scale(0.75)}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)::after{margin-left:1px;margin-right:0;content:\"*\"}[dir=rtl] .mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)::after{margin-left:0;margin-right:1px}.mdc-notched-outline{display:flex;position:absolute;top:0;right:0;left:0;box-sizing:border-box;width:100%;max-width:100%;height:100%;text-align:left;pointer-events:none}[dir=rtl] .mdc-notched-outline{text-align:right}.mdc-text-field--outlined .mdc-notched-outline{z-index:1}.mat-mdc-notch-piece{box-sizing:border-box;height:100%;pointer-events:none;border-top:1px solid;border-bottom:1px solid}.mdc-text-field--focused .mat-mdc-notch-piece{border-width:2px}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mat-mdc-notch-piece{border-color:var(--mdc-outlined-text-field-outline-color, var(--mat-sys-outline));border-width:var(--mdc-outlined-text-field-outline-width, 1px)}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mat-mdc-notch-piece{border-color:var(--mdc-outlined-text-field-hover-outline-color, var(--mat-sys-on-surface))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mat-mdc-notch-piece{border-color:var(--mdc-outlined-text-field-focus-outline-color, var(--mat-sys-primary))}.mdc-text-field--outlined.mdc-text-field--disabled .mat-mdc-notch-piece{border-color:var(--mdc-outlined-text-field-disabled-outline-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid .mat-mdc-notch-piece{border-color:var(--mdc-outlined-text-field-error-outline-color, var(--mat-sys-error))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid:not(.mdc-text-field--focused):hover .mdc-notched-outline .mat-mdc-notch-piece{border-color:var(--mdc-outlined-text-field-error-hover-outline-color, var(--mat-sys-on-error-container))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid.mdc-text-field--focused .mat-mdc-notch-piece{border-color:var(--mdc-outlined-text-field-error-focus-outline-color, var(--mat-sys-error))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline .mat-mdc-notch-piece{border-width:var(--mdc-outlined-text-field-focus-outline-width, 2px)}.mdc-notched-outline__leading{border-left:1px solid;border-right:none;border-top-right-radius:0;border-bottom-right-radius:0;border-top-left-radius:var(--mdc-outlined-text-field-container-shape, var(--mat-sys-corner-extra-small));border-bottom-left-radius:var(--mdc-outlined-text-field-container-shape, var(--mat-sys-corner-extra-small))}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{width:max(12px,var(--mdc-outlined-text-field-container-shape, var(--mat-sys-corner-extra-small)))}[dir=rtl] .mdc-notched-outline__leading{border-left:none;border-right:1px solid;border-bottom-left-radius:0;border-top-left-radius:0;border-top-right-radius:var(--mdc-outlined-text-field-container-shape, var(--mat-sys-corner-extra-small));border-bottom-right-radius:var(--mdc-outlined-text-field-container-shape, var(--mat-sys-corner-extra-small))}.mdc-notched-outline__trailing{flex-grow:1;border-left:none;border-right:1px solid;border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--mdc-outlined-text-field-container-shape, var(--mat-sys-corner-extra-small));border-bottom-right-radius:var(--mdc-outlined-text-field-container-shape, var(--mat-sys-corner-extra-small))}[dir=rtl] .mdc-notched-outline__trailing{border-left:1px solid;border-right:none;border-top-right-radius:0;border-bottom-right-radius:0;border-top-left-radius:var(--mdc-outlined-text-field-container-shape, var(--mat-sys-corner-extra-small));border-bottom-left-radius:var(--mdc-outlined-text-field-container-shape, var(--mat-sys-corner-extra-small))}.mdc-notched-outline__notch{flex:0 0 auto;width:auto}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__notch{max-width:min(var(--mat-form-field-notch-max-width, 100%),100% - max(12px,var(--mdc-outlined-text-field-container-shape, var(--mat-sys-corner-extra-small)))*2)}.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:1px}.mdc-text-field--focused.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:2px}.mdc-notched-outline--notched .mdc-notched-outline__notch{padding-left:0;padding-right:8px;border-top:none;--mat-form-field-notch-max-width: 100%}[dir=rtl] .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-left:8px;padding-right:0}.mdc-notched-outline--no-label .mdc-notched-outline__notch{display:none}.mdc-line-ripple::before,.mdc-line-ripple::after{position:absolute;bottom:0;left:0;width:100%;border-bottom-style:solid;content:\"\"}.mdc-line-ripple::before{z-index:1;border-bottom-width:var(--mdc-filled-text-field-active-indicator-height, 1px)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-active-indicator-color, var(--mat-sys-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-hover-active-indicator-color, var(--mat-sys-on-surface))}.mdc-text-field--filled.mdc-text-field--disabled .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-disabled-active-indicator-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-error-active-indicator-color, var(--mat-sys-error))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid:not(.mdc-text-field--focused):hover .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-error-hover-active-indicator-color, var(--mat-sys-on-error-container))}.mdc-line-ripple::after{transform:scaleX(0);opacity:0;z-index:2}.mdc-text-field--filled .mdc-line-ripple::after{border-bottom-width:var(--mdc-filled-text-field-focus-active-indicator-height, 2px)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple::after{border-bottom-color:var(--mdc-filled-text-field-focus-active-indicator-color, var(--mat-sys-primary))}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple::after{border-bottom-color:var(--mdc-filled-text-field-error-focus-active-indicator-color, var(--mat-sys-error))}.mdc-line-ripple--active::after{transform:scaleX(1);opacity:1}.mdc-line-ripple--deactivating::after{opacity:0}.mdc-text-field--disabled{pointer-events:none}.mat-mdc-form-field-textarea-control{vertical-align:middle;resize:vertical;box-sizing:border-box;height:auto;margin:0;padding:0;border:none;overflow:auto}.mat-mdc-form-field-input-control.mat-mdc-form-field-input-control{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font:inherit;letter-spacing:inherit;text-decoration:inherit;text-transform:inherit;border:none}.mat-mdc-form-field .mat-mdc-floating-label.mdc-floating-label{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;line-height:normal;pointer-events:all;will-change:auto}.mat-mdc-form-field:not(.mat-form-field-disabled) .mat-mdc-floating-label.mdc-floating-label{cursor:inherit}.mdc-text-field--no-label:not(.mdc-text-field--textarea) .mat-mdc-form-field-input-control.mdc-text-field__input,.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control{height:auto}.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control.mdc-text-field__input[type=color]{height:23px}.mat-mdc-text-field-wrapper{height:auto;flex:auto;will-change:auto}.mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-left:0;--mat-mdc-form-field-label-offset-x: -16px}.mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-right:0}[dir=rtl] .mat-mdc-text-field-wrapper{padding-left:16px;padding-right:16px}[dir=rtl] .mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-left:0}[dir=rtl] .mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-right:0}.mat-form-field-disabled .mdc-text-field__input::placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-form-field-disabled .mdc-text-field__input::-moz-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-form-field-disabled .mdc-text-field__input::-webkit-input-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-form-field-disabled .mdc-text-field__input:-ms-input-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-form-field-label-always-float .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms;opacity:1}.mat-mdc-text-field-wrapper .mat-mdc-form-field-infix .mat-mdc-floating-label{left:auto;right:auto}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-text-field__input{display:inline-block}.mat-mdc-form-field .mat-mdc-text-field-wrapper.mdc-text-field .mdc-notched-outline__notch{padding-top:0}.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:1px solid rgba(0,0,0,0)}[dir=rtl] .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:none;border-right:1px solid rgba(0,0,0,0)}.mat-mdc-form-field-infix{min-height:var(--mat-form-field-container-height, 56px);padding-top:var(--mat-form-field-filled-with-label-container-padding-top, 24px);padding-bottom:var(--mat-form-field-filled-with-label-container-padding-bottom, 8px)}.mdc-text-field--outlined .mat-mdc-form-field-infix,.mdc-text-field--no-label .mat-mdc-form-field-infix{padding-top:var(--mat-form-field-container-vertical-padding, 16px);padding-bottom:var(--mat-form-field-container-vertical-padding, 16px)}.mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:calc(var(--mat-form-field-container-height, 56px)/2)}.mdc-text-field--filled .mat-mdc-floating-label{display:var(--mat-form-field-filled-label-display, block)}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY(calc(calc(6.75px + var(--mat-form-field-container-height, 56px) / 2) * -1)) scale(var(--mat-mdc-form-field-floating-label-scale, 0.75));transform:var(--mat-mdc-form-field-label-transform)}@keyframes _mat-form-field-subscript-animation{from{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.mat-mdc-form-field-subscript-wrapper{box-sizing:border-box;width:100%;position:relative}.mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-error-wrapper{position:absolute;top:0;left:0;right:0;padding:0 16px;opacity:1;transform:translateY(0);animation:_mat-form-field-subscript-animation 0ms cubic-bezier(0.55, 0, 0.55, 0.2)}.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-error-wrapper{position:static}.mat-mdc-form-field-bottom-align::before{content:\"\";display:inline-block;height:16px}.mat-mdc-form-field-bottom-align.mat-mdc-form-field-subscript-dynamic-size::before{content:unset}.mat-mdc-form-field-hint-end{order:1}.mat-mdc-form-field-hint-wrapper{display:flex}.mat-mdc-form-field-hint-spacer{flex:1 0 1em}.mat-mdc-form-field-error{display:block;color:var(--mat-form-field-error-text-color, var(--mat-sys-error))}.mat-mdc-form-field-subscript-wrapper,.mat-mdc-form-field-bottom-align::before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-form-field-subscript-text-font, var(--mat-sys-body-small-font));line-height:var(--mat-form-field-subscript-text-line-height, var(--mat-sys-body-small-line-height));font-size:var(--mat-form-field-subscript-text-size, var(--mat-sys-body-small-size));letter-spacing:var(--mat-form-field-subscript-text-tracking, var(--mat-sys-body-small-tracking));font-weight:var(--mat-form-field-subscript-text-weight, var(--mat-sys-body-small-weight))}.mat-mdc-form-field-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;opacity:0;pointer-events:none;background-color:var(--mat-form-field-state-layer-color, var(--mat-sys-on-surface))}.mat-mdc-text-field-wrapper:hover .mat-mdc-form-field-focus-overlay{opacity:var(--mat-form-field-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-form-field.mat-focused .mat-mdc-form-field-focus-overlay{opacity:var(--mat-form-field-focus-state-layer-opacity, 0)}select.mat-mdc-form-field-input-control{-moz-appearance:none;-webkit-appearance:none;background-color:rgba(0,0,0,0);display:inline-flex;box-sizing:border-box}select.mat-mdc-form-field-input-control:not(:disabled){cursor:pointer}select.mat-mdc-form-field-input-control:not(.mat-mdc-native-select-inline) option{color:var(--mat-form-field-select-option-text-color, var(--mat-sys-neutral10))}select.mat-mdc-form-field-input-control:not(.mat-mdc-native-select-inline) option:disabled{color:var(--mat-form-field-select-disabled-option-text-color, color-mix(in srgb, var(--mat-sys-neutral10) 38%, transparent))}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{content:\"\";width:0;height:0;border-left:5px solid rgba(0,0,0,0);border-right:5px solid rgba(0,0,0,0);border-top:5px solid;position:absolute;right:0;top:50%;margin-top:-2.5px;pointer-events:none;color:var(--mat-form-field-enabled-select-arrow-color, var(--mat-sys-on-surface-variant))}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{right:auto;left:0}.mat-mdc-form-field-type-mat-native-select.mat-focused .mat-mdc-form-field-infix::after{color:var(--mat-form-field-focus-select-arrow-color, var(--mat-sys-primary))}.mat-mdc-form-field-type-mat-native-select.mat-form-field-disabled .mat-mdc-form-field-infix::after{color:var(--mat-form-field-disabled-select-arrow-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:15px}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:0;padding-left:15px}@media(forced-colors: active){.mat-form-field-appearance-fill .mat-mdc-text-field-wrapper{outline:solid 1px}}@media(forced-colors: active){.mat-form-field-appearance-fill.mat-form-field-disabled .mat-mdc-text-field-wrapper{outline-color:GrayText}}@media(forced-colors: active){.mat-form-field-appearance-fill.mat-focused .mat-mdc-text-field-wrapper{outline:dashed 3px}}@media(forced-colors: active){.mat-mdc-form-field.mat-focused .mdc-notched-outline{border:dashed 3px}}.mat-mdc-form-field-input-control[type=date],.mat-mdc-form-field-input-control[type=datetime],.mat-mdc-form-field-input-control[type=datetime-local],.mat-mdc-form-field-input-control[type=month],.mat-mdc-form-field-input-control[type=week],.mat-mdc-form-field-input-control[type=time]{line-height:1}.mat-mdc-form-field-input-control::-webkit-datetime-edit{line-height:1;padding:0;margin-bottom:-2px}.mat-mdc-form-field{--mat-mdc-form-field-floating-label-scale: 0.75;display:inline-flex;flex-direction:column;min-width:0;text-align:left;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-form-field-container-text-font, var(--mat-sys-body-large-font));line-height:var(--mat-form-field-container-text-line-height, var(--mat-sys-body-large-line-height));font-size:var(--mat-form-field-container-text-size, var(--mat-sys-body-large-size));letter-spacing:var(--mat-form-field-container-text-tracking, var(--mat-sys-body-large-tracking));font-weight:var(--mat-form-field-container-text-weight, var(--mat-sys-body-large-weight))}.mat-mdc-form-field .mdc-text-field--outlined .mdc-floating-label--float-above{font-size:calc(var(--mat-form-field-outlined-label-text-populated-size)*var(--mat-mdc-form-field-floating-label-scale))}.mat-mdc-form-field .mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:var(--mat-form-field-outlined-label-text-populated-size)}[dir=rtl] .mat-mdc-form-field{text-align:right}.mat-mdc-form-field-flex{display:inline-flex;align-items:baseline;box-sizing:border-box;width:100%}.mat-mdc-text-field-wrapper{width:100%;z-index:0}.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix{align-self:center;line-height:0;pointer-events:auto;position:relative;z-index:1}.mat-mdc-form-field-icon-prefix>.mat-icon,.mat-mdc-form-field-icon-suffix>.mat-icon{padding:0 12px;box-sizing:content-box}.mat-mdc-form-field-icon-prefix{color:var(--mat-form-field-leading-icon-color, var(--mat-sys-on-surface-variant))}.mat-form-field-disabled .mat-mdc-form-field-icon-prefix{color:var(--mat-form-field-disabled-leading-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-trailing-icon-color, var(--mat-sys-on-surface-variant))}.mat-form-field-disabled .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-disabled-trailing-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-form-field-invalid .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-error-trailing-icon-color, var(--mat-sys-error))}.mat-form-field-invalid:not(.mat-focused):not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper:hover .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-error-hover-trailing-icon-color, var(--mat-sys-on-error-container))}.mat-form-field-invalid.mat-focused .mat-mdc-text-field-wrapper .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-error-focus-trailing-icon-color, var(--mat-sys-error))}.mat-mdc-form-field-icon-prefix,[dir=rtl] .mat-mdc-form-field-icon-suffix{padding:0 4px 0 0}.mat-mdc-form-field-icon-suffix,[dir=rtl] .mat-mdc-form-field-icon-prefix{padding:0 0 0 4px}.mat-mdc-form-field-subscript-wrapper .mat-icon,.mat-mdc-form-field label .mat-icon{width:1em;height:1em;font-size:inherit}.mat-mdc-form-field-infix{flex:auto;min-width:0;width:180px;position:relative;box-sizing:border-box}.mat-mdc-form-field-infix:has(textarea[cols]){width:auto}.mat-mdc-form-field .mdc-notched-outline__notch{margin-left:-1px;-webkit-clip-path:inset(-9em -999em -9em 1px);clip-path:inset(-9em -999em -9em 1px)}[dir=rtl] .mat-mdc-form-field .mdc-notched-outline__notch{margin-left:0;margin-right:-1px;-webkit-clip-path:inset(-9em 1px -9em -999em);clip-path:inset(-9em 1px -9em -999em)}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-floating-label{transition:transform 150ms cubic-bezier(0.4, 0, 0.2, 1),color 150ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-text-field__input{transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-text-field__input::placeholder{transition:opacity 67ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-text-field__input::-moz-placeholder{transition:opacity 67ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-text-field__input::-webkit-input-placeholder{transition:opacity 67ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-text-field__input:-ms-input-placeholder{transition:opacity 67ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--no-label .mdc-text-field__input::placeholder,.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--focused .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms}.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--no-label .mdc-text-field__input::-moz-placeholder,.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--focused .mdc-text-field__input::-moz-placeholder{transition-delay:40ms;transition-duration:110ms}.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--no-label .mdc-text-field__input::-webkit-input-placeholder,.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--focused .mdc-text-field__input::-webkit-input-placeholder{transition-delay:40ms;transition-duration:110ms}.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--no-label .mdc-text-field__input:-ms-input-placeholder,.mat-mdc-form-field.mat-form-field-animations-enabled.mdc-text-field--focused .mdc-text-field__input:-ms-input-placeholder{transition-delay:40ms;transition-duration:110ms}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple::before{transition-duration:75ms}.mat-mdc-form-field.mat-form-field-animations-enabled .mdc-line-ripple::after{transition:transform 180ms cubic-bezier(0.4, 0, 0.2, 1),opacity 180ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field.mat-form-field-animations-enabled .mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field.mat-form-field-animations-enabled .mat-mdc-form-field-error-wrapper{animation-duration:300ms}.mdc-notched-outline .mdc-floating-label{max-width:calc(100% + 1px)}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:calc(133.3333333333% + 1px)}"] }]
1022
+ }], ctorParameters: () => [], propDecorators: { _textField: [{
1023
+ type: ViewChild,
1024
+ args: ['textField']
1025
+ }], _iconPrefixContainer: [{
1026
+ type: ViewChild,
1027
+ args: ['iconPrefixContainer']
1028
+ }], _textPrefixContainer: [{
1029
+ type: ViewChild,
1030
+ args: ['textPrefixContainer']
1031
+ }], _iconSuffixContainer: [{
1032
+ type: ViewChild,
1033
+ args: ['iconSuffixContainer']
1034
+ }], _textSuffixContainer: [{
1035
+ type: ViewChild,
1036
+ args: ['textSuffixContainer']
1037
+ }], _floatingLabel: [{
1038
+ type: ViewChild,
1039
+ args: [MatFormFieldFloatingLabel]
1040
+ }], _notchedOutline: [{
1041
+ type: ViewChild,
1042
+ args: [MatFormFieldNotchedOutline]
1043
+ }], _lineRipple: [{
1044
+ type: ViewChild,
1045
+ args: [MatFormFieldLineRipple]
1046
+ }], _formFieldControl: [{
1047
+ type: ContentChild,
1048
+ args: [MatFormFieldControl]
1049
+ }], _prefixChildren: [{
1050
+ type: ContentChildren,
1051
+ args: [MAT_PREFIX, { descendants: true }]
1052
+ }], _suffixChildren: [{
1053
+ type: ContentChildren,
1054
+ args: [MAT_SUFFIX, { descendants: true }]
1055
+ }], _errorChildren: [{
1056
+ type: ContentChildren,
1057
+ args: [MAT_ERROR, { descendants: true }]
1058
+ }], _hintChildren: [{
1059
+ type: ContentChildren,
1060
+ args: [MatHint, { descendants: true }]
1061
+ }], hideRequiredMarker: [{
1062
+ type: Input
1063
+ }], color: [{
1064
+ type: Input
1065
+ }], floatLabel: [{
1066
+ type: Input
1067
+ }], appearance: [{
1068
+ type: Input
1069
+ }], subscriptSizing: [{
1070
+ type: Input
1071
+ }], hintLabel: [{
1072
+ type: Input
1073
+ }] } });
1074
+
1075
+ export { MAT_FORM_FIELD as M, MatFormFieldControl as a, MatLabel as b, MAT_ERROR as c, MatError as d, MatHint as e, MAT_PREFIX as f, MatPrefix as g, MAT_SUFFIX as h, MatSuffix as i, MAT_FORM_FIELD_DEFAULT_OPTIONS as j, MatFormField as k, getMatFormFieldPlaceholderConflictError as l, getMatFormFieldDuplicatedHintError as m, getMatFormFieldMissingControlError as n };
1076
+ //# sourceMappingURL=form-field-6d755764.mjs.map