@angular/material 10.0.0-rc.3 → 10.1.0

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 (627) hide show
  1. package/_theming.scss +17 -17
  2. package/autocomplete/index.metadata.json +1 -1
  3. package/autocomplete/testing/autocomplete-harness.d.ts +2 -0
  4. package/bundles/material-autocomplete-testing.umd.js +11 -0
  5. package/bundles/material-autocomplete-testing.umd.js.map +1 -1
  6. package/bundles/material-autocomplete-testing.umd.min.js +2 -2
  7. package/bundles/material-autocomplete-testing.umd.min.js.map +1 -1
  8. package/bundles/material-autocomplete.umd.js +3 -1
  9. package/bundles/material-autocomplete.umd.js.map +1 -1
  10. package/bundles/material-autocomplete.umd.min.js +5 -5
  11. package/bundles/material-autocomplete.umd.min.js.map +1 -1
  12. package/bundles/material-badge-testing.umd.min.js +1 -1
  13. package/bundles/material-badge-testing.umd.min.js.map +1 -1
  14. package/bundles/material-bottom-sheet-testing.umd.min.js +1 -1
  15. package/bundles/material-bottom-sheet-testing.umd.min.js.map +1 -1
  16. package/bundles/material-button-testing.umd.js +11 -0
  17. package/bundles/material-button-testing.umd.js.map +1 -1
  18. package/bundles/material-button-testing.umd.min.js +2 -2
  19. package/bundles/material-button-testing.umd.min.js.map +1 -1
  20. package/bundles/material-button-toggle-testing.umd.js +11 -0
  21. package/bundles/material-button-toggle-testing.umd.js.map +1 -1
  22. package/bundles/material-button-toggle-testing.umd.min.js +3 -3
  23. package/bundles/material-button-toggle-testing.umd.min.js.map +1 -1
  24. package/bundles/material-button-toggle.umd.js +12 -3
  25. package/bundles/material-button-toggle.umd.js.map +1 -1
  26. package/bundles/material-button-toggle.umd.min.js +2 -2
  27. package/bundles/material-button-toggle.umd.min.js.map +1 -1
  28. package/bundles/material-button.umd.js +7 -2
  29. package/bundles/material-button.umd.js.map +1 -1
  30. package/bundles/material-button.umd.min.js +4 -4
  31. package/bundles/material-button.umd.min.js.map +1 -1
  32. package/bundles/material-card-testing.umd.js +335 -0
  33. package/bundles/material-card-testing.umd.js.map +1 -0
  34. package/bundles/material-card-testing.umd.min.js +44 -0
  35. package/bundles/material-card-testing.umd.min.js.map +1 -0
  36. package/bundles/material-checkbox-testing.umd.js +11 -0
  37. package/bundles/material-checkbox-testing.umd.js.map +1 -1
  38. package/bundles/material-checkbox-testing.umd.min.js +3 -3
  39. package/bundles/material-checkbox-testing.umd.min.js.map +1 -1
  40. package/bundles/material-checkbox.umd.js.map +1 -1
  41. package/bundles/material-chips.umd.js +36 -12
  42. package/bundles/material-chips.umd.js.map +1 -1
  43. package/bundles/material-chips.umd.min.js +4 -4
  44. package/bundles/material-chips.umd.min.js.map +1 -1
  45. package/bundles/material-core-testing.umd.min.js +1 -1
  46. package/bundles/material-core-testing.umd.min.js.map +1 -1
  47. package/bundles/material-core.umd.js +11 -3
  48. package/bundles/material-core.umd.js.map +1 -1
  49. package/bundles/material-core.umd.min.js +11 -11
  50. package/bundles/material-core.umd.min.js.map +1 -1
  51. package/bundles/material-datepicker.umd.js +20 -11
  52. package/bundles/material-datepicker.umd.js.map +1 -1
  53. package/bundles/material-datepicker.umd.min.js +5 -5
  54. package/bundles/material-datepicker.umd.min.js.map +1 -1
  55. package/bundles/material-dialog-testing.umd.min.js +1 -1
  56. package/bundles/material-dialog-testing.umd.min.js.map +1 -1
  57. package/bundles/material-dialog.umd.js +45 -8
  58. package/bundles/material-dialog.umd.js.map +1 -1
  59. package/bundles/material-dialog.umd.min.js +14 -7
  60. package/bundles/material-dialog.umd.min.js.map +1 -1
  61. package/bundles/material-divider-testing.umd.min.js +1 -1
  62. package/bundles/material-divider-testing.umd.min.js.map +1 -1
  63. package/bundles/material-expansion-testing.umd.js +11 -0
  64. package/bundles/material-expansion-testing.umd.js.map +1 -1
  65. package/bundles/material-expansion-testing.umd.min.js +3 -3
  66. package/bundles/material-expansion-testing.umd.min.js.map +1 -1
  67. package/bundles/material-form-field-testing.umd.js +32 -0
  68. package/bundles/material-form-field-testing.umd.js.map +1 -1
  69. package/bundles/material-form-field-testing.umd.min.js +4 -4
  70. package/bundles/material-form-field-testing.umd.min.js.map +1 -1
  71. package/bundles/material-form-field.umd.js +47 -21
  72. package/bundles/material-form-field.umd.js.map +1 -1
  73. package/bundles/material-form-field.umd.min.js +5 -5
  74. package/bundles/material-form-field.umd.min.js.map +1 -1
  75. package/bundles/material-grid-list-testing.umd.min.js +1 -1
  76. package/bundles/material-grid-list-testing.umd.min.js.map +1 -1
  77. package/bundles/material-grid-list.umd.js +2 -2
  78. package/bundles/material-grid-list.umd.js.map +1 -1
  79. package/bundles/material-grid-list.umd.min.js +2 -2
  80. package/bundles/material-grid-list.umd.min.js.map +1 -1
  81. package/bundles/material-input-testing.umd.js +23 -6
  82. package/bundles/material-input-testing.umd.js.map +1 -1
  83. package/bundles/material-input-testing.umd.min.js +3 -3
  84. package/bundles/material-input-testing.umd.min.js.map +1 -1
  85. package/bundles/material-input.umd.js +28 -3
  86. package/bundles/material-input.umd.js.map +1 -1
  87. package/bundles/material-input.umd.min.js +3 -3
  88. package/bundles/material-input.umd.min.js.map +1 -1
  89. package/bundles/material-list-testing.umd.js +33 -0
  90. package/bundles/material-list-testing.umd.js.map +1 -1
  91. package/bundles/material-list-testing.umd.min.js +2 -2
  92. package/bundles/material-list-testing.umd.min.js.map +1 -1
  93. package/bundles/material-list.umd.js +3 -3
  94. package/bundles/material-list.umd.min.js +1 -1
  95. package/bundles/material-list.umd.min.js.map +1 -1
  96. package/bundles/material-menu-testing.umd.js +22 -0
  97. package/bundles/material-menu-testing.umd.js.map +1 -1
  98. package/bundles/material-menu-testing.umd.min.js +2 -2
  99. package/bundles/material-menu-testing.umd.min.js.map +1 -1
  100. package/bundles/material-menu.umd.js +13 -2
  101. package/bundles/material-menu.umd.js.map +1 -1
  102. package/bundles/material-menu.umd.min.js +4 -4
  103. package/bundles/material-menu.umd.min.js.map +1 -1
  104. package/bundles/material-paginator-testing.umd.min.js +1 -1
  105. package/bundles/material-paginator-testing.umd.min.js.map +1 -1
  106. package/bundles/material-progress-bar-testing.umd.min.js +1 -1
  107. package/bundles/material-progress-bar-testing.umd.min.js.map +1 -1
  108. package/bundles/material-progress-spinner-testing.umd.js +1 -1
  109. package/bundles/material-progress-spinner-testing.umd.js.map +1 -1
  110. package/bundles/material-progress-spinner-testing.umd.min.js +2 -2
  111. package/bundles/material-progress-spinner-testing.umd.min.js.map +1 -1
  112. package/bundles/material-progress-spinner.umd.js +2 -2
  113. package/bundles/material-progress-spinner.umd.min.js +3 -3
  114. package/bundles/material-progress-spinner.umd.min.js.map +1 -1
  115. package/bundles/material-radio-testing.umd.js +11 -0
  116. package/bundles/material-radio-testing.umd.js.map +1 -1
  117. package/bundles/material-radio-testing.umd.min.js +3 -3
  118. package/bundles/material-radio-testing.umd.min.js.map +1 -1
  119. package/bundles/material-radio.umd.js +15 -5
  120. package/bundles/material-radio.umd.js.map +1 -1
  121. package/bundles/material-radio.umd.min.js +2 -2
  122. package/bundles/material-radio.umd.min.js.map +1 -1
  123. package/bundles/material-select-testing.umd.js +11 -0
  124. package/bundles/material-select-testing.umd.js.map +1 -1
  125. package/bundles/material-select-testing.umd.min.js +2 -2
  126. package/bundles/material-select-testing.umd.min.js.map +1 -1
  127. package/bundles/material-select.umd.js +11 -3
  128. package/bundles/material-select.umd.js.map +1 -1
  129. package/bundles/material-select.umd.min.js +4 -4
  130. package/bundles/material-select.umd.min.js.map +1 -1
  131. package/bundles/material-sidenav-testing.umd.min.js +1 -1
  132. package/bundles/material-sidenav-testing.umd.min.js.map +1 -1
  133. package/bundles/material-sidenav.umd.js +41 -17
  134. package/bundles/material-sidenav.umd.js.map +1 -1
  135. package/bundles/material-sidenav.umd.min.js +2 -2
  136. package/bundles/material-sidenav.umd.min.js.map +1 -1
  137. package/bundles/material-slide-toggle-testing.umd.js +11 -0
  138. package/bundles/material-slide-toggle-testing.umd.js.map +1 -1
  139. package/bundles/material-slide-toggle-testing.umd.min.js +2 -2
  140. package/bundles/material-slide-toggle-testing.umd.min.js.map +1 -1
  141. package/bundles/material-slide-toggle.umd.js.map +1 -1
  142. package/bundles/material-slider-testing.umd.js +11 -0
  143. package/bundles/material-slider-testing.umd.js.map +1 -1
  144. package/bundles/material-slider-testing.umd.min.js +2 -2
  145. package/bundles/material-slider-testing.umd.min.js.map +1 -1
  146. package/bundles/material-snack-bar-testing.umd.min.js +1 -1
  147. package/bundles/material-snack-bar-testing.umd.min.js.map +1 -1
  148. package/bundles/material-snack-bar.umd.js +47 -39
  149. package/bundles/material-snack-bar.umd.js.map +1 -1
  150. package/bundles/material-snack-bar.umd.min.js +2 -2
  151. package/bundles/material-snack-bar.umd.min.js.map +1 -1
  152. package/bundles/material-sort-testing.umd.js +10 -10
  153. package/bundles/material-sort-testing.umd.js.map +1 -1
  154. package/bundles/material-sort-testing.umd.min.js +3 -3
  155. package/bundles/material-sort-testing.umd.min.js.map +1 -1
  156. package/bundles/material-sort.umd.js +25 -12
  157. package/bundles/material-sort.umd.js.map +1 -1
  158. package/bundles/material-sort.umd.min.js +5 -5
  159. package/bundles/material-sort.umd.min.js.map +1 -1
  160. package/bundles/material-table-testing.umd.min.js +1 -1
  161. package/bundles/material-table-testing.umd.min.js.map +1 -1
  162. package/bundles/material-table.umd.min.js +2 -2
  163. package/bundles/material-table.umd.min.js.map +1 -1
  164. package/bundles/material-tabs-testing.umd.min.js +1 -1
  165. package/bundles/material-tabs-testing.umd.min.js.map +1 -1
  166. package/bundles/material-tabs.umd.js +23 -4
  167. package/bundles/material-tabs.umd.js.map +1 -1
  168. package/bundles/material-tabs.umd.min.js +5 -12
  169. package/bundles/material-tabs.umd.min.js.map +1 -1
  170. package/bundles/material-toolbar-testing.umd.js +330 -0
  171. package/bundles/material-toolbar-testing.umd.js.map +1 -0
  172. package/bundles/material-toolbar-testing.umd.min.js +44 -0
  173. package/bundles/material-toolbar-testing.umd.min.js.map +1 -0
  174. package/bundles/material-tooltip-testing.umd.min.js +1 -1
  175. package/bundles/material-tooltip-testing.umd.min.js.map +1 -1
  176. package/bundles/material-tooltip.umd.js +14 -1
  177. package/bundles/material-tooltip.umd.js.map +1 -1
  178. package/bundles/material-tooltip.umd.min.js +3 -3
  179. package/bundles/material-tooltip.umd.min.js.map +1 -1
  180. package/bundles/material-tree.umd.js.map +1 -1
  181. package/button/_button-base.scss +1 -1
  182. package/button/_button-theme.scss +8 -8
  183. package/button/index.metadata.json +1 -1
  184. package/button/testing/button-harness.d.ts +2 -0
  185. package/button-toggle/button-toggle.d.ts +10 -3
  186. package/button-toggle/index.metadata.json +1 -1
  187. package/button-toggle/testing/button-toggle-harness.d.ts +2 -0
  188. package/card/testing/card-harness-filters.d.ts +17 -0
  189. package/card/testing/card-harness.d.ts +36 -0
  190. package/card/testing/index.d.ts +8 -0
  191. package/card/testing/package.json +9 -0
  192. package/card/testing/public-api.d.ts +9 -0
  193. package/checkbox/index.metadata.json +1 -1
  194. package/checkbox/testing/checkbox-harness.d.ts +2 -0
  195. package/chips/chip.d.ts +19 -1
  196. package/chips/index.metadata.json +1 -1
  197. package/core/focus-indicators/_focus-indicators.scss +6 -6
  198. package/core/index.metadata.json +1 -1
  199. package/core/option/optgroup.d.ts +7 -0
  200. package/core/ripple/ripple-ref.d.ts +21 -2
  201. package/core/ripple/ripple-renderer.d.ts +1 -19
  202. package/core/ripple/ripple.d.ts +2 -2
  203. package/core/style/_list-common.scss +1 -1
  204. package/datepicker/date-range-input-parts.d.ts +2 -4
  205. package/datepicker/date-range-input.d.ts +4 -4
  206. package/datepicker/date-range-picker.d.ts +10 -3
  207. package/datepicker/datepicker.d.ts +2 -3
  208. package/datepicker/index.metadata.json +1 -1
  209. package/datepicker/public-api.d.ts +1 -1
  210. package/dialog/dialog-container.d.ts +9 -2
  211. package/dialog/dialog-content-directives.d.ts +1 -0
  212. package/dialog/dialog-ref.d.ts +7 -0
  213. package/dialog/index.metadata.json +1 -1
  214. package/esm2015/autocomplete/autocomplete-module.js +18 -22
  215. package/esm2015/autocomplete/autocomplete-origin.js +16 -20
  216. package/esm2015/autocomplete/autocomplete-trigger.js +519 -521
  217. package/esm2015/autocomplete/autocomplete.js +126 -130
  218. package/esm2015/autocomplete/testing/autocomplete-harness.js +99 -97
  219. package/esm2015/badge/badge-module.js +13 -17
  220. package/esm2015/badge/badge.js +184 -188
  221. package/esm2015/badge/testing/badge-harness.js +74 -78
  222. package/esm2015/bottom-sheet/bottom-sheet-container.js +161 -165
  223. package/esm2015/bottom-sheet/bottom-sheet-module.js +15 -19
  224. package/esm2015/bottom-sheet/bottom-sheet.js +124 -128
  225. package/esm2015/bottom-sheet/testing/bottom-sheet-harness.js +29 -33
  226. package/esm2015/button/button-module.js +20 -24
  227. package/esm2015/button/button.js +111 -114
  228. package/esm2015/button/testing/button-harness.js +60 -58
  229. package/esm2015/button-toggle/button-toggle-module.js +10 -14
  230. package/esm2015/button-toggle/button-toggle.js +368 -368
  231. package/esm2015/button-toggle/testing/button-toggle-group-harness.js +42 -46
  232. package/esm2015/button-toggle/testing/button-toggle-harness.js +113 -111
  233. package/esm2015/card/card-module.js +30 -34
  234. package/esm2015/card/card.js +147 -203
  235. package/esm2015/card/testing/card-harness-filters.js +8 -0
  236. package/esm2015/card/testing/card-harness.js +52 -0
  237. package/esm2015/card/testing/index.js +9 -0
  238. package/esm2015/card/testing/public-api.js +10 -0
  239. package/esm2015/card/testing/testing.externs.js +0 -0
  240. package/esm2015/checkbox/checkbox-module.js +21 -29
  241. package/esm2015/checkbox/checkbox-required-validator.js +9 -13
  242. package/esm2015/checkbox/checkbox.js +315 -319
  243. package/esm2015/checkbox/testing/checkbox-harness.js +150 -148
  244. package/esm2015/chips/chip-input.js +119 -123
  245. package/esm2015/chips/chip-list.js +572 -576
  246. package/esm2015/chips/chip.js +333 -328
  247. package/esm2015/chips/chips-module.js +16 -20
  248. package/esm2015/core/animation/animation.js +12 -20
  249. package/esm2015/core/common-behaviors/common-module.js +91 -95
  250. package/esm2015/core/datetime/index.js +19 -27
  251. package/esm2015/core/datetime/native-date-adapter.js +202 -206
  252. package/esm2015/core/error/error-options.js +16 -24
  253. package/esm2015/core/line/line.js +18 -26
  254. package/esm2015/core/option/index.js +10 -14
  255. package/esm2015/core/option/optgroup.js +36 -33
  256. package/esm2015/core/option/option.js +181 -185
  257. package/esm2015/core/ripple/index.js +10 -14
  258. package/esm2015/core/ripple/ripple-ref.js +1 -1
  259. package/esm2015/core/ripple/ripple-renderer.js +1 -1
  260. package/esm2015/core/ripple/ripple.js +102 -106
  261. package/esm2015/core/selection/index.js +9 -13
  262. package/esm2015/core/selection/pseudo-checkbox/pseudo-checkbox.js +32 -36
  263. package/esm2015/core/testing/optgroup-harness.js +39 -43
  264. package/esm2015/core/testing/option-harness.js +51 -55
  265. package/esm2015/core/version.js +1 -1
  266. package/esm2015/datepicker/calendar-body.js +214 -218
  267. package/esm2015/datepicker/calendar.js +295 -303
  268. package/esm2015/datepicker/date-range-input-parts.js +214 -229
  269. package/esm2015/datepicker/date-range-input.js +244 -242
  270. package/esm2015/datepicker/date-range-picker.js +19 -23
  271. package/esm2015/datepicker/date-range-selection-strategy.js +31 -35
  272. package/esm2015/datepicker/date-selection-model.js +110 -122
  273. package/esm2015/datepicker/datepicker-base.js +418 -426
  274. package/esm2015/datepicker/datepicker-input-base.js +227 -224
  275. package/esm2015/datepicker/datepicker-input.js +111 -115
  276. package/esm2015/datepicker/datepicker-intl.js +37 -41
  277. package/esm2015/datepicker/datepicker-module.js +62 -66
  278. package/esm2015/datepicker/datepicker-toggle.js +81 -89
  279. package/esm2015/datepicker/datepicker.js +13 -17
  280. package/esm2015/datepicker/month-view.js +283 -287
  281. package/esm2015/datepicker/multi-year-view.js +198 -202
  282. package/esm2015/datepicker/public-api.js +2 -2
  283. package/esm2015/datepicker/year-view.js +220 -224
  284. package/esm2015/dialog/dialog-container.js +175 -164
  285. package/esm2015/dialog/dialog-content-directives.js +105 -114
  286. package/esm2015/dialog/dialog-module.js +32 -36
  287. package/esm2015/dialog/dialog-ref.js +17 -3
  288. package/esm2015/dialog/dialog.js +236 -240
  289. package/esm2015/dialog/testing/dialog-harness.js +58 -62
  290. package/esm2015/divider/divider-module.js +10 -14
  291. package/esm2015/divider/divider.js +33 -37
  292. package/esm2015/divider/testing/divider-harness.js +16 -20
  293. package/esm2015/expansion/accordion.js +73 -77
  294. package/esm2015/expansion/expansion-module.js +26 -30
  295. package/esm2015/expansion/expansion-panel-content.js +13 -17
  296. package/esm2015/expansion/expansion-panel-header.js +168 -180
  297. package/esm2015/expansion/expansion-panel.js +144 -152
  298. package/esm2015/expansion/testing/accordion-harness.js +24 -28
  299. package/esm2015/expansion/testing/expansion-harness.js +136 -134
  300. package/esm2015/form-field/error.js +26 -23
  301. package/esm2015/form-field/form-field-control.js +6 -10
  302. package/esm2015/form-field/form-field-module.js +31 -35
  303. package/esm2015/form-field/form-field.js +407 -409
  304. package/esm2015/form-field/hint.js +35 -29
  305. package/esm2015/form-field/label.js +8 -12
  306. package/esm2015/form-field/placeholder.js +8 -12
  307. package/esm2015/form-field/prefix.js +16 -13
  308. package/esm2015/form-field/suffix.js +16 -13
  309. package/esm2015/form-field/testing/form-field-harness.js +220 -206
  310. package/esm2015/grid-list/grid-list-module.js +26 -30
  311. package/esm2015/grid-list/grid-list.js +108 -112
  312. package/esm2015/grid-list/grid-tile.js +91 -111
  313. package/esm2015/grid-list/testing/grid-list-harness.js +62 -66
  314. package/esm2015/grid-list/testing/grid-tile-harness.js +69 -73
  315. package/esm2015/grid-list/tile-styler.js +1 -1
  316. package/esm2015/icon/icon-module.js +10 -14
  317. package/esm2015/icon/icon-registry.js +406 -410
  318. package/esm2015/icon/icon.js +228 -232
  319. package/esm2015/icon/testing/fake-icon-registry.js +66 -74
  320. package/esm2015/input/autosize.js +30 -34
  321. package/esm2015/input/input-module.js +21 -25
  322. package/esm2015/input/input.js +305 -284
  323. package/esm2015/input/testing/input-harness.js +129 -123
  324. package/esm2015/list/list-module.js +32 -36
  325. package/esm2015/list/list.js +165 -189
  326. package/esm2015/list/selection-list.js +503 -511
  327. package/esm2015/list/testing/action-list-harness.js +55 -57
  328. package/esm2015/list/testing/list-harness.js +31 -39
  329. package/esm2015/list/testing/list-item-harness-base.js +13 -17
  330. package/esm2015/list/testing/nav-list-harness.js +62 -64
  331. package/esm2015/list/testing/selection-list-harness.js +136 -138
  332. package/esm2015/menu/menu-content.js +74 -71
  333. package/esm2015/menu/menu-item.js +119 -123
  334. package/esm2015/menu/menu-module.js +29 -37
  335. package/esm2015/menu/menu-panel.js +1 -1
  336. package/esm2015/menu/menu-trigger.js +402 -405
  337. package/esm2015/menu/menu.js +329 -339
  338. package/esm2015/menu/testing/menu-harness.js +193 -189
  339. package/esm2015/paginator/paginator-intl.js +36 -40
  340. package/esm2015/paginator/paginator-module.js +16 -20
  341. package/esm2015/paginator/paginator.js +205 -209
  342. package/esm2015/paginator/testing/paginator-harness.js +91 -95
  343. package/esm2015/progress-bar/progress-bar-module.js +10 -14
  344. package/esm2015/progress-bar/progress-bar.js +114 -118
  345. package/esm2015/progress-bar/testing/progress-bar-harness.js +27 -31
  346. package/esm2015/progress-spinner/progress-spinner-module.js +17 -21
  347. package/esm2015/progress-spinner/progress-spinner.js +181 -189
  348. package/esm2015/progress-spinner/testing/progress-spinner-harness.js +28 -32
  349. package/esm2015/radio/radio-module.js +10 -14
  350. package/esm2015/radio/radio.js +437 -444
  351. package/esm2015/radio/testing/radio-harness.js +241 -243
  352. package/esm2015/select/select-module.js +23 -27
  353. package/esm2015/select/select.js +917 -918
  354. package/esm2015/select/testing/select-harness.js +138 -136
  355. package/esm2015/sidenav/drawer.js +632 -620
  356. package/esm2015/sidenav/sidenav-module.js +31 -35
  357. package/esm2015/sidenav/sidenav.js +104 -116
  358. package/esm2015/sidenav/testing/drawer-harness.js +40 -44
  359. package/esm2015/sidenav/testing/sidenav-harness.js +20 -24
  360. package/esm2015/slide-toggle/slide-toggle-module.js +27 -35
  361. package/esm2015/slide-toggle/slide-toggle-required-validator.js +9 -13
  362. package/esm2015/slide-toggle/slide-toggle.js +184 -188
  363. package/esm2015/slide-toggle/testing/slide-toggle-harness.js +123 -121
  364. package/esm2015/slider/slider-module.js +10 -14
  365. package/esm2015/slider/slider.js +640 -644
  366. package/esm2015/slider/testing/slider-harness.js +129 -127
  367. package/esm2015/snack-bar/simple-snack-bar.js +32 -36
  368. package/esm2015/snack-bar/snack-bar-container.js +144 -148
  369. package/esm2015/snack-bar/snack-bar-module.js +17 -21
  370. package/esm2015/snack-bar/snack-bar-ref.js +1 -1
  371. package/esm2015/snack-bar/snack-bar.js +208 -205
  372. package/esm2015/snack-bar/testing/snack-bar-harness.js +112 -116
  373. package/esm2015/sort/sort-header-intl.js +21 -21
  374. package/esm2015/sort/sort-header.js +200 -194
  375. package/esm2015/sort/sort-module.js +11 -15
  376. package/esm2015/sort/sort.js +92 -96
  377. package/esm2015/sort/testing/sort-harness.js +28 -32
  378. package/esm2015/sort/testing/sort-header-harness.js +66 -67
  379. package/esm2015/stepper/step-header.js +78 -82
  380. package/esm2015/stepper/step-label.js +8 -12
  381. package/esm2015/stepper/stepper-button.js +23 -31
  382. package/esm2015/stepper/stepper-icon.js +16 -20
  383. package/esm2015/stepper/stepper-intl.js +15 -19
  384. package/esm2015/stepper/stepper-module.js +40 -44
  385. package/esm2015/stepper/stepper.js +139 -155
  386. package/esm2015/table/cell.js +94 -122
  387. package/esm2015/table/row.js +90 -118
  388. package/esm2015/table/table-module.js +13 -17
  389. package/esm2015/table/table.js +26 -30
  390. package/esm2015/table/testing/cell-harness.js +56 -68
  391. package/esm2015/table/testing/row-harness.js +90 -102
  392. package/esm2015/table/testing/table-harness.js +65 -69
  393. package/esm2015/table/text-column.js +17 -21
  394. package/esm2015/tabs/index.js +4 -2
  395. package/esm2015/tabs/ink-bar.js +55 -59
  396. package/esm2015/tabs/paginated-tab-header.js +415 -419
  397. package/esm2015/tabs/tab-body.js +179 -191
  398. package/esm2015/tabs/tab-content.js +21 -16
  399. package/esm2015/tabs/tab-group.js +263 -271
  400. package/esm2015/tabs/tab-header.js +69 -77
  401. package/esm2015/tabs/tab-label-wrapper.js +29 -33
  402. package/esm2015/tabs/tab-label.js +16 -13
  403. package/esm2015/tabs/tab-nav-bar/tab-nav-bar.js +199 -215
  404. package/esm2015/tabs/tab.js +80 -83
  405. package/esm2015/tabs/tabs-module.js +38 -42
  406. package/esm2015/tabs/testing/tab-group-harness.js +52 -56
  407. package/esm2015/tabs/testing/tab-harness.js +78 -82
  408. package/esm2015/toolbar/testing/index.js +9 -0
  409. package/esm2015/toolbar/testing/public-api.js +10 -0
  410. package/esm2015/toolbar/testing/testing.externs.js +0 -0
  411. package/esm2015/toolbar/testing/toolbar-harness-filters.js +8 -0
  412. package/esm2015/toolbar/testing/toolbar-harness.js +47 -0
  413. package/esm2015/toolbar/toolbar-module.js +10 -14
  414. package/esm2015/toolbar/toolbar.js +61 -69
  415. package/esm2015/tooltip/testing/tooltip-harness.js +43 -47
  416. package/esm2015/tooltip/tooltip-module.js +17 -21
  417. package/esm2015/tooltip/tooltip.js +502 -497
  418. package/esm2015/tree/data-source/flat-data-source.js +1 -1
  419. package/esm2015/tree/node.js +99 -111
  420. package/esm2015/tree/outlet.js +19 -23
  421. package/esm2015/tree/padding.js +13 -17
  422. package/esm2015/tree/toggle.js +15 -19
  423. package/esm2015/tree/tree-module.js +10 -14
  424. package/esm2015/tree/tree.js +23 -27
  425. package/expansion/testing/expansion-harness.d.ts +2 -0
  426. package/fesm2015/autocomplete/testing.js +98 -95
  427. package/fesm2015/autocomplete/testing.js.map +1 -1
  428. package/fesm2015/autocomplete.js +677 -687
  429. package/fesm2015/autocomplete.js.map +1 -1
  430. package/fesm2015/badge/testing.js +73 -76
  431. package/fesm2015/badge/testing.js.map +1 -1
  432. package/fesm2015/badge.js +195 -201
  433. package/fesm2015/badge.js.map +1 -1
  434. package/fesm2015/bottom-sheet/testing.js +28 -31
  435. package/fesm2015/bottom-sheet/testing.js.map +1 -1
  436. package/fesm2015/bottom-sheet.js +297 -306
  437. package/fesm2015/bottom-sheet.js.map +1 -1
  438. package/fesm2015/button/testing.js +59 -56
  439. package/fesm2015/button/testing.js.map +1 -1
  440. package/fesm2015/button-toggle/testing.js +155 -155
  441. package/fesm2015/button-toggle/testing.js.map +1 -1
  442. package/fesm2015/button-toggle.js +377 -378
  443. package/fesm2015/button-toggle.js.map +1 -1
  444. package/fesm2015/button.js +129 -133
  445. package/fesm2015/button.js.map +1 -1
  446. package/fesm2015/card/testing.js +79 -0
  447. package/fesm2015/card/testing.js.map +1 -0
  448. package/fesm2015/card.js +175 -220
  449. package/fesm2015/card.js.map +1 -1
  450. package/fesm2015/checkbox/testing.js +149 -146
  451. package/fesm2015/checkbox/testing.js.map +1 -1
  452. package/fesm2015/checkbox.js +342 -354
  453. package/fesm2015/checkbox.js.map +1 -1
  454. package/fesm2015/chips.js +1039 -1039
  455. package/fesm2015/chips.js.map +1 -1
  456. package/fesm2015/core/testing.js +88 -94
  457. package/fesm2015/core/testing.js.map +1 -1
  458. package/fesm2015/core.js +729 -773
  459. package/fesm2015/core.js.map +1 -1
  460. package/fesm2015/datepicker.js +2821 -2884
  461. package/fesm2015/datepicker.js.map +1 -1
  462. package/fesm2015/dialog/testing.js +57 -60
  463. package/fesm2015/dialog/testing.js.map +1 -1
  464. package/fesm2015/dialog.js +564 -549
  465. package/fesm2015/dialog.js.map +1 -1
  466. package/fesm2015/divider/testing.js +15 -18
  467. package/fesm2015/divider/testing.js.map +1 -1
  468. package/fesm2015/divider.js +41 -47
  469. package/fesm2015/divider.js.map +1 -1
  470. package/fesm2015/expansion/testing.js +159 -159
  471. package/fesm2015/expansion/testing.js.map +1 -1
  472. package/fesm2015/expansion.js +422 -446
  473. package/fesm2015/expansion.js.map +1 -1
  474. package/fesm2015/form-field/testing.js +219 -204
  475. package/fesm2015/form-field/testing.js.map +1 -1
  476. package/fesm2015/form-field.js +538 -532
  477. package/fesm2015/form-field.js.map +1 -1
  478. package/fesm2015/grid-list/testing.js +129 -135
  479. package/fesm2015/grid-list/testing.js.map +1 -1
  480. package/fesm2015/grid-list.js +221 -242
  481. package/fesm2015/grid-list.js.map +1 -1
  482. package/fesm2015/icon/testing.js +65 -71
  483. package/fesm2015/icon/testing.js.map +1 -1
  484. package/fesm2015/icon.js +660 -669
  485. package/fesm2015/icon.js.map +1 -1
  486. package/fesm2015/input/testing.js +128 -121
  487. package/fesm2015/input/testing.js.map +1 -1
  488. package/fesm2015/input.js +353 -337
  489. package/fesm2015/input.js.map +1 -1
  490. package/fesm2015/list/testing.js +298 -307
  491. package/fesm2015/list/testing.js.map +1 -1
  492. package/fesm2015/list.js +698 -725
  493. package/fesm2015/list.js.map +1 -1
  494. package/fesm2015/menu/testing.js +192 -186
  495. package/fesm2015/menu/testing.js.map +1 -1
  496. package/fesm2015/menu.js +948 -962
  497. package/fesm2015/menu.js.map +1 -1
  498. package/fesm2015/paginator/testing.js +90 -93
  499. package/fesm2015/paginator/testing.js.map +1 -1
  500. package/fesm2015/paginator.js +247 -256
  501. package/fesm2015/paginator.js.map +1 -1
  502. package/fesm2015/progress-bar/testing.js +26 -29
  503. package/fesm2015/progress-bar/testing.js.map +1 -1
  504. package/fesm2015/progress-bar.js +122 -128
  505. package/fesm2015/progress-bar.js.map +1 -1
  506. package/fesm2015/progress-spinner/testing.js +27 -30
  507. package/fesm2015/progress-spinner/testing.js.map +1 -1
  508. package/fesm2015/progress-spinner.js +196 -205
  509. package/fesm2015/progress-spinner.js.map +1 -1
  510. package/fesm2015/radio/testing.js +240 -240
  511. package/fesm2015/radio/testing.js.map +1 -1
  512. package/fesm2015/radio.js +447 -453
  513. package/fesm2015/radio.js.map +1 -1
  514. package/fesm2015/select/testing.js +137 -134
  515. package/fesm2015/select/testing.js.map +1 -1
  516. package/fesm2015/select.js +939 -941
  517. package/fesm2015/select.js.map +1 -1
  518. package/fesm2015/sidenav/testing.js +58 -64
  519. package/fesm2015/sidenav/testing.js.map +1 -1
  520. package/fesm2015/sidenav.js +765 -762
  521. package/fesm2015/sidenav.js.map +1 -1
  522. package/fesm2015/slide-toggle/testing.js +122 -119
  523. package/fesm2015/slide-toggle/testing.js.map +1 -1
  524. package/fesm2015/slide-toggle.js +217 -229
  525. package/fesm2015/slide-toggle.js.map +1 -1
  526. package/fesm2015/slider/testing.js +128 -125
  527. package/fesm2015/slider/testing.js.map +1 -1
  528. package/fesm2015/slider.js +648 -654
  529. package/fesm2015/slider.js.map +1 -1
  530. package/fesm2015/snack-bar/testing.js +111 -114
  531. package/fesm2015/snack-bar/testing.js.map +1 -1
  532. package/fesm2015/snack-bar.js +426 -431
  533. package/fesm2015/snack-bar.js.map +1 -1
  534. package/fesm2015/sort/testing.js +92 -95
  535. package/fesm2015/sort/testing.js.map +1 -1
  536. package/fesm2015/sort.js +320 -318
  537. package/fesm2015/sort.js.map +1 -1
  538. package/fesm2015/stepper.js +312 -345
  539. package/fesm2015/stepper.js.map +1 -1
  540. package/fesm2015/table/testing.js +208 -229
  541. package/fesm2015/table/testing.js.map +1 -1
  542. package/fesm2015/table.js +235 -286
  543. package/fesm2015/table.js.map +1 -1
  544. package/fesm2015/tabs/testing.js +128 -134
  545. package/fesm2015/tabs/testing.js.map +1 -1
  546. package/fesm2015/tabs.js +1362 -1399
  547. package/fesm2015/tabs.js.map +1 -1
  548. package/fesm2015/toolbar/testing.js +74 -0
  549. package/fesm2015/toolbar/testing.js.map +1 -0
  550. package/fesm2015/toolbar.js +69 -78
  551. package/fesm2015/toolbar.js.map +1 -1
  552. package/fesm2015/tooltip/testing.js +42 -45
  553. package/fesm2015/tooltip/testing.js.map +1 -1
  554. package/fesm2015/tooltip.js +517 -513
  555. package/fesm2015/tooltip.js.map +1 -1
  556. package/fesm2015/tree.js +173 -197
  557. package/fesm2015/tree.js.map +1 -1
  558. package/form-field/error.d.ts +7 -0
  559. package/form-field/hint.d.ts +10 -0
  560. package/form-field/index.metadata.json +1 -1
  561. package/form-field/prefix.d.ts +7 -0
  562. package/form-field/suffix.d.ts +7 -0
  563. package/form-field/testing/form-field-harness.d.ts +8 -0
  564. package/grid-list/grid-list.d.ts +2 -1
  565. package/grid-list/index.metadata.json +1 -1
  566. package/grid-list/tile-styler.d.ts +10 -5
  567. package/input/_input-theme.scss +2 -2
  568. package/input/index.metadata.json +1 -1
  569. package/input/input.d.ts +6 -2
  570. package/input/testing/input-harness.d.ts +2 -0
  571. package/list/index.metadata.json +1 -1
  572. package/list/testing/action-list-harness.d.ts +2 -0
  573. package/list/testing/nav-list-harness.d.ts +2 -0
  574. package/list/testing/selection-list-harness.d.ts +2 -0
  575. package/menu/index.metadata.json +1 -1
  576. package/menu/menu-content.d.ts +7 -1
  577. package/menu/menu-panel.d.ts +1 -0
  578. package/menu/menu.d.ts +4 -0
  579. package/menu/testing/menu-harness.d.ts +4 -0
  580. package/package.json +6 -6
  581. package/prebuilt-themes/deeppurple-amber.css +1 -1
  582. package/prebuilt-themes/indigo-pink.css +1 -1
  583. package/prebuilt-themes/pink-bluegrey.css +1 -1
  584. package/prebuilt-themes/purple-green.css +1 -1
  585. package/progress-spinner/index.metadata.json +1 -1
  586. package/radio/index.metadata.json +1 -1
  587. package/radio/radio.d.ts +6 -0
  588. package/radio/testing/radio-harness.d.ts +2 -0
  589. package/schematics/migration.json +5 -0
  590. package/schematics/ng-add/index.js +2 -2
  591. package/schematics/ng-generate/navigation/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.html.template +3 -3
  592. package/schematics/ng-generate/navigation/schema.json +5 -0
  593. package/schematics/ng-update/data/index.js +1 -1
  594. package/schematics/ng-update/index.d.ts +2 -0
  595. package/schematics/ng-update/index.js +7 -2
  596. package/schematics/ng-update/migrations/hammer-gestures-v9/hammer-gestures-migration.js +639 -639
  597. package/schematics/ng-update/migrations/misc-ripples-v7/ripple-speed-factor-migration.js +1 -1
  598. package/select/index.metadata.json +1 -1
  599. package/select/select.d.ts +6 -0
  600. package/select/testing/select-harness.d.ts +2 -0
  601. package/sidenav/drawer.d.ts +15 -3
  602. package/sidenav/index.metadata.json +1 -1
  603. package/slide-toggle/index.metadata.json +1 -1
  604. package/slide-toggle/testing/slide-toggle-harness.d.ts +2 -0
  605. package/slider/testing/slider-harness.d.ts +2 -0
  606. package/snack-bar/index.metadata.json +1 -1
  607. package/snack-bar/simple-snack-bar.d.ts +13 -1
  608. package/snack-bar/snack-bar-container.d.ts +16 -3
  609. package/snack-bar/snack-bar-ref.d.ts +3 -3
  610. package/snack-bar/snack-bar.d.ts +10 -3
  611. package/sort/index.metadata.json +1 -1
  612. package/sort/sort-header-intl.d.ts +5 -1
  613. package/sort/sort-header.d.ts +3 -1
  614. package/sort/testing/sort-header-harness.d.ts +6 -2
  615. package/tabs/index.d.ts +3 -1
  616. package/tabs/index.metadata.json +1 -1
  617. package/tabs/tab-content.d.ts +7 -1
  618. package/tabs/tab-label.d.ts +7 -0
  619. package/toolbar/testing/index.d.ts +8 -0
  620. package/toolbar/testing/package.json +9 -0
  621. package/toolbar/testing/public-api.d.ts +9 -0
  622. package/toolbar/testing/toolbar-harness-filters.d.ts +13 -0
  623. package/toolbar/testing/toolbar-harness.d.ts +31 -0
  624. package/tooltip/index.metadata.json +1 -1
  625. package/tooltip/tooltip.d.ts +1 -0
  626. package/tree/data-source/flat-data-source.d.ts +4 -4
  627. package/tree/index.metadata.json +1 -1
package/fesm2015/input.js CHANGED
@@ -4,7 +4,7 @@ import { coerceBooleanProperty } from '@angular/cdk/coercion';
4
4
  import { getSupportedInputTypes, Platform } from '@angular/cdk/platform';
5
5
  import { NgControl, NgForm, FormGroupDirective } from '@angular/forms';
6
6
  import { mixinErrorState, ErrorStateMatcher } from '@angular/material/core';
7
- import { MatFormFieldControl, MatFormFieldModule } from '@angular/material/form-field';
7
+ import { MatFormFieldControl, MatFormField, MatFormFieldModule } from '@angular/material/form-field';
8
8
  import { Subject } from 'rxjs';
9
9
 
10
10
  /**
@@ -19,38 +19,35 @@ import { Subject } from 'rxjs';
19
19
  * @deprecated Use `cdkTextareaAutosize` from `@angular/cdk/text-field` instead.
20
20
  * @breaking-change 8.0.0
21
21
  */
22
- let MatTextareaAutosize = /** @class */ (() => {
23
- class MatTextareaAutosize extends CdkTextareaAutosize {
24
- get matAutosizeMinRows() { return this.minRows; }
25
- set matAutosizeMinRows(value) { this.minRows = value; }
26
- get matAutosizeMaxRows() { return this.maxRows; }
27
- set matAutosizeMaxRows(value) { this.maxRows = value; }
28
- get matAutosize() { return this.enabled; }
29
- set matAutosize(value) { this.enabled = value; }
30
- get matTextareaAutosize() { return this.enabled; }
31
- set matTextareaAutosize(value) { this.enabled = value; }
32
- }
33
- MatTextareaAutosize.decorators = [
34
- { type: Directive, args: [{
35
- selector: 'textarea[mat-autosize], textarea[matTextareaAutosize]',
36
- exportAs: 'matTextareaAutosize',
37
- inputs: ['cdkAutosizeMinRows', 'cdkAutosizeMaxRows'],
38
- host: {
39
- 'class': 'cdk-textarea-autosize mat-autosize',
40
- // Textarea elements that have the directive applied should have a single row by default.
41
- // Browsers normally show two rows by default and therefore this limits the minRows binding.
42
- 'rows': '1',
43
- },
44
- },] }
45
- ];
46
- MatTextareaAutosize.propDecorators = {
47
- matAutosizeMinRows: [{ type: Input }],
48
- matAutosizeMaxRows: [{ type: Input }],
49
- matAutosize: [{ type: Input, args: ['mat-autosize',] }],
50
- matTextareaAutosize: [{ type: Input }]
51
- };
52
- return MatTextareaAutosize;
53
- })();
22
+ class MatTextareaAutosize extends CdkTextareaAutosize {
23
+ get matAutosizeMinRows() { return this.minRows; }
24
+ set matAutosizeMinRows(value) { this.minRows = value; }
25
+ get matAutosizeMaxRows() { return this.maxRows; }
26
+ set matAutosizeMaxRows(value) { this.maxRows = value; }
27
+ get matAutosize() { return this.enabled; }
28
+ set matAutosize(value) { this.enabled = value; }
29
+ get matTextareaAutosize() { return this.enabled; }
30
+ set matTextareaAutosize(value) { this.enabled = value; }
31
+ }
32
+ MatTextareaAutosize.decorators = [
33
+ { type: Directive, args: [{
34
+ selector: 'textarea[mat-autosize], textarea[matTextareaAutosize]',
35
+ exportAs: 'matTextareaAutosize',
36
+ inputs: ['cdkAutosizeMinRows', 'cdkAutosizeMaxRows'],
37
+ host: {
38
+ 'class': 'cdk-textarea-autosize mat-autosize',
39
+ // Textarea elements that have the directive applied should have a single row by default.
40
+ // Browsers normally show two rows by default and therefore this limits the minRows binding.
41
+ 'rows': '1',
42
+ },
43
+ },] }
44
+ ];
45
+ MatTextareaAutosize.propDecorators = {
46
+ matAutosizeMinRows: [{ type: Input }],
47
+ matAutosizeMaxRows: [{ type: Input }],
48
+ matAutosize: [{ type: Input, args: ['mat-autosize',] }],
49
+ matTextareaAutosize: [{ type: Input }]
50
+ };
54
51
 
55
52
  /**
56
53
  * @license
@@ -113,322 +110,344 @@ class MatInputBase {
113
110
  }
114
111
  const _MatInputMixinBase = mixinErrorState(MatInputBase);
115
112
  /** Directive that allows a native input to work inside a `MatFormField`. */
116
- let MatInput = /** @class */ (() => {
117
- class MatInput extends _MatInputMixinBase {
118
- constructor(_elementRef, _platform,
119
- /** @docs-private */
120
- ngControl, _parentForm, _parentFormGroup, _defaultErrorStateMatcher, inputValueAccessor, _autofillMonitor, ngZone) {
121
- super(_defaultErrorStateMatcher, _parentForm, _parentFormGroup, ngControl);
122
- this._elementRef = _elementRef;
123
- this._platform = _platform;
124
- this.ngControl = ngControl;
125
- this._autofillMonitor = _autofillMonitor;
126
- this._uid = `mat-input-${nextUniqueId++}`;
127
- /**
128
- * Implemented as part of MatFormFieldControl.
129
- * @docs-private
130
- */
131
- this.focused = false;
132
- /**
133
- * Implemented as part of MatFormFieldControl.
134
- * @docs-private
135
- */
136
- this.stateChanges = new Subject();
137
- /**
138
- * Implemented as part of MatFormFieldControl.
139
- * @docs-private
140
- */
141
- this.controlType = 'mat-input';
142
- /**
143
- * Implemented as part of MatFormFieldControl.
144
- * @docs-private
145
- */
146
- this.autofilled = false;
147
- this._disabled = false;
148
- this._required = false;
149
- this._type = 'text';
150
- this._readonly = false;
151
- this._neverEmptyInputTypes = [
152
- 'date',
153
- 'datetime',
154
- 'datetime-local',
155
- 'month',
156
- 'time',
157
- 'week'
158
- ].filter(t => getSupportedInputTypes().has(t));
159
- const element = this._elementRef.nativeElement;
160
- const nodeName = element.nodeName.toLowerCase();
161
- // If no input value accessor was explicitly specified, use the element as the input value
162
- // accessor.
163
- this._inputValueAccessor = inputValueAccessor || element;
164
- this._previousNativeValue = this.value;
165
- // Force setter to be called in case id was not specified.
166
- this.id = this.id;
167
- // On some versions of iOS the caret gets stuck in the wrong place when holding down the delete
168
- // key. In order to get around this we need to "jiggle" the caret loose. Since this bug only
169
- // exists on iOS, we only bother to install the listener on iOS.
170
- if (_platform.IOS) {
171
- ngZone.runOutsideAngular(() => {
172
- _elementRef.nativeElement.addEventListener('keyup', (event) => {
173
- let el = event.target;
174
- if (!el.value && !el.selectionStart && !el.selectionEnd) {
175
- // Note: Just setting `0, 0` doesn't fix the issue. Setting
176
- // `1, 1` fixes it for the first time that you type text and
177
- // then hold delete. Toggling to `1, 1` and then back to
178
- // `0, 0` seems to completely fix it.
179
- el.setSelectionRange(1, 1);
180
- el.setSelectionRange(0, 0);
181
- }
182
- });
183
- });
184
- }
185
- this._isServer = !this._platform.isBrowser;
186
- this._isNativeSelect = nodeName === 'select';
187
- this._isTextarea = nodeName === 'textarea';
188
- if (this._isNativeSelect) {
189
- this.controlType = element.multiple ? 'mat-native-select-multiple' :
190
- 'mat-native-select';
191
- }
192
- }
113
+ class MatInput extends _MatInputMixinBase {
114
+ constructor(_elementRef, _platform,
115
+ /** @docs-private */
116
+ ngControl, _parentForm, _parentFormGroup, _defaultErrorStateMatcher, inputValueAccessor, _autofillMonitor, ngZone,
117
+ // @breaking-change 8.0.0 `_formField` parameter to be made required.
118
+ _formField) {
119
+ super(_defaultErrorStateMatcher, _parentForm, _parentFormGroup, ngControl);
120
+ this._elementRef = _elementRef;
121
+ this._platform = _platform;
122
+ this.ngControl = ngControl;
123
+ this._autofillMonitor = _autofillMonitor;
124
+ this._formField = _formField;
125
+ this._uid = `mat-input-${nextUniqueId++}`;
193
126
  /**
194
127
  * Implemented as part of MatFormFieldControl.
195
128
  * @docs-private
196
129
  */
197
- get disabled() {
198
- if (this.ngControl && this.ngControl.disabled !== null) {
199
- return this.ngControl.disabled;
200
- }
201
- return this._disabled;
202
- }
203
- set disabled(value) {
204
- this._disabled = coerceBooleanProperty(value);
205
- // Browsers may not fire the blur event if the input is disabled too quickly.
206
- // Reset from here to ensure that the element doesn't become stuck.
207
- if (this.focused) {
208
- this.focused = false;
209
- this.stateChanges.next();
210
- }
211
- }
130
+ this.focused = false;
212
131
  /**
213
132
  * Implemented as part of MatFormFieldControl.
214
133
  * @docs-private
215
134
  */
216
- get id() { return this._id; }
217
- set id(value) { this._id = value || this._uid; }
135
+ this.stateChanges = new Subject();
218
136
  /**
219
137
  * Implemented as part of MatFormFieldControl.
220
138
  * @docs-private
221
139
  */
222
- get required() { return this._required; }
223
- set required(value) { this._required = coerceBooleanProperty(value); }
224
- /** Input type of the element. */
225
- get type() { return this._type; }
226
- set type(value) {
227
- this._type = value || 'text';
228
- this._validateType();
229
- // When using Angular inputs, developers are no longer able to set the properties on the native
230
- // input element. To ensure that bindings for `type` work, we need to sync the setter
231
- // with the native property. Textarea elements don't support the type property or attribute.
232
- if (!this._isTextarea && getSupportedInputTypes().has(this._type)) {
233
- this._elementRef.nativeElement.type = this._type;
234
- }
235
- }
140
+ this.controlType = 'mat-input';
236
141
  /**
237
142
  * Implemented as part of MatFormFieldControl.
238
143
  * @docs-private
239
144
  */
240
- get value() { return this._inputValueAccessor.value; }
241
- set value(value) {
242
- if (value !== this.value) {
243
- this._inputValueAccessor.value = value;
244
- this.stateChanges.next();
245
- }
246
- }
247
- /** Whether the element is readonly. */
248
- get readonly() { return this._readonly; }
249
- set readonly(value) { this._readonly = coerceBooleanProperty(value); }
250
- ngAfterViewInit() {
251
- if (this._platform.isBrowser) {
252
- this._autofillMonitor.monitor(this._elementRef.nativeElement).subscribe(event => {
253
- this.autofilled = event.isAutofilled;
254
- this.stateChanges.next();
145
+ this.autofilled = false;
146
+ this._disabled = false;
147
+ this._required = false;
148
+ this._type = 'text';
149
+ this._readonly = false;
150
+ this._neverEmptyInputTypes = [
151
+ 'date',
152
+ 'datetime',
153
+ 'datetime-local',
154
+ 'month',
155
+ 'time',
156
+ 'week'
157
+ ].filter(t => getSupportedInputTypes().has(t));
158
+ const element = this._elementRef.nativeElement;
159
+ const nodeName = element.nodeName.toLowerCase();
160
+ // If no input value accessor was explicitly specified, use the element as the input value
161
+ // accessor.
162
+ this._inputValueAccessor = inputValueAccessor || element;
163
+ this._previousNativeValue = this.value;
164
+ // Force setter to be called in case id was not specified.
165
+ this.id = this.id;
166
+ // On some versions of iOS the caret gets stuck in the wrong place when holding down the delete
167
+ // key. In order to get around this we need to "jiggle" the caret loose. Since this bug only
168
+ // exists on iOS, we only bother to install the listener on iOS.
169
+ if (_platform.IOS) {
170
+ ngZone.runOutsideAngular(() => {
171
+ _elementRef.nativeElement.addEventListener('keyup', (event) => {
172
+ let el = event.target;
173
+ if (!el.value && !el.selectionStart && !el.selectionEnd) {
174
+ // Note: Just setting `0, 0` doesn't fix the issue. Setting
175
+ // `1, 1` fixes it for the first time that you type text and
176
+ // then hold delete. Toggling to `1, 1` and then back to
177
+ // `0, 0` seems to completely fix it.
178
+ el.setSelectionRange(1, 1);
179
+ el.setSelectionRange(0, 0);
180
+ }
255
181
  });
256
- }
182
+ });
257
183
  }
258
- ngOnChanges() {
259
- this.stateChanges.next();
184
+ this._isServer = !this._platform.isBrowser;
185
+ this._isNativeSelect = nodeName === 'select';
186
+ this._isTextarea = nodeName === 'textarea';
187
+ if (this._isNativeSelect) {
188
+ this.controlType = element.multiple ? 'mat-native-select-multiple' :
189
+ 'mat-native-select';
260
190
  }
261
- ngOnDestroy() {
262
- this.stateChanges.complete();
263
- if (this._platform.isBrowser) {
264
- this._autofillMonitor.stopMonitoring(this._elementRef.nativeElement);
265
- }
191
+ }
192
+ /**
193
+ * Implemented as part of MatFormFieldControl.
194
+ * @docs-private
195
+ */
196
+ get disabled() {
197
+ if (this.ngControl && this.ngControl.disabled !== null) {
198
+ return this.ngControl.disabled;
266
199
  }
267
- ngDoCheck() {
268
- if (this.ngControl) {
269
- // We need to re-evaluate this on every change detection cycle, because there are some
270
- // error triggers that we can't subscribe to (e.g. parent form submissions). This means
271
- // that whatever logic is in here has to be super lean or we risk destroying the performance.
272
- this.updateErrorState();
273
- }
274
- // We need to dirty-check the native element's value, because there are some cases where
275
- // we won't be notified when it changes (e.g. the consumer isn't using forms or they're
276
- // updating the value using `emitEvent: false`).
277
- this._dirtyCheckNativeValue();
200
+ return this._disabled;
201
+ }
202
+ set disabled(value) {
203
+ this._disabled = coerceBooleanProperty(value);
204
+ // Browsers may not fire the blur event if the input is disabled too quickly.
205
+ // Reset from here to ensure that the element doesn't become stuck.
206
+ if (this.focused) {
207
+ this.focused = false;
208
+ this.stateChanges.next();
209
+ }
210
+ }
211
+ /**
212
+ * Implemented as part of MatFormFieldControl.
213
+ * @docs-private
214
+ */
215
+ get id() { return this._id; }
216
+ set id(value) { this._id = value || this._uid; }
217
+ /**
218
+ * Implemented as part of MatFormFieldControl.
219
+ * @docs-private
220
+ */
221
+ get required() { return this._required; }
222
+ set required(value) { this._required = coerceBooleanProperty(value); }
223
+ /** Input type of the element. */
224
+ get type() { return this._type; }
225
+ set type(value) {
226
+ this._type = value || 'text';
227
+ this._validateType();
228
+ // When using Angular inputs, developers are no longer able to set the properties on the native
229
+ // input element. To ensure that bindings for `type` work, we need to sync the setter
230
+ // with the native property. Textarea elements don't support the type property or attribute.
231
+ if (!this._isTextarea && getSupportedInputTypes().has(this._type)) {
232
+ this._elementRef.nativeElement.type = this._type;
278
233
  }
279
- /** Focuses the input. */
280
- focus(options) {
281
- this._elementRef.nativeElement.focus(options);
234
+ }
235
+ /**
236
+ * Implemented as part of MatFormFieldControl.
237
+ * @docs-private
238
+ */
239
+ get value() { return this._inputValueAccessor.value; }
240
+ set value(value) {
241
+ if (value !== this.value) {
242
+ this._inputValueAccessor.value = value;
243
+ this.stateChanges.next();
282
244
  }
283
- // We have to use a `HostListener` here in order to support both Ivy and ViewEngine.
284
- // In Ivy the `host` bindings will be merged when this class is extended, whereas in
285
- // ViewEngine they're overwritten.
286
- // TODO(crisbeto): we move this back into `host` once Ivy is turned on by default.
287
- /** Callback for the cases where the focused state of the input changes. */
288
- // tslint:disable:no-host-decorator-in-concrete
289
- // tslint:enable:no-host-decorator-in-concrete
290
- _focusChanged(isFocused) {
291
- if (isFocused !== this.focused && (!this.readonly || !isFocused)) {
292
- this.focused = isFocused;
245
+ }
246
+ /** Whether the element is readonly. */
247
+ get readonly() { return this._readonly; }
248
+ set readonly(value) { this._readonly = coerceBooleanProperty(value); }
249
+ ngAfterViewInit() {
250
+ if (this._platform.isBrowser) {
251
+ this._autofillMonitor.monitor(this._elementRef.nativeElement).subscribe(event => {
252
+ this.autofilled = event.isAutofilled;
293
253
  this.stateChanges.next();
294
- }
254
+ });
295
255
  }
296
- // We have to use a `HostListener` here in order to support both Ivy and ViewEngine.
297
- // In Ivy the `host` bindings will be merged when this class is extended, whereas in
298
- // ViewEngine they're overwritten.
299
- // TODO(crisbeto): we move this back into `host` once Ivy is turned on by default.
300
- // tslint:disable-next-line:no-host-decorator-in-concrete
301
- _onInput() {
302
- // This is a noop function and is used to let Angular know whenever the value changes.
303
- // Angular will run a new change detection each time the `input` event has been dispatched.
304
- // It's necessary that Angular recognizes the value change, because when floatingLabel
305
- // is set to false and Angular forms aren't used, the placeholder won't recognize the
306
- // value changes and will not disappear.
307
- // Listening to the input event wouldn't be necessary when the input is using the
308
- // FormsModule or ReactiveFormsModule, because Angular forms also listens to input events.
256
+ }
257
+ ngOnChanges() {
258
+ this.stateChanges.next();
259
+ }
260
+ ngOnDestroy() {
261
+ this.stateChanges.complete();
262
+ if (this._platform.isBrowser) {
263
+ this._autofillMonitor.stopMonitoring(this._elementRef.nativeElement);
309
264
  }
310
- /** Does some manual dirty checking on the native input `value` property. */
311
- _dirtyCheckNativeValue() {
312
- const newValue = this._elementRef.nativeElement.value;
313
- if (this._previousNativeValue !== newValue) {
314
- this._previousNativeValue = newValue;
315
- this.stateChanges.next();
316
- }
265
+ }
266
+ ngDoCheck() {
267
+ if (this.ngControl) {
268
+ // We need to re-evaluate this on every change detection cycle, because there are some
269
+ // error triggers that we can't subscribe to (e.g. parent form submissions). This means
270
+ // that whatever logic is in here has to be super lean or we risk destroying the performance.
271
+ this.updateErrorState();
317
272
  }
318
- /** Make sure the input is a supported type. */
319
- _validateType() {
320
- if (MAT_INPUT_INVALID_TYPES.indexOf(this._type) > -1) {
321
- throw getMatInputUnsupportedTypeError(this._type);
322
- }
273
+ // We need to dirty-check the native element's value, because there are some cases where
274
+ // we won't be notified when it changes (e.g. the consumer isn't using forms or they're
275
+ // updating the value using `emitEvent: false`).
276
+ this._dirtyCheckNativeValue();
277
+ // We need to dirty-check and set the placeholder attribute ourselves, because whether it's
278
+ // present or not depends on a query which is prone to "changed after checked" errors.
279
+ this._dirtyCheckPlaceholder();
280
+ }
281
+ /** Focuses the input. */
282
+ focus(options) {
283
+ this._elementRef.nativeElement.focus(options);
284
+ }
285
+ // We have to use a `HostListener` here in order to support both Ivy and ViewEngine.
286
+ // In Ivy the `host` bindings will be merged when this class is extended, whereas in
287
+ // ViewEngine they're overwritten.
288
+ // TODO(crisbeto): we move this back into `host` once Ivy is turned on by default.
289
+ /** Callback for the cases where the focused state of the input changes. */
290
+ // tslint:disable:no-host-decorator-in-concrete
291
+ // tslint:enable:no-host-decorator-in-concrete
292
+ _focusChanged(isFocused) {
293
+ if (isFocused !== this.focused && (!this.readonly || !isFocused)) {
294
+ this.focused = isFocused;
295
+ this.stateChanges.next();
323
296
  }
324
- /** Checks whether the input type is one of the types that are never empty. */
325
- _isNeverEmpty() {
326
- return this._neverEmptyInputTypes.indexOf(this._type) > -1;
297
+ }
298
+ // We have to use a `HostListener` here in order to support both Ivy and ViewEngine.
299
+ // In Ivy the `host` bindings will be merged when this class is extended, whereas in
300
+ // ViewEngine they're overwritten.
301
+ // TODO(crisbeto): we move this back into `host` once Ivy is turned on by default.
302
+ // tslint:disable-next-line:no-host-decorator-in-concrete
303
+ _onInput() {
304
+ // This is a noop function and is used to let Angular know whenever the value changes.
305
+ // Angular will run a new change detection each time the `input` event has been dispatched.
306
+ // It's necessary that Angular recognizes the value change, because when floatingLabel
307
+ // is set to false and Angular forms aren't used, the placeholder won't recognize the
308
+ // value changes and will not disappear.
309
+ // Listening to the input event wouldn't be necessary when the input is using the
310
+ // FormsModule or ReactiveFormsModule, because Angular forms also listens to input events.
311
+ }
312
+ /** Does some manual dirty checking on the native input `placeholder` attribute. */
313
+ _dirtyCheckPlaceholder() {
314
+ // If we're hiding the native placeholder, it should also be cleared from the DOM, otherwise
315
+ // screen readers will read it out twice: once from the label and once from the attribute.
316
+ // TODO: can be removed once we get rid of the `legacy` style for the form field, because it's
317
+ // the only one that supports promoting the placeholder to a label.
318
+ const formField = this._formField;
319
+ const placeholder = (!formField || !formField._hideControlPlaceholder()) ? this.placeholder : null;
320
+ if (placeholder !== this._previousPlaceholder) {
321
+ const element = this._elementRef.nativeElement;
322
+ this._previousPlaceholder = placeholder;
323
+ placeholder ?
324
+ element.setAttribute('placeholder', placeholder) : element.removeAttribute('placeholder');
327
325
  }
328
- /** Checks whether the input is invalid based on the native validation. */
329
- _isBadInput() {
330
- // The `validity` property won't be present on platform-server.
331
- let validity = this._elementRef.nativeElement.validity;
332
- return validity && validity.badInput;
326
+ }
327
+ /** Does some manual dirty checking on the native input `value` property. */
328
+ _dirtyCheckNativeValue() {
329
+ const newValue = this._elementRef.nativeElement.value;
330
+ if (this._previousNativeValue !== newValue) {
331
+ this._previousNativeValue = newValue;
332
+ this.stateChanges.next();
333
333
  }
334
- /**
335
- * Implemented as part of MatFormFieldControl.
336
- * @docs-private
337
- */
338
- get empty() {
339
- return !this._isNeverEmpty() && !this._elementRef.nativeElement.value && !this._isBadInput() &&
340
- !this.autofilled;
334
+ }
335
+ /** Make sure the input is a supported type. */
336
+ _validateType() {
337
+ if (MAT_INPUT_INVALID_TYPES.indexOf(this._type) > -1) {
338
+ throw getMatInputUnsupportedTypeError(this._type);
341
339
  }
342
- /**
343
- * Implemented as part of MatFormFieldControl.
344
- * @docs-private
345
- */
346
- get shouldLabelFloat() {
347
- if (this._isNativeSelect) {
348
- // For a single-selection `<select>`, the label should float when the selected option has
349
- // a non-empty display value. For a `<select multiple>`, the label *always* floats to avoid
350
- // overlapping the label with the options.
351
- const selectElement = this._elementRef.nativeElement;
352
- const firstOption = selectElement.options[0];
353
- // On most browsers the `selectedIndex` will always be 0, however on IE and Edge it'll be
354
- // -1 if the `value` is set to something, that isn't in the list of options, at a later point.
355
- return this.focused || selectElement.multiple || !this.empty ||
356
- !!(selectElement.selectedIndex > -1 && firstOption && firstOption.label);
357
- }
358
- else {
359
- return this.focused || !this.empty;
360
- }
340
+ }
341
+ /** Checks whether the input type is one of the types that are never empty. */
342
+ _isNeverEmpty() {
343
+ return this._neverEmptyInputTypes.indexOf(this._type) > -1;
344
+ }
345
+ /** Checks whether the input is invalid based on the native validation. */
346
+ _isBadInput() {
347
+ // The `validity` property won't be present on platform-server.
348
+ let validity = this._elementRef.nativeElement.validity;
349
+ return validity && validity.badInput;
350
+ }
351
+ /**
352
+ * Implemented as part of MatFormFieldControl.
353
+ * @docs-private
354
+ */
355
+ get empty() {
356
+ return !this._isNeverEmpty() && !this._elementRef.nativeElement.value && !this._isBadInput() &&
357
+ !this.autofilled;
358
+ }
359
+ /**
360
+ * Implemented as part of MatFormFieldControl.
361
+ * @docs-private
362
+ */
363
+ get shouldLabelFloat() {
364
+ if (this._isNativeSelect) {
365
+ // For a single-selection `<select>`, the label should float when the selected option has
366
+ // a non-empty display value. For a `<select multiple>`, the label *always* floats to avoid
367
+ // overlapping the label with the options.
368
+ const selectElement = this._elementRef.nativeElement;
369
+ const firstOption = selectElement.options[0];
370
+ // On most browsers the `selectedIndex` will always be 0, however on IE and Edge it'll be
371
+ // -1 if the `value` is set to something, that isn't in the list of options, at a later point.
372
+ return this.focused || selectElement.multiple || !this.empty ||
373
+ !!(selectElement.selectedIndex > -1 && firstOption && firstOption.label);
361
374
  }
362
- /**
363
- * Implemented as part of MatFormFieldControl.
364
- * @docs-private
365
- */
366
- setDescribedByIds(ids) {
367
- this._ariaDescribedby = ids.join(' ');
375
+ else {
376
+ return this.focused || !this.empty;
368
377
  }
369
- /**
370
- * Implemented as part of MatFormFieldControl.
371
- * @docs-private
372
- */
373
- onContainerClick() {
374
- // Do not re-focus the input element if the element is already focused. Otherwise it can happen
375
- // that someone clicks on a time input and the cursor resets to the "hours" field while the
376
- // "minutes" field was actually clicked. See: https://github.com/angular/components/issues/12849
377
- if (!this.focused) {
378
- this.focus();
379
- }
378
+ }
379
+ /**
380
+ * Implemented as part of MatFormFieldControl.
381
+ * @docs-private
382
+ */
383
+ setDescribedByIds(ids) {
384
+ this._ariaDescribedby = ids.join(' ');
385
+ }
386
+ /**
387
+ * Implemented as part of MatFormFieldControl.
388
+ * @docs-private
389
+ */
390
+ onContainerClick() {
391
+ // Do not re-focus the input element if the element is already focused. Otherwise it can happen
392
+ // that someone clicks on a time input and the cursor resets to the "hours" field while the
393
+ // "minutes" field was actually clicked. See: https://github.com/angular/components/issues/12849
394
+ if (!this.focused) {
395
+ this.focus();
380
396
  }
381
397
  }
382
- MatInput.decorators = [
383
- { type: Directive, args: [{
384
- selector: `input[matInput], textarea[matInput], select[matNativeControl],
398
+ }
399
+ MatInput.decorators = [
400
+ { type: Directive, args: [{
401
+ selector: `input[matInput], textarea[matInput], select[matNativeControl],
385
402
  input[matNativeControl], textarea[matNativeControl]`,
386
- exportAs: 'matInput',
387
- host: {
388
- /**
389
- * @breaking-change 8.0.0 remove .mat-form-field-autofill-control in favor of AutofillMonitor.
390
- */
391
- 'class': 'mat-input-element mat-form-field-autofill-control',
392
- '[class.mat-input-server]': '_isServer',
393
- // Native input properties that are overwritten by Angular inputs need to be synced with
394
- // the native input element. Otherwise property bindings for those don't work.
395
- '[attr.id]': 'id',
396
- '[attr.placeholder]': 'placeholder',
397
- '[disabled]': 'disabled',
398
- '[required]': 'required',
399
- '[attr.readonly]': 'readonly && !_isNativeSelect || null',
400
- '[attr.aria-describedby]': '_ariaDescribedby || null',
401
- '[attr.aria-invalid]': 'errorState',
402
- '[attr.aria-required]': 'required.toString()',
403
- },
404
- providers: [{ provide: MatFormFieldControl, useExisting: MatInput }],
405
- },] }
406
- ];
407
- MatInput.ctorParameters = () => [
408
- { type: ElementRef },
409
- { type: Platform },
410
- { type: NgControl, decorators: [{ type: Optional }, { type: Self }] },
411
- { type: NgForm, decorators: [{ type: Optional }] },
412
- { type: FormGroupDirective, decorators: [{ type: Optional }] },
413
- { type: ErrorStateMatcher },
414
- { type: undefined, decorators: [{ type: Optional }, { type: Self }, { type: Inject, args: [MAT_INPUT_VALUE_ACCESSOR,] }] },
415
- { type: AutofillMonitor },
416
- { type: NgZone }
417
- ];
418
- MatInput.propDecorators = {
419
- disabled: [{ type: Input }],
420
- id: [{ type: Input }],
421
- placeholder: [{ type: Input }],
422
- required: [{ type: Input }],
423
- type: [{ type: Input }],
424
- errorStateMatcher: [{ type: Input }],
425
- value: [{ type: Input }],
426
- readonly: [{ type: Input }],
427
- _focusChanged: [{ type: HostListener, args: ['focus', ['true'],] }, { type: HostListener, args: ['blur', ['false'],] }],
428
- _onInput: [{ type: HostListener, args: ['input',] }]
429
- };
430
- return MatInput;
431
- })();
403
+ exportAs: 'matInput',
404
+ host: {
405
+ /**
406
+ * @breaking-change 8.0.0 remove .mat-form-field-autofill-control in favor of AutofillMonitor.
407
+ */
408
+ 'class': 'mat-input-element mat-form-field-autofill-control',
409
+ '[class.mat-input-server]': '_isServer',
410
+ // Native input properties that are overwritten by Angular inputs need to be synced with
411
+ // the native input element. Otherwise property bindings for those don't work.
412
+ '[attr.id]': 'id',
413
+ // At the time of writing, we have a lot of customer tests that look up the input based on its
414
+ // placeholder. Since we sometimes omit the placeholder attribute from the DOM to prevent screen
415
+ // readers from reading it twice, we have to keep it somewhere in the DOM for the lookup.
416
+ '[attr.data-placeholder]': 'placeholder',
417
+ '[disabled]': 'disabled',
418
+ '[required]': 'required',
419
+ '[attr.readonly]': 'readonly && !_isNativeSelect || null',
420
+ '[attr.aria-describedby]': '_ariaDescribedby || null',
421
+ '[attr.aria-invalid]': 'errorState',
422
+ '[attr.aria-required]': 'required.toString()',
423
+ },
424
+ providers: [{ provide: MatFormFieldControl, useExisting: MatInput }],
425
+ },] }
426
+ ];
427
+ MatInput.ctorParameters = () => [
428
+ { type: ElementRef },
429
+ { type: Platform },
430
+ { type: NgControl, decorators: [{ type: Optional }, { type: Self }] },
431
+ { type: NgForm, decorators: [{ type: Optional }] },
432
+ { type: FormGroupDirective, decorators: [{ type: Optional }] },
433
+ { type: ErrorStateMatcher },
434
+ { type: undefined, decorators: [{ type: Optional }, { type: Self }, { type: Inject, args: [MAT_INPUT_VALUE_ACCESSOR,] }] },
435
+ { type: AutofillMonitor },
436
+ { type: NgZone },
437
+ { type: MatFormField, decorators: [{ type: Optional }] }
438
+ ];
439
+ MatInput.propDecorators = {
440
+ disabled: [{ type: Input }],
441
+ id: [{ type: Input }],
442
+ placeholder: [{ type: Input }],
443
+ required: [{ type: Input }],
444
+ type: [{ type: Input }],
445
+ errorStateMatcher: [{ type: Input }],
446
+ value: [{ type: Input }],
447
+ readonly: [{ type: Input }],
448
+ _focusChanged: [{ type: HostListener, args: ['focus', ['true'],] }, { type: HostListener, args: ['blur', ['false'],] }],
449
+ _onInput: [{ type: HostListener, args: ['input',] }]
450
+ };
432
451
 
433
452
  /**
434
453
  * @license
@@ -437,29 +456,26 @@ let MatInput = /** @class */ (() => {
437
456
  * Use of this source code is governed by an MIT-style license that can be
438
457
  * found in the LICENSE file at https://angular.io/license
439
458
  */
440
- let MatInputModule = /** @class */ (() => {
441
- class MatInputModule {
442
- }
443
- MatInputModule.decorators = [
444
- { type: NgModule, args: [{
445
- declarations: [MatInput, MatTextareaAutosize],
446
- imports: [
447
- TextFieldModule,
448
- MatFormFieldModule,
449
- ],
450
- exports: [
451
- TextFieldModule,
452
- // We re-export the `MatFormFieldModule` since `MatInput` will almost always
453
- // be used together with `MatFormField`.
454
- MatFormFieldModule,
455
- MatInput,
456
- MatTextareaAutosize,
457
- ],
458
- providers: [ErrorStateMatcher],
459
- },] }
460
- ];
461
- return MatInputModule;
462
- })();
459
+ class MatInputModule {
460
+ }
461
+ MatInputModule.decorators = [
462
+ { type: NgModule, args: [{
463
+ declarations: [MatInput, MatTextareaAutosize],
464
+ imports: [
465
+ TextFieldModule,
466
+ MatFormFieldModule,
467
+ ],
468
+ exports: [
469
+ TextFieldModule,
470
+ // We re-export the `MatFormFieldModule` since `MatInput` will almost always
471
+ // be used together with `MatFormField`.
472
+ MatFormFieldModule,
473
+ MatInput,
474
+ MatTextareaAutosize,
475
+ ],
476
+ providers: [ErrorStateMatcher],
477
+ },] }
478
+ ];
463
479
 
464
480
  /**
465
481
  * @license