@angular/material 10.0.0-rc.3 → 10.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (627) hide show
  1. package/_theming.scss +17 -17
  2. package/autocomplete/index.metadata.json +1 -1
  3. package/autocomplete/testing/autocomplete-harness.d.ts +2 -0
  4. package/bundles/material-autocomplete-testing.umd.js +11 -0
  5. package/bundles/material-autocomplete-testing.umd.js.map +1 -1
  6. package/bundles/material-autocomplete-testing.umd.min.js +2 -2
  7. package/bundles/material-autocomplete-testing.umd.min.js.map +1 -1
  8. package/bundles/material-autocomplete.umd.js +3 -1
  9. package/bundles/material-autocomplete.umd.js.map +1 -1
  10. package/bundles/material-autocomplete.umd.min.js +5 -5
  11. package/bundles/material-autocomplete.umd.min.js.map +1 -1
  12. package/bundles/material-badge-testing.umd.min.js +1 -1
  13. package/bundles/material-badge-testing.umd.min.js.map +1 -1
  14. package/bundles/material-bottom-sheet-testing.umd.min.js +1 -1
  15. package/bundles/material-bottom-sheet-testing.umd.min.js.map +1 -1
  16. package/bundles/material-button-testing.umd.js +11 -0
  17. package/bundles/material-button-testing.umd.js.map +1 -1
  18. package/bundles/material-button-testing.umd.min.js +2 -2
  19. package/bundles/material-button-testing.umd.min.js.map +1 -1
  20. package/bundles/material-button-toggle-testing.umd.js +11 -0
  21. package/bundles/material-button-toggle-testing.umd.js.map +1 -1
  22. package/bundles/material-button-toggle-testing.umd.min.js +3 -3
  23. package/bundles/material-button-toggle-testing.umd.min.js.map +1 -1
  24. package/bundles/material-button-toggle.umd.js +12 -3
  25. package/bundles/material-button-toggle.umd.js.map +1 -1
  26. package/bundles/material-button-toggle.umd.min.js +2 -2
  27. package/bundles/material-button-toggle.umd.min.js.map +1 -1
  28. package/bundles/material-button.umd.js +7 -2
  29. package/bundles/material-button.umd.js.map +1 -1
  30. package/bundles/material-button.umd.min.js +4 -4
  31. package/bundles/material-button.umd.min.js.map +1 -1
  32. package/bundles/material-card-testing.umd.js +335 -0
  33. package/bundles/material-card-testing.umd.js.map +1 -0
  34. package/bundles/material-card-testing.umd.min.js +44 -0
  35. package/bundles/material-card-testing.umd.min.js.map +1 -0
  36. package/bundles/material-checkbox-testing.umd.js +11 -0
  37. package/bundles/material-checkbox-testing.umd.js.map +1 -1
  38. package/bundles/material-checkbox-testing.umd.min.js +3 -3
  39. package/bundles/material-checkbox-testing.umd.min.js.map +1 -1
  40. package/bundles/material-checkbox.umd.js.map +1 -1
  41. package/bundles/material-chips.umd.js +36 -12
  42. package/bundles/material-chips.umd.js.map +1 -1
  43. package/bundles/material-chips.umd.min.js +4 -4
  44. package/bundles/material-chips.umd.min.js.map +1 -1
  45. package/bundles/material-core-testing.umd.min.js +1 -1
  46. package/bundles/material-core-testing.umd.min.js.map +1 -1
  47. package/bundles/material-core.umd.js +11 -3
  48. package/bundles/material-core.umd.js.map +1 -1
  49. package/bundles/material-core.umd.min.js +11 -11
  50. package/bundles/material-core.umd.min.js.map +1 -1
  51. package/bundles/material-datepicker.umd.js +20 -11
  52. package/bundles/material-datepicker.umd.js.map +1 -1
  53. package/bundles/material-datepicker.umd.min.js +5 -5
  54. package/bundles/material-datepicker.umd.min.js.map +1 -1
  55. package/bundles/material-dialog-testing.umd.min.js +1 -1
  56. package/bundles/material-dialog-testing.umd.min.js.map +1 -1
  57. package/bundles/material-dialog.umd.js +45 -8
  58. package/bundles/material-dialog.umd.js.map +1 -1
  59. package/bundles/material-dialog.umd.min.js +14 -7
  60. package/bundles/material-dialog.umd.min.js.map +1 -1
  61. package/bundles/material-divider-testing.umd.min.js +1 -1
  62. package/bundles/material-divider-testing.umd.min.js.map +1 -1
  63. package/bundles/material-expansion-testing.umd.js +11 -0
  64. package/bundles/material-expansion-testing.umd.js.map +1 -1
  65. package/bundles/material-expansion-testing.umd.min.js +3 -3
  66. package/bundles/material-expansion-testing.umd.min.js.map +1 -1
  67. package/bundles/material-form-field-testing.umd.js +32 -0
  68. package/bundles/material-form-field-testing.umd.js.map +1 -1
  69. package/bundles/material-form-field-testing.umd.min.js +4 -4
  70. package/bundles/material-form-field-testing.umd.min.js.map +1 -1
  71. package/bundles/material-form-field.umd.js +47 -21
  72. package/bundles/material-form-field.umd.js.map +1 -1
  73. package/bundles/material-form-field.umd.min.js +5 -5
  74. package/bundles/material-form-field.umd.min.js.map +1 -1
  75. package/bundles/material-grid-list-testing.umd.min.js +1 -1
  76. package/bundles/material-grid-list-testing.umd.min.js.map +1 -1
  77. package/bundles/material-grid-list.umd.js +2 -2
  78. package/bundles/material-grid-list.umd.js.map +1 -1
  79. package/bundles/material-grid-list.umd.min.js +2 -2
  80. package/bundles/material-grid-list.umd.min.js.map +1 -1
  81. package/bundles/material-input-testing.umd.js +23 -6
  82. package/bundles/material-input-testing.umd.js.map +1 -1
  83. package/bundles/material-input-testing.umd.min.js +3 -3
  84. package/bundles/material-input-testing.umd.min.js.map +1 -1
  85. package/bundles/material-input.umd.js +28 -3
  86. package/bundles/material-input.umd.js.map +1 -1
  87. package/bundles/material-input.umd.min.js +3 -3
  88. package/bundles/material-input.umd.min.js.map +1 -1
  89. package/bundles/material-list-testing.umd.js +33 -0
  90. package/bundles/material-list-testing.umd.js.map +1 -1
  91. package/bundles/material-list-testing.umd.min.js +2 -2
  92. package/bundles/material-list-testing.umd.min.js.map +1 -1
  93. package/bundles/material-list.umd.js +3 -3
  94. package/bundles/material-list.umd.min.js +1 -1
  95. package/bundles/material-list.umd.min.js.map +1 -1
  96. package/bundles/material-menu-testing.umd.js +22 -0
  97. package/bundles/material-menu-testing.umd.js.map +1 -1
  98. package/bundles/material-menu-testing.umd.min.js +2 -2
  99. package/bundles/material-menu-testing.umd.min.js.map +1 -1
  100. package/bundles/material-menu.umd.js +13 -2
  101. package/bundles/material-menu.umd.js.map +1 -1
  102. package/bundles/material-menu.umd.min.js +4 -4
  103. package/bundles/material-menu.umd.min.js.map +1 -1
  104. package/bundles/material-paginator-testing.umd.min.js +1 -1
  105. package/bundles/material-paginator-testing.umd.min.js.map +1 -1
  106. package/bundles/material-progress-bar-testing.umd.min.js +1 -1
  107. package/bundles/material-progress-bar-testing.umd.min.js.map +1 -1
  108. package/bundles/material-progress-spinner-testing.umd.js +1 -1
  109. package/bundles/material-progress-spinner-testing.umd.js.map +1 -1
  110. package/bundles/material-progress-spinner-testing.umd.min.js +2 -2
  111. package/bundles/material-progress-spinner-testing.umd.min.js.map +1 -1
  112. package/bundles/material-progress-spinner.umd.js +2 -2
  113. package/bundles/material-progress-spinner.umd.min.js +3 -3
  114. package/bundles/material-progress-spinner.umd.min.js.map +1 -1
  115. package/bundles/material-radio-testing.umd.js +11 -0
  116. package/bundles/material-radio-testing.umd.js.map +1 -1
  117. package/bundles/material-radio-testing.umd.min.js +3 -3
  118. package/bundles/material-radio-testing.umd.min.js.map +1 -1
  119. package/bundles/material-radio.umd.js +15 -5
  120. package/bundles/material-radio.umd.js.map +1 -1
  121. package/bundles/material-radio.umd.min.js +2 -2
  122. package/bundles/material-radio.umd.min.js.map +1 -1
  123. package/bundles/material-select-testing.umd.js +11 -0
  124. package/bundles/material-select-testing.umd.js.map +1 -1
  125. package/bundles/material-select-testing.umd.min.js +2 -2
  126. package/bundles/material-select-testing.umd.min.js.map +1 -1
  127. package/bundles/material-select.umd.js +11 -3
  128. package/bundles/material-select.umd.js.map +1 -1
  129. package/bundles/material-select.umd.min.js +4 -4
  130. package/bundles/material-select.umd.min.js.map +1 -1
  131. package/bundles/material-sidenav-testing.umd.min.js +1 -1
  132. package/bundles/material-sidenav-testing.umd.min.js.map +1 -1
  133. package/bundles/material-sidenav.umd.js +41 -17
  134. package/bundles/material-sidenav.umd.js.map +1 -1
  135. package/bundles/material-sidenav.umd.min.js +2 -2
  136. package/bundles/material-sidenav.umd.min.js.map +1 -1
  137. package/bundles/material-slide-toggle-testing.umd.js +11 -0
  138. package/bundles/material-slide-toggle-testing.umd.js.map +1 -1
  139. package/bundles/material-slide-toggle-testing.umd.min.js +2 -2
  140. package/bundles/material-slide-toggle-testing.umd.min.js.map +1 -1
  141. package/bundles/material-slide-toggle.umd.js.map +1 -1
  142. package/bundles/material-slider-testing.umd.js +11 -0
  143. package/bundles/material-slider-testing.umd.js.map +1 -1
  144. package/bundles/material-slider-testing.umd.min.js +2 -2
  145. package/bundles/material-slider-testing.umd.min.js.map +1 -1
  146. package/bundles/material-snack-bar-testing.umd.min.js +1 -1
  147. package/bundles/material-snack-bar-testing.umd.min.js.map +1 -1
  148. package/bundles/material-snack-bar.umd.js +47 -39
  149. package/bundles/material-snack-bar.umd.js.map +1 -1
  150. package/bundles/material-snack-bar.umd.min.js +2 -2
  151. package/bundles/material-snack-bar.umd.min.js.map +1 -1
  152. package/bundles/material-sort-testing.umd.js +10 -10
  153. package/bundles/material-sort-testing.umd.js.map +1 -1
  154. package/bundles/material-sort-testing.umd.min.js +3 -3
  155. package/bundles/material-sort-testing.umd.min.js.map +1 -1
  156. package/bundles/material-sort.umd.js +25 -12
  157. package/bundles/material-sort.umd.js.map +1 -1
  158. package/bundles/material-sort.umd.min.js +5 -5
  159. package/bundles/material-sort.umd.min.js.map +1 -1
  160. package/bundles/material-table-testing.umd.min.js +1 -1
  161. package/bundles/material-table-testing.umd.min.js.map +1 -1
  162. package/bundles/material-table.umd.min.js +2 -2
  163. package/bundles/material-table.umd.min.js.map +1 -1
  164. package/bundles/material-tabs-testing.umd.min.js +1 -1
  165. package/bundles/material-tabs-testing.umd.min.js.map +1 -1
  166. package/bundles/material-tabs.umd.js +23 -4
  167. package/bundles/material-tabs.umd.js.map +1 -1
  168. package/bundles/material-tabs.umd.min.js +5 -12
  169. package/bundles/material-tabs.umd.min.js.map +1 -1
  170. package/bundles/material-toolbar-testing.umd.js +330 -0
  171. package/bundles/material-toolbar-testing.umd.js.map +1 -0
  172. package/bundles/material-toolbar-testing.umd.min.js +44 -0
  173. package/bundles/material-toolbar-testing.umd.min.js.map +1 -0
  174. package/bundles/material-tooltip-testing.umd.min.js +1 -1
  175. package/bundles/material-tooltip-testing.umd.min.js.map +1 -1
  176. package/bundles/material-tooltip.umd.js +14 -1
  177. package/bundles/material-tooltip.umd.js.map +1 -1
  178. package/bundles/material-tooltip.umd.min.js +3 -3
  179. package/bundles/material-tooltip.umd.min.js.map +1 -1
  180. package/bundles/material-tree.umd.js.map +1 -1
  181. package/button/_button-base.scss +1 -1
  182. package/button/_button-theme.scss +8 -8
  183. package/button/index.metadata.json +1 -1
  184. package/button/testing/button-harness.d.ts +2 -0
  185. package/button-toggle/button-toggle.d.ts +10 -3
  186. package/button-toggle/index.metadata.json +1 -1
  187. package/button-toggle/testing/button-toggle-harness.d.ts +2 -0
  188. package/card/testing/card-harness-filters.d.ts +17 -0
  189. package/card/testing/card-harness.d.ts +36 -0
  190. package/card/testing/index.d.ts +8 -0
  191. package/card/testing/package.json +9 -0
  192. package/card/testing/public-api.d.ts +9 -0
  193. package/checkbox/index.metadata.json +1 -1
  194. package/checkbox/testing/checkbox-harness.d.ts +2 -0
  195. package/chips/chip.d.ts +19 -1
  196. package/chips/index.metadata.json +1 -1
  197. package/core/focus-indicators/_focus-indicators.scss +6 -6
  198. package/core/index.metadata.json +1 -1
  199. package/core/option/optgroup.d.ts +7 -0
  200. package/core/ripple/ripple-ref.d.ts +21 -2
  201. package/core/ripple/ripple-renderer.d.ts +1 -19
  202. package/core/ripple/ripple.d.ts +2 -2
  203. package/core/style/_list-common.scss +1 -1
  204. package/datepicker/date-range-input-parts.d.ts +2 -4
  205. package/datepicker/date-range-input.d.ts +4 -4
  206. package/datepicker/date-range-picker.d.ts +10 -3
  207. package/datepicker/datepicker.d.ts +2 -3
  208. package/datepicker/index.metadata.json +1 -1
  209. package/datepicker/public-api.d.ts +1 -1
  210. package/dialog/dialog-container.d.ts +9 -2
  211. package/dialog/dialog-content-directives.d.ts +1 -0
  212. package/dialog/dialog-ref.d.ts +7 -0
  213. package/dialog/index.metadata.json +1 -1
  214. package/esm2015/autocomplete/autocomplete-module.js +18 -22
  215. package/esm2015/autocomplete/autocomplete-origin.js +16 -20
  216. package/esm2015/autocomplete/autocomplete-trigger.js +519 -521
  217. package/esm2015/autocomplete/autocomplete.js +126 -130
  218. package/esm2015/autocomplete/testing/autocomplete-harness.js +99 -97
  219. package/esm2015/badge/badge-module.js +13 -17
  220. package/esm2015/badge/badge.js +184 -188
  221. package/esm2015/badge/testing/badge-harness.js +74 -78
  222. package/esm2015/bottom-sheet/bottom-sheet-container.js +161 -165
  223. package/esm2015/bottom-sheet/bottom-sheet-module.js +15 -19
  224. package/esm2015/bottom-sheet/bottom-sheet.js +124 -128
  225. package/esm2015/bottom-sheet/testing/bottom-sheet-harness.js +29 -33
  226. package/esm2015/button/button-module.js +20 -24
  227. package/esm2015/button/button.js +111 -114
  228. package/esm2015/button/testing/button-harness.js +60 -58
  229. package/esm2015/button-toggle/button-toggle-module.js +10 -14
  230. package/esm2015/button-toggle/button-toggle.js +368 -368
  231. package/esm2015/button-toggle/testing/button-toggle-group-harness.js +42 -46
  232. package/esm2015/button-toggle/testing/button-toggle-harness.js +113 -111
  233. package/esm2015/card/card-module.js +30 -34
  234. package/esm2015/card/card.js +147 -203
  235. package/esm2015/card/testing/card-harness-filters.js +8 -0
  236. package/esm2015/card/testing/card-harness.js +52 -0
  237. package/esm2015/card/testing/index.js +9 -0
  238. package/esm2015/card/testing/public-api.js +10 -0
  239. package/esm2015/card/testing/testing.externs.js +0 -0
  240. package/esm2015/checkbox/checkbox-module.js +21 -29
  241. package/esm2015/checkbox/checkbox-required-validator.js +9 -13
  242. package/esm2015/checkbox/checkbox.js +315 -319
  243. package/esm2015/checkbox/testing/checkbox-harness.js +150 -148
  244. package/esm2015/chips/chip-input.js +119 -123
  245. package/esm2015/chips/chip-list.js +572 -576
  246. package/esm2015/chips/chip.js +333 -328
  247. package/esm2015/chips/chips-module.js +16 -20
  248. package/esm2015/core/animation/animation.js +12 -20
  249. package/esm2015/core/common-behaviors/common-module.js +91 -95
  250. package/esm2015/core/datetime/index.js +19 -27
  251. package/esm2015/core/datetime/native-date-adapter.js +202 -206
  252. package/esm2015/core/error/error-options.js +16 -24
  253. package/esm2015/core/line/line.js +18 -26
  254. package/esm2015/core/option/index.js +10 -14
  255. package/esm2015/core/option/optgroup.js +36 -33
  256. package/esm2015/core/option/option.js +181 -185
  257. package/esm2015/core/ripple/index.js +10 -14
  258. package/esm2015/core/ripple/ripple-ref.js +1 -1
  259. package/esm2015/core/ripple/ripple-renderer.js +1 -1
  260. package/esm2015/core/ripple/ripple.js +102 -106
  261. package/esm2015/core/selection/index.js +9 -13
  262. package/esm2015/core/selection/pseudo-checkbox/pseudo-checkbox.js +32 -36
  263. package/esm2015/core/testing/optgroup-harness.js +39 -43
  264. package/esm2015/core/testing/option-harness.js +51 -55
  265. package/esm2015/core/version.js +1 -1
  266. package/esm2015/datepicker/calendar-body.js +214 -218
  267. package/esm2015/datepicker/calendar.js +295 -303
  268. package/esm2015/datepicker/date-range-input-parts.js +214 -229
  269. package/esm2015/datepicker/date-range-input.js +244 -242
  270. package/esm2015/datepicker/date-range-picker.js +19 -23
  271. package/esm2015/datepicker/date-range-selection-strategy.js +31 -35
  272. package/esm2015/datepicker/date-selection-model.js +110 -122
  273. package/esm2015/datepicker/datepicker-base.js +418 -426
  274. package/esm2015/datepicker/datepicker-input-base.js +227 -224
  275. package/esm2015/datepicker/datepicker-input.js +111 -115
  276. package/esm2015/datepicker/datepicker-intl.js +37 -41
  277. package/esm2015/datepicker/datepicker-module.js +62 -66
  278. package/esm2015/datepicker/datepicker-toggle.js +81 -89
  279. package/esm2015/datepicker/datepicker.js +13 -17
  280. package/esm2015/datepicker/month-view.js +283 -287
  281. package/esm2015/datepicker/multi-year-view.js +198 -202
  282. package/esm2015/datepicker/public-api.js +2 -2
  283. package/esm2015/datepicker/year-view.js +220 -224
  284. package/esm2015/dialog/dialog-container.js +175 -164
  285. package/esm2015/dialog/dialog-content-directives.js +105 -114
  286. package/esm2015/dialog/dialog-module.js +32 -36
  287. package/esm2015/dialog/dialog-ref.js +17 -3
  288. package/esm2015/dialog/dialog.js +236 -240
  289. package/esm2015/dialog/testing/dialog-harness.js +58 -62
  290. package/esm2015/divider/divider-module.js +10 -14
  291. package/esm2015/divider/divider.js +33 -37
  292. package/esm2015/divider/testing/divider-harness.js +16 -20
  293. package/esm2015/expansion/accordion.js +73 -77
  294. package/esm2015/expansion/expansion-module.js +26 -30
  295. package/esm2015/expansion/expansion-panel-content.js +13 -17
  296. package/esm2015/expansion/expansion-panel-header.js +168 -180
  297. package/esm2015/expansion/expansion-panel.js +144 -152
  298. package/esm2015/expansion/testing/accordion-harness.js +24 -28
  299. package/esm2015/expansion/testing/expansion-harness.js +136 -134
  300. package/esm2015/form-field/error.js +26 -23
  301. package/esm2015/form-field/form-field-control.js +6 -10
  302. package/esm2015/form-field/form-field-module.js +31 -35
  303. package/esm2015/form-field/form-field.js +407 -409
  304. package/esm2015/form-field/hint.js +35 -29
  305. package/esm2015/form-field/label.js +8 -12
  306. package/esm2015/form-field/placeholder.js +8 -12
  307. package/esm2015/form-field/prefix.js +16 -13
  308. package/esm2015/form-field/suffix.js +16 -13
  309. package/esm2015/form-field/testing/form-field-harness.js +220 -206
  310. package/esm2015/grid-list/grid-list-module.js +26 -30
  311. package/esm2015/grid-list/grid-list.js +108 -112
  312. package/esm2015/grid-list/grid-tile.js +91 -111
  313. package/esm2015/grid-list/testing/grid-list-harness.js +62 -66
  314. package/esm2015/grid-list/testing/grid-tile-harness.js +69 -73
  315. package/esm2015/grid-list/tile-styler.js +1 -1
  316. package/esm2015/icon/icon-module.js +10 -14
  317. package/esm2015/icon/icon-registry.js +406 -410
  318. package/esm2015/icon/icon.js +228 -232
  319. package/esm2015/icon/testing/fake-icon-registry.js +66 -74
  320. package/esm2015/input/autosize.js +30 -34
  321. package/esm2015/input/input-module.js +21 -25
  322. package/esm2015/input/input.js +305 -284
  323. package/esm2015/input/testing/input-harness.js +129 -123
  324. package/esm2015/list/list-module.js +32 -36
  325. package/esm2015/list/list.js +165 -189
  326. package/esm2015/list/selection-list.js +503 -511
  327. package/esm2015/list/testing/action-list-harness.js +55 -57
  328. package/esm2015/list/testing/list-harness.js +31 -39
  329. package/esm2015/list/testing/list-item-harness-base.js +13 -17
  330. package/esm2015/list/testing/nav-list-harness.js +62 -64
  331. package/esm2015/list/testing/selection-list-harness.js +136 -138
  332. package/esm2015/menu/menu-content.js +74 -71
  333. package/esm2015/menu/menu-item.js +119 -123
  334. package/esm2015/menu/menu-module.js +29 -37
  335. package/esm2015/menu/menu-panel.js +1 -1
  336. package/esm2015/menu/menu-trigger.js +402 -405
  337. package/esm2015/menu/menu.js +329 -339
  338. package/esm2015/menu/testing/menu-harness.js +193 -189
  339. package/esm2015/paginator/paginator-intl.js +36 -40
  340. package/esm2015/paginator/paginator-module.js +16 -20
  341. package/esm2015/paginator/paginator.js +205 -209
  342. package/esm2015/paginator/testing/paginator-harness.js +91 -95
  343. package/esm2015/progress-bar/progress-bar-module.js +10 -14
  344. package/esm2015/progress-bar/progress-bar.js +114 -118
  345. package/esm2015/progress-bar/testing/progress-bar-harness.js +27 -31
  346. package/esm2015/progress-spinner/progress-spinner-module.js +17 -21
  347. package/esm2015/progress-spinner/progress-spinner.js +181 -189
  348. package/esm2015/progress-spinner/testing/progress-spinner-harness.js +28 -32
  349. package/esm2015/radio/radio-module.js +10 -14
  350. package/esm2015/radio/radio.js +437 -444
  351. package/esm2015/radio/testing/radio-harness.js +241 -243
  352. package/esm2015/select/select-module.js +23 -27
  353. package/esm2015/select/select.js +917 -918
  354. package/esm2015/select/testing/select-harness.js +138 -136
  355. package/esm2015/sidenav/drawer.js +632 -620
  356. package/esm2015/sidenav/sidenav-module.js +31 -35
  357. package/esm2015/sidenav/sidenav.js +104 -116
  358. package/esm2015/sidenav/testing/drawer-harness.js +40 -44
  359. package/esm2015/sidenav/testing/sidenav-harness.js +20 -24
  360. package/esm2015/slide-toggle/slide-toggle-module.js +27 -35
  361. package/esm2015/slide-toggle/slide-toggle-required-validator.js +9 -13
  362. package/esm2015/slide-toggle/slide-toggle.js +184 -188
  363. package/esm2015/slide-toggle/testing/slide-toggle-harness.js +123 -121
  364. package/esm2015/slider/slider-module.js +10 -14
  365. package/esm2015/slider/slider.js +640 -644
  366. package/esm2015/slider/testing/slider-harness.js +129 -127
  367. package/esm2015/snack-bar/simple-snack-bar.js +32 -36
  368. package/esm2015/snack-bar/snack-bar-container.js +144 -148
  369. package/esm2015/snack-bar/snack-bar-module.js +17 -21
  370. package/esm2015/snack-bar/snack-bar-ref.js +1 -1
  371. package/esm2015/snack-bar/snack-bar.js +208 -205
  372. package/esm2015/snack-bar/testing/snack-bar-harness.js +112 -116
  373. package/esm2015/sort/sort-header-intl.js +21 -21
  374. package/esm2015/sort/sort-header.js +200 -194
  375. package/esm2015/sort/sort-module.js +11 -15
  376. package/esm2015/sort/sort.js +92 -96
  377. package/esm2015/sort/testing/sort-harness.js +28 -32
  378. package/esm2015/sort/testing/sort-header-harness.js +66 -67
  379. package/esm2015/stepper/step-header.js +78 -82
  380. package/esm2015/stepper/step-label.js +8 -12
  381. package/esm2015/stepper/stepper-button.js +23 -31
  382. package/esm2015/stepper/stepper-icon.js +16 -20
  383. package/esm2015/stepper/stepper-intl.js +15 -19
  384. package/esm2015/stepper/stepper-module.js +40 -44
  385. package/esm2015/stepper/stepper.js +139 -155
  386. package/esm2015/table/cell.js +94 -122
  387. package/esm2015/table/row.js +90 -118
  388. package/esm2015/table/table-module.js +13 -17
  389. package/esm2015/table/table.js +26 -30
  390. package/esm2015/table/testing/cell-harness.js +56 -68
  391. package/esm2015/table/testing/row-harness.js +90 -102
  392. package/esm2015/table/testing/table-harness.js +65 -69
  393. package/esm2015/table/text-column.js +17 -21
  394. package/esm2015/tabs/index.js +4 -2
  395. package/esm2015/tabs/ink-bar.js +55 -59
  396. package/esm2015/tabs/paginated-tab-header.js +415 -419
  397. package/esm2015/tabs/tab-body.js +179 -191
  398. package/esm2015/tabs/tab-content.js +21 -16
  399. package/esm2015/tabs/tab-group.js +263 -271
  400. package/esm2015/tabs/tab-header.js +69 -77
  401. package/esm2015/tabs/tab-label-wrapper.js +29 -33
  402. package/esm2015/tabs/tab-label.js +16 -13
  403. package/esm2015/tabs/tab-nav-bar/tab-nav-bar.js +199 -215
  404. package/esm2015/tabs/tab.js +80 -83
  405. package/esm2015/tabs/tabs-module.js +38 -42
  406. package/esm2015/tabs/testing/tab-group-harness.js +52 -56
  407. package/esm2015/tabs/testing/tab-harness.js +78 -82
  408. package/esm2015/toolbar/testing/index.js +9 -0
  409. package/esm2015/toolbar/testing/public-api.js +10 -0
  410. package/esm2015/toolbar/testing/testing.externs.js +0 -0
  411. package/esm2015/toolbar/testing/toolbar-harness-filters.js +8 -0
  412. package/esm2015/toolbar/testing/toolbar-harness.js +47 -0
  413. package/esm2015/toolbar/toolbar-module.js +10 -14
  414. package/esm2015/toolbar/toolbar.js +61 -69
  415. package/esm2015/tooltip/testing/tooltip-harness.js +43 -47
  416. package/esm2015/tooltip/tooltip-module.js +17 -21
  417. package/esm2015/tooltip/tooltip.js +502 -497
  418. package/esm2015/tree/data-source/flat-data-source.js +1 -1
  419. package/esm2015/tree/node.js +99 -111
  420. package/esm2015/tree/outlet.js +19 -23
  421. package/esm2015/tree/padding.js +13 -17
  422. package/esm2015/tree/toggle.js +15 -19
  423. package/esm2015/tree/tree-module.js +10 -14
  424. package/esm2015/tree/tree.js +23 -27
  425. package/expansion/testing/expansion-harness.d.ts +2 -0
  426. package/fesm2015/autocomplete/testing.js +98 -95
  427. package/fesm2015/autocomplete/testing.js.map +1 -1
  428. package/fesm2015/autocomplete.js +677 -687
  429. package/fesm2015/autocomplete.js.map +1 -1
  430. package/fesm2015/badge/testing.js +73 -76
  431. package/fesm2015/badge/testing.js.map +1 -1
  432. package/fesm2015/badge.js +195 -201
  433. package/fesm2015/badge.js.map +1 -1
  434. package/fesm2015/bottom-sheet/testing.js +28 -31
  435. package/fesm2015/bottom-sheet/testing.js.map +1 -1
  436. package/fesm2015/bottom-sheet.js +297 -306
  437. package/fesm2015/bottom-sheet.js.map +1 -1
  438. package/fesm2015/button/testing.js +59 -56
  439. package/fesm2015/button/testing.js.map +1 -1
  440. package/fesm2015/button-toggle/testing.js +155 -155
  441. package/fesm2015/button-toggle/testing.js.map +1 -1
  442. package/fesm2015/button-toggle.js +377 -378
  443. package/fesm2015/button-toggle.js.map +1 -1
  444. package/fesm2015/button.js +129 -133
  445. package/fesm2015/button.js.map +1 -1
  446. package/fesm2015/card/testing.js +79 -0
  447. package/fesm2015/card/testing.js.map +1 -0
  448. package/fesm2015/card.js +175 -220
  449. package/fesm2015/card.js.map +1 -1
  450. package/fesm2015/checkbox/testing.js +149 -146
  451. package/fesm2015/checkbox/testing.js.map +1 -1
  452. package/fesm2015/checkbox.js +342 -354
  453. package/fesm2015/checkbox.js.map +1 -1
  454. package/fesm2015/chips.js +1039 -1039
  455. package/fesm2015/chips.js.map +1 -1
  456. package/fesm2015/core/testing.js +88 -94
  457. package/fesm2015/core/testing.js.map +1 -1
  458. package/fesm2015/core.js +729 -773
  459. package/fesm2015/core.js.map +1 -1
  460. package/fesm2015/datepicker.js +2821 -2884
  461. package/fesm2015/datepicker.js.map +1 -1
  462. package/fesm2015/dialog/testing.js +57 -60
  463. package/fesm2015/dialog/testing.js.map +1 -1
  464. package/fesm2015/dialog.js +564 -549
  465. package/fesm2015/dialog.js.map +1 -1
  466. package/fesm2015/divider/testing.js +15 -18
  467. package/fesm2015/divider/testing.js.map +1 -1
  468. package/fesm2015/divider.js +41 -47
  469. package/fesm2015/divider.js.map +1 -1
  470. package/fesm2015/expansion/testing.js +159 -159
  471. package/fesm2015/expansion/testing.js.map +1 -1
  472. package/fesm2015/expansion.js +422 -446
  473. package/fesm2015/expansion.js.map +1 -1
  474. package/fesm2015/form-field/testing.js +219 -204
  475. package/fesm2015/form-field/testing.js.map +1 -1
  476. package/fesm2015/form-field.js +538 -532
  477. package/fesm2015/form-field.js.map +1 -1
  478. package/fesm2015/grid-list/testing.js +129 -135
  479. package/fesm2015/grid-list/testing.js.map +1 -1
  480. package/fesm2015/grid-list.js +221 -242
  481. package/fesm2015/grid-list.js.map +1 -1
  482. package/fesm2015/icon/testing.js +65 -71
  483. package/fesm2015/icon/testing.js.map +1 -1
  484. package/fesm2015/icon.js +660 -669
  485. package/fesm2015/icon.js.map +1 -1
  486. package/fesm2015/input/testing.js +128 -121
  487. package/fesm2015/input/testing.js.map +1 -1
  488. package/fesm2015/input.js +353 -337
  489. package/fesm2015/input.js.map +1 -1
  490. package/fesm2015/list/testing.js +298 -307
  491. package/fesm2015/list/testing.js.map +1 -1
  492. package/fesm2015/list.js +698 -725
  493. package/fesm2015/list.js.map +1 -1
  494. package/fesm2015/menu/testing.js +192 -186
  495. package/fesm2015/menu/testing.js.map +1 -1
  496. package/fesm2015/menu.js +948 -962
  497. package/fesm2015/menu.js.map +1 -1
  498. package/fesm2015/paginator/testing.js +90 -93
  499. package/fesm2015/paginator/testing.js.map +1 -1
  500. package/fesm2015/paginator.js +247 -256
  501. package/fesm2015/paginator.js.map +1 -1
  502. package/fesm2015/progress-bar/testing.js +26 -29
  503. package/fesm2015/progress-bar/testing.js.map +1 -1
  504. package/fesm2015/progress-bar.js +122 -128
  505. package/fesm2015/progress-bar.js.map +1 -1
  506. package/fesm2015/progress-spinner/testing.js +27 -30
  507. package/fesm2015/progress-spinner/testing.js.map +1 -1
  508. package/fesm2015/progress-spinner.js +196 -205
  509. package/fesm2015/progress-spinner.js.map +1 -1
  510. package/fesm2015/radio/testing.js +240 -240
  511. package/fesm2015/radio/testing.js.map +1 -1
  512. package/fesm2015/radio.js +447 -453
  513. package/fesm2015/radio.js.map +1 -1
  514. package/fesm2015/select/testing.js +137 -134
  515. package/fesm2015/select/testing.js.map +1 -1
  516. package/fesm2015/select.js +939 -941
  517. package/fesm2015/select.js.map +1 -1
  518. package/fesm2015/sidenav/testing.js +58 -64
  519. package/fesm2015/sidenav/testing.js.map +1 -1
  520. package/fesm2015/sidenav.js +765 -762
  521. package/fesm2015/sidenav.js.map +1 -1
  522. package/fesm2015/slide-toggle/testing.js +122 -119
  523. package/fesm2015/slide-toggle/testing.js.map +1 -1
  524. package/fesm2015/slide-toggle.js +217 -229
  525. package/fesm2015/slide-toggle.js.map +1 -1
  526. package/fesm2015/slider/testing.js +128 -125
  527. package/fesm2015/slider/testing.js.map +1 -1
  528. package/fesm2015/slider.js +648 -654
  529. package/fesm2015/slider.js.map +1 -1
  530. package/fesm2015/snack-bar/testing.js +111 -114
  531. package/fesm2015/snack-bar/testing.js.map +1 -1
  532. package/fesm2015/snack-bar.js +426 -431
  533. package/fesm2015/snack-bar.js.map +1 -1
  534. package/fesm2015/sort/testing.js +92 -95
  535. package/fesm2015/sort/testing.js.map +1 -1
  536. package/fesm2015/sort.js +320 -318
  537. package/fesm2015/sort.js.map +1 -1
  538. package/fesm2015/stepper.js +312 -345
  539. package/fesm2015/stepper.js.map +1 -1
  540. package/fesm2015/table/testing.js +208 -229
  541. package/fesm2015/table/testing.js.map +1 -1
  542. package/fesm2015/table.js +235 -286
  543. package/fesm2015/table.js.map +1 -1
  544. package/fesm2015/tabs/testing.js +128 -134
  545. package/fesm2015/tabs/testing.js.map +1 -1
  546. package/fesm2015/tabs.js +1362 -1399
  547. package/fesm2015/tabs.js.map +1 -1
  548. package/fesm2015/toolbar/testing.js +74 -0
  549. package/fesm2015/toolbar/testing.js.map +1 -0
  550. package/fesm2015/toolbar.js +69 -78
  551. package/fesm2015/toolbar.js.map +1 -1
  552. package/fesm2015/tooltip/testing.js +42 -45
  553. package/fesm2015/tooltip/testing.js.map +1 -1
  554. package/fesm2015/tooltip.js +517 -513
  555. package/fesm2015/tooltip.js.map +1 -1
  556. package/fesm2015/tree.js +173 -197
  557. package/fesm2015/tree.js.map +1 -1
  558. package/form-field/error.d.ts +7 -0
  559. package/form-field/hint.d.ts +10 -0
  560. package/form-field/index.metadata.json +1 -1
  561. package/form-field/prefix.d.ts +7 -0
  562. package/form-field/suffix.d.ts +7 -0
  563. package/form-field/testing/form-field-harness.d.ts +8 -0
  564. package/grid-list/grid-list.d.ts +2 -1
  565. package/grid-list/index.metadata.json +1 -1
  566. package/grid-list/tile-styler.d.ts +10 -5
  567. package/input/_input-theme.scss +2 -2
  568. package/input/index.metadata.json +1 -1
  569. package/input/input.d.ts +6 -2
  570. package/input/testing/input-harness.d.ts +2 -0
  571. package/list/index.metadata.json +1 -1
  572. package/list/testing/action-list-harness.d.ts +2 -0
  573. package/list/testing/nav-list-harness.d.ts +2 -0
  574. package/list/testing/selection-list-harness.d.ts +2 -0
  575. package/menu/index.metadata.json +1 -1
  576. package/menu/menu-content.d.ts +7 -1
  577. package/menu/menu-panel.d.ts +1 -0
  578. package/menu/menu.d.ts +4 -0
  579. package/menu/testing/menu-harness.d.ts +4 -0
  580. package/package.json +6 -6
  581. package/prebuilt-themes/deeppurple-amber.css +1 -1
  582. package/prebuilt-themes/indigo-pink.css +1 -1
  583. package/prebuilt-themes/pink-bluegrey.css +1 -1
  584. package/prebuilt-themes/purple-green.css +1 -1
  585. package/progress-spinner/index.metadata.json +1 -1
  586. package/radio/index.metadata.json +1 -1
  587. package/radio/radio.d.ts +6 -0
  588. package/radio/testing/radio-harness.d.ts +2 -0
  589. package/schematics/migration.json +5 -0
  590. package/schematics/ng-add/index.js +2 -2
  591. package/schematics/ng-generate/navigation/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.html.template +3 -3
  592. package/schematics/ng-generate/navigation/schema.json +5 -0
  593. package/schematics/ng-update/data/index.js +1 -1
  594. package/schematics/ng-update/index.d.ts +2 -0
  595. package/schematics/ng-update/index.js +7 -2
  596. package/schematics/ng-update/migrations/hammer-gestures-v9/hammer-gestures-migration.js +639 -639
  597. package/schematics/ng-update/migrations/misc-ripples-v7/ripple-speed-factor-migration.js +1 -1
  598. package/select/index.metadata.json +1 -1
  599. package/select/select.d.ts +6 -0
  600. package/select/testing/select-harness.d.ts +2 -0
  601. package/sidenav/drawer.d.ts +15 -3
  602. package/sidenav/index.metadata.json +1 -1
  603. package/slide-toggle/index.metadata.json +1 -1
  604. package/slide-toggle/testing/slide-toggle-harness.d.ts +2 -0
  605. package/slider/testing/slider-harness.d.ts +2 -0
  606. package/snack-bar/index.metadata.json +1 -1
  607. package/snack-bar/simple-snack-bar.d.ts +13 -1
  608. package/snack-bar/snack-bar-container.d.ts +16 -3
  609. package/snack-bar/snack-bar-ref.d.ts +3 -3
  610. package/snack-bar/snack-bar.d.ts +10 -3
  611. package/sort/index.metadata.json +1 -1
  612. package/sort/sort-header-intl.d.ts +5 -1
  613. package/sort/sort-header.d.ts +3 -1
  614. package/sort/testing/sort-header-harness.d.ts +6 -2
  615. package/tabs/index.d.ts +3 -1
  616. package/tabs/index.metadata.json +1 -1
  617. package/tabs/tab-content.d.ts +7 -1
  618. package/tabs/tab-label.d.ts +7 -0
  619. package/toolbar/testing/index.d.ts +8 -0
  620. package/toolbar/testing/package.json +9 -0
  621. package/toolbar/testing/public-api.d.ts +9 -0
  622. package/toolbar/testing/toolbar-harness-filters.d.ts +13 -0
  623. package/toolbar/testing/toolbar-harness.d.ts +31 -0
  624. package/tooltip/index.metadata.json +1 -1
  625. package/tooltip/tooltip.d.ts +1 -0
  626. package/tree/data-source/flat-data-source.d.ts +4 -4
  627. package/tree/index.metadata.json +1 -1
@@ -82,189 +82,186 @@ const matBottomSheetAnimations = {
82
82
  * Internal component that wraps user-provided bottom sheet content.
83
83
  * @docs-private
84
84
  */
85
- let MatBottomSheetContainer = /** @class */ (() => {
86
- class MatBottomSheetContainer extends BasePortalOutlet {
87
- constructor(_elementRef, _changeDetectorRef, _focusTrapFactory, breakpointObserver, document,
88
- /** The bottom sheet configuration. */
89
- bottomSheetConfig) {
90
- super();
91
- this._elementRef = _elementRef;
92
- this._changeDetectorRef = _changeDetectorRef;
93
- this._focusTrapFactory = _focusTrapFactory;
94
- this.bottomSheetConfig = bottomSheetConfig;
95
- /** The state of the bottom sheet animations. */
96
- this._animationState = 'void';
97
- /** Emits whenever the state of the animation changes. */
98
- this._animationStateChanged = new EventEmitter();
99
- /** Element that was focused before the bottom sheet was opened. */
100
- this._elementFocusedBeforeOpened = null;
101
- /**
102
- * Attaches a DOM portal to the bottom sheet container.
103
- * @deprecated To be turned into a method.
104
- * @breaking-change 10.0.0
105
- */
106
- this.attachDomPortal = (portal) => {
107
- this._validatePortalAttached();
108
- this._setPanelClass();
109
- this._savePreviouslyFocusedElement();
110
- return this._portalOutlet.attachDomPortal(portal);
111
- };
112
- this._document = document;
113
- this._breakpointSubscription = breakpointObserver
114
- .observe([Breakpoints.Medium, Breakpoints.Large, Breakpoints.XLarge])
115
- .subscribe(() => {
116
- this._toggleClass('mat-bottom-sheet-container-medium', breakpointObserver.isMatched(Breakpoints.Medium));
117
- this._toggleClass('mat-bottom-sheet-container-large', breakpointObserver.isMatched(Breakpoints.Large));
118
- this._toggleClass('mat-bottom-sheet-container-xlarge', breakpointObserver.isMatched(Breakpoints.XLarge));
119
- });
120
- }
121
- /** Attach a component portal as content to this bottom sheet container. */
122
- attachComponentPortal(portal) {
85
+ class MatBottomSheetContainer extends BasePortalOutlet {
86
+ constructor(_elementRef, _changeDetectorRef, _focusTrapFactory, breakpointObserver, document,
87
+ /** The bottom sheet configuration. */
88
+ bottomSheetConfig) {
89
+ super();
90
+ this._elementRef = _elementRef;
91
+ this._changeDetectorRef = _changeDetectorRef;
92
+ this._focusTrapFactory = _focusTrapFactory;
93
+ this.bottomSheetConfig = bottomSheetConfig;
94
+ /** The state of the bottom sheet animations. */
95
+ this._animationState = 'void';
96
+ /** Emits whenever the state of the animation changes. */
97
+ this._animationStateChanged = new EventEmitter();
98
+ /** Element that was focused before the bottom sheet was opened. */
99
+ this._elementFocusedBeforeOpened = null;
100
+ /**
101
+ * Attaches a DOM portal to the bottom sheet container.
102
+ * @deprecated To be turned into a method.
103
+ * @breaking-change 10.0.0
104
+ */
105
+ this.attachDomPortal = (portal) => {
123
106
  this._validatePortalAttached();
124
107
  this._setPanelClass();
125
108
  this._savePreviouslyFocusedElement();
126
- return this._portalOutlet.attachComponentPortal(portal);
109
+ return this._portalOutlet.attachDomPortal(portal);
110
+ };
111
+ this._document = document;
112
+ this._breakpointSubscription = breakpointObserver
113
+ .observe([Breakpoints.Medium, Breakpoints.Large, Breakpoints.XLarge])
114
+ .subscribe(() => {
115
+ this._toggleClass('mat-bottom-sheet-container-medium', breakpointObserver.isMatched(Breakpoints.Medium));
116
+ this._toggleClass('mat-bottom-sheet-container-large', breakpointObserver.isMatched(Breakpoints.Large));
117
+ this._toggleClass('mat-bottom-sheet-container-xlarge', breakpointObserver.isMatched(Breakpoints.XLarge));
118
+ });
119
+ }
120
+ /** Attach a component portal as content to this bottom sheet container. */
121
+ attachComponentPortal(portal) {
122
+ this._validatePortalAttached();
123
+ this._setPanelClass();
124
+ this._savePreviouslyFocusedElement();
125
+ return this._portalOutlet.attachComponentPortal(portal);
126
+ }
127
+ /** Attach a template portal as content to this bottom sheet container. */
128
+ attachTemplatePortal(portal) {
129
+ this._validatePortalAttached();
130
+ this._setPanelClass();
131
+ this._savePreviouslyFocusedElement();
132
+ return this._portalOutlet.attachTemplatePortal(portal);
133
+ }
134
+ /** Begin animation of bottom sheet entrance into view. */
135
+ enter() {
136
+ if (!this._destroyed) {
137
+ this._animationState = 'visible';
138
+ this._changeDetectorRef.detectChanges();
127
139
  }
128
- /** Attach a template portal as content to this bottom sheet container. */
129
- attachTemplatePortal(portal) {
130
- this._validatePortalAttached();
131
- this._setPanelClass();
132
- this._savePreviouslyFocusedElement();
133
- return this._portalOutlet.attachTemplatePortal(portal);
140
+ }
141
+ /** Begin animation of the bottom sheet exiting from view. */
142
+ exit() {
143
+ if (!this._destroyed) {
144
+ this._animationState = 'hidden';
145
+ this._changeDetectorRef.markForCheck();
134
146
  }
135
- /** Begin animation of bottom sheet entrance into view. */
136
- enter() {
137
- if (!this._destroyed) {
138
- this._animationState = 'visible';
139
- this._changeDetectorRef.detectChanges();
140
- }
147
+ }
148
+ ngOnDestroy() {
149
+ this._breakpointSubscription.unsubscribe();
150
+ this._destroyed = true;
151
+ }
152
+ _onAnimationDone(event) {
153
+ if (event.toState === 'hidden') {
154
+ this._restoreFocus();
141
155
  }
142
- /** Begin animation of the bottom sheet exiting from view. */
143
- exit() {
144
- if (!this._destroyed) {
145
- this._animationState = 'hidden';
146
- this._changeDetectorRef.markForCheck();
147
- }
156
+ else if (event.toState === 'visible') {
157
+ this._trapFocus();
148
158
  }
149
- ngOnDestroy() {
150
- this._breakpointSubscription.unsubscribe();
151
- this._destroyed = true;
159
+ this._animationStateChanged.emit(event);
160
+ }
161
+ _onAnimationStart(event) {
162
+ this._animationStateChanged.emit(event);
163
+ }
164
+ _toggleClass(cssClass, add) {
165
+ const classList = this._elementRef.nativeElement.classList;
166
+ add ? classList.add(cssClass) : classList.remove(cssClass);
167
+ }
168
+ _validatePortalAttached() {
169
+ if (this._portalOutlet.hasAttached()) {
170
+ throw Error('Attempting to attach bottom sheet content after content is already attached');
152
171
  }
153
- _onAnimationDone(event) {
154
- if (event.toState === 'hidden') {
155
- this._restoreFocus();
156
- }
157
- else if (event.toState === 'visible') {
158
- this._trapFocus();
159
- }
160
- this._animationStateChanged.emit(event);
172
+ }
173
+ _setPanelClass() {
174
+ const element = this._elementRef.nativeElement;
175
+ const panelClass = this.bottomSheetConfig.panelClass;
176
+ if (Array.isArray(panelClass)) {
177
+ // Note that we can't use a spread here, because IE doesn't support multiple arguments.
178
+ panelClass.forEach(cssClass => element.classList.add(cssClass));
161
179
  }
162
- _onAnimationStart(event) {
163
- this._animationStateChanged.emit(event);
180
+ else if (panelClass) {
181
+ element.classList.add(panelClass);
164
182
  }
165
- _toggleClass(cssClass, add) {
166
- const classList = this._elementRef.nativeElement.classList;
167
- add ? classList.add(cssClass) : classList.remove(cssClass);
183
+ }
184
+ /** Moves the focus inside the focus trap. */
185
+ _trapFocus() {
186
+ const element = this._elementRef.nativeElement;
187
+ if (!this._focusTrap) {
188
+ this._focusTrap = this._focusTrapFactory.create(element);
168
189
  }
169
- _validatePortalAttached() {
170
- if (this._portalOutlet.hasAttached()) {
171
- throw Error('Attempting to attach bottom sheet content after content is already attached');
172
- }
190
+ if (this.bottomSheetConfig.autoFocus) {
191
+ this._focusTrap.focusInitialElementWhenReady();
173
192
  }
174
- _setPanelClass() {
175
- const element = this._elementRef.nativeElement;
176
- const panelClass = this.bottomSheetConfig.panelClass;
177
- if (Array.isArray(panelClass)) {
178
- // Note that we can't use a spread here, because IE doesn't support multiple arguments.
179
- panelClass.forEach(cssClass => element.classList.add(cssClass));
180
- }
181
- else if (panelClass) {
182
- element.classList.add(panelClass);
193
+ else {
194
+ const activeElement = this._document.activeElement;
195
+ // Otherwise ensure that focus is on the container. It's possible that a different
196
+ // component tried to move focus while the open animation was running. See:
197
+ // https://github.com/angular/components/issues/16215. Note that we only want to do this
198
+ // if the focus isn't inside the bottom sheet already, because it's possible that the
199
+ // consumer turned off `autoFocus` in order to move focus themselves.
200
+ if (activeElement !== element && !element.contains(activeElement)) {
201
+ element.focus();
183
202
  }
184
203
  }
185
- /** Moves the focus inside the focus trap. */
186
- _trapFocus() {
204
+ }
205
+ /** Restores focus to the element that was focused before the bottom sheet was opened. */
206
+ _restoreFocus() {
207
+ const toFocus = this._elementFocusedBeforeOpened;
208
+ // We need the extra check, because IE can set the `activeElement` to null in some cases.
209
+ if (this.bottomSheetConfig.restoreFocus && toFocus && typeof toFocus.focus === 'function') {
210
+ const activeElement = this._document.activeElement;
187
211
  const element = this._elementRef.nativeElement;
188
- if (!this._focusTrap) {
189
- this._focusTrap = this._focusTrapFactory.create(element);
190
- }
191
- if (this.bottomSheetConfig.autoFocus) {
192
- this._focusTrap.focusInitialElementWhenReady();
193
- }
194
- else {
195
- const activeElement = this._document.activeElement;
196
- // Otherwise ensure that focus is on the container. It's possible that a different
197
- // component tried to move focus while the open animation was running. See:
198
- // https://github.com/angular/components/issues/16215. Note that we only want to do this
199
- // if the focus isn't inside the bottom sheet already, because it's possible that the
200
- // consumer turned off `autoFocus` in order to move focus themselves.
201
- if (activeElement !== element && !element.contains(activeElement)) {
202
- element.focus();
203
- }
212
+ // Make sure that focus is still inside the bottom sheet or is on the body (usually because a
213
+ // non-focusable element like the backdrop was clicked) before moving it. It's possible that
214
+ // the consumer moved it themselves before the animation was done, in which case we shouldn't
215
+ // do anything.
216
+ if (!activeElement || activeElement === this._document.body || activeElement === element ||
217
+ element.contains(activeElement)) {
218
+ toFocus.focus();
204
219
  }
205
220
  }
206
- /** Restores focus to the element that was focused before the bottom sheet was opened. */
207
- _restoreFocus() {
208
- const toFocus = this._elementFocusedBeforeOpened;
209
- // We need the extra check, because IE can set the `activeElement` to null in some cases.
210
- if (this.bottomSheetConfig.restoreFocus && toFocus && typeof toFocus.focus === 'function') {
211
- const activeElement = this._document.activeElement;
212
- const element = this._elementRef.nativeElement;
213
- // Make sure that focus is still inside the bottom sheet or is on the body (usually because a
214
- // non-focusable element like the backdrop was clicked) before moving it. It's possible that
215
- // the consumer moved it themselves before the animation was done, in which case we shouldn't
216
- // do anything.
217
- if (!activeElement || activeElement === this._document.body || activeElement === element ||
218
- element.contains(activeElement)) {
219
- toFocus.focus();
220
- }
221
- }
222
- if (this._focusTrap) {
223
- this._focusTrap.destroy();
224
- }
221
+ if (this._focusTrap) {
222
+ this._focusTrap.destroy();
225
223
  }
226
- /** Saves a reference to the element that was focused before the bottom sheet was opened. */
227
- _savePreviouslyFocusedElement() {
228
- this._elementFocusedBeforeOpened = this._document.activeElement;
229
- // The `focus` method isn't available during server-side rendering.
230
- if (this._elementRef.nativeElement.focus) {
231
- Promise.resolve().then(() => this._elementRef.nativeElement.focus());
232
- }
224
+ }
225
+ /** Saves a reference to the element that was focused before the bottom sheet was opened. */
226
+ _savePreviouslyFocusedElement() {
227
+ this._elementFocusedBeforeOpened = this._document.activeElement;
228
+ // The `focus` method isn't available during server-side rendering.
229
+ if (this._elementRef.nativeElement.focus) {
230
+ Promise.resolve().then(() => this._elementRef.nativeElement.focus());
233
231
  }
234
232
  }
235
- MatBottomSheetContainer.decorators = [
236
- { type: Component, args: [{
237
- selector: 'mat-bottom-sheet-container',
238
- template: "<ng-template cdkPortalOutlet></ng-template>\r\n",
239
- changeDetection: ChangeDetectionStrategy.OnPush,
240
- encapsulation: ViewEncapsulation.None,
241
- animations: [matBottomSheetAnimations.bottomSheetState],
242
- host: {
243
- 'class': 'mat-bottom-sheet-container',
244
- 'tabindex': '-1',
245
- 'role': 'dialog',
246
- 'aria-modal': 'true',
247
- '[attr.aria-label]': 'bottomSheetConfig?.ariaLabel',
248
- '[@state]': '_animationState',
249
- '(@state.start)': '_onAnimationStart($event)',
250
- '(@state.done)': '_onAnimationDone($event)'
251
- },
252
- styles: [".mat-bottom-sheet-container{padding:8px 16px;min-width:100vw;box-sizing:border-box;display:block;outline:0;max-height:80vh;overflow:auto}.cdk-high-contrast-active .mat-bottom-sheet-container{outline:1px solid}.mat-bottom-sheet-container-xlarge,.mat-bottom-sheet-container-large,.mat-bottom-sheet-container-medium{border-top-left-radius:4px;border-top-right-radius:4px}.mat-bottom-sheet-container-medium{min-width:384px;max-width:calc(100vw - 128px)}.mat-bottom-sheet-container-large{min-width:512px;max-width:calc(100vw - 256px)}.mat-bottom-sheet-container-xlarge{min-width:576px;max-width:calc(100vw - 384px)}\n"]
253
- },] }
254
- ];
255
- MatBottomSheetContainer.ctorParameters = () => [
256
- { type: ElementRef },
257
- { type: ChangeDetectorRef },
258
- { type: FocusTrapFactory },
259
- { type: BreakpointObserver },
260
- { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] }] },
261
- { type: MatBottomSheetConfig }
262
- ];
263
- MatBottomSheetContainer.propDecorators = {
264
- _portalOutlet: [{ type: ViewChild, args: [CdkPortalOutlet, { static: true },] }]
265
- };
266
- return MatBottomSheetContainer;
267
- })();
233
+ }
234
+ MatBottomSheetContainer.decorators = [
235
+ { type: Component, args: [{
236
+ selector: 'mat-bottom-sheet-container',
237
+ template: "<ng-template cdkPortalOutlet></ng-template>\r\n",
238
+ changeDetection: ChangeDetectionStrategy.OnPush,
239
+ encapsulation: ViewEncapsulation.None,
240
+ animations: [matBottomSheetAnimations.bottomSheetState],
241
+ host: {
242
+ 'class': 'mat-bottom-sheet-container',
243
+ 'tabindex': '-1',
244
+ 'role': 'dialog',
245
+ 'aria-modal': 'true',
246
+ '[attr.aria-label]': 'bottomSheetConfig?.ariaLabel',
247
+ '[@state]': '_animationState',
248
+ '(@state.start)': '_onAnimationStart($event)',
249
+ '(@state.done)': '_onAnimationDone($event)'
250
+ },
251
+ styles: [".mat-bottom-sheet-container{padding:8px 16px;min-width:100vw;box-sizing:border-box;display:block;outline:0;max-height:80vh;overflow:auto}.cdk-high-contrast-active .mat-bottom-sheet-container{outline:1px solid}.mat-bottom-sheet-container-xlarge,.mat-bottom-sheet-container-large,.mat-bottom-sheet-container-medium{border-top-left-radius:4px;border-top-right-radius:4px}.mat-bottom-sheet-container-medium{min-width:384px;max-width:calc(100vw - 128px)}.mat-bottom-sheet-container-large{min-width:512px;max-width:calc(100vw - 256px)}.mat-bottom-sheet-container-xlarge{min-width:576px;max-width:calc(100vw - 384px)}\n"]
252
+ },] }
253
+ ];
254
+ MatBottomSheetContainer.ctorParameters = () => [
255
+ { type: ElementRef },
256
+ { type: ChangeDetectorRef },
257
+ { type: FocusTrapFactory },
258
+ { type: BreakpointObserver },
259
+ { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] }] },
260
+ { type: MatBottomSheetConfig }
261
+ ];
262
+ MatBottomSheetContainer.propDecorators = {
263
+ _portalOutlet: [{ type: ViewChild, args: [CdkPortalOutlet, { static: true },] }]
264
+ };
268
265
 
269
266
  /**
270
267
  * @license
@@ -273,23 +270,20 @@ let MatBottomSheetContainer = /** @class */ (() => {
273
270
  * Use of this source code is governed by an MIT-style license that can be
274
271
  * found in the LICENSE file at https://angular.io/license
275
272
  */
276
- let MatBottomSheetModule = /** @class */ (() => {
277
- class MatBottomSheetModule {
278
- }
279
- MatBottomSheetModule.decorators = [
280
- { type: NgModule, args: [{
281
- imports: [
282
- OverlayModule,
283
- MatCommonModule,
284
- PortalModule,
285
- ],
286
- exports: [MatBottomSheetContainer, MatCommonModule],
287
- declarations: [MatBottomSheetContainer],
288
- entryComponents: [MatBottomSheetContainer],
289
- },] }
290
- ];
291
- return MatBottomSheetModule;
292
- })();
273
+ class MatBottomSheetModule {
274
+ }
275
+ MatBottomSheetModule.decorators = [
276
+ { type: NgModule, args: [{
277
+ imports: [
278
+ OverlayModule,
279
+ MatCommonModule,
280
+ PortalModule,
281
+ ],
282
+ exports: [MatBottomSheetContainer, MatCommonModule],
283
+ declarations: [MatBottomSheetContainer],
284
+ entryComponents: [MatBottomSheetContainer],
285
+ },] }
286
+ ];
293
287
 
294
288
  /**
295
289
  * @license
@@ -393,143 +387,140 @@ const MAT_BOTTOM_SHEET_DEFAULT_OPTIONS = new InjectionToken('mat-bottom-sheet-de
393
387
  /**
394
388
  * Service to trigger Material Design bottom sheets.
395
389
  */
396
- let MatBottomSheet = /** @class */ (() => {
397
- class MatBottomSheet {
398
- constructor(_overlay, _injector, _parentBottomSheet, _location, _defaultOptions) {
399
- this._overlay = _overlay;
400
- this._injector = _injector;
401
- this._parentBottomSheet = _parentBottomSheet;
402
- this._location = _location;
403
- this._defaultOptions = _defaultOptions;
404
- this._bottomSheetRefAtThisLevel = null;
390
+ class MatBottomSheet {
391
+ constructor(_overlay, _injector, _parentBottomSheet, _location, _defaultOptions) {
392
+ this._overlay = _overlay;
393
+ this._injector = _injector;
394
+ this._parentBottomSheet = _parentBottomSheet;
395
+ this._location = _location;
396
+ this._defaultOptions = _defaultOptions;
397
+ this._bottomSheetRefAtThisLevel = null;
398
+ }
399
+ /** Reference to the currently opened bottom sheet. */
400
+ get _openedBottomSheetRef() {
401
+ const parent = this._parentBottomSheet;
402
+ return parent ? parent._openedBottomSheetRef : this._bottomSheetRefAtThisLevel;
403
+ }
404
+ set _openedBottomSheetRef(value) {
405
+ if (this._parentBottomSheet) {
406
+ this._parentBottomSheet._openedBottomSheetRef = value;
405
407
  }
406
- /** Reference to the currently opened bottom sheet. */
407
- get _openedBottomSheetRef() {
408
- const parent = this._parentBottomSheet;
409
- return parent ? parent._openedBottomSheetRef : this._bottomSheetRefAtThisLevel;
408
+ else {
409
+ this._bottomSheetRefAtThisLevel = value;
410
410
  }
411
- set _openedBottomSheetRef(value) {
412
- if (this._parentBottomSheet) {
413
- this._parentBottomSheet._openedBottomSheetRef = value;
414
- }
415
- else {
416
- this._bottomSheetRefAtThisLevel = value;
417
- }
411
+ }
412
+ open(componentOrTemplateRef, config) {
413
+ const _config = _applyConfigDefaults(this._defaultOptions || new MatBottomSheetConfig(), config);
414
+ const overlayRef = this._createOverlay(_config);
415
+ const container = this._attachContainer(overlayRef, _config);
416
+ const ref = new MatBottomSheetRef(container, overlayRef, this._location);
417
+ if (componentOrTemplateRef instanceof TemplateRef) {
418
+ container.attachTemplatePortal(new TemplatePortal(componentOrTemplateRef, null, {
419
+ $implicit: _config.data,
420
+ bottomSheetRef: ref
421
+ }));
418
422
  }
419
- open(componentOrTemplateRef, config) {
420
- const _config = _applyConfigDefaults(this._defaultOptions || new MatBottomSheetConfig(), config);
421
- const overlayRef = this._createOverlay(_config);
422
- const container = this._attachContainer(overlayRef, _config);
423
- const ref = new MatBottomSheetRef(container, overlayRef, this._location);
424
- if (componentOrTemplateRef instanceof TemplateRef) {
425
- container.attachTemplatePortal(new TemplatePortal(componentOrTemplateRef, null, {
426
- $implicit: _config.data,
427
- bottomSheetRef: ref
428
- }));
429
- }
430
- else {
431
- const portal = new ComponentPortal(componentOrTemplateRef, undefined, this._createInjector(_config, ref));
432
- const contentRef = container.attachComponentPortal(portal);
433
- ref.instance = contentRef.instance;
434
- }
435
- // When the bottom sheet is dismissed, clear the reference to it.
436
- ref.afterDismissed().subscribe(() => {
437
- // Clear the bottom sheet ref if it hasn't already been replaced by a newer one.
438
- if (this._openedBottomSheetRef == ref) {
439
- this._openedBottomSheetRef = null;
440
- }
441
- });
442
- if (this._openedBottomSheetRef) {
443
- // If a bottom sheet is already in view, dismiss it and enter the
444
- // new bottom sheet after exit animation is complete.
445
- this._openedBottomSheetRef.afterDismissed().subscribe(() => ref.containerInstance.enter());
446
- this._openedBottomSheetRef.dismiss();
447
- }
448
- else {
449
- // If no bottom sheet is in view, enter the new bottom sheet.
450
- ref.containerInstance.enter();
451
- }
452
- this._openedBottomSheetRef = ref;
453
- return ref;
423
+ else {
424
+ const portal = new ComponentPortal(componentOrTemplateRef, undefined, this._createInjector(_config, ref));
425
+ const contentRef = container.attachComponentPortal(portal);
426
+ ref.instance = contentRef.instance;
454
427
  }
455
- /**
456
- * Dismisses the currently-visible bottom sheet.
457
- * @param result Data to pass to the bottom sheet instance.
458
- */
459
- dismiss(result) {
460
- if (this._openedBottomSheetRef) {
461
- this._openedBottomSheetRef.dismiss(result);
428
+ // When the bottom sheet is dismissed, clear the reference to it.
429
+ ref.afterDismissed().subscribe(() => {
430
+ // Clear the bottom sheet ref if it hasn't already been replaced by a newer one.
431
+ if (this._openedBottomSheetRef == ref) {
432
+ this._openedBottomSheetRef = null;
462
433
  }
434
+ });
435
+ if (this._openedBottomSheetRef) {
436
+ // If a bottom sheet is already in view, dismiss it and enter the
437
+ // new bottom sheet after exit animation is complete.
438
+ this._openedBottomSheetRef.afterDismissed().subscribe(() => ref.containerInstance.enter());
439
+ this._openedBottomSheetRef.dismiss();
463
440
  }
464
- ngOnDestroy() {
465
- if (this._bottomSheetRefAtThisLevel) {
466
- this._bottomSheetRefAtThisLevel.dismiss();
467
- }
441
+ else {
442
+ // If no bottom sheet is in view, enter the new bottom sheet.
443
+ ref.containerInstance.enter();
468
444
  }
469
- /**
470
- * Attaches the bottom sheet container component to the overlay.
471
- */
472
- _attachContainer(overlayRef, config) {
473
- const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;
474
- const injector = new PortalInjector(userInjector || this._injector, new WeakMap([
475
- [MatBottomSheetConfig, config]
476
- ]));
477
- const containerPortal = new ComponentPortal(MatBottomSheetContainer, config.viewContainerRef, injector);
478
- const containerRef = overlayRef.attach(containerPortal);
479
- return containerRef.instance;
445
+ this._openedBottomSheetRef = ref;
446
+ return ref;
447
+ }
448
+ /**
449
+ * Dismisses the currently-visible bottom sheet.
450
+ * @param result Data to pass to the bottom sheet instance.
451
+ */
452
+ dismiss(result) {
453
+ if (this._openedBottomSheetRef) {
454
+ this._openedBottomSheetRef.dismiss(result);
480
455
  }
481
- /**
482
- * Creates a new overlay and places it in the correct location.
483
- * @param config The user-specified bottom sheet config.
484
- */
485
- _createOverlay(config) {
486
- const overlayConfig = new OverlayConfig({
487
- direction: config.direction,
488
- hasBackdrop: config.hasBackdrop,
489
- disposeOnNavigation: config.closeOnNavigation,
490
- maxWidth: '100%',
491
- scrollStrategy: config.scrollStrategy || this._overlay.scrollStrategies.block(),
492
- positionStrategy: this._overlay.position().global().centerHorizontally().bottom('0')
493
- });
494
- if (config.backdropClass) {
495
- overlayConfig.backdropClass = config.backdropClass;
496
- }
497
- return this._overlay.create(overlayConfig);
456
+ }
457
+ ngOnDestroy() {
458
+ if (this._bottomSheetRefAtThisLevel) {
459
+ this._bottomSheetRefAtThisLevel.dismiss();
498
460
  }
499
- /**
500
- * Creates an injector to be used inside of a bottom sheet component.
501
- * @param config Config that was used to create the bottom sheet.
502
- * @param bottomSheetRef Reference to the bottom sheet.
503
- */
504
- _createInjector(config, bottomSheetRef) {
505
- const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;
506
- const injectionTokens = new WeakMap([
507
- [MatBottomSheetRef, bottomSheetRef],
508
- [MAT_BOTTOM_SHEET_DATA, config.data]
509
- ]);
510
- if (config.direction &&
511
- (!userInjector || !userInjector.get(Directionality, null))) {
512
- injectionTokens.set(Directionality, {
513
- value: config.direction,
514
- change: of()
515
- });
516
- }
517
- return new PortalInjector(userInjector || this._injector, injectionTokens);
461
+ }
462
+ /**
463
+ * Attaches the bottom sheet container component to the overlay.
464
+ */
465
+ _attachContainer(overlayRef, config) {
466
+ const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;
467
+ const injector = new PortalInjector(userInjector || this._injector, new WeakMap([
468
+ [MatBottomSheetConfig, config]
469
+ ]));
470
+ const containerPortal = new ComponentPortal(MatBottomSheetContainer, config.viewContainerRef, injector);
471
+ const containerRef = overlayRef.attach(containerPortal);
472
+ return containerRef.instance;
473
+ }
474
+ /**
475
+ * Creates a new overlay and places it in the correct location.
476
+ * @param config The user-specified bottom sheet config.
477
+ */
478
+ _createOverlay(config) {
479
+ const overlayConfig = new OverlayConfig({
480
+ direction: config.direction,
481
+ hasBackdrop: config.hasBackdrop,
482
+ disposeOnNavigation: config.closeOnNavigation,
483
+ maxWidth: '100%',
484
+ scrollStrategy: config.scrollStrategy || this._overlay.scrollStrategies.block(),
485
+ positionStrategy: this._overlay.position().global().centerHorizontally().bottom('0')
486
+ });
487
+ if (config.backdropClass) {
488
+ overlayConfig.backdropClass = config.backdropClass;
518
489
  }
490
+ return this._overlay.create(overlayConfig);
519
491
  }
520
- MatBottomSheet.ɵprov = ɵɵdefineInjectable({ factory: function MatBottomSheet_Factory() { return new MatBottomSheet(ɵɵinject(Overlay), ɵɵinject(INJECTOR), ɵɵinject(MatBottomSheet, 12), ɵɵinject(Location, 8), ɵɵinject(MAT_BOTTOM_SHEET_DEFAULT_OPTIONS, 8)); }, token: MatBottomSheet, providedIn: MatBottomSheetModule });
521
- MatBottomSheet.decorators = [
522
- { type: Injectable, args: [{ providedIn: MatBottomSheetModule },] }
523
- ];
524
- MatBottomSheet.ctorParameters = () => [
525
- { type: Overlay },
526
- { type: Injector },
527
- { type: MatBottomSheet, decorators: [{ type: Optional }, { type: SkipSelf }] },
528
- { type: Location, decorators: [{ type: Optional }] },
529
- { type: MatBottomSheetConfig, decorators: [{ type: Optional }, { type: Inject, args: [MAT_BOTTOM_SHEET_DEFAULT_OPTIONS,] }] }
530
- ];
531
- return MatBottomSheet;
532
- })();
492
+ /**
493
+ * Creates an injector to be used inside of a bottom sheet component.
494
+ * @param config Config that was used to create the bottom sheet.
495
+ * @param bottomSheetRef Reference to the bottom sheet.
496
+ */
497
+ _createInjector(config, bottomSheetRef) {
498
+ const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;
499
+ const injectionTokens = new WeakMap([
500
+ [MatBottomSheetRef, bottomSheetRef],
501
+ [MAT_BOTTOM_SHEET_DATA, config.data]
502
+ ]);
503
+ if (config.direction &&
504
+ (!userInjector || !userInjector.get(Directionality, null))) {
505
+ injectionTokens.set(Directionality, {
506
+ value: config.direction,
507
+ change: of()
508
+ });
509
+ }
510
+ return new PortalInjector(userInjector || this._injector, injectionTokens);
511
+ }
512
+ }
513
+ MatBottomSheet.ɵprov = ɵɵdefineInjectable({ factory: function MatBottomSheet_Factory() { return new MatBottomSheet(ɵɵinject(Overlay), ɵɵinject(INJECTOR), ɵɵinject(MatBottomSheet, 12), ɵɵinject(Location, 8), ɵɵinject(MAT_BOTTOM_SHEET_DEFAULT_OPTIONS, 8)); }, token: MatBottomSheet, providedIn: MatBottomSheetModule });
514
+ MatBottomSheet.decorators = [
515
+ { type: Injectable, args: [{ providedIn: MatBottomSheetModule },] }
516
+ ];
517
+ MatBottomSheet.ctorParameters = () => [
518
+ { type: Overlay },
519
+ { type: Injector },
520
+ { type: MatBottomSheet, decorators: [{ type: Optional }, { type: SkipSelf }] },
521
+ { type: Location, decorators: [{ type: Optional }] },
522
+ { type: MatBottomSheetConfig, decorators: [{ type: Optional }, { type: Inject, args: [MAT_BOTTOM_SHEET_DEFAULT_OPTIONS,] }] }
523
+ ];
533
524
  /**
534
525
  * Applies default options to the bottom sheet config.
535
526
  * @param defaults Object containing the default values to which to fall back.