@angular/material 7.1.0 → 7.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (495) hide show
  1. package/LICENSE +1 -1
  2. package/_theming.scss +50 -19
  3. package/autocomplete/typings/index.d.ts +0 -1
  4. package/autocomplete/typings/index.metadata.json +1 -1
  5. package/autocomplete/typings/public-api.d.ts +1 -0
  6. package/badge/typings/index.metadata.json +1 -1
  7. package/bottom-sheet/typings/bottom-sheet-ref.d.ts +2 -0
  8. package/bottom-sheet/typings/index.metadata.json +1 -1
  9. package/bundles/material-autocomplete.umd.js +139 -39
  10. package/bundles/material-autocomplete.umd.js.map +1 -1
  11. package/bundles/material-autocomplete.umd.min.js +1 -1
  12. package/bundles/material-autocomplete.umd.min.js.map +1 -1
  13. package/bundles/material-badge.umd.js +38 -5
  14. package/bundles/material-badge.umd.js.map +1 -1
  15. package/bundles/material-badge.umd.min.js +1 -1
  16. package/bundles/material-badge.umd.min.js.map +1 -1
  17. package/bundles/material-bottom-sheet.umd.js +67 -22
  18. package/bundles/material-bottom-sheet.umd.js.map +1 -1
  19. package/bundles/material-bottom-sheet.umd.min.js +1 -1
  20. package/bundles/material-bottom-sheet.umd.min.js.map +1 -1
  21. package/bundles/material-button-toggle.umd.js +45 -14
  22. package/bundles/material-button-toggle.umd.js.map +1 -1
  23. package/bundles/material-button-toggle.umd.min.js +1 -1
  24. package/bundles/material-button-toggle.umd.min.js.map +1 -1
  25. package/bundles/material-button.umd.js +21 -14
  26. package/bundles/material-button.umd.js.map +1 -1
  27. package/bundles/material-button.umd.min.js +1 -1
  28. package/bundles/material-button.umd.min.js.map +1 -1
  29. package/bundles/material-card.umd.js +3 -3
  30. package/bundles/material-card.umd.js.map +1 -1
  31. package/bundles/material-card.umd.min.js +1 -1
  32. package/bundles/material-card.umd.min.js.map +1 -1
  33. package/bundles/material-checkbox.umd.js +56 -15
  34. package/bundles/material-checkbox.umd.js.map +1 -1
  35. package/bundles/material-checkbox.umd.min.js +1 -1
  36. package/bundles/material-checkbox.umd.min.js.map +1 -1
  37. package/bundles/material-chips.umd.js +126 -38
  38. package/bundles/material-chips.umd.js.map +1 -1
  39. package/bundles/material-chips.umd.min.js +1 -1
  40. package/bundles/material-chips.umd.min.js.map +1 -1
  41. package/bundles/material-core.umd.js +190 -127
  42. package/bundles/material-core.umd.js.map +1 -1
  43. package/bundles/material-core.umd.min.js +1 -2
  44. package/bundles/material-core.umd.min.js.map +1 -1
  45. package/bundles/material-datepicker.umd.js +205 -42
  46. package/bundles/material-datepicker.umd.js.map +1 -1
  47. package/bundles/material-datepicker.umd.min.js +2 -2
  48. package/bundles/material-datepicker.umd.min.js.map +1 -1
  49. package/bundles/material-dialog.umd.js +138 -40
  50. package/bundles/material-dialog.umd.js.map +1 -1
  51. package/bundles/material-dialog.umd.min.js +1 -1
  52. package/bundles/material-dialog.umd.min.js.map +1 -1
  53. package/bundles/material-divider.umd.js +2 -2
  54. package/bundles/material-divider.umd.js.map +1 -1
  55. package/bundles/material-divider.umd.min.js.map +1 -1
  56. package/bundles/material-expansion.umd.js +52 -26
  57. package/bundles/material-expansion.umd.js.map +1 -1
  58. package/bundles/material-expansion.umd.min.js +1 -1
  59. package/bundles/material-expansion.umd.min.js.map +1 -1
  60. package/bundles/material-form-field.umd.js +123 -34
  61. package/bundles/material-form-field.umd.js.map +1 -1
  62. package/bundles/material-form-field.umd.min.js +1 -1
  63. package/bundles/material-form-field.umd.min.js.map +1 -1
  64. package/bundles/material-grid-list.umd.js +67 -16
  65. package/bundles/material-grid-list.umd.js.map +1 -1
  66. package/bundles/material-grid-list.umd.min.js +1 -1
  67. package/bundles/material-grid-list.umd.min.js.map +1 -1
  68. package/bundles/material-icon.umd.js +288 -78
  69. package/bundles/material-icon.umd.js.map +1 -1
  70. package/bundles/material-icon.umd.min.js +1 -1
  71. package/bundles/material-icon.umd.min.js.map +1 -1
  72. package/bundles/material-input.umd.js +50 -22
  73. package/bundles/material-input.umd.js.map +1 -1
  74. package/bundles/material-input.umd.min.js +1 -1
  75. package/bundles/material-input.umd.min.js.map +1 -1
  76. package/bundles/material-list.umd.js +159 -26
  77. package/bundles/material-list.umd.js.map +1 -1
  78. package/bundles/material-list.umd.min.js +2 -2
  79. package/bundles/material-list.umd.min.js.map +1 -1
  80. package/bundles/material-menu.umd.js +176 -70
  81. package/bundles/material-menu.umd.js.map +1 -1
  82. package/bundles/material-menu.umd.min.js +1 -1
  83. package/bundles/material-menu.umd.min.js.map +1 -1
  84. package/bundles/material-paginator.umd.js +25 -8
  85. package/bundles/material-paginator.umd.js.map +1 -1
  86. package/bundles/material-paginator.umd.min.js.map +1 -1
  87. package/bundles/material-progress-bar.umd.js +32 -13
  88. package/bundles/material-progress-bar.umd.js.map +1 -1
  89. package/bundles/material-progress-bar.umd.min.js +1 -1
  90. package/bundles/material-progress-bar.umd.min.js.map +1 -1
  91. package/bundles/material-progress-spinner.umd.js +30 -14
  92. package/bundles/material-progress-spinner.umd.js.map +1 -1
  93. package/bundles/material-progress-spinner.umd.min.js +1 -1
  94. package/bundles/material-progress-spinner.umd.min.js.map +1 -1
  95. package/bundles/material-radio.umd.js +38 -40
  96. package/bundles/material-radio.umd.js.map +1 -1
  97. package/bundles/material-radio.umd.min.js +1 -1
  98. package/bundles/material-radio.umd.min.js.map +1 -1
  99. package/bundles/material-select.umd.js +186 -49
  100. package/bundles/material-select.umd.js.map +1 -1
  101. package/bundles/material-select.umd.min.js +1 -1
  102. package/bundles/material-select.umd.min.js.map +1 -1
  103. package/bundles/material-sidenav.umd.js +104 -25
  104. package/bundles/material-sidenav.umd.js.map +1 -1
  105. package/bundles/material-sidenav.umd.min.js +1 -1
  106. package/bundles/material-sidenav.umd.min.js.map +1 -1
  107. package/bundles/material-slide-toggle.umd.js +31 -15
  108. package/bundles/material-slide-toggle.umd.js.map +1 -1
  109. package/bundles/material-slide-toggle.umd.min.js +1 -1
  110. package/bundles/material-slide-toggle.umd.min.js.map +1 -1
  111. package/bundles/material-slider.umd.js +88 -20
  112. package/bundles/material-slider.umd.js.map +1 -1
  113. package/bundles/material-slider.umd.min.js +1 -1
  114. package/bundles/material-slider.umd.min.js.map +1 -1
  115. package/bundles/material-snack-bar.umd.js +69 -20
  116. package/bundles/material-snack-bar.umd.js.map +1 -1
  117. package/bundles/material-snack-bar.umd.min.js +1 -1
  118. package/bundles/material-snack-bar.umd.min.js.map +1 -1
  119. package/bundles/material-sort.umd.js +46 -24
  120. package/bundles/material-sort.umd.js.map +1 -1
  121. package/bundles/material-sort.umd.min.js +1 -1
  122. package/bundles/material-sort.umd.min.js.map +1 -1
  123. package/bundles/material-stepper.umd.js +29 -20
  124. package/bundles/material-stepper.umd.js.map +1 -1
  125. package/bundles/material-stepper.umd.min.js +1 -1
  126. package/bundles/material-stepper.umd.min.js.map +1 -1
  127. package/bundles/material-table.umd.js +48 -15
  128. package/bundles/material-table.umd.js.map +1 -1
  129. package/bundles/material-table.umd.min.js +1 -1
  130. package/bundles/material-table.umd.min.js.map +1 -1
  131. package/bundles/material-tabs.umd.js +162 -61
  132. package/bundles/material-tabs.umd.js.map +1 -1
  133. package/bundles/material-tabs.umd.min.js +2 -2
  134. package/bundles/material-tabs.umd.min.js.map +1 -1
  135. package/bundles/material-toolbar.umd.js +14 -4
  136. package/bundles/material-toolbar.umd.js.map +1 -1
  137. package/bundles/material-toolbar.umd.min.js +1 -1
  138. package/bundles/material-toolbar.umd.min.js.map +1 -1
  139. package/bundles/material-tooltip.umd.js +62 -26
  140. package/bundles/material-tooltip.umd.js.map +1 -1
  141. package/bundles/material-tooltip.umd.min.js +1 -1
  142. package/bundles/material-tooltip.umd.min.js.map +1 -1
  143. package/bundles/material-tree.umd.js +25 -16
  144. package/bundles/material-tree.umd.js.map +1 -1
  145. package/bundles/material-tree.umd.min.js +1 -1
  146. package/bundles/material-tree.umd.min.js.map +1 -1
  147. package/bundles/material.umd.js +2927 -995
  148. package/bundles/material.umd.js.map +1 -1
  149. package/bundles/material.umd.min.js +18 -18
  150. package/bundles/material.umd.min.js.map +1 -1
  151. package/button/typings/button.d.ts +0 -5
  152. package/button/typings/index.metadata.json +1 -1
  153. package/button-toggle/typings/index.metadata.json +1 -1
  154. package/card/typings/index.metadata.json +1 -1
  155. package/checkbox/typings/index.metadata.json +1 -1
  156. package/chips/typings/chip-list.d.ts +2 -2
  157. package/chips/typings/chip.d.ts +2 -2
  158. package/chips/typings/index.metadata.json +1 -1
  159. package/core/typings/index.metadata.json +1 -1
  160. package/core/typings/{testing/month-constants.d.ts → month-constants.d.ts} +2 -0
  161. package/core/typings/public-api.d.ts +1 -1
  162. package/core/typings/ripple/ripple.d.ts +1 -1
  163. package/datepicker/typings/calendar.d.ts +2 -2
  164. package/datepicker/typings/index.metadata.json +1 -1
  165. package/dialog/typings/index.metadata.json +1 -1
  166. package/esm2015/autocomplete.js +73 -36
  167. package/esm2015/autocomplete.js.map +1 -1
  168. package/esm2015/badge.js +29 -6
  169. package/esm2015/badge.js.map +1 -1
  170. package/esm2015/bottom-sheet.js +44 -23
  171. package/esm2015/bottom-sheet.js.map +1 -1
  172. package/esm2015/button-toggle.js +27 -11
  173. package/esm2015/button-toggle.js.map +1 -1
  174. package/esm2015/button.js +20 -15
  175. package/esm2015/button.js.map +1 -1
  176. package/esm2015/card.js +5 -5
  177. package/esm2015/card.js.map +1 -1
  178. package/esm2015/checkbox.js +30 -12
  179. package/esm2015/checkbox.js.map +1 -1
  180. package/esm2015/chips.js +64 -30
  181. package/esm2015/chips.js.map +1 -1
  182. package/esm2015/core.js +147 -128
  183. package/esm2015/core.js.map +1 -1
  184. package/esm2015/datepicker.js +103 -37
  185. package/esm2015/datepicker.js.map +1 -1
  186. package/esm2015/dialog.js +77 -40
  187. package/esm2015/dialog.js.map +1 -1
  188. package/esm2015/divider.js +4 -4
  189. package/esm2015/divider.js.map +1 -1
  190. package/esm2015/expansion.js +56 -29
  191. package/esm2015/expansion.js.map +1 -1
  192. package/esm2015/form-field.js +95 -35
  193. package/esm2015/form-field.js.map +1 -1
  194. package/esm2015/grid-list.js +45 -17
  195. package/esm2015/grid-list.js.map +1 -1
  196. package/esm2015/icon.js +144 -67
  197. package/esm2015/icon.js.map +1 -1
  198. package/esm2015/input.js +44 -23
  199. package/esm2015/input.js.map +1 -1
  200. package/esm2015/list.js +118 -24
  201. package/esm2015/list.js.map +1 -1
  202. package/esm2015/material.js +13 -12
  203. package/esm2015/material.js.map +1 -1
  204. package/esm2015/menu.js +114 -67
  205. package/esm2015/menu.js.map +1 -1
  206. package/esm2015/paginator.js +17 -9
  207. package/esm2015/paginator.js.map +1 -1
  208. package/esm2015/progress-bar.js +26 -13
  209. package/esm2015/progress-bar.js.map +1 -1
  210. package/esm2015/progress-spinner.js +24 -14
  211. package/esm2015/progress-spinner.js.map +1 -1
  212. package/esm2015/radio.js +22 -21
  213. package/esm2015/radio.js.map +1 -1
  214. package/esm2015/select.js +112 -50
  215. package/esm2015/select.js.map +1 -1
  216. package/esm2015/sidenav.js +75 -28
  217. package/esm2015/sidenav.js.map +1 -1
  218. package/esm2015/slide-toggle.js +23 -15
  219. package/esm2015/slide-toggle.js.map +1 -1
  220. package/esm2015/slider.js +51 -23
  221. package/esm2015/slider.js.map +1 -1
  222. package/esm2015/snack-bar.js +38 -21
  223. package/esm2015/snack-bar.js.map +1 -1
  224. package/esm2015/sort.js +47 -24
  225. package/esm2015/sort.js.map +1 -1
  226. package/esm2015/stepper.js +32 -23
  227. package/esm2015/stepper.js.map +1 -1
  228. package/esm2015/table.js +51 -18
  229. package/esm2015/table.js.map +1 -1
  230. package/esm2015/tabs.js +112 -49
  231. package/esm2015/tabs.js.map +1 -1
  232. package/esm2015/toolbar.js +9 -5
  233. package/esm2015/toolbar.js.map +1 -1
  234. package/esm2015/tooltip.js +49 -28
  235. package/esm2015/tooltip.js.map +1 -1
  236. package/esm2015/tree.js +22 -17
  237. package/esm2015/tree.js.map +1 -1
  238. package/esm5/autocomplete.es5.js +141 -41
  239. package/esm5/autocomplete.es5.js.map +1 -1
  240. package/esm5/badge.es5.js +40 -7
  241. package/esm5/badge.es5.js.map +1 -1
  242. package/esm5/bottom-sheet.es5.js +68 -23
  243. package/esm5/bottom-sheet.es5.js.map +1 -1
  244. package/esm5/button-toggle.es5.js +46 -15
  245. package/esm5/button-toggle.es5.js.map +1 -1
  246. package/esm5/button.es5.js +23 -16
  247. package/esm5/button.es5.js.map +1 -1
  248. package/esm5/card.es5.js +5 -5
  249. package/esm5/card.es5.js.map +1 -1
  250. package/esm5/checkbox.es5.js +58 -17
  251. package/esm5/checkbox.es5.js.map +1 -1
  252. package/esm5/chips.es5.js +129 -41
  253. package/esm5/chips.es5.js.map +1 -1
  254. package/esm5/core.es5.js +192 -129
  255. package/esm5/core.es5.js.map +1 -1
  256. package/esm5/datepicker.es5.js +207 -44
  257. package/esm5/datepicker.es5.js.map +1 -1
  258. package/esm5/dialog.es5.js +140 -42
  259. package/esm5/dialog.es5.js.map +1 -1
  260. package/esm5/divider.es5.js +4 -4
  261. package/esm5/divider.es5.js.map +1 -1
  262. package/esm5/expansion.es5.js +54 -29
  263. package/esm5/expansion.es5.js.map +1 -1
  264. package/esm5/form-field.es5.js +126 -37
  265. package/esm5/form-field.es5.js.map +1 -1
  266. package/esm5/grid-list.es5.js +68 -17
  267. package/esm5/grid-list.es5.js.map +1 -1
  268. package/esm5/icon.es5.js +290 -80
  269. package/esm5/icon.es5.js.map +1 -1
  270. package/esm5/input.es5.js +52 -24
  271. package/esm5/input.es5.js.map +1 -1
  272. package/esm5/list.es5.js +161 -27
  273. package/esm5/list.es5.js.map +1 -1
  274. package/esm5/material.es5.js +13 -12
  275. package/esm5/material.es5.js.map +1 -1
  276. package/esm5/menu.es5.js +175 -69
  277. package/esm5/menu.es5.js.map +1 -1
  278. package/esm5/paginator.es5.js +27 -10
  279. package/esm5/paginator.es5.js.map +1 -1
  280. package/esm5/progress-bar.es5.js +33 -14
  281. package/esm5/progress-bar.es5.js.map +1 -1
  282. package/esm5/progress-spinner.es5.js +31 -15
  283. package/esm5/progress-spinner.es5.js.map +1 -1
  284. package/esm5/radio.es5.js +42 -42
  285. package/esm5/radio.es5.js.map +1 -1
  286. package/esm5/select.es5.js +189 -52
  287. package/esm5/select.es5.js.map +1 -1
  288. package/esm5/sidenav.es5.js +107 -28
  289. package/esm5/sidenav.es5.js.map +1 -1
  290. package/esm5/slide-toggle.es5.js +32 -16
  291. package/esm5/slide-toggle.es5.js.map +1 -1
  292. package/esm5/slider.es5.js +91 -23
  293. package/esm5/slider.es5.js.map +1 -1
  294. package/esm5/snack-bar.es5.js +70 -21
  295. package/esm5/snack-bar.es5.js.map +1 -1
  296. package/esm5/sort.es5.js +53 -26
  297. package/esm5/sort.es5.js.map +1 -1
  298. package/esm5/stepper.es5.js +32 -23
  299. package/esm5/stepper.es5.js.map +1 -1
  300. package/esm5/table.es5.js +51 -18
  301. package/esm5/table.es5.js.map +1 -1
  302. package/esm5/tabs.es5.js +156 -55
  303. package/esm5/tabs.es5.js.map +1 -1
  304. package/esm5/toolbar.es5.js +16 -6
  305. package/esm5/toolbar.es5.js.map +1 -1
  306. package/esm5/tooltip.es5.js +64 -28
  307. package/esm5/tooltip.es5.js.map +1 -1
  308. package/esm5/tree.es5.js +27 -18
  309. package/esm5/tree.es5.js.map +1 -1
  310. package/expansion/typings/expansion-panel-header.d.ts +2 -2
  311. package/expansion/typings/expansion-panel.d.ts +19 -2
  312. package/expansion/typings/index.metadata.json +1 -1
  313. package/form-field/typings/form-field.d.ts +15 -4
  314. package/form-field/typings/index.metadata.json +1 -1
  315. package/form-field/typings/prefix.d.ts +1 -1
  316. package/grid-list/typings/index.d.ts +1 -1
  317. package/grid-list/typings/index.metadata.json +1 -1
  318. package/icon/typings/icon-registry.d.ts +3 -2
  319. package/icon/typings/index.metadata.json +1 -1
  320. package/list/typings/index.metadata.json +1 -1
  321. package/list/typings/list.d.ts +16 -5
  322. package/list/typings/selection-list.d.ts +1 -0
  323. package/material.d.ts +1 -1
  324. package/material.metadata.json +3 -3
  325. package/menu/typings/index.d.ts +4 -4
  326. package/menu/typings/index.metadata.json +1 -1
  327. package/menu/typings/menu-directive.d.ts +1 -0
  328. package/menu/typings/menu-item.d.ts +2 -0
  329. package/menu/typings/menu-trigger.d.ts +1 -1
  330. package/package.json +5 -5
  331. package/prebuilt-themes/deeppurple-amber.css +1 -1
  332. package/prebuilt-themes/indigo-pink.css +1 -1
  333. package/prebuilt-themes/pink-bluegrey.css +1 -1
  334. package/prebuilt-themes/purple-green.css +1 -1
  335. package/progress-bar/typings/index.metadata.json +1 -1
  336. package/radio/typings/index.metadata.json +1 -1
  337. package/radio/typings/radio.d.ts +2 -6
  338. package/schematics/ng-add/theming/{custom-theme.d.ts → create-custom-theme.d.ts} +0 -0
  339. package/schematics/ng-add/theming/{custom-theme.js → create-custom-theme.js} +1 -1
  340. package/schematics/ng-add/theming/create-custom-theme.js.map +1 -0
  341. package/schematics/ng-add/theming/theming.js +35 -19
  342. package/schematics/ng-add/theming/theming.js.map +1 -1
  343. package/schematics/ng-generate/address-form/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.ts +2 -2
  344. package/schematics/ng-generate/dashboard/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.ts +2 -2
  345. package/schematics/ng-generate/nav/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.ts +2 -2
  346. package/schematics/ng-generate/table/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.ts +2 -2
  347. package/schematics/ng-generate/tree/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.ts +2 -2
  348. package/select/typings/index.metadata.json +1 -1
  349. package/select/typings/select.d.ts +12 -2
  350. package/sidenav/typings/drawer.d.ts +9 -2
  351. package/sidenav/typings/index.metadata.json +1 -1
  352. package/slide-toggle/typings/index.metadata.json +1 -1
  353. package/slider/typings/index.metadata.json +1 -1
  354. package/snack-bar/typings/index.metadata.json +1 -1
  355. package/sort/typings/index.metadata.json +1 -1
  356. package/stepper/typings/index.metadata.json +1 -1
  357. package/table/typings/index.metadata.json +1 -1
  358. package/table/typings/table-data-source.d.ts +2 -0
  359. package/tabs/typings/index.d.ts +5 -5
  360. package/tabs/typings/index.metadata.json +1 -1
  361. package/tabs/typings/tab-group.d.ts +2 -1
  362. package/tabs/typings/tab-header.d.ts +8 -4
  363. package/toolbar/typings/index.metadata.json +1 -1
  364. package/tooltip/typings/index.metadata.json +1 -1
  365. package/tooltip/typings/tooltip.d.ts +2 -1
  366. package/tree/typings/data-source/flat-data-source.d.ts +2 -2
  367. package/tree/typings/index.metadata.json +1 -1
  368. package/typings/autocomplete/index.d.ts +0 -1
  369. package/typings/autocomplete/index.metadata.json +1 -1
  370. package/typings/autocomplete/public-api.d.ts +1 -0
  371. package/typings/badge/index.metadata.json +1 -1
  372. package/typings/bottom-sheet/bottom-sheet-ref.d.ts +2 -0
  373. package/typings/bottom-sheet/index.metadata.json +1 -1
  374. package/typings/button/button.d.ts +0 -5
  375. package/typings/button/index.metadata.json +1 -1
  376. package/typings/button-toggle/index.metadata.json +1 -1
  377. package/typings/card/index.metadata.json +1 -1
  378. package/typings/checkbox/index.metadata.json +1 -1
  379. package/typings/chips/chip-list.d.ts +2 -2
  380. package/typings/chips/chip.d.ts +2 -2
  381. package/typings/chips/index.metadata.json +1 -1
  382. package/typings/core/index.metadata.json +1 -1
  383. package/typings/core/{testing/month-constants.d.ts → month-constants.d.ts} +2 -0
  384. package/typings/core/public-api.d.ts +1 -1
  385. package/typings/core/ripple/ripple.d.ts +1 -1
  386. package/typings/datepicker/calendar.d.ts +2 -2
  387. package/typings/datepicker/index.metadata.json +1 -1
  388. package/typings/dialog/index.metadata.json +1 -1
  389. package/typings/esm5/autocomplete/index.d.ts +0 -1
  390. package/typings/esm5/autocomplete/index.metadata.json +1 -1
  391. package/typings/esm5/autocomplete/public-api.d.ts +1 -0
  392. package/typings/esm5/badge/index.metadata.json +1 -1
  393. package/typings/esm5/bottom-sheet/bottom-sheet-ref.d.ts +2 -0
  394. package/typings/esm5/bottom-sheet/index.metadata.json +1 -1
  395. package/typings/esm5/button/button.d.ts +0 -5
  396. package/typings/esm5/button/index.metadata.json +1 -1
  397. package/typings/esm5/button-toggle/index.metadata.json +1 -1
  398. package/typings/esm5/card/index.metadata.json +1 -1
  399. package/typings/esm5/checkbox/index.metadata.json +1 -1
  400. package/typings/esm5/chips/chip-list.d.ts +2 -2
  401. package/typings/esm5/chips/chip.d.ts +2 -2
  402. package/typings/esm5/chips/index.metadata.json +1 -1
  403. package/typings/esm5/core/index.metadata.json +1 -1
  404. package/typings/esm5/core/{testing/month-constants.d.ts → month-constants.d.ts} +2 -0
  405. package/typings/esm5/core/public-api.d.ts +1 -1
  406. package/typings/esm5/core/ripple/ripple.d.ts +1 -1
  407. package/typings/esm5/datepicker/calendar.d.ts +2 -2
  408. package/typings/esm5/datepicker/index.metadata.json +1 -1
  409. package/typings/esm5/dialog/index.metadata.json +1 -1
  410. package/typings/esm5/expansion/expansion-panel-header.d.ts +2 -2
  411. package/typings/esm5/expansion/expansion-panel.d.ts +19 -2
  412. package/typings/esm5/expansion/index.metadata.json +1 -1
  413. package/typings/esm5/form-field/form-field.d.ts +15 -4
  414. package/typings/esm5/form-field/index.metadata.json +1 -1
  415. package/typings/esm5/form-field/prefix.d.ts +1 -1
  416. package/typings/esm5/grid-list/index.d.ts +1 -1
  417. package/typings/esm5/grid-list/index.metadata.json +1 -1
  418. package/typings/esm5/icon/icon-registry.d.ts +3 -2
  419. package/typings/esm5/icon/index.metadata.json +1 -1
  420. package/typings/esm5/index.metadata.json +1 -1
  421. package/typings/esm5/list/index.metadata.json +1 -1
  422. package/typings/esm5/list/list.d.ts +16 -5
  423. package/typings/esm5/list/selection-list.d.ts +1 -0
  424. package/typings/esm5/menu/index.d.ts +4 -4
  425. package/typings/esm5/menu/index.metadata.json +1 -1
  426. package/typings/esm5/menu/menu-directive.d.ts +1 -0
  427. package/typings/esm5/menu/menu-item.d.ts +2 -0
  428. package/typings/esm5/menu/menu-trigger.d.ts +1 -1
  429. package/typings/esm5/progress-bar/index.metadata.json +1 -1
  430. package/typings/esm5/radio/index.metadata.json +1 -1
  431. package/typings/esm5/radio/radio.d.ts +2 -6
  432. package/typings/esm5/select/index.metadata.json +1 -1
  433. package/typings/esm5/select/select.d.ts +12 -2
  434. package/typings/esm5/sidenav/drawer.d.ts +9 -2
  435. package/typings/esm5/sidenav/index.metadata.json +1 -1
  436. package/typings/esm5/slide-toggle/index.metadata.json +1 -1
  437. package/typings/esm5/slider/index.metadata.json +1 -1
  438. package/typings/esm5/snack-bar/index.metadata.json +1 -1
  439. package/typings/esm5/sort/index.metadata.json +1 -1
  440. package/typings/esm5/stepper/index.metadata.json +1 -1
  441. package/typings/esm5/table/index.metadata.json +1 -1
  442. package/typings/esm5/table/table-data-source.d.ts +2 -0
  443. package/typings/esm5/tabs/index.d.ts +5 -5
  444. package/typings/esm5/tabs/index.metadata.json +1 -1
  445. package/typings/esm5/tabs/tab-group.d.ts +2 -1
  446. package/typings/esm5/tabs/tab-header.d.ts +8 -4
  447. package/typings/esm5/toolbar/index.metadata.json +1 -1
  448. package/typings/esm5/tooltip/index.metadata.json +1 -1
  449. package/typings/esm5/tooltip/tooltip.d.ts +2 -1
  450. package/typings/esm5/tree/data-source/flat-data-source.d.ts +2 -2
  451. package/typings/esm5/tree/index.metadata.json +1 -1
  452. package/typings/expansion/expansion-panel-header.d.ts +2 -2
  453. package/typings/expansion/expansion-panel.d.ts +19 -2
  454. package/typings/expansion/index.metadata.json +1 -1
  455. package/typings/form-field/form-field.d.ts +15 -4
  456. package/typings/form-field/index.metadata.json +1 -1
  457. package/typings/form-field/prefix.d.ts +1 -1
  458. package/typings/grid-list/index.d.ts +1 -1
  459. package/typings/grid-list/index.metadata.json +1 -1
  460. package/typings/icon/icon-registry.d.ts +3 -2
  461. package/typings/icon/index.metadata.json +1 -1
  462. package/typings/index.metadata.json +1 -1
  463. package/typings/list/index.metadata.json +1 -1
  464. package/typings/list/list.d.ts +16 -5
  465. package/typings/list/selection-list.d.ts +1 -0
  466. package/typings/menu/index.d.ts +4 -4
  467. package/typings/menu/index.metadata.json +1 -1
  468. package/typings/menu/menu-directive.d.ts +1 -0
  469. package/typings/menu/menu-item.d.ts +2 -0
  470. package/typings/menu/menu-trigger.d.ts +1 -1
  471. package/typings/progress-bar/index.metadata.json +1 -1
  472. package/typings/radio/index.metadata.json +1 -1
  473. package/typings/radio/radio.d.ts +2 -6
  474. package/typings/schematics/ng-add/theming/{custom-theme.d.ts → create-custom-theme.d.ts} +0 -0
  475. package/typings/select/index.metadata.json +1 -1
  476. package/typings/select/select.d.ts +12 -2
  477. package/typings/sidenav/drawer.d.ts +9 -2
  478. package/typings/sidenav/index.metadata.json +1 -1
  479. package/typings/slide-toggle/index.metadata.json +1 -1
  480. package/typings/slider/index.metadata.json +1 -1
  481. package/typings/snack-bar/index.metadata.json +1 -1
  482. package/typings/sort/index.metadata.json +1 -1
  483. package/typings/stepper/index.metadata.json +1 -1
  484. package/typings/table/index.metadata.json +1 -1
  485. package/typings/table/table-data-source.d.ts +2 -0
  486. package/typings/tabs/index.d.ts +5 -5
  487. package/typings/tabs/index.metadata.json +1 -1
  488. package/typings/tabs/tab-group.d.ts +2 -1
  489. package/typings/tabs/tab-header.d.ts +8 -4
  490. package/typings/toolbar/index.metadata.json +1 -1
  491. package/typings/tooltip/index.metadata.json +1 -1
  492. package/typings/tooltip/tooltip.d.ts +2 -1
  493. package/typings/tree/data-source/flat-data-source.d.ts +2 -2
  494. package/typings/tree/index.metadata.json +1 -1
  495. package/schematics/ng-add/theming/custom-theme.js.map +0 -1
package/esm2015/select.js CHANGED
@@ -6,7 +6,7 @@
6
6
  * found in the LICENSE file at https://angular.io/license
7
7
  */
8
8
  import { animate, state, style, transition, trigger } from '@angular/animations';
9
- import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';
9
+ import { ActiveDescendantKeyManager, LiveAnnouncer } from '@angular/cdk/a11y';
10
10
  import { Directionality } from '@angular/cdk/bidi';
11
11
  import { coerceBooleanProperty } from '@angular/cdk/coercion';
12
12
  import { SelectionModel } from '@angular/cdk/collections';
@@ -23,25 +23,26 @@ import { CommonModule } from '@angular/common';
23
23
 
24
24
  /**
25
25
  * @fileoverview added by tsickle
26
- * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
26
+ * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
27
27
  */
28
- /** *
28
+ /**
29
29
  * The following are all the animations for the mat-select component, with each
30
30
  * const containing the metadata for one animation.
31
31
  *
32
32
  * The values below match the implementation of the AngularJS Material mat-select animation.
33
33
  * \@docs-private
34
- @type {?} */
34
+ * @type {?}
35
+ */
35
36
  const matSelectAnimations = {
36
37
  /**
37
- * This animation transforms the select's overlay panel on and off the page.
38
- *
39
- * When the panel is attached to the DOM, it expands its width by the amount of padding, scales it
40
- * up to 100% on the Y axis, fades in its border, and translates slightly up and to the
41
- * side to ensure the option text correctly overlaps the trigger text.
42
- *
43
- * When the panel is removed from the DOM, it simply fades out linearly.
44
- */
38
+ * This animation transforms the select's overlay panel on and off the page.
39
+ *
40
+ * When the panel is attached to the DOM, it expands its width by the amount of padding, scales it
41
+ * up to 100% on the Y axis, fades in its border, and translates slightly up and to the
42
+ * side to ensure the option text correctly overlaps the trigger text.
43
+ *
44
+ * When the panel is removed from the DOM, it simply fades out linearly.
45
+ */
45
46
  transformPanel: trigger('transformPanel', [
46
47
  state('void', style({
47
48
  transform: 'scaleY(0.8)',
@@ -64,12 +65,12 @@ const matSelectAnimations = {
64
65
  transition('* => void', animate('100ms 25ms linear', style({ opacity: 0 })))
65
66
  ]),
66
67
  /**
67
- * This animation fades in the background color and text content of the
68
- * select's options. It is time delayed to occur 100ms after the overlay
69
- * panel has transformed in.
70
- * @deprecated Not used anymore. To be removed.
71
- * @breaking-change 8.0.0
72
- */
68
+ * This animation fades in the background color and text content of the
69
+ * select's options. It is time delayed to occur 100ms after the overlay
70
+ * panel has transformed in.
71
+ * @deprecated Not used anymore. To be removed.
72
+ * \@breaking-change 8.0.0
73
+ */
73
74
  fadeInContent: trigger('fadeInContent', [
74
75
  state('showing', style({ opacity: 1 })),
75
76
  transition('void => showing', [
@@ -78,22 +79,24 @@ const matSelectAnimations = {
78
79
  ])
79
80
  ])
80
81
  };
81
- /** *
82
+ /**
82
83
  * @deprecated
83
84
  * \@breaking-change 8.0.0
84
85
  * \@docs-private
85
- @type {?} */
86
+ * @type {?}
87
+ */
86
88
  const transformPanel = matSelectAnimations.transformPanel;
87
- /** *
89
+ /**
88
90
  * @deprecated
89
91
  * \@breaking-change 8.0.0
90
92
  * \@docs-private
91
- @type {?} */
93
+ * @type {?}
94
+ */
92
95
  const fadeInContent = matSelectAnimations.fadeInContent;
93
96
 
94
97
  /**
95
98
  * @fileoverview added by tsickle
96
- * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
99
+ * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
97
100
  */
98
101
 
99
102
  /**
@@ -127,27 +130,32 @@ function getMatSelectNonFunctionValueError() {
127
130
 
128
131
  /**
129
132
  * @fileoverview added by tsickle
130
- * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
133
+ * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
131
134
  */
132
135
  /** @type {?} */
133
136
  let nextUniqueId = 0;
134
- /** *
137
+ /**
135
138
  * The max height of the select's overlay panel
136
- @type {?} */
139
+ * @type {?}
140
+ */
137
141
  const SELECT_PANEL_MAX_HEIGHT = 256;
138
- /** *
142
+ /**
139
143
  * The panel's padding on the x-axis
140
- @type {?} */
144
+ * @type {?}
145
+ */
141
146
  const SELECT_PANEL_PADDING_X = 16;
142
- /** *
147
+ /**
143
148
  * The panel's x axis padding if it is indented (e.g. there is an option group).
144
- @type {?} */
149
+ * @type {?}
150
+ */
145
151
  const SELECT_PANEL_INDENT_PADDING_X = SELECT_PANEL_PADDING_X * 2;
146
- /** *
152
+ /**
147
153
  * The height of the select items in `em` units.
148
- @type {?} */
154
+ * @type {?}
155
+ */
149
156
  const SELECT_ITEM_HEIGHT_EM = 3;
150
- /** *
157
+ // TODO(josephperrott): Revert to a constant after 2018 spec updates are fully merged.
158
+ /**
151
159
  * Distance between the panel edge and the option text in
152
160
  * multi-selection mode.
153
161
  *
@@ -155,16 +163,19 @@ const SELECT_ITEM_HEIGHT_EM = 3;
155
163
  * (SELECT_PANEL_PADDING_X * 1.5) + 20 = 44
156
164
  * The padding is multiplied by 1.5 because the checkbox's margin is half the padding.
157
165
  * The checkbox width is 16px.
158
- @type {?} */
166
+ * @type {?}
167
+ */
159
168
  let SELECT_MULTIPLE_PANEL_PADDING_X = 0;
160
- /** *
169
+ /**
161
170
  * The select panel will only "fit" inside the viewport if it is positioned at
162
171
  * this value or more away from the viewport boundary.
163
- @type {?} */
172
+ * @type {?}
173
+ */
164
174
  const SELECT_PANEL_VIEWPORT_PADDING = 8;
165
- /** *
175
+ /**
166
176
  * Injection token that determines the scroll handling while a select is open.
167
- @type {?} */
177
+ * @type {?}
178
+ */
168
179
  const MAT_SELECT_SCROLL_STRATEGY = new InjectionToken('mat-select-scroll-strategy');
169
180
  /**
170
181
  * \@docs-private
@@ -174,9 +185,10 @@ const MAT_SELECT_SCROLL_STRATEGY = new InjectionToken('mat-select-scroll-strateg
174
185
  function MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay) {
175
186
  return () => overlay.scrollStrategies.reposition();
176
187
  }
177
- /** *
188
+ /**
178
189
  * \@docs-private
179
- @type {?} */
190
+ * @type {?}
191
+ */
180
192
  const MAT_SELECT_SCROLL_STRATEGY_PROVIDER = {
181
193
  provide: MAT_SELECT_SCROLL_STRATEGY,
182
194
  deps: [Overlay],
@@ -195,6 +207,7 @@ class MatSelectChange {
195
207
  this.value = value;
196
208
  }
197
209
  }
210
+ // Boilerplate for applying mixins to MatSelect.
198
211
  /**
199
212
  * \@docs-private
200
213
  */
@@ -240,8 +253,9 @@ class MatSelect extends _MatSelectMixinBase {
240
253
  * @param {?} ngControl
241
254
  * @param {?} tabIndex
242
255
  * @param {?} scrollStrategyFactory
256
+ * @param {?=} _liveAnnouncer
243
257
  */
244
- constructor(_viewportRuler, _changeDetectorRef, _ngZone, _defaultErrorStateMatcher, elementRef, _dir, _parentForm, _parentFormGroup, _parentFormField, ngControl, tabIndex, scrollStrategyFactory) {
258
+ constructor(_viewportRuler, _changeDetectorRef, _ngZone, _defaultErrorStateMatcher, elementRef, _dir, _parentForm, _parentFormGroup, _parentFormField, ngControl, tabIndex, scrollStrategyFactory, _liveAnnouncer) {
245
259
  super(elementRef, _defaultErrorStateMatcher, _parentForm, _parentFormGroup, ngControl);
246
260
  this._viewportRuler = _viewportRuler;
247
261
  this._changeDetectorRef = _changeDetectorRef;
@@ -249,6 +263,7 @@ class MatSelect extends _MatSelectMixinBase {
249
263
  this._dir = _dir;
250
264
  this._parentFormField = _parentFormField;
251
265
  this.ngControl = ngControl;
266
+ this._liveAnnouncer = _liveAnnouncer;
252
267
  /**
253
268
  * Whether or not the overlay panel is open.
254
269
  */
@@ -554,7 +569,7 @@ class MatSelect extends _MatSelectMixinBase {
554
569
  ngOnChanges(changes) {
555
570
  // Updating the disabled state is handled by `mixinDisabled`, but we need to additionally let
556
571
  // the parent form field know to run change detection when the disabled state changes.
557
- if (changes["disabled"]) {
572
+ if (changes.disabled) {
558
573
  this.stateChanges.next();
559
574
  }
560
575
  }
@@ -708,6 +723,7 @@ class MatSelect extends _MatSelectMixinBase {
708
723
  }
709
724
  /**
710
725
  * Handles keyboard events while the select is closed.
726
+ * @private
711
727
  * @param {?} event
712
728
  * @return {?}
713
729
  */
@@ -727,6 +743,8 @@ class MatSelect extends _MatSelectMixinBase {
727
743
  this.open();
728
744
  }
729
745
  else if (!this.multiple) {
746
+ /** @type {?} */
747
+ const selectedOption = this.selected;
730
748
  if (keyCode === HOME || keyCode === END) {
731
749
  keyCode === HOME ? manager.setFirstItemActive() : manager.setLastItemActive();
732
750
  event.preventDefault();
@@ -734,10 +752,16 @@ class MatSelect extends _MatSelectMixinBase {
734
752
  else {
735
753
  manager.onKeydown(event);
736
754
  }
755
+ // Since the value has changed, we need to announce it ourselves.
756
+ // @breaking-change 8.0.0 remove null check for _liveAnnouncer.
757
+ if (this._liveAnnouncer && selectedOption !== this.selected) {
758
+ this._liveAnnouncer.announce(((/** @type {?} */ (this.selected))).viewValue);
759
+ }
737
760
  }
738
761
  }
739
762
  /**
740
763
  * Handles keyboard events when the selected is open.
764
+ * @private
741
765
  * @param {?} event
742
766
  * @return {?}
743
767
  */
@@ -823,8 +847,10 @@ class MatSelect extends _MatSelectMixinBase {
823
847
  _getPanelTheme() {
824
848
  return this._parentFormField ? `mat-${this._parentFormField.color}` : '';
825
849
  }
850
+ // TODO(josephperrott): Remove after 2018 spec updates are fully merged.
826
851
  /**
827
852
  * Sets the pseudo checkbox padding size based on the width of the pseudo checkbox.
853
+ * @private
828
854
  * @return {?}
829
855
  */
830
856
  _setPseudoCheckboxPaddingSize() {
@@ -844,6 +870,7 @@ class MatSelect extends _MatSelectMixinBase {
844
870
  return !this._selectionModel || this._selectionModel.isEmpty();
845
871
  }
846
872
  /**
873
+ * @private
847
874
  * @return {?}
848
875
  */
849
876
  _initializeSelection() {
@@ -851,11 +878,13 @@ class MatSelect extends _MatSelectMixinBase {
851
878
  // has changed after it was checked" errors from Angular.
852
879
  Promise.resolve().then(() => {
853
880
  this._setSelectionByValue(this.ngControl ? this.ngControl.value : this._value);
881
+ this.stateChanges.next();
854
882
  });
855
883
  }
856
884
  /**
857
885
  * Sets the selected option based on a value. If no option can be
858
886
  * found with the designated value, the select trigger is cleared.
887
+ * @private
859
888
  * @param {?} value
860
889
  * @return {?}
861
890
  */
@@ -882,6 +911,7 @@ class MatSelect extends _MatSelectMixinBase {
882
911
  }
883
912
  /**
884
913
  * Finds and selects and option based on its value.
914
+ * @private
885
915
  * @param {?} value
886
916
  * @return {?} Option that has the corresponding value.
887
917
  */
@@ -907,6 +937,7 @@ class MatSelect extends _MatSelectMixinBase {
907
937
  }
908
938
  /**
909
939
  * Sets up a key manager to listen to keyboard events on the overlay panel.
940
+ * @private
910
941
  * @return {?}
911
942
  */
912
943
  _initKeyManager() {
@@ -932,6 +963,7 @@ class MatSelect extends _MatSelectMixinBase {
932
963
  }
933
964
  /**
934
965
  * Drops current option subscriptions and IDs and resets from scratch.
966
+ * @private
935
967
  * @return {?}
936
968
  */
937
969
  _resetOptions() {
@@ -956,6 +988,7 @@ class MatSelect extends _MatSelectMixinBase {
956
988
  }
957
989
  /**
958
990
  * Invoked when an option is clicked.
991
+ * @private
959
992
  * @param {?} option
960
993
  * @param {?} isUserInput
961
994
  * @return {?}
@@ -991,6 +1024,7 @@ class MatSelect extends _MatSelectMixinBase {
991
1024
  }
992
1025
  /**
993
1026
  * Sorts the selected values in the selected based on their order in the panel.
1027
+ * @private
994
1028
  * @return {?}
995
1029
  */
996
1030
  _sortValues() {
@@ -1006,6 +1040,7 @@ class MatSelect extends _MatSelectMixinBase {
1006
1040
  }
1007
1041
  /**
1008
1042
  * Emits change event to set the model value.
1043
+ * @private
1009
1044
  * @param {?=} fallbackValue
1010
1045
  * @return {?}
1011
1046
  */
@@ -1013,10 +1048,10 @@ class MatSelect extends _MatSelectMixinBase {
1013
1048
  /** @type {?} */
1014
1049
  let valueToEmit = null;
1015
1050
  if (this.multiple) {
1016
- valueToEmit = (/** @type {?} */ (this.selected)).map(option => option.value);
1051
+ valueToEmit = ((/** @type {?} */ (this.selected))).map(option => option.value);
1017
1052
  }
1018
1053
  else {
1019
- valueToEmit = this.selected ? (/** @type {?} */ (this.selected)).value : fallbackValue;
1054
+ valueToEmit = this.selected ? ((/** @type {?} */ (this.selected))).value : fallbackValue;
1020
1055
  }
1021
1056
  this._value = valueToEmit;
1022
1057
  this.valueChange.emit(valueToEmit);
@@ -1026,6 +1061,7 @@ class MatSelect extends _MatSelectMixinBase {
1026
1061
  }
1027
1062
  /**
1028
1063
  * Records option IDs to pass to the aria-owns property.
1064
+ * @private
1029
1065
  * @return {?}
1030
1066
  */
1031
1067
  _setOptionIds() {
@@ -1034,6 +1070,7 @@ class MatSelect extends _MatSelectMixinBase {
1034
1070
  /**
1035
1071
  * Highlights the selected item. If no option is selected, it will highlight
1036
1072
  * the first item instead.
1073
+ * @private
1037
1074
  * @return {?}
1038
1075
  */
1039
1076
  _highlightCorrectOption() {
@@ -1048,6 +1085,7 @@ class MatSelect extends _MatSelectMixinBase {
1048
1085
  }
1049
1086
  /**
1050
1087
  * Scrolls the active option into view.
1088
+ * @private
1051
1089
  * @return {?}
1052
1090
  */
1053
1091
  _scrollActiveOptionIntoView() {
@@ -1066,6 +1104,7 @@ class MatSelect extends _MatSelectMixinBase {
1066
1104
  }
1067
1105
  /**
1068
1106
  * Gets the index of the provided option in the option list.
1107
+ * @private
1069
1108
  * @param {?} option
1070
1109
  * @return {?}
1071
1110
  */
@@ -1076,6 +1115,7 @@ class MatSelect extends _MatSelectMixinBase {
1076
1115
  }
1077
1116
  /**
1078
1117
  * Calculates the scroll position and x- and y-offsets of the overlay panel.
1118
+ * @private
1079
1119
  * @return {?}
1080
1120
  */
1081
1121
  _calculateOverlayPosition() {
@@ -1087,11 +1127,15 @@ class MatSelect extends _MatSelectMixinBase {
1087
1127
  const panelHeight = Math.min(items * itemHeight, SELECT_PANEL_MAX_HEIGHT);
1088
1128
  /** @type {?} */
1089
1129
  const scrollContainerHeight = items * itemHeight;
1130
+ // The farthest the panel can be scrolled before it hits the bottom
1090
1131
  /** @type {?} */
1091
1132
  const maxScroll = scrollContainerHeight - panelHeight;
1133
+ // If no value is selected we open the popup to the first item.
1092
1134
  /** @type {?} */
1093
- let selectedOptionOffset = this.empty ? 0 : /** @type {?} */ ((this._getOptionIndex(this._selectionModel.selected[0])));
1135
+ let selectedOptionOffset = this.empty ? 0 : (/** @type {?} */ (this._getOptionIndex(this._selectionModel.selected[0])));
1094
1136
  selectedOptionOffset += _countGroupLabelsBeforeOption(selectedOptionOffset, this.options, this.optionGroups);
1137
+ // We must maintain a scroll buffer so the selected option will be scrolled to the
1138
+ // center of the overlay panel rather than the top.
1095
1139
  /** @type {?} */
1096
1140
  const scrollBuffer = panelHeight / 2;
1097
1141
  this._scrollTop = this._calculateOverlayScroll(selectedOptionOffset, scrollBuffer, maxScroll);
@@ -1116,6 +1160,10 @@ class MatSelect extends _MatSelectMixinBase {
1116
1160
  const optionOffsetFromScrollTop = itemHeight * selectedIndex;
1117
1161
  /** @type {?} */
1118
1162
  const halfOptionHeight = itemHeight / 2;
1163
+ // Starts at the optionOffsetFromScrollTop, which scrolls the option to the top of the
1164
+ // scroll container, then subtracts the scroll buffer to scroll the option down to
1165
+ // the center of the overlay panel. Half the option height must be re-added to the
1166
+ // scrollTop so the option is centered based on its middle, not its top edge.
1119
1167
  /** @type {?} */
1120
1168
  const optimalScrollPosition = optionOffsetFromScrollTop - scrollBuffer + halfOptionHeight;
1121
1169
  return Math.min(Math.max(0, optimalScrollPosition), maxScroll);
@@ -1161,6 +1209,7 @@ class MatSelect extends _MatSelectMixinBase {
1161
1209
  * the panel opens. Will change based on LTR or RTL text direction. Note that the offset
1162
1210
  * can't be calculated until the panel has been attached, because we need to know the
1163
1211
  * content width in order to constrain the panel within the viewport.
1212
+ * @private
1164
1213
  * @return {?}
1165
1214
  */
1166
1215
  _calculateOverlayOffsetX() {
@@ -1188,6 +1237,7 @@ class MatSelect extends _MatSelectMixinBase {
1188
1237
  if (!isRtl) {
1189
1238
  offsetX *= -1;
1190
1239
  }
1240
+ // Determine how much the select overflows on each side.
1191
1241
  /** @type {?} */
1192
1242
  const leftOverflow = 0 - (overlayRect.left + offsetX - (isRtl ? paddingWidth : 0));
1193
1243
  /** @type {?} */
@@ -1210,6 +1260,7 @@ class MatSelect extends _MatSelectMixinBase {
1210
1260
  * Calculates the y-offset of the select's overlay panel in relation to the
1211
1261
  * top start corner of the trigger. It has to be adjusted in order for the
1212
1262
  * selected option to be aligned over the trigger when the panel opens.
1263
+ * @private
1213
1264
  * @param {?} selectedIndex
1214
1265
  * @param {?} scrollBuffer
1215
1266
  * @param {?} maxScroll
@@ -1236,6 +1287,8 @@ class MatSelect extends _MatSelectMixinBase {
1236
1287
  const firstDisplayedIndex = this._getItemCount() - maxOptionsDisplayed;
1237
1288
  /** @type {?} */
1238
1289
  const selectedDisplayIndex = selectedIndex - firstDisplayedIndex;
1290
+ // The first item is partially out of the viewport. Therefore we need to calculate what
1291
+ // portion of it is shown in the viewport and account for it in our offset.
1239
1292
  /** @type {?} */
1240
1293
  let partialItemHeight = itemHeight - (this._getItemCount() * itemHeight - SELECT_PANEL_MAX_HEIGHT) % itemHeight;
1241
1294
  // Because the panel height is longer than the height of the options alone,
@@ -1260,6 +1313,7 @@ class MatSelect extends _MatSelectMixinBase {
1260
1313
  * If it will not fit, tries to adjust the scroll position and the associated
1261
1314
  * y-offset so the panel can open fully on-screen. If it still won't fit,
1262
1315
  * sets the offset back to 0 to allow the fallback position to take over.
1316
+ * @private
1263
1317
  * @param {?} maxScroll
1264
1318
  * @return {?}
1265
1319
  */
@@ -1290,11 +1344,13 @@ class MatSelect extends _MatSelectMixinBase {
1290
1344
  }
1291
1345
  /**
1292
1346
  * Adjusts the overlay panel up to fit in the viewport.
1347
+ * @private
1293
1348
  * @param {?} panelHeightBottom
1294
1349
  * @param {?} bottomSpaceAvailable
1295
1350
  * @return {?}
1296
1351
  */
1297
1352
  _adjustPanelUp(panelHeightBottom, bottomSpaceAvailable) {
1353
+ // Browsers ignore fractional scroll offsets, so we need to round.
1298
1354
  /** @type {?} */
1299
1355
  const distanceBelowViewport = Math.round(panelHeightBottom - bottomSpaceAvailable);
1300
1356
  // Scrolls the panel up by the distance it was extending past the boundary, then
@@ -1313,12 +1369,14 @@ class MatSelect extends _MatSelectMixinBase {
1313
1369
  }
1314
1370
  /**
1315
1371
  * Adjusts the overlay panel down to fit in the viewport.
1372
+ * @private
1316
1373
  * @param {?} panelHeightTop
1317
1374
  * @param {?} topSpaceAvailable
1318
1375
  * @param {?} maxScroll
1319
1376
  * @return {?}
1320
1377
  */
1321
1378
  _adjustPanelDown(panelHeightTop, topSpaceAvailable, maxScroll) {
1379
+ // Browsers ignore fractional scroll offsets, so we need to round.
1322
1380
  /** @type {?} */
1323
1381
  const distanceAboveViewport = Math.round(panelHeightTop - topSpaceAvailable);
1324
1382
  // Scrolls the panel down by the distance it was extending past the boundary, then
@@ -1338,6 +1396,7 @@ class MatSelect extends _MatSelectMixinBase {
1338
1396
  }
1339
1397
  /**
1340
1398
  * Sets the transform origin point based on the selected option.
1399
+ * @private
1341
1400
  * @return {?}
1342
1401
  */
1343
1402
  _getOriginBasedOnOption() {
@@ -1351,6 +1410,7 @@ class MatSelect extends _MatSelectMixinBase {
1351
1410
  }
1352
1411
  /**
1353
1412
  * Calculates the amount of items in the select. This includes options and group labels.
1413
+ * @private
1354
1414
  * @return {?}
1355
1415
  */
1356
1416
  _getItemCount() {
@@ -1358,6 +1418,7 @@ class MatSelect extends _MatSelectMixinBase {
1358
1418
  }
1359
1419
  /**
1360
1420
  * Calculates the height of the select's options.
1421
+ * @private
1361
1422
  * @return {?}
1362
1423
  */
1363
1424
  _getItemHeight() {
@@ -1394,7 +1455,7 @@ MatSelect.decorators = [
1394
1455
  { type: Component, args: [{selector: 'mat-select',
1395
1456
  exportAs: 'matSelect',
1396
1457
  template: "<div cdk-overlay-origin class=\"mat-select-trigger\" aria-hidden=\"true\" (click)=\"toggle()\" #origin=\"cdkOverlayOrigin\" #trigger><div class=\"mat-select-value\" [ngSwitch]=\"empty\"><span class=\"mat-select-placeholder\" *ngSwitchCase=\"true\">{{placeholder || '\u00A0'}}</span> <span class=\"mat-select-value-text\" *ngSwitchCase=\"false\" [ngSwitch]=\"!!customTrigger\"><span *ngSwitchDefault>{{triggerValue || '\u00A0'}}</span><ng-content select=\"mat-select-trigger\" *ngSwitchCase=\"true\"></ng-content></span></div><div class=\"mat-select-arrow-wrapper\"><div class=\"mat-select-arrow\"></div></div></div><ng-template cdk-connected-overlay cdkConnectedOverlayLockPosition cdkConnectedOverlayHasBackdrop cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\" [cdkConnectedOverlayScrollStrategy]=\"_scrollStrategy\" [cdkConnectedOverlayOrigin]=\"origin\" [cdkConnectedOverlayOpen]=\"panelOpen\" [cdkConnectedOverlayPositions]=\"_positions\" [cdkConnectedOverlayMinWidth]=\"_triggerRect?.width\" [cdkConnectedOverlayOffsetY]=\"_offsetY\" (backdropClick)=\"close()\" (attach)=\"_onAttached()\" (detach)=\"close()\"><div #panel class=\"mat-select-panel {{ _getPanelTheme() }}\" [ngClass]=\"panelClass\" [@transformPanel]=\"multiple ? 'showing-multiple' : 'showing'\" (@transformPanel.done)=\"_panelDoneAnimatingStream.next($event.toState)\" [style.transformOrigin]=\"_transformOrigin\" [style.font-size.px]=\"_triggerFontSize\" (keydown)=\"_handleKeydown($event)\"><ng-content></ng-content></div></ng-template>",
1397
- styles: [".mat-select{display:inline-block;width:100%;outline:0}.mat-select-trigger{display:inline-table;cursor:pointer;position:relative;box-sizing:border-box}.mat-select-disabled .mat-select-trigger{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.mat-select-value{display:table-cell;max-width:0;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mat-select-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mat-select-arrow-wrapper{display:table-cell;vertical-align:middle}.mat-form-field-appearance-fill .mat-select-arrow-wrapper{transform:translateY(-50%)}.mat-form-field-appearance-outline .mat-select-arrow-wrapper{transform:translateY(-25%)}.mat-form-field-appearance-standard .mat-select:not(.mat-select-empty) .mat-select-arrow-wrapper{transform:translateY(-50%)}.mat-form-field-appearance-standard .mat-select.mat-select-empty .mat-select-arrow-wrapper{transition:transform .4s cubic-bezier(.25,.8,.25,1)}._mat-animation-noopable.mat-form-field-appearance-standard .mat-select.mat-select-empty .mat-select-arrow-wrapper{transition:none}.mat-select-arrow{width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid;margin:0 4px}.mat-select-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;padding-top:0;padding-bottom:0;max-height:256px;min-width:100%;border-radius:4px}@media screen and (-ms-high-contrast:active){.mat-select-panel{outline:solid 1px}}.mat-select-panel .mat-optgroup-label,.mat-select-panel .mat-option{font-size:inherit;line-height:3em;height:3em}.mat-form-field-type-mat-select:not(.mat-form-field-disabled) .mat-form-field-flex{cursor:pointer}.mat-form-field-type-mat-select .mat-form-field-label{width:calc(100% - 18px)}.mat-select-placeholder{transition:color .4s .133s cubic-bezier(.25,.8,.25,1)}._mat-animation-noopable .mat-select-placeholder{transition:none}.mat-form-field-hide-placeholder .mat-select-placeholder{color:transparent;-webkit-text-fill-color:transparent;transition:none;display:block}"],
1458
+ styles: [".mat-select{display:inline-block;width:100%;outline:0}.mat-select-trigger{display:inline-table;cursor:pointer;position:relative;box-sizing:border-box}.mat-select-disabled .mat-select-trigger{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.mat-select-value{display:table-cell;max-width:0;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mat-select-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mat-select-arrow-wrapper{display:table-cell;vertical-align:middle}.mat-form-field-appearance-fill .mat-select-arrow-wrapper{transform:translateY(-50%)}.mat-form-field-appearance-outline .mat-select-arrow-wrapper{transform:translateY(-25%)}.mat-form-field-appearance-standard.mat-form-field-has-label .mat-select:not(.mat-select-empty) .mat-select-arrow-wrapper{transform:translateY(-50%)}.mat-form-field-appearance-standard .mat-select.mat-select-empty .mat-select-arrow-wrapper{transition:transform .4s cubic-bezier(.25,.8,.25,1)}._mat-animation-noopable.mat-form-field-appearance-standard .mat-select.mat-select-empty .mat-select-arrow-wrapper{transition:none}.mat-select-arrow{width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid;margin:0 4px}.mat-select-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;padding-top:0;padding-bottom:0;max-height:256px;min-width:100%;border-radius:4px}@media (-ms-high-contrast:active){.mat-select-panel{outline:solid 1px}}.mat-select-panel .mat-optgroup-label,.mat-select-panel .mat-option{font-size:inherit;line-height:3em;height:3em}.mat-form-field-type-mat-select:not(.mat-form-field-disabled) .mat-form-field-flex{cursor:pointer}.mat-form-field-type-mat-select .mat-form-field-label{width:calc(100% - 18px)}.mat-select-placeholder{transition:color .4s .133s cubic-bezier(.25,.8,.25,1)}._mat-animation-noopable .mat-select-placeholder{transition:none}.mat-form-field-hide-placeholder .mat-select-placeholder{color:transparent;-webkit-text-fill-color:transparent;transition:none;display:block}"],
1398
1459
  inputs: ['disabled', 'disableRipple', 'tabIndex'],
1399
1460
  encapsulation: ViewEncapsulation.None,
1400
1461
  changeDetection: ChangeDetectionStrategy.OnPush,
@@ -1442,7 +1503,8 @@ MatSelect.ctorParameters = () => [
1442
1503
  { type: MatFormField, decorators: [{ type: Optional }] },
1443
1504
  { type: NgControl, decorators: [{ type: Self }, { type: Optional }] },
1444
1505
  { type: String, decorators: [{ type: Attribute, args: ['tabindex',] }] },
1445
- { type: undefined, decorators: [{ type: Inject, args: [MAT_SELECT_SCROLL_STRATEGY,] }] }
1506
+ { type: undefined, decorators: [{ type: Inject, args: [MAT_SELECT_SCROLL_STRATEGY,] }] },
1507
+ { type: LiveAnnouncer }
1446
1508
  ];
1447
1509
  MatSelect.propDecorators = {
1448
1510
  trigger: [{ type: ViewChild, args: ['trigger',] }],
@@ -1472,7 +1534,7 @@ MatSelect.propDecorators = {
1472
1534
 
1473
1535
  /**
1474
1536
  * @fileoverview added by tsickle
1475
- * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
1537
+ * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1476
1538
  */
1477
1539
  class MatSelectModule {
1478
1540
  }
@@ -1492,12 +1554,12 @@ MatSelectModule.decorators = [
1492
1554
 
1493
1555
  /**
1494
1556
  * @fileoverview added by tsickle
1495
- * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
1557
+ * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1496
1558
  */
1497
1559
 
1498
1560
  /**
1499
1561
  * @fileoverview added by tsickle
1500
- * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
1562
+ * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1501
1563
  */
1502
1564
 
1503
1565
  export { MatSelectModule, MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY, SELECT_PANEL_MAX_HEIGHT, SELECT_PANEL_PADDING_X, SELECT_PANEL_INDENT_PADDING_X, SELECT_ITEM_HEIGHT_EM, SELECT_MULTIPLE_PANEL_PADDING_X, SELECT_PANEL_VIEWPORT_PADDING, MAT_SELECT_SCROLL_STRATEGY, MAT_SELECT_SCROLL_STRATEGY_PROVIDER, MatSelectChange, MatSelectBase, _MatSelectMixinBase, MatSelectTrigger, MatSelect, matSelectAnimations, transformPanel, fadeInContent };