@angular/material 8.0.1 → 8.1.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 (422) hide show
  1. package/_theming.scss +33 -30
  2. package/bottom-sheet/typings/bottom-sheet-ref.d.ts +2 -0
  3. package/bottom-sheet/typings/index.metadata.json +1 -1
  4. package/bundles/material-autocomplete.umd.js +4 -0
  5. package/bundles/material-autocomplete.umd.js.map +1 -1
  6. package/bundles/material-autocomplete.umd.min.js +1 -1
  7. package/bundles/material-autocomplete.umd.min.js.map +1 -1
  8. package/bundles/material-bottom-sheet.umd.js +31 -2
  9. package/bundles/material-bottom-sheet.umd.js.map +1 -1
  10. package/bundles/material-bottom-sheet.umd.min.js +1 -1
  11. package/bundles/material-bottom-sheet.umd.min.js.map +1 -1
  12. package/bundles/material-button-toggle.umd.js +10 -5
  13. package/bundles/material-button-toggle.umd.js.map +1 -1
  14. package/bundles/material-button-toggle.umd.min.js +1 -1
  15. package/bundles/material-button-toggle.umd.min.js.map +1 -1
  16. package/bundles/material-button.umd.js +1 -1
  17. package/bundles/material-button.umd.js.map +1 -1
  18. package/bundles/material-button.umd.min.js +1 -1
  19. package/bundles/material-button.umd.min.js.map +1 -1
  20. package/bundles/material-card.umd.js +16 -7
  21. package/bundles/material-card.umd.js.map +1 -1
  22. package/bundles/material-card.umd.min.js +1 -1
  23. package/bundles/material-card.umd.min.js.map +1 -1
  24. package/bundles/material-checkbox.umd.js +2 -3
  25. package/bundles/material-checkbox.umd.js.map +1 -1
  26. package/bundles/material-checkbox.umd.min.js +1 -1
  27. package/bundles/material-checkbox.umd.min.js.map +1 -1
  28. package/bundles/material-chips.umd.js +12 -7
  29. package/bundles/material-chips.umd.js.map +1 -1
  30. package/bundles/material-chips.umd.min.js +1 -1
  31. package/bundles/material-chips.umd.min.js.map +1 -1
  32. package/bundles/material-core.umd.js +31 -6
  33. package/bundles/material-core.umd.js.map +1 -1
  34. package/bundles/material-core.umd.min.js +2 -2
  35. package/bundles/material-core.umd.min.js.map +1 -1
  36. package/bundles/material-datepicker.umd.js +88 -22
  37. package/bundles/material-datepicker.umd.js.map +1 -1
  38. package/bundles/material-datepicker.umd.min.js +2 -2
  39. package/bundles/material-datepicker.umd.min.js.map +1 -1
  40. package/bundles/material-dialog.umd.js +33 -4
  41. package/bundles/material-dialog.umd.js.map +1 -1
  42. package/bundles/material-dialog.umd.min.js +1 -1
  43. package/bundles/material-dialog.umd.min.js.map +1 -1
  44. package/bundles/material-expansion.umd.js +70 -4
  45. package/bundles/material-expansion.umd.js.map +1 -1
  46. package/bundles/material-expansion.umd.min.js +1 -1
  47. package/bundles/material-expansion.umd.min.js.map +1 -1
  48. package/bundles/material-form-field.umd.js +1 -1
  49. package/bundles/material-form-field.umd.js.map +1 -1
  50. package/bundles/material-form-field.umd.min.js +1 -1
  51. package/bundles/material-form-field.umd.min.js.map +1 -1
  52. package/bundles/material-grid-list.umd.js +1 -1
  53. package/bundles/material-grid-list.umd.min.js +1 -1
  54. package/bundles/material-list.umd.js +39 -21
  55. package/bundles/material-list.umd.js.map +1 -1
  56. package/bundles/material-list.umd.min.js +1 -1
  57. package/bundles/material-list.umd.min.js.map +1 -1
  58. package/bundles/material-menu.umd.js +99 -62
  59. package/bundles/material-menu.umd.js.map +1 -1
  60. package/bundles/material-menu.umd.min.js +1 -1
  61. package/bundles/material-menu.umd.min.js.map +1 -1
  62. package/bundles/material-progress-spinner.umd.js +1 -1
  63. package/bundles/material-progress-spinner.umd.js.map +1 -1
  64. package/bundles/material-progress-spinner.umd.min.js +1 -1
  65. package/bundles/material-progress-spinner.umd.min.js.map +1 -1
  66. package/bundles/material-radio.umd.js +22 -3
  67. package/bundles/material-radio.umd.js.map +1 -1
  68. package/bundles/material-radio.umd.min.js +1 -1
  69. package/bundles/material-radio.umd.min.js.map +1 -1
  70. package/bundles/material-slide-toggle.umd.js +63 -2
  71. package/bundles/material-slide-toggle.umd.js.map +1 -1
  72. package/bundles/material-slide-toggle.umd.min.js +1 -1
  73. package/bundles/material-slide-toggle.umd.min.js.map +1 -1
  74. package/bundles/material-table.umd.js +4 -4
  75. package/bundles/material-table.umd.js.map +1 -1
  76. package/bundles/material-table.umd.min.js +1 -1
  77. package/bundles/material-table.umd.min.js.map +1 -1
  78. package/bundles/material-tabs.umd.js +355 -316
  79. package/bundles/material-tabs.umd.js.map +1 -1
  80. package/bundles/material-tabs.umd.min.js +2 -2
  81. package/bundles/material-tabs.umd.min.js.map +1 -1
  82. package/bundles/material-tree.umd.js +71 -39
  83. package/bundles/material-tree.umd.js.map +1 -1
  84. package/bundles/material-tree.umd.min.js +1 -1
  85. package/bundles/material-tree.umd.min.js.map +1 -1
  86. package/bundles/material.umd.js +927 -484
  87. package/bundles/material.umd.js.map +1 -1
  88. package/bundles/material.umd.min.js +19 -19
  89. package/bundles/material.umd.min.js.map +1 -1
  90. package/button-toggle/typings/button-toggle.d.ts +1 -1
  91. package/button-toggle/typings/index.metadata.json +1 -1
  92. package/card/typings/card.d.ts +2 -0
  93. package/card/typings/index.metadata.json +1 -1
  94. package/checkbox/typings/checkbox.d.ts +1 -1
  95. package/checkbox/typings/index.metadata.json +1 -1
  96. package/chips/typings/chip.d.ts +4 -2
  97. package/chips/typings/index.metadata.json +1 -1
  98. package/core/typings/common-behaviors/common-module.d.ts +2 -0
  99. package/core/typings/index.metadata.json +1 -1
  100. package/datepicker/typings/calendar.d.ts +1 -1
  101. package/datepicker/typings/index.metadata.json +1 -1
  102. package/datepicker/typings/multi-year-view.d.ts +7 -0
  103. package/datepicker/typings/public-api.d.ts +1 -1
  104. package/dialog/typings/dialog-ref.d.ts +2 -0
  105. package/dialog/typings/index.metadata.json +1 -1
  106. package/esm2015/autocomplete.js +4 -0
  107. package/esm2015/autocomplete.js.map +1 -1
  108. package/esm2015/bottom-sheet.js +31 -2
  109. package/esm2015/bottom-sheet.js.map +1 -1
  110. package/esm2015/button-toggle.js +10 -5
  111. package/esm2015/button-toggle.js.map +1 -1
  112. package/esm2015/button.js +1 -1
  113. package/esm2015/button.js.map +1 -1
  114. package/esm2015/card.js +18 -3
  115. package/esm2015/card.js.map +1 -1
  116. package/esm2015/checkbox.js +2 -3
  117. package/esm2015/checkbox.js.map +1 -1
  118. package/esm2015/chips.js +10 -3
  119. package/esm2015/chips.js.map +1 -1
  120. package/esm2015/core.js +22 -2
  121. package/esm2015/core.js.map +1 -1
  122. package/esm2015/datepicker.js +87 -21
  123. package/esm2015/datepicker.js.map +1 -1
  124. package/esm2015/dialog.js +33 -4
  125. package/esm2015/dialog.js.map +1 -1
  126. package/esm2015/expansion.js +57 -4
  127. package/esm2015/expansion.js.map +1 -1
  128. package/esm2015/form-field.js +1 -1
  129. package/esm2015/form-field.js.map +1 -1
  130. package/esm2015/grid-list.js +1 -1
  131. package/esm2015/list.js +40 -22
  132. package/esm2015/list.js.map +1 -1
  133. package/esm2015/material.js +6 -6
  134. package/esm2015/menu.js +54 -42
  135. package/esm2015/menu.js.map +1 -1
  136. package/esm2015/progress-spinner.js +1 -1
  137. package/esm2015/progress-spinner.js.map +1 -1
  138. package/esm2015/radio.js +23 -5
  139. package/esm2015/radio.js.map +1 -1
  140. package/esm2015/slide-toggle.js +57 -5
  141. package/esm2015/slide-toggle.js.map +1 -1
  142. package/esm2015/table.js +2 -2
  143. package/esm2015/table.js.map +1 -1
  144. package/esm2015/tabs.js +282 -223
  145. package/esm2015/tabs.js.map +1 -1
  146. package/esm2015/tree.js +63 -40
  147. package/esm2015/tree.js.map +1 -1
  148. package/esm5/autocomplete.es5.js +4 -0
  149. package/esm5/autocomplete.es5.js.map +1 -1
  150. package/esm5/bottom-sheet.es5.js +31 -2
  151. package/esm5/bottom-sheet.es5.js.map +1 -1
  152. package/esm5/button-toggle.es5.js +10 -5
  153. package/esm5/button-toggle.es5.js.map +1 -1
  154. package/esm5/button.es5.js +1 -1
  155. package/esm5/button.es5.js.map +1 -1
  156. package/esm5/card.es5.js +14 -4
  157. package/esm5/card.es5.js.map +1 -1
  158. package/esm5/checkbox.es5.js +2 -3
  159. package/esm5/checkbox.es5.js.map +1 -1
  160. package/esm5/chips.es5.js +9 -3
  161. package/esm5/chips.es5.js.map +1 -1
  162. package/esm5/core.es5.js +28 -2
  163. package/esm5/core.es5.js.map +1 -1
  164. package/esm5/datepicker.es5.js +86 -20
  165. package/esm5/datepicker.es5.js.map +1 -1
  166. package/esm5/dialog.es5.js +33 -4
  167. package/esm5/dialog.es5.js.map +1 -1
  168. package/esm5/expansion.es5.js +70 -4
  169. package/esm5/expansion.es5.js.map +1 -1
  170. package/esm5/form-field.es5.js +1 -1
  171. package/esm5/form-field.es5.js.map +1 -1
  172. package/esm5/grid-list.es5.js +1 -1
  173. package/esm5/list.es5.js +40 -22
  174. package/esm5/list.es5.js.map +1 -1
  175. package/esm5/material.es5.js +6 -6
  176. package/esm5/menu.es5.js +98 -61
  177. package/esm5/menu.es5.js.map +1 -1
  178. package/esm5/progress-spinner.es5.js +1 -1
  179. package/esm5/progress-spinner.es5.js.map +1 -1
  180. package/esm5/radio.es5.js +22 -5
  181. package/esm5/radio.es5.js.map +1 -1
  182. package/esm5/slide-toggle.es5.js +63 -5
  183. package/esm5/slide-toggle.es5.js.map +1 -1
  184. package/esm5/table.es5.js +4 -4
  185. package/esm5/table.es5.js.map +1 -1
  186. package/esm5/tabs.es5.js +343 -304
  187. package/esm5/tabs.es5.js.map +1 -1
  188. package/esm5/tree.es5.js +70 -37
  189. package/esm5/tree.es5.js.map +1 -1
  190. package/expansion/typings/accordion-base.d.ts +4 -0
  191. package/expansion/typings/accordion.d.ts +3 -1
  192. package/expansion/typings/expansion-panel-header.d.ts +6 -0
  193. package/expansion/typings/expansion-panel.d.ts +5 -2
  194. package/expansion/typings/index.metadata.json +1 -1
  195. package/form-field/typings/index.metadata.json +1 -1
  196. package/grid-list/typings/index.d.ts +1 -1
  197. package/grid-list/typings/index.metadata.json +1 -1
  198. package/list/typings/index.metadata.json +1 -1
  199. package/list/typings/selection-list.d.ts +5 -5
  200. package/menu/typings/index.d.ts +2 -2
  201. package/menu/typings/index.metadata.json +1 -1
  202. package/menu/typings/menu-item.d.ts +1 -1
  203. package/menu/typings/menu-panel.d.ts +8 -0
  204. package/menu/typings/menu.d.ts +19 -14
  205. package/package.json +5 -5
  206. package/prebuilt-themes/deeppurple-amber.css +1 -1
  207. package/prebuilt-themes/indigo-pink.css +1 -1
  208. package/prebuilt-themes/pink-bluegrey.css +1 -1
  209. package/prebuilt-themes/purple-green.css +1 -1
  210. package/progress-spinner/typings/index.metadata.json +1 -1
  211. package/progress-spinner/typings/progress-spinner.d.ts +1 -1
  212. package/radio/typings/index.metadata.json +1 -1
  213. package/radio/typings/radio.d.ts +8 -2
  214. package/schematics/ng-add/fonts/material-fonts.js +1 -1
  215. package/schematics/ng-add/fonts/material-fonts.js.map +1 -1
  216. package/schematics/ng-generate/address-form/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.spec.ts.template +5 -7
  217. package/schematics/ng-generate/address-form/index.js +5 -5
  218. package/schematics/ng-generate/address-form/index.js.map +1 -1
  219. package/schematics/ng-generate/dashboard/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.spec.ts.template +5 -7
  220. package/schematics/ng-generate/dashboard/index.js +5 -5
  221. package/schematics/ng-generate/dashboard/index.js.map +1 -1
  222. package/schematics/ng-generate/nav/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.spec.ts.template +5 -7
  223. package/schematics/ng-generate/nav/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.ts.template +3 -2
  224. package/schematics/ng-generate/nav/index.js +5 -5
  225. package/schematics/ng-generate/nav/index.js.map +1 -1
  226. package/schematics/ng-generate/table/files/__path__/__name@dasherize@if-flat__/__name@dasherize__-datasource.ts.template +2 -1
  227. package/schematics/ng-generate/table/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.spec.ts.template +3 -1
  228. package/schematics/ng-generate/table/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.ts.template +3 -1
  229. package/schematics/ng-generate/table/index.js +3 -3
  230. package/schematics/ng-generate/table/index.js.map +1 -1
  231. package/schematics/ng-generate/tree/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.spec.ts.template +3 -1
  232. package/schematics/ng-generate/tree/index.js +3 -3
  233. package/schematics/ng-generate/tree/index.js.map +1 -1
  234. package/schematics/ng-update/data/class-names.js +3 -12
  235. package/schematics/ng-update/data/class-names.js.map +1 -1
  236. package/schematics/ng-update/data/constructor-checks.js +7 -29
  237. package/schematics/ng-update/data/constructor-checks.js.map +1 -1
  238. package/schematics/ng-update/data/css-selectors.js +19 -68
  239. package/schematics/ng-update/data/css-selectors.js.map +1 -1
  240. package/schematics/ng-update/data/element-selectors.js +3 -10
  241. package/schematics/ng-update/data/element-selectors.js.map +1 -1
  242. package/schematics/ng-update/data/input-names.js +17 -55
  243. package/schematics/ng-update/data/input-names.js.map +1 -1
  244. package/schematics/ng-update/data/property-names.js +28 -100
  245. package/schematics/ng-update/data/property-names.js.map +1 -1
  246. package/schematics/ng-update/index.d.ts +0 -2
  247. package/schematics/ng-update/index.js +27 -37
  248. package/schematics/ng-update/index.js.map +1 -1
  249. package/schematics/ng-update/typescript/module-specifiers.js.map +1 -1
  250. package/schematics/ng-update/upgrade-rules/misc-checks/misc-class-inheritance-rule.d.ts +18 -0
  251. package/schematics/ng-update/upgrade-rules/misc-checks/misc-class-inheritance-rule.js +47 -0
  252. package/schematics/ng-update/upgrade-rules/misc-checks/misc-class-inheritance-rule.js.map +1 -0
  253. package/schematics/ng-update/upgrade-rules/misc-checks/misc-class-names-rule.d.ts +18 -0
  254. package/schematics/ng-update/upgrade-rules/misc-checks/misc-class-names-rule.js +42 -0
  255. package/schematics/ng-update/upgrade-rules/misc-checks/misc-class-names-rule.js.map +1 -0
  256. package/{typings/schematics/ng-update/upgrade-rules/misc-checks/checkImportsMiscRule.d.ts → schematics/ng-update/upgrade-rules/misc-checks/misc-imports-rule.d.ts} +7 -8
  257. package/schematics/ng-update/upgrade-rules/misc-checks/{checkImportsMiscRule.js → misc-imports-rule.js} +19 -16
  258. package/schematics/ng-update/upgrade-rules/misc-checks/misc-imports-rule.js.map +1 -0
  259. package/schematics/ng-update/upgrade-rules/misc-checks/misc-property-names-rule.d.ts +18 -0
  260. package/schematics/ng-update/upgrade-rules/misc-checks/misc-property-names-rule.js +46 -0
  261. package/schematics/ng-update/upgrade-rules/misc-checks/misc-property-names-rule.js.map +1 -0
  262. package/schematics/ng-update/upgrade-rules/misc-checks/misc-template-rule.d.ts +16 -0
  263. package/schematics/ng-update/upgrade-rules/misc-checks/misc-template-rule.js +59 -0
  264. package/schematics/ng-update/upgrade-rules/misc-checks/misc-template-rule.js.map +1 -0
  265. package/schematics/ng-update/upgrade-rules/misc-ripples-v7/{rippleSpeedFactorAssignmentRule.d.ts → ripple-speed-factor-rule.d.ts} +11 -9
  266. package/schematics/ng-update/upgrade-rules/misc-ripples-v7/{rippleSpeedFactorAssignmentRule.js → ripple-speed-factor-rule.js} +57 -31
  267. package/schematics/ng-update/upgrade-rules/misc-ripples-v7/ripple-speed-factor-rule.js.map +1 -0
  268. package/schematics/ng-update/upgrade-rules/package-imports-v8/secondary-entry-points-rule.d.ts +18 -0
  269. package/schematics/ng-update/upgrade-rules/package-imports-v8/{updateAngularMaterialImportsRule.js → secondary-entry-points-rule.js} +40 -52
  270. package/schematics/ng-update/upgrade-rules/package-imports-v8/secondary-entry-points-rule.js.map +1 -0
  271. package/slide-toggle/typings/index.metadata.json +1 -1
  272. package/slide-toggle/typings/public-api.d.ts +1 -0
  273. package/slide-toggle/typings/slide-toggle-module.d.ts +3 -0
  274. package/slide-toggle/typings/slide-toggle-required-validator.d.ts +20 -0
  275. package/table/typings/table-data-source.d.ts +1 -1
  276. package/tabs/typings/index.d.ts +2 -1
  277. package/tabs/typings/index.metadata.json +1 -1
  278. package/tabs/typings/ink-bar.d.ts +2 -1
  279. package/tabs/typings/paginated-tab-header.d.ts +187 -0
  280. package/tabs/typings/public-api.d.ts +2 -1
  281. package/tabs/typings/tab-group.d.ts +2 -1
  282. package/tabs/typings/tab-header.d.ts +10 -159
  283. package/tabs/typings/tab-nav-bar/tab-nav-bar.d.ts +27 -30
  284. package/tree/typings/index.metadata.json +1 -1
  285. package/tree/typings/node.d.ts +8 -6
  286. package/typings/bottom-sheet/bottom-sheet-ref.d.ts +2 -0
  287. package/typings/bottom-sheet/index.metadata.json +1 -1
  288. package/typings/button-toggle/button-toggle.d.ts +1 -1
  289. package/typings/button-toggle/index.metadata.json +1 -1
  290. package/typings/card/card.d.ts +2 -0
  291. package/typings/card/index.metadata.json +1 -1
  292. package/typings/checkbox/checkbox.d.ts +1 -1
  293. package/typings/checkbox/index.metadata.json +1 -1
  294. package/typings/chips/chip.d.ts +4 -2
  295. package/typings/chips/index.metadata.json +1 -1
  296. package/typings/core/common-behaviors/common-module.d.ts +2 -0
  297. package/typings/core/index.metadata.json +1 -1
  298. package/typings/datepicker/calendar.d.ts +1 -1
  299. package/typings/datepicker/index.metadata.json +1 -1
  300. package/typings/datepicker/multi-year-view.d.ts +7 -0
  301. package/typings/datepicker/public-api.d.ts +1 -1
  302. package/typings/dialog/dialog-ref.d.ts +2 -0
  303. package/typings/dialog/index.metadata.json +1 -1
  304. package/typings/esm5/bottom-sheet/bottom-sheet-ref.d.ts +2 -0
  305. package/typings/esm5/bottom-sheet/index.metadata.json +1 -1
  306. package/typings/esm5/button-toggle/button-toggle.d.ts +1 -1
  307. package/typings/esm5/button-toggle/index.metadata.json +1 -1
  308. package/typings/esm5/card/card.d.ts +2 -0
  309. package/typings/esm5/card/index.metadata.json +1 -1
  310. package/typings/esm5/checkbox/checkbox.d.ts +1 -1
  311. package/typings/esm5/checkbox/index.metadata.json +1 -1
  312. package/typings/esm5/chips/chip.d.ts +4 -2
  313. package/typings/esm5/chips/index.metadata.json +1 -1
  314. package/typings/esm5/core/common-behaviors/common-module.d.ts +2 -0
  315. package/typings/esm5/core/index.metadata.json +1 -1
  316. package/typings/esm5/datepicker/calendar.d.ts +1 -1
  317. package/typings/esm5/datepicker/index.metadata.json +1 -1
  318. package/typings/esm5/datepicker/multi-year-view.d.ts +7 -0
  319. package/typings/esm5/datepicker/public-api.d.ts +1 -1
  320. package/typings/esm5/dialog/dialog-ref.d.ts +2 -0
  321. package/typings/esm5/dialog/index.metadata.json +1 -1
  322. package/typings/esm5/expansion/accordion-base.d.ts +4 -0
  323. package/typings/esm5/expansion/accordion.d.ts +3 -1
  324. package/typings/esm5/expansion/expansion-panel-header.d.ts +6 -0
  325. package/typings/esm5/expansion/expansion-panel.d.ts +5 -2
  326. package/typings/esm5/expansion/index.metadata.json +1 -1
  327. package/typings/esm5/form-field/index.metadata.json +1 -1
  328. package/typings/esm5/grid-list/index.d.ts +1 -1
  329. package/typings/esm5/grid-list/index.metadata.json +1 -1
  330. package/typings/esm5/list/index.metadata.json +1 -1
  331. package/typings/esm5/list/selection-list.d.ts +5 -5
  332. package/typings/esm5/menu/index.d.ts +2 -2
  333. package/typings/esm5/menu/index.metadata.json +1 -1
  334. package/typings/esm5/menu/menu-item.d.ts +1 -1
  335. package/typings/esm5/menu/menu-panel.d.ts +8 -0
  336. package/typings/esm5/menu/menu.d.ts +19 -14
  337. package/typings/esm5/progress-spinner/index.metadata.json +1 -1
  338. package/typings/esm5/progress-spinner/progress-spinner.d.ts +1 -1
  339. package/typings/esm5/radio/index.metadata.json +1 -1
  340. package/typings/esm5/radio/radio.d.ts +8 -2
  341. package/typings/esm5/slide-toggle/index.metadata.json +1 -1
  342. package/typings/esm5/slide-toggle/public-api.d.ts +1 -0
  343. package/typings/esm5/slide-toggle/slide-toggle-module.d.ts +3 -0
  344. package/typings/esm5/slide-toggle/slide-toggle-required-validator.d.ts +20 -0
  345. package/typings/esm5/table/table-data-source.d.ts +1 -1
  346. package/typings/esm5/tabs/index.d.ts +2 -1
  347. package/typings/esm5/tabs/index.metadata.json +1 -1
  348. package/typings/esm5/tabs/ink-bar.d.ts +2 -1
  349. package/typings/esm5/tabs/paginated-tab-header.d.ts +187 -0
  350. package/typings/esm5/tabs/public-api.d.ts +2 -1
  351. package/typings/esm5/tabs/tab-group.d.ts +2 -1
  352. package/typings/esm5/tabs/tab-header.d.ts +10 -159
  353. package/typings/esm5/tabs/tab-nav-bar/tab-nav-bar.d.ts +27 -30
  354. package/typings/esm5/tree/index.metadata.json +1 -1
  355. package/typings/esm5/tree/node.d.ts +8 -6
  356. package/typings/expansion/accordion-base.d.ts +4 -0
  357. package/typings/expansion/accordion.d.ts +3 -1
  358. package/typings/expansion/expansion-panel-header.d.ts +6 -0
  359. package/typings/expansion/expansion-panel.d.ts +5 -2
  360. package/typings/expansion/index.metadata.json +1 -1
  361. package/typings/form-field/index.metadata.json +1 -1
  362. package/typings/grid-list/index.d.ts +1 -1
  363. package/typings/grid-list/index.metadata.json +1 -1
  364. package/typings/list/index.metadata.json +1 -1
  365. package/typings/list/selection-list.d.ts +5 -5
  366. package/typings/menu/index.d.ts +2 -2
  367. package/typings/menu/index.metadata.json +1 -1
  368. package/typings/menu/menu-item.d.ts +1 -1
  369. package/typings/menu/menu-panel.d.ts +8 -0
  370. package/typings/menu/menu.d.ts +19 -14
  371. package/typings/progress-spinner/index.metadata.json +1 -1
  372. package/typings/progress-spinner/progress-spinner.d.ts +1 -1
  373. package/typings/radio/index.metadata.json +1 -1
  374. package/typings/radio/radio.d.ts +8 -2
  375. package/typings/schematics/ng-update/index.d.ts +0 -2
  376. package/typings/schematics/ng-update/upgrade-rules/misc-checks/misc-class-inheritance-rule.d.ts +18 -0
  377. package/typings/schematics/ng-update/upgrade-rules/misc-checks/misc-class-names-rule.d.ts +18 -0
  378. package/{schematics/ng-update/upgrade-rules/misc-checks/checkImportsMiscRule.d.ts → typings/schematics/ng-update/upgrade-rules/misc-checks/misc-imports-rule.d.ts} +7 -8
  379. package/typings/schematics/ng-update/upgrade-rules/misc-checks/misc-property-names-rule.d.ts +18 -0
  380. package/typings/schematics/ng-update/upgrade-rules/misc-checks/misc-template-rule.d.ts +16 -0
  381. package/typings/schematics/ng-update/upgrade-rules/misc-ripples-v7/{rippleSpeedFactorAssignmentRule.d.ts → ripple-speed-factor-rule.d.ts} +11 -9
  382. package/typings/schematics/ng-update/upgrade-rules/package-imports-v8/secondary-entry-points-rule.d.ts +18 -0
  383. package/typings/slide-toggle/index.metadata.json +1 -1
  384. package/typings/slide-toggle/public-api.d.ts +1 -0
  385. package/typings/slide-toggle/slide-toggle-module.d.ts +3 -0
  386. package/typings/slide-toggle/slide-toggle-required-validator.d.ts +20 -0
  387. package/typings/table/table-data-source.d.ts +1 -1
  388. package/typings/tabs/index.d.ts +2 -1
  389. package/typings/tabs/index.metadata.json +1 -1
  390. package/typings/tabs/ink-bar.d.ts +2 -1
  391. package/typings/tabs/paginated-tab-header.d.ts +187 -0
  392. package/typings/tabs/public-api.d.ts +2 -1
  393. package/typings/tabs/tab-group.d.ts +2 -1
  394. package/typings/tabs/tab-header.d.ts +10 -159
  395. package/typings/tabs/tab-nav-bar/tab-nav-bar.d.ts +27 -30
  396. package/typings/tree/index.metadata.json +1 -1
  397. package/typings/tree/node.d.ts +8 -6
  398. package/schematics/ng-update/upgrade-rules/misc-checks/checkClassInheritanceMiscRule.d.ts +0 -19
  399. package/schematics/ng-update/upgrade-rules/misc-checks/checkClassInheritanceMiscRule.js +0 -43
  400. package/schematics/ng-update/upgrade-rules/misc-checks/checkClassInheritanceMiscRule.js.map +0 -1
  401. package/schematics/ng-update/upgrade-rules/misc-checks/checkClassNamesMiscRule.d.ts +0 -19
  402. package/schematics/ng-update/upgrade-rules/misc-checks/checkClassNamesMiscRule.js +0 -35
  403. package/schematics/ng-update/upgrade-rules/misc-checks/checkClassNamesMiscRule.js.map +0 -1
  404. package/schematics/ng-update/upgrade-rules/misc-checks/checkImportsMiscRule.js.map +0 -1
  405. package/schematics/ng-update/upgrade-rules/misc-checks/checkPropertyNamesMiscRule.d.ts +0 -19
  406. package/schematics/ng-update/upgrade-rules/misc-checks/checkPropertyNamesMiscRule.js +0 -40
  407. package/schematics/ng-update/upgrade-rules/misc-checks/checkPropertyNamesMiscRule.js.map +0 -1
  408. package/schematics/ng-update/upgrade-rules/misc-checks/checkTemplateMiscRule.d.ts +0 -22
  409. package/schematics/ng-update/upgrade-rules/misc-checks/checkTemplateMiscRule.js +0 -66
  410. package/schematics/ng-update/upgrade-rules/misc-checks/checkTemplateMiscRule.js.map +0 -1
  411. package/schematics/ng-update/upgrade-rules/misc-ripples-v7/rippleSpeedFactorAssignmentRule.js.map +0 -1
  412. package/schematics/ng-update/upgrade-rules/misc-ripples-v7/rippleSpeedFactorTemplateRule.d.ts +0 -22
  413. package/schematics/ng-update/upgrade-rules/misc-ripples-v7/rippleSpeedFactorTemplateRule.js +0 -66
  414. package/schematics/ng-update/upgrade-rules/misc-ripples-v7/rippleSpeedFactorTemplateRule.js.map +0 -1
  415. package/schematics/ng-update/upgrade-rules/package-imports-v8/updateAngularMaterialImportsRule.d.ts +0 -22
  416. package/schematics/ng-update/upgrade-rules/package-imports-v8/updateAngularMaterialImportsRule.js.map +0 -1
  417. package/typings/schematics/ng-update/upgrade-rules/misc-checks/checkClassInheritanceMiscRule.d.ts +0 -19
  418. package/typings/schematics/ng-update/upgrade-rules/misc-checks/checkClassNamesMiscRule.d.ts +0 -19
  419. package/typings/schematics/ng-update/upgrade-rules/misc-checks/checkPropertyNamesMiscRule.d.ts +0 -19
  420. package/typings/schematics/ng-update/upgrade-rules/misc-checks/checkTemplateMiscRule.d.ts +0 -22
  421. package/typings/schematics/ng-update/upgrade-rules/misc-ripples-v7/rippleSpeedFactorTemplateRule.d.ts +0 -22
  422. package/typings/schematics/ng-update/upgrade-rules/package-imports-v8/updateAngularMaterialImportsRule.d.ts +0 -22
@@ -6,10 +6,10 @@
6
6
  * found in the LICENSE file at https://angular.io/license
7
7
  */
8
8
  (function (global, factory) {
9
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/platform-browser'), require('@angular/cdk/bidi'), require('@angular/cdk/coercion'), require('rxjs'), require('@angular/cdk/platform'), require('rxjs/operators'), require('@angular/cdk/a11y'), require('@angular/platform-browser/animations'), require('@angular/cdk/keycodes'), require('@angular/common'), require('@angular/animations'), require('@angular/cdk/observers'), require('@angular/cdk/overlay'), require('@angular/cdk/portal'), require('@angular/cdk/scrolling'), require('@angular/forms'), require('@angular/cdk/layout'), require('@angular/cdk/collections'), require('@angular/cdk/text-field'), require('@angular/cdk/accordion'), require('@angular/common/http'), require('@angular/cdk/stepper'), require('@angular/cdk/table'), require('@angular/cdk/tree')) :
10
- typeof define === 'function' && define.amd ? define('@angular/material', ['exports', '@angular/core', '@angular/platform-browser', '@angular/cdk/bidi', '@angular/cdk/coercion', 'rxjs', '@angular/cdk/platform', 'rxjs/operators', '@angular/cdk/a11y', '@angular/platform-browser/animations', '@angular/cdk/keycodes', '@angular/common', '@angular/animations', '@angular/cdk/observers', '@angular/cdk/overlay', '@angular/cdk/portal', '@angular/cdk/scrolling', '@angular/forms', '@angular/cdk/layout', '@angular/cdk/collections', '@angular/cdk/text-field', '@angular/cdk/accordion', '@angular/common/http', '@angular/cdk/stepper', '@angular/cdk/table', '@angular/cdk/tree'], factory) :
11
- (factory((global.ng = global.ng || {}, global.ng.material = {}),global.ng.core,global.ng.platformBrowser,global.ng.cdk.bidi,global.ng.cdk.coercion,global.rxjs,global.ng.cdk.platform,global.rxjs.operators,global.ng.cdk.a11y,global.ng.platformBrowser.animations,global.ng.cdk.keycodes,global.ng.common,global.ng.animations,global.ng.cdk.observers,global.ng.cdk.overlay,global.ng.cdk.portal,global.ng.cdk.scrolling,global.ng.forms,global.ng.cdk.layout,global.ng.cdk.collections,global.ng.cdk.textField,global.ng.cdk.accordion,global.ng.common.http,global.ng.cdk.stepper,global.ng.cdk.table,global.ng.cdk.tree));
12
- }(this, (function (exports,core,platformBrowser,bidi,coercion,rxjs,platform,operators,a11y,animations,keycodes,common,animations$1,observers,overlay,portal,scrolling,forms,layout,collections,textField,accordion,http,stepper,table,tree) { 'use strict';
9
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/platform-browser'), require('@angular/cdk/bidi'), require('@angular/cdk'), require('@angular/cdk/coercion'), require('rxjs'), require('@angular/cdk/platform'), require('rxjs/operators'), require('@angular/cdk/a11y'), require('@angular/platform-browser/animations'), require('@angular/cdk/keycodes'), require('@angular/common'), require('@angular/animations'), require('@angular/cdk/observers'), require('@angular/cdk/overlay'), require('@angular/cdk/portal'), require('@angular/cdk/scrolling'), require('@angular/forms'), require('@angular/cdk/layout'), require('@angular/cdk/collections'), require('@angular/cdk/text-field'), require('@angular/cdk/accordion'), require('@angular/common/http'), require('@angular/cdk/stepper'), require('@angular/cdk/table'), require('@angular/cdk/tree')) :
10
+ typeof define === 'function' && define.amd ? define('@angular/material', ['exports', '@angular/core', '@angular/platform-browser', '@angular/cdk/bidi', '@angular/cdk', '@angular/cdk/coercion', 'rxjs', '@angular/cdk/platform', 'rxjs/operators', '@angular/cdk/a11y', '@angular/platform-browser/animations', '@angular/cdk/keycodes', '@angular/common', '@angular/animations', '@angular/cdk/observers', '@angular/cdk/overlay', '@angular/cdk/portal', '@angular/cdk/scrolling', '@angular/forms', '@angular/cdk/layout', '@angular/cdk/collections', '@angular/cdk/text-field', '@angular/cdk/accordion', '@angular/common/http', '@angular/cdk/stepper', '@angular/cdk/table', '@angular/cdk/tree'], factory) :
11
+ (factory((global.ng = global.ng || {}, global.ng.material = {}),global.ng.core,global.ng.platformBrowser,global.ng.cdk.bidi,global.ng.cdk,global.ng.cdk.coercion,global.rxjs,global.ng.cdk.platform,global.rxjs.operators,global.ng.cdk.a11y,global.ng.platformBrowser.animations,global.ng.cdk.keycodes,global.ng.common,global.ng.animations,global.ng.cdk.observers,global.ng.cdk.overlay,global.ng.cdk.portal,global.ng.cdk.scrolling,global.ng.forms,global.ng.cdk.layout,global.ng.cdk.collections,global.ng.cdk.textField,global.ng.cdk.accordion,global.ng.common.http,global.ng.cdk.stepper,global.ng.cdk.table,global.ng.cdk.tree));
12
+ }(this, (function (exports,core,platformBrowser,bidi,cdk,coercion,rxjs,platform,operators,a11y,animations,keycodes,common,animations$1,observers,overlay,portal,scrolling,forms,layout,collections,textField,accordion,http,stepper,table,tree) { 'use strict';
13
13
 
14
14
  /*! *****************************************************************************
15
15
  Copyright (c) Microsoft Corporation. All rights reserved.
@@ -59,7 +59,7 @@ var __assign = function() {
59
59
  * Current version of Angular Material.
60
60
  * @type {?}
61
61
  */
62
- var VERSION = new core.Version('8.0.1');
62
+ var VERSION$1 = new core.Version('8.1.2');
63
63
 
64
64
  /**
65
65
  * @fileoverview added by tsickle
@@ -94,6 +94,12 @@ var AnimationDurations = /** @class */ (function () {
94
94
  * @fileoverview added by tsickle
95
95
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
96
96
  */
97
+ // Private version constant to circumvent test/build issues,
98
+ // i.e. avoid core to depend on the @angular/material primary entry-point
99
+ // Can be removed once the Material primary entry-point no longer
100
+ // re-exports all secondary entry-points
101
+ /** @type {?} */
102
+ var VERSION$2 = new core.Version('8.1.2');
97
103
  /**
98
104
  * Injection token that configures whether the Material sanity checks are enabled.
99
105
  * @type {?}
@@ -138,6 +144,7 @@ var MatCommonModule = /** @class */ (function () {
138
144
  if (this._areChecksEnabled() && !this._hasDoneGlobalChecks) {
139
145
  this._checkDoctypeIsDefined();
140
146
  this._checkThemeIsPresent();
147
+ this._checkCdkVersionMatch();
141
148
  this._hasDoneGlobalChecks = true;
142
149
  }
143
150
  }
@@ -215,6 +222,24 @@ var MatCommonModule = /** @class */ (function () {
215
222
  }
216
223
  this._document.body.removeChild(testElement);
217
224
  };
225
+ /** Checks whether the material version matches the cdk version */
226
+ /**
227
+ * Checks whether the material version matches the cdk version
228
+ * @private
229
+ * @return {?}
230
+ */
231
+ MatCommonModule.prototype._checkCdkVersionMatch = /**
232
+ * Checks whether the material version matches the cdk version
233
+ * @private
234
+ * @return {?}
235
+ */
236
+ function () {
237
+ if (VERSION$2.full !== cdk.VERSION.full) {
238
+ console.warn('The Angular Material version (' + VERSION$2.full + ') does not match ' +
239
+ 'the Angular CDK version (' + cdk.VERSION.full + ').\n' +
240
+ 'Please ensure the versions of these two packages exactly match.');
241
+ }
242
+ };
218
243
  /** Checks whether HammerJS is available. */
219
244
  /**
220
245
  * Checks whether HammerJS is available.
@@ -3982,7 +4007,7 @@ var MatFormField = /** @class */ (function (_super) {
3982
4007
  MatFormField.decorators = [
3983
4008
  { type: core.Component, args: [{selector: 'mat-form-field',
3984
4009
  exportAs: 'matFormField',
3985
- template: "<div class=\"mat-form-field-wrapper\"><div class=\"mat-form-field-flex\" #connectionContainer (click)=\"_control.onContainerClick && _control.onContainerClick($event)\"><ng-container *ngIf=\"appearance == 'outline'\"><div class=\"mat-form-field-outline\"><div class=\"mat-form-field-outline-start\"></div><div class=\"mat-form-field-outline-gap\"></div><div class=\"mat-form-field-outline-end\"></div></div><div class=\"mat-form-field-outline mat-form-field-outline-thick\"><div class=\"mat-form-field-outline-start\"></div><div class=\"mat-form-field-outline-gap\"></div><div class=\"mat-form-field-outline-end\"></div></div></ng-container><div class=\"mat-form-field-prefix\" *ngIf=\"_prefixChildren.length\"><ng-content select=\"[matPrefix]\"></ng-content></div><div class=\"mat-form-field-infix\" #inputContainer><ng-content></ng-content><span class=\"mat-form-field-label-wrapper\"><label class=\"mat-form-field-label\" (cdkObserveContent)=\"updateOutlineGap()\" [cdkObserveContentDisabled]=\"appearance != 'outline'\" [id]=\"_labelId\" [attr.for]=\"_control.id\" [attr.aria-owns]=\"_control.id\" [class.mat-empty]=\"_control.empty && !_shouldAlwaysFloat\" [class.mat-form-field-empty]=\"_control.empty && !_shouldAlwaysFloat\" [class.mat-accent]=\"color == 'accent'\" [class.mat-warn]=\"color == 'warn'\" #label *ngIf=\"_hasFloatingLabel()\" [ngSwitch]=\"_hasLabel()\"><ng-container *ngSwitchCase=\"false\"><ng-content select=\"mat-placeholder\"></ng-content>{{_control.placeholder}}</ng-container><ng-content select=\"mat-label\" *ngSwitchCase=\"true\"></ng-content><span class=\"mat-placeholder-required mat-form-field-required-marker\" aria-hidden=\"true\" *ngIf=\"!hideRequiredMarker && _control.required && !_control.disabled\">&#32;*</span></label></span></div><div class=\"mat-form-field-suffix\" *ngIf=\"_suffixChildren.length\"><ng-content select=\"[matSuffix]\"></ng-content></div></div><div class=\"mat-form-field-underline\" #underline *ngIf=\"appearance != 'outline'\"><span class=\"mat-form-field-ripple\" [class.mat-accent]=\"color == 'accent'\" [class.mat-warn]=\"color == 'warn'\"></span></div><div class=\"mat-form-field-subscript-wrapper\" [ngSwitch]=\"_getDisplayedMessages()\"><div *ngSwitchCase=\"'error'\" [@transitionMessages]=\"_subscriptAnimationState\"><ng-content select=\"mat-error\"></ng-content></div><div class=\"mat-form-field-hint-wrapper\" *ngSwitchCase=\"'hint'\" [@transitionMessages]=\"_subscriptAnimationState\"><div *ngIf=\"hintLabel\" [id]=\"_hintLabelId\" class=\"mat-hint\">{{hintLabel}}</div><ng-content select=\"mat-hint:not([align='end'])\"></ng-content><div class=\"mat-form-field-hint-spacer\"></div><ng-content select=\"mat-hint[align='end']\"></ng-content></div></div></div>",
4010
+ template: "<div class=\"mat-form-field-wrapper\"><div class=\"mat-form-field-flex\" #connectionContainer (click)=\"_control.onContainerClick && _control.onContainerClick($event)\"><ng-container *ngIf=\"appearance == 'outline'\"><div class=\"mat-form-field-outline\"><div class=\"mat-form-field-outline-start\"></div><div class=\"mat-form-field-outline-gap\"></div><div class=\"mat-form-field-outline-end\"></div></div><div class=\"mat-form-field-outline mat-form-field-outline-thick\"><div class=\"mat-form-field-outline-start\"></div><div class=\"mat-form-field-outline-gap\"></div><div class=\"mat-form-field-outline-end\"></div></div></ng-container><div class=\"mat-form-field-prefix\" *ngIf=\"_prefixChildren.length\"><ng-content select=\"[matPrefix]\"></ng-content></div><div class=\"mat-form-field-infix\" #inputContainer><ng-content></ng-content><span class=\"mat-form-field-label-wrapper\"><label class=\"mat-form-field-label\" (cdkObserveContent)=\"updateOutlineGap()\" [cdkObserveContentDisabled]=\"appearance != 'outline'\" [id]=\"_labelId\" [attr.for]=\"_control.id\" [attr.aria-owns]=\"_control.id\" [class.mat-empty]=\"_control.empty && !_shouldAlwaysFloat\" [class.mat-form-field-empty]=\"_control.empty && !_shouldAlwaysFloat\" [class.mat-accent]=\"color == 'accent'\" [class.mat-warn]=\"color == 'warn'\" #label *ngIf=\"_hasFloatingLabel()\" [ngSwitch]=\"_hasLabel()\"><ng-container *ngSwitchCase=\"false\"><ng-content select=\"mat-placeholder\"></ng-content><span>{{_control.placeholder}}</span></ng-container><ng-content select=\"mat-label\" *ngSwitchCase=\"true\"></ng-content><span class=\"mat-placeholder-required mat-form-field-required-marker\" aria-hidden=\"true\" *ngIf=\"!hideRequiredMarker && _control.required && !_control.disabled\">&#32;*</span></label></span></div><div class=\"mat-form-field-suffix\" *ngIf=\"_suffixChildren.length\"><ng-content select=\"[matSuffix]\"></ng-content></div></div><div class=\"mat-form-field-underline\" #underline *ngIf=\"appearance != 'outline'\"><span class=\"mat-form-field-ripple\" [class.mat-accent]=\"color == 'accent'\" [class.mat-warn]=\"color == 'warn'\"></span></div><div class=\"mat-form-field-subscript-wrapper\" [ngSwitch]=\"_getDisplayedMessages()\"><div *ngSwitchCase=\"'error'\" [@transitionMessages]=\"_subscriptAnimationState\"><ng-content select=\"mat-error\"></ng-content></div><div class=\"mat-form-field-hint-wrapper\" *ngSwitchCase=\"'hint'\" [@transitionMessages]=\"_subscriptAnimationState\"><div *ngIf=\"hintLabel\" [id]=\"_hintLabelId\" class=\"mat-hint\">{{hintLabel}}</div><ng-content select=\"mat-hint:not([align='end'])\"></ng-content><div class=\"mat-form-field-hint-spacer\"></div><ng-content select=\"mat-hint[align='end']\"></ng-content></div></div></div>",
3986
4011
  // MatInput is a directive and can't have styles, so we need to include its styles here
3987
4012
  // in form-field-input.css. The MatInput styles are fairly minimal so it shouldn't be a
3988
4013
  // big deal for people who aren't using MatInput.
@@ -5204,6 +5229,10 @@ var MatAutocompleteTrigger = /** @class */ (function () {
5204
5229
  if (event.keyCode === keycodes.ESCAPE || (event.keyCode === keycodes.UP_ARROW && event.altKey)) {
5205
5230
  _this._resetActiveItem();
5206
5231
  _this._closeKeyEventStream.next();
5232
+ // We need to stop propagation, otherwise the event will eventually
5233
+ // reach the input itself and cause the overlay to be reopened.
5234
+ event.stopPropagation();
5235
+ event.preventDefault();
5207
5236
  }
5208
5237
  }));
5209
5238
  if (this._viewportRuler) {
@@ -6173,12 +6202,26 @@ var MatBottomSheetContainer = /** @class */ (function (_super) {
6173
6202
  * @return {?}
6174
6203
  */
6175
6204
  function () {
6205
+ /** @type {?} */
6206
+ var element = this._elementRef.nativeElement;
6176
6207
  if (!this._focusTrap) {
6177
- this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);
6208
+ this._focusTrap = this._focusTrapFactory.create(element);
6178
6209
  }
6179
6210
  if (this.bottomSheetConfig.autoFocus) {
6180
6211
  this._focusTrap.focusInitialElementWhenReady();
6181
6212
  }
6213
+ else {
6214
+ /** @type {?} */
6215
+ var activeElement = this._document.activeElement;
6216
+ // Otherwise ensure that focus is on the container. It's possible that a different
6217
+ // component tried to move focus while the open animation was running. See:
6218
+ // https://github.com/angular/components/issues/16215. Note that we only want to do this
6219
+ // if the focus isn't inside the bottom sheet already, because it's possible that the
6220
+ // consumer turned off `autoFocus` in order to move focus themselves.
6221
+ if (activeElement !== element && !element.contains(activeElement)) {
6222
+ element.focus();
6223
+ }
6224
+ }
6182
6225
  };
6183
6226
  /** Restores focus to the element that was focused before the bottom sheet was opened. */
6184
6227
  /**
@@ -6333,6 +6376,7 @@ MatBottomSheetRef = /** @class */ (function () {
6333
6376
  * @return {?}
6334
6377
  */
6335
6378
  function () {
6379
+ clearTimeout(_this._closeFallbackTimeout);
6336
6380
  _overlayRef.dispose();
6337
6381
  }));
6338
6382
  _overlayRef.detachments().pipe(operators.take(1)).subscribe((/**
@@ -6381,9 +6425,23 @@ MatBottomSheetRef = /** @class */ (function () {
6381
6425
  * @return {?}
6382
6426
  */
6383
6427
  function (event) { return event.phaseName === 'start'; })), operators.take(1)).subscribe((/**
6428
+ * @param {?} event
6384
6429
  * @return {?}
6385
6430
  */
6386
- function () { return _this._overlayRef.detachBackdrop(); }));
6431
+ function (event) {
6432
+ // The logic that disposes of the overlay depends on the exit animation completing, however
6433
+ // it isn't guaranteed if the parent view is destroyed while it's running. Add a fallback
6434
+ // timeout which will clean everything up if the animation hasn't fired within the specified
6435
+ // amount of time plus 100ms. We don't need to run this outside the NgZone, because for the
6436
+ // vast majority of cases the timeout will have been cleared before it has fired.
6437
+ _this._closeFallbackTimeout = setTimeout((/**
6438
+ * @return {?}
6439
+ */
6440
+ function () {
6441
+ _this._overlayRef.dispose();
6442
+ }), event.totalTime + 100);
6443
+ _this._overlayRef.detachBackdrop();
6444
+ }));
6387
6445
  this._result = result;
6388
6446
  this.containerInstance.exit();
6389
6447
  }
@@ -6763,7 +6821,7 @@ var MatButton = /** @class */ (function (_super) {
6763
6821
  for (var _i = 0, BUTTON_HOST_ATTRIBUTES_1 = BUTTON_HOST_ATTRIBUTES; _i < BUTTON_HOST_ATTRIBUTES_1.length; _i++) {
6764
6822
  var attr = BUTTON_HOST_ATTRIBUTES_1[_i];
6765
6823
  if (_this._hasHostAttributes(attr)) {
6766
- ((/** @type {?} */ (elementRef.nativeElement))).classList.add(attr);
6824
+ ((/** @type {?} */ (_this._getHostElement()))).classList.add(attr);
6767
6825
  }
6768
6826
  }
6769
6827
  _this._focusMonitor.monitor(_this._elementRef, true);
@@ -7114,7 +7172,7 @@ var MatButtonToggleGroup = /** @class */ (function () {
7114
7172
  */
7115
7173
  function () {
7116
7174
  /** @type {?} */
7117
- var selected = this._selectionModel.selected;
7175
+ var selected = this._selectionModel ? this._selectionModel.selected : [];
7118
7176
  return this.multiple ? selected : (selected[0] || null);
7119
7177
  },
7120
7178
  enumerable: true,
@@ -7297,11 +7355,16 @@ var MatButtonToggleGroup = /** @class */ (function () {
7297
7355
  if (!this.multiple && this.selected && !toggle.checked) {
7298
7356
  ((/** @type {?} */ (this.selected))).checked = false;
7299
7357
  }
7300
- if (select) {
7301
- this._selectionModel.select(toggle);
7358
+ if (this._selectionModel) {
7359
+ if (select) {
7360
+ this._selectionModel.select(toggle);
7361
+ }
7362
+ else {
7363
+ this._selectionModel.deselect(toggle);
7364
+ }
7302
7365
  }
7303
7366
  else {
7304
- this._selectionModel.deselect(toggle);
7367
+ deferEvents = true;
7305
7368
  }
7306
7369
  // We need to defer in some cases in order to avoid "changed after checked errors", however
7307
7370
  // the side-effect is that we may end up updating the model value out of sequence in others
@@ -7324,7 +7387,7 @@ var MatButtonToggleGroup = /** @class */ (function () {
7324
7387
  * @return {?}
7325
7388
  */
7326
7389
  function (toggle) {
7327
- return this._selectionModel.isSelected(toggle);
7390
+ return this._selectionModel && this._selectionModel.isSelected(toggle);
7328
7391
  };
7329
7392
  /** Determines whether a button toggle should be checked on init. */
7330
7393
  /**
@@ -7962,18 +8025,27 @@ var MatCardAvatar = /** @class */ (function () {
7962
8025
  * - mat-card-footer
7963
8026
  */
7964
8027
  var MatCard = /** @class */ (function () {
7965
- function MatCard() {
8028
+ // @breaking-change 9.0.0 `_animationMode` parameter to be made required.
8029
+ function MatCard(_animationMode) {
8030
+ this._animationMode = _animationMode;
7966
8031
  }
7967
8032
  MatCard.decorators = [
7968
8033
  { type: core.Component, args: [{selector: 'mat-card',
7969
8034
  exportAs: 'matCard',
7970
8035
  template: "<ng-content></ng-content><ng-content select=\"mat-card-footer\"></ng-content>",
7971
- styles: [".mat-card{transition:box-shadow 280ms cubic-bezier(.4,0,.2,1);display:block;position:relative;padding:16px;border-radius:4px}.mat-card .mat-divider-horizontal{position:absolute;left:0;width:100%}[dir=rtl] .mat-card .mat-divider-horizontal{left:auto;right:0}.mat-card .mat-divider-horizontal.mat-divider-inset{position:static;margin:0}[dir=rtl] .mat-card .mat-divider-horizontal.mat-divider-inset{margin-right:0}@media (-ms-high-contrast:active){.mat-card{outline:solid 1px}}.mat-card-actions,.mat-card-content,.mat-card-subtitle{display:block;margin-bottom:16px}.mat-card-title{display:block;margin-bottom:8px}.mat-card-actions{margin-left:-8px;margin-right:-8px;padding:8px 0}.mat-card-actions-align-end{display:flex;justify-content:flex-end}.mat-card-image{width:calc(100% + 32px);margin:0 -16px 16px -16px}.mat-card-footer{display:block;margin:0 -16px -16px -16px}.mat-card-actions .mat-button,.mat-card-actions .mat-raised-button{margin:0 8px}.mat-card-header{display:flex;flex-direction:row}.mat-card-header .mat-card-title{margin-bottom:12px}.mat-card-header-text{margin:0 16px}.mat-card-avatar{height:40px;width:40px;border-radius:50%;flex-shrink:0;object-fit:cover}.mat-card-title-group{display:flex;justify-content:space-between}.mat-card-sm-image{width:80px;height:80px}.mat-card-md-image{width:112px;height:112px}.mat-card-lg-image{width:152px;height:152px}.mat-card-xl-image{width:240px;height:240px;margin:-8px}.mat-card-title-group>.mat-card-xl-image{margin:-8px 0 8px}@media (max-width:599px){.mat-card-title-group{margin:0}.mat-card-xl-image{margin-left:0;margin-right:0}}.mat-card-content>:first-child,.mat-card>:first-child{margin-top:0}.mat-card-content>:last-child:not(.mat-card-footer),.mat-card>:last-child:not(.mat-card-footer){margin-bottom:0}.mat-card-image:first-child{margin-top:-16px;border-top-left-radius:inherit;border-top-right-radius:inherit}.mat-card>.mat-card-actions:last-child{margin-bottom:-8px;padding-bottom:0}.mat-card-actions .mat-button:first-child,.mat-card-actions .mat-raised-button:first-child{margin-left:0;margin-right:0}.mat-card-subtitle:not(:first-child),.mat-card-title:not(:first-child){margin-top:-4px}.mat-card-header .mat-card-subtitle:not(:first-child){margin-top:-8px}.mat-card>.mat-card-xl-image:first-child{margin-top:-8px}.mat-card>.mat-card-xl-image:last-child{margin-bottom:-8px}"],
8036
+ styles: [".mat-card{transition:box-shadow 280ms cubic-bezier(.4,0,.2,1);display:block;position:relative;padding:16px;border-radius:4px}._mat-animation-noopable.mat-card{transition:none;animation:none}.mat-card .mat-divider-horizontal{position:absolute;left:0;width:100%}[dir=rtl] .mat-card .mat-divider-horizontal{left:auto;right:0}.mat-card .mat-divider-horizontal.mat-divider-inset{position:static;margin:0}[dir=rtl] .mat-card .mat-divider-horizontal.mat-divider-inset{margin-right:0}@media (-ms-high-contrast:active){.mat-card{outline:solid 1px}}.mat-card-actions,.mat-card-content,.mat-card-subtitle{display:block;margin-bottom:16px}.mat-card-title{display:block;margin-bottom:8px}.mat-card-actions{margin-left:-8px;margin-right:-8px;padding:8px 0}.mat-card-actions-align-end{display:flex;justify-content:flex-end}.mat-card-image{width:calc(100% + 32px);margin:0 -16px 16px -16px}.mat-card-footer{display:block;margin:0 -16px -16px -16px}.mat-card-actions .mat-button,.mat-card-actions .mat-raised-button{margin:0 8px}.mat-card-header{display:flex;flex-direction:row}.mat-card-header .mat-card-title{margin-bottom:12px}.mat-card-header-text{margin:0 16px}.mat-card-avatar{height:40px;width:40px;border-radius:50%;flex-shrink:0;object-fit:cover}.mat-card-title-group{display:flex;justify-content:space-between}.mat-card-sm-image{width:80px;height:80px}.mat-card-md-image{width:112px;height:112px}.mat-card-lg-image{width:152px;height:152px}.mat-card-xl-image{width:240px;height:240px;margin:-8px}.mat-card-title-group>.mat-card-xl-image{margin:-8px 0 8px}@media (max-width:599px){.mat-card-title-group{margin:0}.mat-card-xl-image{margin-left:0;margin-right:0}}.mat-card-content>:first-child,.mat-card>:first-child{margin-top:0}.mat-card-content>:last-child:not(.mat-card-footer),.mat-card>:last-child:not(.mat-card-footer){margin-bottom:0}.mat-card-image:first-child{margin-top:-16px;border-top-left-radius:inherit;border-top-right-radius:inherit}.mat-card>.mat-card-actions:last-child{margin-bottom:-8px;padding-bottom:0}.mat-card-actions .mat-button:first-child,.mat-card-actions .mat-raised-button:first-child{margin-left:0;margin-right:0}.mat-card-subtitle:not(:first-child),.mat-card-title:not(:first-child){margin-top:-4px}.mat-card-header .mat-card-subtitle:not(:first-child){margin-top:-8px}.mat-card>.mat-card-xl-image:first-child{margin-top:-8px}.mat-card>.mat-card-xl-image:last-child{margin-bottom:-8px}"],
7972
8037
  encapsulation: core.ViewEncapsulation.None,
7973
8038
  changeDetection: core.ChangeDetectionStrategy.OnPush,
7974
- host: { 'class': 'mat-card' }
8039
+ host: {
8040
+ 'class': 'mat-card',
8041
+ '[class._mat-animation-noopable]': '_animationMode === "NoopAnimations"',
8042
+ }
7975
8043
  },] },
7976
8044
  ];
8045
+ /** @nocollapse */
8046
+ MatCard.ctorParameters = function () { return [
8047
+ { type: String, decorators: [{ type: core.Optional }, { type: core.Inject, args: [animations.ANIMATION_MODULE_TYPE,] }] }
8048
+ ]; };
7977
8049
  return MatCard;
7978
8050
  }());
7979
8051
  /**
@@ -8142,7 +8214,7 @@ var MatCheckbox = /** @class */ (function (_super) {
8142
8214
  _this._clickAction = _clickAction;
8143
8215
  _this._animationMode = _animationMode;
8144
8216
  /**
8145
- * Attached to the aria-label attribute of the host element. In most cases, arial-labelledby will
8217
+ * Attached to the aria-label attribute of the host element. In most cases, aria-labelledby will
8146
8218
  * take precedence so this may be omitted.
8147
8219
  */
8148
8220
  _this.ariaLabel = '';
@@ -8640,7 +8712,7 @@ var MatCheckbox = /** @class */ (function (_super) {
8640
8712
  MatCheckbox.decorators = [
8641
8713
  { type: core.Component, args: [{selector: 'mat-checkbox',
8642
8714
  template: "<label [attr.for]=\"inputId\" class=\"mat-checkbox-layout\" #label><div class=\"mat-checkbox-inner-container\" [class.mat-checkbox-inner-container-no-side-margin]=\"!checkboxLabel.textContent || !checkboxLabel.textContent.trim()\"><input #input class=\"mat-checkbox-input cdk-visually-hidden\" type=\"checkbox\" [id]=\"inputId\" [required]=\"required\" [checked]=\"checked\" [attr.value]=\"value\" [disabled]=\"disabled\" [attr.name]=\"name\" [tabIndex]=\"tabIndex\" [indeterminate]=\"indeterminate\" [attr.aria-label]=\"ariaLabel || null\" [attr.aria-labelledby]=\"ariaLabelledby\" [attr.aria-checked]=\"_getAriaChecked()\" (change)=\"_onInteractionEvent($event)\" (click)=\"_onInputClick($event)\"><div matRipple class=\"mat-checkbox-ripple\" [matRippleTrigger]=\"label\" [matRippleDisabled]=\"_isRippleDisabled()\" [matRippleRadius]=\"20\" [matRippleCentered]=\"true\" [matRippleAnimation]=\"{enterDuration: 150}\"><div class=\"mat-ripple-element mat-checkbox-persistent-ripple\"></div></div><div class=\"mat-checkbox-frame\"></div><div class=\"mat-checkbox-background\"><svg version=\"1.1\" focusable=\"false\" class=\"mat-checkbox-checkmark\" viewBox=\"0 0 24 24\" xml:space=\"preserve\"><path class=\"mat-checkbox-checkmark-path\" fill=\"none\" stroke=\"white\" d=\"M4.1,12.7 9,17.6 20.3,6.3\"/></svg><div class=\"mat-checkbox-mixedmark\"></div></div></div><span class=\"mat-checkbox-label\" #checkboxLabel (cdkObserveContent)=\"_onLabelTextChange()\"><span style=\"display:none\">&nbsp;</span><ng-content></ng-content></span></label>",
8643
- styles: ["@keyframes mat-checkbox-fade-in-background{0%{opacity:0}50%{opacity:1}}@keyframes mat-checkbox-fade-out-background{0%,50%{opacity:1}100%{opacity:0}}@keyframes mat-checkbox-unchecked-checked-checkmark-path{0%,50%{stroke-dashoffset:22.91026}50%{animation-timing-function:cubic-bezier(0,0,.2,.1)}100%{stroke-dashoffset:0}}@keyframes mat-checkbox-unchecked-indeterminate-mixedmark{0%,68.2%{transform:scaleX(0)}68.2%{animation-timing-function:cubic-bezier(0,0,0,1)}100%{transform:scaleX(1)}}@keyframes mat-checkbox-checked-unchecked-checkmark-path{from{animation-timing-function:cubic-bezier(.4,0,1,1);stroke-dashoffset:0}to{stroke-dashoffset:-22.91026}}@keyframes mat-checkbox-checked-indeterminate-checkmark{from{animation-timing-function:cubic-bezier(0,0,.2,.1);opacity:1;transform:rotate(0)}to{opacity:0;transform:rotate(45deg)}}@keyframes mat-checkbox-indeterminate-checked-checkmark{from{animation-timing-function:cubic-bezier(.14,0,0,1);opacity:0;transform:rotate(45deg)}to{opacity:1;transform:rotate(360deg)}}@keyframes mat-checkbox-checked-indeterminate-mixedmark{from{animation-timing-function:cubic-bezier(0,0,.2,.1);opacity:0;transform:rotate(-45deg)}to{opacity:1;transform:rotate(0)}}@keyframes mat-checkbox-indeterminate-checked-mixedmark{from{animation-timing-function:cubic-bezier(.14,0,0,1);opacity:1;transform:rotate(0)}to{opacity:0;transform:rotate(315deg)}}@keyframes mat-checkbox-indeterminate-unchecked-mixedmark{0%{animation-timing-function:linear;opacity:1;transform:scaleX(1)}100%,32.8%{opacity:0;transform:scaleX(0)}}.mat-checkbox-background,.mat-checkbox-frame{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:2px;box-sizing:border-box;pointer-events:none}.mat-checkbox{transition:background .4s cubic-bezier(.25,.8,.25,1),box-shadow 280ms cubic-bezier(.4,0,.2,1);cursor:pointer;-webkit-tap-highlight-color:transparent}._mat-animation-noopable.mat-checkbox{transition:none;animation:none}.mat-checkbox .mat-ripple-element:not(.mat-checkbox-persistent-ripple){opacity:.16}.mat-checkbox-layout{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:inherit;align-items:baseline;vertical-align:middle;display:inline-flex;white-space:nowrap}.mat-checkbox-label{-webkit-user-select:auto;-moz-user-select:auto;-ms-user-select:auto;user-select:auto}.mat-checkbox-inner-container{display:inline-block;height:16px;line-height:0;margin:auto;margin-right:8px;order:0;position:relative;vertical-align:middle;white-space:nowrap;width:16px;flex-shrink:0}[dir=rtl] .mat-checkbox-inner-container{margin-left:8px;margin-right:auto}.mat-checkbox-inner-container-no-side-margin{margin-left:0;margin-right:0}.mat-checkbox-frame{background-color:transparent;transition:border-color 90ms cubic-bezier(0,0,.2,.1);border-width:2px;border-style:solid}._mat-animation-noopable .mat-checkbox-frame{transition:none}@media (-ms-high-contrast:active){.mat-checkbox.cdk-keyboard-focused .mat-checkbox-frame{border-style:dotted}}.mat-checkbox-background{align-items:center;display:inline-flex;justify-content:center;transition:background-color 90ms cubic-bezier(0,0,.2,.1),opacity 90ms cubic-bezier(0,0,.2,.1)}._mat-animation-noopable .mat-checkbox-background{transition:none}.mat-checkbox-persistent-ripple{width:100%;height:100%;transform:none}.mat-checkbox-inner-container:hover .mat-checkbox-persistent-ripple{opacity:.04}.mat-checkbox.cdk-keyboard-focused .mat-checkbox-persistent-ripple{opacity:.12}.mat-checkbox-persistent-ripple,.mat-checkbox.mat-disabled .mat-checkbox-inner-container:hover .mat-checkbox-persistent-ripple{opacity:0}@media (hover:none){.mat-checkbox-inner-container:hover .mat-checkbox-persistent-ripple{display:none}}.mat-checkbox-checkmark{top:0;left:0;right:0;bottom:0;position:absolute;width:100%}.mat-checkbox-checkmark-path{stroke-dashoffset:22.91026;stroke-dasharray:22.91026;stroke-width:2.13333px}.mat-checkbox-mixedmark{width:calc(100% - 6px);height:2px;opacity:0;transform:scaleX(0) rotate(0);border-radius:2px}@media (-ms-high-contrast:active){.mat-checkbox-mixedmark{height:0;border-top:solid 2px;margin-top:2px}}.mat-checkbox-label-before .mat-checkbox-inner-container{order:1;margin-left:8px;margin-right:auto}[dir=rtl] .mat-checkbox-label-before .mat-checkbox-inner-container{margin-left:auto;margin-right:8px}.mat-checkbox-checked .mat-checkbox-checkmark{opacity:1}.mat-checkbox-checked .mat-checkbox-checkmark-path{stroke-dashoffset:0}.mat-checkbox-checked .mat-checkbox-mixedmark{transform:scaleX(1) rotate(-45deg)}.mat-checkbox-indeterminate .mat-checkbox-checkmark{opacity:0;transform:rotate(45deg)}.mat-checkbox-indeterminate .mat-checkbox-checkmark-path{stroke-dashoffset:0}.mat-checkbox-indeterminate .mat-checkbox-mixedmark{opacity:1;transform:scaleX(1) rotate(0)}.mat-checkbox-unchecked .mat-checkbox-background{background-color:transparent}.mat-checkbox-disabled{cursor:default}.mat-checkbox-anim-unchecked-checked .mat-checkbox-background{animation:180ms linear 0s mat-checkbox-fade-in-background}.mat-checkbox-anim-unchecked-checked .mat-checkbox-checkmark-path{animation:180ms linear 0s mat-checkbox-unchecked-checked-checkmark-path}.mat-checkbox-anim-unchecked-indeterminate .mat-checkbox-background{animation:180ms linear 0s mat-checkbox-fade-in-background}.mat-checkbox-anim-unchecked-indeterminate .mat-checkbox-mixedmark{animation:90ms linear 0s mat-checkbox-unchecked-indeterminate-mixedmark}.mat-checkbox-anim-checked-unchecked .mat-checkbox-background{animation:180ms linear 0s mat-checkbox-fade-out-background}.mat-checkbox-anim-checked-unchecked .mat-checkbox-checkmark-path{animation:90ms linear 0s mat-checkbox-checked-unchecked-checkmark-path}.mat-checkbox-anim-checked-indeterminate .mat-checkbox-checkmark{animation:90ms linear 0s mat-checkbox-checked-indeterminate-checkmark}.mat-checkbox-anim-checked-indeterminate .mat-checkbox-mixedmark{animation:90ms linear 0s mat-checkbox-checked-indeterminate-mixedmark}.mat-checkbox-anim-indeterminate-checked .mat-checkbox-checkmark{animation:.5s linear 0s mat-checkbox-indeterminate-checked-checkmark}.mat-checkbox-anim-indeterminate-checked .mat-checkbox-mixedmark{animation:.5s linear 0s mat-checkbox-indeterminate-checked-mixedmark}.mat-checkbox-anim-indeterminate-unchecked .mat-checkbox-background{animation:180ms linear 0s mat-checkbox-fade-out-background}.mat-checkbox-anim-indeterminate-unchecked .mat-checkbox-mixedmark{animation:.3s linear 0s mat-checkbox-indeterminate-unchecked-mixedmark}.mat-checkbox-input{bottom:0;left:50%}.mat-checkbox .mat-checkbox-ripple{position:absolute;left:calc(50% - 20px);top:calc(50% - 20px);height:40px;width:40px;z-index:1;pointer-events:none}"],
8715
+ styles: ["@keyframes mat-checkbox-fade-in-background{0%{opacity:0}50%{opacity:1}}@keyframes mat-checkbox-fade-out-background{0%,50%{opacity:1}100%{opacity:0}}@keyframes mat-checkbox-unchecked-checked-checkmark-path{0%,50%{stroke-dashoffset:22.91026}50%{animation-timing-function:cubic-bezier(0,0,.2,.1)}100%{stroke-dashoffset:0}}@keyframes mat-checkbox-unchecked-indeterminate-mixedmark{0%,68.2%{transform:scaleX(0)}68.2%{animation-timing-function:cubic-bezier(0,0,0,1)}100%{transform:scaleX(1)}}@keyframes mat-checkbox-checked-unchecked-checkmark-path{from{animation-timing-function:cubic-bezier(.4,0,1,1);stroke-dashoffset:0}to{stroke-dashoffset:-22.91026}}@keyframes mat-checkbox-checked-indeterminate-checkmark{from{animation-timing-function:cubic-bezier(0,0,.2,.1);opacity:1;transform:rotate(0)}to{opacity:0;transform:rotate(45deg)}}@keyframes mat-checkbox-indeterminate-checked-checkmark{from{animation-timing-function:cubic-bezier(.14,0,0,1);opacity:0;transform:rotate(45deg)}to{opacity:1;transform:rotate(360deg)}}@keyframes mat-checkbox-checked-indeterminate-mixedmark{from{animation-timing-function:cubic-bezier(0,0,.2,.1);opacity:0;transform:rotate(-45deg)}to{opacity:1;transform:rotate(0)}}@keyframes mat-checkbox-indeterminate-checked-mixedmark{from{animation-timing-function:cubic-bezier(.14,0,0,1);opacity:1;transform:rotate(0)}to{opacity:0;transform:rotate(315deg)}}@keyframes mat-checkbox-indeterminate-unchecked-mixedmark{0%{animation-timing-function:linear;opacity:1;transform:scaleX(1)}100%,32.8%{opacity:0;transform:scaleX(0)}}.mat-checkbox-background,.mat-checkbox-frame{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:2px;box-sizing:border-box;pointer-events:none}.mat-checkbox{transition:background .4s cubic-bezier(.25,.8,.25,1),box-shadow 280ms cubic-bezier(.4,0,.2,1);cursor:pointer;-webkit-tap-highlight-color:transparent}._mat-animation-noopable.mat-checkbox{transition:none;animation:none}.mat-checkbox .mat-ripple-element:not(.mat-checkbox-persistent-ripple){opacity:.16}.mat-checkbox-layout{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:inherit;align-items:baseline;vertical-align:middle;display:inline-flex;white-space:nowrap}.mat-checkbox-label{-webkit-user-select:auto;-moz-user-select:auto;-ms-user-select:auto;user-select:auto}.mat-checkbox-inner-container{display:inline-block;height:16px;line-height:0;margin:auto;margin-right:8px;order:0;position:relative;vertical-align:middle;white-space:nowrap;width:16px;flex-shrink:0}[dir=rtl] .mat-checkbox-inner-container{margin-left:8px;margin-right:auto}.mat-checkbox-inner-container-no-side-margin{margin-left:0;margin-right:0}.mat-checkbox-frame{background-color:transparent;transition:border-color 90ms cubic-bezier(0,0,.2,.1);border-width:2px;border-style:solid}._mat-animation-noopable .mat-checkbox-frame{transition:none}@media (-ms-high-contrast:active){.mat-checkbox.cdk-keyboard-focused .mat-checkbox-frame{border-style:dotted}}.mat-checkbox-background{align-items:center;display:inline-flex;justify-content:center;transition:background-color 90ms cubic-bezier(0,0,.2,.1),opacity 90ms cubic-bezier(0,0,.2,.1)}._mat-animation-noopable .mat-checkbox-background{transition:none}.mat-checkbox-persistent-ripple{width:100%;height:100%;transform:none}.mat-checkbox-inner-container:hover .mat-checkbox-persistent-ripple{opacity:.04}.mat-checkbox.cdk-keyboard-focused .mat-checkbox-persistent-ripple{opacity:.12}.mat-checkbox-persistent-ripple,.mat-checkbox.mat-checkbox-disabled .mat-checkbox-inner-container:hover .mat-checkbox-persistent-ripple{opacity:0}@media (hover:none){.mat-checkbox-inner-container:hover .mat-checkbox-persistent-ripple{display:none}}.mat-checkbox-checkmark{top:0;left:0;right:0;bottom:0;position:absolute;width:100%}.mat-checkbox-checkmark-path{stroke-dashoffset:22.91026;stroke-dasharray:22.91026;stroke-width:2.13333px}.mat-checkbox-mixedmark{width:calc(100% - 6px);height:2px;opacity:0;transform:scaleX(0) rotate(0);border-radius:2px}@media (-ms-high-contrast:active){.mat-checkbox-mixedmark{height:0;border-top:solid 2px;margin-top:2px}}.mat-checkbox-label-before .mat-checkbox-inner-container{order:1;margin-left:8px;margin-right:auto}[dir=rtl] .mat-checkbox-label-before .mat-checkbox-inner-container{margin-left:auto;margin-right:8px}.mat-checkbox-checked .mat-checkbox-checkmark{opacity:1}.mat-checkbox-checked .mat-checkbox-checkmark-path{stroke-dashoffset:0}.mat-checkbox-checked .mat-checkbox-mixedmark{transform:scaleX(1) rotate(-45deg)}.mat-checkbox-indeterminate .mat-checkbox-checkmark{opacity:0;transform:rotate(45deg)}.mat-checkbox-indeterminate .mat-checkbox-checkmark-path{stroke-dashoffset:0}.mat-checkbox-indeterminate .mat-checkbox-mixedmark{opacity:1;transform:scaleX(1) rotate(0)}.mat-checkbox-unchecked .mat-checkbox-background{background-color:transparent}.mat-checkbox-disabled{cursor:default}.mat-checkbox-anim-unchecked-checked .mat-checkbox-background{animation:180ms linear 0s mat-checkbox-fade-in-background}.mat-checkbox-anim-unchecked-checked .mat-checkbox-checkmark-path{animation:180ms linear 0s mat-checkbox-unchecked-checked-checkmark-path}.mat-checkbox-anim-unchecked-indeterminate .mat-checkbox-background{animation:180ms linear 0s mat-checkbox-fade-in-background}.mat-checkbox-anim-unchecked-indeterminate .mat-checkbox-mixedmark{animation:90ms linear 0s mat-checkbox-unchecked-indeterminate-mixedmark}.mat-checkbox-anim-checked-unchecked .mat-checkbox-background{animation:180ms linear 0s mat-checkbox-fade-out-background}.mat-checkbox-anim-checked-unchecked .mat-checkbox-checkmark-path{animation:90ms linear 0s mat-checkbox-checked-unchecked-checkmark-path}.mat-checkbox-anim-checked-indeterminate .mat-checkbox-checkmark{animation:90ms linear 0s mat-checkbox-checked-indeterminate-checkmark}.mat-checkbox-anim-checked-indeterminate .mat-checkbox-mixedmark{animation:90ms linear 0s mat-checkbox-checked-indeterminate-mixedmark}.mat-checkbox-anim-indeterminate-checked .mat-checkbox-checkmark{animation:.5s linear 0s mat-checkbox-indeterminate-checked-checkmark}.mat-checkbox-anim-indeterminate-checked .mat-checkbox-mixedmark{animation:.5s linear 0s mat-checkbox-indeterminate-checked-mixedmark}.mat-checkbox-anim-indeterminate-unchecked .mat-checkbox-background{animation:180ms linear 0s mat-checkbox-fade-out-background}.mat-checkbox-anim-indeterminate-unchecked .mat-checkbox-mixedmark{animation:.3s linear 0s mat-checkbox-indeterminate-unchecked-mixedmark}.mat-checkbox-input{bottom:0;left:50%}.mat-checkbox .mat-checkbox-ripple{position:absolute;left:calc(50% - 20px);top:calc(50% - 20px);height:40px;width:40px;z-index:1;pointer-events:none}"],
8644
8716
  exportAs: 'matCheckbox',
8645
8717
  host: {
8646
8718
  'class': 'mat-checkbox',
@@ -8714,7 +8786,6 @@ var MatCheckboxRequiredValidator = /** @class */ (function (_super) {
8714
8786
  { type: core.Directive, args: [{
8715
8787
  selector: "mat-checkbox[required][formControlName],\n mat-checkbox[required][formControl], mat-checkbox[required][ngModel]",
8716
8788
  providers: [MAT_CHECKBOX_REQUIRED_VALIDATOR],
8717
- host: { '[attr.required]': 'required ? "" : null' }
8718
8789
  },] },
8719
8790
  ];
8720
8791
  return MatCheckboxRequiredValidator;
@@ -8825,7 +8896,9 @@ var MatChipTrailingIcon = /** @class */ (function () {
8825
8896
  */
8826
8897
  var MatChip = /** @class */ (function (_super) {
8827
8898
  __extends(MatChip, _super);
8828
- function MatChip(_elementRef, _ngZone, platform$$1, globalRippleOptions) {
8899
+ function MatChip(_elementRef, _ngZone, platform$$1, globalRippleOptions,
8900
+ // @breaking-change 8.0.0 `animationMode` parameter to become required.
8901
+ animationMode) {
8829
8902
  var _this = _super.call(this, _elementRef) || this;
8830
8903
  _this._elementRef = _elementRef;
8831
8904
  _this._ngZone = _ngZone;
@@ -8868,6 +8941,7 @@ var MatChip = /** @class */ (function (_super) {
8868
8941
  _this._chipRipple = new RippleRenderer(_this, _ngZone, _elementRef, platform$$1);
8869
8942
  _this._chipRipple.setupTriggerEvents(_elementRef.nativeElement);
8870
8943
  _this.rippleConfig = globalRippleOptions || {};
8944
+ _this._animationsDisabled = animationMode === 'NoopAnimations';
8871
8945
  return _this;
8872
8946
  }
8873
8947
  Object.defineProperty(MatChip.prototype, "rippleDisabled", {
@@ -9230,6 +9304,7 @@ var MatChip = /** @class */ (function (_super) {
9230
9304
  '[class.mat-chip-with-avatar]': 'avatar',
9231
9305
  '[class.mat-chip-with-trailing-icon]': 'trailingIcon || removeIcon',
9232
9306
  '[class.mat-chip-disabled]': 'disabled',
9307
+ '[class._mat-animation-noopable]': '_animationsDisabled',
9233
9308
  '[attr.disabled]': 'disabled || null',
9234
9309
  '[attr.aria-disabled]': 'disabled.toString()',
9235
9310
  '[attr.aria-selected]': 'ariaSelected',
@@ -9245,7 +9320,8 @@ var MatChip = /** @class */ (function (_super) {
9245
9320
  { type: core.ElementRef },
9246
9321
  { type: core.NgZone },
9247
9322
  { type: platform.Platform },
9248
- { type: undefined, decorators: [{ type: core.Optional }, { type: core.Inject, args: [MAT_RIPPLE_GLOBAL_OPTIONS,] }] }
9323
+ { type: undefined, decorators: [{ type: core.Optional }, { type: core.Inject, args: [MAT_RIPPLE_GLOBAL_OPTIONS,] }] },
9324
+ { type: String, decorators: [{ type: core.Optional }, { type: core.Inject, args: [animations.ANIMATION_MODULE_TYPE,] }] }
9249
9325
  ]; };
9250
9326
  MatChip.propDecorators = {
9251
9327
  avatar: [{ type: core.ContentChild, args: [MatChipAvatar, { static: false },] }],
@@ -10641,7 +10717,7 @@ var MatChipList = /** @class */ (function (_super) {
10641
10717
  '[id]': '_uid',
10642
10718
  },
10643
10719
  providers: [{ provide: MatFormFieldControl, useExisting: MatChipList }],
10644
- styles: [".mat-chip{position:relative;overflow:hidden;box-sizing:border-box;-webkit-tap-highlight-color:transparent;transform:translateZ(0)}.mat-standard-chip{transition:box-shadow 280ms cubic-bezier(.4,0,.2,1);display:inline-flex;padding:7px 12px;border-radius:16px;align-items:center;cursor:default;min-height:32px;height:1px}.mat-standard-chip .mat-chip-remove.mat-icon{width:18px;height:18px}.mat-standard-chip::after{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:inherit;opacity:0;content:'';pointer-events:none;transition:opacity .2s cubic-bezier(.35,0,.25,1)}.mat-standard-chip:hover::after{opacity:.12}.mat-standard-chip:focus{outline:0}.mat-standard-chip:focus::after{opacity:.16}@media (-ms-high-contrast:active){.mat-standard-chip{outline:solid 1px}.mat-standard-chip:focus{outline:dotted 2px}}.mat-standard-chip.mat-chip-disabled::after{opacity:0}.mat-standard-chip.mat-chip-disabled .mat-chip-remove,.mat-standard-chip.mat-chip-disabled .mat-chip-trailing-icon{cursor:default}.mat-standard-chip.mat-chip-with-avatar,.mat-standard-chip.mat-chip-with-trailing-icon.mat-chip-with-avatar{padding-top:0;padding-bottom:0}.mat-standard-chip.mat-chip-with-trailing-icon.mat-chip-with-avatar{padding-right:8px;padding-left:0}[dir=rtl] .mat-standard-chip.mat-chip-with-trailing-icon.mat-chip-with-avatar{padding-left:8px;padding-right:0}.mat-standard-chip.mat-chip-with-trailing-icon{padding-top:7px;padding-bottom:7px;padding-right:8px;padding-left:12px}[dir=rtl] .mat-standard-chip.mat-chip-with-trailing-icon{padding-left:8px;padding-right:12px}.mat-standard-chip.mat-chip-with-avatar{padding-left:0;padding-right:12px}[dir=rtl] .mat-standard-chip.mat-chip-with-avatar{padding-right:0;padding-left:12px}.mat-standard-chip .mat-chip-avatar{width:24px;height:24px;margin-right:8px;margin-left:4px}[dir=rtl] .mat-standard-chip .mat-chip-avatar{margin-left:8px;margin-right:4px}.mat-standard-chip .mat-chip-remove,.mat-standard-chip .mat-chip-trailing-icon{width:18px;height:18px;cursor:pointer}.mat-standard-chip .mat-chip-remove,.mat-standard-chip .mat-chip-trailing-icon{margin-left:8px;margin-right:0}[dir=rtl] .mat-standard-chip .mat-chip-remove,[dir=rtl] .mat-standard-chip .mat-chip-trailing-icon{margin-right:8px;margin-left:0}.mat-chip-list-wrapper{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;margin:-4px}.mat-chip-list-wrapper .mat-standard-chip,.mat-chip-list-wrapper input.mat-input-element{margin:4px}.mat-chip-list-stacked .mat-chip-list-wrapper{flex-direction:column;align-items:flex-start}.mat-chip-list-stacked .mat-chip-list-wrapper .mat-standard-chip{width:100%}.mat-chip-avatar{border-radius:50%;justify-content:center;align-items:center;display:flex;overflow:hidden;object-fit:cover}input.mat-chip-input{width:150px;margin:4px;flex:1 0 150px}"],
10720
+ styles: [".mat-chip{position:relative;overflow:hidden;box-sizing:border-box;-webkit-tap-highlight-color:transparent;transform:translateZ(0)}.mat-standard-chip{transition:box-shadow 280ms cubic-bezier(.4,0,.2,1);display:inline-flex;padding:7px 12px;border-radius:16px;align-items:center;cursor:default;min-height:32px;height:1px}._mat-animation-noopable.mat-standard-chip{transition:none;animation:none}.mat-standard-chip .mat-chip-remove.mat-icon{width:18px;height:18px}.mat-standard-chip::after{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:inherit;opacity:0;content:'';pointer-events:none;transition:opacity .2s cubic-bezier(.35,0,.25,1)}.mat-standard-chip:hover::after{opacity:.12}.mat-standard-chip:focus{outline:0}.mat-standard-chip:focus::after{opacity:.16}@media (-ms-high-contrast:active){.mat-standard-chip{outline:solid 1px}.mat-standard-chip:focus{outline:dotted 2px}}.mat-standard-chip.mat-chip-disabled::after{opacity:0}.mat-standard-chip.mat-chip-disabled .mat-chip-remove,.mat-standard-chip.mat-chip-disabled .mat-chip-trailing-icon{cursor:default}.mat-standard-chip.mat-chip-with-avatar,.mat-standard-chip.mat-chip-with-trailing-icon.mat-chip-with-avatar{padding-top:0;padding-bottom:0}.mat-standard-chip.mat-chip-with-trailing-icon.mat-chip-with-avatar{padding-right:8px;padding-left:0}[dir=rtl] .mat-standard-chip.mat-chip-with-trailing-icon.mat-chip-with-avatar{padding-left:8px;padding-right:0}.mat-standard-chip.mat-chip-with-trailing-icon{padding-top:7px;padding-bottom:7px;padding-right:8px;padding-left:12px}[dir=rtl] .mat-standard-chip.mat-chip-with-trailing-icon{padding-left:8px;padding-right:12px}.mat-standard-chip.mat-chip-with-avatar{padding-left:0;padding-right:12px}[dir=rtl] .mat-standard-chip.mat-chip-with-avatar{padding-right:0;padding-left:12px}.mat-standard-chip .mat-chip-avatar{width:24px;height:24px;margin-right:8px;margin-left:4px}[dir=rtl] .mat-standard-chip .mat-chip-avatar{margin-left:8px;margin-right:4px}.mat-standard-chip .mat-chip-remove,.mat-standard-chip .mat-chip-trailing-icon{width:18px;height:18px;cursor:pointer}.mat-standard-chip .mat-chip-remove,.mat-standard-chip .mat-chip-trailing-icon{margin-left:8px;margin-right:0}[dir=rtl] .mat-standard-chip .mat-chip-remove,[dir=rtl] .mat-standard-chip .mat-chip-trailing-icon{margin-right:8px;margin-left:0}.mat-chip-list-wrapper{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;margin:-4px}.mat-chip-list-wrapper .mat-standard-chip,.mat-chip-list-wrapper input.mat-input-element{margin:4px}.mat-chip-list-stacked .mat-chip-list-wrapper{flex-direction:column;align-items:flex-start}.mat-chip-list-stacked .mat-chip-list-wrapper .mat-standard-chip{width:100%}.mat-chip-avatar{border-radius:50%;justify-content:center;align-items:center;display:flex;overflow:hidden;object-fit:cover}input.mat-chip-input{width:150px;margin:4px;flex:1 0 150px}"],
10645
10721
  encapsulation: core.ViewEncapsulation.None,
10646
10722
  changeDetection: core.ChangeDetectionStrategy.OnPush
10647
10723
  },] },
@@ -11183,15 +11259,29 @@ var MatDialogContainer = /** @class */ (function (_super) {
11183
11259
  * @return {?}
11184
11260
  */
11185
11261
  function () {
11262
+ /** @type {?} */
11263
+ var element = this._elementRef.nativeElement;
11186
11264
  if (!this._focusTrap) {
11187
- this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);
11265
+ this._focusTrap = this._focusTrapFactory.create(element);
11188
11266
  }
11189
- // If were to attempt to focus immediately, then the content of the dialog would not yet be
11267
+ // If we were to attempt to focus immediately, then the content of the dialog would not yet be
11190
11268
  // ready in instances where change detection has to run first. To deal with this, we simply
11191
11269
  // wait for the microtask queue to be empty.
11192
11270
  if (this._config.autoFocus) {
11193
11271
  this._focusTrap.focusInitialElementWhenReady();
11194
11272
  }
11273
+ else {
11274
+ /** @type {?} */
11275
+ var activeElement = this._document.activeElement;
11276
+ // Otherwise ensure that focus is on the dialog container. It's possible that a different
11277
+ // component tried to move focus while the open animation was running. See:
11278
+ // https://github.com/angular/components/issues/16215. Note that we only want to do this
11279
+ // if the focus isn't inside the dialog already, because it's possible that the consumer
11280
+ // turned off `autoFocus` in order to move focus themselves.
11281
+ if (activeElement !== element && !element.contains(activeElement)) {
11282
+ element.focus();
11283
+ }
11284
+ }
11195
11285
  };
11196
11286
  /** Restores focus to the element that was focused before the dialog opened. */
11197
11287
  /**
@@ -11393,7 +11483,10 @@ MatDialogRef = /** @class */ (function () {
11393
11483
  function (event) { return event.phaseName === 'done' && event.toState === 'exit'; })), operators.take(1)).subscribe((/**
11394
11484
  * @return {?}
11395
11485
  */
11396
- function () { return _this._overlayRef.dispose(); }));
11486
+ function () {
11487
+ clearTimeout(_this._closeFallbackTimeout);
11488
+ _this._overlayRef.dispose();
11489
+ }));
11397
11490
  _overlayRef.detachments().subscribe((/**
11398
11491
  * @return {?}
11399
11492
  */
@@ -11446,12 +11539,24 @@ MatDialogRef = /** @class */ (function () {
11446
11539
  */
11447
11540
  function (event) { return event.phaseName === 'start'; })), operators.take(1))
11448
11541
  .subscribe((/**
11542
+ * @param {?} event
11449
11543
  * @return {?}
11450
11544
  */
11451
- function () {
11545
+ function (event) {
11452
11546
  _this._beforeClosed.next(dialogResult);
11453
11547
  _this._beforeClosed.complete();
11454
11548
  _this._overlayRef.detachBackdrop();
11549
+ // The logic that disposes of the overlay depends on the exit animation completing, however
11550
+ // it isn't guaranteed if the parent view is destroyed while it's running. Add a fallback
11551
+ // timeout which will clean everything up if the animation hasn't fired within the specified
11552
+ // amount of time plus 100ms. We don't need to run this outside the NgZone, because for the
11553
+ // vast majority of cases the timeout will have been cleared before it has the chance to fire.
11554
+ _this._closeFallbackTimeout = setTimeout((/**
11555
+ * @return {?}
11556
+ */
11557
+ function () {
11558
+ _this._overlayRef.dispose();
11559
+ }), event.totalTime + 100);
11455
11560
  }));
11456
11561
  this._containerInstance._startExitAnimation();
11457
11562
  };
@@ -13402,7 +13507,7 @@ var MatCalendarBody = /** @class */ (function () {
13402
13507
  };
13403
13508
  MatCalendarBody.decorators = [
13404
13509
  { type: core.Component, args: [{selector: '[mat-calendar-body]',
13405
- template: "<tr *ngIf=\"_firstRowOffset < labelMinRequiredCells\" aria-hidden=\"true\"><td class=\"mat-calendar-body-label\" [attr.colspan]=\"numCols\" [style.paddingTop]=\"_cellPadding\" [style.paddingBottom]=\"_cellPadding\">{{label}}</td></tr><tr *ngFor=\"let row of rows; let rowIndex = index\" role=\"row\"><td *ngIf=\"rowIndex === 0 && _firstRowOffset\" aria-hidden=\"true\" class=\"mat-calendar-body-label\" [attr.colspan]=\"_firstRowOffset\" [style.paddingTop]=\"_cellPadding\" [style.paddingBottom]=\"_cellPadding\">{{_firstRowOffset >= labelMinRequiredCells ? label : ''}}</td><td *ngFor=\"let item of row; let colIndex = index\" role=\"gridcell\" class=\"mat-calendar-body-cell\" [ngClass]=\"item.cssClasses\" [tabindex]=\"_isActiveCell(rowIndex, colIndex) ? 0 : -1\" [class.mat-calendar-body-disabled]=\"!item.enabled\" [class.mat-calendar-body-active]=\"_isActiveCell(rowIndex, colIndex)\" [attr.aria-label]=\"item.ariaLabel\" [attr.aria-disabled]=\"!item.enabled || null\" [attr.aria-selected]=\"selectedValue === item.value\" (click)=\"_cellClicked(item)\" [style.width]=\"_cellWidth\" [style.paddingTop]=\"_cellPadding\" [style.paddingBottom]=\"_cellPadding\"><div class=\"mat-calendar-body-cell-content\" [class.mat-calendar-body-selected]=\"selectedValue === item.value\" [class.mat-calendar-body-today]=\"todayValue === item.value\">{{item.displayValue}}</div></td></tr>",
13510
+ template: "<tr *ngIf=\"_firstRowOffset < labelMinRequiredCells\" aria-hidden=\"true\"><td class=\"mat-calendar-body-label\" [attr.colspan]=\"numCols\" [style.paddingTop]=\"_cellPadding\" [style.paddingBottom]=\"_cellPadding\">{{label}}</td></tr><tr *ngFor=\"let row of rows; let rowIndex = index\" role=\"row\"><td *ngIf=\"rowIndex === 0 && _firstRowOffset\" aria-hidden=\"true\" class=\"mat-calendar-body-label\" [attr.colspan]=\"_firstRowOffset\" [style.paddingTop]=\"_cellPadding\" [style.paddingBottom]=\"_cellPadding\">{{_firstRowOffset >= labelMinRequiredCells ? label : ''}}</td><td *ngFor=\"let item of row; let colIndex = index\" role=\"gridcell\" class=\"mat-calendar-body-cell\" [ngClass]=\"item.cssClasses\" [tabindex]=\"_isActiveCell(rowIndex, colIndex) ? 0 : -1\" [class.mat-calendar-body-disabled]=\"!item.enabled\" [class.mat-calendar-body-active]=\"_isActiveCell(rowIndex, colIndex)\" [attr.aria-label]=\"item.ariaLabel\" [attr.aria-disabled]=\"!item.enabled || null\" [attr.aria-selected]=\"selectedValue === item.value\" (click)=\"_cellClicked(item)\" [style.width]=\"_cellWidth\" [style.paddingTop]=\"_cellPadding\" role=\"button\" [style.paddingBottom]=\"_cellPadding\"><div class=\"mat-calendar-body-cell-content\" [class.mat-calendar-body-selected]=\"selectedValue === item.value\" [class.mat-calendar-body-today]=\"todayValue === item.value\">{{item.displayValue}}</div></td></tr>",
13406
13511
  styles: [".mat-calendar-body{min-width:224px}.mat-calendar-body-label{height:0;line-height:0;text-align:left;padding-left:4.71429%;padding-right:4.71429%}.mat-calendar-body-cell{position:relative;height:0;line-height:0;text-align:center;outline:0;cursor:pointer}.mat-calendar-body-disabled{cursor:default}.mat-calendar-body-cell-content{position:absolute;top:5%;left:5%;display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:90%;height:90%;line-height:1;border-width:1px;border-style:solid;border-radius:999px}@media (-ms-high-contrast:active){.mat-calendar-body-cell-content{border:none}}@media (-ms-high-contrast:active){.mat-calendar-body-selected,.mat-datepicker-popup:not(:empty){outline:solid 1px}.mat-calendar-body-today{outline:dotted 1px}.cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected),.cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected){outline:dotted 2px}}[dir=rtl] .mat-calendar-body-label{text-align:right}"],
13407
13512
  host: {
13408
13513
  'class': 'mat-calendar-body',
@@ -13911,8 +14016,7 @@ var MatMultiYearView = /** @class */ (function () {
13911
14016
  /** @type {?} */
13912
14017
  var validDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value)) || this._dateAdapter.today();
13913
14018
  this._activeDate = this._dateAdapter.clampDate(validDate, this.minDate, this.maxDate);
13914
- if (Math.floor(this._dateAdapter.getYear(oldActiveDate) / yearsPerPage) !=
13915
- Math.floor(this._dateAdapter.getYear(this._activeDate) / yearsPerPage)) {
14019
+ if (!isSameMultiYearView(this._dateAdapter, oldActiveDate, this._activeDate, this.minDate, this.maxDate)) {
13916
14020
  this._init();
13917
14021
  }
13918
14022
  },
@@ -13992,13 +14096,18 @@ var MatMultiYearView = /** @class */ (function () {
13992
14096
  function () {
13993
14097
  var _this = this;
13994
14098
  this._todayYear = this._dateAdapter.getYear(this._dateAdapter.today());
14099
+ // We want a range years such that we maximize the number of
14100
+ // enabled dates visible at once. This prevents issues where the minimum year
14101
+ // is the last item of a page OR the maximum year is the first item of a page.
14102
+ // The offset from the active year to the "slot" for the starting year is the
14103
+ // *actual* first rendered year in the multi-year view.
13995
14104
  /** @type {?} */
13996
14105
  var activeYear = this._dateAdapter.getYear(this._activeDate);
13997
14106
  /** @type {?} */
13998
- var activeOffset = activeYear % yearsPerPage;
14107
+ var minYearOfPage = activeYear - getActiveOffset(this._dateAdapter, this.activeDate, this.minDate, this.maxDate);
13999
14108
  this._years = [];
14000
14109
  for (var i = 0, row = []; i < yearsPerPage; i++) {
14001
- row.push(activeYear - activeOffset + i);
14110
+ row.push(minYearOfPage + i);
14002
14111
  if (row.length == yearsPerRow) {
14003
14112
  this._years.push(row.map((/**
14004
14113
  * @param {?} year
@@ -14041,12 +14150,6 @@ var MatMultiYearView = /** @class */ (function () {
14041
14150
  * @return {?}
14042
14151
  */
14043
14152
  function (event) {
14044
- // TODO(mmalerba): We currently allow keyboard navigation to disabled dates, but just prevent
14045
- // disabled ones from being selected. This may not be ideal, we should look into whether
14046
- // navigation should skip over disabled dates, and if so, how to implement that efficiently.
14047
- // TODO(mmalerba): We currently allow keyboard navigation to disabled dates, but just prevent
14048
- // disabled ones from being selected. This may not be ideal, we should look into whether
14049
- // navigation should skip over disabled dates, and if so, how to implement that efficiently.
14050
14153
  /** @type {?} */
14051
14154
  var oldActiveDate = this._activeDate;
14052
14155
  /** @type {?} */
@@ -14065,10 +14168,10 @@ var MatMultiYearView = /** @class */ (function () {
14065
14168
  this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, yearsPerRow);
14066
14169
  break;
14067
14170
  case keycodes.HOME:
14068
- this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, -this._dateAdapter.getYear(this._activeDate) % yearsPerPage);
14171
+ this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, -getActiveOffset(this._dateAdapter, this.activeDate, this.minDate, this.maxDate));
14069
14172
  break;
14070
14173
  case keycodes.END:
14071
- this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, yearsPerPage - this._dateAdapter.getYear(this._activeDate) % yearsPerPage - 1);
14174
+ this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, yearsPerPage - getActiveOffset(this._dateAdapter, this.activeDate, this.minDate, this.maxDate) - 1);
14072
14175
  break;
14073
14176
  case keycodes.PAGE_UP:
14074
14177
  this.activeDate =
@@ -14100,7 +14203,7 @@ var MatMultiYearView = /** @class */ (function () {
14100
14203
  * @return {?}
14101
14204
  */
14102
14205
  function () {
14103
- return this._dateAdapter.getYear(this.activeDate) % yearsPerPage;
14206
+ return getActiveOffset(this._dateAdapter, this.activeDate, this.minDate, this.maxDate);
14104
14207
  };
14105
14208
  /** Focuses the active cell after the microtask queue is empty. */
14106
14209
  /**
@@ -14224,6 +14327,72 @@ var MatMultiYearView = /** @class */ (function () {
14224
14327
  };
14225
14328
  return MatMultiYearView;
14226
14329
  }());
14330
+ /**
14331
+ * @template D
14332
+ * @param {?} dateAdapter
14333
+ * @param {?} date1
14334
+ * @param {?} date2
14335
+ * @param {?} minDate
14336
+ * @param {?} maxDate
14337
+ * @return {?}
14338
+ */
14339
+ function isSameMultiYearView(dateAdapter, date1, date2, minDate, maxDate) {
14340
+ /** @type {?} */
14341
+ var year1 = dateAdapter.getYear(date1);
14342
+ /** @type {?} */
14343
+ var year2 = dateAdapter.getYear(date2);
14344
+ /** @type {?} */
14345
+ var startingYear = getStartingYear(dateAdapter, minDate, maxDate);
14346
+ return Math.floor((year1 - startingYear) / yearsPerPage) ===
14347
+ Math.floor((year2 - startingYear) / yearsPerPage);
14348
+ }
14349
+ /**
14350
+ * When the multi-year view is first opened, the active year will be in view.
14351
+ * So we compute how many years are between the active year and the *slot* where our
14352
+ * "startingYear" will render when paged into view.
14353
+ * @template D
14354
+ * @param {?} dateAdapter
14355
+ * @param {?} activeDate
14356
+ * @param {?} minDate
14357
+ * @param {?} maxDate
14358
+ * @return {?}
14359
+ */
14360
+ function getActiveOffset(dateAdapter, activeDate, minDate, maxDate) {
14361
+ /** @type {?} */
14362
+ var activeYear = dateAdapter.getYear(activeDate);
14363
+ return euclideanModulo((activeYear - getStartingYear(dateAdapter, minDate, maxDate)), yearsPerPage);
14364
+ }
14365
+ /**
14366
+ * We pick a "starting" year such that either the maximum year would be at the end
14367
+ * or the minimum year would be at the beginning of a page.
14368
+ * @template D
14369
+ * @param {?} dateAdapter
14370
+ * @param {?} minDate
14371
+ * @param {?} maxDate
14372
+ * @return {?}
14373
+ */
14374
+ function getStartingYear(dateAdapter, minDate, maxDate) {
14375
+ /** @type {?} */
14376
+ var startingYear = 0;
14377
+ if (maxDate) {
14378
+ /** @type {?} */
14379
+ var maxYear = dateAdapter.getYear(maxDate);
14380
+ startingYear = maxYear - yearsPerPage + 1;
14381
+ }
14382
+ else if (minDate) {
14383
+ startingYear = dateAdapter.getYear(minDate);
14384
+ }
14385
+ return startingYear;
14386
+ }
14387
+ /**
14388
+ * Gets remainder that is non-negative, even if first number is negative
14389
+ * @param {?} a
14390
+ * @param {?} b
14391
+ * @return {?}
14392
+ */
14393
+ function euclideanModulo(a, b) {
14394
+ return (a % b + b) % b;
14395
+ }
14227
14396
 
14228
14397
  /**
14229
14398
  * @fileoverview added by tsickle
@@ -14698,13 +14867,16 @@ var MatCalendarHeader = /** @class */ (function () {
14698
14867
  if (this.calendar.currentView == 'year') {
14699
14868
  return this._dateAdapter.getYearName(this.calendar.activeDate);
14700
14869
  }
14870
+ // The offset from the active year to the "slot" for the starting year is the
14871
+ // *actual* first rendered year in the multi-year view, and the last year is
14872
+ // just yearsPerPage - 1 away.
14701
14873
  /** @type {?} */
14702
14874
  var activeYear = this._dateAdapter.getYear(this.calendar.activeDate);
14703
14875
  /** @type {?} */
14704
- var firstYearInView = this._dateAdapter.getYearName(this._dateAdapter.createDate(activeYear - activeYear % 24, 0, 1));
14876
+ var minYearOfPage = activeYear - getActiveOffset(this._dateAdapter, this.calendar.activeDate, this.calendar.minDate, this.calendar.maxDate);
14705
14877
  /** @type {?} */
14706
- var lastYearInView = this._dateAdapter.getYearName(this._dateAdapter.createDate(activeYear + yearsPerPage - 1 - activeYear % 24, 0, 1));
14707
- return firstYearInView + " \u2013 " + lastYearInView;
14878
+ var maxYearOfPage = minYearOfPage + yearsPerPage - 1;
14879
+ return minYearOfPage + " \u2013 " + maxYearOfPage;
14708
14880
  },
14709
14881
  enumerable: true,
14710
14882
  configurable: true
@@ -14845,8 +15017,7 @@ var MatCalendarHeader = /** @class */ (function () {
14845
15017
  return this._dateAdapter.getYear(date1) == this._dateAdapter.getYear(date2);
14846
15018
  }
14847
15019
  // Otherwise we are in 'multi-year' view.
14848
- return Math.floor(this._dateAdapter.getYear(date1) / yearsPerPage) ==
14849
- Math.floor(this._dateAdapter.getYear(date2) / yearsPerPage);
15020
+ return isSameMultiYearView(this._dateAdapter, date1, date2, this.calendar.minDate, this.calendar.maxDate);
14850
15021
  };
14851
15022
  MatCalendarHeader.decorators = [
14852
15023
  { type: core.Component, args: [{selector: 'mat-calendar-header',
@@ -17079,6 +17250,25 @@ var MatExpansionPanel = /** @class */ (function (_super) {
17079
17250
  enumerable: true,
17080
17251
  configurable: true
17081
17252
  });
17253
+ Object.defineProperty(MatExpansionPanel.prototype, "togglePosition", {
17254
+ /** The position of the expansion indicator. */
17255
+ get: /**
17256
+ * The position of the expansion indicator.
17257
+ * @return {?}
17258
+ */
17259
+ function () {
17260
+ return this._togglePosition || (this.accordion && this.accordion.togglePosition);
17261
+ },
17262
+ set: /**
17263
+ * @param {?} value
17264
+ * @return {?}
17265
+ */
17266
+ function (value) {
17267
+ this._togglePosition = value;
17268
+ },
17269
+ enumerable: true,
17270
+ configurable: true
17271
+ });
17082
17272
  /** Determines whether the expansion panel should have spacing between it and its siblings. */
17083
17273
  /**
17084
17274
  * Determines whether the expansion panel should have spacing between it and its siblings.
@@ -17206,6 +17396,7 @@ var MatExpansionPanel = /** @class */ (function (_super) {
17206
17396
  ]; };
17207
17397
  MatExpansionPanel.propDecorators = {
17208
17398
  hideToggle: [{ type: core.Input }],
17399
+ togglePosition: [{ type: core.Input }],
17209
17400
  afterExpand: [{ type: core.Output }],
17210
17401
  afterCollapse: [{ type: core.Output }],
17211
17402
  _lazyContent: [{ type: core.ContentChild, args: [MatExpansionPanelContent, { static: false },] }],
@@ -17244,13 +17435,17 @@ var MatExpansionPanelHeader = /** @class */ (function () {
17244
17435
  this._focusMonitor = _focusMonitor;
17245
17436
  this._changeDetectorRef = _changeDetectorRef;
17246
17437
  this._parentChangeSubscription = rxjs.Subscription.EMPTY;
17438
+ /**
17439
+ * Whether Angular animations in the panel header should be disabled.
17440
+ */
17441
+ this._animationsDisabled = true;
17247
17442
  /** @type {?} */
17248
17443
  var accordionHideToggleChange = panel.accordion ?
17249
17444
  panel.accordion._stateChanges.pipe(operators.filter((/**
17250
17445
  * @param {?} changes
17251
17446
  * @return {?}
17252
17447
  */
17253
- function (changes) { return !!changes['hideToggle']; }))) :
17448
+ function (changes) { return !!(changes['hideToggle'] || changes['togglePosition']); }))) :
17254
17449
  rxjs.EMPTY;
17255
17450
  // Since the toggle state depends on an @Input on the panel, we
17256
17451
  // need to subscribe and trigger change detection manually.
@@ -17259,7 +17454,11 @@ var MatExpansionPanelHeader = /** @class */ (function () {
17259
17454
  * @param {?} changes
17260
17455
  * @return {?}
17261
17456
  */
17262
- function (changes) { return !!(changes['hideToggle'] || changes['disabled']); }))))
17457
+ function (changes) {
17458
+ return !!(changes['hideToggle'] ||
17459
+ changes['disabled'] ||
17460
+ changes['togglePosition']);
17461
+ }))))
17263
17462
  .subscribe((/**
17264
17463
  * @return {?}
17265
17464
  */
@@ -17288,6 +17487,23 @@ var MatExpansionPanelHeader = /** @class */ (function () {
17288
17487
  this.collapsedHeight = defaultOptions.collapsedHeight;
17289
17488
  }
17290
17489
  }
17490
+ /**
17491
+ * @return {?}
17492
+ */
17493
+ MatExpansionPanelHeader.prototype._animationStarted = /**
17494
+ * @return {?}
17495
+ */
17496
+ function () {
17497
+ // Currently the `expansionHeight` animation has a `void => collapsed` transition which is
17498
+ // there to work around a bug in Angular (see #13088), however this introduces a different
17499
+ // issue. The new transition will cause the header to animate in on init (see #16067), if the
17500
+ // consumer has set a header height that is different from the default one. We work around it
17501
+ // by disabling animations on the header and re-enabling them after the first animation has run.
17502
+ // Note that Angular dispatches animation events even if animations are disabled. Ideally this
17503
+ // wouldn't be necessary if we remove the `void => collapsed` transition, but we have to wait
17504
+ // for https://github.com/angular/angular/issues/18847 to be resolved.
17505
+ this._animationsDisabled = false;
17506
+ };
17291
17507
  Object.defineProperty(MatExpansionPanelHeader.prototype, "disabled", {
17292
17508
  /**
17293
17509
  * Whether the associated panel is disabled. Implemented as a part of `FocusableOption`.
@@ -17352,6 +17568,18 @@ var MatExpansionPanelHeader = /** @class */ (function () {
17352
17568
  function () {
17353
17569
  return this.panel.id;
17354
17570
  };
17571
+ /** Gets the toggle position for the header. */
17572
+ /**
17573
+ * Gets the toggle position for the header.
17574
+ * @return {?}
17575
+ */
17576
+ MatExpansionPanelHeader.prototype._getTogglePosition = /**
17577
+ * Gets the toggle position for the header.
17578
+ * @return {?}
17579
+ */
17580
+ function () {
17581
+ return this.panel.togglePosition;
17582
+ };
17355
17583
  /** Gets whether the expand indicator should be shown. */
17356
17584
  /**
17357
17585
  * Gets whether the expand indicator should be shown.
@@ -17425,7 +17653,7 @@ var MatExpansionPanelHeader = /** @class */ (function () {
17425
17653
  };
17426
17654
  MatExpansionPanelHeader.decorators = [
17427
17655
  { type: core.Component, args: [{selector: 'mat-expansion-panel-header',
17428
- styles: [".mat-expansion-panel-header{display:flex;flex-direction:row;align-items:center;padding:0 24px;border-radius:inherit}.mat-expansion-panel-header:focus,.mat-expansion-panel-header:hover{outline:0}.mat-expansion-panel-header.mat-expanded:focus,.mat-expansion-panel-header.mat-expanded:hover{background:inherit}.mat-expansion-panel-header:not([aria-disabled=true]){cursor:pointer}.mat-content{display:flex;flex:1;flex-direction:row;overflow:hidden}.mat-expansion-panel-header-description,.mat-expansion-panel-header-title{display:flex;flex-grow:1;margin-right:16px}[dir=rtl] .mat-expansion-panel-header-description,[dir=rtl] .mat-expansion-panel-header-title{margin-right:0;margin-left:16px}.mat-expansion-panel-header-description{flex-grow:2}.mat-expansion-indicator::after{border-style:solid;border-width:0 2px 2px 0;content:'';display:inline-block;padding:3px;transform:rotate(45deg);vertical-align:middle}"],
17656
+ styles: [".mat-expansion-panel-header{display:flex;flex-direction:row;align-items:center;padding:0 24px;border-radius:inherit}.mat-expansion-panel-header:focus,.mat-expansion-panel-header:hover{outline:0}.mat-expansion-panel-header.mat-expanded:focus,.mat-expansion-panel-header.mat-expanded:hover{background:inherit}.mat-expansion-panel-header:not([aria-disabled=true]){cursor:pointer}.mat-expansion-panel-header.mat-expansion-toggle-indicator-before{flex-direction:row-reverse}.mat-expansion-panel-header.mat-expansion-toggle-indicator-before .mat-expansion-indicator{margin:0 16px 0 0}[dir=rtl] .mat-expansion-panel-header.mat-expansion-toggle-indicator-before .mat-expansion-indicator{margin:0 0 0 16px}.mat-content{display:flex;flex:1;flex-direction:row;overflow:hidden}.mat-expansion-panel-header-description,.mat-expansion-panel-header-title{display:flex;flex-grow:1;margin-right:16px}[dir=rtl] .mat-expansion-panel-header-description,[dir=rtl] .mat-expansion-panel-header-title{margin-right:0;margin-left:16px}.mat-expansion-panel-header-description{flex-grow:2}.mat-expansion-indicator::after{border-style:solid;border-width:0 2px 2px 0;content:'';display:inline-block;padding:3px;transform:rotate(45deg);vertical-align:middle}"],
17429
17657
  template: "<span class=\"mat-content\"><ng-content select=\"mat-panel-title\"></ng-content><ng-content select=\"mat-panel-description\"></ng-content><ng-content></ng-content></span><span [@indicatorRotate]=\"_getExpandedState()\" *ngIf=\"_showToggle()\" class=\"mat-expansion-indicator\"></span>",
17430
17658
  encapsulation: core.ViewEncapsulation.None,
17431
17659
  changeDetection: core.ChangeDetectionStrategy.OnPush,
@@ -17442,8 +17670,12 @@ var MatExpansionPanelHeader = /** @class */ (function () {
17442
17670
  '[attr.aria-expanded]': '_isExpanded()',
17443
17671
  '[attr.aria-disabled]': 'panel.disabled',
17444
17672
  '[class.mat-expanded]': '_isExpanded()',
17673
+ '[class.mat-expansion-toggle-indicator-after]': "_getTogglePosition() === 'after'",
17674
+ '[class.mat-expansion-toggle-indicator-before]': "_getTogglePosition() === 'before'",
17445
17675
  '(click)': '_toggle()',
17446
17676
  '(keydown)': '_keydown($event)',
17677
+ '[@.disabled]': '_animationsDisabled',
17678
+ '(@expansionHeight.start)': '_animationStarted()',
17447
17679
  '[@expansionHeight]': "{\n value: _getExpandedState(),\n params: {\n collapsedHeight: collapsedHeight,\n expandedHeight: expandedHeight\n }\n }",
17448
17680
  },
17449
17681
  },] },
@@ -17520,6 +17752,10 @@ var MatAccordion = /** @class */ (function (_super) {
17520
17752
  * elevation.
17521
17753
  */
17522
17754
  _this.displayMode = 'default';
17755
+ /**
17756
+ * The position of the expansion indicator.
17757
+ */
17758
+ _this.togglePosition = 'after';
17523
17759
  return _this;
17524
17760
  }
17525
17761
  Object.defineProperty(MatAccordion.prototype, "hideToggle", {
@@ -17605,7 +17841,8 @@ var MatAccordion = /** @class */ (function (_super) {
17605
17841
  MatAccordion.propDecorators = {
17606
17842
  _headers: [{ type: core.ContentChildren, args: [MatExpansionPanelHeader, { descendants: true },] }],
17607
17843
  hideToggle: [{ type: core.Input }],
17608
- displayMode: [{ type: core.Input }]
17844
+ displayMode: [{ type: core.Input }],
17845
+ togglePosition: [{ type: core.Input }]
17609
17846
  };
17610
17847
  return MatAccordion;
17611
17848
  }(accordion.CdkAccordion));
@@ -20972,13 +21209,22 @@ var MatListOption = /** @class */ (function (_super) {
20972
21209
  */
20973
21210
  function () {
20974
21211
  var _this = this;
21212
+ /** @type {?} */
21213
+ var list = this.selectionList;
21214
+ if (list._value && list._value.some((/**
21215
+ * @param {?} value
21216
+ * @return {?}
21217
+ */
21218
+ function (value) { return list.compareWith(value, _this._value); }))) {
21219
+ this._setSelected(true);
21220
+ }
21221
+ /** @type {?} */
21222
+ var wasSelected = this._selected;
20975
21223
  // List options that are selected at initialization can't be reported properly to the form
20976
21224
  // control. This is because it takes some time until the selection-list knows about all
20977
21225
  // available options. Also it can happen that the ControlValueAccessor has an initial value
20978
21226
  // that should be used instead. Deferring the value change report to the next tick ensures
20979
21227
  // that the form control value is not being overwritten.
20980
- /** @type {?} */
20981
- var wasSelected = this._selected;
20982
21228
  Promise.resolve().then((/**
20983
21229
  * @return {?}
20984
21230
  */
@@ -21186,8 +21432,8 @@ var MatListOption = /** @class */ (function (_super) {
21186
21432
  // its theme. The accent theme palette is the default and doesn't need to be set.
21187
21433
  '[class.mat-primary]': 'color === "primary"',
21188
21434
  '[class.mat-warn]': 'color === "warn"',
21189
- '[attr.aria-selected]': 'selected.toString()',
21190
- '[attr.aria-disabled]': 'disabled.toString()',
21435
+ '[attr.aria-selected]': 'selected',
21436
+ '[attr.aria-disabled]': 'disabled',
21191
21437
  },
21192
21438
  template: "<div class=\"mat-list-item-content\" [class.mat-list-item-content-reverse]=\"checkboxPosition == 'after'\"><div mat-ripple class=\"mat-list-item-ripple\" [matRippleTrigger]=\"_getHostElement()\" [matRippleDisabled]=\"_isRippleDisabled()\"></div><mat-pseudo-checkbox [state]=\"selected ? 'checked' : 'unchecked'\" [disabled]=\"disabled\"></mat-pseudo-checkbox><div class=\"mat-list-text\" #text><ng-content></ng-content></div><ng-content select=\"[mat-list-avatar], [mat-list-icon], [matListAvatar], [matListIcon]\"></ng-content></div>",
21193
21439
  encapsulation: core.ViewEncapsulation.None,
@@ -21236,6 +21482,17 @@ var MatSelectionList = /** @class */ (function (_super) {
21236
21482
  * Theme color of the selection list. This sets the checkbox color for all list options.
21237
21483
  */
21238
21484
  _this.color = 'accent';
21485
+ /**
21486
+ * Function used for comparing an option against the selected value when determining which
21487
+ * options should appear as selected. The first argument is the value of an options. The second
21488
+ * one is a value from the selected value. A boolean must be returned.
21489
+ */
21490
+ _this.compareWith = (/**
21491
+ * @param {?} a1
21492
+ * @param {?} a2
21493
+ * @return {?}
21494
+ */
21495
+ function (a1, a2) { return a1 === a2; });
21239
21496
  _this._disabled = false;
21240
21497
  /**
21241
21498
  * The currently selected options.
@@ -21250,9 +21507,9 @@ var MatSelectionList = /** @class */ (function (_super) {
21250
21507
  */
21251
21508
  function (_) { });
21252
21509
  /**
21253
- * Subscription to sync value changes in the SelectionModel back to the SelectionList.
21510
+ * Emits when the list has been destroyed.
21254
21511
  */
21255
- _this._modelChanges = rxjs.Subscription.EMPTY;
21512
+ _this._destroyed = new rxjs.Subject();
21256
21513
  /**
21257
21514
  * View to model callback that should be called if the list or its options lost focus.
21258
21515
  */
@@ -21302,12 +21559,11 @@ var MatSelectionList = /** @class */ (function (_super) {
21302
21559
  */
21303
21560
  function () { return false; }))
21304
21561
  .withAllowedModifierKeys(['shiftKey']);
21305
- if (this._tempValues) {
21306
- this._setOptionsFromValues(this._tempValues);
21307
- this._tempValues = null;
21562
+ if (this._value) {
21563
+ this._setOptionsFromValues(this._value);
21308
21564
  }
21309
21565
  // Sync external changes to the model back to the options.
21310
- this._modelChanges = this.selectedOptions.onChange.subscribe((/**
21566
+ this.selectedOptions.onChange.pipe(operators.takeUntil(this._destroyed)).subscribe((/**
21311
21567
  * @param {?} event
21312
21568
  * @return {?}
21313
21569
  */
@@ -21351,8 +21607,9 @@ var MatSelectionList = /** @class */ (function (_super) {
21351
21607
  * @return {?}
21352
21608
  */
21353
21609
  function () {
21354
- this._destroyed = true;
21355
- this._modelChanges.unsubscribe();
21610
+ this._destroyed.next();
21611
+ this._destroyed.complete();
21612
+ this._isDestroyed = true;
21356
21613
  };
21357
21614
  /** Focuses the selection list. */
21358
21615
  /**
@@ -21499,8 +21756,11 @@ var MatSelectionList = /** @class */ (function (_super) {
21499
21756
  // Stop reporting value changes after the list has been destroyed. This avoids
21500
21757
  // cases where the list might wrongly reset its value once it is removed, but
21501
21758
  // the form control is still live.
21502
- if (this.options && !this._destroyed) {
21503
- this._onChange(this._getSelectedOptionValues());
21759
+ if (this.options && !this._isDestroyed) {
21760
+ /** @type {?} */
21761
+ var value = this._getSelectedOptionValues();
21762
+ this._onChange(value);
21763
+ this._value = value;
21504
21764
  }
21505
21765
  };
21506
21766
  /** Emits a change event if the selected state of an option changed. */
@@ -21529,12 +21789,10 @@ var MatSelectionList = /** @class */ (function (_super) {
21529
21789
  * @return {?}
21530
21790
  */
21531
21791
  function (values) {
21792
+ this._value = values;
21532
21793
  if (this.options) {
21533
21794
  this._setOptionsFromValues(values || []);
21534
21795
  }
21535
- else {
21536
- this._tempValues = values;
21537
- }
21538
21796
  };
21539
21797
  /** Implemented as a part of ControlValueAccessor. */
21540
21798
  /**
@@ -21611,10 +21869,7 @@ var MatSelectionList = /** @class */ (function (_super) {
21611
21869
  function (option) {
21612
21870
  // Skip options that are already in the model. This allows us to handle cases
21613
21871
  // where the same primitive value is selected multiple times.
21614
- if (option.selected) {
21615
- return false;
21616
- }
21617
- return _this.compareWith ? _this.compareWith(option.value, value) : option.value === value;
21872
+ return option.selected ? false : _this.compareWith(option.value, value);
21618
21873
  }));
21619
21874
  if (correspondingOption) {
21620
21875
  correspondingOption._setSelected(true);
@@ -22325,13 +22580,9 @@ var _MatMenuBase = /** @class */ (function () {
22325
22580
  this._xPosition = this._defaultOptions.xPosition;
22326
22581
  this._yPosition = this._defaultOptions.yPosition;
22327
22582
  /**
22328
- * Menu items inside the current menu.
22583
+ * Only the direct descendant menu items.
22329
22584
  */
22330
- this._items = [];
22331
- /**
22332
- * Emits whenever the amount of menu items changes.
22333
- */
22334
- this._itemChanges = new rxjs.Subject();
22585
+ this._directDescendantItems = new core.QueryList();
22335
22586
  /**
22336
22587
  * Subscription to tab events on the menu panel
22337
22588
  */
@@ -22525,7 +22776,8 @@ var _MatMenuBase = /** @class */ (function () {
22525
22776
  */
22526
22777
  function () {
22527
22778
  var _this = this;
22528
- this._keyManager = new a11y.FocusKeyManager(this._items).withWrap().withTypeAhead();
22779
+ this._updateDirectDescendants();
22780
+ this._keyManager = new a11y.FocusKeyManager(this._directDescendantItems).withWrap().withTypeAhead();
22529
22781
  this._tabSubscription = this._keyManager.tabOut.subscribe((/**
22530
22782
  * @return {?}
22531
22783
  */
@@ -22538,6 +22790,7 @@ var _MatMenuBase = /** @class */ (function () {
22538
22790
  * @return {?}
22539
22791
  */
22540
22792
  function () {
22793
+ this._directDescendantItems.destroy();
22541
22794
  this._tabSubscription.unsubscribe();
22542
22795
  this.closed.complete();
22543
22796
  };
@@ -22551,7 +22804,7 @@ var _MatMenuBase = /** @class */ (function () {
22551
22804
  * @return {?}
22552
22805
  */
22553
22806
  function () {
22554
- return this._itemChanges.pipe(operators.startWith(this._items), operators.switchMap((/**
22807
+ return this._directDescendantItems.changes.pipe(operators.startWith(this._directDescendantItems), operators.switchMap((/**
22555
22808
  * @param {?} items
22556
22809
  * @return {?}
22557
22810
  */
@@ -22561,6 +22814,56 @@ var _MatMenuBase = /** @class */ (function () {
22561
22814
  */
22562
22815
  function (item) { return item._hovered; }))); })));
22563
22816
  };
22817
+ /*
22818
+ * Registers a menu item with the menu.
22819
+ * @docs-private
22820
+ * @deprecated No longer being used. To be removed.
22821
+ * @breaking-change 9.0.0
22822
+ */
22823
+ /*
22824
+ * Registers a menu item with the menu.
22825
+ * @docs-private
22826
+ * @deprecated No longer being used. To be removed.
22827
+ * @breaking-change 9.0.0
22828
+ */
22829
+ /**
22830
+ * @param {?} _item
22831
+ * @return {?}
22832
+ */
22833
+ _MatMenuBase.prototype.addItem = /*
22834
+ * Registers a menu item with the menu.
22835
+ * @docs-private
22836
+ * @deprecated No longer being used. To be removed.
22837
+ * @breaking-change 9.0.0
22838
+ */
22839
+ /**
22840
+ * @param {?} _item
22841
+ * @return {?}
22842
+ */
22843
+ function (_item) { };
22844
+ /**
22845
+ * Removes an item from the menu.
22846
+ * @docs-private
22847
+ * @deprecated No longer being used. To be removed.
22848
+ * @breaking-change 9.0.0
22849
+ */
22850
+ /**
22851
+ * Removes an item from the menu.
22852
+ * \@docs-private
22853
+ * @deprecated No longer being used. To be removed.
22854
+ * \@breaking-change 9.0.0
22855
+ * @param {?} _item
22856
+ * @return {?}
22857
+ */
22858
+ _MatMenuBase.prototype.removeItem = /**
22859
+ * Removes an item from the menu.
22860
+ * \@docs-private
22861
+ * @deprecated No longer being used. To be removed.
22862
+ * \@breaking-change 9.0.0
22863
+ * @param {?} _item
22864
+ * @return {?}
22865
+ */
22866
+ function (_item) { };
22564
22867
  /** Handle a keyboard event from the menu, delegating to the appropriate action. */
22565
22868
  /**
22566
22869
  * Handle a keyboard event from the menu, delegating to the appropriate action.
@@ -22687,57 +22990,6 @@ var _MatMenuBase = /** @class */ (function () {
22687
22990
  this._previousElevation = newElevation;
22688
22991
  }
22689
22992
  };
22690
- /**
22691
- * Registers a menu item with the menu.
22692
- * @docs-private
22693
- */
22694
- /**
22695
- * Registers a menu item with the menu.
22696
- * \@docs-private
22697
- * @param {?} item
22698
- * @return {?}
22699
- */
22700
- _MatMenuBase.prototype.addItem = /**
22701
- * Registers a menu item with the menu.
22702
- * \@docs-private
22703
- * @param {?} item
22704
- * @return {?}
22705
- */
22706
- function (item) {
22707
- // We register the items through this method, rather than picking them up through
22708
- // `ContentChildren`, because we need the items to be picked up by their closest
22709
- // `mat-menu` ancestor. If we used `@ContentChildren(MatMenuItem, {descendants: true})`,
22710
- // all descendant items will bleed into the top-level menu in the case where the consumer
22711
- // has `mat-menu` instances nested inside each other.
22712
- if (this._items.indexOf(item) === -1) {
22713
- this._items.push(item);
22714
- this._itemChanges.next(this._items);
22715
- }
22716
- };
22717
- /**
22718
- * Removes an item from the menu.
22719
- * @docs-private
22720
- */
22721
- /**
22722
- * Removes an item from the menu.
22723
- * \@docs-private
22724
- * @param {?} item
22725
- * @return {?}
22726
- */
22727
- _MatMenuBase.prototype.removeItem = /**
22728
- * Removes an item from the menu.
22729
- * \@docs-private
22730
- * @param {?} item
22731
- * @return {?}
22732
- */
22733
- function (item) {
22734
- /** @type {?} */
22735
- var index = this._items.indexOf(item);
22736
- if (this._items.indexOf(item) > -1) {
22737
- this._items.splice(index, 1);
22738
- this._itemChanges.next(this._items);
22739
- }
22740
- };
22741
22993
  /**
22742
22994
  * Adds classes to the menu panel based on its position. Can be used by
22743
22995
  * consumers to add specific styling based on the position.
@@ -22832,6 +23084,45 @@ var _MatMenuBase = /** @class */ (function () {
22832
23084
  event.element.scrollTop = 0;
22833
23085
  }
22834
23086
  };
23087
+ /**
23088
+ * Sets up a stream that will keep track of any newly-added menu items and will update the list
23089
+ * of direct descendants. We collect the descendants this way, because `_allItems` can include
23090
+ * items that are part of child menus, and using a custom way of registering items is unreliable
23091
+ * when it comes to maintaining the item order.
23092
+ */
23093
+ /**
23094
+ * Sets up a stream that will keep track of any newly-added menu items and will update the list
23095
+ * of direct descendants. We collect the descendants this way, because `_allItems` can include
23096
+ * items that are part of child menus, and using a custom way of registering items is unreliable
23097
+ * when it comes to maintaining the item order.
23098
+ * @private
23099
+ * @return {?}
23100
+ */
23101
+ _MatMenuBase.prototype._updateDirectDescendants = /**
23102
+ * Sets up a stream that will keep track of any newly-added menu items and will update the list
23103
+ * of direct descendants. We collect the descendants this way, because `_allItems` can include
23104
+ * items that are part of child menus, and using a custom way of registering items is unreliable
23105
+ * when it comes to maintaining the item order.
23106
+ * @private
23107
+ * @return {?}
23108
+ */
23109
+ function () {
23110
+ var _this = this;
23111
+ this._allItems.changes
23112
+ .pipe(operators.startWith(this._allItems))
23113
+ .subscribe((/**
23114
+ * @param {?} items
23115
+ * @return {?}
23116
+ */
23117
+ function (items) {
23118
+ _this._directDescendantItems.reset(items.filter((/**
23119
+ * @param {?} item
23120
+ * @return {?}
23121
+ */
23122
+ function (item) { return item._parentMenu === _this; })));
23123
+ _this._directDescendantItems.notifyOnChanges();
23124
+ }));
23125
+ };
22835
23126
  /** @nocollapse */
22836
23127
  _MatMenuBase.ctorParameters = function () { return [
22837
23128
  { type: core.ElementRef },
@@ -22839,6 +23130,7 @@ var _MatMenuBase = /** @class */ (function () {
22839
23130
  { type: undefined, decorators: [{ type: core.Inject, args: [MAT_MENU_DEFAULT_OPTIONS,] }] }
22840
23131
  ]; };
22841
23132
  _MatMenuBase.propDecorators = {
23133
+ _allItems: [{ type: core.ContentChildren, args: [MatMenuItem, { descendants: true },] }],
22842
23134
  backdropClass: [{ type: core.Input }],
22843
23135
  xPosition: [{ type: core.Input }],
22844
23136
  yPosition: [{ type: core.Input }],
@@ -27831,9 +28123,9 @@ var MatProgressSpinner = /** @class */ (function (_super) {
27831
28123
  var _this = _super.call(this, _elementRef) || this;
27832
28124
  _this._elementRef = _elementRef;
27833
28125
  _this._document = _document;
28126
+ _this._diameter = BASE_SIZE;
27834
28127
  _this._value = 0;
27835
28128
  _this._fallbackAnimation = false;
27836
- _this._diameter = BASE_SIZE;
27837
28129
  /**
27838
28130
  * Mode of the progress circle
27839
28131
  */
@@ -28184,6 +28476,19 @@ var MatProgressSpinnerModule = /** @class */ (function () {
28184
28476
  * @fileoverview added by tsickle
28185
28477
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
28186
28478
  */
28479
+ /** @type {?} */
28480
+ var MAT_RADIO_DEFAULT_OPTIONS = new core.InjectionToken('mat-radio-default-options', {
28481
+ providedIn: 'root',
28482
+ factory: MAT_RADIO_DEFAULT_OPTIONS_FACTORY
28483
+ });
28484
+ /**
28485
+ * @return {?}
28486
+ */
28487
+ function MAT_RADIO_DEFAULT_OPTIONS_FACTORY() {
28488
+ return {
28489
+ color: 'accent'
28490
+ };
28491
+ }
28187
28492
  // Increasing integer for generating unique ids for radio components.
28188
28493
  /** @type {?} */
28189
28494
  var nextUniqueId$7 = 0;
@@ -28658,12 +28963,13 @@ var _MatRadioButtonMixinBase = mixinDisableRipple(mixinTabIndex(MatRadioButtonBa
28658
28963
  */
28659
28964
  var MatRadioButton = /** @class */ (function (_super) {
28660
28965
  __extends(MatRadioButton, _super);
28661
- function MatRadioButton(radioGroup, elementRef, _changeDetector, _focusMonitor, _radioDispatcher, _animationMode) {
28966
+ function MatRadioButton(radioGroup, elementRef, _changeDetector, _focusMonitor, _radioDispatcher, _animationMode, _providerOverride) {
28662
28967
  var _this = _super.call(this, elementRef) || this;
28663
28968
  _this._changeDetector = _changeDetector;
28664
28969
  _this._focusMonitor = _focusMonitor;
28665
28970
  _this._radioDispatcher = _radioDispatcher;
28666
28971
  _this._animationMode = _animationMode;
28972
+ _this._providerOverride = _providerOverride;
28667
28973
  _this._uniqueId = "mat-radio-" + ++nextUniqueId$7;
28668
28974
  /**
28669
28975
  * The unique ID for the radio button.
@@ -28837,7 +29143,9 @@ var MatRadioButton = /** @class */ (function (_super) {
28837
29143
  * @return {?}
28838
29144
  */
28839
29145
  function () {
28840
- return this._color || (this.radioGroup && this.radioGroup.color) || 'accent';
29146
+ return this._color ||
29147
+ (this.radioGroup && this.radioGroup.color) ||
29148
+ this._providerOverride && this._providerOverride.color || 'accent';
28841
29149
  },
28842
29150
  set: /**
28843
29151
  * @param {?} newValue
@@ -29041,7 +29349,8 @@ var MatRadioButton = /** @class */ (function (_super) {
29041
29349
  { type: core.ChangeDetectorRef },
29042
29350
  { type: a11y.FocusMonitor },
29043
29351
  { type: collections.UniqueSelectionDispatcher },
29044
- { type: String, decorators: [{ type: core.Optional }, { type: core.Inject, args: [animations.ANIMATION_MODULE_TYPE,] }] }
29352
+ { type: String, decorators: [{ type: core.Optional }, { type: core.Inject, args: [animations.ANIMATION_MODULE_TYPE,] }] },
29353
+ { type: undefined, decorators: [{ type: core.Optional }, { type: core.Inject, args: [MAT_RADIO_DEFAULT_OPTIONS,] }] }
29045
29354
  ]; };
29046
29355
  MatRadioButton.propDecorators = {
29047
29356
  id: [{ type: core.Input }],
@@ -31096,13 +31405,71 @@ var MatSlideToggle = /** @class */ (function (_super) {
31096
31405
  * @fileoverview added by tsickle
31097
31406
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
31098
31407
  */
31408
+ /** @type {?} */
31409
+ var MAT_SLIDE_TOGGLE_REQUIRED_VALIDATOR = {
31410
+ provide: forms.NG_VALIDATORS,
31411
+ useExisting: core.forwardRef((/**
31412
+ * @return {?}
31413
+ */
31414
+ function () { return MatSlideToggleRequiredValidator; })),
31415
+ multi: true
31416
+ };
31417
+ /**
31418
+ * Validator for Material slide-toggle components with the required attribute in a
31419
+ * template-driven form. The default validator for required form controls asserts
31420
+ * that the control value is not undefined but that is not appropriate for a slide-toggle
31421
+ * where the value is always defined.
31422
+ *
31423
+ * Required slide-toggle form controls are valid when checked.
31424
+ */
31425
+ var MatSlideToggleRequiredValidator = /** @class */ (function (_super) {
31426
+ __extends(MatSlideToggleRequiredValidator, _super);
31427
+ function MatSlideToggleRequiredValidator() {
31428
+ return _super !== null && _super.apply(this, arguments) || this;
31429
+ }
31430
+ MatSlideToggleRequiredValidator.decorators = [
31431
+ { type: core.Directive, args: [{
31432
+ selector: "mat-slide-toggle[required][formControlName],\n mat-slide-toggle[required][formControl], mat-slide-toggle[required][ngModel]",
31433
+ providers: [MAT_SLIDE_TOGGLE_REQUIRED_VALIDATOR],
31434
+ },] },
31435
+ ];
31436
+ return MatSlideToggleRequiredValidator;
31437
+ }(forms.CheckboxRequiredValidator));
31438
+
31439
+ /**
31440
+ * @fileoverview added by tsickle
31441
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
31442
+ */
31443
+ /**
31444
+ * This module is used by both original and MDC-based slide-toggle implementations.
31445
+ */
31446
+ var _MatSlideToggleRequiredValidatorModule = /** @class */ (function () {
31447
+ function _MatSlideToggleRequiredValidatorModule() {
31448
+ }
31449
+ _MatSlideToggleRequiredValidatorModule.decorators = [
31450
+ { type: core.NgModule, args: [{
31451
+ exports: [MatSlideToggleRequiredValidator],
31452
+ declarations: [MatSlideToggleRequiredValidator],
31453
+ },] },
31454
+ ];
31455
+ return _MatSlideToggleRequiredValidatorModule;
31456
+ }());
31099
31457
  var MatSlideToggleModule = /** @class */ (function () {
31100
31458
  function MatSlideToggleModule() {
31101
31459
  }
31102
31460
  MatSlideToggleModule.decorators = [
31103
31461
  { type: core.NgModule, args: [{
31104
- imports: [MatRippleModule, MatCommonModule, observers.ObserversModule],
31105
- exports: [MatSlideToggle, MatCommonModule],
31462
+ imports: [
31463
+ _MatSlideToggleRequiredValidatorModule,
31464
+ MatRippleModule,
31465
+ MatCommonModule,
31466
+ observers.ObserversModule,
31467
+ ],
31468
+ exports: [
31469
+ _MatSlideToggleRequiredValidatorModule,
31470
+ MatSlideToggle,
31471
+ MatCommonModule
31472
+ ],
31106
31473
  declarations: [MatSlideToggle],
31107
31474
  providers: [
31108
31475
  { provide: platformBrowser.HAMMER_GESTURE_CONFIG, useClass: GestureConfig }
@@ -35538,17 +35905,17 @@ MatTableDataSource = /** @class */ (function (_super) {
35538
35905
  return this.sortData(data.slice(), this.sort);
35539
35906
  };
35540
35907
  /**
35541
- * Returns a paged splice of the provided data array according to the provided MatPaginator's page
35908
+ * Returns a paged slice of the provided data array according to the provided MatPaginator's page
35542
35909
  * index and length. If there is no paginator provided, returns the data array as provided.
35543
35910
  */
35544
35911
  /**
35545
- * Returns a paged splice of the provided data array according to the provided MatPaginator's page
35912
+ * Returns a paged slice of the provided data array according to the provided MatPaginator's page
35546
35913
  * index and length. If there is no paginator provided, returns the data array as provided.
35547
35914
  * @param {?} data
35548
35915
  * @return {?}
35549
35916
  */
35550
35917
  MatTableDataSource.prototype._pageData = /**
35551
- * Returns a paged splice of the provided data array according to the provided MatPaginator's page
35918
+ * Returns a paged slice of the provided data array according to the provided MatPaginator's page
35552
35919
  * index and length. If there is no paginator provided, returns the data array as provided.
35553
35920
  * @param {?} data
35554
35921
  * @return {?}
@@ -35559,7 +35926,7 @@ MatTableDataSource = /** @class */ (function (_super) {
35559
35926
  }
35560
35927
  /** @type {?} */
35561
35928
  var startIndex = this.paginator.pageIndex * this.paginator.pageSize;
35562
- return data.slice().splice(startIndex, this.paginator.pageSize);
35929
+ return data.slice(startIndex, startIndex + this.paginator.pageSize);
35563
35930
  };
35564
35931
  /**
35565
35932
  * Updates the paginator to reflect the length of the filtered data, and makes sure that the page
@@ -35674,10 +36041,11 @@ function _MAT_INK_BAR_POSITIONER_FACTORY() {
35674
36041
  * \@docs-private
35675
36042
  */
35676
36043
  var MatInkBar = /** @class */ (function () {
35677
- function MatInkBar(_elementRef, _ngZone, _inkBarPositioner) {
36044
+ function MatInkBar(_elementRef, _ngZone, _inkBarPositioner, _animationMode) {
35678
36045
  this._elementRef = _elementRef;
35679
36046
  this._ngZone = _ngZone;
35680
36047
  this._inkBarPositioner = _inkBarPositioner;
36048
+ this._animationMode = _animationMode;
35681
36049
  }
35682
36050
  /**
35683
36051
  * Calculates the styles from the provided element in order to align the ink-bar to that element.
@@ -35767,6 +36135,7 @@ var MatInkBar = /** @class */ (function () {
35767
36135
  selector: 'mat-ink-bar',
35768
36136
  host: {
35769
36137
  'class': 'mat-ink-bar',
36138
+ '[class._mat-animation-noopable]': "_animationMode === 'NoopAnimations'",
35770
36139
  },
35771
36140
  },] },
35772
36141
  ];
@@ -35774,7 +36143,8 @@ var MatInkBar = /** @class */ (function () {
35774
36143
  MatInkBar.ctorParameters = function () { return [
35775
36144
  { type: core.ElementRef },
35776
36145
  { type: core.NgZone },
35777
- { type: undefined, decorators: [{ type: core.Inject, args: [_MAT_INK_BAR_POSITIONER,] }] }
36146
+ { type: undefined, decorators: [{ type: core.Inject, args: [_MAT_INK_BAR_POSITIONER,] }] },
36147
+ { type: String, decorators: [{ type: core.Optional }, { type: core.Inject, args: [animations.ANIMATION_MODULE_TYPE,] }] }
35778
36148
  ]; };
35779
36149
  return MatInkBar;
35780
36150
  }());
@@ -36402,76 +36772,57 @@ var HEADER_SCROLL_DELAY = 650;
36402
36772
  * @type {?}
36403
36773
  */
36404
36774
  var HEADER_SCROLL_INTERVAL = 100;
36405
- // Boilerplate for applying mixins to MatTabHeader.
36406
- /**
36407
- * \@docs-private
36408
- */
36409
- var
36410
- // Boilerplate for applying mixins to MatTabHeader.
36411
36775
  /**
36412
- * \@docs-private
36413
- */
36414
- MatTabHeaderBase = /** @class */ (function () {
36415
- function MatTabHeaderBase() {
36416
- }
36417
- return MatTabHeaderBase;
36418
- }());
36419
- /** @type {?} */
36420
- var _MatTabHeaderMixinBase = mixinDisableRipple(MatTabHeaderBase);
36421
- /**
36422
- * The header of the tab group which displays a list of all the tabs in the tab group. Includes
36423
- * an ink bar that follows the currently selected tab. When the tabs list's width exceeds the
36424
- * width of the header container, then arrows will be displayed to allow the user to scroll
36425
- * left and right across the header.
36426
- * \@docs-private
36776
+ * Base class for a tab header that supported pagination.
36777
+ * @abstract
36427
36778
  */
36428
- var MatTabHeader = /** @class */ (function (_super) {
36429
- __extends(MatTabHeader, _super);
36430
- function MatTabHeader(_elementRef, _changeDetectorRef, _viewportRuler, _dir, _ngZone, _platform) {
36431
- var _this = _super.call(this) || this;
36432
- _this._elementRef = _elementRef;
36433
- _this._changeDetectorRef = _changeDetectorRef;
36434
- _this._viewportRuler = _viewportRuler;
36435
- _this._dir = _dir;
36436
- _this._ngZone = _ngZone;
36437
- _this._platform = _platform;
36779
+ var MatPaginatedTabHeader = /** @class */ (function () {
36780
+ function MatPaginatedTabHeader(_elementRef, _changeDetectorRef, _viewportRuler, _dir, _ngZone, _platform, _animationMode) {
36781
+ var _this = this;
36782
+ this._elementRef = _elementRef;
36783
+ this._changeDetectorRef = _changeDetectorRef;
36784
+ this._viewportRuler = _viewportRuler;
36785
+ this._dir = _dir;
36786
+ this._ngZone = _ngZone;
36787
+ this._platform = _platform;
36788
+ this._animationMode = _animationMode;
36438
36789
  /**
36439
36790
  * The distance in pixels that the tab labels should be translated to the left.
36440
36791
  */
36441
- _this._scrollDistance = 0;
36792
+ this._scrollDistance = 0;
36442
36793
  /**
36443
36794
  * Whether the header should scroll to the selected index after the view has been checked.
36444
36795
  */
36445
- _this._selectedIndexChanged = false;
36796
+ this._selectedIndexChanged = false;
36446
36797
  /**
36447
36798
  * Emits when the component is destroyed.
36448
36799
  */
36449
- _this._destroyed = new rxjs.Subject();
36800
+ this._destroyed = new rxjs.Subject();
36450
36801
  /**
36451
36802
  * Whether the controls for pagination should be displayed
36452
36803
  */
36453
- _this._showPaginationControls = false;
36804
+ this._showPaginationControls = false;
36454
36805
  /**
36455
36806
  * Whether the tab list can be scrolled more towards the end of the tab label list.
36456
36807
  */
36457
- _this._disableScrollAfter = true;
36808
+ this._disableScrollAfter = true;
36458
36809
  /**
36459
36810
  * Whether the tab list can be scrolled more towards the beginning of the tab label list.
36460
36811
  */
36461
- _this._disableScrollBefore = true;
36812
+ this._disableScrollBefore = true;
36462
36813
  /**
36463
36814
  * Stream that will stop the automated scrolling.
36464
36815
  */
36465
- _this._stopScrolling = new rxjs.Subject();
36466
- _this._selectedIndex = 0;
36816
+ this._stopScrolling = new rxjs.Subject();
36817
+ this._selectedIndex = 0;
36467
36818
  /**
36468
36819
  * Event emitted when the option is selected.
36469
36820
  */
36470
- _this.selectFocusedIndex = new core.EventEmitter();
36821
+ this.selectFocusedIndex = new core.EventEmitter();
36471
36822
  /**
36472
36823
  * Event emitted when a label is focused.
36473
36824
  */
36474
- _this.indexFocused = new core.EventEmitter();
36825
+ this.indexFocused = new core.EventEmitter();
36475
36826
  // Bind the `mouseleave` event on the outside since it doesn't change anything in the view.
36476
36827
  _ngZone.runOutsideAngular((/**
36477
36828
  * @return {?}
@@ -36486,9 +36837,8 @@ var MatTabHeader = /** @class */ (function (_super) {
36486
36837
  _this._stopInterval();
36487
36838
  }));
36488
36839
  }));
36489
- return _this;
36490
36840
  }
36491
- Object.defineProperty(MatTabHeader.prototype, "selectedIndex", {
36841
+ Object.defineProperty(MatPaginatedTabHeader.prototype, "selectedIndex", {
36492
36842
  /** The index of the active tab. */
36493
36843
  get: /**
36494
36844
  * The index of the active tab.
@@ -36501,10 +36851,12 @@ var MatTabHeader = /** @class */ (function (_super) {
36501
36851
  */
36502
36852
  function (value) {
36503
36853
  value = coercion.coerceNumberProperty(value);
36504
- this._selectedIndexChanged = this._selectedIndex != value;
36505
- this._selectedIndex = value;
36506
- if (this._keyManager) {
36507
- this._keyManager.updateActiveItemIndex(value);
36854
+ if (this._selectedIndex != value) {
36855
+ this._selectedIndexChanged = true;
36856
+ this._selectedIndex = value;
36857
+ if (this._keyManager) {
36858
+ this._keyManager.updateActiveItemIndex(value);
36859
+ }
36508
36860
  }
36509
36861
  },
36510
36862
  enumerable: true,
@@ -36513,76 +36865,33 @@ var MatTabHeader = /** @class */ (function (_super) {
36513
36865
  /**
36514
36866
  * @return {?}
36515
36867
  */
36516
- MatTabHeader.prototype.ngAfterContentChecked = /**
36868
+ MatPaginatedTabHeader.prototype.ngAfterViewInit = /**
36517
36869
  * @return {?}
36518
36870
  */
36519
36871
  function () {
36520
- // If the number of tab labels have changed, check if scrolling should be enabled
36521
- if (this._tabLabelCount != this._labelWrappers.length) {
36522
- this.updatePagination();
36523
- this._tabLabelCount = this._labelWrappers.length;
36524
- this._changeDetectorRef.markForCheck();
36525
- }
36526
- // If the selected index has changed, scroll to the label and check if the scrolling controls
36527
- // should be disabled.
36528
- if (this._selectedIndexChanged) {
36529
- this._scrollToLabel(this._selectedIndex);
36530
- this._checkScrollingControls();
36531
- this._alignInkBarToSelectedTab();
36532
- this._selectedIndexChanged = false;
36533
- this._changeDetectorRef.markForCheck();
36534
- }
36535
- // If the scroll distance has been changed (tab selected, focused, scroll controls activated),
36536
- // then translate the header to reflect this.
36537
- if (this._scrollDistanceChanged) {
36538
- this._updateTabScrollPosition();
36539
- this._scrollDistanceChanged = false;
36540
- this._changeDetectorRef.markForCheck();
36541
- }
36542
- };
36543
- /** Handles keyboard events on the header. */
36544
- /**
36545
- * Handles keyboard events on the header.
36546
- * @param {?} event
36547
- * @return {?}
36548
- */
36549
- MatTabHeader.prototype._handleKeydown = /**
36550
- * Handles keyboard events on the header.
36551
- * @param {?} event
36552
- * @return {?}
36553
- */
36554
- function (event) {
36555
- // We don't handle any key bindings with a modifier key.
36556
- if (keycodes.hasModifierKey(event)) {
36557
- return;
36558
- }
36559
- switch (event.keyCode) {
36560
- case keycodes.HOME:
36561
- this._keyManager.setFirstItemActive();
36562
- event.preventDefault();
36563
- break;
36564
- case keycodes.END:
36565
- this._keyManager.setLastItemActive();
36566
- event.preventDefault();
36567
- break;
36568
- case keycodes.ENTER:
36569
- case keycodes.SPACE:
36570
- this.selectFocusedIndex.emit(this.focusIndex);
36571
- event.preventDefault();
36572
- break;
36573
- default:
36574
- this._keyManager.onKeydown(event);
36575
- }
36872
+ var _this = this;
36873
+ // We need to handle these events manually, because we want to bind passive event listeners.
36874
+ rxjs.fromEvent(this._previousPaginator.nativeElement, 'touchstart', passiveEventListenerOptions$1)
36875
+ .pipe(operators.takeUntil(this._destroyed))
36876
+ .subscribe((/**
36877
+ * @return {?}
36878
+ */
36879
+ function () {
36880
+ _this._handlePaginatorPress('before');
36881
+ }));
36882
+ rxjs.fromEvent(this._nextPaginator.nativeElement, 'touchstart', passiveEventListenerOptions$1)
36883
+ .pipe(operators.takeUntil(this._destroyed))
36884
+ .subscribe((/**
36885
+ * @return {?}
36886
+ */
36887
+ function () {
36888
+ _this._handlePaginatorPress('after');
36889
+ }));
36576
36890
  };
36577
36891
  /**
36578
- * Aligns the ink bar to the selected tab on load.
36579
- */
36580
- /**
36581
- * Aligns the ink bar to the selected tab on load.
36582
36892
  * @return {?}
36583
36893
  */
36584
- MatTabHeader.prototype.ngAfterContentInit = /**
36585
- * Aligns the ink bar to the selected tab on load.
36894
+ MatPaginatedTabHeader.prototype.ngAfterContentInit = /**
36586
36895
  * @return {?}
36587
36896
  */
36588
36897
  function () {
@@ -36599,7 +36908,7 @@ var MatTabHeader = /** @class */ (function (_super) {
36599
36908
  _this.updatePagination();
36600
36909
  _this._alignInkBarToSelectedTab();
36601
36910
  });
36602
- this._keyManager = new a11y.FocusKeyManager(this._labelWrappers)
36911
+ this._keyManager = new a11y.FocusKeyManager(this._items)
36603
36912
  .withHorizontalOrientation(this._getLayoutDirection())
36604
36913
  .withWrap();
36605
36914
  this._keyManager.updateActiveItem(0);
@@ -36608,7 +36917,7 @@ var MatTabHeader = /** @class */ (function (_super) {
36608
36917
  typeof requestAnimationFrame !== 'undefined' ? requestAnimationFrame(realign) : realign();
36609
36918
  // On dir change or window resize, realign the ink bar and update the orientation of
36610
36919
  // the key manager if the direction has changed.
36611
- rxjs.merge(dirChange, resize).pipe(operators.takeUntil(this._destroyed)).subscribe((/**
36920
+ rxjs.merge(dirChange, resize, this._items.changes).pipe(operators.takeUntil(this._destroyed)).subscribe((/**
36612
36921
  * @return {?}
36613
36922
  */
36614
36923
  function () {
@@ -36630,33 +36939,37 @@ var MatTabHeader = /** @class */ (function (_super) {
36630
36939
  /**
36631
36940
  * @return {?}
36632
36941
  */
36633
- MatTabHeader.prototype.ngAfterViewInit = /**
36942
+ MatPaginatedTabHeader.prototype.ngAfterContentChecked = /**
36634
36943
  * @return {?}
36635
36944
  */
36636
36945
  function () {
36637
- var _this = this;
36638
- // We need to handle these events manually, because we want to bind passive event listeners.
36639
- rxjs.fromEvent(this._previousPaginator.nativeElement, 'touchstart', passiveEventListenerOptions$1)
36640
- .pipe(operators.takeUntil(this._destroyed))
36641
- .subscribe((/**
36642
- * @return {?}
36643
- */
36644
- function () {
36645
- _this._handlePaginatorPress('before');
36646
- }));
36647
- rxjs.fromEvent(this._nextPaginator.nativeElement, 'touchstart', passiveEventListenerOptions$1)
36648
- .pipe(operators.takeUntil(this._destroyed))
36649
- .subscribe((/**
36650
- * @return {?}
36651
- */
36652
- function () {
36653
- _this._handlePaginatorPress('after');
36654
- }));
36946
+ // If the number of tab labels have changed, check if scrolling should be enabled
36947
+ if (this._tabLabelCount != this._items.length) {
36948
+ this.updatePagination();
36949
+ this._tabLabelCount = this._items.length;
36950
+ this._changeDetectorRef.markForCheck();
36951
+ }
36952
+ // If the selected index has changed, scroll to the label and check if the scrolling controls
36953
+ // should be disabled.
36954
+ if (this._selectedIndexChanged) {
36955
+ this._scrollToLabel(this._selectedIndex);
36956
+ this._checkScrollingControls();
36957
+ this._alignInkBarToSelectedTab();
36958
+ this._selectedIndexChanged = false;
36959
+ this._changeDetectorRef.markForCheck();
36960
+ }
36961
+ // If the scroll distance has been changed (tab selected, focused, scroll controls activated),
36962
+ // then translate the header to reflect this.
36963
+ if (this._scrollDistanceChanged) {
36964
+ this._updateTabScrollPosition();
36965
+ this._scrollDistanceChanged = false;
36966
+ this._changeDetectorRef.markForCheck();
36967
+ }
36655
36968
  };
36656
36969
  /**
36657
36970
  * @return {?}
36658
36971
  */
36659
- MatTabHeader.prototype.ngOnDestroy = /**
36972
+ MatPaginatedTabHeader.prototype.ngOnDestroy = /**
36660
36973
  * @return {?}
36661
36974
  */
36662
36975
  function () {
@@ -36664,6 +36977,40 @@ var MatTabHeader = /** @class */ (function (_super) {
36664
36977
  this._destroyed.complete();
36665
36978
  this._stopScrolling.complete();
36666
36979
  };
36980
+ /** Handles keyboard events on the header. */
36981
+ /**
36982
+ * Handles keyboard events on the header.
36983
+ * @param {?} event
36984
+ * @return {?}
36985
+ */
36986
+ MatPaginatedTabHeader.prototype._handleKeydown = /**
36987
+ * Handles keyboard events on the header.
36988
+ * @param {?} event
36989
+ * @return {?}
36990
+ */
36991
+ function (event) {
36992
+ // We don't handle any key bindings with a modifier key.
36993
+ if (keycodes.hasModifierKey(event)) {
36994
+ return;
36995
+ }
36996
+ switch (event.keyCode) {
36997
+ case keycodes.HOME:
36998
+ this._keyManager.setFirstItemActive();
36999
+ event.preventDefault();
37000
+ break;
37001
+ case keycodes.END:
37002
+ this._keyManager.setLastItemActive();
37003
+ event.preventDefault();
37004
+ break;
37005
+ case keycodes.ENTER:
37006
+ case keycodes.SPACE:
37007
+ this.selectFocusedIndex.emit(this.focusIndex);
37008
+ this._itemSelected(event);
37009
+ break;
37010
+ default:
37011
+ this._keyManager.onKeydown(event);
37012
+ }
37013
+ };
36667
37014
  /**
36668
37015
  * Callback for when the MutationObserver detects that the content has changed.
36669
37016
  */
@@ -36671,7 +37018,7 @@ var MatTabHeader = /** @class */ (function (_super) {
36671
37018
  * Callback for when the MutationObserver detects that the content has changed.
36672
37019
  * @return {?}
36673
37020
  */
36674
- MatTabHeader.prototype._onContentChanges = /**
37021
+ MatPaginatedTabHeader.prototype._onContentChanges = /**
36675
37022
  * Callback for when the MutationObserver detects that the content has changed.
36676
37023
  * @return {?}
36677
37024
  */
@@ -36683,7 +37030,7 @@ var MatTabHeader = /** @class */ (function (_super) {
36683
37030
  // will fire even if the text content didn't change which is inefficient and is prone
36684
37031
  // to infinite loops if a poorly constructed expression is passed in (see #14249).
36685
37032
  if (textContent !== this._currentTextContent) {
36686
- this._currentTextContent = textContent;
37033
+ this._currentTextContent = textContent || '';
36687
37034
  // The content observer runs outside the `NgZone` by default, which
36688
37035
  // means that we need to bring the callback back in ourselves.
36689
37036
  this._ngZone.run((/**
@@ -36699,22 +37046,22 @@ var MatTabHeader = /** @class */ (function (_super) {
36699
37046
  /**
36700
37047
  * Updates the view whether pagination should be enabled or not.
36701
37048
  *
36702
- * WARNING: Calling this method can be very costly in terms of performance. It should be called
37049
+ * WARNING: Calling this method can be very costly in terms of performance. It should be called
36703
37050
  * as infrequently as possible from outside of the Tabs component as it causes a reflow of the
36704
37051
  * page.
36705
37052
  */
36706
37053
  /**
36707
37054
  * Updates the view whether pagination should be enabled or not.
36708
37055
  *
36709
- * WARNING: Calling this method can be very costly in terms of performance. It should be called
37056
+ * WARNING: Calling this method can be very costly in terms of performance. It should be called
36710
37057
  * as infrequently as possible from outside of the Tabs component as it causes a reflow of the
36711
37058
  * page.
36712
37059
  * @return {?}
36713
37060
  */
36714
- MatTabHeader.prototype.updatePagination = /**
37061
+ MatPaginatedTabHeader.prototype.updatePagination = /**
36715
37062
  * Updates the view whether pagination should be enabled or not.
36716
37063
  *
36717
- * WARNING: Calling this method can be very costly in terms of performance. It should be called
37064
+ * WARNING: Calling this method can be very costly in terms of performance. It should be called
36718
37065
  * as infrequently as possible from outside of the Tabs component as it causes a reflow of the
36719
37066
  * page.
36720
37067
  * @return {?}
@@ -36724,7 +37071,7 @@ var MatTabHeader = /** @class */ (function (_super) {
36724
37071
  this._checkScrollingControls();
36725
37072
  this._updateTabScrollPosition();
36726
37073
  };
36727
- Object.defineProperty(MatTabHeader.prototype, "focusIndex", {
37074
+ Object.defineProperty(MatPaginatedTabHeader.prototype, "focusIndex", {
36728
37075
  /** Tracks which element has focus; used for keyboard navigation */
36729
37076
  get: /**
36730
37077
  * Tracks which element has focus; used for keyboard navigation
@@ -36758,18 +37105,18 @@ var MatTabHeader = /** @class */ (function (_super) {
36758
37105
  * @param {?} index
36759
37106
  * @return {?}
36760
37107
  */
36761
- MatTabHeader.prototype._isValidIndex = /**
37108
+ MatPaginatedTabHeader.prototype._isValidIndex = /**
36762
37109
  * Determines if an index is valid. If the tabs are not ready yet, we assume that the user is
36763
37110
  * providing a valid index and return true.
36764
37111
  * @param {?} index
36765
37112
  * @return {?}
36766
37113
  */
36767
37114
  function (index) {
36768
- if (!this._labelWrappers) {
37115
+ if (!this._items) {
36769
37116
  return true;
36770
37117
  }
36771
37118
  /** @type {?} */
36772
- var tab = this._labelWrappers ? this._labelWrappers.toArray()[index] : null;
37119
+ var tab = this._items ? this._items.toArray()[index] : null;
36773
37120
  return !!tab && !tab.disabled;
36774
37121
  };
36775
37122
  /**
@@ -36782,7 +37129,7 @@ var MatTabHeader = /** @class */ (function (_super) {
36782
37129
  * @param {?} tabIndex
36783
37130
  * @return {?}
36784
37131
  */
36785
- MatTabHeader.prototype._setTabFocus = /**
37132
+ MatPaginatedTabHeader.prototype._setTabFocus = /**
36786
37133
  * Sets focus on the HTML element for the label wrapper and scrolls it into the view if
36787
37134
  * scrolling is enabled.
36788
37135
  * @param {?} tabIndex
@@ -36792,8 +37139,8 @@ var MatTabHeader = /** @class */ (function (_super) {
36792
37139
  if (this._showPaginationControls) {
36793
37140
  this._scrollToLabel(tabIndex);
36794
37141
  }
36795
- if (this._labelWrappers && this._labelWrappers.length) {
36796
- this._labelWrappers.toArray()[tabIndex].focus();
37142
+ if (this._items && this._items.length) {
37143
+ this._items.toArray()[tabIndex].focus();
36797
37144
  // Do not let the browser manage scrolling to focus the element, this will be handled
36798
37145
  // by using translation. In LTR, the scroll left should be 0. In RTL, the scroll width
36799
37146
  // should be the full width minus the offset width.
@@ -36814,7 +37161,7 @@ var MatTabHeader = /** @class */ (function (_super) {
36814
37161
  * The layout direction of the containing app.
36815
37162
  * @return {?}
36816
37163
  */
36817
- MatTabHeader.prototype._getLayoutDirection = /**
37164
+ MatPaginatedTabHeader.prototype._getLayoutDirection = /**
36818
37165
  * The layout direction of the containing app.
36819
37166
  * @return {?}
36820
37167
  */
@@ -36826,7 +37173,7 @@ var MatTabHeader = /** @class */ (function (_super) {
36826
37173
  * Performs the CSS transformation on the tab list that will cause the list to scroll.
36827
37174
  * @return {?}
36828
37175
  */
36829
- MatTabHeader.prototype._updateTabScrollPosition = /**
37176
+ MatPaginatedTabHeader.prototype._updateTabScrollPosition = /**
36830
37177
  * Performs the CSS transformation on the tab list that will cause the list to scroll.
36831
37178
  * @return {?}
36832
37179
  */
@@ -36848,11 +37195,12 @@ var MatTabHeader = /** @class */ (function (_super) {
36848
37195
  // position to be thrown off in some cases. We have to reset it ourselves to ensure that
36849
37196
  // it doesn't get thrown off. Note that we scope it only to IE and Edge, because messing
36850
37197
  // with the scroll position throws off Chrome 71+ in RTL mode (see #14689).
36851
- if (platform$$1.TRIDENT || platform$$1.EDGE) {
37198
+ // @breaking-change 9.0.0 Remove null check for `platform` after it can no longer be undefined.
37199
+ if (platform$$1 && (platform$$1.TRIDENT || platform$$1.EDGE)) {
36852
37200
  this._tabListContainer.nativeElement.scrollLeft = 0;
36853
37201
  }
36854
37202
  };
36855
- Object.defineProperty(MatTabHeader.prototype, "scrollDistance", {
37203
+ Object.defineProperty(MatPaginatedTabHeader.prototype, "scrollDistance", {
36856
37204
  /** Sets the distance in pixels that the tab header should be transformed in the X-axis. */
36857
37205
  get: /**
36858
37206
  * Sets the distance in pixels that the tab header should be transformed in the X-axis.
@@ -36887,7 +37235,7 @@ var MatTabHeader = /** @class */ (function (_super) {
36887
37235
  * @param {?} direction
36888
37236
  * @return {?}
36889
37237
  */
36890
- MatTabHeader.prototype._scrollHeader = /**
37238
+ MatPaginatedTabHeader.prototype._scrollHeader = /**
36891
37239
  * Moves the tab list in the 'before' or 'after' direction (towards the beginning of the list or
36892
37240
  * the end of the list, respectively). The distance to scroll is computed to be a third of the
36893
37241
  * length of the tab list view window.
@@ -36911,7 +37259,7 @@ var MatTabHeader = /** @class */ (function (_super) {
36911
37259
  * @param {?} direction
36912
37260
  * @return {?}
36913
37261
  */
36914
- MatTabHeader.prototype._handlePaginatorClick = /**
37262
+ MatPaginatedTabHeader.prototype._handlePaginatorClick = /**
36915
37263
  * Handles click events on the pagination arrows.
36916
37264
  * @param {?} direction
36917
37265
  * @return {?}
@@ -36934,7 +37282,7 @@ var MatTabHeader = /** @class */ (function (_super) {
36934
37282
  * @param {?} labelIndex
36935
37283
  * @return {?}
36936
37284
  */
36937
- MatTabHeader.prototype._scrollToLabel = /**
37285
+ MatPaginatedTabHeader.prototype._scrollToLabel = /**
36938
37286
  * Moves the tab list such that the desired tab label (marked by index) is moved into view.
36939
37287
  *
36940
37288
  * This is an expensive call that forces a layout reflow to compute box and scroll metrics and
@@ -36944,24 +37292,25 @@ var MatTabHeader = /** @class */ (function (_super) {
36944
37292
  */
36945
37293
  function (labelIndex) {
36946
37294
  /** @type {?} */
36947
- var selectedLabel = this._labelWrappers ? this._labelWrappers.toArray()[labelIndex] : null;
37295
+ var selectedLabel = this._items ? this._items.toArray()[labelIndex] : null;
36948
37296
  if (!selectedLabel) {
36949
37297
  return;
36950
37298
  }
36951
37299
  // The view length is the visible width of the tab labels.
36952
37300
  /** @type {?} */
36953
37301
  var viewLength = this._tabListContainer.nativeElement.offsetWidth;
37302
+ var _a = selectedLabel.elementRef.nativeElement, offsetLeft = _a.offsetLeft, offsetWidth = _a.offsetWidth;
36954
37303
  /** @type {?} */
36955
37304
  var labelBeforePos;
36956
37305
  /** @type {?} */
36957
37306
  var labelAfterPos;
36958
37307
  if (this._getLayoutDirection() == 'ltr') {
36959
- labelBeforePos = selectedLabel.getOffsetLeft();
36960
- labelAfterPos = labelBeforePos + selectedLabel.getOffsetWidth();
37308
+ labelBeforePos = offsetLeft;
37309
+ labelAfterPos = labelBeforePos + offsetWidth;
36961
37310
  }
36962
37311
  else {
36963
- labelAfterPos = this._tabList.nativeElement.offsetWidth - selectedLabel.getOffsetLeft();
36964
- labelBeforePos = labelAfterPos - selectedLabel.getOffsetWidth();
37312
+ labelAfterPos = this._tabList.nativeElement.offsetWidth - offsetLeft;
37313
+ labelBeforePos = labelAfterPos - offsetWidth;
36965
37314
  }
36966
37315
  /** @type {?} */
36967
37316
  var beforeVisiblePos = this.scrollDistance;
@@ -36993,7 +37342,7 @@ var MatTabHeader = /** @class */ (function (_super) {
36993
37342
  * should be called sparingly.
36994
37343
  * @return {?}
36995
37344
  */
36996
- MatTabHeader.prototype._checkPaginationEnabled = /**
37345
+ MatPaginatedTabHeader.prototype._checkPaginationEnabled = /**
36997
37346
  * Evaluate whether the pagination controls should be displayed. If the scroll width of the
36998
37347
  * tab list is wider than the size of the header container, then the pagination controls should
36999
37348
  * be shown.
@@ -37032,7 +37381,7 @@ var MatTabHeader = /** @class */ (function (_super) {
37032
37381
  * should be called sparingly.
37033
37382
  * @return {?}
37034
37383
  */
37035
- MatTabHeader.prototype._checkScrollingControls = /**
37384
+ MatPaginatedTabHeader.prototype._checkScrollingControls = /**
37036
37385
  * Evaluate whether the before and after controls should be enabled or disabled.
37037
37386
  * If the header is at the beginning of the list (scroll distance is equal to 0) then disable the
37038
37387
  * before button. If the header is at the end of the list (scroll distance is equal to the
@@ -37063,7 +37412,7 @@ var MatTabHeader = /** @class */ (function (_super) {
37063
37412
  * should be called sparingly.
37064
37413
  * @return {?}
37065
37414
  */
37066
- MatTabHeader.prototype._getMaxScrollDistance = /**
37415
+ MatPaginatedTabHeader.prototype._getMaxScrollDistance = /**
37067
37416
  * Determines what is the maximum length in pixels that can be set for the scroll distance. This
37068
37417
  * is equal to the difference in width between the tab list container and tab header container.
37069
37418
  *
@@ -37083,23 +37432,29 @@ var MatTabHeader = /** @class */ (function (_super) {
37083
37432
  * Tells the ink-bar to align itself to the current label wrapper
37084
37433
  * @return {?}
37085
37434
  */
37086
- MatTabHeader.prototype._alignInkBarToSelectedTab = /**
37435
+ MatPaginatedTabHeader.prototype._alignInkBarToSelectedTab = /**
37087
37436
  * Tells the ink-bar to align itself to the current label wrapper
37088
37437
  * @return {?}
37089
37438
  */
37090
37439
  function () {
37091
37440
  /** @type {?} */
37092
- var selectedLabelWrapper = this._labelWrappers && this._labelWrappers.length ?
37093
- this._labelWrappers.toArray()[this.selectedIndex].elementRef.nativeElement :
37094
- null;
37095
- this._inkBar.alignToElement((/** @type {?} */ (selectedLabelWrapper)));
37441
+ var selectedItem = this._items && this._items.length ?
37442
+ this._items.toArray()[this.selectedIndex] : null;
37443
+ /** @type {?} */
37444
+ var selectedLabelWrapper = selectedItem ? selectedItem.elementRef.nativeElement : null;
37445
+ if (selectedLabelWrapper) {
37446
+ this._inkBar.alignToElement(selectedLabelWrapper);
37447
+ }
37448
+ else {
37449
+ this._inkBar.hide();
37450
+ }
37096
37451
  };
37097
37452
  /** Stops the currently-running paginator interval. */
37098
37453
  /**
37099
37454
  * Stops the currently-running paginator interval.
37100
37455
  * @return {?}
37101
37456
  */
37102
- MatTabHeader.prototype._stopInterval = /**
37457
+ MatPaginatedTabHeader.prototype._stopInterval = /**
37103
37458
  * Stops the currently-running paginator interval.
37104
37459
  * @return {?}
37105
37460
  */
@@ -37117,7 +37472,7 @@ var MatTabHeader = /** @class */ (function (_super) {
37117
37472
  * @param {?} direction In which direction the paginator should be scrolled.
37118
37473
  * @return {?}
37119
37474
  */
37120
- MatTabHeader.prototype._handlePaginatorPress = /**
37475
+ MatPaginatedTabHeader.prototype._handlePaginatorPress = /**
37121
37476
  * Handles the user pressing down on one of the paginators.
37122
37477
  * Starts scrolling the header after a certain amount of time.
37123
37478
  * @param {?} direction In which direction the paginator should be scrolled.
@@ -37153,7 +37508,7 @@ var MatTabHeader = /** @class */ (function (_super) {
37153
37508
  * @param {?} position Position to which to scroll.
37154
37509
  * @return {?} Information on the current scroll distance and the maximum.
37155
37510
  */
37156
- MatTabHeader.prototype._scrollTo = /**
37511
+ MatPaginatedTabHeader.prototype._scrollTo = /**
37157
37512
  * Scrolls the header to a given position.
37158
37513
  * @private
37159
37514
  * @param {?} position Position to which to scroll.
@@ -37169,11 +37524,73 @@ var MatTabHeader = /** @class */ (function (_super) {
37169
37524
  this._checkScrollingControls();
37170
37525
  return { maxScrollDistance: maxScrollDistance, distance: this._scrollDistance };
37171
37526
  };
37527
+ /** @nocollapse */
37528
+ MatPaginatedTabHeader.ctorParameters = function () { return [
37529
+ { type: core.ElementRef },
37530
+ { type: core.ChangeDetectorRef },
37531
+ { type: scrolling.ViewportRuler },
37532
+ { type: bidi.Directionality, decorators: [{ type: core.Optional }] },
37533
+ { type: core.NgZone },
37534
+ { type: platform.Platform },
37535
+ { type: String }
37536
+ ]; };
37537
+ return MatPaginatedTabHeader;
37538
+ }());
37539
+
37540
+ /**
37541
+ * @fileoverview added by tsickle
37542
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
37543
+ */
37544
+ /**
37545
+ * The header of the tab group which displays a list of all the tabs in the tab group. Includes
37546
+ * an ink bar that follows the currently selected tab. When the tabs list's width exceeds the
37547
+ * width of the header container, then arrows will be displayed to allow the user to scroll
37548
+ * left and right across the header.
37549
+ * \@docs-private
37550
+ */
37551
+ var MatTabHeader = /** @class */ (function (_super) {
37552
+ __extends(MatTabHeader, _super);
37553
+ function MatTabHeader(elementRef, changeDetectorRef, viewportRuler, dir, ngZone, platform$$1,
37554
+ // @breaking-change 9.0.0 `_animationMode` parameter to be made required.
37555
+ animationMode) {
37556
+ var _this = _super.call(this, elementRef, changeDetectorRef, viewportRuler, dir, ngZone, platform$$1, animationMode) || this;
37557
+ _this._disableRipple = false;
37558
+ return _this;
37559
+ }
37560
+ Object.defineProperty(MatTabHeader.prototype, "disableRipple", {
37561
+ /** Whether the ripple effect is disabled or not. */
37562
+ get: /**
37563
+ * Whether the ripple effect is disabled or not.
37564
+ * @return {?}
37565
+ */
37566
+ function () { return this._disableRipple; },
37567
+ set: /**
37568
+ * @param {?} value
37569
+ * @return {?}
37570
+ */
37571
+ function (value) { this._disableRipple = coercion.coerceBooleanProperty(value); },
37572
+ enumerable: true,
37573
+ configurable: true
37574
+ });
37575
+ /**
37576
+ * @protected
37577
+ * @param {?} event
37578
+ * @return {?}
37579
+ */
37580
+ MatTabHeader.prototype._itemSelected = /**
37581
+ * @protected
37582
+ * @param {?} event
37583
+ * @return {?}
37584
+ */
37585
+ function (event) {
37586
+ event.preventDefault();
37587
+ };
37172
37588
  MatTabHeader.decorators = [
37173
37589
  { type: core.Component, args: [{selector: 'mat-tab-header',
37174
- template: "<div class=\"mat-tab-header-pagination mat-tab-header-pagination-before mat-elevation-z4\" #previousPaginator aria-hidden=\"true\" mat-ripple [matRippleDisabled]=\"_disableScrollBefore || disableRipple\" [class.mat-tab-header-pagination-disabled]=\"_disableScrollBefore\" (click)=\"_handlePaginatorClick('before')\" (mousedown)=\"_handlePaginatorPress('before')\" (touchend)=\"_stopInterval()\"><div class=\"mat-tab-header-pagination-chevron\"></div></div><div class=\"mat-tab-label-container\" #tabListContainer (keydown)=\"_handleKeydown($event)\"><div class=\"mat-tab-list\" #tabList role=\"tablist\" (cdkObserveContent)=\"_onContentChanges()\"><div class=\"mat-tab-labels\"><ng-content></ng-content></div><mat-ink-bar></mat-ink-bar></div></div><div class=\"mat-tab-header-pagination mat-tab-header-pagination-after mat-elevation-z4\" #nextPaginator aria-hidden=\"true\" mat-ripple [matRippleDisabled]=\"_disableScrollAfter || disableRipple\" [class.mat-tab-header-pagination-disabled]=\"_disableScrollAfter\" (mousedown)=\"_handlePaginatorPress('after')\" (click)=\"_handlePaginatorClick('after')\" (touchend)=\"_stopInterval()\"><div class=\"mat-tab-header-pagination-chevron\"></div></div>",
37175
- styles: [".mat-tab-header{display:flex;overflow:hidden;position:relative;flex-shrink:0}.mat-tab-label{height:48px;padding:0 24px;cursor:pointer;box-sizing:border-box;opacity:.6;min-width:160px;text-align:center;display:inline-flex;justify-content:center;align-items:center;white-space:nowrap;position:relative}.mat-tab-label:focus{outline:0}.mat-tab-label:focus:not(.mat-tab-disabled){opacity:1}@media (-ms-high-contrast:active){.mat-tab-label:focus{outline:dotted 2px}}.mat-tab-label.mat-tab-disabled{cursor:default}@media (-ms-high-contrast:active){.mat-tab-label.mat-tab-disabled{opacity:.5}}.mat-tab-label .mat-tab-label-content{display:inline-flex;justify-content:center;align-items:center;white-space:nowrap}@media (-ms-high-contrast:active){.mat-tab-label{opacity:1}}@media (max-width:599px){.mat-tab-label{min-width:72px}}.mat-ink-bar{position:absolute;bottom:0;height:2px;transition:.5s cubic-bezier(.35,0,.25,1)}.mat-tab-group-inverted-header .mat-ink-bar{bottom:auto;top:0}@media (-ms-high-contrast:active){.mat-ink-bar{outline:solid 2px;height:0}}.mat-tab-header-pagination{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;position:relative;display:none;justify-content:center;align-items:center;min-width:32px;cursor:pointer;z-index:2;-webkit-tap-highlight-color:transparent;touch-action:none}.mat-tab-header-pagination-controls-enabled .mat-tab-header-pagination{display:flex}.mat-tab-header-pagination-before,.mat-tab-header-rtl .mat-tab-header-pagination-after{padding-left:4px}.mat-tab-header-pagination-before .mat-tab-header-pagination-chevron,.mat-tab-header-rtl .mat-tab-header-pagination-after .mat-tab-header-pagination-chevron{transform:rotate(-135deg)}.mat-tab-header-pagination-after,.mat-tab-header-rtl .mat-tab-header-pagination-before{padding-right:4px}.mat-tab-header-pagination-after .mat-tab-header-pagination-chevron,.mat-tab-header-rtl .mat-tab-header-pagination-before .mat-tab-header-pagination-chevron{transform:rotate(45deg)}.mat-tab-header-pagination-chevron{border-style:solid;border-width:2px 2px 0 0;content:'';height:8px;width:8px}.mat-tab-header-pagination-disabled{box-shadow:none;cursor:default}.mat-tab-label-container{display:flex;flex-grow:1;overflow:hidden;z-index:1}.mat-tab-list{flex-grow:1;position:relative;transition:transform .5s cubic-bezier(.35,0,.25,1)}.mat-tab-labels{display:flex}[mat-align-tabs=center] .mat-tab-labels{justify-content:center}[mat-align-tabs=end] .mat-tab-labels{justify-content:flex-end}"],
37176
- inputs: ['disableRipple'],
37590
+ template: "<div class=\"mat-tab-header-pagination mat-tab-header-pagination-before mat-elevation-z4\" #previousPaginator aria-hidden=\"true\" mat-ripple [matRippleDisabled]=\"_disableScrollBefore || disableRipple\" [class.mat-tab-header-pagination-disabled]=\"_disableScrollBefore\" (click)=\"_handlePaginatorClick('before')\" (mousedown)=\"_handlePaginatorPress('before')\" (touchend)=\"_stopInterval()\"><div class=\"mat-tab-header-pagination-chevron\"></div></div><div class=\"mat-tab-label-container\" #tabListContainer (keydown)=\"_handleKeydown($event)\"><div #tabList class=\"mat-tab-list\" [class._mat-animation-noopable]=\"_animationMode === 'NoopAnimations'\" role=\"tablist\" (cdkObserveContent)=\"_onContentChanges()\"><div class=\"mat-tab-labels\"><ng-content></ng-content></div><mat-ink-bar></mat-ink-bar></div></div><div class=\"mat-tab-header-pagination mat-tab-header-pagination-after mat-elevation-z4\" #nextPaginator aria-hidden=\"true\" mat-ripple [matRippleDisabled]=\"_disableScrollAfter || disableRipple\" [class.mat-tab-header-pagination-disabled]=\"_disableScrollAfter\" (mousedown)=\"_handlePaginatorPress('after')\" (click)=\"_handlePaginatorClick('after')\" (touchend)=\"_stopInterval()\"><div class=\"mat-tab-header-pagination-chevron\"></div></div>",
37591
+ styles: [".mat-tab-header{display:flex;overflow:hidden;position:relative;flex-shrink:0}.mat-tab-header-pagination{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;position:relative;display:none;justify-content:center;align-items:center;min-width:32px;cursor:pointer;z-index:2;-webkit-tap-highlight-color:transparent;touch-action:none}.mat-tab-header-pagination-controls-enabled .mat-tab-header-pagination{display:flex}.mat-tab-header-pagination-before,.mat-tab-header-rtl .mat-tab-header-pagination-after{padding-left:4px}.mat-tab-header-pagination-before .mat-tab-header-pagination-chevron,.mat-tab-header-rtl .mat-tab-header-pagination-after .mat-tab-header-pagination-chevron{transform:rotate(-135deg)}.mat-tab-header-pagination-after,.mat-tab-header-rtl .mat-tab-header-pagination-before{padding-right:4px}.mat-tab-header-pagination-after .mat-tab-header-pagination-chevron,.mat-tab-header-rtl .mat-tab-header-pagination-before .mat-tab-header-pagination-chevron{transform:rotate(45deg)}.mat-tab-header-pagination-chevron{border-style:solid;border-width:2px 2px 0 0;content:'';height:8px;width:8px}.mat-tab-header-pagination-disabled{box-shadow:none;cursor:default}.mat-tab-list{flex-grow:1;position:relative;transition:transform .5s cubic-bezier(.35,0,.25,1)}.mat-ink-bar{position:absolute;bottom:0;height:2px;transition:.5s cubic-bezier(.35,0,.25,1)}._mat-animation-noopable.mat-ink-bar{transition:none;animation:none}.mat-tab-group-inverted-header .mat-ink-bar{bottom:auto;top:0}@media (-ms-high-contrast:active){.mat-ink-bar{outline:solid 2px;height:0}}.mat-tab-labels{display:flex}[mat-align-tabs=center] .mat-tab-labels{justify-content:center}[mat-align-tabs=end] .mat-tab-labels{justify-content:flex-end}.mat-tab-label-container{display:flex;flex-grow:1;overflow:hidden;z-index:1}._mat-animation-noopable.mat-tab-list{transition:none;animation:none}.mat-tab-label{height:48px;padding:0 24px;cursor:pointer;box-sizing:border-box;opacity:.6;min-width:160px;text-align:center;display:inline-flex;justify-content:center;align-items:center;white-space:nowrap;position:relative}.mat-tab-label:focus{outline:0}.mat-tab-label:focus:not(.mat-tab-disabled){opacity:1}@media (-ms-high-contrast:active){.mat-tab-label:focus{outline:dotted 2px}}.mat-tab-label.mat-tab-disabled{cursor:default}@media (-ms-high-contrast:active){.mat-tab-label.mat-tab-disabled{opacity:.5}}.mat-tab-label .mat-tab-label-content{display:inline-flex;justify-content:center;align-items:center;white-space:nowrap}@media (-ms-high-contrast:active){.mat-tab-label{opacity:1}}@media (max-width:599px){.mat-tab-label{min-width:72px}}"],
37592
+ inputs: ['selectedIndex'],
37593
+ outputs: ['selectFocusedIndex', 'indexFocused'],
37177
37594
  encapsulation: core.ViewEncapsulation.None,
37178
37595
  changeDetection: core.ChangeDetectionStrategy.OnPush,
37179
37596
  host: {
@@ -37190,21 +37607,20 @@ var MatTabHeader = /** @class */ (function (_super) {
37190
37607
  { type: scrolling.ViewportRuler },
37191
37608
  { type: bidi.Directionality, decorators: [{ type: core.Optional }] },
37192
37609
  { type: core.NgZone },
37193
- { type: platform.Platform }
37610
+ { type: platform.Platform },
37611
+ { type: String, decorators: [{ type: core.Optional }, { type: core.Inject, args: [animations.ANIMATION_MODULE_TYPE,] }] }
37194
37612
  ]; };
37195
37613
  MatTabHeader.propDecorators = {
37196
- _labelWrappers: [{ type: core.ContentChildren, args: [MatTabLabelWrapper,] }],
37614
+ _items: [{ type: core.ContentChildren, args: [MatTabLabelWrapper,] }],
37197
37615
  _inkBar: [{ type: core.ViewChild, args: [MatInkBar, { static: true },] }],
37198
37616
  _tabListContainer: [{ type: core.ViewChild, args: ['tabListContainer', { static: true },] }],
37199
37617
  _tabList: [{ type: core.ViewChild, args: ['tabList', { static: true },] }],
37200
37618
  _nextPaginator: [{ type: core.ViewChild, args: ['nextPaginator', { static: false },] }],
37201
37619
  _previousPaginator: [{ type: core.ViewChild, args: ['previousPaginator', { static: false },] }],
37202
- selectedIndex: [{ type: core.Input }],
37203
- selectFocusedIndex: [{ type: core.Output }],
37204
- indexFocused: [{ type: core.Output }]
37620
+ disableRipple: [{ type: core.Input }]
37205
37621
  };
37206
37622
  return MatTabHeader;
37207
- }(_MatTabHeaderMixinBase));
37623
+ }(MatPaginatedTabHeader));
37208
37624
 
37209
37625
  /**
37210
37626
  * @fileoverview added by tsickle
@@ -37255,9 +37671,10 @@ var _MatTabGroupMixinBase = mixinColor(mixinDisableRipple(MatTabGroupBase), 'pri
37255
37671
  */
37256
37672
  var MatTabGroup = /** @class */ (function (_super) {
37257
37673
  __extends(MatTabGroup, _super);
37258
- function MatTabGroup(elementRef, _changeDetectorRef, defaultConfig) {
37674
+ function MatTabGroup(elementRef, _changeDetectorRef, defaultConfig, _animationMode) {
37259
37675
  var _this = _super.call(this, elementRef) || this;
37260
37676
  _this._changeDetectorRef = _changeDetectorRef;
37677
+ _this._animationMode = _animationMode;
37261
37678
  /**
37262
37679
  * The tab index that should be selected after the content has been checked.
37263
37680
  */
@@ -37703,8 +38120,8 @@ var MatTabGroup = /** @class */ (function (_super) {
37703
38120
  MatTabGroup.decorators = [
37704
38121
  { type: core.Component, args: [{selector: 'mat-tab-group',
37705
38122
  exportAs: 'matTabGroup',
37706
- template: "<mat-tab-header #tabHeader [selectedIndex]=\"selectedIndex\" [disableRipple]=\"disableRipple\" (indexFocused)=\"_focusChanged($event)\" (selectFocusedIndex)=\"selectedIndex = $event\"><div class=\"mat-tab-label\" role=\"tab\" matTabLabelWrapper mat-ripple cdkMonitorElementFocus *ngFor=\"let tab of _tabs; let i = index\" [id]=\"_getTabLabelId(i)\" [attr.tabIndex]=\"_getTabIndex(tab, i)\" [attr.aria-posinset]=\"i + 1\" [attr.aria-setsize]=\"_tabs.length\" [attr.aria-controls]=\"_getTabContentId(i)\" [attr.aria-selected]=\"selectedIndex == i\" [attr.aria-label]=\"tab.ariaLabel || null\" [attr.aria-labelledby]=\"(!tab.ariaLabel && tab.ariaLabelledby) ? tab.ariaLabelledby : null\" [class.mat-tab-label-active]=\"selectedIndex == i\" [disabled]=\"tab.disabled\" [matRippleDisabled]=\"tab.disabled || disableRipple\" (click)=\"_handleClick(tab, tabHeader, i)\"><div class=\"mat-tab-label-content\"><ng-template [ngIf]=\"tab.templateLabel\"><ng-template [cdkPortalOutlet]=\"tab.templateLabel\"></ng-template></ng-template><ng-template [ngIf]=\"!tab.templateLabel\">{{tab.textLabel}}</ng-template></div></div></mat-tab-header><div class=\"mat-tab-body-wrapper\" #tabBodyWrapper><mat-tab-body role=\"tabpanel\" *ngFor=\"let tab of _tabs; let i = index\" [id]=\"_getTabContentId(i)\" [attr.aria-labelledby]=\"_getTabLabelId(i)\" [class.mat-tab-body-active]=\"selectedIndex == i\" [content]=\"tab.content\" [position]=\"tab.position\" [origin]=\"tab.origin\" [animationDuration]=\"animationDuration\" (_onCentered)=\"_removeTabBodyWrapperHeight()\" (_onCentering)=\"_setTabBodyWrapperHeight($event)\"></mat-tab-body></div>",
37707
- styles: [".mat-tab-group{display:flex;flex-direction:column}.mat-tab-group.mat-tab-group-inverted-header{flex-direction:column-reverse}.mat-tab-label{height:48px;padding:0 24px;cursor:pointer;box-sizing:border-box;opacity:.6;min-width:160px;text-align:center;display:inline-flex;justify-content:center;align-items:center;white-space:nowrap;position:relative}.mat-tab-label:focus{outline:0}.mat-tab-label:focus:not(.mat-tab-disabled){opacity:1}@media (-ms-high-contrast:active){.mat-tab-label:focus{outline:dotted 2px}}.mat-tab-label.mat-tab-disabled{cursor:default}@media (-ms-high-contrast:active){.mat-tab-label.mat-tab-disabled{opacity:.5}}.mat-tab-label .mat-tab-label-content{display:inline-flex;justify-content:center;align-items:center;white-space:nowrap}@media (-ms-high-contrast:active){.mat-tab-label{opacity:1}}@media (max-width:599px){.mat-tab-label{padding:0 12px}}@media (max-width:959px){.mat-tab-label{padding:0 12px}}.mat-tab-group[mat-stretch-tabs]>.mat-tab-header .mat-tab-label{flex-basis:0;flex-grow:1}.mat-tab-body-wrapper{position:relative;overflow:hidden;display:flex;transition:height .5s cubic-bezier(.35,0,.25,1)}.mat-tab-body{top:0;left:0;right:0;bottom:0;position:absolute;display:block;overflow:hidden;flex-basis:100%}.mat-tab-body.mat-tab-body-active{position:relative;overflow-x:hidden;overflow-y:auto;z-index:1;flex-grow:1}.mat-tab-group.mat-tab-group-dynamic-height .mat-tab-body.mat-tab-body-active{overflow-y:hidden}"],
38123
+ template: "<mat-tab-header #tabHeader [selectedIndex]=\"selectedIndex\" [disableRipple]=\"disableRipple\" (indexFocused)=\"_focusChanged($event)\" (selectFocusedIndex)=\"selectedIndex = $event\"><div class=\"mat-tab-label\" role=\"tab\" matTabLabelWrapper mat-ripple cdkMonitorElementFocus *ngFor=\"let tab of _tabs; let i = index\" [id]=\"_getTabLabelId(i)\" [attr.tabIndex]=\"_getTabIndex(tab, i)\" [attr.aria-posinset]=\"i + 1\" [attr.aria-setsize]=\"_tabs.length\" [attr.aria-controls]=\"_getTabContentId(i)\" [attr.aria-selected]=\"selectedIndex == i\" [attr.aria-label]=\"tab.ariaLabel || null\" [attr.aria-labelledby]=\"(!tab.ariaLabel && tab.ariaLabelledby) ? tab.ariaLabelledby : null\" [class.mat-tab-label-active]=\"selectedIndex == i\" [disabled]=\"tab.disabled\" [matRippleDisabled]=\"tab.disabled || disableRipple\" (click)=\"_handleClick(tab, tabHeader, i)\"><div class=\"mat-tab-label-content\"><ng-template [ngIf]=\"tab.templateLabel\"><ng-template [cdkPortalOutlet]=\"tab.templateLabel\"></ng-template></ng-template><ng-template [ngIf]=\"!tab.templateLabel\">{{tab.textLabel}}</ng-template></div></div></mat-tab-header><div class=\"mat-tab-body-wrapper\" [class._mat-animation-noopable]=\"_animationMode === 'NoopAnimations'\" #tabBodyWrapper><mat-tab-body role=\"tabpanel\" *ngFor=\"let tab of _tabs; let i = index\" [id]=\"_getTabContentId(i)\" [attr.aria-labelledby]=\"_getTabLabelId(i)\" [class.mat-tab-body-active]=\"selectedIndex == i\" [content]=\"tab.content\" [position]=\"tab.position\" [origin]=\"tab.origin\" [animationDuration]=\"animationDuration\" (_onCentered)=\"_removeTabBodyWrapperHeight()\" (_onCentering)=\"_setTabBodyWrapperHeight($event)\"></mat-tab-body></div>",
38124
+ styles: [".mat-tab-group{display:flex;flex-direction:column}.mat-tab-group.mat-tab-group-inverted-header{flex-direction:column-reverse}.mat-tab-label{height:48px;padding:0 24px;cursor:pointer;box-sizing:border-box;opacity:.6;min-width:160px;text-align:center;display:inline-flex;justify-content:center;align-items:center;white-space:nowrap;position:relative}.mat-tab-label:focus{outline:0}.mat-tab-label:focus:not(.mat-tab-disabled){opacity:1}@media (-ms-high-contrast:active){.mat-tab-label:focus{outline:dotted 2px}}.mat-tab-label.mat-tab-disabled{cursor:default}@media (-ms-high-contrast:active){.mat-tab-label.mat-tab-disabled{opacity:.5}}.mat-tab-label .mat-tab-label-content{display:inline-flex;justify-content:center;align-items:center;white-space:nowrap}@media (-ms-high-contrast:active){.mat-tab-label{opacity:1}}@media (max-width:599px){.mat-tab-label{padding:0 12px}}@media (max-width:959px){.mat-tab-label{padding:0 12px}}.mat-tab-group[mat-stretch-tabs]>.mat-tab-header .mat-tab-label{flex-basis:0;flex-grow:1}.mat-tab-body-wrapper{position:relative;overflow:hidden;display:flex;transition:height .5s cubic-bezier(.35,0,.25,1)}._mat-animation-noopable.mat-tab-body-wrapper{transition:none;animation:none}.mat-tab-body{top:0;left:0;right:0;bottom:0;position:absolute;display:block;overflow:hidden;flex-basis:100%}.mat-tab-body.mat-tab-body-active{position:relative;overflow-x:hidden;overflow-y:auto;z-index:1;flex-grow:1}.mat-tab-group.mat-tab-group-dynamic-height .mat-tab-body.mat-tab-body-active{overflow-y:hidden}"],
37708
38125
  encapsulation: core.ViewEncapsulation.None,
37709
38126
  changeDetection: core.ChangeDetectionStrategy.OnPush,
37710
38127
  inputs: ['color', 'disableRipple'],
@@ -37719,7 +38136,8 @@ var MatTabGroup = /** @class */ (function (_super) {
37719
38136
  MatTabGroup.ctorParameters = function () { return [
37720
38137
  { type: core.ElementRef },
37721
38138
  { type: core.ChangeDetectorRef },
37722
- { type: undefined, decorators: [{ type: core.Inject, args: [MAT_TABS_CONFIG,] }, { type: core.Optional }] }
38139
+ { type: undefined, decorators: [{ type: core.Inject, args: [MAT_TABS_CONFIG,] }, { type: core.Optional }] },
38140
+ { type: String, decorators: [{ type: core.Optional }, { type: core.Inject, args: [animations.ANIMATION_MODULE_TYPE,] }] }
37723
38141
  ]; };
37724
38142
  MatTabGroup.propDecorators = {
37725
38143
  _tabs: [{ type: core.ContentChildren, args: [MatTab,] }],
@@ -37742,39 +38160,23 @@ var MatTabGroup = /** @class */ (function (_super) {
37742
38160
  * @fileoverview added by tsickle
37743
38161
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
37744
38162
  */
37745
- // Boilerplate for applying mixins to MatTabNav.
37746
- /**
37747
- * \@docs-private
37748
- */
37749
- var
37750
- // Boilerplate for applying mixins to MatTabNav.
37751
- /**
37752
- * \@docs-private
37753
- */
37754
- MatTabNavBase = /** @class */ (function () {
37755
- function MatTabNavBase(_elementRef) {
37756
- this._elementRef = _elementRef;
37757
- }
37758
- return MatTabNavBase;
37759
- }());
37760
- /** @type {?} */
37761
- var _MatTabNavMixinBase = mixinDisableRipple(mixinColor(MatTabNavBase, 'primary'));
37762
38163
  /**
37763
38164
  * Navigation component matching the styles of the tab group header.
37764
38165
  * Provides anchored navigation with animated ink bar.
37765
38166
  */
37766
38167
  var MatTabNav = /** @class */ (function (_super) {
37767
38168
  __extends(MatTabNav, _super);
37768
- function MatTabNav(elementRef, _dir, _ngZone, _changeDetectorRef, _viewportRuler) {
37769
- var _this = _super.call(this, elementRef) || this;
37770
- _this._dir = _dir;
37771
- _this._ngZone = _ngZone;
37772
- _this._changeDetectorRef = _changeDetectorRef;
37773
- _this._viewportRuler = _viewportRuler;
38169
+ function MatTabNav(elementRef, dir, ngZone, changeDetectorRef, viewportRuler,
38170
+ /**
38171
+ * @deprecated @breaking-change 9.0.0 `platform` parameter to become required.
38172
+ */
38173
+ platform$$1, animationMode) {
38174
+ var _this = _super.call(this, elementRef, changeDetectorRef, viewportRuler, dir, ngZone, platform$$1, animationMode) || this;
38175
+ _this._disableRipple = false;
37774
38176
  /**
37775
- * Subject that emits when the component has been destroyed.
38177
+ * Theme color of the nav bar.
37776
38178
  */
37777
- _this._onDestroy = new rxjs.Subject();
38179
+ _this.color = 'primary';
37778
38180
  return _this;
37779
38181
  }
37780
38182
  Object.defineProperty(MatTabNav.prototype, "backgroundColor", {
@@ -37790,117 +38192,99 @@ var MatTabNav = /** @class */ (function (_super) {
37790
38192
  */
37791
38193
  function (value) {
37792
38194
  /** @type {?} */
37793
- var nativeElement = this._elementRef.nativeElement;
37794
- nativeElement.classList.remove("mat-background-" + this.backgroundColor);
38195
+ var classList = this._elementRef.nativeElement.classList;
38196
+ classList.remove("mat-background-" + this.backgroundColor);
37795
38197
  if (value) {
37796
- nativeElement.classList.add("mat-background-" + value);
38198
+ classList.add("mat-background-" + value);
37797
38199
  }
37798
38200
  this._backgroundColor = value;
37799
38201
  },
37800
38202
  enumerable: true,
37801
38203
  configurable: true
37802
38204
  });
37803
- /**
37804
- * Notifies the component that the active link has been changed.
37805
- * @breaking-change 8.0.0 `element` parameter to be removed.
37806
- */
37807
- /**
37808
- * Notifies the component that the active link has been changed.
37809
- * \@breaking-change 8.0.0 `element` parameter to be removed.
37810
- * @param {?} element
37811
- * @return {?}
37812
- */
37813
- MatTabNav.prototype.updateActiveLink = /**
37814
- * Notifies the component that the active link has been changed.
37815
- * \@breaking-change 8.0.0 `element` parameter to be removed.
37816
- * @param {?} element
37817
- * @return {?}
37818
- */
37819
- function (element) {
37820
- // Note: keeping the `element` for backwards-compat, but isn't being used for anything.
37821
- // @breaking-change 8.0.0
37822
- this._activeLinkChanged = !!element;
37823
- this._changeDetectorRef.markForCheck();
37824
- };
37825
- /**
37826
- * @return {?}
37827
- */
37828
- MatTabNav.prototype.ngAfterContentInit = /**
37829
- * @return {?}
37830
- */
37831
- function () {
37832
- var _this = this;
37833
- this._ngZone.runOutsideAngular((/**
38205
+ Object.defineProperty(MatTabNav.prototype, "disableRipple", {
38206
+ /** Whether the ripple effect is disabled or not. */
38207
+ get: /**
38208
+ * Whether the ripple effect is disabled or not.
37834
38209
  * @return {?}
37835
38210
  */
37836
- function () {
37837
- /** @type {?} */
37838
- var dirChange = _this._dir ? _this._dir.change : rxjs.of(null);
37839
- return rxjs.merge(dirChange, _this._viewportRuler.change(10))
37840
- .pipe(operators.takeUntil(_this._onDestroy))
37841
- .subscribe((/**
37842
- * @return {?}
37843
- */
37844
- function () { return _this._alignInkBar(); }));
37845
- }));
37846
- };
37847
- /** Checks if the active link has been changed and, if so, will update the ink bar. */
38211
+ function () { return this._disableRipple; },
38212
+ set: /**
38213
+ * @param {?} value
38214
+ * @return {?}
38215
+ */
38216
+ function (value) { this._disableRipple = coercion.coerceBooleanProperty(value); },
38217
+ enumerable: true,
38218
+ configurable: true
38219
+ });
37848
38220
  /**
37849
- * Checks if the active link has been changed and, if so, will update the ink bar.
38221
+ * @protected
37850
38222
  * @return {?}
37851
38223
  */
37852
- MatTabNav.prototype.ngAfterContentChecked = /**
37853
- * Checks if the active link has been changed and, if so, will update the ink bar.
38224
+ MatTabNav.prototype._itemSelected = /**
38225
+ * @protected
37854
38226
  * @return {?}
37855
38227
  */
37856
38228
  function () {
37857
- if (this._activeLinkChanged) {
37858
- /** @type {?} */
37859
- var activeTab = this._tabLinks.find((/**
37860
- * @param {?} tab
37861
- * @return {?}
37862
- */
37863
- function (tab) { return tab.active; }));
37864
- this._activeLinkElement = activeTab ? activeTab._elementRef : null;
37865
- this._alignInkBar();
37866
- this._activeLinkChanged = false;
37867
- }
38229
+ // noop
37868
38230
  };
37869
38231
  /**
37870
38232
  * @return {?}
37871
38233
  */
37872
- MatTabNav.prototype.ngOnDestroy = /**
38234
+ MatTabNav.prototype.ngAfterContentInit = /**
37873
38235
  * @return {?}
37874
38236
  */
37875
38237
  function () {
37876
- this._onDestroy.next();
37877
- this._onDestroy.complete();
38238
+ this.updateActiveLink();
38239
+ _super.prototype.ngAfterContentInit.call(this);
37878
38240
  };
37879
- /** Aligns the ink bar to the active link. */
37880
38241
  /**
37881
- * Aligns the ink bar to the active link.
38242
+ * Notifies the component that the active link has been changed.
38243
+ * @breaking-change 8.0.0 `element` parameter to be removed.
38244
+ */
38245
+ /**
38246
+ * Notifies the component that the active link has been changed.
38247
+ * \@breaking-change 8.0.0 `element` parameter to be removed.
38248
+ * @param {?=} _element
37882
38249
  * @return {?}
37883
38250
  */
37884
- MatTabNav.prototype._alignInkBar = /**
37885
- * Aligns the ink bar to the active link.
38251
+ MatTabNav.prototype.updateActiveLink = /**
38252
+ * Notifies the component that the active link has been changed.
38253
+ * \@breaking-change 8.0.0 `element` parameter to be removed.
38254
+ * @param {?=} _element
37886
38255
  * @return {?}
37887
38256
  */
37888
- function () {
37889
- if (this._activeLinkElement) {
37890
- this._inkBar.show();
37891
- this._inkBar.alignToElement(this._activeLinkElement.nativeElement);
38257
+ function (_element) {
38258
+ if (!this._items) {
38259
+ return;
37892
38260
  }
37893
- else {
37894
- this._inkBar.hide();
38261
+ /** @type {?} */
38262
+ var items = this._items.toArray();
38263
+ for (var i = 0; i < items.length; i++) {
38264
+ if (items[i].active) {
38265
+ this.selectedIndex = i;
38266
+ this._changeDetectorRef.markForCheck();
38267
+ return;
38268
+ }
37895
38269
  }
38270
+ // The ink bar should hide itself if no items are active.
38271
+ this.selectedIndex = -1;
38272
+ this._inkBar.hide();
37896
38273
  };
37897
38274
  MatTabNav.decorators = [
37898
38275
  { type: core.Component, args: [{selector: '[mat-tab-nav-bar]',
37899
38276
  exportAs: 'matTabNavBar, matTabNav',
37900
- inputs: ['color', 'disableRipple'],
37901
- template: "<div class=\"mat-tab-links\" (cdkObserveContent)=\"_alignInkBar()\"><ng-content></ng-content><mat-ink-bar></mat-ink-bar></div>",
37902
- styles: [".mat-tab-nav-bar{overflow:hidden;position:relative;flex-shrink:0}.mat-tab-links{position:relative;display:flex}[mat-align-tabs=center] .mat-tab-links{justify-content:center}[mat-align-tabs=end] .mat-tab-links{justify-content:flex-end}.mat-tab-link{height:48px;padding:0 24px;cursor:pointer;box-sizing:border-box;opacity:.6;min-width:160px;text-align:center;display:inline-flex;justify-content:center;align-items:center;white-space:nowrap;vertical-align:top;text-decoration:none;position:relative;overflow:hidden;-webkit-tap-highlight-color:transparent}.mat-tab-link:focus{outline:0}.mat-tab-link:focus:not(.mat-tab-disabled){opacity:1}@media (-ms-high-contrast:active){.mat-tab-link:focus{outline:dotted 2px}}.mat-tab-link.mat-tab-disabled{cursor:default}@media (-ms-high-contrast:active){.mat-tab-link.mat-tab-disabled{opacity:.5}}.mat-tab-link .mat-tab-label-content{display:inline-flex;justify-content:center;align-items:center;white-space:nowrap}@media (-ms-high-contrast:active){.mat-tab-link{opacity:1}}[mat-stretch-tabs] .mat-tab-link{flex-basis:0;flex-grow:1}.mat-tab-link.mat-tab-disabled{pointer-events:none}@media (max-width:599px){.mat-tab-link{min-width:72px}}.mat-ink-bar{position:absolute;bottom:0;height:2px;transition:.5s cubic-bezier(.35,0,.25,1)}.mat-tab-group-inverted-header .mat-ink-bar{bottom:auto;top:0}@media (-ms-high-contrast:active){.mat-ink-bar{outline:solid 2px;height:0}}"],
37903
- host: { 'class': 'mat-tab-nav-bar' },
38277
+ inputs: ['color'],
38278
+ template: "<div class=\"mat-tab-header-pagination mat-tab-header-pagination-before mat-elevation-z4\" #previousPaginator aria-hidden=\"true\" mat-ripple [matRippleDisabled]=\"_disableScrollBefore || disableRipple\" [class.mat-tab-header-pagination-disabled]=\"_disableScrollBefore\" (click)=\"_handlePaginatorClick('before')\" (mousedown)=\"_handlePaginatorPress('before')\" (touchend)=\"_stopInterval()\"><div class=\"mat-tab-header-pagination-chevron\"></div></div><div class=\"mat-tab-link-container\" #tabListContainer (keydown)=\"_handleKeydown($event)\"><div class=\"mat-tab-list\" #tabList (cdkObserveContent)=\"_onContentChanges()\"><div class=\"mat-tab-links\"><ng-content></ng-content></div><mat-ink-bar></mat-ink-bar></div></div><div class=\"mat-tab-header-pagination mat-tab-header-pagination-after mat-elevation-z4\" #nextPaginator aria-hidden=\"true\" mat-ripple [matRippleDisabled]=\"_disableScrollAfter || disableRipple\" [class.mat-tab-header-pagination-disabled]=\"_disableScrollAfter\" (mousedown)=\"_handlePaginatorPress('after')\" (click)=\"_handlePaginatorClick('after')\" (touchend)=\"_stopInterval()\"><div class=\"mat-tab-header-pagination-chevron\"></div></div>",
38279
+ styles: [".mat-tab-header{display:flex;overflow:hidden;position:relative;flex-shrink:0}.mat-tab-header-pagination{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;position:relative;display:none;justify-content:center;align-items:center;min-width:32px;cursor:pointer;z-index:2;-webkit-tap-highlight-color:transparent;touch-action:none}.mat-tab-header-pagination-controls-enabled .mat-tab-header-pagination{display:flex}.mat-tab-header-pagination-before,.mat-tab-header-rtl .mat-tab-header-pagination-after{padding-left:4px}.mat-tab-header-pagination-before .mat-tab-header-pagination-chevron,.mat-tab-header-rtl .mat-tab-header-pagination-after .mat-tab-header-pagination-chevron{transform:rotate(-135deg)}.mat-tab-header-pagination-after,.mat-tab-header-rtl .mat-tab-header-pagination-before{padding-right:4px}.mat-tab-header-pagination-after .mat-tab-header-pagination-chevron,.mat-tab-header-rtl .mat-tab-header-pagination-before .mat-tab-header-pagination-chevron{transform:rotate(45deg)}.mat-tab-header-pagination-chevron{border-style:solid;border-width:2px 2px 0 0;content:'';height:8px;width:8px}.mat-tab-header-pagination-disabled{box-shadow:none;cursor:default}.mat-tab-list{flex-grow:1;position:relative;transition:transform .5s cubic-bezier(.35,0,.25,1)}.mat-tab-links{display:flex}[mat-align-tabs=center] .mat-tab-links{justify-content:center}[mat-align-tabs=end] .mat-tab-links{justify-content:flex-end}.mat-ink-bar{position:absolute;bottom:0;height:2px;transition:.5s cubic-bezier(.35,0,.25,1)}._mat-animation-noopable.mat-ink-bar{transition:none;animation:none}.mat-tab-group-inverted-header .mat-ink-bar{bottom:auto;top:0}@media (-ms-high-contrast:active){.mat-ink-bar{outline:solid 2px;height:0}}.mat-tab-link-container{display:flex;flex-grow:1;overflow:hidden;z-index:1}.mat-tab-link{height:48px;padding:0 24px;cursor:pointer;box-sizing:border-box;opacity:.6;min-width:160px;text-align:center;display:inline-flex;justify-content:center;align-items:center;white-space:nowrap;vertical-align:top;text-decoration:none;position:relative;overflow:hidden;-webkit-tap-highlight-color:transparent}.mat-tab-link:focus{outline:0}.mat-tab-link:focus:not(.mat-tab-disabled){opacity:1}@media (-ms-high-contrast:active){.mat-tab-link:focus{outline:dotted 2px}}.mat-tab-link.mat-tab-disabled{cursor:default}@media (-ms-high-contrast:active){.mat-tab-link.mat-tab-disabled{opacity:.5}}.mat-tab-link .mat-tab-label-content{display:inline-flex;justify-content:center;align-items:center;white-space:nowrap}@media (-ms-high-contrast:active){.mat-tab-link{opacity:1}}[mat-stretch-tabs] .mat-tab-link{flex-basis:0;flex-grow:1}.mat-tab-link.mat-tab-disabled{pointer-events:none}@media (max-width:599px){.mat-tab-link{min-width:72px}}"],
38280
+ host: {
38281
+ 'class': 'mat-tab-nav-bar mat-tab-header',
38282
+ '[class.mat-tab-header-pagination-controls-enabled]': '_showPaginationControls',
38283
+ '[class.mat-tab-header-rtl]': "_getLayoutDirection() == 'rtl'",
38284
+ '[class.mat-primary]': 'color !== "warn" && color !== "accent"',
38285
+ '[class.mat-accent]': 'color === "accent"',
38286
+ '[class.mat-warn]': 'color === "warn"',
38287
+ },
37904
38288
  encapsulation: core.ViewEncapsulation.None,
37905
38289
  changeDetection: core.ChangeDetectionStrategy.OnPush,
37906
38290
  },] },
@@ -37911,18 +38295,26 @@ var MatTabNav = /** @class */ (function (_super) {
37911
38295
  { type: bidi.Directionality, decorators: [{ type: core.Optional }] },
37912
38296
  { type: core.NgZone },
37913
38297
  { type: core.ChangeDetectorRef },
37914
- { type: scrolling.ViewportRuler }
38298
+ { type: scrolling.ViewportRuler },
38299
+ { type: platform.Platform, decorators: [{ type: core.Optional }] },
38300
+ { type: String, decorators: [{ type: core.Optional }, { type: core.Inject, args: [animations.ANIMATION_MODULE_TYPE,] }] }
37915
38301
  ]; };
37916
38302
  MatTabNav.propDecorators = {
37917
- _inkBar: [{ type: core.ViewChild, args: [MatInkBar, { static: true },] }],
37918
- _tabLinks: [{ type: core.ContentChildren, args: [core.forwardRef((/**
38303
+ _items: [{ type: core.ContentChildren, args: [core.forwardRef((/**
37919
38304
  * @return {?}
37920
38305
  */
37921
38306
  function () { return MatTabLink; })), { descendants: true },] }],
37922
- backgroundColor: [{ type: core.Input }]
38307
+ _inkBar: [{ type: core.ViewChild, args: [MatInkBar, { static: true },] }],
38308
+ _tabListContainer: [{ type: core.ViewChild, args: ['tabListContainer', { static: true },] }],
38309
+ _tabList: [{ type: core.ViewChild, args: ['tabList', { static: true },] }],
38310
+ _nextPaginator: [{ type: core.ViewChild, args: ['nextPaginator', { static: false },] }],
38311
+ _previousPaginator: [{ type: core.ViewChild, args: ['previousPaginator', { static: false },] }],
38312
+ backgroundColor: [{ type: core.Input }],
38313
+ disableRipple: [{ type: core.Input }],
38314
+ color: [{ type: core.Input }]
37923
38315
  };
37924
38316
  return MatTabNav;
37925
- }(_MatTabNavMixinBase));
38317
+ }(MatPaginatedTabHeader));
37926
38318
  // Boilerplate for applying mixins to MatTabLink.
37927
38319
  var
37928
38320
  // Boilerplate for applying mixins to MatTabLink.
@@ -37938,20 +38330,23 @@ var _MatTabLinkMixinBase = mixinTabIndex(mixinDisableRipple(mixinDisabled(MatTab
37938
38330
  */
37939
38331
  var MatTabLink = /** @class */ (function (_super) {
37940
38332
  __extends(MatTabLink, _super);
37941
- function MatTabLink(_tabNavBar, _elementRef, ngZone, platform$$1, globalRippleOptions, tabIndex, _focusMonitor) {
38333
+ function MatTabLink(_tabNavBar, elementRef, ngZone, platform$$1, globalRippleOptions, tabIndex, _focusMonitor, animationMode) {
37942
38334
  var _this = _super.call(this) || this;
37943
38335
  _this._tabNavBar = _tabNavBar;
37944
- _this._elementRef = _elementRef;
38336
+ _this.elementRef = elementRef;
37945
38337
  _this._focusMonitor = _focusMonitor;
37946
38338
  /**
37947
38339
  * Whether the tab link is active or not.
37948
38340
  */
37949
38341
  _this._isActive = false;
37950
- _this._tabLinkRipple = new RippleRenderer(_this, ngZone, _elementRef, platform$$1);
37951
- _this._tabLinkRipple.setupTriggerEvents(_elementRef.nativeElement);
38342
+ _this._tabLinkRipple = new RippleRenderer(_this, ngZone, elementRef, platform$$1);
38343
+ _this._tabLinkRipple.setupTriggerEvents(elementRef.nativeElement);
37952
38344
  _this.rippleConfig = globalRippleOptions || {};
37953
38345
  _this.tabIndex = parseInt(tabIndex) || 0;
37954
- _focusMonitor.monitor(_elementRef);
38346
+ if (animationMode === 'NoopAnimations') {
38347
+ _this.rippleConfig.animation = { enterDuration: 0, exitDuration: 0 };
38348
+ }
38349
+ _focusMonitor.monitor(elementRef);
37955
38350
  return _this;
37956
38351
  }
37957
38352
  Object.defineProperty(MatTabLink.prototype, "active", {
@@ -37968,7 +38363,7 @@ var MatTabLink = /** @class */ (function (_super) {
37968
38363
  function (value) {
37969
38364
  if (value !== this._isActive) {
37970
38365
  this._isActive = value;
37971
- this._tabNavBar.updateActiveLink(this._elementRef);
38366
+ this._tabNavBar.updateActiveLink(this.elementRef);
37972
38367
  }
37973
38368
  },
37974
38369
  enumerable: true,
@@ -37991,6 +38386,15 @@ var MatTabLink = /** @class */ (function (_super) {
37991
38386
  enumerable: true,
37992
38387
  configurable: true
37993
38388
  });
38389
+ /**
38390
+ * @return {?}
38391
+ */
38392
+ MatTabLink.prototype.focus = /**
38393
+ * @return {?}
38394
+ */
38395
+ function () {
38396
+ this.elementRef.nativeElement.focus();
38397
+ };
37994
38398
  /**
37995
38399
  * @return {?}
37996
38400
  */
@@ -37999,7 +38403,7 @@ var MatTabLink = /** @class */ (function (_super) {
37999
38403
  */
38000
38404
  function () {
38001
38405
  this._tabLinkRipple._removeTriggerEvents();
38002
- this._focusMonitor.stopMonitoring(this._elementRef);
38406
+ this._focusMonitor.stopMonitoring(this.elementRef);
38003
38407
  };
38004
38408
  MatTabLink.decorators = [
38005
38409
  { type: core.Directive, args: [{
@@ -38008,8 +38412,8 @@ var MatTabLink = /** @class */ (function (_super) {
38008
38412
  inputs: ['disabled', 'disableRipple', 'tabIndex'],
38009
38413
  host: {
38010
38414
  'class': 'mat-tab-link',
38011
- '[attr.aria-current]': 'active',
38012
- '[attr.aria-disabled]': 'disabled.toString()',
38415
+ '[attr.aria-current]': 'active ? "page" : null',
38416
+ '[attr.aria-disabled]': 'disabled',
38013
38417
  '[attr.tabIndex]': 'tabIndex',
38014
38418
  '[class.mat-tab-disabled]': 'disabled',
38015
38419
  '[class.mat-tab-label-active]': 'active',
@@ -38024,7 +38428,8 @@ var MatTabLink = /** @class */ (function (_super) {
38024
38428
  { type: platform.Platform },
38025
38429
  { type: undefined, decorators: [{ type: core.Optional }, { type: core.Inject, args: [MAT_RIPPLE_GLOBAL_OPTIONS,] }] },
38026
38430
  { type: String, decorators: [{ type: core.Attribute, args: ['tabindex',] }] },
38027
- { type: a11y.FocusMonitor }
38431
+ { type: a11y.FocusMonitor },
38432
+ { type: String, decorators: [{ type: core.Optional }, { type: core.Inject, args: [animations.ANIMATION_MODULE_TYPE,] }] }
38028
38433
  ]; };
38029
38434
  MatTabLink.propDecorators = {
38030
38435
  active: [{ type: core.Input }]
@@ -38231,40 +38636,12 @@ var MatToolbarModule = /** @class */ (function () {
38231
38636
  return MatToolbarModule;
38232
38637
  }());
38233
38638
 
38234
- /**
38235
- * @fileoverview added by tsickle
38236
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
38237
- */
38238
- /**
38239
- * Outlet for nested CdkNode. Put `[matTreeNodeOutlet]` on a tag to place children dataNodes
38240
- * inside the outlet.
38241
- */
38242
- var MatTreeNodeOutlet = /** @class */ (function () {
38243
- function MatTreeNodeOutlet(viewContainer, _node) {
38244
- this.viewContainer = viewContainer;
38245
- this._node = _node;
38246
- }
38247
- MatTreeNodeOutlet.decorators = [
38248
- { type: core.Directive, args: [{
38249
- selector: '[matTreeNodeOutlet]'
38250
- },] },
38251
- ];
38252
- /** @nocollapse */
38253
- MatTreeNodeOutlet.ctorParameters = function () { return [
38254
- { type: core.ViewContainerRef },
38255
- { type: undefined, decorators: [{ type: core.Inject, args: [tree.CDK_TREE_NODE_OUTLET_NODE,] }, { type: core.Optional }] }
38256
- ]; };
38257
- return MatTreeNodeOutlet;
38258
- }());
38259
-
38260
38639
  /**
38261
38640
  * @fileoverview added by tsickle
38262
38641
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
38263
38642
  */
38264
38643
  /** @type {?} */
38265
38644
  var _MatTreeNodeMixinBase = mixinTabIndex(mixinDisabled(tree.CdkTreeNode));
38266
- /** @type {?} */
38267
- var _MatNestedTreeNodeMixinBase = mixinTabIndex(mixinDisabled(tree.CdkNestedTreeNode));
38268
38645
  /**
38269
38646
  * Wrapper for the CdkTree node with Material design styles.
38270
38647
  * @template T
@@ -38338,9 +38715,43 @@ var MatNestedTreeNode = /** @class */ (function (_super) {
38338
38715
  _this._elementRef = _elementRef;
38339
38716
  _this._tree = _tree;
38340
38717
  _this._differs = _differs;
38718
+ _this._disabled = false;
38341
38719
  _this.tabIndex = Number(tabIndex) || 0;
38342
38720
  return _this;
38343
38721
  }
38722
+ Object.defineProperty(MatNestedTreeNode.prototype, "disabled", {
38723
+ /** Whether the node is disabled. */
38724
+ get: /**
38725
+ * Whether the node is disabled.
38726
+ * @return {?}
38727
+ */
38728
+ function () { return this._disabled; },
38729
+ set: /**
38730
+ * @param {?} value
38731
+ * @return {?}
38732
+ */
38733
+ function (value) { this._disabled = coercion.coerceBooleanProperty(value); },
38734
+ enumerable: true,
38735
+ configurable: true
38736
+ });
38737
+ Object.defineProperty(MatNestedTreeNode.prototype, "tabIndex", {
38738
+ /** Tabindex for the node. */
38739
+ get: /**
38740
+ * Tabindex for the node.
38741
+ * @return {?}
38742
+ */
38743
+ function () { return this.disabled ? -1 : this._tabIndex; },
38744
+ set: /**
38745
+ * @param {?} value
38746
+ * @return {?}
38747
+ */
38748
+ function (value) {
38749
+ // If the specified tabIndex value is null or undefined, fall back to the default value.
38750
+ this._tabIndex = value != null ? value : 0;
38751
+ },
38752
+ enumerable: true,
38753
+ configurable: true
38754
+ });
38344
38755
  // This is a workaround for https://github.com/angular/angular/issues/23091
38345
38756
  // In aot mode, the lifecycle hooks from parent class are not called.
38346
38757
  // TODO(tinayuangao): Remove when the angular issue #23091 is fixed
@@ -38378,7 +38789,6 @@ var MatNestedTreeNode = /** @class */ (function (_super) {
38378
38789
  '[attr.role]': 'role',
38379
38790
  'class': 'mat-nested-tree-node',
38380
38791
  },
38381
- inputs: ['disabled', 'tabIndex'],
38382
38792
  providers: [
38383
38793
  { provide: tree.CdkNestedTreeNode, useExisting: MatNestedTreeNode },
38384
38794
  { provide: tree.CdkTreeNode, useExisting: MatNestedTreeNode },
@@ -38395,14 +38805,11 @@ var MatNestedTreeNode = /** @class */ (function (_super) {
38395
38805
  ]; };
38396
38806
  MatNestedTreeNode.propDecorators = {
38397
38807
  node: [{ type: core.Input, args: ['matNestedTreeNode',] }],
38398
- nodeOutlet: [{ type: core.ContentChildren, args: [MatTreeNodeOutlet, {
38399
- // We need to use `descendants: true`, because Ivy will no longer match
38400
- // indirect descendants if it's left as false.
38401
- descendants: true
38402
- },] }]
38808
+ disabled: [{ type: core.Input }],
38809
+ tabIndex: [{ type: core.Input }]
38403
38810
  };
38404
38811
  return MatNestedTreeNode;
38405
- }(_MatNestedTreeNodeMixinBase));
38812
+ }(tree.CdkNestedTreeNode));
38406
38813
 
38407
38814
  /**
38408
38815
  * @fileoverview added by tsickle
@@ -38430,6 +38837,36 @@ var MatTreeNodePadding = /** @class */ (function (_super) {
38430
38837
  return MatTreeNodePadding;
38431
38838
  }(tree.CdkTreeNodePadding));
38432
38839
 
38840
+ /**
38841
+ * @fileoverview added by tsickle
38842
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
38843
+ */
38844
+ /**
38845
+ * Outlet for nested CdkNode. Put `[matTreeNodeOutlet]` on a tag to place children dataNodes
38846
+ * inside the outlet.
38847
+ */
38848
+ var MatTreeNodeOutlet = /** @class */ (function () {
38849
+ function MatTreeNodeOutlet(viewContainer, _node) {
38850
+ this.viewContainer = viewContainer;
38851
+ this._node = _node;
38852
+ }
38853
+ MatTreeNodeOutlet.decorators = [
38854
+ { type: core.Directive, args: [{
38855
+ selector: '[matTreeNodeOutlet]',
38856
+ providers: [{
38857
+ provide: tree.CdkTreeNodeOutlet,
38858
+ useExisting: MatTreeNodeOutlet
38859
+ }]
38860
+ },] },
38861
+ ];
38862
+ /** @nocollapse */
38863
+ MatTreeNodeOutlet.ctorParameters = function () { return [
38864
+ { type: core.ViewContainerRef },
38865
+ { type: undefined, decorators: [{ type: core.Inject, args: [tree.CDK_TREE_NODE_OUTLET_NODE,] }, { type: core.Optional }] }
38866
+ ]; };
38867
+ return MatTreeNodeOutlet;
38868
+ }());
38869
+
38433
38870
  /**
38434
38871
  * @fileoverview added by tsickle
38435
38872
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
@@ -38974,7 +39411,7 @@ exports.MatChipRemove = MatChipRemove;
38974
39411
  exports.MatChipInput = MatChipInput;
38975
39412
  exports.MAT_CHIPS_DEFAULT_OPTIONS = MAT_CHIPS_DEFAULT_OPTIONS;
38976
39413
  exports.ɵa1 = MATERIAL_SANITY_CHECKS_FACTORY;
38977
- exports.VERSION = VERSION;
39414
+ exports.VERSION = VERSION$1;
38978
39415
  exports.AnimationCurves = AnimationCurves;
38979
39416
  exports.AnimationDurations = AnimationDurations;
38980
39417
  exports.MatCommonModule = MatCommonModule;
@@ -39031,6 +39468,9 @@ exports.SEP = SEP;
39031
39468
  exports.OCT = OCT;
39032
39469
  exports.NOV = NOV;
39033
39470
  exports.DEC = DEC;
39471
+ exports.MatMultiYearView = MatMultiYearView;
39472
+ exports.yearsPerPage = yearsPerPage;
39473
+ exports.yearsPerRow = yearsPerRow;
39034
39474
  exports.MatDatepickerModule = MatDatepickerModule;
39035
39475
  exports.MatCalendarHeader = MatCalendarHeader;
39036
39476
  exports.MatCalendar = MatCalendar;
@@ -39051,9 +39491,6 @@ exports.MatDatepickerToggleIcon = MatDatepickerToggleIcon;
39051
39491
  exports.MatDatepickerToggle = MatDatepickerToggle;
39052
39492
  exports.MatMonthView = MatMonthView;
39053
39493
  exports.MatYearView = MatYearView;
39054
- exports.yearsPerPage = yearsPerPage;
39055
- exports.yearsPerRow = yearsPerRow;
39056
- exports.MatMultiYearView = MatMultiYearView;
39057
39494
  exports.MatDialogModule = MatDialogModule;
39058
39495
  exports.MAT_DIALOG_SCROLL_STRATEGY_FACTORY = MAT_DIALOG_SCROLL_STRATEGY_FACTORY;
39059
39496
  exports.MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY = MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY;
@@ -39099,7 +39536,7 @@ exports.MatPrefix = MatPrefix;
39099
39536
  exports.MatSuffix = MatSuffix;
39100
39537
  exports.MatLabel = MatLabel;
39101
39538
  exports.matFormFieldAnimations = matFormFieldAnimations;
39102
- exports.ɵa5 = MAT_GRID_LIST;
39539
+ exports.ɵa3 = MAT_GRID_LIST;
39103
39540
  exports.MatGridListModule = MatGridListModule;
39104
39541
  exports.MatGridList = MatGridList;
39105
39542
  exports.MatGridTile = MatGridTile;
@@ -39134,9 +39571,9 @@ exports.MAT_SELECTION_LIST_VALUE_ACCESSOR = MAT_SELECTION_LIST_VALUE_ACCESSOR;
39134
39571
  exports.MatSelectionListChange = MatSelectionListChange;
39135
39572
  exports.MatListOption = MatListOption;
39136
39573
  exports.MatSelectionList = MatSelectionList;
39137
- exports.ɵa24 = MAT_MENU_DEFAULT_OPTIONS_FACTORY;
39138
- exports.ɵb24 = MAT_MENU_SCROLL_STRATEGY_FACTORY;
39139
- exports.ɵc24 = MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER;
39574
+ exports.ɵa23 = MAT_MENU_DEFAULT_OPTIONS_FACTORY;
39575
+ exports.ɵb23 = MAT_MENU_SCROLL_STRATEGY_FACTORY;
39576
+ exports.ɵc23 = MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER;
39140
39577
  exports.MatMenu = MatMenu;
39141
39578
  exports.MAT_MENU_DEFAULT_OPTIONS = MAT_MENU_DEFAULT_OPTIONS;
39142
39579
  exports._MatMenu = _MatMenu;
@@ -39167,6 +39604,8 @@ exports.MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS = MAT_PROGRESS_SPINNER_DEFAULT_OPTI
39167
39604
  exports.MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS_FACTORY = MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS_FACTORY;
39168
39605
  exports.MatProgressSpinnerModule = MatProgressSpinnerModule;
39169
39606
  exports.MatRadioModule = MatRadioModule;
39607
+ exports.MAT_RADIO_DEFAULT_OPTIONS_FACTORY = MAT_RADIO_DEFAULT_OPTIONS_FACTORY;
39608
+ exports.MAT_RADIO_DEFAULT_OPTIONS = MAT_RADIO_DEFAULT_OPTIONS;
39170
39609
  exports.MAT_RADIO_GROUP_CONTROL_VALUE_ACCESSOR = MAT_RADIO_GROUP_CONTROL_VALUE_ACCESSOR;
39171
39610
  exports.MatRadioChange = MatRadioChange;
39172
39611
  exports.MatRadioGroup = MatRadioGroup;
@@ -39197,11 +39636,14 @@ exports.MatSidenavContent = MatSidenavContent;
39197
39636
  exports.MatSidenav = MatSidenav;
39198
39637
  exports.MatSidenavContainer = MatSidenavContainer;
39199
39638
  exports.matDrawerAnimations = matDrawerAnimations;
39639
+ exports._MatSlideToggleRequiredValidatorModule = _MatSlideToggleRequiredValidatorModule;
39200
39640
  exports.MatSlideToggleModule = MatSlideToggleModule;
39201
39641
  exports.MAT_SLIDE_TOGGLE_VALUE_ACCESSOR = MAT_SLIDE_TOGGLE_VALUE_ACCESSOR;
39202
39642
  exports.MatSlideToggleChange = MatSlideToggleChange;
39203
39643
  exports.MatSlideToggle = MatSlideToggle;
39204
39644
  exports.MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS = MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS;
39645
+ exports.MAT_SLIDE_TOGGLE_REQUIRED_VALIDATOR = MAT_SLIDE_TOGGLE_REQUIRED_VALIDATOR;
39646
+ exports.MatSlideToggleRequiredValidator = MatSlideToggleRequiredValidator;
39205
39647
  exports.MatSliderModule = MatSliderModule;
39206
39648
  exports.MAT_SLIDER_VALUE_ACCESSOR = MAT_SLIDER_VALUE_ACCESSOR;
39207
39649
  exports.MatSliderChange = MatSliderChange;
@@ -39254,7 +39696,8 @@ exports.MatFooterRow = MatFooterRow;
39254
39696
  exports.MatRow = MatRow;
39255
39697
  exports.MatTableDataSource = MatTableDataSource;
39256
39698
  exports.MatTextColumn = MatTextColumn;
39257
- exports.ɵa23 = _MAT_INK_BAR_POSITIONER_FACTORY;
39699
+ exports.ɵa24 = _MAT_INK_BAR_POSITIONER_FACTORY;
39700
+ exports.ɵb24 = MatPaginatedTabHeader;
39258
39701
  exports.MatInkBar = MatInkBar;
39259
39702
  exports._MAT_INK_BAR_POSITIONER = _MAT_INK_BAR_POSITIONER;
39260
39703
  exports.MatTabBody = MatTabBody;