@angular/material 10.0.2 → 10.1.3

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 (521) hide show
  1. package/_theming.scss +14 -9
  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 +327 -248
  5. package/bundles/material-autocomplete-testing.umd.js.map +1 -1
  6. package/bundles/material-autocomplete-testing.umd.min.js +2 -9
  7. package/bundles/material-autocomplete-testing.umd.min.js.map +1 -1
  8. package/bundles/material-autocomplete.umd.js +421 -355
  9. package/bundles/material-autocomplete.umd.js.map +1 -1
  10. package/bundles/material-autocomplete.umd.min.js +2 -24
  11. package/bundles/material-autocomplete.umd.min.js.map +1 -1
  12. package/bundles/material-badge-testing.umd.js +301 -235
  13. package/bundles/material-badge-testing.umd.js.map +1 -1
  14. package/bundles/material-badge-testing.umd.min.js +2 -9
  15. package/bundles/material-badge-testing.umd.min.js.map +1 -1
  16. package/bundles/material-badge.umd.js +344 -278
  17. package/bundles/material-badge.umd.js.map +1 -1
  18. package/bundles/material-badge.umd.min.js +3 -3
  19. package/bundles/material-badge.umd.min.js.map +1 -1
  20. package/bundles/material-bottom-sheet-testing.umd.js +302 -236
  21. package/bundles/material-bottom-sheet-testing.umd.js.map +1 -1
  22. package/bundles/material-bottom-sheet-testing.umd.min.js +2 -9
  23. package/bundles/material-bottom-sheet-testing.umd.min.js.map +1 -1
  24. package/bundles/material-bottom-sheet.umd.js +361 -288
  25. package/bundles/material-bottom-sheet.umd.js.map +1 -1
  26. package/bundles/material-bottom-sheet.umd.min.js +17 -2
  27. package/bundles/material-bottom-sheet.umd.min.js.map +1 -1
  28. package/bundles/material-button-testing.umd.js +321 -244
  29. package/bundles/material-button-testing.umd.js.map +1 -1
  30. package/bundles/material-button-testing.umd.min.js +2 -9
  31. package/bundles/material-button-testing.umd.min.js.map +1 -1
  32. package/bundles/material-button-toggle-testing.umd.js +315 -245
  33. package/bundles/material-button-toggle-testing.umd.js.map +1 -1
  34. package/bundles/material-button-toggle-testing.umd.min.js +3 -17
  35. package/bundles/material-button-toggle-testing.umd.min.js.map +1 -1
  36. package/bundles/material-button-toggle.umd.js +394 -318
  37. package/bundles/material-button-toggle.umd.js.map +1 -1
  38. package/bundles/material-button-toggle.umd.min.js +2 -10
  39. package/bundles/material-button-toggle.umd.min.js.map +1 -1
  40. package/bundles/material-button.umd.js +375 -304
  41. package/bundles/material-button.umd.js.map +1 -1
  42. package/bundles/material-button.umd.min.js +3 -11
  43. package/bundles/material-button.umd.min.js.map +1 -1
  44. package/bundles/material-card-testing.umd.js +399 -0
  45. package/bundles/material-card-testing.umd.js.map +1 -0
  46. package/bundles/material-card-testing.umd.min.js +37 -0
  47. package/bundles/material-card-testing.umd.min.js.map +1 -0
  48. package/bundles/material-card.umd.js +139 -139
  49. package/bundles/material-card.umd.js.map +1 -1
  50. package/bundles/material-card.umd.min.js +2 -2
  51. package/bundles/material-card.umd.min.js.map +1 -1
  52. package/bundles/material-checkbox-testing.umd.js +313 -236
  53. package/bundles/material-checkbox-testing.umd.js.map +1 -1
  54. package/bundles/material-checkbox-testing.umd.min.js +2 -9
  55. package/bundles/material-checkbox-testing.umd.min.js.map +1 -1
  56. package/bundles/material-checkbox.umd.js +370 -311
  57. package/bundles/material-checkbox.umd.js.map +1 -1
  58. package/bundles/material-checkbox.umd.min.js +2 -9
  59. package/bundles/material-checkbox.umd.min.js.map +1 -1
  60. package/bundles/material-chips.umd.js +625 -542
  61. package/bundles/material-chips.umd.js.map +1 -1
  62. package/bundles/material-chips.umd.min.js +19 -4
  63. package/bundles/material-chips.umd.min.js.map +1 -1
  64. package/bundles/material-core-testing.umd.js +304 -245
  65. package/bundles/material-core-testing.umd.js.map +1 -1
  66. package/bundles/material-core-testing.umd.min.js +3 -17
  67. package/bundles/material-core-testing.umd.min.js.map +1 -1
  68. package/bundles/material-core.umd.js +563 -510
  69. package/bundles/material-core.umd.js.map +1 -1
  70. package/bundles/material-core.umd.min.js +37 -12
  71. package/bundles/material-core.umd.min.js.map +1 -1
  72. package/bundles/material-datepicker.umd.js +935 -880
  73. package/bundles/material-datepicker.umd.js.map +1 -1
  74. package/bundles/material-datepicker.umd.min.js +44 -10
  75. package/bundles/material-datepicker.umd.min.js.map +1 -1
  76. package/bundles/material-dialog-testing.umd.js +303 -237
  77. package/bundles/material-dialog-testing.umd.js.map +1 -1
  78. package/bundles/material-dialog-testing.umd.min.js +2 -9
  79. package/bundles/material-dialog-testing.umd.min.js.map +1 -1
  80. package/bundles/material-dialog.umd.js +438 -376
  81. package/bundles/material-dialog.umd.js.map +1 -1
  82. package/bundles/material-dialog.umd.min.js +15 -14
  83. package/bundles/material-dialog.umd.min.js.map +1 -1
  84. package/bundles/material-divider-testing.umd.js +300 -234
  85. package/bundles/material-divider-testing.umd.js.map +1 -1
  86. package/bundles/material-divider-testing.umd.min.js +2 -9
  87. package/bundles/material-divider-testing.umd.min.js.map +1 -1
  88. package/bundles/material-divider.umd.js +28 -28
  89. package/bundles/material-divider.umd.js.map +1 -1
  90. package/bundles/material-divider.umd.min.js +2 -9
  91. package/bundles/material-divider.umd.min.js.map +1 -1
  92. package/bundles/material-expansion-testing.umd.js +314 -246
  93. package/bundles/material-expansion-testing.umd.js.map +1 -1
  94. package/bundles/material-expansion-testing.umd.min.js +2 -10
  95. package/bundles/material-expansion-testing.umd.min.js.map +1 -1
  96. package/bundles/material-expansion.umd.js +459 -400
  97. package/bundles/material-expansion.umd.js.map +1 -1
  98. package/bundles/material-expansion.umd.min.js +11 -3
  99. package/bundles/material-expansion.umd.min.js.map +1 -1
  100. package/bundles/material-form-field-testing-control.umd.js +299 -233
  101. package/bundles/material-form-field-testing-control.umd.js.map +1 -1
  102. package/bundles/material-form-field-testing-control.umd.min.js.map +1 -1
  103. package/bundles/material-form-field-testing.umd.js +301 -235
  104. package/bundles/material-form-field-testing.umd.js.map +1 -1
  105. package/bundles/material-form-field-testing.umd.min.js +3 -10
  106. package/bundles/material-form-field-testing.umd.min.js.map +1 -1
  107. package/bundles/material-form-field.umd.js +493 -406
  108. package/bundles/material-form-field.umd.js.map +1 -1
  109. package/bundles/material-form-field.umd.min.js +36 -5
  110. package/bundles/material-form-field.umd.min.js.map +1 -1
  111. package/bundles/material-grid-list-testing.umd.js +311 -252
  112. package/bundles/material-grid-list-testing.umd.js.map +1 -1
  113. package/bundles/material-grid-list-testing.umd.min.js +2 -17
  114. package/bundles/material-grid-list-testing.umd.min.js.map +1 -1
  115. package/bundles/material-grid-list.umd.js +409 -336
  116. package/bundles/material-grid-list.umd.js.map +1 -1
  117. package/bundles/material-grid-list.umd.min.js +19 -4
  118. package/bundles/material-grid-list.umd.min.js.map +1 -1
  119. package/bundles/material-icon-testing.umd.js +8 -8
  120. package/bundles/material-icon-testing.umd.js.map +1 -1
  121. package/bundles/material-icon-testing.umd.min.js +2 -2
  122. package/bundles/material-icon-testing.umd.min.js.map +1 -1
  123. package/bundles/material-icon.umd.js +349 -283
  124. package/bundles/material-icon.umd.js.map +1 -1
  125. package/bundles/material-icon.umd.min.js +2 -9
  126. package/bundles/material-icon.umd.min.js.map +1 -1
  127. package/bundles/material-input-testing.umd.js +326 -243
  128. package/bundles/material-input-testing.umd.js.map +1 -1
  129. package/bundles/material-input-testing.umd.min.js +2 -9
  130. package/bundles/material-input-testing.umd.min.js.map +1 -1
  131. package/bundles/material-input.umd.js +409 -326
  132. package/bundles/material-input.umd.js.map +1 -1
  133. package/bundles/material-input.umd.min.js +5 -19
  134. package/bundles/material-input.umd.min.js.map +1 -1
  135. package/bundles/material-list-testing.umd.js +366 -303
  136. package/bundles/material-list-testing.umd.js.map +1 -1
  137. package/bundles/material-list-testing.umd.min.js +2 -2
  138. package/bundles/material-list-testing.umd.min.js.map +1 -1
  139. package/bundles/material-list.umd.js +492 -433
  140. package/bundles/material-list.umd.js.map +1 -1
  141. package/bundles/material-list.umd.min.js +2 -10
  142. package/bundles/material-list.umd.min.js.map +1 -1
  143. package/bundles/material-menu-testing.umd.js +327 -239
  144. package/bundles/material-menu-testing.umd.js.map +1 -1
  145. package/bundles/material-menu-testing.umd.min.js +2 -10
  146. package/bundles/material-menu-testing.umd.min.js.map +1 -1
  147. package/bundles/material-menu.umd.js +483 -408
  148. package/bundles/material-menu.umd.js.map +1 -1
  149. package/bundles/material-menu.umd.min.js +5 -4
  150. package/bundles/material-menu.umd.min.js.map +1 -1
  151. package/bundles/material-paginator-testing.umd.js +302 -236
  152. package/bundles/material-paginator-testing.umd.js.map +1 -1
  153. package/bundles/material-paginator-testing.umd.min.js +2 -9
  154. package/bundles/material-paginator-testing.umd.min.js.map +1 -1
  155. package/bundles/material-paginator.umd.js +345 -279
  156. package/bundles/material-paginator.umd.js.map +1 -1
  157. package/bundles/material-paginator.umd.min.js +2 -9
  158. package/bundles/material-paginator.umd.min.js.map +1 -1
  159. package/bundles/material-progress-bar-testing.umd.js +301 -235
  160. package/bundles/material-progress-bar-testing.umd.js.map +1 -1
  161. package/bundles/material-progress-bar-testing.umd.min.js +2 -9
  162. package/bundles/material-progress-bar-testing.umd.min.js.map +1 -1
  163. package/bundles/material-progress-bar.umd.js +339 -266
  164. package/bundles/material-progress-bar.umd.js.map +1 -1
  165. package/bundles/material-progress-bar.umd.min.js +4 -3
  166. package/bundles/material-progress-bar.umd.min.js.map +1 -1
  167. package/bundles/material-progress-spinner-testing.umd.js +301 -235
  168. package/bundles/material-progress-spinner-testing.umd.js.map +1 -1
  169. package/bundles/material-progress-spinner-testing.umd.min.js +2 -9
  170. package/bundles/material-progress-spinner-testing.umd.min.js.map +1 -1
  171. package/bundles/material-progress-spinner.umd.js +411 -364
  172. package/bundles/material-progress-spinner.umd.js.map +1 -1
  173. package/bundles/material-progress-spinner.umd.min.js +2 -10
  174. package/bundles/material-progress-spinner.umd.min.js.map +1 -1
  175. package/bundles/material-radio-testing.umd.js +315 -238
  176. package/bundles/material-radio-testing.umd.js.map +1 -1
  177. package/bundles/material-radio-testing.umd.min.js +2 -10
  178. package/bundles/material-radio-testing.umd.min.js.map +1 -1
  179. package/bundles/material-radio.umd.js +412 -336
  180. package/bundles/material-radio.umd.js.map +1 -1
  181. package/bundles/material-radio.umd.min.js +2 -10
  182. package/bundles/material-radio.umd.min.js.map +1 -1
  183. package/bundles/material-select-testing.umd.js +326 -247
  184. package/bundles/material-select-testing.umd.js.map +1 -1
  185. package/bundles/material-select-testing.umd.min.js +2 -9
  186. package/bundles/material-select-testing.umd.min.js.map +1 -1
  187. package/bundles/material-select.umd.js +424 -348
  188. package/bundles/material-select.umd.js.map +1 -1
  189. package/bundles/material-select.umd.min.js +5 -12
  190. package/bundles/material-select.umd.min.js.map +1 -1
  191. package/bundles/material-sidenav-testing.umd.js +303 -244
  192. package/bundles/material-sidenav-testing.umd.js.map +1 -1
  193. package/bundles/material-sidenav-testing.umd.min.js +2 -16
  194. package/bundles/material-sidenav-testing.umd.min.js.map +1 -1
  195. package/bundles/material-sidenav.umd.js +528 -477
  196. package/bundles/material-sidenav.umd.js.map +1 -1
  197. package/bundles/material-sidenav.umd.min.js +3 -3
  198. package/bundles/material-sidenav.umd.min.js.map +1 -1
  199. package/bundles/material-slide-toggle-testing.umd.js +313 -236
  200. package/bundles/material-slide-toggle-testing.umd.js.map +1 -1
  201. package/bundles/material-slide-toggle-testing.umd.min.js +2 -9
  202. package/bundles/material-slide-toggle-testing.umd.min.js.map +1 -1
  203. package/bundles/material-slide-toggle.umd.js +373 -314
  204. package/bundles/material-slide-toggle.umd.js.map +1 -1
  205. package/bundles/material-slide-toggle.umd.min.js +2 -9
  206. package/bundles/material-slide-toggle.umd.min.js.map +1 -1
  207. package/bundles/material-slider-testing.umd.js +313 -236
  208. package/bundles/material-slider-testing.umd.js.map +1 -1
  209. package/bundles/material-slider-testing.umd.min.js +2 -9
  210. package/bundles/material-slider-testing.umd.min.js.map +1 -1
  211. package/bundles/material-slider.umd.js +476 -439
  212. package/bundles/material-slider.umd.js.map +1 -1
  213. package/bundles/material-slider.umd.min.js +4 -3
  214. package/bundles/material-slider.umd.min.js.map +1 -1
  215. package/bundles/material-snack-bar-testing.umd.js +304 -238
  216. package/bundles/material-snack-bar-testing.umd.js.map +1 -1
  217. package/bundles/material-snack-bar-testing.umd.min.js +2 -9
  218. package/bundles/material-snack-bar-testing.umd.min.js.map +1 -1
  219. package/bundles/material-snack-bar.umd.js +383 -308
  220. package/bundles/material-snack-bar.umd.js.map +1 -1
  221. package/bundles/material-snack-bar.umd.min.js +26 -2
  222. package/bundles/material-snack-bar.umd.min.js.map +1 -1
  223. package/bundles/material-sort-testing.umd.js +312 -253
  224. package/bundles/material-sort-testing.umd.js.map +1 -1
  225. package/bundles/material-sort-testing.umd.min.js +1 -16
  226. package/bundles/material-sort-testing.umd.min.js.map +1 -1
  227. package/bundles/material-sort.umd.js +391 -319
  228. package/bundles/material-sort.umd.js.map +1 -1
  229. package/bundles/material-sort.umd.min.js +4 -19
  230. package/bundles/material-sort.umd.min.js.map +1 -1
  231. package/bundles/material-stepper.umd.js +490 -445
  232. package/bundles/material-stepper.umd.js.map +1 -1
  233. package/bundles/material-stepper.umd.min.js +5 -12
  234. package/bundles/material-stepper.umd.min.js.map +1 -1
  235. package/bundles/material-table-testing.umd.js +317 -265
  236. package/bundles/material-table-testing.umd.js.map +1 -1
  237. package/bundles/material-table-testing.umd.min.js +2 -24
  238. package/bundles/material-table-testing.umd.min.js.map +1 -1
  239. package/bundles/material-table.umd.js +494 -461
  240. package/bundles/material-table.umd.js.map +1 -1
  241. package/bundles/material-table.umd.min.js +3 -10
  242. package/bundles/material-table.umd.min.js.map +1 -1
  243. package/bundles/material-tabs-testing.umd.js +303 -244
  244. package/bundles/material-tabs-testing.umd.js.map +1 -1
  245. package/bundles/material-tabs-testing.umd.min.js +1 -16
  246. package/bundles/material-tabs-testing.umd.min.js.map +1 -1
  247. package/bundles/material-tabs.umd.js +675 -625
  248. package/bundles/material-tabs.umd.js.map +1 -1
  249. package/bundles/material-tabs.umd.min.js +23 -5
  250. package/bundles/material-tabs.umd.min.js.map +1 -1
  251. package/bundles/material-toolbar-testing.umd.js +396 -0
  252. package/bundles/material-toolbar-testing.umd.js.map +1 -0
  253. package/bundles/material-toolbar-testing.umd.min.js +37 -0
  254. package/bundles/material-toolbar-testing.umd.min.js.map +1 -0
  255. package/bundles/material-toolbar.umd.js +337 -271
  256. package/bundles/material-toolbar.umd.js.map +1 -1
  257. package/bundles/material-toolbar.umd.min.js +4 -3
  258. package/bundles/material-toolbar.umd.min.js.map +1 -1
  259. package/bundles/material-tooltip-testing.umd.js +301 -235
  260. package/bundles/material-tooltip-testing.umd.js.map +1 -1
  261. package/bundles/material-tooltip-testing.umd.min.js +2 -9
  262. package/bundles/material-tooltip-testing.umd.min.js.map +1 -1
  263. package/bundles/material-tooltip.umd.js +427 -314
  264. package/bundles/material-tooltip.umd.js.map +1 -1
  265. package/bundles/material-tooltip.umd.min.js +11 -3
  266. package/bundles/material-tooltip.umd.min.js.map +1 -1
  267. package/bundles/material-tree.umd.js +421 -383
  268. package/bundles/material-tree.umd.js.map +1 -1
  269. package/bundles/material-tree.umd.min.js +3 -3
  270. package/bundles/material-tree.umd.min.js.map +1 -1
  271. package/button/_button-base.scss +1 -1
  272. package/button/_button-theme.scss +8 -8
  273. package/button/index.metadata.json +1 -1
  274. package/button/testing/button-harness.d.ts +2 -0
  275. package/button-toggle/button-toggle.d.ts +6 -0
  276. package/button-toggle/index.metadata.json +1 -1
  277. package/button-toggle/testing/button-toggle-harness.d.ts +2 -0
  278. package/card/testing/card-harness-filters.d.ts +17 -0
  279. package/card/testing/card-harness.d.ts +36 -0
  280. package/card/testing/index.d.ts +8 -0
  281. package/card/testing/package.json +9 -0
  282. package/card/testing/public-api.d.ts +9 -0
  283. package/checkbox/checkbox.d.ts +2 -1
  284. package/checkbox/testing/checkbox-harness.d.ts +2 -0
  285. package/chips/chip.d.ts +21 -2
  286. package/chips/index.metadata.json +1 -1
  287. package/core/focus-indicators/_focus-indicators.scss +1 -1
  288. package/core/index.metadata.json +1 -1
  289. package/core/option/optgroup.d.ts +13 -4
  290. package/core/option/option.d.ts +10 -7
  291. package/core/style/_vendor-prefixes.scss +5 -0
  292. package/datepicker/date-range-input-parts.d.ts +3 -1
  293. package/datepicker/date-range-input.d.ts +5 -4
  294. package/datepicker/datepicker-base.d.ts +8 -6
  295. package/datepicker/datepicker-input-base.d.ts +9 -5
  296. package/datepicker/datepicker-input.d.ts +1 -0
  297. package/datepicker/index.metadata.json +1 -1
  298. package/dialog/dialog.d.ts +1 -1
  299. package/dialog/index.metadata.json +1 -1
  300. package/esm2015/autocomplete/autocomplete.js +3 -3
  301. package/esm2015/autocomplete/testing/autocomplete-harness.js +7 -1
  302. package/esm2015/bottom-sheet/bottom-sheet.js +1 -1
  303. package/esm2015/button/button.js +8 -3
  304. package/esm2015/button/testing/button-harness.js +7 -1
  305. package/esm2015/button-toggle/button-toggle.js +12 -3
  306. package/esm2015/button-toggle/testing/button-toggle-harness.js +7 -1
  307. package/esm2015/card/testing/card-harness-filters.js +8 -0
  308. package/esm2015/card/testing/card-harness.js +52 -0
  309. package/esm2015/card/testing/index.js +9 -0
  310. package/esm2015/card/testing/public-api.js +10 -0
  311. package/esm2015/card/testing/testing.externs.js +0 -0
  312. package/esm2015/checkbox/checkbox.js +1 -1
  313. package/esm2015/checkbox/testing/checkbox-harness.js +7 -1
  314. package/esm2015/chips/chip-list.js +3 -3
  315. package/esm2015/chips/chip.js +32 -11
  316. package/esm2015/core/common-behaviors/common-module.js +1 -1
  317. package/esm2015/core/common-behaviors/tabindex.js +3 -2
  318. package/esm2015/core/option/optgroup.js +22 -9
  319. package/esm2015/core/option/option.js +29 -14
  320. package/esm2015/core/version.js +1 -1
  321. package/esm2015/datepicker/date-range-input-parts.js +7 -1
  322. package/esm2015/datepicker/date-range-input.js +14 -11
  323. package/esm2015/datepicker/datepicker-base.js +24 -10
  324. package/esm2015/datepicker/datepicker-input-base.js +16 -8
  325. package/esm2015/datepicker/datepicker-input.js +4 -1
  326. package/esm2015/datepicker/datepicker-toggle.js +5 -5
  327. package/esm2015/dialog/dialog.js +6 -6
  328. package/esm2015/expansion/testing/expansion-harness.js +7 -1
  329. package/esm2015/form-field/error.js +10 -3
  330. package/esm2015/form-field/form-field.js +17 -19
  331. package/esm2015/form-field/hint.js +13 -3
  332. package/esm2015/form-field/prefix.js +9 -2
  333. package/esm2015/form-field/suffix.js +9 -2
  334. package/esm2015/grid-list/grid-list.js +2 -2
  335. package/esm2015/grid-list/tile-styler.js +1 -1
  336. package/esm2015/input/input.js +29 -5
  337. package/esm2015/input/testing/input-harness.js +13 -3
  338. package/esm2015/list/testing/action-list-harness.js +7 -1
  339. package/esm2015/list/testing/nav-list-harness.js +7 -1
  340. package/esm2015/list/testing/selection-list-harness.js +7 -1
  341. package/esm2015/menu/menu-content.js +10 -3
  342. package/esm2015/menu/menu-errors.js +10 -1
  343. package/esm2015/menu/menu-panel.js +1 -1
  344. package/esm2015/menu/menu-trigger.js +8 -4
  345. package/esm2015/menu/menu.js +8 -6
  346. package/esm2015/menu/testing/menu-harness.js +13 -1
  347. package/esm2015/progress-spinner/progress-spinner.js +17 -16
  348. package/esm2015/radio/radio.js +15 -6
  349. package/esm2015/radio/testing/radio-harness.js +7 -1
  350. package/esm2015/select/select.js +21 -12
  351. package/esm2015/select/testing/select-harness.js +7 -1
  352. package/esm2015/sidenav/drawer.js +15 -16
  353. package/esm2015/slide-toggle/slide-toggle.js +1 -1
  354. package/esm2015/slide-toggle/testing/slide-toggle-harness.js +7 -1
  355. package/esm2015/slider/slider.js +25 -22
  356. package/esm2015/slider/testing/slider-harness.js +7 -1
  357. package/esm2015/snack-bar/snack-bar.js +5 -3
  358. package/esm2015/sort/sort-header-intl.js +6 -2
  359. package/esm2015/sort/sort-header.js +18 -8
  360. package/esm2015/sort/testing/sort-header-harness.js +10 -7
  361. package/esm2015/stepper/stepper.js +3 -3
  362. package/esm2015/table/cell.js +12 -26
  363. package/esm2015/table/table.js +7 -4
  364. package/esm2015/tabs/index.js +4 -2
  365. package/esm2015/tabs/tab-content.js +12 -3
  366. package/esm2015/tabs/tab-label.js +9 -2
  367. package/esm2015/tabs/tab-nav-bar/tab-nav-bar.js +1 -1
  368. package/esm2015/tabs/tab.js +6 -5
  369. package/esm2015/toolbar/testing/index.js +9 -0
  370. package/esm2015/toolbar/testing/public-api.js +10 -0
  371. package/esm2015/toolbar/testing/testing.externs.js +0 -0
  372. package/esm2015/toolbar/testing/toolbar-harness-filters.js +8 -0
  373. package/esm2015/toolbar/testing/toolbar-harness.js +47 -0
  374. package/esm2015/tooltip/tooltip.js +56 -21
  375. package/esm2015/tree/data-source/flat-data-source.js +1 -1
  376. package/esm2015/tree/node.js +2 -2
  377. package/expansion/testing/expansion-harness.d.ts +2 -0
  378. package/fesm2015/autocomplete/testing.js +6 -0
  379. package/fesm2015/autocomplete/testing.js.map +1 -1
  380. package/fesm2015/autocomplete.js +2 -2
  381. package/fesm2015/autocomplete.js.map +1 -1
  382. package/fesm2015/button/testing.js +6 -0
  383. package/fesm2015/button/testing.js.map +1 -1
  384. package/fesm2015/button-toggle/testing.js +6 -0
  385. package/fesm2015/button-toggle/testing.js.map +1 -1
  386. package/fesm2015/button-toggle.js +12 -3
  387. package/fesm2015/button-toggle.js.map +1 -1
  388. package/fesm2015/button.js +7 -2
  389. package/fesm2015/button.js.map +1 -1
  390. package/fesm2015/card/testing.js +79 -0
  391. package/fesm2015/card/testing.js.map +1 -0
  392. package/fesm2015/checkbox/testing.js +6 -0
  393. package/fesm2015/checkbox/testing.js.map +1 -1
  394. package/fesm2015/checkbox.js.map +1 -1
  395. package/fesm2015/chips.js +33 -12
  396. package/fesm2015/chips.js.map +1 -1
  397. package/fesm2015/core.js +51 -23
  398. package/fesm2015/core.js.map +1 -1
  399. package/fesm2015/datepicker.js +60 -26
  400. package/fesm2015/datepicker.js.map +1 -1
  401. package/fesm2015/dialog.js +5 -5
  402. package/fesm2015/dialog.js.map +1 -1
  403. package/fesm2015/expansion/testing.js +6 -0
  404. package/fesm2015/expansion/testing.js.map +1 -1
  405. package/fesm2015/form-field.js +47 -18
  406. package/fesm2015/form-field.js.map +1 -1
  407. package/fesm2015/grid-list.js.map +1 -1
  408. package/fesm2015/input/testing.js +12 -2
  409. package/fesm2015/input/testing.js.map +1 -1
  410. package/fesm2015/input.js +28 -4
  411. package/fesm2015/input.js.map +1 -1
  412. package/fesm2015/list/testing.js +18 -0
  413. package/fesm2015/list/testing.js.map +1 -1
  414. package/fesm2015/menu/testing.js +12 -0
  415. package/fesm2015/menu/testing.js.map +1 -1
  416. package/fesm2015/menu.js +29 -7
  417. package/fesm2015/menu.js.map +1 -1
  418. package/fesm2015/progress-spinner.js +16 -15
  419. package/fesm2015/progress-spinner.js.map +1 -1
  420. package/fesm2015/radio/testing.js +6 -0
  421. package/fesm2015/radio/testing.js.map +1 -1
  422. package/fesm2015/radio.js +16 -7
  423. package/fesm2015/radio.js.map +1 -1
  424. package/fesm2015/select/testing.js +6 -0
  425. package/fesm2015/select/testing.js.map +1 -1
  426. package/fesm2015/select.js +21 -12
  427. package/fesm2015/select.js.map +1 -1
  428. package/fesm2015/sidenav.js +15 -16
  429. package/fesm2015/sidenav.js.map +1 -1
  430. package/fesm2015/slide-toggle/testing.js +6 -0
  431. package/fesm2015/slide-toggle/testing.js.map +1 -1
  432. package/fesm2015/slide-toggle.js.map +1 -1
  433. package/fesm2015/slider/testing.js +6 -0
  434. package/fesm2015/slider/testing.js.map +1 -1
  435. package/fesm2015/slider.js +24 -21
  436. package/fesm2015/slider.js.map +1 -1
  437. package/fesm2015/snack-bar.js +4 -2
  438. package/fesm2015/snack-bar.js.map +1 -1
  439. package/fesm2015/sort/testing.js +9 -6
  440. package/fesm2015/sort/testing.js.map +1 -1
  441. package/fesm2015/sort.js +22 -8
  442. package/fesm2015/sort.js.map +1 -1
  443. package/fesm2015/stepper.js +2 -2
  444. package/fesm2015/stepper.js.map +1 -1
  445. package/fesm2015/table.js +17 -28
  446. package/fesm2015/table.js.map +1 -1
  447. package/fesm2015/tabs.js +21 -4
  448. package/fesm2015/tabs.js.map +1 -1
  449. package/fesm2015/toolbar/testing.js +74 -0
  450. package/fesm2015/toolbar/testing.js.map +1 -0
  451. package/fesm2015/tooltip.js +55 -20
  452. package/fesm2015/tooltip.js.map +1 -1
  453. package/fesm2015/tree.js +1 -1
  454. package/fesm2015/tree.js.map +1 -1
  455. package/form-field/error.d.ts +7 -0
  456. package/form-field/form-field.d.ts +2 -3
  457. package/form-field/hint.d.ts +10 -0
  458. package/form-field/index.metadata.json +1 -1
  459. package/form-field/prefix.d.ts +7 -0
  460. package/form-field/suffix.d.ts +7 -0
  461. package/grid-list/grid-list.d.ts +2 -1
  462. package/grid-list/index.metadata.json +1 -1
  463. package/grid-list/tile-styler.d.ts +10 -5
  464. package/input/index.metadata.json +1 -1
  465. package/input/input.d.ts +6 -2
  466. package/input/testing/input-harness.d.ts +2 -0
  467. package/list/testing/action-list-harness.d.ts +2 -0
  468. package/list/testing/nav-list-harness.d.ts +2 -0
  469. package/list/testing/selection-list-harness.d.ts +2 -0
  470. package/menu/index.metadata.json +1 -1
  471. package/menu/menu-content.d.ts +7 -1
  472. package/menu/menu-errors.d.ts +6 -0
  473. package/menu/menu-panel.d.ts +1 -0
  474. package/menu/menu.d.ts +4 -0
  475. package/menu/testing/menu-harness.d.ts +4 -0
  476. package/package.json +2 -2
  477. package/prebuilt-themes/deeppurple-amber.css +1 -1
  478. package/prebuilt-themes/indigo-pink.css +1 -1
  479. package/prebuilt-themes/pink-bluegrey.css +1 -1
  480. package/prebuilt-themes/purple-green.css +1 -1
  481. package/progress-spinner/index.metadata.json +1 -1
  482. package/progress-spinner/progress-spinner.d.ts +5 -5
  483. package/radio/index.metadata.json +1 -1
  484. package/radio/radio.d.ts +8 -1
  485. package/radio/testing/radio-harness.d.ts +2 -0
  486. package/schematics/ng-add/index.js +1 -1
  487. package/schematics/ng-generate/navigation/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.html.template +3 -3
  488. package/schematics/ng-generate/navigation/schema.json +5 -0
  489. package/select/index.metadata.json +1 -1
  490. package/select/select.d.ts +7 -0
  491. package/select/testing/select-harness.d.ts +2 -0
  492. package/sidenav/drawer.d.ts +3 -3
  493. package/sidenav/index.metadata.json +1 -1
  494. package/slide-toggle/slide-toggle.d.ts +2 -1
  495. package/slide-toggle/testing/slide-toggle-harness.d.ts +2 -0
  496. package/slider/index.metadata.json +1 -1
  497. package/slider/slider.d.ts +9 -8
  498. package/slider/testing/slider-harness.d.ts +2 -0
  499. package/sort/index.metadata.json +1 -1
  500. package/sort/sort-header-intl.d.ts +5 -1
  501. package/sort/sort-header.d.ts +3 -1
  502. package/sort/testing/sort-header-harness.d.ts +6 -2
  503. package/stepper/index.metadata.json +1 -1
  504. package/table/cell.d.ts +7 -4
  505. package/table/index.metadata.json +1 -1
  506. package/table/table.d.ts +2 -0
  507. package/tabs/index.d.ts +3 -1
  508. package/tabs/index.metadata.json +1 -1
  509. package/tabs/tab-content.d.ts +7 -1
  510. package/tabs/tab-label.d.ts +7 -0
  511. package/tabs/tab-nav-bar/tab-nav-bar.d.ts +2 -1
  512. package/toolbar/testing/index.d.ts +8 -0
  513. package/toolbar/testing/package.json +9 -0
  514. package/toolbar/testing/public-api.d.ts +9 -0
  515. package/toolbar/testing/toolbar-harness-filters.d.ts +13 -0
  516. package/toolbar/testing/toolbar-harness.d.ts +31 -0
  517. package/tooltip/index.metadata.json +1 -1
  518. package/tooltip/tooltip.d.ts +7 -2
  519. package/tree/data-source/flat-data-source.d.ts +4 -4
  520. package/tree/index.metadata.json +1 -1
  521. package/tree/node.d.ts +2 -1
@@ -58,12 +58,12 @@
58
58
  MatDatepickerIntl.prototype.formatYearRange = function (start, end) {
59
59
  return start + " \u2013 " + end;
60
60
  };
61
- MatDatepickerIntl.ɵprov = i0.ɵɵdefineInjectable({ factory: function MatDatepickerIntl_Factory() { return new MatDatepickerIntl(); }, token: MatDatepickerIntl, providedIn: "root" });
62
- MatDatepickerIntl.decorators = [
63
- { type: i0.Injectable, args: [{ providedIn: 'root' },] }
64
- ];
65
61
  return MatDatepickerIntl;
66
62
  }());
63
+ MatDatepickerIntl.ɵprov = i0.ɵɵdefineInjectable({ factory: function MatDatepickerIntl_Factory() { return new MatDatepickerIntl(); }, token: MatDatepickerIntl, providedIn: "root" });
64
+ MatDatepickerIntl.decorators = [
65
+ { type: i0.Injectable, args: [{ providedIn: 'root' },] }
66
+ ];
67
67
 
68
68
  /**
69
69
  * @license
@@ -291,45 +291,45 @@
291
291
  }
292
292
  return null;
293
293
  };
294
- MatCalendarBody.decorators = [
295
- { type: i0.Component, args: [{
296
- selector: '[mat-calendar-body]',
297
- template: "<!--\n If there's not enough space in the first row, create a separate label row. We mark this row as\n aria-hidden because we don't want it to be read out as one of the weeks in the month.\n-->\n<tr *ngIf=\"_firstRowOffset < labelMinRequiredCells\" aria-hidden=\"true\">\n <td class=\"mat-calendar-body-label\"\n [attr.colspan]=\"numCols\"\n [style.paddingTop]=\"_cellPadding\"\n [style.paddingBottom]=\"_cellPadding\">\n {{label}}\n </td>\n</tr>\n\n<!-- Create the first row separately so we can include a special spacer cell. -->\n<tr *ngFor=\"let row of rows; let rowIndex = index\" role=\"row\">\n <!--\n We mark this cell as aria-hidden so it doesn't get read out as one of the days in the week.\n The aspect ratio of the table cells is maintained by setting the top and bottom padding as a\n percentage of the width (a variant of the trick described here:\n https://www.w3schools.com/howto/howto_css_aspect_ratio.asp).\n -->\n <td *ngIf=\"rowIndex === 0 && _firstRowOffset\"\n aria-hidden=\"true\"\n class=\"mat-calendar-body-label\"\n [attr.colspan]=\"_firstRowOffset\"\n [style.paddingTop]=\"_cellPadding\"\n [style.paddingBottom]=\"_cellPadding\">\n {{_firstRowOffset >= labelMinRequiredCells ? label : ''}}\n </td>\n <td *ngFor=\"let item of row; let colIndex = index\"\n role=\"gridcell\"\n class=\"mat-calendar-body-cell\"\n [ngClass]=\"item.cssClasses\"\n [tabindex]=\"_isActiveCell(rowIndex, colIndex) ? 0 : -1\"\n [attr.data-mat-row]=\"rowIndex\"\n [attr.data-mat-col]=\"colIndex\"\n [class.mat-calendar-body-disabled]=\"!item.enabled\"\n [class.mat-calendar-body-active]=\"_isActiveCell(rowIndex, colIndex)\"\n [class.mat-calendar-body-range-start]=\"_isRangeStart(item.compareValue)\"\n [class.mat-calendar-body-range-end]=\"_isRangeEnd(item.compareValue)\"\n [class.mat-calendar-body-in-range]=\"_isInRange(item.compareValue)\"\n [class.mat-calendar-body-comparison-bridge-start]=\"_isComparisonBridgeStart(item.compareValue, rowIndex, colIndex)\"\n [class.mat-calendar-body-comparison-bridge-end]=\"_isComparisonBridgeEnd(item.compareValue, rowIndex, colIndex)\"\n [class.mat-calendar-body-comparison-start]=\"_isComparisonStart(item.compareValue)\"\n [class.mat-calendar-body-comparison-end]=\"_isComparisonEnd(item.compareValue)\"\n [class.mat-calendar-body-in-comparison-range]=\"_isInComparisonRange(item.compareValue)\"\n [class.mat-calendar-body-preview-start]=\"_isPreviewStart(item.compareValue)\"\n [class.mat-calendar-body-preview-end]=\"_isPreviewEnd(item.compareValue)\"\n [class.mat-calendar-body-in-preview]=\"_isInPreview(item.compareValue)\"\n [attr.aria-label]=\"item.ariaLabel\"\n [attr.aria-disabled]=\"!item.enabled || null\"\n [attr.aria-selected]=\"_isSelected(item)\"\n (click)=\"_cellClicked(item, $event)\"\n [style.width]=\"_cellWidth\"\n [style.paddingTop]=\"_cellPadding\"\n [style.paddingBottom]=\"_cellPadding\">\n <div class=\"mat-calendar-body-cell-content mat-focus-indicator\"\n [class.mat-calendar-body-selected]=\"_isSelected(item)\"\n [class.mat-calendar-body-today]=\"todayValue === item.compareValue\">\n {{item.displayValue}}\n </div>\n <div class=\"mat-calendar-body-cell-preview\"></div>\n </td>\n</tr>\n",
298
- host: {
299
- 'class': 'mat-calendar-body',
300
- 'role': 'grid',
301
- 'aria-readonly': 'true'
302
- },
303
- exportAs: 'matCalendarBody',
304
- encapsulation: i0.ViewEncapsulation.None,
305
- changeDetection: i0.ChangeDetectionStrategy.OnPush,
306
- styles: [".mat-calendar-body{min-width:224px}.mat-calendar-body-label{height:0;line-height:0;text-align:left;padding-left:4.7142857143%;padding-right:4.7142857143%}.mat-calendar-body-cell{position:relative;height:0;line-height:0;text-align:center;outline:none;cursor:pointer}.mat-calendar-body-cell::before,.mat-calendar-body-cell::after,.mat-calendar-body-cell-preview{content:\"\";position:absolute;top:5%;left:0;z-index:0;box-sizing:border-box;height:90%;width:100%}.mat-calendar-body-range-start:not(.mat-calendar-body-in-comparison-range)::before,.mat-calendar-body-range-start::after,.mat-calendar-body-comparison-start:not(.mat-calendar-body-comparison-bridge-start)::before,.mat-calendar-body-comparison-start::after,.mat-calendar-body-preview-start .mat-calendar-body-cell-preview{left:5%;width:95%;border-top-left-radius:999px;border-bottom-left-radius:999px}[dir=rtl] .mat-calendar-body-range-start:not(.mat-calendar-body-in-comparison-range)::before,[dir=rtl] .mat-calendar-body-range-start::after,[dir=rtl] .mat-calendar-body-comparison-start:not(.mat-calendar-body-comparison-bridge-start)::before,[dir=rtl] .mat-calendar-body-comparison-start::after,[dir=rtl] .mat-calendar-body-preview-start .mat-calendar-body-cell-preview{left:0;border-radius:0;border-top-right-radius:999px;border-bottom-right-radius:999px}.mat-calendar-body-range-end:not(.mat-calendar-body-in-comparison-range)::before,.mat-calendar-body-range-end::after,.mat-calendar-body-comparison-end:not(.mat-calendar-body-comparison-bridge-end)::before,.mat-calendar-body-comparison-end::after,.mat-calendar-body-preview-end .mat-calendar-body-cell-preview{width:95%;border-top-right-radius:999px;border-bottom-right-radius:999px}[dir=rtl] .mat-calendar-body-range-end:not(.mat-calendar-body-in-comparison-range)::before,[dir=rtl] .mat-calendar-body-range-end::after,[dir=rtl] .mat-calendar-body-comparison-end:not(.mat-calendar-body-comparison-bridge-end)::before,[dir=rtl] .mat-calendar-body-comparison-end::after,[dir=rtl] .mat-calendar-body-preview-end .mat-calendar-body-cell-preview{left:5%;border-radius:0;border-top-left-radius:999px;border-bottom-left-radius:999px}[dir=rtl] .mat-calendar-body-comparison-bridge-start.mat-calendar-body-range-end::after,[dir=rtl] .mat-calendar-body-comparison-bridge-end.mat-calendar-body-range-start::after{width:95%;border-top-right-radius:999px;border-bottom-right-radius:999px}.mat-calendar-body-comparison-start.mat-calendar-body-range-end::after,[dir=rtl] .mat-calendar-body-comparison-start.mat-calendar-body-range-end::after,.mat-calendar-body-comparison-end.mat-calendar-body-range-start::after,[dir=rtl] .mat-calendar-body-comparison-end.mat-calendar-body-range-start::after{width:90%}.mat-calendar-body-in-preview .mat-calendar-body-cell-preview{border-top:dashed 1px;border-bottom:dashed 1px}.mat-calendar-body-preview-start .mat-calendar-body-cell-preview{border-left:dashed 1px}[dir=rtl] .mat-calendar-body-preview-start .mat-calendar-body-cell-preview{border-left:0;border-right:dashed 1px}.mat-calendar-body-preview-end .mat-calendar-body-cell-preview{border-right:dashed 1px}[dir=rtl] .mat-calendar-body-preview-end .mat-calendar-body-cell-preview{border-right:0;border-left:dashed 1px}.mat-calendar-body-disabled{cursor:default}.mat-calendar-body-cell-content{top:5%;left:5%;z-index:1;display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:90%;height:90%;line-height:1;border-width:1px;border-style:solid;border-radius:999px}.mat-calendar-body-cell-content.mat-focus-indicator{position:absolute}.cdk-high-contrast-active .mat-calendar-body-cell-content{border:none}.cdk-high-contrast-active .mat-datepicker-popup:not(:empty),.cdk-high-contrast-active .mat-calendar-body-selected{outline:solid 1px}.cdk-high-contrast-active .mat-calendar-body-today{outline:dotted 1px}.cdk-high-contrast-active .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected),.cdk-high-contrast-active .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected){outline:dotted 2px}[dir=rtl] .mat-calendar-body-label{text-align:right}@media(hover: none){.mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected){background-color:transparent}}\n"]
307
- },] }
308
- ];
309
- MatCalendarBody.ctorParameters = function () { return [
310
- { type: i0.ElementRef },
311
- { type: i0.NgZone }
312
- ]; };
313
- MatCalendarBody.propDecorators = {
314
- label: [{ type: i0.Input }],
315
- rows: [{ type: i0.Input }],
316
- todayValue: [{ type: i0.Input }],
317
- startValue: [{ type: i0.Input }],
318
- endValue: [{ type: i0.Input }],
319
- labelMinRequiredCells: [{ type: i0.Input }],
320
- numCols: [{ type: i0.Input }],
321
- activeCell: [{ type: i0.Input }],
322
- isRange: [{ type: i0.Input }],
323
- cellAspectRatio: [{ type: i0.Input }],
324
- comparisonStart: [{ type: i0.Input }],
325
- comparisonEnd: [{ type: i0.Input }],
326
- previewStart: [{ type: i0.Input }],
327
- previewEnd: [{ type: i0.Input }],
328
- selectedValueChange: [{ type: i0.Output }],
329
- previewChange: [{ type: i0.Output }]
330
- };
331
294
  return MatCalendarBody;
332
295
  }());
296
+ MatCalendarBody.decorators = [
297
+ { type: i0.Component, args: [{
298
+ selector: '[mat-calendar-body]',
299
+ template: "<!--\n If there's not enough space in the first row, create a separate label row. We mark this row as\n aria-hidden because we don't want it to be read out as one of the weeks in the month.\n-->\n<tr *ngIf=\"_firstRowOffset < labelMinRequiredCells\" aria-hidden=\"true\">\n <td class=\"mat-calendar-body-label\"\n [attr.colspan]=\"numCols\"\n [style.paddingTop]=\"_cellPadding\"\n [style.paddingBottom]=\"_cellPadding\">\n {{label}}\n </td>\n</tr>\n\n<!-- Create the first row separately so we can include a special spacer cell. -->\n<tr *ngFor=\"let row of rows; let rowIndex = index\" role=\"row\">\n <!--\n We mark this cell as aria-hidden so it doesn't get read out as one of the days in the week.\n The aspect ratio of the table cells is maintained by setting the top and bottom padding as a\n percentage of the width (a variant of the trick described here:\n https://www.w3schools.com/howto/howto_css_aspect_ratio.asp).\n -->\n <td *ngIf=\"rowIndex === 0 && _firstRowOffset\"\n aria-hidden=\"true\"\n class=\"mat-calendar-body-label\"\n [attr.colspan]=\"_firstRowOffset\"\n [style.paddingTop]=\"_cellPadding\"\n [style.paddingBottom]=\"_cellPadding\">\n {{_firstRowOffset >= labelMinRequiredCells ? label : ''}}\n </td>\n <td *ngFor=\"let item of row; let colIndex = index\"\n role=\"gridcell\"\n class=\"mat-calendar-body-cell\"\n [ngClass]=\"item.cssClasses\"\n [tabindex]=\"_isActiveCell(rowIndex, colIndex) ? 0 : -1\"\n [attr.data-mat-row]=\"rowIndex\"\n [attr.data-mat-col]=\"colIndex\"\n [class.mat-calendar-body-disabled]=\"!item.enabled\"\n [class.mat-calendar-body-active]=\"_isActiveCell(rowIndex, colIndex)\"\n [class.mat-calendar-body-range-start]=\"_isRangeStart(item.compareValue)\"\n [class.mat-calendar-body-range-end]=\"_isRangeEnd(item.compareValue)\"\n [class.mat-calendar-body-in-range]=\"_isInRange(item.compareValue)\"\n [class.mat-calendar-body-comparison-bridge-start]=\"_isComparisonBridgeStart(item.compareValue, rowIndex, colIndex)\"\n [class.mat-calendar-body-comparison-bridge-end]=\"_isComparisonBridgeEnd(item.compareValue, rowIndex, colIndex)\"\n [class.mat-calendar-body-comparison-start]=\"_isComparisonStart(item.compareValue)\"\n [class.mat-calendar-body-comparison-end]=\"_isComparisonEnd(item.compareValue)\"\n [class.mat-calendar-body-in-comparison-range]=\"_isInComparisonRange(item.compareValue)\"\n [class.mat-calendar-body-preview-start]=\"_isPreviewStart(item.compareValue)\"\n [class.mat-calendar-body-preview-end]=\"_isPreviewEnd(item.compareValue)\"\n [class.mat-calendar-body-in-preview]=\"_isInPreview(item.compareValue)\"\n [attr.aria-label]=\"item.ariaLabel\"\n [attr.aria-disabled]=\"!item.enabled || null\"\n [attr.aria-selected]=\"_isSelected(item)\"\n (click)=\"_cellClicked(item, $event)\"\n [style.width]=\"_cellWidth\"\n [style.paddingTop]=\"_cellPadding\"\n [style.paddingBottom]=\"_cellPadding\">\n <div class=\"mat-calendar-body-cell-content mat-focus-indicator\"\n [class.mat-calendar-body-selected]=\"_isSelected(item)\"\n [class.mat-calendar-body-today]=\"todayValue === item.compareValue\">\n {{item.displayValue}}\n </div>\n <div class=\"mat-calendar-body-cell-preview\"></div>\n </td>\n</tr>\n",
300
+ host: {
301
+ 'class': 'mat-calendar-body',
302
+ 'role': 'grid',
303
+ 'aria-readonly': 'true'
304
+ },
305
+ exportAs: 'matCalendarBody',
306
+ encapsulation: i0.ViewEncapsulation.None,
307
+ changeDetection: i0.ChangeDetectionStrategy.OnPush,
308
+ styles: [".mat-calendar-body{min-width:224px}.mat-calendar-body-label{height:0;line-height:0;text-align:left;padding-left:4.7142857143%;padding-right:4.7142857143%}.mat-calendar-body-cell{position:relative;height:0;line-height:0;text-align:center;outline:none;cursor:pointer}.mat-calendar-body-cell::before,.mat-calendar-body-cell::after,.mat-calendar-body-cell-preview{content:\"\";position:absolute;top:5%;left:0;z-index:0;box-sizing:border-box;height:90%;width:100%}.mat-calendar-body-range-start:not(.mat-calendar-body-in-comparison-range)::before,.mat-calendar-body-range-start::after,.mat-calendar-body-comparison-start:not(.mat-calendar-body-comparison-bridge-start)::before,.mat-calendar-body-comparison-start::after,.mat-calendar-body-preview-start .mat-calendar-body-cell-preview{left:5%;width:95%;border-top-left-radius:999px;border-bottom-left-radius:999px}[dir=rtl] .mat-calendar-body-range-start:not(.mat-calendar-body-in-comparison-range)::before,[dir=rtl] .mat-calendar-body-range-start::after,[dir=rtl] .mat-calendar-body-comparison-start:not(.mat-calendar-body-comparison-bridge-start)::before,[dir=rtl] .mat-calendar-body-comparison-start::after,[dir=rtl] .mat-calendar-body-preview-start .mat-calendar-body-cell-preview{left:0;border-radius:0;border-top-right-radius:999px;border-bottom-right-radius:999px}.mat-calendar-body-range-end:not(.mat-calendar-body-in-comparison-range)::before,.mat-calendar-body-range-end::after,.mat-calendar-body-comparison-end:not(.mat-calendar-body-comparison-bridge-end)::before,.mat-calendar-body-comparison-end::after,.mat-calendar-body-preview-end .mat-calendar-body-cell-preview{width:95%;border-top-right-radius:999px;border-bottom-right-radius:999px}[dir=rtl] .mat-calendar-body-range-end:not(.mat-calendar-body-in-comparison-range)::before,[dir=rtl] .mat-calendar-body-range-end::after,[dir=rtl] .mat-calendar-body-comparison-end:not(.mat-calendar-body-comparison-bridge-end)::before,[dir=rtl] .mat-calendar-body-comparison-end::after,[dir=rtl] .mat-calendar-body-preview-end .mat-calendar-body-cell-preview{left:5%;border-radius:0;border-top-left-radius:999px;border-bottom-left-radius:999px}[dir=rtl] .mat-calendar-body-comparison-bridge-start.mat-calendar-body-range-end::after,[dir=rtl] .mat-calendar-body-comparison-bridge-end.mat-calendar-body-range-start::after{width:95%;border-top-right-radius:999px;border-bottom-right-radius:999px}.mat-calendar-body-comparison-start.mat-calendar-body-range-end::after,[dir=rtl] .mat-calendar-body-comparison-start.mat-calendar-body-range-end::after,.mat-calendar-body-comparison-end.mat-calendar-body-range-start::after,[dir=rtl] .mat-calendar-body-comparison-end.mat-calendar-body-range-start::after{width:90%}.mat-calendar-body-in-preview .mat-calendar-body-cell-preview{border-top:dashed 1px;border-bottom:dashed 1px}.mat-calendar-body-preview-start .mat-calendar-body-cell-preview{border-left:dashed 1px}[dir=rtl] .mat-calendar-body-preview-start .mat-calendar-body-cell-preview{border-left:0;border-right:dashed 1px}.mat-calendar-body-preview-end .mat-calendar-body-cell-preview{border-right:dashed 1px}[dir=rtl] .mat-calendar-body-preview-end .mat-calendar-body-cell-preview{border-right:0;border-left:dashed 1px}.mat-calendar-body-disabled{cursor:default}.mat-calendar-body-cell-content{top:5%;left:5%;z-index:1;display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:90%;height:90%;line-height:1;border-width:1px;border-style:solid;border-radius:999px}.mat-calendar-body-cell-content.mat-focus-indicator{position:absolute}.cdk-high-contrast-active .mat-calendar-body-cell-content{border:none}.cdk-high-contrast-active .mat-datepicker-popup:not(:empty),.cdk-high-contrast-active .mat-calendar-body-selected{outline:solid 1px}.cdk-high-contrast-active .mat-calendar-body-today{outline:dotted 1px}.cdk-high-contrast-active .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected),.cdk-high-contrast-active .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected){outline:dotted 2px}[dir=rtl] .mat-calendar-body-label{text-align:right}@media(hover: none){.mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected){background-color:transparent}}\n"]
309
+ },] }
310
+ ];
311
+ MatCalendarBody.ctorParameters = function () { return [
312
+ { type: i0.ElementRef },
313
+ { type: i0.NgZone }
314
+ ]; };
315
+ MatCalendarBody.propDecorators = {
316
+ label: [{ type: i0.Input }],
317
+ rows: [{ type: i0.Input }],
318
+ todayValue: [{ type: i0.Input }],
319
+ startValue: [{ type: i0.Input }],
320
+ endValue: [{ type: i0.Input }],
321
+ labelMinRequiredCells: [{ type: i0.Input }],
322
+ numCols: [{ type: i0.Input }],
323
+ activeCell: [{ type: i0.Input }],
324
+ isRange: [{ type: i0.Input }],
325
+ cellAspectRatio: [{ type: i0.Input }],
326
+ comparisonStart: [{ type: i0.Input }],
327
+ comparisonEnd: [{ type: i0.Input }],
328
+ previewStart: [{ type: i0.Input }],
329
+ previewEnd: [{ type: i0.Input }],
330
+ selectedValueChange: [{ type: i0.Output }],
331
+ previewChange: [{ type: i0.Output }]
332
+ };
333
333
  /** Checks whether a node is a table cell element. */
334
334
  function isTableCell(node) {
335
335
  return node.nodeName === 'TD';
@@ -348,241 +348,307 @@
348
348
  value >= start && value <= end;
349
349
  }
350
350
 
351
- /*! *****************************************************************************
352
- Copyright (c) Microsoft Corporation.
353
-
354
- Permission to use, copy, modify, and/or distribute this software for any
355
- purpose with or without fee is hereby granted.
356
-
357
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
358
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
359
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
360
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
361
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
362
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
363
- PERFORMANCE OF THIS SOFTWARE.
364
- ***************************************************************************** */
365
- /* global Reflect, Promise */
366
-
367
- var extendStatics = function(d, b) {
368
- extendStatics = Object.setPrototypeOf ||
369
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
370
- function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
371
- return extendStatics(d, b);
372
- };
373
-
374
- function __extends(d, b) {
375
- extendStatics(d, b);
376
- function __() { this.constructor = d; }
377
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
378
- }
379
-
380
- var __assign = function() {
381
- __assign = Object.assign || function __assign(t) {
382
- for (var s, i = 1, n = arguments.length; i < n; i++) {
383
- s = arguments[i];
384
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
385
- }
386
- return t;
387
- };
388
- return __assign.apply(this, arguments);
389
- };
390
-
391
- function __rest(s, e) {
392
- var t = {};
393
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
394
- t[p] = s[p];
395
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
396
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
397
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
398
- t[p[i]] = s[p[i]];
399
- }
400
- return t;
401
- }
402
-
403
- function __decorate(decorators, target, key, desc) {
404
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
405
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
406
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
407
- return c > 3 && r && Object.defineProperty(target, key, r), r;
408
- }
409
-
410
- function __param(paramIndex, decorator) {
411
- return function (target, key) { decorator(target, key, paramIndex); }
412
- }
413
-
414
- function __metadata(metadataKey, metadataValue) {
415
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
416
- }
417
-
418
- function __awaiter(thisArg, _arguments, P, generator) {
419
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
420
- return new (P || (P = Promise))(function (resolve, reject) {
421
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
422
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
423
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
424
- step((generator = generator.apply(thisArg, _arguments || [])).next());
425
- });
426
- }
427
-
428
- function __generator(thisArg, body) {
429
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
430
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
431
- function verb(n) { return function (v) { return step([n, v]); }; }
432
- function step(op) {
433
- if (f) throw new TypeError("Generator is already executing.");
434
- while (_) try {
435
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
436
- if (y = 0, t) op = [op[0] & 2, t.value];
437
- switch (op[0]) {
438
- case 0: case 1: t = op; break;
439
- case 4: _.label++; return { value: op[1], done: false };
440
- case 5: _.label++; y = op[1]; op = [0]; continue;
441
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
442
- default:
443
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
444
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
445
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
446
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
447
- if (t[2]) _.ops.pop();
448
- _.trys.pop(); continue;
449
- }
450
- op = body.call(thisArg, _);
451
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
452
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
453
- }
454
- }
455
-
456
- var __createBinding = Object.create ? (function(o, m, k, k2) {
457
- if (k2 === undefined) k2 = k;
458
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
459
- }) : (function(o, m, k, k2) {
460
- if (k2 === undefined) k2 = k;
461
- o[k2] = m[k];
462
- });
463
-
464
- function __exportStar(m, exports) {
465
- for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
466
- }
467
-
468
- function __values(o) {
469
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
470
- if (m) return m.call(o);
471
- if (o && typeof o.length === "number") return {
472
- next: function () {
473
- if (o && i >= o.length) o = void 0;
474
- return { value: o && o[i++], done: !o };
475
- }
476
- };
477
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
478
- }
479
-
480
- function __read(o, n) {
481
- var m = typeof Symbol === "function" && o[Symbol.iterator];
482
- if (!m) return o;
483
- var i = m.call(o), r, ar = [], e;
484
- try {
485
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
486
- }
487
- catch (error) { e = { error: error }; }
488
- finally {
489
- try {
490
- if (r && !r.done && (m = i["return"])) m.call(i);
491
- }
492
- finally { if (e) throw e.error; }
493
- }
494
- return ar;
495
- }
496
-
497
- function __spread() {
498
- for (var ar = [], i = 0; i < arguments.length; i++)
499
- ar = ar.concat(__read(arguments[i]));
500
- return ar;
501
- }
502
-
503
- function __spreadArrays() {
504
- for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
505
- for (var r = Array(s), k = 0, i = 0; i < il; i++)
506
- for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
507
- r[k] = a[j];
508
- return r;
509
- };
510
-
511
- function __await(v) {
512
- return this instanceof __await ? (this.v = v, this) : new __await(v);
513
- }
514
-
515
- function __asyncGenerator(thisArg, _arguments, generator) {
516
- if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
517
- var g = generator.apply(thisArg, _arguments || []), i, q = [];
518
- return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
519
- function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
520
- function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
521
- function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
522
- function fulfill(value) { resume("next", value); }
523
- function reject(value) { resume("throw", value); }
524
- function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
525
- }
526
-
527
- function __asyncDelegator(o) {
528
- var i, p;
529
- return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
530
- function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
531
- }
532
-
533
- function __asyncValues(o) {
534
- if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
535
- var m = o[Symbol.asyncIterator], i;
536
- return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
537
- function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
538
- function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
539
- }
540
-
541
- function __makeTemplateObject(cooked, raw) {
542
- if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
543
- return cooked;
544
- };
545
-
546
- var __setModuleDefault = Object.create ? (function(o, v) {
547
- Object.defineProperty(o, "default", { enumerable: true, value: v });
548
- }) : function(o, v) {
549
- o["default"] = v;
550
- };
551
-
552
- function __importStar(mod) {
553
- if (mod && mod.__esModule) return mod;
554
- var result = {};
555
- if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
556
- __setModuleDefault(result, mod);
557
- return result;
558
- }
559
-
560
- function __importDefault(mod) {
561
- return (mod && mod.__esModule) ? mod : { default: mod };
562
- }
563
-
564
- function __classPrivateFieldGet(receiver, privateMap) {
565
- if (!privateMap.has(receiver)) {
566
- throw new TypeError("attempted to get private field on non-instance");
567
- }
568
- return privateMap.get(receiver);
569
- }
570
-
571
- function __classPrivateFieldSet(receiver, privateMap, value) {
572
- if (!privateMap.has(receiver)) {
573
- throw new TypeError("attempted to set private field on non-instance");
574
- }
575
- privateMap.set(receiver, value);
576
- return value;
351
+ /*! *****************************************************************************
352
+ Copyright (c) Microsoft Corporation.
353
+
354
+ Permission to use, copy, modify, and/or distribute this software for any
355
+ purpose with or without fee is hereby granted.
356
+
357
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
358
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
359
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
360
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
361
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
362
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
363
+ PERFORMANCE OF THIS SOFTWARE.
364
+ ***************************************************************************** */
365
+ /* global Reflect, Promise */
366
+ var extendStatics = function (d, b) {
367
+ extendStatics = Object.setPrototypeOf ||
368
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
369
+ function (d, b) { for (var p in b)
370
+ if (b.hasOwnProperty(p))
371
+ d[p] = b[p]; };
372
+ return extendStatics(d, b);
373
+ };
374
+ function __extends(d, b) {
375
+ extendStatics(d, b);
376
+ function __() { this.constructor = d; }
377
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
378
+ }
379
+ var __assign = function () {
380
+ __assign = Object.assign || function __assign(t) {
381
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
382
+ s = arguments[i];
383
+ for (var p in s)
384
+ if (Object.prototype.hasOwnProperty.call(s, p))
385
+ t[p] = s[p];
386
+ }
387
+ return t;
388
+ };
389
+ return __assign.apply(this, arguments);
390
+ };
391
+ function __rest(s, e) {
392
+ var t = {};
393
+ for (var p in s)
394
+ if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
395
+ t[p] = s[p];
396
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
397
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
398
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
399
+ t[p[i]] = s[p[i]];
400
+ }
401
+ return t;
402
+ }
403
+ function __decorate(decorators, target, key, desc) {
404
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
405
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
406
+ r = Reflect.decorate(decorators, target, key, desc);
407
+ else
408
+ for (var i = decorators.length - 1; i >= 0; i--)
409
+ if (d = decorators[i])
410
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
411
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
412
+ }
413
+ function __param(paramIndex, decorator) {
414
+ return function (target, key) { decorator(target, key, paramIndex); };
415
+ }
416
+ function __metadata(metadataKey, metadataValue) {
417
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
418
+ return Reflect.metadata(metadataKey, metadataValue);
419
+ }
420
+ function __awaiter(thisArg, _arguments, P, generator) {
421
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
422
+ return new (P || (P = Promise))(function (resolve, reject) {
423
+ function fulfilled(value) { try {
424
+ step(generator.next(value));
425
+ }
426
+ catch (e) {
427
+ reject(e);
428
+ } }
429
+ function rejected(value) { try {
430
+ step(generator["throw"](value));
431
+ }
432
+ catch (e) {
433
+ reject(e);
434
+ } }
435
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
436
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
437
+ });
438
+ }
439
+ function __generator(thisArg, body) {
440
+ var _ = { label: 0, sent: function () { if (t[0] & 1)
441
+ throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
442
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { return this; }), g;
443
+ function verb(n) { return function (v) { return step([n, v]); }; }
444
+ function step(op) {
445
+ if (f)
446
+ throw new TypeError("Generator is already executing.");
447
+ while (_)
448
+ try {
449
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done)
450
+ return t;
451
+ if (y = 0, t)
452
+ op = [op[0] & 2, t.value];
453
+ switch (op[0]) {
454
+ case 0:
455
+ case 1:
456
+ t = op;
457
+ break;
458
+ case 4:
459
+ _.label++;
460
+ return { value: op[1], done: false };
461
+ case 5:
462
+ _.label++;
463
+ y = op[1];
464
+ op = [0];
465
+ continue;
466
+ case 7:
467
+ op = _.ops.pop();
468
+ _.trys.pop();
469
+ continue;
470
+ default:
471
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
472
+ _ = 0;
473
+ continue;
474
+ }
475
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {
476
+ _.label = op[1];
477
+ break;
478
+ }
479
+ if (op[0] === 6 && _.label < t[1]) {
480
+ _.label = t[1];
481
+ t = op;
482
+ break;
483
+ }
484
+ if (t && _.label < t[2]) {
485
+ _.label = t[2];
486
+ _.ops.push(op);
487
+ break;
488
+ }
489
+ if (t[2])
490
+ _.ops.pop();
491
+ _.trys.pop();
492
+ continue;
493
+ }
494
+ op = body.call(thisArg, _);
495
+ }
496
+ catch (e) {
497
+ op = [6, e];
498
+ y = 0;
499
+ }
500
+ finally {
501
+ f = t = 0;
502
+ }
503
+ if (op[0] & 5)
504
+ throw op[1];
505
+ return { value: op[0] ? op[1] : void 0, done: true };
506
+ }
507
+ }
508
+ var __createBinding = Object.create ? (function (o, m, k, k2) {
509
+ if (k2 === undefined)
510
+ k2 = k;
511
+ Object.defineProperty(o, k2, { enumerable: true, get: function () { return m[k]; } });
512
+ }) : (function (o, m, k, k2) {
513
+ if (k2 === undefined)
514
+ k2 = k;
515
+ o[k2] = m[k];
516
+ });
517
+ function __exportStar(m, exports) {
518
+ for (var p in m)
519
+ if (p !== "default" && !exports.hasOwnProperty(p))
520
+ __createBinding(exports, m, p);
521
+ }
522
+ function __values(o) {
523
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
524
+ if (m)
525
+ return m.call(o);
526
+ if (o && typeof o.length === "number")
527
+ return {
528
+ next: function () {
529
+ if (o && i >= o.length)
530
+ o = void 0;
531
+ return { value: o && o[i++], done: !o };
532
+ }
533
+ };
534
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
535
+ }
536
+ function __read(o, n) {
537
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
538
+ if (!m)
539
+ return o;
540
+ var i = m.call(o), r, ar = [], e;
541
+ try {
542
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done)
543
+ ar.push(r.value);
544
+ }
545
+ catch (error) {
546
+ e = { error: error };
547
+ }
548
+ finally {
549
+ try {
550
+ if (r && !r.done && (m = i["return"]))
551
+ m.call(i);
552
+ }
553
+ finally {
554
+ if (e)
555
+ throw e.error;
556
+ }
557
+ }
558
+ return ar;
559
+ }
560
+ function __spread() {
561
+ for (var ar = [], i = 0; i < arguments.length; i++)
562
+ ar = ar.concat(__read(arguments[i]));
563
+ return ar;
564
+ }
565
+ function __spreadArrays() {
566
+ for (var s = 0, i = 0, il = arguments.length; i < il; i++)
567
+ s += arguments[i].length;
568
+ for (var r = Array(s), k = 0, i = 0; i < il; i++)
569
+ for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
570
+ r[k] = a[j];
571
+ return r;
572
+ }
573
+ ;
574
+ function __await(v) {
575
+ return this instanceof __await ? (this.v = v, this) : new __await(v);
576
+ }
577
+ function __asyncGenerator(thisArg, _arguments, generator) {
578
+ if (!Symbol.asyncIterator)
579
+ throw new TypeError("Symbol.asyncIterator is not defined.");
580
+ var g = generator.apply(thisArg, _arguments || []), i, q = [];
581
+ return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
582
+ function verb(n) { if (g[n])
583
+ i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
584
+ function resume(n, v) { try {
585
+ step(g[n](v));
586
+ }
587
+ catch (e) {
588
+ settle(q[0][3], e);
589
+ } }
590
+ function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
591
+ function fulfill(value) { resume("next", value); }
592
+ function reject(value) { resume("throw", value); }
593
+ function settle(f, v) { if (f(v), q.shift(), q.length)
594
+ resume(q[0][0], q[0][1]); }
595
+ }
596
+ function __asyncDelegator(o) {
597
+ var i, p;
598
+ return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
599
+ function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
600
+ }
601
+ function __asyncValues(o) {
602
+ if (!Symbol.asyncIterator)
603
+ throw new TypeError("Symbol.asyncIterator is not defined.");
604
+ var m = o[Symbol.asyncIterator], i;
605
+ return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
606
+ function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
607
+ function settle(resolve, reject, d, v) { Promise.resolve(v).then(function (v) { resolve({ value: v, done: d }); }, reject); }
608
+ }
609
+ function __makeTemplateObject(cooked, raw) {
610
+ if (Object.defineProperty) {
611
+ Object.defineProperty(cooked, "raw", { value: raw });
612
+ }
613
+ else {
614
+ cooked.raw = raw;
615
+ }
616
+ return cooked;
617
+ }
618
+ ;
619
+ var __setModuleDefault = Object.create ? (function (o, v) {
620
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
621
+ }) : function (o, v) {
622
+ o["default"] = v;
623
+ };
624
+ function __importStar(mod) {
625
+ if (mod && mod.__esModule)
626
+ return mod;
627
+ var result = {};
628
+ if (mod != null)
629
+ for (var k in mod)
630
+ if (Object.hasOwnProperty.call(mod, k))
631
+ __createBinding(result, mod, k);
632
+ __setModuleDefault(result, mod);
633
+ return result;
634
+ }
635
+ function __importDefault(mod) {
636
+ return (mod && mod.__esModule) ? mod : { default: mod };
637
+ }
638
+ function __classPrivateFieldGet(receiver, privateMap) {
639
+ if (!privateMap.has(receiver)) {
640
+ throw new TypeError("attempted to get private field on non-instance");
641
+ }
642
+ return privateMap.get(receiver);
643
+ }
644
+ function __classPrivateFieldSet(receiver, privateMap, value) {
645
+ if (!privateMap.has(receiver)) {
646
+ throw new TypeError("attempted to set private field on non-instance");
647
+ }
648
+ privateMap.set(receiver, value);
649
+ return value;
577
650
  }
578
651
 
579
- /**
580
- * @license
581
- * Copyright Google LLC All Rights Reserved.
582
- *
583
- * Use of this source code is governed by an MIT-style license that can be
584
- * found in the LICENSE file at https://angular.io/license
585
- */
586
652
  /** A class representing a range of dates. */
587
653
  var DateRange = /** @class */ (function () {
588
654
  function DateRange(
@@ -622,15 +688,15 @@
622
688
  MatDateSelectionModel.prototype._isValidDateInstance = function (date) {
623
689
  return this._adapter.isDateInstance(date) && this._adapter.isValid(date);
624
690
  };
625
- MatDateSelectionModel.decorators = [
626
- { type: i0.Directive }
627
- ];
628
- MatDateSelectionModel.ctorParameters = function () { return [
629
- { type: undefined },
630
- { type: core.DateAdapter }
631
- ]; };
632
691
  return MatDateSelectionModel;
633
692
  }());
693
+ MatDateSelectionModel.decorators = [
694
+ { type: i0.Directive }
695
+ ];
696
+ MatDateSelectionModel.ctorParameters = function () { return [
697
+ { type: undefined },
698
+ { type: core.DateAdapter }
699
+ ]; };
634
700
  /** A selection model that contains a single date. */
635
701
  var MatSingleDateSelectionModel = /** @class */ (function (_super) {
636
702
  __extends(MatSingleDateSelectionModel, _super);
@@ -655,14 +721,14 @@
655
721
  MatSingleDateSelectionModel.prototype.isComplete = function () {
656
722
  return this.selection != null;
657
723
  };
658
- MatSingleDateSelectionModel.decorators = [
659
- { type: i0.Injectable }
660
- ];
661
- MatSingleDateSelectionModel.ctorParameters = function () { return [
662
- { type: core.DateAdapter }
663
- ]; };
664
724
  return MatSingleDateSelectionModel;
665
725
  }(MatDateSelectionModel));
726
+ MatSingleDateSelectionModel.decorators = [
727
+ { type: i0.Injectable }
728
+ ];
729
+ MatSingleDateSelectionModel.ctorParameters = function () { return [
730
+ { type: core.DateAdapter }
731
+ ]; };
666
732
  /** A selection model that contains a date range. */
667
733
  var MatRangeDateSelectionModel = /** @class */ (function (_super) {
668
734
  __extends(MatRangeDateSelectionModel, _super);
@@ -711,14 +777,14 @@
711
777
  MatRangeDateSelectionModel.prototype.isComplete = function () {
712
778
  return this.selection.start != null && this.selection.end != null;
713
779
  };
714
- MatRangeDateSelectionModel.decorators = [
715
- { type: i0.Injectable }
716
- ];
717
- MatRangeDateSelectionModel.ctorParameters = function () { return [
718
- { type: core.DateAdapter }
719
- ]; };
720
780
  return MatRangeDateSelectionModel;
721
781
  }(MatDateSelectionModel));
782
+ MatRangeDateSelectionModel.decorators = [
783
+ { type: i0.Injectable }
784
+ ];
785
+ MatRangeDateSelectionModel.ctorParameters = function () { return [
786
+ { type: core.DateAdapter }
787
+ ]; };
722
788
  /** @docs-private */
723
789
  function MAT_SINGLE_DATE_SELECTION_MODEL_FACTORY(parent, adapter) {
724
790
  return parent || new MatSingleDateSelectionModel(adapter);
@@ -777,14 +843,14 @@
777
843
  }
778
844
  return new DateRange(start, end);
779
845
  };
780
- DefaultMatCalendarRangeStrategy.decorators = [
781
- { type: i0.Injectable }
782
- ];
783
- DefaultMatCalendarRangeStrategy.ctorParameters = function () { return [
784
- { type: core.DateAdapter }
785
- ]; };
786
846
  return DefaultMatCalendarRangeStrategy;
787
847
  }());
848
+ DefaultMatCalendarRangeStrategy.decorators = [
849
+ { type: i0.Injectable }
850
+ ];
851
+ DefaultMatCalendarRangeStrategy.ctorParameters = function () { return [
852
+ { type: core.DateAdapter }
853
+ ]; };
788
854
 
789
855
  /**
790
856
  * @license
@@ -1085,38 +1151,38 @@
1085
1151
  this._comparisonRangeStart = this._getCellCompareValue(this.comparisonStart);
1086
1152
  this._comparisonRangeEnd = this._getCellCompareValue(this.comparisonEnd);
1087
1153
  };
1088
- MatMonthView.decorators = [
1089
- { type: i0.Component, args: [{
1090
- selector: 'mat-month-view',
1091
- template: "<table class=\"mat-calendar-table\" role=\"presentation\">\n <thead class=\"mat-calendar-table-header\">\n <tr>\n <th scope=\"col\" *ngFor=\"let day of _weekdays\" [attr.aria-label]=\"day.long\">{{day.narrow}}</th>\n </tr>\n <tr><th class=\"mat-calendar-table-header-divider\" colspan=\"7\" aria-hidden=\"true\"></th></tr>\n </thead>\n <tbody mat-calendar-body\n [label]=\"_monthLabel\"\n [rows]=\"_weeks\"\n [todayValue]=\"_todayDate!\"\n [startValue]=\"_rangeStart!\"\n [endValue]=\"_rangeEnd!\"\n [comparisonStart]=\"_comparisonRangeStart\"\n [comparisonEnd]=\"_comparisonRangeEnd\"\n [previewStart]=\"_previewStart\"\n [previewEnd]=\"_previewEnd\"\n [isRange]=\"_isRange\"\n [labelMinRequiredCells]=\"3\"\n [activeCell]=\"_dateAdapter.getDate(activeDate) - 1\"\n (selectedValueChange)=\"_dateSelected($event)\"\n (previewChange)=\"_previewChanged($event)\"\n (keydown)=\"_handleCalendarBodyKeydown($event)\">\n </tbody>\n</table>\n",
1092
- exportAs: 'matMonthView',
1093
- encapsulation: i0.ViewEncapsulation.None,
1094
- changeDetection: i0.ChangeDetectionStrategy.OnPush
1095
- },] }
1096
- ];
1097
- MatMonthView.ctorParameters = function () { return [
1098
- { type: i0.ChangeDetectorRef },
1099
- { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [core.MAT_DATE_FORMATS,] }] },
1100
- { type: core.DateAdapter, decorators: [{ type: i0.Optional }] },
1101
- { type: bidi.Directionality, decorators: [{ type: i0.Optional }] },
1102
- { type: undefined, decorators: [{ type: i0.Inject, args: [MAT_DATE_RANGE_SELECTION_STRATEGY,] }, { type: i0.Optional }] }
1103
- ]; };
1104
- MatMonthView.propDecorators = {
1105
- activeDate: [{ type: i0.Input }],
1106
- selected: [{ type: i0.Input }],
1107
- minDate: [{ type: i0.Input }],
1108
- maxDate: [{ type: i0.Input }],
1109
- dateFilter: [{ type: i0.Input }],
1110
- dateClass: [{ type: i0.Input }],
1111
- comparisonStart: [{ type: i0.Input }],
1112
- comparisonEnd: [{ type: i0.Input }],
1113
- selectedChange: [{ type: i0.Output }],
1114
- _userSelection: [{ type: i0.Output }],
1115
- activeDateChange: [{ type: i0.Output }],
1116
- _matCalendarBody: [{ type: i0.ViewChild, args: [MatCalendarBody,] }]
1117
- };
1118
1154
  return MatMonthView;
1119
1155
  }());
1156
+ MatMonthView.decorators = [
1157
+ { type: i0.Component, args: [{
1158
+ selector: 'mat-month-view',
1159
+ template: "<table class=\"mat-calendar-table\" role=\"presentation\">\n <thead class=\"mat-calendar-table-header\">\n <tr>\n <th scope=\"col\" *ngFor=\"let day of _weekdays\" [attr.aria-label]=\"day.long\">{{day.narrow}}</th>\n </tr>\n <tr><th class=\"mat-calendar-table-header-divider\" colspan=\"7\" aria-hidden=\"true\"></th></tr>\n </thead>\n <tbody mat-calendar-body\n [label]=\"_monthLabel\"\n [rows]=\"_weeks\"\n [todayValue]=\"_todayDate!\"\n [startValue]=\"_rangeStart!\"\n [endValue]=\"_rangeEnd!\"\n [comparisonStart]=\"_comparisonRangeStart\"\n [comparisonEnd]=\"_comparisonRangeEnd\"\n [previewStart]=\"_previewStart\"\n [previewEnd]=\"_previewEnd\"\n [isRange]=\"_isRange\"\n [labelMinRequiredCells]=\"3\"\n [activeCell]=\"_dateAdapter.getDate(activeDate) - 1\"\n (selectedValueChange)=\"_dateSelected($event)\"\n (previewChange)=\"_previewChanged($event)\"\n (keydown)=\"_handleCalendarBodyKeydown($event)\">\n </tbody>\n</table>\n",
1160
+ exportAs: 'matMonthView',
1161
+ encapsulation: i0.ViewEncapsulation.None,
1162
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
1163
+ },] }
1164
+ ];
1165
+ MatMonthView.ctorParameters = function () { return [
1166
+ { type: i0.ChangeDetectorRef },
1167
+ { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [core.MAT_DATE_FORMATS,] }] },
1168
+ { type: core.DateAdapter, decorators: [{ type: i0.Optional }] },
1169
+ { type: bidi.Directionality, decorators: [{ type: i0.Optional }] },
1170
+ { type: undefined, decorators: [{ type: i0.Inject, args: [MAT_DATE_RANGE_SELECTION_STRATEGY,] }, { type: i0.Optional }] }
1171
+ ]; };
1172
+ MatMonthView.propDecorators = {
1173
+ activeDate: [{ type: i0.Input }],
1174
+ selected: [{ type: i0.Input }],
1175
+ minDate: [{ type: i0.Input }],
1176
+ maxDate: [{ type: i0.Input }],
1177
+ dateFilter: [{ type: i0.Input }],
1178
+ dateClass: [{ type: i0.Input }],
1179
+ comparisonStart: [{ type: i0.Input }],
1180
+ comparisonEnd: [{ type: i0.Input }],
1181
+ selectedChange: [{ type: i0.Output }],
1182
+ _userSelection: [{ type: i0.Output }],
1183
+ activeDateChange: [{ type: i0.Output }],
1184
+ _matCalendarBody: [{ type: i0.ViewChild, args: [MatCalendarBody,] }]
1185
+ };
1120
1186
 
1121
1187
  /**
1122
1188
  * @license
@@ -1336,33 +1402,33 @@
1336
1402
  this._selectedYear = this._dateAdapter.getYear(value);
1337
1403
  }
1338
1404
  };
1339
- MatMultiYearView.decorators = [
1340
- { type: i0.Component, args: [{
1341
- selector: 'mat-multi-year-view',
1342
- template: "<table class=\"mat-calendar-table\" role=\"presentation\">\n <thead class=\"mat-calendar-table-header\">\n <tr><th class=\"mat-calendar-table-header-divider\" colspan=\"4\"></th></tr>\n </thead>\n <tbody mat-calendar-body\n [rows]=\"_years\"\n [todayValue]=\"_todayYear\"\n [startValue]=\"_selectedYear!\"\n [endValue]=\"_selectedYear!\"\n [numCols]=\"4\"\n [cellAspectRatio]=\"4 / 7\"\n [activeCell]=\"_getActiveCell()\"\n (selectedValueChange)=\"_yearSelected($event)\"\n (keydown)=\"_handleCalendarBodyKeydown($event)\">\n </tbody>\n</table>\n",
1343
- exportAs: 'matMultiYearView',
1344
- encapsulation: i0.ViewEncapsulation.None,
1345
- changeDetection: i0.ChangeDetectionStrategy.OnPush
1346
- },] }
1347
- ];
1348
- MatMultiYearView.ctorParameters = function () { return [
1349
- { type: i0.ChangeDetectorRef },
1350
- { type: core.DateAdapter, decorators: [{ type: i0.Optional }] },
1351
- { type: bidi.Directionality, decorators: [{ type: i0.Optional }] }
1352
- ]; };
1353
- MatMultiYearView.propDecorators = {
1354
- activeDate: [{ type: i0.Input }],
1355
- selected: [{ type: i0.Input }],
1356
- minDate: [{ type: i0.Input }],
1357
- maxDate: [{ type: i0.Input }],
1358
- dateFilter: [{ type: i0.Input }],
1359
- selectedChange: [{ type: i0.Output }],
1360
- yearSelected: [{ type: i0.Output }],
1361
- activeDateChange: [{ type: i0.Output }],
1362
- _matCalendarBody: [{ type: i0.ViewChild, args: [MatCalendarBody,] }]
1363
- };
1364
1405
  return MatMultiYearView;
1365
1406
  }());
1407
+ MatMultiYearView.decorators = [
1408
+ { type: i0.Component, args: [{
1409
+ selector: 'mat-multi-year-view',
1410
+ template: "<table class=\"mat-calendar-table\" role=\"presentation\">\n <thead class=\"mat-calendar-table-header\">\n <tr><th class=\"mat-calendar-table-header-divider\" colspan=\"4\"></th></tr>\n </thead>\n <tbody mat-calendar-body\n [rows]=\"_years\"\n [todayValue]=\"_todayYear\"\n [startValue]=\"_selectedYear!\"\n [endValue]=\"_selectedYear!\"\n [numCols]=\"4\"\n [cellAspectRatio]=\"4 / 7\"\n [activeCell]=\"_getActiveCell()\"\n (selectedValueChange)=\"_yearSelected($event)\"\n (keydown)=\"_handleCalendarBodyKeydown($event)\">\n </tbody>\n</table>\n",
1411
+ exportAs: 'matMultiYearView',
1412
+ encapsulation: i0.ViewEncapsulation.None,
1413
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
1414
+ },] }
1415
+ ];
1416
+ MatMultiYearView.ctorParameters = function () { return [
1417
+ { type: i0.ChangeDetectorRef },
1418
+ { type: core.DateAdapter, decorators: [{ type: i0.Optional }] },
1419
+ { type: bidi.Directionality, decorators: [{ type: i0.Optional }] }
1420
+ ]; };
1421
+ MatMultiYearView.propDecorators = {
1422
+ activeDate: [{ type: i0.Input }],
1423
+ selected: [{ type: i0.Input }],
1424
+ minDate: [{ type: i0.Input }],
1425
+ maxDate: [{ type: i0.Input }],
1426
+ dateFilter: [{ type: i0.Input }],
1427
+ selectedChange: [{ type: i0.Output }],
1428
+ yearSelected: [{ type: i0.Output }],
1429
+ activeDateChange: [{ type: i0.Output }],
1430
+ _matCalendarBody: [{ type: i0.ViewChild, args: [MatCalendarBody,] }]
1431
+ };
1366
1432
  function isSameMultiYearView(dateAdapter, date1, date2, minDate, maxDate) {
1367
1433
  var year1 = dateAdapter.getYear(date1);
1368
1434
  var year2 = dateAdapter.getYear(date2);
@@ -1637,34 +1703,34 @@
1637
1703
  this._selectedMonth = this._getMonthInCurrentYear(value);
1638
1704
  }
1639
1705
  };
1640
- MatYearView.decorators = [
1641
- { type: i0.Component, args: [{
1642
- selector: 'mat-year-view',
1643
- template: "<table class=\"mat-calendar-table\" role=\"presentation\">\n <thead class=\"mat-calendar-table-header\">\n <tr><th class=\"mat-calendar-table-header-divider\" colspan=\"4\"></th></tr>\n </thead>\n <tbody mat-calendar-body\n [label]=\"_yearLabel\"\n [rows]=\"_months\"\n [todayValue]=\"_todayMonth!\"\n [startValue]=\"_selectedMonth!\"\n [endValue]=\"_selectedMonth!\"\n [labelMinRequiredCells]=\"2\"\n [numCols]=\"4\"\n [cellAspectRatio]=\"4 / 7\"\n [activeCell]=\"_dateAdapter.getMonth(activeDate)\"\n (selectedValueChange)=\"_monthSelected($event)\"\n (keydown)=\"_handleCalendarBodyKeydown($event)\">\n </tbody>\n</table>\n",
1644
- exportAs: 'matYearView',
1645
- encapsulation: i0.ViewEncapsulation.None,
1646
- changeDetection: i0.ChangeDetectionStrategy.OnPush
1647
- },] }
1648
- ];
1649
- MatYearView.ctorParameters = function () { return [
1650
- { type: i0.ChangeDetectorRef },
1651
- { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [core.MAT_DATE_FORMATS,] }] },
1652
- { type: core.DateAdapter, decorators: [{ type: i0.Optional }] },
1653
- { type: bidi.Directionality, decorators: [{ type: i0.Optional }] }
1654
- ]; };
1655
- MatYearView.propDecorators = {
1656
- activeDate: [{ type: i0.Input }],
1657
- selected: [{ type: i0.Input }],
1658
- minDate: [{ type: i0.Input }],
1659
- maxDate: [{ type: i0.Input }],
1660
- dateFilter: [{ type: i0.Input }],
1661
- selectedChange: [{ type: i0.Output }],
1662
- monthSelected: [{ type: i0.Output }],
1663
- activeDateChange: [{ type: i0.Output }],
1664
- _matCalendarBody: [{ type: i0.ViewChild, args: [MatCalendarBody,] }]
1665
- };
1666
1706
  return MatYearView;
1667
1707
  }());
1708
+ MatYearView.decorators = [
1709
+ { type: i0.Component, args: [{
1710
+ selector: 'mat-year-view',
1711
+ template: "<table class=\"mat-calendar-table\" role=\"presentation\">\n <thead class=\"mat-calendar-table-header\">\n <tr><th class=\"mat-calendar-table-header-divider\" colspan=\"4\"></th></tr>\n </thead>\n <tbody mat-calendar-body\n [label]=\"_yearLabel\"\n [rows]=\"_months\"\n [todayValue]=\"_todayMonth!\"\n [startValue]=\"_selectedMonth!\"\n [endValue]=\"_selectedMonth!\"\n [labelMinRequiredCells]=\"2\"\n [numCols]=\"4\"\n [cellAspectRatio]=\"4 / 7\"\n [activeCell]=\"_dateAdapter.getMonth(activeDate)\"\n (selectedValueChange)=\"_monthSelected($event)\"\n (keydown)=\"_handleCalendarBodyKeydown($event)\">\n </tbody>\n</table>\n",
1712
+ exportAs: 'matYearView',
1713
+ encapsulation: i0.ViewEncapsulation.None,
1714
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
1715
+ },] }
1716
+ ];
1717
+ MatYearView.ctorParameters = function () { return [
1718
+ { type: i0.ChangeDetectorRef },
1719
+ { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [core.MAT_DATE_FORMATS,] }] },
1720
+ { type: core.DateAdapter, decorators: [{ type: i0.Optional }] },
1721
+ { type: bidi.Directionality, decorators: [{ type: i0.Optional }] }
1722
+ ]; };
1723
+ MatYearView.propDecorators = {
1724
+ activeDate: [{ type: i0.Input }],
1725
+ selected: [{ type: i0.Input }],
1726
+ minDate: [{ type: i0.Input }],
1727
+ maxDate: [{ type: i0.Input }],
1728
+ dateFilter: [{ type: i0.Input }],
1729
+ selectedChange: [{ type: i0.Output }],
1730
+ monthSelected: [{ type: i0.Output }],
1731
+ activeDateChange: [{ type: i0.Output }],
1732
+ _matCalendarBody: [{ type: i0.ViewChild, args: [MatCalendarBody,] }]
1733
+ };
1668
1734
 
1669
1735
  /**
1670
1736
  * @license
@@ -1779,24 +1845,24 @@
1779
1845
  // Otherwise we are in 'multi-year' view.
1780
1846
  return isSameMultiYearView(this._dateAdapter, date1, date2, this.calendar.minDate, this.calendar.maxDate);
1781
1847
  };
1782
- MatCalendarHeader.decorators = [
1783
- { type: i0.Component, args: [{
1784
- selector: 'mat-calendar-header',
1785
- template: "<div class=\"mat-calendar-header\">\n <div class=\"mat-calendar-controls\">\n <button mat-button type=\"button\" class=\"mat-calendar-period-button\"\n (click)=\"currentPeriodClicked()\" [attr.aria-label]=\"periodButtonLabel\"\n cdkAriaLive=\"polite\">\n {{periodButtonText}}\n <div class=\"mat-calendar-arrow\"\n [class.mat-calendar-invert]=\"calendar.currentView != 'month'\"></div>\n </button>\n\n <div class=\"mat-calendar-spacer\"></div>\n\n <ng-content></ng-content>\n\n <button mat-icon-button type=\"button\" class=\"mat-calendar-previous-button\"\n [disabled]=\"!previousEnabled()\" (click)=\"previousClicked()\"\n [attr.aria-label]=\"prevButtonLabel\">\n </button>\n\n <button mat-icon-button type=\"button\" class=\"mat-calendar-next-button\"\n [disabled]=\"!nextEnabled()\" (click)=\"nextClicked()\"\n [attr.aria-label]=\"nextButtonLabel\">\n </button>\n </div>\n</div>\n",
1786
- exportAs: 'matCalendarHeader',
1787
- encapsulation: i0.ViewEncapsulation.None,
1788
- changeDetection: i0.ChangeDetectionStrategy.OnPush
1789
- },] }
1790
- ];
1791
- MatCalendarHeader.ctorParameters = function () { return [
1792
- { type: MatDatepickerIntl },
1793
- { type: MatCalendar, decorators: [{ type: i0.Inject, args: [i0.forwardRef(function () { return MatCalendar; }),] }] },
1794
- { type: core.DateAdapter, decorators: [{ type: i0.Optional }] },
1795
- { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [core.MAT_DATE_FORMATS,] }] },
1796
- { type: i0.ChangeDetectorRef }
1797
- ]; };
1798
1848
  return MatCalendarHeader;
1799
1849
  }());
1850
+ MatCalendarHeader.decorators = [
1851
+ { type: i0.Component, args: [{
1852
+ selector: 'mat-calendar-header',
1853
+ template: "<div class=\"mat-calendar-header\">\n <div class=\"mat-calendar-controls\">\n <button mat-button type=\"button\" class=\"mat-calendar-period-button\"\n (click)=\"currentPeriodClicked()\" [attr.aria-label]=\"periodButtonLabel\"\n cdkAriaLive=\"polite\">\n {{periodButtonText}}\n <div class=\"mat-calendar-arrow\"\n [class.mat-calendar-invert]=\"calendar.currentView != 'month'\"></div>\n </button>\n\n <div class=\"mat-calendar-spacer\"></div>\n\n <ng-content></ng-content>\n\n <button mat-icon-button type=\"button\" class=\"mat-calendar-previous-button\"\n [disabled]=\"!previousEnabled()\" (click)=\"previousClicked()\"\n [attr.aria-label]=\"prevButtonLabel\">\n </button>\n\n <button mat-icon-button type=\"button\" class=\"mat-calendar-next-button\"\n [disabled]=\"!nextEnabled()\" (click)=\"nextClicked()\"\n [attr.aria-label]=\"nextButtonLabel\">\n </button>\n </div>\n</div>\n",
1854
+ exportAs: 'matCalendarHeader',
1855
+ encapsulation: i0.ViewEncapsulation.None,
1856
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
1857
+ },] }
1858
+ ];
1859
+ MatCalendarHeader.ctorParameters = function () { return [
1860
+ { type: MatDatepickerIntl },
1861
+ { type: MatCalendar, decorators: [{ type: i0.Inject, args: [i0.forwardRef(function () { return MatCalendar; }),] }] },
1862
+ { type: core.DateAdapter, decorators: [{ type: i0.Optional }] },
1863
+ { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [core.MAT_DATE_FORMATS,] }] },
1864
+ { type: i0.ChangeDetectorRef }
1865
+ ]; };
1800
1866
  /**
1801
1867
  * A calendar that is used as part of the datepicker.
1802
1868
  * @docs-private
@@ -1995,47 +2061,47 @@
1995
2061
  MatCalendar.prototype._getCurrentViewComponent = function () {
1996
2062
  return this.monthView || this.yearView || this.multiYearView;
1997
2063
  };
1998
- MatCalendar.decorators = [
1999
- { type: i0.Component, args: [{
2000
- selector: 'mat-calendar',
2001
- template: "<ng-template [cdkPortalOutlet]=\"_calendarHeaderPortal\"></ng-template>\n\n<div class=\"mat-calendar-content\" [ngSwitch]=\"currentView\" cdkMonitorSubtreeFocus tabindex=\"-1\">\n <mat-month-view\n *ngSwitchCase=\"'month'\"\n [(activeDate)]=\"activeDate\"\n [selected]=\"selected\"\n [dateFilter]=\"dateFilter\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [dateClass]=\"dateClass\"\n [comparisonStart]=\"comparisonStart\"\n [comparisonEnd]=\"comparisonEnd\"\n (_userSelection)=\"_dateSelected($event)\">\n </mat-month-view>\n\n <mat-year-view\n *ngSwitchCase=\"'year'\"\n [(activeDate)]=\"activeDate\"\n [selected]=\"selected\"\n [dateFilter]=\"dateFilter\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n (monthSelected)=\"_monthSelectedInYearView($event)\"\n (selectedChange)=\"_goToDateInView($event, 'month')\">\n </mat-year-view>\n\n <mat-multi-year-view\n *ngSwitchCase=\"'multi-year'\"\n [(activeDate)]=\"activeDate\"\n [selected]=\"selected\"\n [dateFilter]=\"dateFilter\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n (yearSelected)=\"_yearSelectedInMultiYearView($event)\"\n (selectedChange)=\"_goToDateInView($event, 'year')\">\n </mat-multi-year-view>\n</div>\n",
2002
- host: {
2003
- 'class': 'mat-calendar',
2004
- },
2005
- exportAs: 'matCalendar',
2006
- encapsulation: i0.ViewEncapsulation.None,
2007
- changeDetection: i0.ChangeDetectionStrategy.OnPush,
2008
- providers: [MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER],
2009
- styles: [".mat-calendar{display:block}.mat-calendar-header{padding:8px 8px 0 8px}.mat-calendar-content{padding:0 8px 8px 8px;outline:none}.mat-calendar-controls{display:flex;margin:5% calc(33% / 7 - 16px)}.mat-calendar-controls .mat-icon-button:hover .mat-button-focus-overlay{opacity:.04}.mat-calendar-spacer{flex:1 1 auto}.mat-calendar-period-button{min-width:0}.mat-calendar-arrow{display:inline-block;width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top-width:5px;border-top-style:solid;margin:0 0 0 5px;vertical-align:middle}.mat-calendar-arrow.mat-calendar-invert{transform:rotate(180deg)}[dir=rtl] .mat-calendar-arrow{margin:0 5px 0 0}.mat-calendar-previous-button,.mat-calendar-next-button{position:relative}.mat-calendar-previous-button::after,.mat-calendar-next-button::after{top:0;left:0;right:0;bottom:0;position:absolute;content:\"\";margin:15.5px;border:0 solid currentColor;border-top-width:2px}[dir=rtl] .mat-calendar-previous-button,[dir=rtl] .mat-calendar-next-button{transform:rotate(180deg)}.mat-calendar-previous-button::after{border-left-width:2px;transform:translateX(2px) rotate(-45deg)}.mat-calendar-next-button::after{border-right-width:2px;transform:translateX(-2px) rotate(45deg)}.mat-calendar-table{border-spacing:0;border-collapse:collapse;width:100%}.mat-calendar-table-header th{text-align:center;padding:0 0 8px 0}.mat-calendar-table-header-divider{position:relative;height:1px}.mat-calendar-table-header-divider::after{content:\"\";position:absolute;top:0;left:-8px;right:-8px;height:1px}\n"]
2010
- },] }
2011
- ];
2012
- MatCalendar.ctorParameters = function () { return [
2013
- { type: MatDatepickerIntl },
2014
- { type: core.DateAdapter, decorators: [{ type: i0.Optional }] },
2015
- { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [core.MAT_DATE_FORMATS,] }] },
2016
- { type: i0.ChangeDetectorRef }
2017
- ]; };
2018
- MatCalendar.propDecorators = {
2019
- headerComponent: [{ type: i0.Input }],
2020
- startAt: [{ type: i0.Input }],
2021
- startView: [{ type: i0.Input }],
2022
- selected: [{ type: i0.Input }],
2023
- minDate: [{ type: i0.Input }],
2024
- maxDate: [{ type: i0.Input }],
2025
- dateFilter: [{ type: i0.Input }],
2026
- dateClass: [{ type: i0.Input }],
2027
- comparisonStart: [{ type: i0.Input }],
2028
- comparisonEnd: [{ type: i0.Input }],
2029
- selectedChange: [{ type: i0.Output }],
2030
- yearSelected: [{ type: i0.Output }],
2031
- monthSelected: [{ type: i0.Output }],
2032
- _userSelection: [{ type: i0.Output }],
2033
- monthView: [{ type: i0.ViewChild, args: [MatMonthView,] }],
2034
- yearView: [{ type: i0.ViewChild, args: [MatYearView,] }],
2035
- multiYearView: [{ type: i0.ViewChild, args: [MatMultiYearView,] }]
2036
- };
2037
2064
  return MatCalendar;
2038
2065
  }());
2066
+ MatCalendar.decorators = [
2067
+ { type: i0.Component, args: [{
2068
+ selector: 'mat-calendar',
2069
+ template: "<ng-template [cdkPortalOutlet]=\"_calendarHeaderPortal\"></ng-template>\n\n<div class=\"mat-calendar-content\" [ngSwitch]=\"currentView\" cdkMonitorSubtreeFocus tabindex=\"-1\">\n <mat-month-view\n *ngSwitchCase=\"'month'\"\n [(activeDate)]=\"activeDate\"\n [selected]=\"selected\"\n [dateFilter]=\"dateFilter\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [dateClass]=\"dateClass\"\n [comparisonStart]=\"comparisonStart\"\n [comparisonEnd]=\"comparisonEnd\"\n (_userSelection)=\"_dateSelected($event)\">\n </mat-month-view>\n\n <mat-year-view\n *ngSwitchCase=\"'year'\"\n [(activeDate)]=\"activeDate\"\n [selected]=\"selected\"\n [dateFilter]=\"dateFilter\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n (monthSelected)=\"_monthSelectedInYearView($event)\"\n (selectedChange)=\"_goToDateInView($event, 'month')\">\n </mat-year-view>\n\n <mat-multi-year-view\n *ngSwitchCase=\"'multi-year'\"\n [(activeDate)]=\"activeDate\"\n [selected]=\"selected\"\n [dateFilter]=\"dateFilter\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n (yearSelected)=\"_yearSelectedInMultiYearView($event)\"\n (selectedChange)=\"_goToDateInView($event, 'year')\">\n </mat-multi-year-view>\n</div>\n",
2070
+ host: {
2071
+ 'class': 'mat-calendar',
2072
+ },
2073
+ exportAs: 'matCalendar',
2074
+ encapsulation: i0.ViewEncapsulation.None,
2075
+ changeDetection: i0.ChangeDetectionStrategy.OnPush,
2076
+ providers: [MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER],
2077
+ styles: [".mat-calendar{display:block}.mat-calendar-header{padding:8px 8px 0 8px}.mat-calendar-content{padding:0 8px 8px 8px;outline:none}.mat-calendar-controls{display:flex;margin:5% calc(33% / 7 - 16px)}.mat-calendar-controls .mat-icon-button:hover .mat-button-focus-overlay{opacity:.04}.mat-calendar-spacer{flex:1 1 auto}.mat-calendar-period-button{min-width:0}.mat-calendar-arrow{display:inline-block;width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top-width:5px;border-top-style:solid;margin:0 0 0 5px;vertical-align:middle}.mat-calendar-arrow.mat-calendar-invert{transform:rotate(180deg)}[dir=rtl] .mat-calendar-arrow{margin:0 5px 0 0}.mat-calendar-previous-button,.mat-calendar-next-button{position:relative}.mat-calendar-previous-button::after,.mat-calendar-next-button::after{top:0;left:0;right:0;bottom:0;position:absolute;content:\"\";margin:15.5px;border:0 solid currentColor;border-top-width:2px}[dir=rtl] .mat-calendar-previous-button,[dir=rtl] .mat-calendar-next-button{transform:rotate(180deg)}.mat-calendar-previous-button::after{border-left-width:2px;transform:translateX(2px) rotate(-45deg)}.mat-calendar-next-button::after{border-right-width:2px;transform:translateX(-2px) rotate(45deg)}.mat-calendar-table{border-spacing:0;border-collapse:collapse;width:100%}.mat-calendar-table-header th{text-align:center;padding:0 0 8px 0}.mat-calendar-table-header-divider{position:relative;height:1px}.mat-calendar-table-header-divider::after{content:\"\";position:absolute;top:0;left:-8px;right:-8px;height:1px}\n"]
2078
+ },] }
2079
+ ];
2080
+ MatCalendar.ctorParameters = function () { return [
2081
+ { type: MatDatepickerIntl },
2082
+ { type: core.DateAdapter, decorators: [{ type: i0.Optional }] },
2083
+ { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [core.MAT_DATE_FORMATS,] }] },
2084
+ { type: i0.ChangeDetectorRef }
2085
+ ]; };
2086
+ MatCalendar.propDecorators = {
2087
+ headerComponent: [{ type: i0.Input }],
2088
+ startAt: [{ type: i0.Input }],
2089
+ startView: [{ type: i0.Input }],
2090
+ selected: [{ type: i0.Input }],
2091
+ minDate: [{ type: i0.Input }],
2092
+ maxDate: [{ type: i0.Input }],
2093
+ dateFilter: [{ type: i0.Input }],
2094
+ dateClass: [{ type: i0.Input }],
2095
+ comparisonStart: [{ type: i0.Input }],
2096
+ comparisonEnd: [{ type: i0.Input }],
2097
+ selectedChange: [{ type: i0.Output }],
2098
+ yearSelected: [{ type: i0.Output }],
2099
+ monthSelected: [{ type: i0.Output }],
2100
+ _userSelection: [{ type: i0.Output }],
2101
+ monthView: [{ type: i0.ViewChild, args: [MatMonthView,] }],
2102
+ yearView: [{ type: i0.ViewChild, args: [MatYearView,] }],
2103
+ multiYearView: [{ type: i0.ViewChild, args: [MatMultiYearView,] }]
2104
+ };
2039
2105
 
2040
2106
  /**
2041
2107
  * @license
@@ -2071,13 +2137,6 @@
2071
2137
  ])
2072
2138
  };
2073
2139
 
2074
- /**
2075
- * @license
2076
- * Copyright Google LLC All Rights Reserved.
2077
- *
2078
- * Use of this source code is governed by an MIT-style license that can be
2079
- * found in the LICENSE file at https://angular.io/license
2080
- */
2081
2140
  /** Used to generate a unique ID for each datepicker instance. */
2082
2141
  var datepickerUid = 0;
2083
2142
  /** Injection token that determines the scroll handling while the calendar is open. */
@@ -2122,6 +2181,7 @@
2122
2181
  _this._model = _model;
2123
2182
  _this._dateAdapter = _dateAdapter;
2124
2183
  _this._rangeSelectionStrategy = _rangeSelectionStrategy;
2184
+ _this._subscriptions = new rxjs.Subscription();
2125
2185
  /** Current state of the animation. */
2126
2186
  _this._animationState = 'enter';
2127
2187
  /** Emits when an animation has finished. */
@@ -2129,9 +2189,17 @@
2129
2189
  return _this;
2130
2190
  }
2131
2191
  MatDatepickerContent.prototype.ngAfterViewInit = function () {
2192
+ var _this = this;
2193
+ // @breaking-change 11.0.0 Remove null check for `_changeDetectorRef.
2194
+ if (this._changeDetectorRef) {
2195
+ this._subscriptions.add(this.datepicker._stateChanges.subscribe(function () {
2196
+ _this._changeDetectorRef.markForCheck();
2197
+ }));
2198
+ }
2132
2199
  this._calendar.focusActiveCell();
2133
2200
  };
2134
2201
  MatDatepickerContent.prototype.ngOnDestroy = function () {
2202
+ this._subscriptions.unsubscribe();
2135
2203
  this._animationDone.complete();
2136
2204
  };
2137
2205
  MatDatepickerContent.prototype._handleUserSelection = function (event) {
@@ -2170,39 +2238,39 @@
2170
2238
  // @breaking-change 11.0.0 Remove null check for `_model`.
2171
2239
  return this._model ? this._model.selection : null;
2172
2240
  };
2173
- MatDatepickerContent.decorators = [
2174
- { type: i0.Component, args: [{
2175
- selector: 'mat-datepicker-content',
2176
- template: "<mat-calendar cdkTrapFocus\n [id]=\"datepicker.id\"\n [ngClass]=\"datepicker.panelClass\"\n [startAt]=\"datepicker.startAt\"\n [startView]=\"datepicker.startView\"\n [minDate]=\"datepicker._minDate\"\n [maxDate]=\"datepicker._maxDate\"\n [dateFilter]=\"datepicker._dateFilter\"\n [headerComponent]=\"datepicker.calendarHeaderComponent\"\n [selected]=\"_getSelected()\"\n [dateClass]=\"datepicker.dateClass\"\n [comparisonStart]=\"comparisonStart\"\n [comparisonEnd]=\"comparisonEnd\"\n [@fadeInCalendar]=\"'enter'\"\n (yearSelected)=\"datepicker._selectYear($event)\"\n (monthSelected)=\"datepicker._selectMonth($event)\"\n (_userSelection)=\"_handleUserSelection($event)\">\n</mat-calendar>\n",
2177
- host: {
2178
- 'class': 'mat-datepicker-content',
2179
- '[@transformPanel]': '_animationState',
2180
- '(@transformPanel.done)': '_animationDone.next()',
2181
- '[class.mat-datepicker-content-touch]': 'datepicker.touchUi',
2182
- },
2183
- animations: [
2184
- matDatepickerAnimations.transformPanel,
2185
- matDatepickerAnimations.fadeInCalendar,
2186
- ],
2187
- exportAs: 'matDatepickerContent',
2188
- encapsulation: i0.ViewEncapsulation.None,
2189
- changeDetection: i0.ChangeDetectionStrategy.OnPush,
2190
- inputs: ['color'],
2191
- styles: [".mat-datepicker-content{display:block;border-radius:4px}.mat-datepicker-content .mat-calendar{width:296px;height:354px}.mat-datepicker-content-touch{display:block;max-height:80vh;overflow:auto;margin:-24px}.mat-datepicker-content-touch .mat-calendar{min-width:250px;min-height:312px;max-width:750px;max-height:788px}@media all and (orientation: landscape){.mat-datepicker-content-touch .mat-calendar{width:64vh;height:80vh}}@media all and (orientation: portrait){.mat-datepicker-content-touch .mat-calendar{width:80vw;height:100vw}}\n"]
2192
- },] }
2193
- ];
2194
- MatDatepickerContent.ctorParameters = function () { return [
2195
- { type: i0.ElementRef },
2196
- { type: i0.ChangeDetectorRef },
2197
- { type: MatDateSelectionModel },
2198
- { type: core.DateAdapter },
2199
- { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [MAT_DATE_RANGE_SELECTION_STRATEGY,] }] }
2200
- ]; };
2201
- MatDatepickerContent.propDecorators = {
2202
- _calendar: [{ type: i0.ViewChild, args: [MatCalendar,] }]
2203
- };
2204
2241
  return MatDatepickerContent;
2205
2242
  }(_MatDatepickerContentMixinBase));
2243
+ MatDatepickerContent.decorators = [
2244
+ { type: i0.Component, args: [{
2245
+ selector: 'mat-datepicker-content',
2246
+ template: "<mat-calendar cdkTrapFocus\n [id]=\"datepicker.id\"\n [ngClass]=\"datepicker.panelClass\"\n [startAt]=\"datepicker.startAt\"\n [startView]=\"datepicker.startView\"\n [minDate]=\"datepicker._getMinDate()\"\n [maxDate]=\"datepicker._getMaxDate()\"\n [dateFilter]=\"datepicker._getDateFilter()\"\n [headerComponent]=\"datepicker.calendarHeaderComponent\"\n [selected]=\"_getSelected()\"\n [dateClass]=\"datepicker.dateClass\"\n [comparisonStart]=\"comparisonStart\"\n [comparisonEnd]=\"comparisonEnd\"\n [@fadeInCalendar]=\"'enter'\"\n (yearSelected)=\"datepicker._selectYear($event)\"\n (monthSelected)=\"datepicker._selectMonth($event)\"\n (_userSelection)=\"_handleUserSelection($event)\">\n</mat-calendar>\n",
2247
+ host: {
2248
+ 'class': 'mat-datepicker-content',
2249
+ '[@transformPanel]': '_animationState',
2250
+ '(@transformPanel.done)': '_animationDone.next()',
2251
+ '[class.mat-datepicker-content-touch]': 'datepicker.touchUi',
2252
+ },
2253
+ animations: [
2254
+ matDatepickerAnimations.transformPanel,
2255
+ matDatepickerAnimations.fadeInCalendar,
2256
+ ],
2257
+ exportAs: 'matDatepickerContent',
2258
+ encapsulation: i0.ViewEncapsulation.None,
2259
+ changeDetection: i0.ChangeDetectionStrategy.OnPush,
2260
+ inputs: ['color'],
2261
+ styles: [".mat-datepicker-content{display:block;border-radius:4px}.mat-datepicker-content .mat-calendar{width:296px;height:354px}.mat-datepicker-content-touch{display:block;max-height:80vh;overflow:auto;margin:-24px}.mat-datepicker-content-touch .mat-calendar{min-width:250px;min-height:312px;max-width:750px;max-height:788px}@media all and (orientation: landscape){.mat-datepicker-content-touch .mat-calendar{width:64vh;height:80vh}}@media all and (orientation: portrait){.mat-datepicker-content-touch .mat-calendar{width:80vw;height:100vw}}\n"]
2262
+ },] }
2263
+ ];
2264
+ MatDatepickerContent.ctorParameters = function () { return [
2265
+ { type: i0.ElementRef },
2266
+ { type: i0.ChangeDetectorRef },
2267
+ { type: MatDateSelectionModel },
2268
+ { type: core.DateAdapter },
2269
+ { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [MAT_DATE_RANGE_SELECTION_STRATEGY,] }] }
2270
+ ]; };
2271
+ MatDatepickerContent.propDecorators = {
2272
+ _calendar: [{ type: i0.ViewChild, args: [MatCalendar,] }]
2273
+ };
2206
2274
  /** Base class for a datepicker. */
2207
2275
  var MatDatepickerBase = /** @class */ (function () {
2208
2276
  function MatDatepickerBase(_dialog, _overlay, _ngZone, _viewContainerRef, scrollStrategy, _dateAdapter, _dir, _document, _model) {
@@ -2214,6 +2282,7 @@
2214
2282
  this._dir = _dir;
2215
2283
  this._document = _document;
2216
2284
  this._model = _model;
2285
+ this._inputStateChanges = rxjs.Subscription.EMPTY;
2217
2286
  /** The view that the calendar should start in. */
2218
2287
  this.startView = 'month';
2219
2288
  this._touchUi = false;
@@ -2240,8 +2309,8 @@
2240
2309
  this.id = "mat-datepicker-" + datepickerUid++;
2241
2310
  /** The element that was focused before the datepicker was opened. */
2242
2311
  this._focusedElementBeforeOpen = null;
2243
- /** Emits when the datepicker is disabled. */
2244
- this._disabledChange = new rxjs.Subject();
2312
+ /** Emits when the datepicker's state changes. */
2313
+ this._stateChanges = new rxjs.Subject();
2245
2314
  if (!this._dateAdapter) {
2246
2315
  throw createMissingDateImplError('DateAdapter');
2247
2316
  }
@@ -2294,7 +2363,7 @@
2294
2363
  var newValue = coercion.coerceBooleanProperty(value);
2295
2364
  if (newValue !== this._disabled) {
2296
2365
  this._disabled = newValue;
2297
- this._disabledChange.next(newValue);
2366
+ this._stateChanges.next(undefined);
2298
2367
  }
2299
2368
  },
2300
2369
  enumerable: false,
@@ -2307,29 +2376,17 @@
2307
2376
  enumerable: false,
2308
2377
  configurable: true
2309
2378
  });
2310
- Object.defineProperty(MatDatepickerBase.prototype, "_minDate", {
2311
- /** The minimum selectable date. */
2312
- get: function () {
2313
- return this._datepickerInput && this._datepickerInput.min;
2314
- },
2315
- enumerable: false,
2316
- configurable: true
2317
- });
2318
- Object.defineProperty(MatDatepickerBase.prototype, "_maxDate", {
2319
- /** The maximum selectable date. */
2320
- get: function () {
2321
- return this._datepickerInput && this._datepickerInput.max;
2322
- },
2323
- enumerable: false,
2324
- configurable: true
2325
- });
2326
- Object.defineProperty(MatDatepickerBase.prototype, "_dateFilter", {
2327
- get: function () {
2328
- return this._datepickerInput && this._datepickerInput.dateFilter;
2329
- },
2330
- enumerable: false,
2331
- configurable: true
2332
- });
2379
+ /** The minimum selectable date. */
2380
+ MatDatepickerBase.prototype._getMinDate = function () {
2381
+ return this._datepickerInput && this._datepickerInput.min;
2382
+ };
2383
+ /** The maximum selectable date. */
2384
+ MatDatepickerBase.prototype._getMaxDate = function () {
2385
+ return this._datepickerInput && this._datepickerInput.max;
2386
+ };
2387
+ MatDatepickerBase.prototype._getDateFilter = function () {
2388
+ return this._datepickerInput && this._datepickerInput.dateFilter;
2389
+ };
2333
2390
  MatDatepickerBase.prototype.ngOnChanges = function (changes) {
2334
2391
  var positionChange = changes['xPosition'] || changes['yPosition'];
2335
2392
  if (positionChange && !positionChange.firstChange && this._popupRef) {
@@ -2338,11 +2395,13 @@
2338
2395
  this._popupRef.updatePosition();
2339
2396
  }
2340
2397
  }
2398
+ this._stateChanges.next(undefined);
2341
2399
  };
2342
2400
  MatDatepickerBase.prototype.ngOnDestroy = function () {
2343
2401
  this._destroyPopup();
2344
2402
  this.close();
2345
- this._disabledChange.complete();
2403
+ this._inputStateChanges.unsubscribe();
2404
+ this._stateChanges.complete();
2346
2405
  };
2347
2406
  /** Selects the given date */
2348
2407
  MatDatepickerBase.prototype.select = function (date) {
@@ -2362,10 +2421,14 @@
2362
2421
  * @returns Selection model that the input should hook itself up to.
2363
2422
  */
2364
2423
  MatDatepickerBase.prototype._registerInput = function (input) {
2424
+ var _this = this;
2365
2425
  if (this._datepickerInput) {
2366
2426
  throw Error('A MatDatepicker can only be associated with a single input.');
2367
2427
  }
2428
+ this._inputStateChanges.unsubscribe();
2368
2429
  this._datepickerInput = input;
2430
+ this._inputStateChanges =
2431
+ input._stateChanges.subscribe(function () { return _this._stateChanges.next(undefined); });
2369
2432
  return this._model;
2370
2433
  };
2371
2434
  /** Open the calendar. */
@@ -2553,47 +2616,40 @@
2553
2616
  MatDatepickerBase.prototype._getValidDateOrNull = function (obj) {
2554
2617
  return (this._dateAdapter.isDateInstance(obj) && this._dateAdapter.isValid(obj)) ? obj : null;
2555
2618
  };
2556
- MatDatepickerBase.decorators = [
2557
- { type: i0.Directive }
2558
- ];
2559
- MatDatepickerBase.ctorParameters = function () { return [
2560
- { type: dialog.MatDialog },
2561
- { type: overlay.Overlay },
2562
- { type: i0.NgZone },
2563
- { type: i0.ViewContainerRef },
2564
- { type: undefined, decorators: [{ type: i0.Inject, args: [MAT_DATEPICKER_SCROLL_STRATEGY,] }] },
2565
- { type: core.DateAdapter, decorators: [{ type: i0.Optional }] },
2566
- { type: bidi.Directionality, decorators: [{ type: i0.Optional }] },
2567
- { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [common.DOCUMENT,] }] },
2568
- { type: MatDateSelectionModel }
2569
- ]; };
2570
- MatDatepickerBase.propDecorators = {
2571
- calendarHeaderComponent: [{ type: i0.Input }],
2572
- startAt: [{ type: i0.Input }],
2573
- startView: [{ type: i0.Input }],
2574
- color: [{ type: i0.Input }],
2575
- touchUi: [{ type: i0.Input }],
2576
- disabled: [{ type: i0.Input }],
2577
- xPosition: [{ type: i0.Input }],
2578
- yPosition: [{ type: i0.Input }],
2579
- yearSelected: [{ type: i0.Output }],
2580
- monthSelected: [{ type: i0.Output }],
2581
- panelClass: [{ type: i0.Input }],
2582
- dateClass: [{ type: i0.Input }],
2583
- openedStream: [{ type: i0.Output, args: ['opened',] }],
2584
- closedStream: [{ type: i0.Output, args: ['closed',] }],
2585
- opened: [{ type: i0.Input }]
2586
- };
2587
2619
  return MatDatepickerBase;
2588
2620
  }());
2621
+ MatDatepickerBase.decorators = [
2622
+ { type: i0.Directive }
2623
+ ];
2624
+ MatDatepickerBase.ctorParameters = function () { return [
2625
+ { type: dialog.MatDialog },
2626
+ { type: overlay.Overlay },
2627
+ { type: i0.NgZone },
2628
+ { type: i0.ViewContainerRef },
2629
+ { type: undefined, decorators: [{ type: i0.Inject, args: [MAT_DATEPICKER_SCROLL_STRATEGY,] }] },
2630
+ { type: core.DateAdapter, decorators: [{ type: i0.Optional }] },
2631
+ { type: bidi.Directionality, decorators: [{ type: i0.Optional }] },
2632
+ { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [common.DOCUMENT,] }] },
2633
+ { type: MatDateSelectionModel }
2634
+ ]; };
2635
+ MatDatepickerBase.propDecorators = {
2636
+ calendarHeaderComponent: [{ type: i0.Input }],
2637
+ startAt: [{ type: i0.Input }],
2638
+ startView: [{ type: i0.Input }],
2639
+ color: [{ type: i0.Input }],
2640
+ touchUi: [{ type: i0.Input }],
2641
+ disabled: [{ type: i0.Input }],
2642
+ xPosition: [{ type: i0.Input }],
2643
+ yPosition: [{ type: i0.Input }],
2644
+ yearSelected: [{ type: i0.Output }],
2645
+ monthSelected: [{ type: i0.Output }],
2646
+ panelClass: [{ type: i0.Input }],
2647
+ dateClass: [{ type: i0.Input }],
2648
+ openedStream: [{ type: i0.Output, args: ['opened',] }],
2649
+ closedStream: [{ type: i0.Output, args: ['closed',] }],
2650
+ opened: [{ type: i0.Input }]
2651
+ };
2589
2652
 
2590
- /**
2591
- * @license
2592
- * Copyright Google LLC All Rights Reserved.
2593
- *
2594
- * Use of this source code is governed by an MIT-style license that can be
2595
- * found in the LICENSE file at https://angular.io/license
2596
- */
2597
2653
  // TODO(mmalerba): We use a component instead of a directive here so the user can use implicit
2598
2654
  // template reference variables (e.g. #d vs #d="matDatepicker"). We can change this to a directive
2599
2655
  // if angular adds support for `exportAs: '$implicit'` on directives.
@@ -2603,18 +2659,18 @@
2603
2659
  function MatDatepicker() {
2604
2660
  return _super !== null && _super.apply(this, arguments) || this;
2605
2661
  }
2606
- MatDatepicker.decorators = [
2607
- { type: i0.Component, args: [{
2608
- selector: 'mat-datepicker',
2609
- template: '',
2610
- exportAs: 'matDatepicker',
2611
- changeDetection: i0.ChangeDetectionStrategy.OnPush,
2612
- encapsulation: i0.ViewEncapsulation.None,
2613
- providers: [MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER]
2614
- },] }
2615
- ];
2616
2662
  return MatDatepicker;
2617
2663
  }(MatDatepickerBase));
2664
+ MatDatepicker.decorators = [
2665
+ { type: i0.Component, args: [{
2666
+ selector: 'mat-datepicker',
2667
+ template: '',
2668
+ exportAs: 'matDatepicker',
2669
+ changeDetection: i0.ChangeDetectionStrategy.OnPush,
2670
+ encapsulation: i0.ViewEncapsulation.None,
2671
+ providers: [MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER]
2672
+ },] }
2673
+ ];
2618
2674
 
2619
2675
  /**
2620
2676
  * @license
@@ -2653,8 +2709,8 @@
2653
2709
  this.dateInput = new i0.EventEmitter();
2654
2710
  /** Emits when the value changes (either due to user input or programmatic change). */
2655
2711
  this._valueChange = new i0.EventEmitter();
2656
- /** Emits when the disabled state has changed */
2657
- this._disabledChange = new i0.EventEmitter();
2712
+ /** Emits when the internal state has changed */
2713
+ this._stateChanges = new rxjs.Subject();
2658
2714
  this._onTouched = function () { };
2659
2715
  this._validatorOnChange = function () { };
2660
2716
  this._cvaOnChange = function () { };
@@ -2728,7 +2784,7 @@
2728
2784
  var element = this._elementRef.nativeElement;
2729
2785
  if (this._disabled !== newValue) {
2730
2786
  this._disabled = newValue;
2731
- this._disabledChange.emit(newValue);
2787
+ this._stateChanges.next(undefined);
2732
2788
  }
2733
2789
  // We need to null check the `blur` method, because it's undefined during SSR.
2734
2790
  // In Ivy static bindings are invoked earlier, before the element is attached to the DOM.
@@ -2763,8 +2819,13 @@
2763
2819
  _this._cvaOnChange(value);
2764
2820
  _this._onTouched();
2765
2821
  _this._formatValue(value);
2766
- _this.dateInput.emit(new MatDatepickerInputEvent(_this, _this._elementRef.nativeElement));
2767
- _this.dateChange.emit(new MatDatepickerInputEvent(_this, _this._elementRef.nativeElement));
2822
+ // Note that we can't wrap the entire block with this logic, because for the range inputs
2823
+ // we want to revalidate whenever either one of the inputs changes and we don't have a
2824
+ // good way of distinguishing it at the moment.
2825
+ if (_this._canEmitChangeEvent(event)) {
2826
+ _this.dateInput.emit(new MatDatepickerInputEvent(_this, _this._elementRef.nativeElement));
2827
+ _this.dateChange.emit(new MatDatepickerInputEvent(_this, _this._elementRef.nativeElement));
2828
+ }
2768
2829
  if (_this._outsideValueChanged) {
2769
2830
  _this._outsideValueChanged();
2770
2831
  }
@@ -2774,11 +2835,14 @@
2774
2835
  MatDatepickerInputBase.prototype.ngAfterViewInit = function () {
2775
2836
  this._isInitialized = true;
2776
2837
  };
2838
+ MatDatepickerInputBase.prototype.ngOnChanges = function () {
2839
+ this._stateChanges.next(undefined);
2840
+ };
2777
2841
  MatDatepickerInputBase.prototype.ngOnDestroy = function () {
2778
2842
  this._valueChangesSubscription.unsubscribe();
2779
2843
  this._localeSubscription.unsubscribe();
2780
2844
  this._valueChange.complete();
2781
- this._disabledChange.complete();
2845
+ this._stateChanges.complete();
2782
2846
  };
2783
2847
  /** @docs-private */
2784
2848
  MatDatepickerInputBase.prototype.registerOnValidatorChange = function (fn) {
@@ -2879,30 +2943,23 @@
2879
2943
  MatDatepickerInputBase.prototype._parentDisabled = function () {
2880
2944
  return false;
2881
2945
  };
2882
- MatDatepickerInputBase.decorators = [
2883
- { type: i0.Directive }
2884
- ];
2885
- MatDatepickerInputBase.ctorParameters = function () { return [
2886
- { type: i0.ElementRef },
2887
- { type: core.DateAdapter, decorators: [{ type: i0.Optional }] },
2888
- { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [core.MAT_DATE_FORMATS,] }] }
2889
- ]; };
2890
- MatDatepickerInputBase.propDecorators = {
2891
- value: [{ type: i0.Input }],
2892
- disabled: [{ type: i0.Input }],
2893
- dateChange: [{ type: i0.Output }],
2894
- dateInput: [{ type: i0.Output }]
2895
- };
2896
2946
  return MatDatepickerInputBase;
2897
2947
  }());
2948
+ MatDatepickerInputBase.decorators = [
2949
+ { type: i0.Directive }
2950
+ ];
2951
+ MatDatepickerInputBase.ctorParameters = function () { return [
2952
+ { type: i0.ElementRef },
2953
+ { type: core.DateAdapter, decorators: [{ type: i0.Optional }] },
2954
+ { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [core.MAT_DATE_FORMATS,] }] }
2955
+ ]; };
2956
+ MatDatepickerInputBase.propDecorators = {
2957
+ value: [{ type: i0.Input }],
2958
+ disabled: [{ type: i0.Input }],
2959
+ dateChange: [{ type: i0.Output }],
2960
+ dateInput: [{ type: i0.Output }]
2961
+ };
2898
2962
 
2899
- /**
2900
- * @license
2901
- * Copyright Google LLC All Rights Reserved.
2902
- *
2903
- * Use of this source code is governed by an MIT-style license that can be
2904
- * found in the LICENSE file at https://angular.io/license
2905
- */
2906
2963
  /** @docs-private */
2907
2964
  var MAT_DATEPICKER_VALUE_ACCESSOR = {
2908
2965
  provide: forms.NG_VALUE_ACCESSOR,
@@ -3013,42 +3070,45 @@
3013
3070
  MatDatepickerInput.prototype._getDateFilter = function () {
3014
3071
  return this._dateFilter;
3015
3072
  };
3016
- MatDatepickerInput.decorators = [
3017
- { type: i0.Directive, args: [{
3018
- selector: 'input[matDatepicker]',
3019
- providers: [
3020
- MAT_DATEPICKER_VALUE_ACCESSOR,
3021
- MAT_DATEPICKER_VALIDATORS,
3022
- { provide: input.MAT_INPUT_VALUE_ACCESSOR, useExisting: MatDatepickerInput },
3023
- ],
3024
- host: {
3025
- '[attr.aria-haspopup]': '_datepicker ? "dialog" : null',
3026
- '[attr.aria-owns]': '(_datepicker?.opened && _datepicker.id) || null',
3027
- '[attr.min]': 'min ? _dateAdapter.toIso8601(min) : null',
3028
- '[attr.max]': 'max ? _dateAdapter.toIso8601(max) : null',
3029
- '[disabled]': 'disabled',
3030
- '(input)': '_onInput($event.target.value)',
3031
- '(change)': '_onChange()',
3032
- '(blur)': '_onBlur()',
3033
- '(keydown)': '_onKeydown($event)',
3034
- },
3035
- exportAs: 'matDatepickerInput',
3036
- },] }
3037
- ];
3038
- MatDatepickerInput.ctorParameters = function () { return [
3039
- { type: i0.ElementRef },
3040
- { type: core.DateAdapter, decorators: [{ type: i0.Optional }] },
3041
- { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [core.MAT_DATE_FORMATS,] }] },
3042
- { type: formField.MatFormField, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [formField.MAT_FORM_FIELD,] }] }
3043
- ]; };
3044
- MatDatepickerInput.propDecorators = {
3045
- matDatepicker: [{ type: i0.Input }],
3046
- min: [{ type: i0.Input }],
3047
- max: [{ type: i0.Input }],
3048
- dateFilter: [{ type: i0.Input, args: ['matDatepickerFilter',] }]
3073
+ MatDatepickerInput.prototype._canEmitChangeEvent = function () {
3074
+ return true;
3049
3075
  };
3050
3076
  return MatDatepickerInput;
3051
3077
  }(MatDatepickerInputBase));
3078
+ MatDatepickerInput.decorators = [
3079
+ { type: i0.Directive, args: [{
3080
+ selector: 'input[matDatepicker]',
3081
+ providers: [
3082
+ MAT_DATEPICKER_VALUE_ACCESSOR,
3083
+ MAT_DATEPICKER_VALIDATORS,
3084
+ { provide: input.MAT_INPUT_VALUE_ACCESSOR, useExisting: MatDatepickerInput },
3085
+ ],
3086
+ host: {
3087
+ '[attr.aria-haspopup]': '_datepicker ? "dialog" : null',
3088
+ '[attr.aria-owns]': '(_datepicker?.opened && _datepicker.id) || null',
3089
+ '[attr.min]': 'min ? _dateAdapter.toIso8601(min) : null',
3090
+ '[attr.max]': 'max ? _dateAdapter.toIso8601(max) : null',
3091
+ '[disabled]': 'disabled',
3092
+ '(input)': '_onInput($event.target.value)',
3093
+ '(change)': '_onChange()',
3094
+ '(blur)': '_onBlur()',
3095
+ '(keydown)': '_onKeydown($event)',
3096
+ },
3097
+ exportAs: 'matDatepickerInput',
3098
+ },] }
3099
+ ];
3100
+ MatDatepickerInput.ctorParameters = function () { return [
3101
+ { type: i0.ElementRef },
3102
+ { type: core.DateAdapter, decorators: [{ type: i0.Optional }] },
3103
+ { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [core.MAT_DATE_FORMATS,] }] },
3104
+ { type: formField.MatFormField, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [formField.MAT_FORM_FIELD,] }] }
3105
+ ]; };
3106
+ MatDatepickerInput.propDecorators = {
3107
+ matDatepicker: [{ type: i0.Input }],
3108
+ min: [{ type: i0.Input }],
3109
+ max: [{ type: i0.Input }],
3110
+ dateFilter: [{ type: i0.Input, args: ['matDatepickerFilter',] }]
3111
+ };
3052
3112
 
3053
3113
  /**
3054
3114
  * @license
@@ -3061,13 +3121,13 @@
3061
3121
  var MatDatepickerToggleIcon = /** @class */ (function () {
3062
3122
  function MatDatepickerToggleIcon() {
3063
3123
  }
3064
- MatDatepickerToggleIcon.decorators = [
3065
- { type: i0.Directive, args: [{
3066
- selector: '[matDatepickerToggleIcon]'
3067
- },] }
3068
- ];
3069
3124
  return MatDatepickerToggleIcon;
3070
3125
  }());
3126
+ MatDatepickerToggleIcon.decorators = [
3127
+ { type: i0.Directive, args: [{
3128
+ selector: '[matDatepickerToggleIcon]'
3129
+ },] }
3130
+ ];
3071
3131
  var MatDatepickerToggle = /** @class */ (function () {
3072
3132
  function MatDatepickerToggle(_intl, _changeDetectorRef, defaultTabIndex) {
3073
3133
  this._intl = _intl;
@@ -3109,58 +3169,51 @@
3109
3169
  };
3110
3170
  MatDatepickerToggle.prototype._watchStateChanges = function () {
3111
3171
  var _this = this;
3112
- var datepickerDisabled = this.datepicker ? this.datepicker._disabledChange : rxjs.of();
3113
- var inputDisabled = this.datepicker && this.datepicker._datepickerInput ?
3114
- this.datepicker._datepickerInput._disabledChange : rxjs.of();
3172
+ var datepickerStateChanged = this.datepicker ? this.datepicker._stateChanges : rxjs.of();
3173
+ var inputStateChanged = this.datepicker && this.datepicker._datepickerInput ?
3174
+ this.datepicker._datepickerInput._stateChanges : rxjs.of();
3115
3175
  var datepickerToggled = this.datepicker ?
3116
3176
  rxjs.merge(this.datepicker.openedStream, this.datepicker.closedStream) :
3117
3177
  rxjs.of();
3118
3178
  this._stateChanges.unsubscribe();
3119
- this._stateChanges = rxjs.merge(this._intl.changes, datepickerDisabled, inputDisabled, datepickerToggled).subscribe(function () { return _this._changeDetectorRef.markForCheck(); });
3120
- };
3121
- MatDatepickerToggle.decorators = [
3122
- { type: i0.Component, args: [{
3123
- selector: 'mat-datepicker-toggle',
3124
- template: "<button\n #button\n mat-icon-button\n type=\"button\"\n [attr.aria-haspopup]=\"datepicker ? 'dialog' : null\"\n [attr.aria-label]=\"_intl.openCalendarLabel\"\n [attr.tabindex]=\"disabled ? -1 : tabIndex\"\n [disabled]=\"disabled\"\n [disableRipple]=\"disableRipple\"\n (click)=\"_open($event)\">\n\n <svg\n *ngIf=\"!_customIcon\"\n class=\"mat-datepicker-toggle-default-icon\"\n viewBox=\"0 0 24 24\"\n width=\"24px\"\n height=\"24px\"\n fill=\"currentColor\"\n focusable=\"false\">\n <path d=\"M19 3h-1V1h-2v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V8h14v11zM7 10h5v5H7z\"/>\n </svg>\n\n <ng-content select=\"[matDatepickerToggleIcon]\"></ng-content>\n</button>\n",
3125
- host: {
3126
- 'class': 'mat-datepicker-toggle',
3127
- // Always set the tabindex to -1 so that it doesn't overlap with any custom tabindex the
3128
- // consumer may have provided, while still being able to receive focus.
3129
- '[attr.tabindex]': 'disabled ? null : -1',
3130
- '[class.mat-datepicker-toggle-active]': 'datepicker && datepicker.opened',
3131
- '[class.mat-accent]': 'datepicker && datepicker.color === "accent"',
3132
- '[class.mat-warn]': 'datepicker && datepicker.color === "warn"',
3133
- '(focus)': '_button.focus()',
3134
- },
3135
- exportAs: 'matDatepickerToggle',
3136
- encapsulation: i0.ViewEncapsulation.None,
3137
- changeDetection: i0.ChangeDetectionStrategy.OnPush,
3138
- styles: [".mat-form-field-appearance-legacy .mat-form-field-prefix .mat-datepicker-toggle-default-icon,.mat-form-field-appearance-legacy .mat-form-field-suffix .mat-datepicker-toggle-default-icon{width:1em}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-datepicker-toggle-default-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-datepicker-toggle-default-icon{display:block;width:1.5em;height:1.5em}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button .mat-datepicker-toggle-default-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button .mat-datepicker-toggle-default-icon{margin:auto}\n"]
3139
- },] }
3140
- ];
3141
- MatDatepickerToggle.ctorParameters = function () { return [
3142
- { type: MatDatepickerIntl },
3143
- { type: i0.ChangeDetectorRef },
3144
- { type: String, decorators: [{ type: i0.Attribute, args: ['tabindex',] }] }
3145
- ]; };
3146
- MatDatepickerToggle.propDecorators = {
3147
- datepicker: [{ type: i0.Input, args: ['for',] }],
3148
- tabIndex: [{ type: i0.Input }],
3149
- disabled: [{ type: i0.Input }],
3150
- disableRipple: [{ type: i0.Input }],
3151
- _customIcon: [{ type: i0.ContentChild, args: [MatDatepickerToggleIcon,] }],
3152
- _button: [{ type: i0.ViewChild, args: ['button',] }]
3179
+ this._stateChanges = rxjs.merge(this._intl.changes, datepickerStateChanged, inputStateChanged, datepickerToggled).subscribe(function () { return _this._changeDetectorRef.markForCheck(); });
3153
3180
  };
3154
3181
  return MatDatepickerToggle;
3155
3182
  }());
3183
+ MatDatepickerToggle.decorators = [
3184
+ { type: i0.Component, args: [{
3185
+ selector: 'mat-datepicker-toggle',
3186
+ template: "<button\n #button\n mat-icon-button\n type=\"button\"\n [attr.aria-haspopup]=\"datepicker ? 'dialog' : null\"\n [attr.aria-label]=\"_intl.openCalendarLabel\"\n [attr.tabindex]=\"disabled ? -1 : tabIndex\"\n [disabled]=\"disabled\"\n [disableRipple]=\"disableRipple\"\n (click)=\"_open($event)\">\n\n <svg\n *ngIf=\"!_customIcon\"\n class=\"mat-datepicker-toggle-default-icon\"\n viewBox=\"0 0 24 24\"\n width=\"24px\"\n height=\"24px\"\n fill=\"currentColor\"\n focusable=\"false\">\n <path d=\"M19 3h-1V1h-2v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V8h14v11zM7 10h5v5H7z\"/>\n </svg>\n\n <ng-content select=\"[matDatepickerToggleIcon]\"></ng-content>\n</button>\n",
3187
+ host: {
3188
+ 'class': 'mat-datepicker-toggle',
3189
+ // Always set the tabindex to -1 so that it doesn't overlap with any custom tabindex the
3190
+ // consumer may have provided, while still being able to receive focus.
3191
+ '[attr.tabindex]': 'disabled ? null : -1',
3192
+ '[class.mat-datepicker-toggle-active]': 'datepicker && datepicker.opened',
3193
+ '[class.mat-accent]': 'datepicker && datepicker.color === "accent"',
3194
+ '[class.mat-warn]': 'datepicker && datepicker.color === "warn"',
3195
+ '(focus)': '_button.focus()',
3196
+ },
3197
+ exportAs: 'matDatepickerToggle',
3198
+ encapsulation: i0.ViewEncapsulation.None,
3199
+ changeDetection: i0.ChangeDetectionStrategy.OnPush,
3200
+ styles: [".mat-form-field-appearance-legacy .mat-form-field-prefix .mat-datepicker-toggle-default-icon,.mat-form-field-appearance-legacy .mat-form-field-suffix .mat-datepicker-toggle-default-icon{width:1em}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-datepicker-toggle-default-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-datepicker-toggle-default-icon{display:block;width:1.5em;height:1.5em}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button .mat-datepicker-toggle-default-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button .mat-datepicker-toggle-default-icon{margin:auto}\n"]
3201
+ },] }
3202
+ ];
3203
+ MatDatepickerToggle.ctorParameters = function () { return [
3204
+ { type: MatDatepickerIntl },
3205
+ { type: i0.ChangeDetectorRef },
3206
+ { type: String, decorators: [{ type: i0.Attribute, args: ['tabindex',] }] }
3207
+ ]; };
3208
+ MatDatepickerToggle.propDecorators = {
3209
+ datepicker: [{ type: i0.Input, args: ['for',] }],
3210
+ tabIndex: [{ type: i0.Input }],
3211
+ disabled: [{ type: i0.Input }],
3212
+ disableRipple: [{ type: i0.Input }],
3213
+ _customIcon: [{ type: i0.ContentChild, args: [MatDatepickerToggleIcon,] }],
3214
+ _button: [{ type: i0.ViewChild, args: ['button',] }]
3215
+ };
3156
3216
 
3157
- /**
3158
- * @license
3159
- * Copyright Google LLC All Rights Reserved.
3160
- *
3161
- * Use of this source code is governed by an MIT-style license that can be
3162
- * found in the LICENSE file at https://angular.io/license
3163
- */
3164
3217
  /**
3165
3218
  * Used to provide the date range input wrapper component
3166
3219
  * to the parts without circular dependencies.
@@ -3241,21 +3294,21 @@
3241
3294
  MatDateRangeInputPartBase.prototype._parentDisabled = function () {
3242
3295
  return this._rangeInput._groupDisabled;
3243
3296
  };
3244
- MatDateRangeInputPartBase.decorators = [
3245
- { type: i0.Directive }
3246
- ];
3247
- MatDateRangeInputPartBase.ctorParameters = function () { return [
3248
- { type: undefined, decorators: [{ type: i0.Inject, args: [MAT_DATE_RANGE_INPUT_PARENT,] }] },
3249
- { type: i0.ElementRef },
3250
- { type: core.ErrorStateMatcher },
3251
- { type: i0.Injector },
3252
- { type: forms.NgForm, decorators: [{ type: i0.Optional }] },
3253
- { type: forms.FormGroupDirective, decorators: [{ type: i0.Optional }] },
3254
- { type: core.DateAdapter, decorators: [{ type: i0.Optional }] },
3255
- { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [core.MAT_DATE_FORMATS,] }] }
3256
- ]; };
3257
3297
  return MatDateRangeInputPartBase;
3258
3298
  }(MatDatepickerInputBase));
3299
+ MatDateRangeInputPartBase.decorators = [
3300
+ { type: i0.Directive }
3301
+ ];
3302
+ MatDateRangeInputPartBase.ctorParameters = function () { return [
3303
+ { type: undefined, decorators: [{ type: i0.Inject, args: [MAT_DATE_RANGE_INPUT_PARENT,] }] },
3304
+ { type: i0.ElementRef },
3305
+ { type: core.ErrorStateMatcher },
3306
+ { type: i0.Injector },
3307
+ { type: forms.NgForm, decorators: [{ type: i0.Optional }] },
3308
+ { type: forms.FormGroupDirective, decorators: [{ type: i0.Optional }] },
3309
+ { type: core.DateAdapter, decorators: [{ type: i0.Optional }] },
3310
+ { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [core.MAT_DATE_FORMATS,] }] }
3311
+ ]; };
3259
3312
  var _MatDateRangeInputBase =
3260
3313
  // Needs to be `as any`, because the base class is abstract.
3261
3314
  core.mixinErrorState(MatDateRangeInputPartBase);
@@ -3277,6 +3330,9 @@
3277
3330
  null : { 'matStartDateInvalid': { 'end': end, 'actual': start } };
3278
3331
  };
3279
3332
  _this._validator = forms.Validators.compose(__spread(_super.prototype._getValidators.call(_this), [_this._startValidator]));
3333
+ _this._canEmitChangeEvent = function (event) {
3334
+ return event.source !== _this._rangeInput._endInput;
3335
+ };
3280
3336
  return _this;
3281
3337
  }
3282
3338
  MatStartDate.prototype._getValueFromModel = function (modelValue) {
@@ -3300,41 +3356,41 @@
3300
3356
  var value = element.value;
3301
3357
  return value.length > 0 ? value : element.placeholder;
3302
3358
  };
3303
- MatStartDate.decorators = [
3304
- { type: i0.Directive, args: [{
3305
- selector: 'input[matStartDate]',
3306
- host: {
3307
- 'class': 'mat-date-range-input-inner',
3308
- '[disabled]': 'disabled',
3309
- '(input)': '_onInput($event.target.value)',
3310
- '(change)': '_onChange()',
3311
- '(keydown)': '_onKeydown($event)',
3312
- '[attr.id]': '_rangeInput.id',
3313
- '[attr.aria-haspopup]': '_rangeInput.rangePicker ? "dialog" : null',
3314
- '[attr.aria-owns]': '(_rangeInput.rangePicker?.opened && _rangeInput.rangePicker.id) || null',
3315
- '[attr.min]': '_getMinDate() ? _dateAdapter.toIso8601(_getMinDate()) : null',
3316
- '[attr.max]': '_getMaxDate() ? _dateAdapter.toIso8601(_getMaxDate()) : null',
3317
- '(blur)': '_onBlur()',
3318
- 'type': 'text',
3319
- },
3320
- providers: [
3321
- { provide: forms.NG_VALUE_ACCESSOR, useExisting: MatStartDate, multi: true },
3322
- { provide: forms.NG_VALIDATORS, useExisting: MatStartDate, multi: true }
3323
- ]
3324
- },] }
3325
- ];
3326
- MatStartDate.ctorParameters = function () { return [
3327
- { type: undefined, decorators: [{ type: i0.Inject, args: [MAT_DATE_RANGE_INPUT_PARENT,] }] },
3328
- { type: i0.ElementRef },
3329
- { type: core.ErrorStateMatcher },
3330
- { type: i0.Injector },
3331
- { type: forms.NgForm, decorators: [{ type: i0.Optional }] },
3332
- { type: forms.FormGroupDirective, decorators: [{ type: i0.Optional }] },
3333
- { type: core.DateAdapter, decorators: [{ type: i0.Optional }] },
3334
- { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [core.MAT_DATE_FORMATS,] }] }
3335
- ]; };
3336
3359
  return MatStartDate;
3337
3360
  }(_MatDateRangeInputBase));
3361
+ MatStartDate.decorators = [
3362
+ { type: i0.Directive, args: [{
3363
+ selector: 'input[matStartDate]',
3364
+ host: {
3365
+ 'class': 'mat-date-range-input-inner',
3366
+ '[disabled]': 'disabled',
3367
+ '(input)': '_onInput($event.target.value)',
3368
+ '(change)': '_onChange()',
3369
+ '(keydown)': '_onKeydown($event)',
3370
+ '[attr.id]': '_rangeInput.id',
3371
+ '[attr.aria-haspopup]': '_rangeInput.rangePicker ? "dialog" : null',
3372
+ '[attr.aria-owns]': '(_rangeInput.rangePicker?.opened && _rangeInput.rangePicker.id) || null',
3373
+ '[attr.min]': '_getMinDate() ? _dateAdapter.toIso8601(_getMinDate()) : null',
3374
+ '[attr.max]': '_getMaxDate() ? _dateAdapter.toIso8601(_getMaxDate()) : null',
3375
+ '(blur)': '_onBlur()',
3376
+ 'type': 'text',
3377
+ },
3378
+ providers: [
3379
+ { provide: forms.NG_VALUE_ACCESSOR, useExisting: MatStartDate, multi: true },
3380
+ { provide: forms.NG_VALIDATORS, useExisting: MatStartDate, multi: true }
3381
+ ]
3382
+ },] }
3383
+ ];
3384
+ MatStartDate.ctorParameters = function () { return [
3385
+ { type: undefined, decorators: [{ type: i0.Inject, args: [MAT_DATE_RANGE_INPUT_PARENT,] }] },
3386
+ { type: i0.ElementRef },
3387
+ { type: core.ErrorStateMatcher },
3388
+ { type: i0.Injector },
3389
+ { type: forms.NgForm, decorators: [{ type: i0.Optional }] },
3390
+ { type: forms.FormGroupDirective, decorators: [{ type: i0.Optional }] },
3391
+ { type: core.DateAdapter, decorators: [{ type: i0.Optional }] },
3392
+ { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [core.MAT_DATE_FORMATS,] }] }
3393
+ ]; };
3338
3394
  /** Input for entering the end date in a `mat-date-range-input`. */
3339
3395
  var MatEndDate = /** @class */ (function (_super) {
3340
3396
  __extends(MatEndDate, _super);
@@ -3353,6 +3409,9 @@
3353
3409
  null : { 'matEndDateInvalid': { 'start': start, 'actual': end } };
3354
3410
  };
3355
3411
  _this._validator = forms.Validators.compose(__spread(_super.prototype._getValidators.call(_this), [_this._endValidator]));
3412
+ _this._canEmitChangeEvent = function (event) {
3413
+ return event.source !== _this._rangeInput._startInput;
3414
+ };
3356
3415
  return _this;
3357
3416
  }
3358
3417
  MatEndDate.prototype._getValueFromModel = function (modelValue) {
@@ -3372,77 +3431,40 @@
3372
3431
  }
3373
3432
  _super.prototype._onKeydown.call(this, event);
3374
3433
  };
3375
- MatEndDate.decorators = [
3376
- { type: i0.Directive, args: [{
3377
- selector: 'input[matEndDate]',
3378
- host: {
3379
- 'class': 'mat-date-range-input-inner',
3380
- '[disabled]': 'disabled',
3381
- '(input)': '_onInput($event.target.value)',
3382
- '(change)': '_onChange()',
3383
- '(keydown)': '_onKeydown($event)',
3384
- '[attr.aria-haspopup]': '_rangeInput.rangePicker ? "dialog" : null',
3385
- '[attr.aria-owns]': '(_rangeInput.rangePicker?.opened && _rangeInput.rangePicker.id) || null',
3386
- '[attr.min]': '_getMinDate() ? _dateAdapter.toIso8601(_getMinDate()) : null',
3387
- '[attr.max]': '_getMaxDate() ? _dateAdapter.toIso8601(_getMaxDate()) : null',
3388
- '(blur)': '_onBlur()',
3389
- 'type': 'text',
3390
- },
3391
- providers: [
3392
- { provide: forms.NG_VALUE_ACCESSOR, useExisting: MatEndDate, multi: true },
3393
- { provide: forms.NG_VALIDATORS, useExisting: MatEndDate, multi: true }
3394
- ]
3395
- },] }
3396
- ];
3397
- MatEndDate.ctorParameters = function () { return [
3398
- { type: undefined, decorators: [{ type: i0.Inject, args: [MAT_DATE_RANGE_INPUT_PARENT,] }] },
3399
- { type: i0.ElementRef },
3400
- { type: core.ErrorStateMatcher },
3401
- { type: i0.Injector },
3402
- { type: forms.NgForm, decorators: [{ type: i0.Optional }] },
3403
- { type: forms.FormGroupDirective, decorators: [{ type: i0.Optional }] },
3404
- { type: core.DateAdapter, decorators: [{ type: i0.Optional }] },
3405
- { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [core.MAT_DATE_FORMATS,] }] }
3406
- ]; };
3407
3434
  return MatEndDate;
3408
3435
  }(_MatDateRangeInputBase));
3409
-
3410
- /**
3411
- * @license
3412
- * Copyright Google LLC All Rights Reserved.
3413
- *
3414
- * Use of this source code is governed by an MIT-style license that can be
3415
- * found in the LICENSE file at https://angular.io/license
3416
- */
3417
- // TODO(mmalerba): We use a component instead of a directive here so the user can use implicit
3418
- // template reference variables (e.g. #d vs #d="matDateRangePicker"). We can change this to a
3419
- // directive if angular adds support for `exportAs: '$implicit'` on directives.
3420
- /** Component responsible for managing the date range picker popup/dialog. */
3421
- var MatDateRangePicker = /** @class */ (function (_super) {
3422
- __extends(MatDateRangePicker, _super);
3423
- function MatDateRangePicker() {
3424
- return _super !== null && _super.apply(this, arguments) || this;
3425
- }
3426
- MatDateRangePicker.prototype._forwardContentValues = function (instance) {
3427
- _super.prototype._forwardContentValues.call(this, instance);
3428
- var input = this._datepickerInput;
3429
- if (input) {
3430
- instance.comparisonStart = input.comparisonStart;
3431
- instance.comparisonEnd = input.comparisonEnd;
3432
- }
3433
- };
3434
- MatDateRangePicker.decorators = [
3435
- { type: i0.Component, args: [{
3436
- selector: 'mat-date-range-picker',
3437
- template: '',
3438
- exportAs: 'matDateRangePicker',
3439
- changeDetection: i0.ChangeDetectionStrategy.OnPush,
3440
- encapsulation: i0.ViewEncapsulation.None,
3441
- providers: [MAT_RANGE_DATE_SELECTION_MODEL_PROVIDER]
3442
- },] }
3443
- ];
3444
- return MatDateRangePicker;
3445
- }(MatDatepickerBase));
3436
+ MatEndDate.decorators = [
3437
+ { type: i0.Directive, args: [{
3438
+ selector: 'input[matEndDate]',
3439
+ host: {
3440
+ 'class': 'mat-date-range-input-inner',
3441
+ '[disabled]': 'disabled',
3442
+ '(input)': '_onInput($event.target.value)',
3443
+ '(change)': '_onChange()',
3444
+ '(keydown)': '_onKeydown($event)',
3445
+ '[attr.aria-haspopup]': '_rangeInput.rangePicker ? "dialog" : null',
3446
+ '[attr.aria-owns]': '(_rangeInput.rangePicker?.opened && _rangeInput.rangePicker.id) || null',
3447
+ '[attr.min]': '_getMinDate() ? _dateAdapter.toIso8601(_getMinDate()) : null',
3448
+ '[attr.max]': '_getMaxDate() ? _dateAdapter.toIso8601(_getMaxDate()) : null',
3449
+ '(blur)': '_onBlur()',
3450
+ 'type': 'text',
3451
+ },
3452
+ providers: [
3453
+ { provide: forms.NG_VALUE_ACCESSOR, useExisting: MatEndDate, multi: true },
3454
+ { provide: forms.NG_VALIDATORS, useExisting: MatEndDate, multi: true }
3455
+ ]
3456
+ },] }
3457
+ ];
3458
+ MatEndDate.ctorParameters = function () { return [
3459
+ { type: undefined, decorators: [{ type: i0.Inject, args: [MAT_DATE_RANGE_INPUT_PARENT,] }] },
3460
+ { type: i0.ElementRef },
3461
+ { type: core.ErrorStateMatcher },
3462
+ { type: i0.Injector },
3463
+ { type: forms.NgForm, decorators: [{ type: i0.Optional }] },
3464
+ { type: forms.FormGroupDirective, decorators: [{ type: i0.Optional }] },
3465
+ { type: core.DateAdapter, decorators: [{ type: i0.Optional }] },
3466
+ { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [core.MAT_DATE_FORMATS,] }] }
3467
+ ]; };
3446
3468
 
3447
3469
  /**
3448
3470
  * @license
@@ -3475,8 +3497,8 @@
3475
3497
  this.comparisonStart = null;
3476
3498
  /** End of the comparison range that should be shown in the calendar. */
3477
3499
  this.comparisonEnd = null;
3478
- /** Emits when the input's disabled state changes. */
3479
- this._disabledChange = new rxjs.Subject();
3500
+ /** Emits when the input's state changes. */
3501
+ this._stateChanges = new rxjs.Subject();
3480
3502
  if (!_dateAdapter) {
3481
3503
  throw createMissingDateImplError('DateAdapter');
3482
3504
  }
@@ -3577,7 +3599,7 @@
3577
3599
  var newValue = coercion.coerceBooleanProperty(value);
3578
3600
  if (newValue !== this._groupDisabled) {
3579
3601
  this._groupDisabled = newValue;
3580
- this._disabledChange.next(this.disabled);
3602
+ this._stateChanges.next(undefined);
3581
3603
  }
3582
3604
  },
3583
3605
  enumerable: false,
@@ -3638,13 +3660,16 @@
3638
3660
  }
3639
3661
  // We don't need to unsubscribe from this, because we
3640
3662
  // know that the input streams will be completed on destroy.
3641
- rxjs.merge(this._startInput._disabledChange, this._endInput._disabledChange).subscribe(function () {
3642
- _this._disabledChange.next(_this.disabled);
3663
+ rxjs.merge(this._startInput.stateChanges, this._endInput.stateChanges).subscribe(function () {
3664
+ _this._stateChanges.next(undefined);
3643
3665
  });
3644
3666
  };
3667
+ MatDateRangeInput.prototype.ngOnChanges = function () {
3668
+ this._stateChanges.next(undefined);
3669
+ };
3645
3670
  MatDateRangeInput.prototype.ngOnDestroy = function () {
3646
3671
  this.stateChanges.complete();
3647
- this._disabledChange.unsubscribe();
3672
+ this._stateChanges.unsubscribe();
3648
3673
  };
3649
3674
  /** Gets the date at which the calendar should start. */
3650
3675
  MatDateRangeInput.prototype.getStartValue = function () {
@@ -3668,7 +3693,7 @@
3668
3693
  };
3669
3694
  /** Handles the value in one of the child inputs changing. */
3670
3695
  MatDateRangeInput.prototype._handleChildValueChange = function () {
3671
- this.stateChanges.next();
3696
+ this.stateChanges.next(undefined);
3672
3697
  this._changeDetectorRef.markForCheck();
3673
3698
  };
3674
3699
  /** Opens the date range picker associated with the input. */
@@ -3711,50 +3736,80 @@
3711
3736
  this._endInput._registerModel(model);
3712
3737
  }
3713
3738
  };
3714
- MatDateRangeInput.decorators = [
3715
- { type: i0.Component, args: [{
3716
- selector: 'mat-date-range-input',
3717
- template: "<div\n class=\"mat-date-range-input-container\"\n cdkMonitorSubtreeFocus\n (cdkFocusChange)=\"focused = $event !== null\">\n <div class=\"mat-date-range-input-start-wrapper\">\n <ng-content select=\"input[matStartDate]\"></ng-content>\n <span\n class=\"mat-date-range-input-mirror\"\n aria-hidden=\"true\">{{_getInputMirrorValue()}}</span>\n </div>\n\n <span\n class=\"mat-date-range-input-separator\"\n [class.mat-date-range-input-separator-hidden]=\"_shouldHideSeparator()\">{{separator}}</span>\n\n <div class=\"mat-date-range-input-end-wrapper\">\n <ng-content select=\"input[matEndDate]\"></ng-content>\n </div>\n</div>\n\n",
3718
- exportAs: 'matDateRangeInput',
3719
- host: {
3720
- 'class': 'mat-date-range-input',
3721
- '[class.mat-date-range-input-hide-placeholders]': '_shouldHidePlaceholders()',
3722
- '[attr.id]': 'null',
3723
- 'role': 'group',
3724
- '[attr.aria-labelledby]': '_getAriaLabelledby()',
3725
- '[attr.aria-describedby]': '_ariaDescribedBy',
3726
- },
3727
- changeDetection: i0.ChangeDetectionStrategy.OnPush,
3728
- encapsulation: i0.ViewEncapsulation.None,
3729
- providers: [
3730
- { provide: formField.MatFormFieldControl, useExisting: MatDateRangeInput },
3731
- { provide: MAT_DATE_RANGE_INPUT_PARENT, useExisting: MatDateRangeInput },
3732
- ],
3733
- styles: [".mat-date-range-input{display:block;width:100%}.mat-date-range-input-container{display:flex;align-items:center}.mat-date-range-input-separator{transition:opacity 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1);margin:0 4px}.mat-date-range-input-separator-hidden{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;opacity:0;transition:none}.mat-date-range-input-inner{font:inherit;background:transparent;color:currentColor;border:none;outline:none;padding:0;margin:0;vertical-align:bottom;text-align:inherit;-webkit-appearance:none;width:100%}.mat-date-range-input-inner::-ms-clear,.mat-date-range-input-inner::-ms-reveal{display:none}.mat-date-range-input-inner::placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-date-range-input-inner::-moz-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-date-range-input-inner::-webkit-input-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-date-range-input-inner:-ms-input-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-form-field-hide-placeholder .mat-date-range-input-inner::placeholder,.mat-date-range-input-hide-placeholders .mat-date-range-input-inner::placeholder{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;color:transparent !important;-webkit-text-fill-color:transparent;transition:none}.mat-form-field-hide-placeholder .mat-date-range-input-inner::-moz-placeholder,.mat-date-range-input-hide-placeholders .mat-date-range-input-inner::-moz-placeholder{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;color:transparent !important;-webkit-text-fill-color:transparent;transition:none}.mat-form-field-hide-placeholder .mat-date-range-input-inner::-webkit-input-placeholder,.mat-date-range-input-hide-placeholders .mat-date-range-input-inner::-webkit-input-placeholder{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;color:transparent !important;-webkit-text-fill-color:transparent;transition:none}.mat-form-field-hide-placeholder .mat-date-range-input-inner:-ms-input-placeholder,.mat-date-range-input-hide-placeholders .mat-date-range-input-inner:-ms-input-placeholder{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;color:transparent !important;-webkit-text-fill-color:transparent;transition:none}.mat-date-range-input-mirror{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;visibility:hidden;white-space:nowrap;display:inline-block;min-width:2px}.mat-date-range-input-start-wrapper{position:relative;overflow:hidden;max-width:calc(50% - 4px)}.mat-date-range-input-start-wrapper .mat-date-range-input-inner{position:absolute;top:0;left:0}.mat-date-range-input-end-wrapper{flex-grow:1;max-width:calc(50% - 4px)}.mat-form-field-type-mat-date-range-input .mat-form-field-infix{width:200px}\n"]
3734
- },] }
3735
- ];
3736
- MatDateRangeInput.ctorParameters = function () { return [
3737
- { type: i0.ChangeDetectorRef },
3738
- { type: i0.ElementRef },
3739
- { type: forms.ControlContainer, decorators: [{ type: i0.Optional }, { type: i0.Self }] },
3740
- { type: core.DateAdapter, decorators: [{ type: i0.Optional }] },
3741
- { type: formField.MatFormField, decorators: [{ type: i0.Optional }] }
3742
- ]; };
3743
- MatDateRangeInput.propDecorators = {
3744
- rangePicker: [{ type: i0.Input }],
3745
- required: [{ type: i0.Input }],
3746
- dateFilter: [{ type: i0.Input }],
3747
- min: [{ type: i0.Input }],
3748
- max: [{ type: i0.Input }],
3749
- disabled: [{ type: i0.Input }],
3750
- separator: [{ type: i0.Input }],
3751
- comparisonStart: [{ type: i0.Input }],
3752
- comparisonEnd: [{ type: i0.Input }],
3753
- _startInput: [{ type: i0.ContentChild, args: [MatStartDate,] }],
3754
- _endInput: [{ type: i0.ContentChild, args: [MatEndDate,] }]
3755
- };
3756
3739
  return MatDateRangeInput;
3757
3740
  }());
3741
+ MatDateRangeInput.decorators = [
3742
+ { type: i0.Component, args: [{
3743
+ selector: 'mat-date-range-input',
3744
+ template: "<div\n class=\"mat-date-range-input-container\"\n cdkMonitorSubtreeFocus\n (cdkFocusChange)=\"focused = $event !== null\">\n <div class=\"mat-date-range-input-start-wrapper\">\n <ng-content select=\"input[matStartDate]\"></ng-content>\n <span\n class=\"mat-date-range-input-mirror\"\n aria-hidden=\"true\">{{_getInputMirrorValue()}}</span>\n </div>\n\n <span\n class=\"mat-date-range-input-separator\"\n [class.mat-date-range-input-separator-hidden]=\"_shouldHideSeparator()\">{{separator}}</span>\n\n <div class=\"mat-date-range-input-end-wrapper\">\n <ng-content select=\"input[matEndDate]\"></ng-content>\n </div>\n</div>\n\n",
3745
+ exportAs: 'matDateRangeInput',
3746
+ host: {
3747
+ 'class': 'mat-date-range-input',
3748
+ '[class.mat-date-range-input-hide-placeholders]': '_shouldHidePlaceholders()',
3749
+ '[attr.id]': 'null',
3750
+ 'role': 'group',
3751
+ '[attr.aria-labelledby]': '_getAriaLabelledby()',
3752
+ '[attr.aria-describedby]': '_ariaDescribedBy',
3753
+ },
3754
+ changeDetection: i0.ChangeDetectionStrategy.OnPush,
3755
+ encapsulation: i0.ViewEncapsulation.None,
3756
+ providers: [
3757
+ { provide: formField.MatFormFieldControl, useExisting: MatDateRangeInput },
3758
+ { provide: MAT_DATE_RANGE_INPUT_PARENT, useExisting: MatDateRangeInput },
3759
+ ],
3760
+ styles: [".mat-date-range-input{display:block;width:100%}.mat-date-range-input-container{display:flex;align-items:center}.mat-date-range-input-separator{transition:opacity 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1);margin:0 4px}.mat-date-range-input-separator-hidden{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;opacity:0;transition:none}.mat-date-range-input-inner{font:inherit;background:transparent;color:currentColor;border:none;outline:none;padding:0;margin:0;vertical-align:bottom;text-align:inherit;-webkit-appearance:none;width:100%}.mat-date-range-input-inner::-ms-clear,.mat-date-range-input-inner::-ms-reveal{display:none}.mat-date-range-input-inner::placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-date-range-input-inner::-moz-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-date-range-input-inner::-webkit-input-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-date-range-input-inner:-ms-input-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-form-field-hide-placeholder .mat-date-range-input-inner::placeholder,.mat-date-range-input-hide-placeholders .mat-date-range-input-inner::placeholder{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;color:transparent !important;-webkit-text-fill-color:transparent;transition:none}.mat-form-field-hide-placeholder .mat-date-range-input-inner::-moz-placeholder,.mat-date-range-input-hide-placeholders .mat-date-range-input-inner::-moz-placeholder{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;color:transparent !important;-webkit-text-fill-color:transparent;transition:none}.mat-form-field-hide-placeholder .mat-date-range-input-inner::-webkit-input-placeholder,.mat-date-range-input-hide-placeholders .mat-date-range-input-inner::-webkit-input-placeholder{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;color:transparent !important;-webkit-text-fill-color:transparent;transition:none}.mat-form-field-hide-placeholder .mat-date-range-input-inner:-ms-input-placeholder,.mat-date-range-input-hide-placeholders .mat-date-range-input-inner:-ms-input-placeholder{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;color:transparent !important;-webkit-text-fill-color:transparent;transition:none}.mat-date-range-input-mirror{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;visibility:hidden;white-space:nowrap;display:inline-block;min-width:2px}.mat-date-range-input-start-wrapper{position:relative;overflow:hidden;max-width:calc(50% - 4px)}.mat-date-range-input-start-wrapper .mat-date-range-input-inner{position:absolute;top:0;left:0}.mat-date-range-input-end-wrapper{flex-grow:1;max-width:calc(50% - 4px)}.mat-form-field-type-mat-date-range-input .mat-form-field-infix{width:200px}\n"]
3761
+ },] }
3762
+ ];
3763
+ MatDateRangeInput.ctorParameters = function () { return [
3764
+ { type: i0.ChangeDetectorRef },
3765
+ { type: i0.ElementRef },
3766
+ { type: forms.ControlContainer, decorators: [{ type: i0.Optional }, { type: i0.Self }] },
3767
+ { type: core.DateAdapter, decorators: [{ type: i0.Optional }] },
3768
+ { type: formField.MatFormField, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [formField.MAT_FORM_FIELD,] }] }
3769
+ ]; };
3770
+ MatDateRangeInput.propDecorators = {
3771
+ rangePicker: [{ type: i0.Input }],
3772
+ required: [{ type: i0.Input }],
3773
+ dateFilter: [{ type: i0.Input }],
3774
+ min: [{ type: i0.Input }],
3775
+ max: [{ type: i0.Input }],
3776
+ disabled: [{ type: i0.Input }],
3777
+ separator: [{ type: i0.Input }],
3778
+ comparisonStart: [{ type: i0.Input }],
3779
+ comparisonEnd: [{ type: i0.Input }],
3780
+ _startInput: [{ type: i0.ContentChild, args: [MatStartDate,] }],
3781
+ _endInput: [{ type: i0.ContentChild, args: [MatEndDate,] }]
3782
+ };
3783
+
3784
+ // TODO(mmalerba): We use a component instead of a directive here so the user can use implicit
3785
+ // template reference variables (e.g. #d vs #d="matDateRangePicker"). We can change this to a
3786
+ // directive if angular adds support for `exportAs: '$implicit'` on directives.
3787
+ /** Component responsible for managing the date range picker popup/dialog. */
3788
+ var MatDateRangePicker = /** @class */ (function (_super) {
3789
+ __extends(MatDateRangePicker, _super);
3790
+ function MatDateRangePicker() {
3791
+ return _super !== null && _super.apply(this, arguments) || this;
3792
+ }
3793
+ MatDateRangePicker.prototype._forwardContentValues = function (instance) {
3794
+ _super.prototype._forwardContentValues.call(this, instance);
3795
+ var input = this._datepickerInput;
3796
+ if (input) {
3797
+ instance.comparisonStart = input.comparisonStart;
3798
+ instance.comparisonEnd = input.comparisonEnd;
3799
+ }
3800
+ };
3801
+ return MatDateRangePicker;
3802
+ }(MatDatepickerBase));
3803
+ MatDateRangePicker.decorators = [
3804
+ { type: i0.Component, args: [{
3805
+ selector: 'mat-date-range-picker',
3806
+ template: '',
3807
+ exportAs: 'matDateRangePicker',
3808
+ changeDetection: i0.ChangeDetectionStrategy.OnPush,
3809
+ encapsulation: i0.ViewEncapsulation.None,
3810
+ providers: [MAT_RANGE_DATE_SELECTION_MODEL_PROVIDER]
3811
+ },] }
3812
+ ];
3758
3813
 
3759
3814
  /**
3760
3815
  * @license
@@ -3766,67 +3821,67 @@
3766
3821
  var MatDatepickerModule = /** @class */ (function () {
3767
3822
  function MatDatepickerModule() {
3768
3823
  }
3769
- MatDatepickerModule.decorators = [
3770
- { type: i0.NgModule, args: [{
3771
- imports: [
3772
- common.CommonModule,
3773
- button.MatButtonModule,
3774
- dialog.MatDialogModule,
3775
- overlay.OverlayModule,
3776
- a11y.A11yModule,
3777
- portal.PortalModule,
3778
- ],
3779
- exports: [
3780
- scrolling.CdkScrollableModule,
3781
- MatCalendar,
3782
- MatCalendarBody,
3783
- MatDatepicker,
3784
- MatDatepickerContent,
3785
- MatDatepickerInput,
3786
- MatDatepickerToggle,
3787
- MatDatepickerToggleIcon,
3788
- MatMonthView,
3789
- MatYearView,
3790
- MatMultiYearView,
3791
- MatCalendarHeader,
3792
- MatDateRangeInput,
3793
- MatStartDate,
3794
- MatEndDate,
3795
- MatDateRangePicker,
3796
- ],
3797
- declarations: [
3798
- MatCalendar,
3799
- MatCalendarBody,
3800
- MatDatepicker,
3801
- MatDatepickerContent,
3802
- MatDatepickerInput,
3803
- MatDatepickerToggle,
3804
- MatDatepickerToggleIcon,
3805
- MatMonthView,
3806
- MatYearView,
3807
- MatMultiYearView,
3808
- MatCalendarHeader,
3809
- MatDateRangeInput,
3810
- MatStartDate,
3811
- MatEndDate,
3812
- MatDateRangePicker,
3813
- ],
3814
- providers: [
3815
- MatDatepickerIntl,
3816
- MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER,
3817
- {
3818
- provide: MAT_DATE_RANGE_SELECTION_STRATEGY,
3819
- useClass: DefaultMatCalendarRangeStrategy
3820
- }
3821
- ],
3822
- entryComponents: [
3823
- MatDatepickerContent,
3824
- MatCalendarHeader,
3825
- ]
3826
- },] }
3827
- ];
3828
3824
  return MatDatepickerModule;
3829
3825
  }());
3826
+ MatDatepickerModule.decorators = [
3827
+ { type: i0.NgModule, args: [{
3828
+ imports: [
3829
+ common.CommonModule,
3830
+ button.MatButtonModule,
3831
+ dialog.MatDialogModule,
3832
+ overlay.OverlayModule,
3833
+ a11y.A11yModule,
3834
+ portal.PortalModule,
3835
+ ],
3836
+ exports: [
3837
+ scrolling.CdkScrollableModule,
3838
+ MatCalendar,
3839
+ MatCalendarBody,
3840
+ MatDatepicker,
3841
+ MatDatepickerContent,
3842
+ MatDatepickerInput,
3843
+ MatDatepickerToggle,
3844
+ MatDatepickerToggleIcon,
3845
+ MatMonthView,
3846
+ MatYearView,
3847
+ MatMultiYearView,
3848
+ MatCalendarHeader,
3849
+ MatDateRangeInput,
3850
+ MatStartDate,
3851
+ MatEndDate,
3852
+ MatDateRangePicker,
3853
+ ],
3854
+ declarations: [
3855
+ MatCalendar,
3856
+ MatCalendarBody,
3857
+ MatDatepicker,
3858
+ MatDatepickerContent,
3859
+ MatDatepickerInput,
3860
+ MatDatepickerToggle,
3861
+ MatDatepickerToggleIcon,
3862
+ MatMonthView,
3863
+ MatYearView,
3864
+ MatMultiYearView,
3865
+ MatCalendarHeader,
3866
+ MatDateRangeInput,
3867
+ MatStartDate,
3868
+ MatEndDate,
3869
+ MatDateRangePicker,
3870
+ ],
3871
+ providers: [
3872
+ MatDatepickerIntl,
3873
+ MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER,
3874
+ {
3875
+ provide: MAT_DATE_RANGE_SELECTION_STRATEGY,
3876
+ useClass: DefaultMatCalendarRangeStrategy
3877
+ }
3878
+ ],
3879
+ entryComponents: [
3880
+ MatDatepickerContent,
3881
+ MatCalendarHeader,
3882
+ ]
3883
+ },] }
3884
+ ];
3830
3885
 
3831
3886
  /**
3832
3887
  * @license