@angular/material 10.1.1 → 10.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (663) hide show
  1. package/_theming.scss +46 -20
  2. package/autocomplete/autocomplete-origin.d.ts +8 -5
  3. package/autocomplete/autocomplete-trigger.d.ts +23 -17
  4. package/autocomplete/autocomplete.d.ts +23 -12
  5. package/autocomplete/index.metadata.json +1 -1
  6. package/badge/badge.d.ts +3 -1
  7. package/badge/index.metadata.json +1 -1
  8. package/bottom-sheet/index.metadata.json +1 -1
  9. package/bundles/material-autocomplete-testing.umd.js +316 -256
  10. package/bundles/material-autocomplete-testing.umd.js.map +1 -1
  11. package/bundles/material-autocomplete-testing.umd.min.js +2 -16
  12. package/bundles/material-autocomplete-testing.umd.min.js.map +1 -1
  13. package/bundles/material-autocomplete.umd.js +553 -436
  14. package/bundles/material-autocomplete.umd.js.map +1 -1
  15. package/bundles/material-autocomplete.umd.min.js +3 -25
  16. package/bundles/material-autocomplete.umd.min.js.map +1 -1
  17. package/bundles/material-badge-testing.umd.js +301 -243
  18. package/bundles/material-badge-testing.umd.js.map +1 -1
  19. package/bundles/material-badge-testing.umd.min.js +2 -16
  20. package/bundles/material-badge-testing.umd.min.js.map +1 -1
  21. package/bundles/material-badge.umd.js +356 -282
  22. package/bundles/material-badge.umd.js.map +1 -1
  23. package/bundles/material-badge.umd.min.js +2 -2
  24. package/bundles/material-badge.umd.min.js.map +1 -1
  25. package/bundles/material-bottom-sheet-testing.umd.js +302 -244
  26. package/bundles/material-bottom-sheet-testing.umd.js.map +1 -1
  27. package/bundles/material-bottom-sheet-testing.umd.min.js +2 -16
  28. package/bundles/material-bottom-sheet-testing.umd.min.js.map +1 -1
  29. package/bundles/material-bottom-sheet.umd.js +376 -302
  30. package/bundles/material-bottom-sheet.umd.js.map +1 -1
  31. package/bundles/material-bottom-sheet.umd.min.js +17 -2
  32. package/bundles/material-bottom-sheet.umd.min.js.map +1 -1
  33. package/bundles/material-button-testing.umd.js +310 -252
  34. package/bundles/material-button-testing.umd.js.map +1 -1
  35. package/bundles/material-button-testing.umd.min.js +2 -16
  36. package/bundles/material-button-testing.umd.min.js.map +1 -1
  37. package/bundles/material-button-toggle-testing.umd.js +304 -261
  38. package/bundles/material-button-toggle-testing.umd.js.map +1 -1
  39. package/bundles/material-button-toggle-testing.umd.min.js +2 -31
  40. package/bundles/material-button-toggle-testing.umd.min.js.map +1 -1
  41. package/bundles/material-button-toggle.umd.js +388 -322
  42. package/bundles/material-button-toggle.umd.js.map +1 -1
  43. package/bundles/material-button-toggle.umd.min.js +2 -10
  44. package/bundles/material-button-toggle.umd.min.js.map +1 -1
  45. package/bundles/material-button.umd.js +375 -309
  46. package/bundles/material-button.umd.js.map +1 -1
  47. package/bundles/material-button.umd.min.js +2 -10
  48. package/bundles/material-button.umd.min.js.map +1 -1
  49. package/bundles/material-card-testing.umd.js +306 -250
  50. package/bundles/material-card-testing.umd.js.map +1 -1
  51. package/bundles/material-card-testing.umd.min.js +2 -16
  52. package/bundles/material-card-testing.umd.min.js.map +1 -1
  53. package/bundles/material-card.umd.js +139 -139
  54. package/bundles/material-card.umd.js.map +1 -1
  55. package/bundles/material-card.umd.min.js +2 -2
  56. package/bundles/material-card.umd.min.js.map +1 -1
  57. package/bundles/material-checkbox-testing.umd.js +302 -244
  58. package/bundles/material-checkbox-testing.umd.js.map +1 -1
  59. package/bundles/material-checkbox-testing.umd.min.js +2 -16
  60. package/bundles/material-checkbox-testing.umd.min.js.map +1 -1
  61. package/bundles/material-checkbox.umd.js +371 -312
  62. package/bundles/material-checkbox.umd.js.map +1 -1
  63. package/bundles/material-checkbox.umd.min.js +2 -9
  64. package/bundles/material-checkbox.umd.min.js.map +1 -1
  65. package/bundles/material-chips-testing.umd.js +802 -0
  66. package/bundles/material-chips-testing.umd.js.map +1 -0
  67. package/bundles/material-chips-testing.umd.min.js +30 -0
  68. package/bundles/material-chips-testing.umd.min.js.map +1 -0
  69. package/bundles/material-chips.umd.js +598 -551
  70. package/bundles/material-chips.umd.js.map +1 -1
  71. package/bundles/material-chips.umd.min.js +18 -3
  72. package/bundles/material-chips.umd.min.js.map +1 -1
  73. package/bundles/material-core-testing.umd.js +304 -261
  74. package/bundles/material-core-testing.umd.js.map +1 -1
  75. package/bundles/material-core-testing.umd.min.js +2 -31
  76. package/bundles/material-core-testing.umd.min.js.map +1 -1
  77. package/bundles/material-core.umd.js +605 -540
  78. package/bundles/material-core.umd.js.map +1 -1
  79. package/bundles/material-core.umd.min.js +37 -12
  80. package/bundles/material-core.umd.min.js.map +1 -1
  81. package/bundles/material-datepicker-testing.umd.js +1342 -0
  82. package/bundles/material-datepicker-testing.umd.js.map +1 -0
  83. package/bundles/material-datepicker-testing.umd.min.js +30 -0
  84. package/bundles/material-datepicker-testing.umd.min.js.map +1 -0
  85. package/bundles/material-datepicker.umd.js +1014 -981
  86. package/bundles/material-datepicker.umd.js.map +1 -1
  87. package/bundles/material-datepicker.umd.min.js +43 -9
  88. package/bundles/material-datepicker.umd.min.js.map +1 -1
  89. package/bundles/material-dialog-testing.umd.js +303 -245
  90. package/bundles/material-dialog-testing.umd.js.map +1 -1
  91. package/bundles/material-dialog-testing.umd.min.js +2 -16
  92. package/bundles/material-dialog-testing.umd.min.js.map +1 -1
  93. package/bundles/material-dialog.umd.js +597 -476
  94. package/bundles/material-dialog.umd.js.map +1 -1
  95. package/bundles/material-dialog.umd.min.js +10 -8
  96. package/bundles/material-dialog.umd.min.js.map +1 -1
  97. package/bundles/material-divider-testing.umd.js +300 -242
  98. package/bundles/material-divider-testing.umd.js.map +1 -1
  99. package/bundles/material-divider-testing.umd.min.js +2 -16
  100. package/bundles/material-divider-testing.umd.min.js.map +1 -1
  101. package/bundles/material-divider.umd.js +28 -28
  102. package/bundles/material-divider.umd.js.map +1 -1
  103. package/bundles/material-divider.umd.min.js +2 -9
  104. package/bundles/material-divider.umd.min.js.map +1 -1
  105. package/bundles/material-expansion-testing.umd.js +303 -254
  106. package/bundles/material-expansion-testing.umd.js.map +1 -1
  107. package/bundles/material-expansion-testing.umd.min.js +2 -17
  108. package/bundles/material-expansion-testing.umd.min.js.map +1 -1
  109. package/bundles/material-expansion.umd.js +471 -433
  110. package/bundles/material-expansion.umd.js.map +1 -1
  111. package/bundles/material-expansion.umd.min.js +12 -4
  112. package/bundles/material-expansion.umd.min.js.map +1 -1
  113. package/bundles/material-form-field-testing-control.umd.js +299 -233
  114. package/bundles/material-form-field-testing-control.umd.js.map +1 -1
  115. package/bundles/material-form-field-testing-control.umd.min.js.map +1 -1
  116. package/bundles/material-form-field-testing.umd.js +301 -243
  117. package/bundles/material-form-field-testing.umd.js.map +1 -1
  118. package/bundles/material-form-field-testing.umd.min.js +3 -17
  119. package/bundles/material-form-field-testing.umd.min.js.map +1 -1
  120. package/bundles/material-form-field.umd.js +480 -417
  121. package/bundles/material-form-field.umd.js.map +1 -1
  122. package/bundles/material-form-field.umd.min.js +51 -4
  123. package/bundles/material-form-field.umd.min.js.map +1 -1
  124. package/bundles/material-grid-list-testing.umd.js +311 -260
  125. package/bundles/material-grid-list-testing.umd.js.map +1 -1
  126. package/bundles/material-grid-list-testing.umd.min.js +2 -24
  127. package/bundles/material-grid-list-testing.umd.min.js.map +1 -1
  128. package/bundles/material-grid-list.umd.js +414 -340
  129. package/bundles/material-grid-list.umd.js.map +1 -1
  130. package/bundles/material-grid-list.umd.min.js +20 -5
  131. package/bundles/material-grid-list.umd.min.js.map +1 -1
  132. package/bundles/material-icon-testing.umd.js +409 -12
  133. package/bundles/material-icon-testing.umd.js.map +1 -1
  134. package/bundles/material-icon-testing.umd.min.js +18 -3
  135. package/bundles/material-icon-testing.umd.min.js.map +1 -1
  136. package/bundles/material-icon.umd.js +404 -336
  137. package/bundles/material-icon.umd.js.map +1 -1
  138. package/bundles/material-icon.umd.min.js +2 -9
  139. package/bundles/material-icon.umd.min.js.map +1 -1
  140. package/bundles/material-input-testing.umd.js +309 -262
  141. package/bundles/material-input-testing.umd.js.map +1 -1
  142. package/bundles/material-input-testing.umd.min.js +2 -16
  143. package/bundles/material-input-testing.umd.min.js.map +1 -1
  144. package/bundles/material-input.umd.js +399 -333
  145. package/bundles/material-input.umd.js.map +1 -1
  146. package/bundles/material-input.umd.min.js +5 -18
  147. package/bundles/material-input.umd.min.js.map +1 -1
  148. package/bundles/material-list-testing.umd.js +333 -311
  149. package/bundles/material-list-testing.umd.js.map +1 -1
  150. package/bundles/material-list-testing.umd.min.js +1 -9
  151. package/bundles/material-list-testing.umd.min.js.map +1 -1
  152. package/bundles/material-list.umd.js +527 -466
  153. package/bundles/material-list.umd.js.map +1 -1
  154. package/bundles/material-list.umd.min.js +2 -10
  155. package/bundles/material-list.umd.min.js.map +1 -1
  156. package/bundles/material-menu-testing.umd.js +305 -247
  157. package/bundles/material-menu-testing.umd.js.map +1 -1
  158. package/bundles/material-menu-testing.umd.min.js +2 -17
  159. package/bundles/material-menu-testing.umd.min.js.map +1 -1
  160. package/bundles/material-menu.umd.js +476 -429
  161. package/bundles/material-menu.umd.js.map +1 -1
  162. package/bundles/material-menu.umd.min.js +3 -17
  163. package/bundles/material-menu.umd.min.js.map +1 -1
  164. package/bundles/material-paginator-testing.umd.js +302 -244
  165. package/bundles/material-paginator-testing.umd.js.map +1 -1
  166. package/bundles/material-paginator-testing.umd.min.js +2 -16
  167. package/bundles/material-paginator-testing.umd.min.js.map +1 -1
  168. package/bundles/material-paginator.umd.js +349 -280
  169. package/bundles/material-paginator.umd.js.map +1 -1
  170. package/bundles/material-paginator.umd.min.js +2 -9
  171. package/bundles/material-paginator.umd.min.js.map +1 -1
  172. package/bundles/material-progress-bar-testing.umd.js +301 -243
  173. package/bundles/material-progress-bar-testing.umd.js.map +1 -1
  174. package/bundles/material-progress-bar-testing.umd.min.js +2 -16
  175. package/bundles/material-progress-bar-testing.umd.min.js.map +1 -1
  176. package/bundles/material-progress-bar.umd.js +339 -266
  177. package/bundles/material-progress-bar.umd.js.map +1 -1
  178. package/bundles/material-progress-bar.umd.min.js +4 -3
  179. package/bundles/material-progress-bar.umd.min.js.map +1 -1
  180. package/bundles/material-progress-spinner-testing.umd.js +301 -243
  181. package/bundles/material-progress-spinner-testing.umd.js.map +1 -1
  182. package/bundles/material-progress-spinner-testing.umd.min.js +2 -16
  183. package/bundles/material-progress-spinner-testing.umd.min.js.map +1 -1
  184. package/bundles/material-progress-spinner.umd.js +420 -365
  185. package/bundles/material-progress-spinner.umd.js.map +1 -1
  186. package/bundles/material-progress-spinner.umd.min.js +3 -11
  187. package/bundles/material-progress-spinner.umd.min.js.map +1 -1
  188. package/bundles/material-radio-testing.umd.js +304 -246
  189. package/bundles/material-radio-testing.umd.js.map +1 -1
  190. package/bundles/material-radio-testing.umd.min.js +2 -17
  191. package/bundles/material-radio-testing.umd.min.js.map +1 -1
  192. package/bundles/material-radio.umd.js +405 -339
  193. package/bundles/material-radio.umd.js.map +1 -1
  194. package/bundles/material-radio.umd.min.js +2 -10
  195. package/bundles/material-radio.umd.min.js.map +1 -1
  196. package/bundles/material-select-testing.umd.js +316 -260
  197. package/bundles/material-select-testing.umd.js.map +1 -1
  198. package/bundles/material-select-testing.umd.min.js +2 -16
  199. package/bundles/material-select-testing.umd.min.js.map +1 -1
  200. package/bundles/material-select.umd.js +469 -389
  201. package/bundles/material-select.umd.js.map +1 -1
  202. package/bundles/material-select.umd.min.js +5 -12
  203. package/bundles/material-select.umd.min.js.map +1 -1
  204. package/bundles/material-sidenav-testing.umd.js +303 -252
  205. package/bundles/material-sidenav-testing.umd.js.map +1 -1
  206. package/bundles/material-sidenav-testing.umd.min.js +1 -23
  207. package/bundles/material-sidenav-testing.umd.min.js.map +1 -1
  208. package/bundles/material-sidenav.umd.js +535 -496
  209. package/bundles/material-sidenav.umd.js.map +1 -1
  210. package/bundles/material-sidenav.umd.min.js +3 -3
  211. package/bundles/material-sidenav.umd.min.js.map +1 -1
  212. package/bundles/material-slide-toggle-testing.umd.js +302 -244
  213. package/bundles/material-slide-toggle-testing.umd.js.map +1 -1
  214. package/bundles/material-slide-toggle-testing.umd.min.js +2 -16
  215. package/bundles/material-slide-toggle-testing.umd.min.js.map +1 -1
  216. package/bundles/material-slide-toggle.umd.js +373 -314
  217. package/bundles/material-slide-toggle.umd.js.map +1 -1
  218. package/bundles/material-slide-toggle.umd.min.js +2 -9
  219. package/bundles/material-slide-toggle.umd.min.js.map +1 -1
  220. package/bundles/material-slider-testing.umd.js +302 -236
  221. package/bundles/material-slider-testing.umd.js.map +1 -1
  222. package/bundles/material-slider-testing.umd.min.js +2 -9
  223. package/bundles/material-slider-testing.umd.min.js.map +1 -1
  224. package/bundles/material-slider.umd.js +479 -448
  225. package/bundles/material-slider.umd.js.map +1 -1
  226. package/bundles/material-slider.umd.min.js +4 -3
  227. package/bundles/material-slider.umd.min.js.map +1 -1
  228. package/bundles/material-snack-bar-testing.umd.js +304 -246
  229. package/bundles/material-snack-bar-testing.umd.js.map +1 -1
  230. package/bundles/material-snack-bar-testing.umd.min.js +2 -16
  231. package/bundles/material-snack-bar-testing.umd.min.js.map +1 -1
  232. package/bundles/material-snack-bar.umd.js +394 -317
  233. package/bundles/material-snack-bar.umd.js.map +1 -1
  234. package/bundles/material-snack-bar.umd.min.js +26 -2
  235. package/bundles/material-snack-bar.umd.min.js.map +1 -1
  236. package/bundles/material-sort-testing.umd.js +302 -243
  237. package/bundles/material-sort-testing.umd.js.map +1 -1
  238. package/bundles/material-sort-testing.umd.min.js +2 -17
  239. package/bundles/material-sort-testing.umd.min.js.map +1 -1
  240. package/bundles/material-sort.umd.js +383 -326
  241. package/bundles/material-sort.umd.js.map +1 -1
  242. package/bundles/material-sort.umd.min.js +3 -33
  243. package/bundles/material-sort.umd.min.js.map +1 -1
  244. package/bundles/material-stepper-testing.umd.js +727 -0
  245. package/bundles/material-stepper-testing.umd.js.map +1 -0
  246. package/bundles/material-stepper-testing.umd.min.js +30 -0
  247. package/bundles/material-stepper-testing.umd.min.js.map +1 -0
  248. package/bundles/material-stepper.umd.js +496 -446
  249. package/bundles/material-stepper.umd.js.map +1 -1
  250. package/bundles/material-stepper.umd.min.js +4 -11
  251. package/bundles/material-stepper.umd.min.js.map +1 -1
  252. package/bundles/material-table-testing.umd.js +317 -265
  253. package/bundles/material-table-testing.umd.js.map +1 -1
  254. package/bundles/material-table-testing.umd.min.js +2 -24
  255. package/bundles/material-table-testing.umd.min.js.map +1 -1
  256. package/bundles/material-table.umd.js +521 -465
  257. package/bundles/material-table.umd.js.map +1 -1
  258. package/bundles/material-table.umd.min.js +4 -11
  259. package/bundles/material-table.umd.min.js.map +1 -1
  260. package/bundles/material-tabs-testing.umd.js +303 -244
  261. package/bundles/material-tabs-testing.umd.js.map +1 -1
  262. package/bundles/material-tabs-testing.umd.min.js +1 -16
  263. package/bundles/material-tabs-testing.umd.min.js.map +1 -1
  264. package/bundles/material-tabs.umd.js +677 -646
  265. package/bundles/material-tabs.umd.js.map +1 -1
  266. package/bundles/material-tabs.umd.min.js +29 -4
  267. package/bundles/material-tabs.umd.min.js.map +1 -1
  268. package/bundles/material-toolbar-testing.umd.js +301 -243
  269. package/bundles/material-toolbar-testing.umd.js.map +1 -1
  270. package/bundles/material-toolbar-testing.umd.min.js +2 -16
  271. package/bundles/material-toolbar-testing.umd.min.js.map +1 -1
  272. package/bundles/material-toolbar.umd.js +350 -286
  273. package/bundles/material-toolbar.umd.js.map +1 -1
  274. package/bundles/material-toolbar.umd.min.js +4 -3
  275. package/bundles/material-toolbar.umd.min.js.map +1 -1
  276. package/bundles/material-tooltip-testing.umd.js +301 -243
  277. package/bundles/material-tooltip-testing.umd.js.map +1 -1
  278. package/bundles/material-tooltip-testing.umd.min.js +2 -16
  279. package/bundles/material-tooltip-testing.umd.min.js.map +1 -1
  280. package/bundles/material-tooltip.umd.js +424 -324
  281. package/bundles/material-tooltip.umd.js.map +1 -1
  282. package/bundles/material-tooltip.umd.min.js +11 -3
  283. package/bundles/material-tooltip.umd.min.js.map +1 -1
  284. package/bundles/material-tree.umd.js +446 -385
  285. package/bundles/material-tree.umd.js.map +1 -1
  286. package/bundles/material-tree.umd.min.js +3 -3
  287. package/bundles/material-tree.umd.min.js.map +1 -1
  288. package/button/index.metadata.json +1 -1
  289. package/chips/chip-default-options.d.ts +1 -1
  290. package/chips/chip-input.d.ts +1 -1
  291. package/chips/chip.d.ts +2 -2
  292. package/chips/index.metadata.json +1 -1
  293. package/chips/testing/chip-harness-filters.d.ts +28 -0
  294. package/chips/testing/chip-harness.d.ts +41 -0
  295. package/chips/testing/chip-input-harness.d.ts +47 -0
  296. package/chips/testing/chip-list-harness.d.ts +49 -0
  297. package/chips/testing/chip-remove-harness.d.ts +22 -0
  298. package/chips/testing/index.d.ts +8 -0
  299. package/chips/testing/package.json +9 -0
  300. package/chips/testing/public-api.d.ts +12 -0
  301. package/core/common-behaviors/color.d.ts +2 -0
  302. package/core/common-behaviors/constructor.d.ts +7 -0
  303. package/core/common-behaviors/disable-ripple.d.ts +2 -2
  304. package/core/common-behaviors/tabindex.d.ts +4 -2
  305. package/core/datetime/date-adapter.d.ts +9 -2
  306. package/core/index.metadata.json +1 -1
  307. package/core/option/optgroup.d.ts +8 -6
  308. package/core/option/option.d.ts +12 -9
  309. package/core/style/_vendor-prefixes.scss +5 -0
  310. package/datepicker/_datepicker-theme.scss +42 -21
  311. package/datepicker/calendar-body.d.ts +15 -4
  312. package/datepicker/calendar.d.ts +2 -7
  313. package/datepicker/date-range-input.d.ts +0 -5
  314. package/datepicker/date-range-selection-strategy.d.ts +5 -1
  315. package/datepicker/datepicker-base.d.ts +9 -11
  316. package/datepicker/datepicker-input-base.d.ts +0 -5
  317. package/datepicker/index.d.ts +4 -3
  318. package/datepicker/index.metadata.json +1 -1
  319. package/datepicker/month-view.d.ts +5 -9
  320. package/datepicker/multi-year-view.d.ts +3 -6
  321. package/datepicker/public-api.d.ts +1 -1
  322. package/datepicker/testing/calendar-cell-harness.d.ts +64 -0
  323. package/datepicker/testing/calendar-harness.d.ts +53 -0
  324. package/datepicker/testing/date-range-input-harness.d.ts +59 -0
  325. package/datepicker/testing/datepicker-harness-filters.d.ts +45 -0
  326. package/datepicker/testing/datepicker-input-harness-base.d.ts +43 -0
  327. package/datepicker/testing/datepicker-input-harness.d.ts +36 -0
  328. package/datepicker/testing/datepicker-toggle-harness.d.ts +28 -0
  329. package/datepicker/testing/datepicker-trigger-harness-base.d.ts +44 -0
  330. package/datepicker/testing/index.d.ts +8 -0
  331. package/datepicker/testing/package.json +9 -0
  332. package/datepicker/testing/public-api.d.ts +13 -0
  333. package/datepicker/year-view.d.ts +3 -6
  334. package/dialog/dialog-config.d.ts +1 -1
  335. package/dialog/dialog-container.d.ts +39 -22
  336. package/dialog/dialog-ref.d.ts +3 -3
  337. package/dialog/dialog.d.ts +25 -14
  338. package/dialog/index.metadata.json +1 -1
  339. package/esm2015/autocomplete/autocomplete-module.js +10 -5
  340. package/esm2015/autocomplete/autocomplete-origin.js +15 -9
  341. package/esm2015/autocomplete/autocomplete-trigger.js +73 -53
  342. package/esm2015/autocomplete/autocomplete.js +35 -22
  343. package/esm2015/autocomplete/testing/autocomplete-harness-filters.js +1 -0
  344. package/esm2015/badge/badge.js +15 -7
  345. package/esm2015/badge/testing/badge-harness-filters.js +1 -0
  346. package/esm2015/bottom-sheet/bottom-sheet-container.js +2 -2
  347. package/esm2015/bottom-sheet/bottom-sheet-ref.js +3 -3
  348. package/esm2015/bottom-sheet/bottom-sheet.js +14 -13
  349. package/esm2015/bottom-sheet/testing/bottom-sheet-harness-filters.js +1 -0
  350. package/esm2015/button/button.js +3 -3
  351. package/esm2015/button/testing/button-harness-filters.js +1 -0
  352. package/esm2015/button-toggle/button-toggle.js +2 -2
  353. package/esm2015/button-toggle/testing/button-toggle-group-harness-filters.js +1 -0
  354. package/esm2015/button-toggle/testing/button-toggle-group-harness.js +2 -2
  355. package/esm2015/button-toggle/testing/button-toggle-harness-filters.js +1 -0
  356. package/esm2015/button-toggle/testing/button-toggle-harness.js +2 -2
  357. package/esm2015/card/testing/card-harness-filters.js +1 -0
  358. package/esm2015/card/testing/card-harness.js +2 -2
  359. package/esm2015/checkbox/checkbox.js +2 -2
  360. package/esm2015/checkbox/testing/checkbox-harness-filters.js +1 -0
  361. package/esm2015/checkbox/testing/checkbox-harness.js +2 -2
  362. package/esm2015/chips/chip-default-options.js +1 -1
  363. package/esm2015/chips/chip-input.js +3 -8
  364. package/esm2015/chips/chip-list.js +7 -13
  365. package/esm2015/chips/chip-text-control.js +1 -0
  366. package/esm2015/chips/chip.js +1 -2
  367. package/esm2015/chips/testing/chip-harness-filters.js +2 -0
  368. package/esm2015/chips/testing/chip-harness.js +82 -0
  369. package/esm2015/chips/testing/chip-input-harness.js +101 -0
  370. package/esm2015/chips/testing/chip-list-harness.js +94 -0
  371. package/esm2015/chips/testing/chip-remove-harness.js +29 -0
  372. package/esm2015/chips/testing/index.js +9 -0
  373. package/esm2015/chips/testing/public-api.js +13 -0
  374. package/esm2015/chips/testing/testing.externs.js +0 -0
  375. package/esm2015/core/common-behaviors/color.js +3 -2
  376. package/esm2015/core/common-behaviors/common-module.js +6 -2
  377. package/esm2015/core/common-behaviors/constructor.js +2 -1
  378. package/esm2015/core/common-behaviors/disable-ripple.js +7 -3
  379. package/esm2015/core/common-behaviors/initialized.js +2 -2
  380. package/esm2015/core/common-behaviors/tabindex.js +11 -4
  381. package/esm2015/core/datetime/date-adapter.js +12 -3
  382. package/esm2015/core/datetime/native-date-adapter.js +11 -9
  383. package/esm2015/core/option/optgroup.js +16 -11
  384. package/esm2015/core/option/option.js +29 -16
  385. package/esm2015/core/testing/optgroup-harness-filters.js +1 -0
  386. package/esm2015/core/testing/option-harness-filters.js +1 -0
  387. package/esm2015/core/version.js +1 -1
  388. package/esm2015/datepicker/calendar-body.js +20 -5
  389. package/esm2015/datepicker/calendar.js +13 -18
  390. package/esm2015/datepicker/date-range-input-parts.js +5 -5
  391. package/esm2015/datepicker/date-range-input.js +15 -16
  392. package/esm2015/datepicker/date-range-picker.js +6 -2
  393. package/esm2015/datepicker/date-range-selection-strategy.js +12 -2
  394. package/esm2015/datepicker/date-selection-model.js +2 -2
  395. package/esm2015/datepicker/datepicker-base.js +17 -19
  396. package/esm2015/datepicker/datepicker-input-base.js +13 -18
  397. package/esm2015/datepicker/datepicker-input.js +7 -3
  398. package/esm2015/datepicker/datepicker-module.js +2 -7
  399. package/esm2015/datepicker/datepicker-toggle.js +3 -1
  400. package/esm2015/datepicker/index.js +5 -4
  401. package/esm2015/datepicker/month-view.js +19 -18
  402. package/esm2015/datepicker/multi-year-view.js +12 -16
  403. package/esm2015/datepicker/public-api.js +2 -2
  404. package/esm2015/datepicker/testing/calendar-cell-harness.js +181 -0
  405. package/esm2015/datepicker/testing/calendar-harness.js +91 -0
  406. package/esm2015/datepicker/testing/date-range-input-harness.js +116 -0
  407. package/esm2015/datepicker/testing/datepicker-harness-filters.js +9 -0
  408. package/esm2015/datepicker/testing/datepicker-input-harness-base.js +100 -0
  409. package/esm2015/datepicker/testing/datepicker-input-harness.js +69 -0
  410. package/esm2015/datepicker/testing/datepicker-toggle-harness.js +48 -0
  411. package/esm2015/datepicker/testing/datepicker-trigger-harness-base.js +77 -0
  412. package/esm2015/datepicker/testing/index.js +9 -0
  413. package/esm2015/datepicker/testing/public-api.js +14 -0
  414. package/esm2015/datepicker/testing/testing.externs.js +0 -0
  415. package/esm2015/datepicker/year-view.js +18 -20
  416. package/esm2015/dialog/dialog-config.js +1 -1
  417. package/esm2015/dialog/dialog-container.js +73 -50
  418. package/esm2015/dialog/dialog-content-directives.js +9 -3
  419. package/esm2015/dialog/dialog-ref.js +8 -8
  420. package/esm2015/dialog/dialog.js +58 -29
  421. package/esm2015/dialog/testing/dialog-harness-filters.js +1 -0
  422. package/esm2015/divider/testing/divider-harness-filters.js +1 -0
  423. package/esm2015/divider/testing/divider-harness.js +2 -2
  424. package/esm2015/expansion/accordion.js +3 -20
  425. package/esm2015/expansion/expansion-panel-header.js +7 -13
  426. package/esm2015/expansion/expansion-panel.js +7 -6
  427. package/esm2015/expansion/testing/expansion-harness-filters.js +1 -0
  428. package/esm2015/form-field/form-field-control.js +1 -1
  429. package/esm2015/form-field/form-field.js +26 -17
  430. package/esm2015/form-field/testing/form-field-harness-filters.js +1 -0
  431. package/esm2015/grid-list/grid-list.js +2 -2
  432. package/esm2015/grid-list/testing/grid-list-harness-filters.js +1 -0
  433. package/esm2015/grid-list/tile-coordinator.js +2 -2
  434. package/esm2015/grid-list/tile-styler.js +4 -3
  435. package/esm2015/icon/icon-registry.js +44 -52
  436. package/esm2015/icon/icon.js +13 -2
  437. package/esm2015/icon/testing/icon-harness-filters.js +9 -0
  438. package/esm2015/icon/testing/icon-harness.js +63 -0
  439. package/esm2015/icon/testing/public-api.js +3 -1
  440. package/esm2015/input/input.js +17 -10
  441. package/esm2015/input/testing/input-harness-filters.js +1 -0
  442. package/esm2015/input/testing/input-harness.js +7 -7
  443. package/esm2015/list/list.js +2 -2
  444. package/esm2015/list/selection-list.js +33 -31
  445. package/esm2015/list/testing/action-list-harness.js +2 -2
  446. package/esm2015/list/testing/list-harness-filters.js +1 -0
  447. package/esm2015/list/testing/list-harness.js +2 -2
  448. package/esm2015/list/testing/list-item-harness-base.js +2 -2
  449. package/esm2015/list/testing/nav-list-harness.js +2 -2
  450. package/esm2015/list/testing/selection-list-harness.js +3 -3
  451. package/esm2015/menu/menu-positions.js +1 -0
  452. package/esm2015/menu/menu-trigger.js +12 -6
  453. package/esm2015/menu/menu.js +11 -14
  454. package/esm2015/menu/testing/menu-harness-filters.js +1 -0
  455. package/esm2015/paginator/paginator.js +6 -3
  456. package/esm2015/paginator/testing/paginator-harness-filters.js +1 -0
  457. package/esm2015/progress-bar/testing/progress-bar-harness-filters.js +1 -0
  458. package/esm2015/progress-bar/testing/progress-bar-harness.js +2 -2
  459. package/esm2015/progress-spinner/progress-spinner.js +25 -16
  460. package/esm2015/progress-spinner/testing/progress-spinner-harness-filters.js +1 -0
  461. package/esm2015/progress-spinner/testing/progress-spinner-harness.js +2 -2
  462. package/esm2015/radio/radio.js +1 -1
  463. package/esm2015/radio/testing/radio-harness-filters.js +1 -0
  464. package/esm2015/radio/testing/radio-harness.js +3 -3
  465. package/esm2015/select/select.js +71 -57
  466. package/esm2015/select/testing/select-harness-filters.js +1 -0
  467. package/esm2015/select/testing/select-harness.js +2 -3
  468. package/esm2015/sidenav/drawer.js +23 -28
  469. package/esm2015/sidenav/testing/drawer-harness-filters.js +1 -0
  470. package/esm2015/slide-toggle/testing/slide-toggle-harness-filters.js +1 -0
  471. package/esm2015/slide-toggle/testing/slide-toggle-harness.js +2 -2
  472. package/esm2015/slider/slider.js +28 -31
  473. package/esm2015/slider/testing/slider-harness-filters.js +1 -0
  474. package/esm2015/slider/testing/slider-harness.js +2 -2
  475. package/esm2015/snack-bar/snack-bar-container.js +3 -3
  476. package/esm2015/snack-bar/snack-bar-ref.js +3 -3
  477. package/esm2015/snack-bar/snack-bar.js +13 -9
  478. package/esm2015/snack-bar/testing/snack-bar-harness-filters.js +1 -0
  479. package/esm2015/sort/sort-direction.js +1 -0
  480. package/esm2015/sort/sort-header.js +6 -3
  481. package/esm2015/sort/sort.js +11 -8
  482. package/esm2015/sort/testing/sort-harness-filters.js +1 -0
  483. package/esm2015/stepper/step-header.js +2 -2
  484. package/esm2015/stepper/stepper-button.js +3 -1
  485. package/esm2015/stepper/stepper.js +7 -4
  486. package/esm2015/stepper/testing/index.js +9 -0
  487. package/esm2015/stepper/testing/public-api.js +12 -0
  488. package/esm2015/stepper/testing/step-harness-filters.js +2 -0
  489. package/esm2015/stepper/testing/step-harness.js +132 -0
  490. package/esm2015/stepper/testing/stepper-button-harnesses.js +55 -0
  491. package/esm2015/stepper/testing/stepper-harness.js +57 -0
  492. package/esm2015/stepper/testing/testing.externs.js +0 -0
  493. package/esm2015/table/cell.js +15 -26
  494. package/esm2015/table/table-data-source.js +14 -1
  495. package/esm2015/table/table.js +11 -4
  496. package/esm2015/table/testing/table-harness-filters.js +1 -0
  497. package/esm2015/tabs/paginated-tab-header.js +3 -10
  498. package/esm2015/tabs/tab-nav-bar/tab-nav-bar.js +3 -3
  499. package/esm2015/tabs/tab.js +17 -10
  500. package/esm2015/tabs/testing/tab-harness-filters.js +1 -0
  501. package/esm2015/toolbar/testing/toolbar-harness-filters.js +1 -0
  502. package/esm2015/toolbar/testing/toolbar-harness.js +2 -2
  503. package/esm2015/toolbar/toolbar.js +15 -17
  504. package/esm2015/tooltip/testing/tooltip-harness-filters.js +1 -0
  505. package/esm2015/tooltip/tooltip.js +53 -31
  506. package/esm2015/tree/node.js +2 -2
  507. package/esm2015/tree/padding.js +7 -1
  508. package/esm2015/tree/toggle.js +8 -4
  509. package/expansion/expansion-panel-header.d.ts +6 -12
  510. package/expansion/expansion-panel.d.ts +5 -4
  511. package/expansion/index.metadata.json +1 -1
  512. package/fesm2015/autocomplete.js +128 -84
  513. package/fesm2015/autocomplete.js.map +1 -1
  514. package/fesm2015/badge.js +14 -6
  515. package/fesm2015/badge.js.map +1 -1
  516. package/fesm2015/bottom-sheet.js +17 -16
  517. package/fesm2015/bottom-sheet.js.map +1 -1
  518. package/fesm2015/button-toggle/testing.js +2 -2
  519. package/fesm2015/button-toggle/testing.js.map +1 -1
  520. package/fesm2015/button-toggle.js +1 -1
  521. package/fesm2015/button-toggle.js.map +1 -1
  522. package/fesm2015/button.js +2 -2
  523. package/fesm2015/button.js.map +1 -1
  524. package/fesm2015/card/testing.js +1 -1
  525. package/fesm2015/card/testing.js.map +1 -1
  526. package/fesm2015/checkbox/testing.js +1 -1
  527. package/fesm2015/checkbox/testing.js.map +1 -1
  528. package/fesm2015/checkbox.js +1 -1
  529. package/fesm2015/checkbox.js.map +1 -1
  530. package/fesm2015/chips/testing.js +316 -0
  531. package/fesm2015/chips/testing.js.map +1 -0
  532. package/fesm2015/chips.js +7 -19
  533. package/fesm2015/chips.js.map +1 -1
  534. package/fesm2015/core.js +87 -42
  535. package/fesm2015/core.js.map +1 -1
  536. package/fesm2015/datepicker/testing.js +690 -0
  537. package/fesm2015/datepicker/testing.js.map +1 -0
  538. package/fesm2015/datepicker.js +146 -134
  539. package/fesm2015/datepicker.js.map +1 -1
  540. package/fesm2015/dialog.js +143 -85
  541. package/fesm2015/dialog.js.map +1 -1
  542. package/fesm2015/divider/testing.js +1 -1
  543. package/fesm2015/divider/testing.js.map +1 -1
  544. package/fesm2015/expansion.js +9 -30
  545. package/fesm2015/expansion.js.map +1 -1
  546. package/fesm2015/form-field.js +25 -16
  547. package/fesm2015/form-field.js.map +1 -1
  548. package/fesm2015/grid-list.js +5 -4
  549. package/fesm2015/grid-list.js.map +1 -1
  550. package/fesm2015/icon/testing.js +72 -1
  551. package/fesm2015/icon/testing.js.map +1 -1
  552. package/fesm2015/icon.js +56 -53
  553. package/fesm2015/icon.js.map +1 -1
  554. package/fesm2015/input/testing.js +6 -6
  555. package/fesm2015/input/testing.js.map +1 -1
  556. package/fesm2015/input.js +15 -8
  557. package/fesm2015/input.js.map +1 -1
  558. package/fesm2015/list/testing.js +6 -6
  559. package/fesm2015/list/testing.js.map +1 -1
  560. package/fesm2015/list.js +33 -31
  561. package/fesm2015/list.js.map +1 -1
  562. package/fesm2015/menu.js +20 -17
  563. package/fesm2015/menu.js.map +1 -1
  564. package/fesm2015/paginator.js +5 -2
  565. package/fesm2015/paginator.js.map +1 -1
  566. package/fesm2015/progress-bar/testing.js +1 -1
  567. package/fesm2015/progress-bar/testing.js.map +1 -1
  568. package/fesm2015/progress-spinner/testing.js +1 -1
  569. package/fesm2015/progress-spinner/testing.js.map +1 -1
  570. package/fesm2015/progress-spinner.js +24 -15
  571. package/fesm2015/progress-spinner.js.map +1 -1
  572. package/fesm2015/radio/testing.js +2 -2
  573. package/fesm2015/radio/testing.js.map +1 -1
  574. package/fesm2015/radio.js.map +1 -1
  575. package/fesm2015/select/testing.js +1 -2
  576. package/fesm2015/select/testing.js.map +1 -1
  577. package/fesm2015/select.js +70 -56
  578. package/fesm2015/select.js.map +1 -1
  579. package/fesm2015/sidenav.js +22 -27
  580. package/fesm2015/sidenav.js.map +1 -1
  581. package/fesm2015/slide-toggle/testing.js +1 -1
  582. package/fesm2015/slide-toggle/testing.js.map +1 -1
  583. package/fesm2015/slider/testing.js +1 -1
  584. package/fesm2015/slider/testing.js.map +1 -1
  585. package/fesm2015/slider.js +27 -30
  586. package/fesm2015/slider.js.map +1 -1
  587. package/fesm2015/snack-bar.js +17 -13
  588. package/fesm2015/snack-bar.js.map +1 -1
  589. package/fesm2015/sort.js +15 -9
  590. package/fesm2015/sort.js.map +1 -1
  591. package/fesm2015/stepper/testing.js +258 -0
  592. package/fesm2015/stepper/testing.js.map +1 -0
  593. package/fesm2015/stepper.js +10 -5
  594. package/fesm2015/stepper.js.map +1 -1
  595. package/fesm2015/table.js +37 -28
  596. package/fesm2015/table.js.map +1 -1
  597. package/fesm2015/tabs.js +20 -20
  598. package/fesm2015/tabs.js.map +1 -1
  599. package/fesm2015/toolbar/testing.js +1 -1
  600. package/fesm2015/toolbar/testing.js.map +1 -1
  601. package/fesm2015/toolbar.js +14 -16
  602. package/fesm2015/toolbar.js.map +1 -1
  603. package/fesm2015/tooltip.js +52 -30
  604. package/fesm2015/tooltip.js.map +1 -1
  605. package/fesm2015/tree.js +13 -4
  606. package/fesm2015/tree.js.map +1 -1
  607. package/form-field/form-field-control.d.ts +5 -0
  608. package/form-field/form-field.d.ts +8 -5
  609. package/form-field/index.metadata.json +1 -1
  610. package/icon/icon-registry.d.ts +4 -6
  611. package/icon/icon.d.ts +3 -1
  612. package/icon/index.metadata.json +1 -1
  613. package/icon/testing/icon-harness-filters.d.ts +22 -0
  614. package/icon/testing/icon-harness.d.ts +29 -0
  615. package/icon/testing/index.metadata.json +1 -1
  616. package/icon/testing/public-api.d.ts +2 -0
  617. package/input/index.metadata.json +1 -1
  618. package/input/input.d.ts +6 -3
  619. package/list/index.metadata.json +1 -1
  620. package/list/selection-list.d.ts +3 -7
  621. package/menu/index.metadata.json +1 -1
  622. package/package.json +2 -2
  623. package/paginator/index.metadata.json +1 -1
  624. package/paginator/paginator.d.ts +5 -0
  625. package/prebuilt-themes/deeppurple-amber.css +1 -1
  626. package/prebuilt-themes/indigo-pink.css +1 -1
  627. package/prebuilt-themes/pink-bluegrey.css +1 -1
  628. package/prebuilt-themes/purple-green.css +1 -1
  629. package/progress-spinner/index.metadata.json +1 -1
  630. package/progress-spinner/progress-spinner.d.ts +9 -5
  631. package/radio/index.metadata.json +1 -1
  632. package/radio/radio.d.ts +2 -2
  633. package/schematics/ng-add/index.js +1 -1
  634. package/schematics/ng-generate/tree/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.html.template +1 -1
  635. package/schematics/ng-update/data/index.js +1 -1
  636. package/select/index.metadata.json +1 -1
  637. package/select/select.d.ts +9 -8
  638. package/sidenav/drawer.d.ts +5 -5
  639. package/sidenav/index.metadata.json +1 -1
  640. package/slider/index.metadata.json +1 -1
  641. package/slider/slider.d.ts +8 -10
  642. package/snack-bar/index.metadata.json +1 -1
  643. package/sort/index.metadata.json +1 -1
  644. package/stepper/index.metadata.json +1 -1
  645. package/stepper/stepper.d.ts +3 -1
  646. package/stepper/testing/index.d.ts +8 -0
  647. package/stepper/testing/package.json +9 -0
  648. package/stepper/testing/public-api.d.ts +11 -0
  649. package/stepper/testing/step-harness-filters.d.ts +37 -0
  650. package/stepper/testing/step-harness.d.ts +57 -0
  651. package/stepper/testing/stepper-button-harnesses.d.ts +41 -0
  652. package/stepper/testing/stepper-harness.d.ts +35 -0
  653. package/table/cell.d.ts +9 -5
  654. package/table/index.metadata.json +1 -1
  655. package/table/table.d.ts +2 -0
  656. package/tabs/index.metadata.json +1 -1
  657. package/tabs/tab.d.ts +8 -1
  658. package/toolbar/index.metadata.json +1 -1
  659. package/tooltip/index.metadata.json +1 -1
  660. package/tooltip/tooltip.d.ts +6 -2
  661. package/tree/index.metadata.json +1 -1
  662. package/tree/padding.d.ts +4 -2
  663. package/tree/toggle.d.ts +2 -1
@@ -1,13 +1,13 @@
1
1
  import { Overlay, OverlayConfig, OverlayContainer, OverlayModule } from '@angular/cdk/overlay';
2
2
  import { BasePortalOutlet, CdkPortalOutlet, ComponentPortal, TemplatePortal, PortalModule } from '@angular/cdk/portal';
3
- import { EventEmitter, Component, ViewEncapsulation, ChangeDetectionStrategy, ElementRef, ChangeDetectorRef, Optional, Inject, ViewChild, InjectionToken, Injector, TemplateRef, Injectable, SkipSelf, Directive, Input, NgModule } from '@angular/core';
3
+ import { EventEmitter, Directive, ElementRef, ChangeDetectorRef, Optional, Inject, ViewChild, Component, ViewEncapsulation, ChangeDetectionStrategy, InjectionToken, Injector, TemplateRef, Type, Injectable, SkipSelf, Input, NgModule } from '@angular/core';
4
4
  import { MatCommonModule } from '@angular/material/core';
5
5
  import { Directionality } from '@angular/cdk/bidi';
6
6
  import { DOCUMENT, Location } from '@angular/common';
7
7
  import { Subject, defer, of } from 'rxjs';
8
8
  import { filter, take, startWith } from 'rxjs/operators';
9
- import { trigger, state, style, transition, animate } from '@angular/animations';
10
9
  import { FocusTrapFactory, FocusMonitor } from '@angular/cdk/a11y';
10
+ import { trigger, state, style, transition, animate } from '@angular/animations';
11
11
  import { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';
12
12
 
13
13
  /**
@@ -103,11 +103,10 @@ function throwMatDialogContentAlreadyAttachedError() {
103
103
  throw Error('Attempting to attach dialog content after content is already attached');
104
104
  }
105
105
  /**
106
- * Internal component that wraps user-provided dialog content.
107
- * Animation is based on https://material.io/guidelines/motion/choreography.html.
108
- * @docs-private
106
+ * Base class for the `MatDialogContainer`. The base class does not implement
107
+ * animations as these are left to implementers of the dialog container.
109
108
  */
110
- class MatDialogContainer extends BasePortalOutlet {
109
+ class _MatDialogContainerBase extends BasePortalOutlet {
111
110
  constructor(_elementRef, _focusTrapFactory, _changeDetectorRef, _document,
112
111
  /** The dialog configuration. */
113
112
  _config, _focusMonitor) {
@@ -117,6 +116,8 @@ class MatDialogContainer extends BasePortalOutlet {
117
116
  this._changeDetectorRef = _changeDetectorRef;
118
117
  this._config = _config;
119
118
  this._focusMonitor = _focusMonitor;
119
+ /** Emits when an animation state changes. */
120
+ this._animationStateChanged = new EventEmitter();
120
121
  /** Element that was focused before the dialog was opened. Save this to restore upon close. */
121
122
  this._elementFocusedBeforeDialogWasOpened = null;
122
123
  /**
@@ -125,10 +126,6 @@ class MatDialogContainer extends BasePortalOutlet {
125
126
  * after the dialog is closed.
126
127
  */
127
128
  this._closeInteractionType = null;
128
- /** State of the dialog animation. */
129
- this._state = 'enter';
130
- /** Emits when an animation state changes. */
131
- this._animationStateChanged = new EventEmitter();
132
129
  /**
133
130
  * Attaches a DOM portal to the dialog container.
134
131
  * @param portal Portal to be attached.
@@ -136,24 +133,32 @@ class MatDialogContainer extends BasePortalOutlet {
136
133
  * @breaking-change 10.0.0
137
134
  */
138
135
  this.attachDomPortal = (portal) => {
139
- if (this._portalOutlet.hasAttached()) {
136
+ if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {
140
137
  throwMatDialogContentAlreadyAttachedError();
141
138
  }
142
- this._setupFocusTrap();
143
139
  return this._portalOutlet.attachDomPortal(portal);
144
140
  };
145
141
  this._ariaLabelledBy = _config.ariaLabelledBy || null;
146
142
  this._document = _document;
147
143
  }
144
+ /** Initializes the dialog container with the attached content. */
145
+ _initializeWithAttachedContent() {
146
+ this._setupFocusTrap();
147
+ // Save the previously focused element. This element will be re-focused
148
+ // when the dialog closes.
149
+ this._capturePreviouslyFocusedElement();
150
+ // Move focus onto the dialog immediately in order to prevent the user
151
+ // from accidentally opening multiple dialogs at the same time.
152
+ this._focusDialogContainer();
153
+ }
148
154
  /**
149
155
  * Attach a ComponentPortal as content to this dialog container.
150
156
  * @param portal Portal to be attached as the dialog content.
151
157
  */
152
158
  attachComponentPortal(portal) {
153
- if (this._portalOutlet.hasAttached()) {
159
+ if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {
154
160
  throwMatDialogContentAlreadyAttachedError();
155
161
  }
156
- this._setupFocusTrap();
157
162
  return this._portalOutlet.attachComponentPortal(portal);
158
163
  }
159
164
  /**
@@ -161,10 +166,9 @@ class MatDialogContainer extends BasePortalOutlet {
161
166
  * @param portal Portal to be attached as the dialog content.
162
167
  */
163
168
  attachTemplatePortal(portal) {
164
- if (this._portalOutlet.hasAttached()) {
169
+ if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {
165
170
  throwMatDialogContentAlreadyAttachedError();
166
171
  }
167
- this._setupFocusTrap();
168
172
  return this._portalOutlet.attachTemplatePortal(portal);
169
173
  }
170
174
  /** Moves focus back into the dialog if it was moved out. */
@@ -220,23 +224,21 @@ class MatDialogContainer extends BasePortalOutlet {
220
224
  this._focusTrap.destroy();
221
225
  }
222
226
  }
223
- /**
224
- * Sets up the focus trand and saves a reference to the
225
- * element that was focused before the dialog was opened.
226
- */
227
+ /** Sets up the focus trap. */
227
228
  _setupFocusTrap() {
228
- if (!this._focusTrap) {
229
- this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);
230
- }
229
+ this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);
230
+ }
231
+ /** Captures the element that was focused before the dialog was opened. */
232
+ _capturePreviouslyFocusedElement() {
231
233
  if (this._document) {
232
234
  this._elementFocusedBeforeDialogWasOpened = this._document.activeElement;
233
- // Note that there is no focus method when rendering on the server.
234
- if (this._elementRef.nativeElement.focus) {
235
- // Move focus onto the dialog immediately in order to prevent the user from accidentally
236
- // opening multiple dialogs at the same time. Needs to be async, because the element
237
- // may not be focusable immediately.
238
- Promise.resolve().then(() => this._elementRef.nativeElement.focus());
239
- }
235
+ }
236
+ }
237
+ /** Focuses the dialog container. */
238
+ _focusDialogContainer() {
239
+ // Note that there is no focus method when rendering on the server.
240
+ if (this._elementRef.nativeElement.focus) {
241
+ this._elementRef.nativeElement.focus();
240
242
  }
241
243
  }
242
244
  /** Returns whether focus is inside the dialog. */
@@ -245,19 +247,51 @@ class MatDialogContainer extends BasePortalOutlet {
245
247
  const activeElement = this._document.activeElement;
246
248
  return element === activeElement || element.contains(activeElement);
247
249
  }
250
+ }
251
+ _MatDialogContainerBase.decorators = [
252
+ { type: Directive }
253
+ ];
254
+ _MatDialogContainerBase.ctorParameters = () => [
255
+ { type: ElementRef },
256
+ { type: FocusTrapFactory },
257
+ { type: ChangeDetectorRef },
258
+ { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] }] },
259
+ { type: MatDialogConfig },
260
+ { type: FocusMonitor }
261
+ ];
262
+ _MatDialogContainerBase.propDecorators = {
263
+ _portalOutlet: [{ type: ViewChild, args: [CdkPortalOutlet, { static: true },] }]
264
+ };
265
+ /**
266
+ * Internal component that wraps user-provided dialog content.
267
+ * Animation is based on https://material.io/guidelines/motion/choreography.html.
268
+ * @docs-private
269
+ */
270
+ class MatDialogContainer extends _MatDialogContainerBase {
271
+ constructor() {
272
+ super(...arguments);
273
+ /** State of the dialog animation. */
274
+ this._state = 'enter';
275
+ }
248
276
  /** Callback, invoked whenever an animation on the host completes. */
249
- _onAnimationDone(event) {
250
- if (event.toState === 'enter') {
277
+ _onAnimationDone({ toState, totalTime }) {
278
+ if (toState === 'enter') {
251
279
  this._trapFocus();
280
+ this._animationStateChanged.next({ state: 'opened', totalTime });
252
281
  }
253
- else if (event.toState === 'exit') {
282
+ else if (toState === 'exit') {
254
283
  this._restoreFocus();
284
+ this._animationStateChanged.next({ state: 'closed', totalTime });
255
285
  }
256
- this._animationStateChanged.emit(event);
257
286
  }
258
287
  /** Callback, invoked when an animation on the host starts. */
259
- _onAnimationStart(event) {
260
- this._animationStateChanged.emit(event);
288
+ _onAnimationStart({ toState, totalTime }) {
289
+ if (toState === 'enter') {
290
+ this._animationStateChanged.next({ state: 'opening', totalTime });
291
+ }
292
+ else if (toState === 'exit' || toState === 'void') {
293
+ this._animationStateChanged.next({ state: 'closing', totalTime });
294
+ }
261
295
  }
262
296
  /** Starts the dialog exit animation. */
263
297
  _startExitAnimation() {
@@ -280,7 +314,7 @@ MatDialogContainer.decorators = [
280
314
  'class': 'mat-dialog-container',
281
315
  'tabindex': '-1',
282
316
  'aria-modal': 'true',
283
- '[attr.id]': '_id',
317
+ '[id]': '_id',
284
318
  '[attr.role]': '_config.role',
285
319
  '[attr.aria-labelledby]': '_config.ariaLabel ? null : _ariaLabelledBy',
286
320
  '[attr.aria-label]': '_config.ariaLabel',
@@ -292,17 +326,6 @@ MatDialogContainer.decorators = [
292
326
  styles: [".mat-dialog-container{display:block;padding:24px;border-radius:4px;box-sizing:border-box;overflow:auto;outline:0;width:100%;height:100%;min-height:inherit;max-height:inherit}.cdk-high-contrast-active .mat-dialog-container{outline:solid 1px}.mat-dialog-content{display:block;margin:0 -24px;padding:0 24px;max-height:65vh;overflow:auto;-webkit-overflow-scrolling:touch}.mat-dialog-title{margin:0 0 20px;display:block}.mat-dialog-actions{padding:8px 0;display:flex;flex-wrap:wrap;min-height:52px;align-items:center;margin-bottom:-24px}.mat-dialog-actions[align=end]{justify-content:flex-end}.mat-dialog-actions[align=center]{justify-content:center}.mat-dialog-actions .mat-button-base+.mat-button-base,.mat-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:8px}[dir=rtl] .mat-dialog-actions .mat-button-base+.mat-button-base,[dir=rtl] .mat-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:0;margin-right:8px}\n"]
293
327
  },] }
294
328
  ];
295
- MatDialogContainer.ctorParameters = () => [
296
- { type: ElementRef },
297
- { type: FocusTrapFactory },
298
- { type: ChangeDetectorRef },
299
- { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] }] },
300
- { type: MatDialogConfig },
301
- { type: FocusMonitor }
302
- ];
303
- MatDialogContainer.propDecorators = {
304
- _portalOutlet: [{ type: ViewChild, args: [CdkPortalOutlet, { static: true },] }]
305
- };
306
329
 
307
330
  /**
308
331
  * @license
@@ -335,13 +358,13 @@ class MatDialogRef {
335
358
  // Pass the id along to the container.
336
359
  _containerInstance._id = id;
337
360
  // Emit when opening animation completes
338
- _containerInstance._animationStateChanged.pipe(filter(event => event.phaseName === 'done' && event.toState === 'enter'), take(1))
361
+ _containerInstance._animationStateChanged.pipe(filter(event => event.state === 'opened'), take(1))
339
362
  .subscribe(() => {
340
363
  this._afterOpened.next();
341
364
  this._afterOpened.complete();
342
365
  });
343
366
  // Dispose overlay when closing animation is complete
344
- _containerInstance._animationStateChanged.pipe(filter(event => event.phaseName === 'done' && event.toState === 'exit'), take(1)).subscribe(() => {
367
+ _containerInstance._animationStateChanged.pipe(filter(event => event.state === 'closed'), take(1)).subscribe(() => {
345
368
  clearTimeout(this._closeFallbackTimeout);
346
369
  this._finishDialogClose();
347
370
  });
@@ -377,7 +400,7 @@ class MatDialogRef {
377
400
  close(dialogResult) {
378
401
  this._result = dialogResult;
379
402
  // Transition the backdrop in parallel to the dialog.
380
- this._containerInstance._animationStateChanged.pipe(filter(event => event.phaseName === 'start'), take(1))
403
+ this._containerInstance._animationStateChanged.pipe(filter(event => event.state === 'closing'), take(1))
381
404
  .subscribe(event => {
382
405
  this._beforeClosed.next(dialogResult);
383
406
  this._beforeClosed.complete();
@@ -389,26 +412,26 @@ class MatDialogRef {
389
412
  // vast majority of cases the timeout will have been cleared before it has the chance to fire.
390
413
  this._closeFallbackTimeout = setTimeout(() => this._finishDialogClose(), event.totalTime + 100);
391
414
  });
392
- this._containerInstance._startExitAnimation();
393
415
  this._state = 1 /* CLOSING */;
416
+ this._containerInstance._startExitAnimation();
394
417
  }
395
418
  /**
396
419
  * Gets an observable that is notified when the dialog is finished opening.
397
420
  */
398
421
  afterOpened() {
399
- return this._afterOpened.asObservable();
422
+ return this._afterOpened;
400
423
  }
401
424
  /**
402
425
  * Gets an observable that is notified when the dialog is finished closing.
403
426
  */
404
427
  afterClosed() {
405
- return this._afterClosed.asObservable();
428
+ return this._afterClosed;
406
429
  }
407
430
  /**
408
431
  * Gets an observable that is notified when the dialog has started closing.
409
432
  */
410
433
  beforeClosed() {
411
- return this._beforeClosed.asObservable();
434
+ return this._beforeClosed;
412
435
  }
413
436
  /**
414
437
  * Gets an observable that emits when the overlay's backdrop has been clicked.
@@ -523,20 +546,19 @@ const MAT_DIALOG_SCROLL_STRATEGY_PROVIDER = {
523
546
  useFactory: MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY,
524
547
  };
525
548
  /**
526
- * Service to open Material Design modal dialogs.
549
+ * Base class for dialog services. The base dialog service allows
550
+ * for arbitrary dialog refs and dialog container components.
527
551
  */
528
- class MatDialog {
529
- constructor(_overlay, _injector,
530
- /**
531
- * @deprecated `_location` parameter to be removed.
532
- * @breaking-change 10.0.0
533
- */
534
- _location, _defaultOptions, scrollStrategy, _parentDialog, _overlayContainer) {
552
+ class _MatDialogBase {
553
+ constructor(_overlay, _injector, _defaultOptions, _parentDialog, _overlayContainer, scrollStrategy, _dialogRefConstructor, _dialogContainerType, _dialogDataToken) {
535
554
  this._overlay = _overlay;
536
555
  this._injector = _injector;
537
556
  this._defaultOptions = _defaultOptions;
538
557
  this._parentDialog = _parentDialog;
539
558
  this._overlayContainer = _overlayContainer;
559
+ this._dialogRefConstructor = _dialogRefConstructor;
560
+ this._dialogContainerType = _dialogContainerType;
561
+ this._dialogDataToken = _dialogDataToken;
540
562
  this._openDialogsAtThisLevel = [];
541
563
  this._afterAllClosedAtThisLevel = new Subject();
542
564
  this._afterOpenedAtThisLevel = new Subject();
@@ -547,8 +569,8 @@ class MatDialog {
547
569
  * Will emit on subscribe if there are no open dialogs to begin with.
548
570
  */
549
571
  this.afterAllClosed = defer(() => this.openDialogs.length ?
550
- this._afterAllClosed :
551
- this._afterAllClosed.pipe(startWith(undefined)));
572
+ this._getAfterAllClosed() :
573
+ this._getAfterAllClosed().pipe(startWith(undefined)));
552
574
  this._scrollStrategy = scrollStrategy;
553
575
  }
554
576
  /** Keeps track of the currently-open dialogs. */
@@ -559,9 +581,9 @@ class MatDialog {
559
581
  get afterOpened() {
560
582
  return this._parentDialog ? this._parentDialog.afterOpened : this._afterOpenedAtThisLevel;
561
583
  }
562
- get _afterAllClosed() {
584
+ _getAfterAllClosed() {
563
585
  const parent = this._parentDialog;
564
- return parent ? parent._afterAllClosed : this._afterAllClosedAtThisLevel;
586
+ return parent ? parent._getAfterAllClosed() : this._afterAllClosedAtThisLevel;
565
587
  }
566
588
  /**
567
589
  * Opens a modal dialog containing the given component.
@@ -572,7 +594,8 @@ class MatDialog {
572
594
  */
573
595
  open(componentOrTemplateRef, config) {
574
596
  config = _applyConfigDefaults(config, this._defaultOptions || new MatDialogConfig());
575
- if (config.id && this.getDialogById(config.id)) {
597
+ if (config.id && this.getDialogById(config.id) &&
598
+ (typeof ngDevMode === 'undefined' || ngDevMode)) {
576
599
  throw Error(`Dialog with id "${config.id}" exists already. The dialog id must be unique.`);
577
600
  }
578
601
  const overlayRef = this._createOverlay(config);
@@ -585,6 +608,8 @@ class MatDialog {
585
608
  this.openDialogs.push(dialogRef);
586
609
  dialogRef.afterClosed().subscribe(() => this._removeOpenDialog(dialogRef));
587
610
  this.afterOpened.next(dialogRef);
611
+ // Notify the dialog container that the content has been attached.
612
+ dialogContainer._initializeWithAttachedContent();
588
613
  return dialogRef;
589
614
  }
590
615
  /**
@@ -640,7 +665,7 @@ class MatDialog {
640
665
  return state;
641
666
  }
642
667
  /**
643
- * Attaches an MatDialogContainer to a dialog's already-created overlay.
668
+ * Attaches a dialog container to a dialog's already-created overlay.
644
669
  * @param overlay Reference to the dialog's underlying overlay.
645
670
  * @param config The dialog configuration.
646
671
  * @returns A promise resolving to a ComponentRef for the attached container.
@@ -651,15 +676,15 @@ class MatDialog {
651
676
  parent: userInjector || this._injector,
652
677
  providers: [{ provide: MatDialogConfig, useValue: config }]
653
678
  });
654
- const containerPortal = new ComponentPortal(MatDialogContainer, config.viewContainerRef, injector, config.componentFactoryResolver);
679
+ const containerPortal = new ComponentPortal(this._dialogContainerType, config.viewContainerRef, injector, config.componentFactoryResolver);
655
680
  const containerRef = overlay.attach(containerPortal);
656
681
  return containerRef.instance;
657
682
  }
658
683
  /**
659
- * Attaches the user-provided component to the already-created MatDialogContainer.
684
+ * Attaches the user-provided component to the already-created dialog container.
660
685
  * @param componentOrTemplateRef The type of component being loaded into the dialog,
661
686
  * or a TemplateRef to instantiate as the content.
662
- * @param dialogContainer Reference to the wrapping MatDialogContainer.
687
+ * @param dialogContainer Reference to the wrapping dialog container.
663
688
  * @param overlayRef Reference to the overlay in which the dialog resides.
664
689
  * @param config The dialog configuration.
665
690
  * @returns A promise resolving to the MatDialogRef that should be returned to the user.
@@ -667,7 +692,7 @@ class MatDialog {
667
692
  _attachDialogContent(componentOrTemplateRef, dialogContainer, overlayRef, config) {
668
693
  // Create a reference to the dialog we're creating in order to give the user a handle
669
694
  // to modify and close it.
670
- const dialogRef = new MatDialogRef(overlayRef, dialogContainer, config.id);
695
+ const dialogRef = new this._dialogRefConstructor(overlayRef, dialogContainer, config.id);
671
696
  if (componentOrTemplateRef instanceof TemplateRef) {
672
697
  dialogContainer.attachTemplatePortal(new TemplatePortal(componentOrTemplateRef, null, { $implicit: config.data, dialogRef }));
673
698
  }
@@ -686,19 +711,19 @@ class MatDialog {
686
711
  * of a dialog to close itself and, optionally, to return a value.
687
712
  * @param config Config object that is used to construct the dialog.
688
713
  * @param dialogRef Reference to the dialog.
689
- * @param container Dialog container element that wraps all of the contents.
714
+ * @param dialogContainer Dialog container element that wraps all of the contents.
690
715
  * @returns The custom injector that can be used inside the dialog.
691
716
  */
692
717
  _createInjector(config, dialogRef, dialogContainer) {
693
718
  const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;
694
- // The MatDialogContainer is injected in the portal as the MatDialogContainer and the dialog's
695
- // content are created out of the same ViewContainerRef and as such, are siblings for injector
696
- // purposes. To allow the hierarchy that is expected, the MatDialogContainer is explicitly
697
- // added to the injection tokens.
719
+ // The dialog container should be provided as the dialog container and the dialog's
720
+ // content are created out of the same `ViewContainerRef` and as such, are siblings
721
+ // for injector purposes. To allow the hierarchy that is expected, the dialog
722
+ // container is explicitly provided in the injector.
698
723
  const providers = [
699
- { provide: MatDialogContainer, useValue: dialogContainer },
700
- { provide: MAT_DIALOG_DATA, useValue: config.data },
701
- { provide: MatDialogRef, useValue: dialogRef }
724
+ { provide: this._dialogContainerType, useValue: dialogContainer },
725
+ { provide: this._dialogDataToken, useValue: config.data },
726
+ { provide: this._dialogRefConstructor, useValue: dialogRef }
702
727
  ];
703
728
  if (config.direction &&
704
729
  (!userInjector || !userInjector.get(Directionality, null))) {
@@ -729,7 +754,7 @@ class MatDialog {
729
754
  }
730
755
  });
731
756
  this._ariaHiddenElements.clear();
732
- this._afterAllClosed.next();
757
+ this._getAfterAllClosed().next();
733
758
  }
734
759
  }
735
760
  }
@@ -765,6 +790,33 @@ class MatDialog {
765
790
  }
766
791
  }
767
792
  }
793
+ _MatDialogBase.decorators = [
794
+ { type: Directive }
795
+ ];
796
+ _MatDialogBase.ctorParameters = () => [
797
+ { type: Overlay },
798
+ { type: Injector },
799
+ { type: undefined },
800
+ { type: undefined },
801
+ { type: OverlayContainer },
802
+ { type: undefined },
803
+ { type: Type },
804
+ { type: Type },
805
+ { type: InjectionToken }
806
+ ];
807
+ /**
808
+ * Service to open Material Design modal dialogs.
809
+ */
810
+ class MatDialog extends _MatDialogBase {
811
+ constructor(overlay, injector,
812
+ /**
813
+ * @deprecated `_location` parameter to be removed.
814
+ * @breaking-change 10.0.0
815
+ */
816
+ location, defaultOptions, scrollStrategy, parentDialog, overlayContainer) {
817
+ super(overlay, injector, defaultOptions, parentDialog, overlayContainer, scrollStrategy, MatDialogRef, MatDialogContainer, MAT_DIALOG_DATA);
818
+ }
819
+ }
768
820
  MatDialog.decorators = [
769
821
  { type: Injectable }
770
822
  ];
@@ -800,7 +852,10 @@ let dialogElementUid = 0;
800
852
  * Button that will close the current dialog.
801
853
  */
802
854
  class MatDialogClose {
803
- constructor(dialogRef, _elementRef, _dialog) {
855
+ constructor(
856
+ // The dialog title directive is always used in combination with a `MatDialogRef`.
857
+ // tslint:disable-next-line: lightweight-tokens
858
+ dialogRef, _elementRef, _dialog) {
804
859
  this.dialogRef = dialogRef;
805
860
  this._elementRef = _elementRef;
806
861
  this._dialog = _dialog;
@@ -857,7 +912,10 @@ MatDialogClose.propDecorators = {
857
912
  * Title of a dialog element. Stays fixed to the top of the dialog when scrolling.
858
913
  */
859
914
  class MatDialogTitle {
860
- constructor(_dialogRef, _elementRef, _dialog) {
915
+ constructor(
916
+ // The dialog title directive is always used in combination with a `MatDialogRef`.
917
+ // tslint:disable-next-line: lightweight-tokens
918
+ _dialogRef, _elementRef, _dialog) {
861
919
  this._dialogRef = _dialogRef;
862
920
  this._elementRef = _elementRef;
863
921
  this._dialog = _dialog;
@@ -982,5 +1040,5 @@ MatDialogModule.decorators = [
982
1040
  * Generated bundle index. Do not edit.
983
1041
  */
984
1042
 
985
- export { MAT_DIALOG_DATA, MAT_DIALOG_DEFAULT_OPTIONS, MAT_DIALOG_SCROLL_STRATEGY, MAT_DIALOG_SCROLL_STRATEGY_FACTORY, MAT_DIALOG_SCROLL_STRATEGY_PROVIDER, MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY, MatDialog, MatDialogActions, MatDialogClose, MatDialogConfig, MatDialogContainer, MatDialogContent, MatDialogModule, MatDialogRef, MatDialogTitle, _closeDialogVia, matDialogAnimations, throwMatDialogContentAlreadyAttachedError };
1043
+ export { MAT_DIALOG_DATA, MAT_DIALOG_DEFAULT_OPTIONS, MAT_DIALOG_SCROLL_STRATEGY, MAT_DIALOG_SCROLL_STRATEGY_FACTORY, MAT_DIALOG_SCROLL_STRATEGY_PROVIDER, MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY, MatDialog, MatDialogActions, MatDialogClose, MatDialogConfig, MatDialogContainer, MatDialogContent, MatDialogModule, MatDialogRef, MatDialogTitle, _MatDialogBase, _MatDialogContainerBase, _closeDialogVia, matDialogAnimations, throwMatDialogContentAlreadyAttachedError };
986
1044
  //# sourceMappingURL=dialog.js.map