@angular/material 8.0.0 → 8.1.1

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 (413) hide show
  1. package/_theming.scss +29 -28
  2. package/bottom-sheet/typings/bottom-sheet-config.d.ts +4 -1
  3. package/bottom-sheet/typings/bottom-sheet-ref.d.ts +2 -0
  4. package/bottom-sheet/typings/index.metadata.json +1 -1
  5. package/bundles/material-autocomplete.umd.js +4 -0
  6. package/bundles/material-autocomplete.umd.js.map +1 -1
  7. package/bundles/material-autocomplete.umd.min.js +1 -1
  8. package/bundles/material-autocomplete.umd.min.js.map +1 -1
  9. package/bundles/material-bottom-sheet.umd.js +23 -8
  10. package/bundles/material-bottom-sheet.umd.js.map +1 -1
  11. package/bundles/material-bottom-sheet.umd.min.js +1 -1
  12. package/bundles/material-bottom-sheet.umd.min.js.map +1 -1
  13. package/bundles/material-button-toggle.umd.js.map +1 -1
  14. package/bundles/material-button-toggle.umd.min.js.map +1 -1
  15. package/bundles/material-button.umd.js +1 -1
  16. package/bundles/material-button.umd.js.map +1 -1
  17. package/bundles/material-button.umd.min.js +1 -1
  18. package/bundles/material-button.umd.min.js.map +1 -1
  19. package/bundles/material-card.umd.js +16 -7
  20. package/bundles/material-card.umd.js.map +1 -1
  21. package/bundles/material-card.umd.min.js +1 -1
  22. package/bundles/material-card.umd.min.js.map +1 -1
  23. package/bundles/material-checkbox.umd.js +2 -2
  24. package/bundles/material-checkbox.umd.js.map +1 -1
  25. package/bundles/material-checkbox.umd.min.js +1 -1
  26. package/bundles/material-checkbox.umd.min.js.map +1 -1
  27. package/bundles/material-chips.umd.js +12 -7
  28. package/bundles/material-chips.umd.js.map +1 -1
  29. package/bundles/material-chips.umd.min.js +1 -1
  30. package/bundles/material-chips.umd.min.js.map +1 -1
  31. package/bundles/material-core.umd.js +31 -6
  32. package/bundles/material-core.umd.js.map +1 -1
  33. package/bundles/material-core.umd.min.js +2 -2
  34. package/bundles/material-core.umd.min.js.map +1 -1
  35. package/bundles/material-datepicker.umd.js +94 -22
  36. package/bundles/material-datepicker.umd.js.map +1 -1
  37. package/bundles/material-datepicker.umd.min.js +2 -2
  38. package/bundles/material-datepicker.umd.min.js.map +1 -1
  39. package/bundles/material-dialog.umd.js +41 -6
  40. package/bundles/material-dialog.umd.js.map +1 -1
  41. package/bundles/material-dialog.umd.min.js +1 -1
  42. package/bundles/material-dialog.umd.min.js.map +1 -1
  43. package/bundles/material-expansion.umd.js +70 -4
  44. package/bundles/material-expansion.umd.js.map +1 -1
  45. package/bundles/material-expansion.umd.min.js +1 -1
  46. package/bundles/material-expansion.umd.min.js.map +1 -1
  47. package/bundles/material-form-field.umd.js +1 -1
  48. package/bundles/material-form-field.umd.js.map +1 -1
  49. package/bundles/material-form-field.umd.min.js +1 -1
  50. package/bundles/material-form-field.umd.min.js.map +1 -1
  51. package/bundles/material-grid-list.umd.js +1 -1
  52. package/bundles/material-grid-list.umd.min.js +1 -1
  53. package/bundles/material-list.umd.js +39 -21
  54. package/bundles/material-list.umd.js.map +1 -1
  55. package/bundles/material-list.umd.min.js +1 -1
  56. package/bundles/material-list.umd.min.js.map +1 -1
  57. package/bundles/material-menu.umd.js +123 -73
  58. package/bundles/material-menu.umd.js.map +1 -1
  59. package/bundles/material-menu.umd.min.js +1 -1
  60. package/bundles/material-menu.umd.min.js.map +1 -1
  61. package/bundles/material-progress-spinner.umd.js +66 -22
  62. package/bundles/material-progress-spinner.umd.js.map +1 -1
  63. package/bundles/material-progress-spinner.umd.min.js +1 -1
  64. package/bundles/material-progress-spinner.umd.min.js.map +1 -1
  65. package/bundles/material-radio.umd.js +22 -3
  66. package/bundles/material-radio.umd.js.map +1 -1
  67. package/bundles/material-radio.umd.min.js +1 -1
  68. package/bundles/material-radio.umd.min.js.map +1 -1
  69. package/bundles/material-sidenav.umd.js +4 -1
  70. package/bundles/material-sidenav.umd.js.map +1 -1
  71. package/bundles/material-sidenav.umd.min.js +1 -1
  72. package/bundles/material-sidenav.umd.min.js.map +1 -1
  73. package/bundles/material-tabs.umd.js +354 -315
  74. package/bundles/material-tabs.umd.js.map +1 -1
  75. package/bundles/material-tabs.umd.min.js +2 -2
  76. package/bundles/material-tabs.umd.min.js.map +1 -1
  77. package/bundles/material-tooltip.umd.js +2 -1
  78. package/bundles/material-tooltip.umd.js.map +1 -1
  79. package/bundles/material-tooltip.umd.min.js +1 -1
  80. package/bundles/material-tooltip.umd.min.js.map +1 -1
  81. package/bundles/material.umd.js +883 -478
  82. package/bundles/material.umd.js.map +1 -1
  83. package/bundles/material.umd.min.js +19 -19
  84. package/bundles/material.umd.min.js.map +1 -1
  85. package/button-toggle/typings/button-toggle.d.ts +1 -1
  86. package/card/typings/card.d.ts +2 -0
  87. package/card/typings/index.metadata.json +1 -1
  88. package/checkbox/typings/checkbox.d.ts +1 -1
  89. package/checkbox/typings/index.metadata.json +1 -1
  90. package/chips/typings/chip.d.ts +4 -2
  91. package/chips/typings/index.metadata.json +1 -1
  92. package/core/typings/common-behaviors/common-module.d.ts +2 -0
  93. package/core/typings/index.metadata.json +1 -1
  94. package/datepicker/typings/calendar.d.ts +1 -1
  95. package/datepicker/typings/index.metadata.json +1 -1
  96. package/datepicker/typings/multi-year-view.d.ts +7 -0
  97. package/datepicker/typings/public-api.d.ts +1 -1
  98. package/dialog/typings/dialog-ref.d.ts +2 -0
  99. package/dialog/typings/index.metadata.json +1 -1
  100. package/esm2015/autocomplete.js +4 -0
  101. package/esm2015/autocomplete.js.map +1 -1
  102. package/esm2015/bottom-sheet.js +24 -9
  103. package/esm2015/bottom-sheet.js.map +1 -1
  104. package/esm2015/button-toggle.js.map +1 -1
  105. package/esm2015/button.js +1 -1
  106. package/esm2015/button.js.map +1 -1
  107. package/esm2015/card.js +18 -3
  108. package/esm2015/card.js.map +1 -1
  109. package/esm2015/checkbox.js +2 -2
  110. package/esm2015/checkbox.js.map +1 -1
  111. package/esm2015/chips.js +10 -3
  112. package/esm2015/chips.js.map +1 -1
  113. package/esm2015/core.js +22 -2
  114. package/esm2015/core.js.map +1 -1
  115. package/esm2015/datepicker.js +93 -21
  116. package/esm2015/datepicker.js.map +1 -1
  117. package/esm2015/dialog.js +42 -7
  118. package/esm2015/dialog.js.map +1 -1
  119. package/esm2015/expansion.js +57 -4
  120. package/esm2015/expansion.js.map +1 -1
  121. package/esm2015/form-field.js +1 -1
  122. package/esm2015/form-field.js.map +1 -1
  123. package/esm2015/grid-list.js +1 -1
  124. package/esm2015/list.js +40 -22
  125. package/esm2015/list.js.map +1 -1
  126. package/esm2015/material.js +6 -6
  127. package/esm2015/menu.js +74 -52
  128. package/esm2015/menu.js.map +1 -1
  129. package/esm2015/progress-spinner.js +64 -20
  130. package/esm2015/progress-spinner.js.map +1 -1
  131. package/esm2015/radio.js +23 -5
  132. package/esm2015/radio.js.map +1 -1
  133. package/esm2015/sidenav.js +5 -2
  134. package/esm2015/sidenav.js.map +1 -1
  135. package/esm2015/tabs.js +281 -222
  136. package/esm2015/tabs.js.map +1 -1
  137. package/esm2015/tooltip.js +3 -2
  138. package/esm2015/tooltip.js.map +1 -1
  139. package/esm5/autocomplete.es5.js +4 -0
  140. package/esm5/autocomplete.es5.js.map +1 -1
  141. package/esm5/bottom-sheet.es5.js +24 -9
  142. package/esm5/bottom-sheet.es5.js.map +1 -1
  143. package/esm5/button-toggle.es5.js.map +1 -1
  144. package/esm5/button.es5.js +1 -1
  145. package/esm5/button.es5.js.map +1 -1
  146. package/esm5/card.es5.js +14 -4
  147. package/esm5/card.es5.js.map +1 -1
  148. package/esm5/checkbox.es5.js +2 -2
  149. package/esm5/checkbox.es5.js.map +1 -1
  150. package/esm5/chips.es5.js +9 -3
  151. package/esm5/chips.es5.js.map +1 -1
  152. package/esm5/core.es5.js +28 -2
  153. package/esm5/core.es5.js.map +1 -1
  154. package/esm5/datepicker.es5.js +92 -20
  155. package/esm5/datepicker.es5.js.map +1 -1
  156. package/esm5/dialog.es5.js +42 -7
  157. package/esm5/dialog.es5.js.map +1 -1
  158. package/esm5/expansion.es5.js +70 -4
  159. package/esm5/expansion.es5.js.map +1 -1
  160. package/esm5/form-field.es5.js +1 -1
  161. package/esm5/form-field.es5.js.map +1 -1
  162. package/esm5/grid-list.es5.js +1 -1
  163. package/esm5/list.es5.js +40 -22
  164. package/esm5/list.es5.js.map +1 -1
  165. package/esm5/material.es5.js +6 -6
  166. package/esm5/menu.es5.js +122 -72
  167. package/esm5/menu.es5.js.map +1 -1
  168. package/esm5/progress-spinner.es5.js +64 -20
  169. package/esm5/progress-spinner.es5.js.map +1 -1
  170. package/esm5/radio.es5.js +22 -5
  171. package/esm5/radio.es5.js.map +1 -1
  172. package/esm5/sidenav.es5.js +5 -2
  173. package/esm5/sidenav.es5.js.map +1 -1
  174. package/esm5/tabs.es5.js +342 -303
  175. package/esm5/tabs.es5.js.map +1 -1
  176. package/esm5/tooltip.es5.js +3 -2
  177. package/esm5/tooltip.es5.js.map +1 -1
  178. package/expansion/typings/accordion-base.d.ts +4 -0
  179. package/expansion/typings/accordion.d.ts +3 -1
  180. package/expansion/typings/expansion-panel-header.d.ts +6 -0
  181. package/expansion/typings/expansion-panel.d.ts +5 -2
  182. package/expansion/typings/index.metadata.json +1 -1
  183. package/form-field/typings/index.metadata.json +1 -1
  184. package/grid-list/typings/index.d.ts +1 -1
  185. package/grid-list/typings/index.metadata.json +1 -1
  186. package/list/typings/index.metadata.json +1 -1
  187. package/list/typings/selection-list.d.ts +5 -5
  188. package/menu/typings/index.d.ts +2 -2
  189. package/menu/typings/index.metadata.json +1 -1
  190. package/menu/typings/menu-item.d.ts +1 -1
  191. package/menu/typings/menu-panel.d.ts +8 -0
  192. package/menu/typings/menu.d.ts +21 -14
  193. package/package.json +4 -4
  194. package/prebuilt-themes/deeppurple-amber.css +1 -1
  195. package/prebuilt-themes/indigo-pink.css +1 -1
  196. package/prebuilt-themes/pink-bluegrey.css +1 -1
  197. package/prebuilt-themes/purple-green.css +1 -1
  198. package/progress-spinner/typings/index.metadata.json +1 -1
  199. package/progress-spinner/typings/progress-spinner.d.ts +14 -6
  200. package/progress-spinner/typings/public-api.d.ts +1 -1
  201. package/radio/typings/index.metadata.json +1 -1
  202. package/radio/typings/radio.d.ts +8 -2
  203. package/schematics/ng-add/fonts/material-fonts.js +1 -1
  204. package/schematics/ng-add/fonts/material-fonts.js.map +1 -1
  205. package/schematics/ng-add/index.js.map +1 -1
  206. package/schematics/ng-generate/address-form/files/__path__/__name@dasherize@if-flat__/{__name@dasherize__.component.__style__ → __name@dasherize__.component.__style__.template} +0 -0
  207. package/schematics/ng-generate/address-form/files/__path__/__name@dasherize@if-flat__/{__name@dasherize__.component.html → __name@dasherize__.component.html.template} +0 -0
  208. package/schematics/ng-generate/address-form/files/__path__/__name@dasherize@if-flat__/{__name@dasherize__.component.spec.ts → __name@dasherize__.component.spec.ts.template} +5 -7
  209. package/schematics/ng-generate/address-form/files/__path__/__name@dasherize@if-flat__/{__name@dasherize__.component.ts → __name@dasherize__.component.ts.template} +0 -0
  210. package/schematics/ng-generate/address-form/index.js +7 -7
  211. package/schematics/ng-generate/address-form/index.js.map +1 -1
  212. package/schematics/ng-generate/dashboard/files/__path__/__name@dasherize@if-flat__/{__name@dasherize__.component.__style__ → __name@dasherize__.component.__style__.template} +0 -0
  213. package/schematics/ng-generate/dashboard/files/__path__/__name@dasherize@if-flat__/{__name@dasherize__.component.html → __name@dasherize__.component.html.template} +0 -0
  214. package/schematics/ng-generate/dashboard/files/__path__/__name@dasherize@if-flat__/{__name@dasherize__.component.spec.ts → __name@dasherize__.component.spec.ts.template} +5 -7
  215. package/schematics/ng-generate/dashboard/files/__path__/__name@dasherize@if-flat__/{__name@dasherize__.component.ts → __name@dasherize__.component.ts.template} +0 -0
  216. package/schematics/ng-generate/dashboard/index.js +7 -7
  217. package/schematics/ng-generate/dashboard/index.js.map +1 -1
  218. package/schematics/ng-generate/nav/files/__path__/__name@dasherize@if-flat__/{__name@dasherize__.component.__style__ → __name@dasherize__.component.__style__.template} +0 -0
  219. package/schematics/ng-generate/nav/files/__path__/__name@dasherize@if-flat__/{__name@dasherize__.component.html → __name@dasherize__.component.html.template} +0 -0
  220. package/schematics/ng-generate/nav/files/__path__/__name@dasherize@if-flat__/{__name@dasherize__.component.spec.ts → __name@dasherize__.component.spec.ts.template} +5 -7
  221. package/schematics/ng-generate/nav/files/__path__/__name@dasherize@if-flat__/{__name@dasherize__.component.ts → __name@dasherize__.component.ts.template} +3 -2
  222. package/schematics/ng-generate/nav/index.js +7 -7
  223. package/schematics/ng-generate/nav/index.js.map +1 -1
  224. package/schematics/ng-generate/table/files/__path__/__name@dasherize@if-flat__/{__name@dasherize__-datasource.ts → __name@dasherize__-datasource.ts.template} +2 -1
  225. package/schematics/ng-generate/table/files/__path__/__name@dasherize@if-flat__/{__name@dasherize__.component.__style__ → __name@dasherize__.component.__style__.template} +0 -0
  226. package/schematics/ng-generate/table/files/__path__/__name@dasherize@if-flat__/{__name@dasherize__.component.html → __name@dasherize__.component.html.template} +0 -0
  227. package/schematics/ng-generate/table/files/__path__/__name@dasherize@if-flat__/{__name@dasherize__.component.spec.ts → __name@dasherize__.component.spec.ts.template} +3 -1
  228. package/schematics/ng-generate/table/files/__path__/__name@dasherize@if-flat__/{__name@dasherize__.component.ts → __name@dasherize__.component.ts.template} +6 -4
  229. package/schematics/ng-generate/table/index.js +5 -5
  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.__style__ → __name@dasherize__.component.__style__.template} +0 -0
  232. package/schematics/ng-generate/tree/files/__path__/__name@dasherize@if-flat__/{__name@dasherize__.component.html → __name@dasherize__.component.html.template} +0 -0
  233. package/schematics/ng-generate/tree/files/__path__/__name@dasherize@if-flat__/{__name@dasherize__.component.spec.ts → __name@dasherize__.component.spec.ts.template} +3 -1
  234. package/schematics/ng-generate/tree/files/__path__/__name@dasherize@if-flat__/{__name@dasherize__.component.ts → __name@dasherize__.component.ts.template} +0 -0
  235. package/schematics/ng-generate/tree/files/__path__/__name@dasherize@if-flat__/{example-data.ts → example-data.ts.template} +1 -1
  236. package/schematics/ng-generate/tree/index.js +5 -5
  237. package/schematics/ng-generate/tree/index.js.map +1 -1
  238. package/schematics/ng-update/data/class-names.js +3 -12
  239. package/schematics/ng-update/data/class-names.js.map +1 -1
  240. package/schematics/ng-update/data/constructor-checks.js +7 -29
  241. package/schematics/ng-update/data/constructor-checks.js.map +1 -1
  242. package/schematics/ng-update/data/css-selectors.js +19 -68
  243. package/schematics/ng-update/data/css-selectors.js.map +1 -1
  244. package/schematics/ng-update/data/element-selectors.js +3 -10
  245. package/schematics/ng-update/data/element-selectors.js.map +1 -1
  246. package/schematics/ng-update/data/input-names.js +17 -55
  247. package/schematics/ng-update/data/input-names.js.map +1 -1
  248. package/schematics/ng-update/data/property-names.js +28 -100
  249. package/schematics/ng-update/data/property-names.js.map +1 -1
  250. package/schematics/ng-update/index.d.ts +0 -2
  251. package/schematics/ng-update/index.js +27 -34
  252. package/schematics/ng-update/index.js.map +1 -1
  253. package/schematics/ng-update/typescript/module-specifiers.js.map +1 -1
  254. package/schematics/ng-update/upgrade-rules/misc-checks/misc-class-inheritance-rule.d.ts +18 -0
  255. package/schematics/ng-update/upgrade-rules/misc-checks/misc-class-inheritance-rule.js +47 -0
  256. package/schematics/ng-update/upgrade-rules/misc-checks/misc-class-inheritance-rule.js.map +1 -0
  257. package/schematics/ng-update/upgrade-rules/misc-checks/misc-class-names-rule.d.ts +18 -0
  258. package/schematics/ng-update/upgrade-rules/misc-checks/misc-class-names-rule.js +42 -0
  259. package/schematics/ng-update/upgrade-rules/misc-checks/misc-class-names-rule.js.map +1 -0
  260. 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
  261. package/schematics/ng-update/upgrade-rules/misc-checks/{checkImportsMiscRule.js → misc-imports-rule.js} +19 -16
  262. package/schematics/ng-update/upgrade-rules/misc-checks/misc-imports-rule.js.map +1 -0
  263. package/schematics/ng-update/upgrade-rules/misc-checks/misc-property-names-rule.d.ts +18 -0
  264. package/schematics/ng-update/upgrade-rules/misc-checks/misc-property-names-rule.js +46 -0
  265. package/schematics/ng-update/upgrade-rules/misc-checks/misc-property-names-rule.js.map +1 -0
  266. package/schematics/ng-update/upgrade-rules/misc-checks/misc-template-rule.d.ts +16 -0
  267. package/schematics/ng-update/upgrade-rules/misc-checks/misc-template-rule.js +59 -0
  268. package/schematics/ng-update/upgrade-rules/misc-checks/misc-template-rule.js.map +1 -0
  269. package/schematics/ng-update/upgrade-rules/misc-ripples-v7/{rippleSpeedFactorAssignmentRule.d.ts → ripple-speed-factor-rule.d.ts} +11 -9
  270. package/schematics/ng-update/upgrade-rules/misc-ripples-v7/{rippleSpeedFactorAssignmentRule.js → ripple-speed-factor-rule.js} +57 -31
  271. package/schematics/ng-update/upgrade-rules/misc-ripples-v7/ripple-speed-factor-rule.js.map +1 -0
  272. package/schematics/ng-update/upgrade-rules/package-imports-v8/secondary-entry-points-rule.d.ts +18 -0
  273. package/schematics/ng-update/upgrade-rules/package-imports-v8/{updateAngularMaterialImportsRule.js → secondary-entry-points-rule.js} +40 -52
  274. package/schematics/ng-update/upgrade-rules/package-imports-v8/secondary-entry-points-rule.js.map +1 -0
  275. package/sidenav/typings/index.metadata.json +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/tooltip/typings/index.metadata.json +1 -1
  285. package/typings/bottom-sheet/bottom-sheet-config.d.ts +4 -1
  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/card/card.d.ts +2 -0
  290. package/typings/card/index.metadata.json +1 -1
  291. package/typings/checkbox/checkbox.d.ts +1 -1
  292. package/typings/checkbox/index.metadata.json +1 -1
  293. package/typings/chips/chip.d.ts +4 -2
  294. package/typings/chips/index.metadata.json +1 -1
  295. package/typings/core/common-behaviors/common-module.d.ts +2 -0
  296. package/typings/core/index.metadata.json +1 -1
  297. package/typings/datepicker/calendar.d.ts +1 -1
  298. package/typings/datepicker/index.metadata.json +1 -1
  299. package/typings/datepicker/multi-year-view.d.ts +7 -0
  300. package/typings/datepicker/public-api.d.ts +1 -1
  301. package/typings/dialog/dialog-ref.d.ts +2 -0
  302. package/typings/dialog/index.metadata.json +1 -1
  303. package/typings/esm5/bottom-sheet/bottom-sheet-config.d.ts +4 -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/card/card.d.ts +2 -0
  308. package/typings/esm5/card/index.metadata.json +1 -1
  309. package/typings/esm5/checkbox/checkbox.d.ts +1 -1
  310. package/typings/esm5/checkbox/index.metadata.json +1 -1
  311. package/typings/esm5/chips/chip.d.ts +4 -2
  312. package/typings/esm5/chips/index.metadata.json +1 -1
  313. package/typings/esm5/core/common-behaviors/common-module.d.ts +2 -0
  314. package/typings/esm5/core/index.metadata.json +1 -1
  315. package/typings/esm5/datepicker/calendar.d.ts +1 -1
  316. package/typings/esm5/datepicker/index.metadata.json +1 -1
  317. package/typings/esm5/datepicker/multi-year-view.d.ts +7 -0
  318. package/typings/esm5/datepicker/public-api.d.ts +1 -1
  319. package/typings/esm5/dialog/dialog-ref.d.ts +2 -0
  320. package/typings/esm5/dialog/index.metadata.json +1 -1
  321. package/typings/esm5/expansion/accordion-base.d.ts +4 -0
  322. package/typings/esm5/expansion/accordion.d.ts +3 -1
  323. package/typings/esm5/expansion/expansion-panel-header.d.ts +6 -0
  324. package/typings/esm5/expansion/expansion-panel.d.ts +5 -2
  325. package/typings/esm5/expansion/index.metadata.json +1 -1
  326. package/typings/esm5/form-field/index.metadata.json +1 -1
  327. package/typings/esm5/grid-list/index.d.ts +1 -1
  328. package/typings/esm5/grid-list/index.metadata.json +1 -1
  329. package/typings/esm5/list/index.metadata.json +1 -1
  330. package/typings/esm5/list/selection-list.d.ts +5 -5
  331. package/typings/esm5/menu/index.d.ts +2 -2
  332. package/typings/esm5/menu/index.metadata.json +1 -1
  333. package/typings/esm5/menu/menu-item.d.ts +1 -1
  334. package/typings/esm5/menu/menu-panel.d.ts +8 -0
  335. package/typings/esm5/menu/menu.d.ts +21 -14
  336. package/typings/esm5/progress-spinner/index.metadata.json +1 -1
  337. package/typings/esm5/progress-spinner/progress-spinner.d.ts +14 -6
  338. package/typings/esm5/progress-spinner/public-api.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/sidenav/index.metadata.json +1 -1
  342. package/typings/esm5/tabs/index.d.ts +2 -1
  343. package/typings/esm5/tabs/index.metadata.json +1 -1
  344. package/typings/esm5/tabs/ink-bar.d.ts +2 -1
  345. package/typings/esm5/tabs/paginated-tab-header.d.ts +187 -0
  346. package/typings/esm5/tabs/public-api.d.ts +2 -1
  347. package/typings/esm5/tabs/tab-group.d.ts +2 -1
  348. package/typings/esm5/tabs/tab-header.d.ts +10 -159
  349. package/typings/esm5/tabs/tab-nav-bar/tab-nav-bar.d.ts +27 -30
  350. package/typings/esm5/tooltip/index.metadata.json +1 -1
  351. package/typings/expansion/accordion-base.d.ts +4 -0
  352. package/typings/expansion/accordion.d.ts +3 -1
  353. package/typings/expansion/expansion-panel-header.d.ts +6 -0
  354. package/typings/expansion/expansion-panel.d.ts +5 -2
  355. package/typings/expansion/index.metadata.json +1 -1
  356. package/typings/form-field/index.metadata.json +1 -1
  357. package/typings/grid-list/index.d.ts +1 -1
  358. package/typings/grid-list/index.metadata.json +1 -1
  359. package/typings/list/index.metadata.json +1 -1
  360. package/typings/list/selection-list.d.ts +5 -5
  361. package/typings/menu/index.d.ts +2 -2
  362. package/typings/menu/index.metadata.json +1 -1
  363. package/typings/menu/menu-item.d.ts +1 -1
  364. package/typings/menu/menu-panel.d.ts +8 -0
  365. package/typings/menu/menu.d.ts +21 -14
  366. package/typings/progress-spinner/index.metadata.json +1 -1
  367. package/typings/progress-spinner/progress-spinner.d.ts +14 -6
  368. package/typings/progress-spinner/public-api.d.ts +1 -1
  369. package/typings/radio/index.metadata.json +1 -1
  370. package/typings/radio/radio.d.ts +8 -2
  371. package/typings/schematics/ng-update/index.d.ts +0 -2
  372. package/typings/schematics/ng-update/upgrade-rules/misc-checks/misc-class-inheritance-rule.d.ts +18 -0
  373. package/typings/schematics/ng-update/upgrade-rules/misc-checks/misc-class-names-rule.d.ts +18 -0
  374. 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
  375. package/typings/schematics/ng-update/upgrade-rules/misc-checks/misc-property-names-rule.d.ts +18 -0
  376. package/typings/schematics/ng-update/upgrade-rules/misc-checks/misc-template-rule.d.ts +16 -0
  377. package/typings/schematics/ng-update/upgrade-rules/misc-ripples-v7/{rippleSpeedFactorAssignmentRule.d.ts → ripple-speed-factor-rule.d.ts} +11 -9
  378. package/typings/schematics/ng-update/upgrade-rules/package-imports-v8/secondary-entry-points-rule.d.ts +18 -0
  379. package/typings/sidenav/index.metadata.json +1 -1
  380. package/typings/tabs/index.d.ts +2 -1
  381. package/typings/tabs/index.metadata.json +1 -1
  382. package/typings/tabs/ink-bar.d.ts +2 -1
  383. package/typings/tabs/paginated-tab-header.d.ts +187 -0
  384. package/typings/tabs/public-api.d.ts +2 -1
  385. package/typings/tabs/tab-group.d.ts +2 -1
  386. package/typings/tabs/tab-header.d.ts +10 -159
  387. package/typings/tabs/tab-nav-bar/tab-nav-bar.d.ts +27 -30
  388. package/typings/tooltip/index.metadata.json +1 -1
  389. package/schematics/ng-update/upgrade-rules/misc-checks/checkClassInheritanceMiscRule.d.ts +0 -19
  390. package/schematics/ng-update/upgrade-rules/misc-checks/checkClassInheritanceMiscRule.js +0 -43
  391. package/schematics/ng-update/upgrade-rules/misc-checks/checkClassInheritanceMiscRule.js.map +0 -1
  392. package/schematics/ng-update/upgrade-rules/misc-checks/checkClassNamesMiscRule.d.ts +0 -19
  393. package/schematics/ng-update/upgrade-rules/misc-checks/checkClassNamesMiscRule.js +0 -35
  394. package/schematics/ng-update/upgrade-rules/misc-checks/checkClassNamesMiscRule.js.map +0 -1
  395. package/schematics/ng-update/upgrade-rules/misc-checks/checkImportsMiscRule.js.map +0 -1
  396. package/schematics/ng-update/upgrade-rules/misc-checks/checkPropertyNamesMiscRule.d.ts +0 -19
  397. package/schematics/ng-update/upgrade-rules/misc-checks/checkPropertyNamesMiscRule.js +0 -40
  398. package/schematics/ng-update/upgrade-rules/misc-checks/checkPropertyNamesMiscRule.js.map +0 -1
  399. package/schematics/ng-update/upgrade-rules/misc-checks/checkTemplateMiscRule.d.ts +0 -22
  400. package/schematics/ng-update/upgrade-rules/misc-checks/checkTemplateMiscRule.js +0 -66
  401. package/schematics/ng-update/upgrade-rules/misc-checks/checkTemplateMiscRule.js.map +0 -1
  402. package/schematics/ng-update/upgrade-rules/misc-ripples-v7/rippleSpeedFactorAssignmentRule.js.map +0 -1
  403. package/schematics/ng-update/upgrade-rules/misc-ripples-v7/rippleSpeedFactorTemplateRule.d.ts +0 -22
  404. package/schematics/ng-update/upgrade-rules/misc-ripples-v7/rippleSpeedFactorTemplateRule.js +0 -66
  405. package/schematics/ng-update/upgrade-rules/misc-ripples-v7/rippleSpeedFactorTemplateRule.js.map +0 -1
  406. package/schematics/ng-update/upgrade-rules/package-imports-v8/updateAngularMaterialImportsRule.d.ts +0 -22
  407. package/schematics/ng-update/upgrade-rules/package-imports-v8/updateAngularMaterialImportsRule.js.map +0 -1
  408. package/typings/schematics/ng-update/upgrade-rules/misc-checks/checkClassInheritanceMiscRule.d.ts +0 -19
  409. package/typings/schematics/ng-update/upgrade-rules/misc-checks/checkClassNamesMiscRule.d.ts +0 -19
  410. package/typings/schematics/ng-update/upgrade-rules/misc-checks/checkPropertyNamesMiscRule.d.ts +0 -19
  411. package/typings/schematics/ng-update/upgrade-rules/misc-checks/checkTemplateMiscRule.d.ts +0 -22
  412. package/typings/schematics/ng-update/upgrade-rules/misc-ripples-v7/rippleSpeedFactorTemplateRule.d.ts +0 -22
  413. 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.0');
62
+ var VERSION$1 = new core.Version('8.1.1');
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.1');
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) {
@@ -6333,6 +6362,7 @@ MatBottomSheetRef = /** @class */ (function () {
6333
6362
  * @return {?}
6334
6363
  */
6335
6364
  function () {
6365
+ clearTimeout(_this._closeFallbackTimeout);
6336
6366
  _overlayRef.dispose();
6337
6367
  }));
6338
6368
  _overlayRef.detachments().pipe(operators.take(1)).subscribe((/**
@@ -6347,10 +6377,13 @@ MatBottomSheetRef = /** @class */ (function () {
6347
6377
  * @return {?}
6348
6378
  */
6349
6379
  function (event) { return event.keyCode === keycodes.ESCAPE; })))).subscribe((/**
6380
+ * @param {?} event
6350
6381
  * @return {?}
6351
6382
  */
6352
- function () {
6353
- if (!_this.disableClose) {
6383
+ function (event) {
6384
+ if (!_this.disableClose &&
6385
+ (event.type !== 'keydown' || !keycodes.hasModifierKey((/** @type {?} */ (event))))) {
6386
+ event.preventDefault();
6354
6387
  _this.dismiss();
6355
6388
  }
6356
6389
  }));
@@ -6378,9 +6411,23 @@ MatBottomSheetRef = /** @class */ (function () {
6378
6411
  * @return {?}
6379
6412
  */
6380
6413
  function (event) { return event.phaseName === 'start'; })), operators.take(1)).subscribe((/**
6414
+ * @param {?} event
6381
6415
  * @return {?}
6382
6416
  */
6383
- function () { return _this._overlayRef.detachBackdrop(); }));
6417
+ function (event) {
6418
+ // The logic that disposes of the overlay depends on the exit animation completing, however
6419
+ // it isn't guaranteed if the parent view is destroyed while it's running. Add a fallback
6420
+ // timeout which will clean everything up if the animation hasn't fired within the specified
6421
+ // amount of time plus 100ms. We don't need to run this outside the NgZone, because for the
6422
+ // vast majority of cases the timeout will have been cleared before it has fired.
6423
+ _this._closeFallbackTimeout = setTimeout((/**
6424
+ * @return {?}
6425
+ */
6426
+ function () {
6427
+ _this._overlayRef.dispose();
6428
+ }), event.totalTime + 100);
6429
+ _this._overlayRef.detachBackdrop();
6430
+ }));
6384
6431
  this._result = result;
6385
6432
  this.containerInstance.exit();
6386
6433
  }
@@ -6628,11 +6675,8 @@ var MatBottomSheet = /** @class */ (function () {
6628
6675
  hasBackdrop: config.hasBackdrop,
6629
6676
  disposeOnNavigation: config.closeOnNavigation,
6630
6677
  maxWidth: '100%',
6631
- scrollStrategy: this._overlay.scrollStrategies.block(),
6632
- positionStrategy: this._overlay.position()
6633
- .global()
6634
- .centerHorizontally()
6635
- .bottom('0')
6678
+ scrollStrategy: config.scrollStrategy || this._overlay.scrollStrategies.block(),
6679
+ positionStrategy: this._overlay.position().global().centerHorizontally().bottom('0')
6636
6680
  });
6637
6681
  if (config.backdropClass) {
6638
6682
  overlayConfig.backdropClass = config.backdropClass;
@@ -6763,7 +6807,7 @@ var MatButton = /** @class */ (function (_super) {
6763
6807
  for (var _i = 0, BUTTON_HOST_ATTRIBUTES_1 = BUTTON_HOST_ATTRIBUTES; _i < BUTTON_HOST_ATTRIBUTES_1.length; _i++) {
6764
6808
  var attr = BUTTON_HOST_ATTRIBUTES_1[_i];
6765
6809
  if (_this._hasHostAttributes(attr)) {
6766
- ((/** @type {?} */ (elementRef.nativeElement))).classList.add(attr);
6810
+ ((/** @type {?} */ (_this._getHostElement()))).classList.add(attr);
6767
6811
  }
6768
6812
  }
6769
6813
  _this._focusMonitor.monitor(_this._elementRef, true);
@@ -7962,18 +8006,27 @@ var MatCardAvatar = /** @class */ (function () {
7962
8006
  * - mat-card-footer
7963
8007
  */
7964
8008
  var MatCard = /** @class */ (function () {
7965
- function MatCard() {
8009
+ // @breaking-change 9.0.0 `_animationMode` parameter to be made required.
8010
+ function MatCard(_animationMode) {
8011
+ this._animationMode = _animationMode;
7966
8012
  }
7967
8013
  MatCard.decorators = [
7968
8014
  { type: core.Component, args: [{selector: 'mat-card',
7969
8015
  exportAs: 'matCard',
7970
8016
  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}"],
8017
+ 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
8018
  encapsulation: core.ViewEncapsulation.None,
7973
8019
  changeDetection: core.ChangeDetectionStrategy.OnPush,
7974
- host: { 'class': 'mat-card' }
8020
+ host: {
8021
+ 'class': 'mat-card',
8022
+ '[class._mat-animation-noopable]': '_animationMode === "NoopAnimations"',
8023
+ }
7975
8024
  },] },
7976
8025
  ];
8026
+ /** @nocollapse */
8027
+ MatCard.ctorParameters = function () { return [
8028
+ { type: String, decorators: [{ type: core.Optional }, { type: core.Inject, args: [animations.ANIMATION_MODULE_TYPE,] }] }
8029
+ ]; };
7977
8030
  return MatCard;
7978
8031
  }());
7979
8032
  /**
@@ -8142,7 +8195,7 @@ var MatCheckbox = /** @class */ (function (_super) {
8142
8195
  _this._clickAction = _clickAction;
8143
8196
  _this._animationMode = _animationMode;
8144
8197
  /**
8145
- * Attached to the aria-label attribute of the host element. In most cases, arial-labelledby will
8198
+ * Attached to the aria-label attribute of the host element. In most cases, aria-labelledby will
8146
8199
  * take precedence so this may be omitted.
8147
8200
  */
8148
8201
  _this.ariaLabel = '';
@@ -8640,7 +8693,7 @@ var MatCheckbox = /** @class */ (function (_super) {
8640
8693
  MatCheckbox.decorators = [
8641
8694
  { type: core.Component, args: [{selector: 'mat-checkbox',
8642
8695
  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}"],
8696
+ 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
8697
  exportAs: 'matCheckbox',
8645
8698
  host: {
8646
8699
  'class': 'mat-checkbox',
@@ -8825,7 +8878,9 @@ var MatChipTrailingIcon = /** @class */ (function () {
8825
8878
  */
8826
8879
  var MatChip = /** @class */ (function (_super) {
8827
8880
  __extends(MatChip, _super);
8828
- function MatChip(_elementRef, _ngZone, platform$$1, globalRippleOptions) {
8881
+ function MatChip(_elementRef, _ngZone, platform$$1, globalRippleOptions,
8882
+ // @breaking-change 8.0.0 `animationMode` parameter to become required.
8883
+ animationMode) {
8829
8884
  var _this = _super.call(this, _elementRef) || this;
8830
8885
  _this._elementRef = _elementRef;
8831
8886
  _this._ngZone = _ngZone;
@@ -8868,6 +8923,7 @@ var MatChip = /** @class */ (function (_super) {
8868
8923
  _this._chipRipple = new RippleRenderer(_this, _ngZone, _elementRef, platform$$1);
8869
8924
  _this._chipRipple.setupTriggerEvents(_elementRef.nativeElement);
8870
8925
  _this.rippleConfig = globalRippleOptions || {};
8926
+ _this._animationsDisabled = animationMode === 'NoopAnimations';
8871
8927
  return _this;
8872
8928
  }
8873
8929
  Object.defineProperty(MatChip.prototype, "rippleDisabled", {
@@ -9230,6 +9286,7 @@ var MatChip = /** @class */ (function (_super) {
9230
9286
  '[class.mat-chip-with-avatar]': 'avatar',
9231
9287
  '[class.mat-chip-with-trailing-icon]': 'trailingIcon || removeIcon',
9232
9288
  '[class.mat-chip-disabled]': 'disabled',
9289
+ '[class._mat-animation-noopable]': '_animationsDisabled',
9233
9290
  '[attr.disabled]': 'disabled || null',
9234
9291
  '[attr.aria-disabled]': 'disabled.toString()',
9235
9292
  '[attr.aria-selected]': 'ariaSelected',
@@ -9245,7 +9302,8 @@ var MatChip = /** @class */ (function (_super) {
9245
9302
  { type: core.ElementRef },
9246
9303
  { type: core.NgZone },
9247
9304
  { type: platform.Platform },
9248
- { type: undefined, decorators: [{ type: core.Optional }, { type: core.Inject, args: [MAT_RIPPLE_GLOBAL_OPTIONS,] }] }
9305
+ { type: undefined, decorators: [{ type: core.Optional }, { type: core.Inject, args: [MAT_RIPPLE_GLOBAL_OPTIONS,] }] },
9306
+ { type: String, decorators: [{ type: core.Optional }, { type: core.Inject, args: [animations.ANIMATION_MODULE_TYPE,] }] }
9249
9307
  ]; };
9250
9308
  MatChip.propDecorators = {
9251
9309
  avatar: [{ type: core.ContentChild, args: [MatChipAvatar, { static: false },] }],
@@ -10641,7 +10699,7 @@ var MatChipList = /** @class */ (function (_super) {
10641
10699
  '[id]': '_uid',
10642
10700
  },
10643
10701
  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}"],
10702
+ 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
10703
  encapsulation: core.ViewEncapsulation.None,
10646
10704
  changeDetection: core.ChangeDetectionStrategy.OnPush
10647
10705
  },] },
@@ -11183,15 +11241,29 @@ var MatDialogContainer = /** @class */ (function (_super) {
11183
11241
  * @return {?}
11184
11242
  */
11185
11243
  function () {
11244
+ /** @type {?} */
11245
+ var element = this._elementRef.nativeElement;
11186
11246
  if (!this._focusTrap) {
11187
- this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);
11247
+ this._focusTrap = this._focusTrapFactory.create(element);
11188
11248
  }
11189
- // If were to attempt to focus immediately, then the content of the dialog would not yet be
11249
+ // If we were to attempt to focus immediately, then the content of the dialog would not yet be
11190
11250
  // ready in instances where change detection has to run first. To deal with this, we simply
11191
11251
  // wait for the microtask queue to be empty.
11192
11252
  if (this._config.autoFocus) {
11193
11253
  this._focusTrap.focusInitialElementWhenReady();
11194
11254
  }
11255
+ else {
11256
+ /** @type {?} */
11257
+ var activeElement = this._document.activeElement;
11258
+ // Otherwise ensure that focus is on the dialog container. It's possible that a different
11259
+ // component tried to move focus while the open animation was running. See:
11260
+ // https://github.com/angular/components/issues/16215. Note that we only want to do this
11261
+ // if the focus isn't inside the dialog already, because it's possible that the consumer
11262
+ // turned off `autoFocus` in order to move focus themselves.
11263
+ if (activeElement !== element && !element.contains(activeElement)) {
11264
+ element.focus();
11265
+ }
11266
+ }
11195
11267
  };
11196
11268
  /** Restores focus to the element that was focused before the dialog opened. */
11197
11269
  /**
@@ -11393,7 +11465,10 @@ MatDialogRef = /** @class */ (function () {
11393
11465
  function (event) { return event.phaseName === 'done' && event.toState === 'exit'; })), operators.take(1)).subscribe((/**
11394
11466
  * @return {?}
11395
11467
  */
11396
- function () { return _this._overlayRef.dispose(); }));
11468
+ function () {
11469
+ clearTimeout(_this._closeFallbackTimeout);
11470
+ _this._overlayRef.dispose();
11471
+ }));
11397
11472
  _overlayRef.detachments().subscribe((/**
11398
11473
  * @return {?}
11399
11474
  */
@@ -11410,11 +11485,17 @@ MatDialogRef = /** @class */ (function () {
11410
11485
  * @param {?} event
11411
11486
  * @return {?}
11412
11487
  */
11413
- function (event) { return event.keyCode === keycodes.ESCAPE && !_this.disableClose; })))
11488
+ function (event) {
11489
+ return event.keyCode === keycodes.ESCAPE && !_this.disableClose && !keycodes.hasModifierKey(event);
11490
+ })))
11414
11491
  .subscribe((/**
11492
+ * @param {?} event
11415
11493
  * @return {?}
11416
11494
  */
11417
- function () { return _this.close(); }));
11495
+ function (event) {
11496
+ event.preventDefault();
11497
+ _this.close();
11498
+ }));
11418
11499
  }
11419
11500
  /**
11420
11501
  * Close the dialog.
@@ -11440,12 +11521,24 @@ MatDialogRef = /** @class */ (function () {
11440
11521
  */
11441
11522
  function (event) { return event.phaseName === 'start'; })), operators.take(1))
11442
11523
  .subscribe((/**
11524
+ * @param {?} event
11443
11525
  * @return {?}
11444
11526
  */
11445
- function () {
11527
+ function (event) {
11446
11528
  _this._beforeClosed.next(dialogResult);
11447
11529
  _this._beforeClosed.complete();
11448
11530
  _this._overlayRef.detachBackdrop();
11531
+ // The logic that disposes of the overlay depends on the exit animation completing, however
11532
+ // it isn't guaranteed if the parent view is destroyed while it's running. Add a fallback
11533
+ // timeout which will clean everything up if the animation hasn't fired within the specified
11534
+ // amount of time plus 100ms. We don't need to run this outside the NgZone, because for the
11535
+ // vast majority of cases the timeout will have been cleared before it has the chance to fire.
11536
+ _this._closeFallbackTimeout = setTimeout((/**
11537
+ * @return {?}
11538
+ */
11539
+ function () {
11540
+ _this._overlayRef.dispose();
11541
+ }), event.totalTime + 100);
11449
11542
  }));
11450
11543
  this._containerInstance._startExitAnimation();
11451
11544
  };
@@ -13905,8 +13998,7 @@ var MatMultiYearView = /** @class */ (function () {
13905
13998
  /** @type {?} */
13906
13999
  var validDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value)) || this._dateAdapter.today();
13907
14000
  this._activeDate = this._dateAdapter.clampDate(validDate, this.minDate, this.maxDate);
13908
- if (Math.floor(this._dateAdapter.getYear(oldActiveDate) / yearsPerPage) !=
13909
- Math.floor(this._dateAdapter.getYear(this._activeDate) / yearsPerPage)) {
14001
+ if (!isSameMultiYearView(this._dateAdapter, oldActiveDate, this._activeDate, this.minDate, this.maxDate)) {
13910
14002
  this._init();
13911
14003
  }
13912
14004
  },
@@ -13986,13 +14078,18 @@ var MatMultiYearView = /** @class */ (function () {
13986
14078
  function () {
13987
14079
  var _this = this;
13988
14080
  this._todayYear = this._dateAdapter.getYear(this._dateAdapter.today());
14081
+ // We want a range years such that we maximize the number of
14082
+ // enabled dates visible at once. This prevents issues where the minimum year
14083
+ // is the last item of a page OR the maximum year is the first item of a page.
14084
+ // The offset from the active year to the "slot" for the starting year is the
14085
+ // *actual* first rendered year in the multi-year view.
13989
14086
  /** @type {?} */
13990
14087
  var activeYear = this._dateAdapter.getYear(this._activeDate);
13991
14088
  /** @type {?} */
13992
- var activeOffset = activeYear % yearsPerPage;
14089
+ var minYearOfPage = activeYear - getActiveOffset(this._dateAdapter, this.activeDate, this.minDate, this.maxDate);
13993
14090
  this._years = [];
13994
14091
  for (var i = 0, row = []; i < yearsPerPage; i++) {
13995
- row.push(activeYear - activeOffset + i);
14092
+ row.push(minYearOfPage + i);
13996
14093
  if (row.length == yearsPerRow) {
13997
14094
  this._years.push(row.map((/**
13998
14095
  * @param {?} year
@@ -14035,12 +14132,6 @@ var MatMultiYearView = /** @class */ (function () {
14035
14132
  * @return {?}
14036
14133
  */
14037
14134
  function (event) {
14038
- // TODO(mmalerba): We currently allow keyboard navigation to disabled dates, but just prevent
14039
- // disabled ones from being selected. This may not be ideal, we should look into whether
14040
- // navigation should skip over disabled dates, and if so, how to implement that efficiently.
14041
- // TODO(mmalerba): We currently allow keyboard navigation to disabled dates, but just prevent
14042
- // disabled ones from being selected. This may not be ideal, we should look into whether
14043
- // navigation should skip over disabled dates, and if so, how to implement that efficiently.
14044
14135
  /** @type {?} */
14045
14136
  var oldActiveDate = this._activeDate;
14046
14137
  /** @type {?} */
@@ -14059,10 +14150,10 @@ var MatMultiYearView = /** @class */ (function () {
14059
14150
  this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, yearsPerRow);
14060
14151
  break;
14061
14152
  case keycodes.HOME:
14062
- this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, -this._dateAdapter.getYear(this._activeDate) % yearsPerPage);
14153
+ this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, -getActiveOffset(this._dateAdapter, this.activeDate, this.minDate, this.maxDate));
14063
14154
  break;
14064
14155
  case keycodes.END:
14065
- this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, yearsPerPage - this._dateAdapter.getYear(this._activeDate) % yearsPerPage - 1);
14156
+ this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, yearsPerPage - getActiveOffset(this._dateAdapter, this.activeDate, this.minDate, this.maxDate) - 1);
14066
14157
  break;
14067
14158
  case keycodes.PAGE_UP:
14068
14159
  this.activeDate =
@@ -14094,7 +14185,7 @@ var MatMultiYearView = /** @class */ (function () {
14094
14185
  * @return {?}
14095
14186
  */
14096
14187
  function () {
14097
- return this._dateAdapter.getYear(this.activeDate) % yearsPerPage;
14188
+ return getActiveOffset(this._dateAdapter, this.activeDate, this.minDate, this.maxDate);
14098
14189
  };
14099
14190
  /** Focuses the active cell after the microtask queue is empty. */
14100
14191
  /**
@@ -14218,6 +14309,72 @@ var MatMultiYearView = /** @class */ (function () {
14218
14309
  };
14219
14310
  return MatMultiYearView;
14220
14311
  }());
14312
+ /**
14313
+ * @template D
14314
+ * @param {?} dateAdapter
14315
+ * @param {?} date1
14316
+ * @param {?} date2
14317
+ * @param {?} minDate
14318
+ * @param {?} maxDate
14319
+ * @return {?}
14320
+ */
14321
+ function isSameMultiYearView(dateAdapter, date1, date2, minDate, maxDate) {
14322
+ /** @type {?} */
14323
+ var year1 = dateAdapter.getYear(date1);
14324
+ /** @type {?} */
14325
+ var year2 = dateAdapter.getYear(date2);
14326
+ /** @type {?} */
14327
+ var startingYear = getStartingYear(dateAdapter, minDate, maxDate);
14328
+ return Math.floor((year1 - startingYear) / yearsPerPage) ===
14329
+ Math.floor((year2 - startingYear) / yearsPerPage);
14330
+ }
14331
+ /**
14332
+ * When the multi-year view is first opened, the active year will be in view.
14333
+ * So we compute how many years are between the active year and the *slot* where our
14334
+ * "startingYear" will render when paged into view.
14335
+ * @template D
14336
+ * @param {?} dateAdapter
14337
+ * @param {?} activeDate
14338
+ * @param {?} minDate
14339
+ * @param {?} maxDate
14340
+ * @return {?}
14341
+ */
14342
+ function getActiveOffset(dateAdapter, activeDate, minDate, maxDate) {
14343
+ /** @type {?} */
14344
+ var activeYear = dateAdapter.getYear(activeDate);
14345
+ return euclideanModulo((activeYear - getStartingYear(dateAdapter, minDate, maxDate)), yearsPerPage);
14346
+ }
14347
+ /**
14348
+ * We pick a "starting" year such that either the maximum year would be at the end
14349
+ * or the minimum year would be at the beginning of a page.
14350
+ * @template D
14351
+ * @param {?} dateAdapter
14352
+ * @param {?} minDate
14353
+ * @param {?} maxDate
14354
+ * @return {?}
14355
+ */
14356
+ function getStartingYear(dateAdapter, minDate, maxDate) {
14357
+ /** @type {?} */
14358
+ var startingYear = 0;
14359
+ if (maxDate) {
14360
+ /** @type {?} */
14361
+ var maxYear = dateAdapter.getYear(maxDate);
14362
+ startingYear = maxYear - yearsPerPage + 1;
14363
+ }
14364
+ else if (minDate) {
14365
+ startingYear = dateAdapter.getYear(minDate);
14366
+ }
14367
+ return startingYear;
14368
+ }
14369
+ /**
14370
+ * Gets remainder that is non-negative, even if first number is negative
14371
+ * @param {?} a
14372
+ * @param {?} b
14373
+ * @return {?}
14374
+ */
14375
+ function euclideanModulo(a, b) {
14376
+ return (a % b + b) % b;
14377
+ }
14221
14378
 
14222
14379
  /**
14223
14380
  * @fileoverview added by tsickle
@@ -14692,13 +14849,16 @@ var MatCalendarHeader = /** @class */ (function () {
14692
14849
  if (this.calendar.currentView == 'year') {
14693
14850
  return this._dateAdapter.getYearName(this.calendar.activeDate);
14694
14851
  }
14852
+ // The offset from the active year to the "slot" for the starting year is the
14853
+ // *actual* first rendered year in the multi-year view, and the last year is
14854
+ // just yearsPerPage - 1 away.
14695
14855
  /** @type {?} */
14696
14856
  var activeYear = this._dateAdapter.getYear(this.calendar.activeDate);
14697
14857
  /** @type {?} */
14698
- var firstYearInView = this._dateAdapter.getYearName(this._dateAdapter.createDate(activeYear - activeYear % 24, 0, 1));
14858
+ var minYearOfPage = activeYear - getActiveOffset(this._dateAdapter, this.calendar.activeDate, this.calendar.minDate, this.calendar.maxDate);
14699
14859
  /** @type {?} */
14700
- var lastYearInView = this._dateAdapter.getYearName(this._dateAdapter.createDate(activeYear + yearsPerPage - 1 - activeYear % 24, 0, 1));
14701
- return firstYearInView + " \u2013 " + lastYearInView;
14860
+ var maxYearOfPage = minYearOfPage + yearsPerPage - 1;
14861
+ return minYearOfPage + " \u2013 " + maxYearOfPage;
14702
14862
  },
14703
14863
  enumerable: true,
14704
14864
  configurable: true
@@ -14839,8 +14999,7 @@ var MatCalendarHeader = /** @class */ (function () {
14839
14999
  return this._dateAdapter.getYear(date1) == this._dateAdapter.getYear(date2);
14840
15000
  }
14841
15001
  // Otherwise we are in 'multi-year' view.
14842
- return Math.floor(this._dateAdapter.getYear(date1) / yearsPerPage) ==
14843
- Math.floor(this._dateAdapter.getYear(date2) / yearsPerPage);
15002
+ return isSameMultiYearView(this._dateAdapter, date1, date2, this.calendar.minDate, this.calendar.maxDate);
14844
15003
  };
14845
15004
  MatCalendarHeader.decorators = [
14846
15005
  { type: core.Component, args: [{selector: 'mat-calendar-header',
@@ -15865,9 +16024,15 @@ var MatDatepicker = /** @class */ (function () {
15865
16024
  return event.keyCode === keycodes.ESCAPE ||
15866
16025
  (_this._datepickerInput && event.altKey && event.keyCode === keycodes.UP_ARROW);
15867
16026
  })))).subscribe((/**
16027
+ * @param {?} event
15868
16028
  * @return {?}
15869
16029
  */
15870
- function () { return _this.close(); }));
16030
+ function (event) {
16031
+ if (event) {
16032
+ event.preventDefault();
16033
+ }
16034
+ _this.close();
16035
+ }));
15871
16036
  };
15872
16037
  /** Create the popup PositionStrategy. */
15873
16038
  /**
@@ -17067,6 +17232,25 @@ var MatExpansionPanel = /** @class */ (function (_super) {
17067
17232
  enumerable: true,
17068
17233
  configurable: true
17069
17234
  });
17235
+ Object.defineProperty(MatExpansionPanel.prototype, "togglePosition", {
17236
+ /** Whether the toggle indicator should be hidden. */
17237
+ get: /**
17238
+ * Whether the toggle indicator should be hidden.
17239
+ * @return {?}
17240
+ */
17241
+ function () {
17242
+ return this._togglePosition || (this.accordion && this.accordion.togglePosition);
17243
+ },
17244
+ set: /**
17245
+ * @param {?} value
17246
+ * @return {?}
17247
+ */
17248
+ function (value) {
17249
+ this._togglePosition = value;
17250
+ },
17251
+ enumerable: true,
17252
+ configurable: true
17253
+ });
17070
17254
  /** Determines whether the expansion panel should have spacing between it and its siblings. */
17071
17255
  /**
17072
17256
  * Determines whether the expansion panel should have spacing between it and its siblings.
@@ -17194,6 +17378,7 @@ var MatExpansionPanel = /** @class */ (function (_super) {
17194
17378
  ]; };
17195
17379
  MatExpansionPanel.propDecorators = {
17196
17380
  hideToggle: [{ type: core.Input }],
17381
+ togglePosition: [{ type: core.Input }],
17197
17382
  afterExpand: [{ type: core.Output }],
17198
17383
  afterCollapse: [{ type: core.Output }],
17199
17384
  _lazyContent: [{ type: core.ContentChild, args: [MatExpansionPanelContent, { static: false },] }],
@@ -17232,13 +17417,17 @@ var MatExpansionPanelHeader = /** @class */ (function () {
17232
17417
  this._focusMonitor = _focusMonitor;
17233
17418
  this._changeDetectorRef = _changeDetectorRef;
17234
17419
  this._parentChangeSubscription = rxjs.Subscription.EMPTY;
17420
+ /**
17421
+ * Whether Angular animations in the panel header should be disabled.
17422
+ */
17423
+ this._animationsDisabled = true;
17235
17424
  /** @type {?} */
17236
17425
  var accordionHideToggleChange = panel.accordion ?
17237
17426
  panel.accordion._stateChanges.pipe(operators.filter((/**
17238
17427
  * @param {?} changes
17239
17428
  * @return {?}
17240
17429
  */
17241
- function (changes) { return !!changes['hideToggle']; }))) :
17430
+ function (changes) { return !!(changes['hideToggle'] || changes['togglePosition']); }))) :
17242
17431
  rxjs.EMPTY;
17243
17432
  // Since the toggle state depends on an @Input on the panel, we
17244
17433
  // need to subscribe and trigger change detection manually.
@@ -17247,7 +17436,11 @@ var MatExpansionPanelHeader = /** @class */ (function () {
17247
17436
  * @param {?} changes
17248
17437
  * @return {?}
17249
17438
  */
17250
- function (changes) { return !!(changes['hideToggle'] || changes['disabled']); }))))
17439
+ function (changes) {
17440
+ return !!(changes['hideToggle'] ||
17441
+ changes['disabled'] ||
17442
+ changes['togglePosition']);
17443
+ }))))
17251
17444
  .subscribe((/**
17252
17445
  * @return {?}
17253
17446
  */
@@ -17276,6 +17469,23 @@ var MatExpansionPanelHeader = /** @class */ (function () {
17276
17469
  this.collapsedHeight = defaultOptions.collapsedHeight;
17277
17470
  }
17278
17471
  }
17472
+ /**
17473
+ * @return {?}
17474
+ */
17475
+ MatExpansionPanelHeader.prototype._animationStarted = /**
17476
+ * @return {?}
17477
+ */
17478
+ function () {
17479
+ // Currently the `expansionHeight` animation has a `void => collapsed` transition which is
17480
+ // there to work around a bug in Angular (see #13088), however this introduces a different
17481
+ // issue. The new transition will cause the header to animate in on init (see #16067), if the
17482
+ // consumer has set a header height that is different from the default one. We work around it
17483
+ // by disabling animations on the header and re-enabling them after the first animation has run.
17484
+ // Note that Angular dispatches animation events even if animations are disabled. Ideally this
17485
+ // wouldn't be necessary if we remove the `void => collapsed` transition, but we have to wait
17486
+ // for https://github.com/angular/angular/issues/18847 to be resolved.
17487
+ this._animationsDisabled = false;
17488
+ };
17279
17489
  Object.defineProperty(MatExpansionPanelHeader.prototype, "disabled", {
17280
17490
  /**
17281
17491
  * Whether the associated panel is disabled. Implemented as a part of `FocusableOption`.
@@ -17340,6 +17550,18 @@ var MatExpansionPanelHeader = /** @class */ (function () {
17340
17550
  function () {
17341
17551
  return this.panel.id;
17342
17552
  };
17553
+ /** Gets the toggle position for the header. */
17554
+ /**
17555
+ * Gets the toggle position for the header.
17556
+ * @return {?}
17557
+ */
17558
+ MatExpansionPanelHeader.prototype._getTogglePosition = /**
17559
+ * Gets the toggle position for the header.
17560
+ * @return {?}
17561
+ */
17562
+ function () {
17563
+ return this.panel.togglePosition;
17564
+ };
17343
17565
  /** Gets whether the expand indicator should be shown. */
17344
17566
  /**
17345
17567
  * Gets whether the expand indicator should be shown.
@@ -17413,7 +17635,7 @@ var MatExpansionPanelHeader = /** @class */ (function () {
17413
17635
  };
17414
17636
  MatExpansionPanelHeader.decorators = [
17415
17637
  { type: core.Component, args: [{selector: 'mat-expansion-panel-header',
17416
- 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}"],
17638
+ 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}"],
17417
17639
  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>",
17418
17640
  encapsulation: core.ViewEncapsulation.None,
17419
17641
  changeDetection: core.ChangeDetectionStrategy.OnPush,
@@ -17430,8 +17652,12 @@ var MatExpansionPanelHeader = /** @class */ (function () {
17430
17652
  '[attr.aria-expanded]': '_isExpanded()',
17431
17653
  '[attr.aria-disabled]': 'panel.disabled',
17432
17654
  '[class.mat-expanded]': '_isExpanded()',
17655
+ '[class.mat-expansion-toggle-indicator-after]': "_getTogglePosition() === 'after'",
17656
+ '[class.mat-expansion-toggle-indicator-before]': "_getTogglePosition() === 'before'",
17433
17657
  '(click)': '_toggle()',
17434
17658
  '(keydown)': '_keydown($event)',
17659
+ '[@.disabled]': '_animationsDisabled',
17660
+ '(@expansionHeight.start)': '_animationStarted()',
17435
17661
  '[@expansionHeight]': "{\n value: _getExpandedState(),\n params: {\n collapsedHeight: collapsedHeight,\n expandedHeight: expandedHeight\n }\n }",
17436
17662
  },
17437
17663
  },] },
@@ -17508,6 +17734,10 @@ var MatAccordion = /** @class */ (function (_super) {
17508
17734
  * elevation.
17509
17735
  */
17510
17736
  _this.displayMode = 'default';
17737
+ /**
17738
+ * The position of the expansion indicator.
17739
+ */
17740
+ _this.togglePosition = 'after';
17511
17741
  return _this;
17512
17742
  }
17513
17743
  Object.defineProperty(MatAccordion.prototype, "hideToggle", {
@@ -17593,7 +17823,8 @@ var MatAccordion = /** @class */ (function (_super) {
17593
17823
  MatAccordion.propDecorators = {
17594
17824
  _headers: [{ type: core.ContentChildren, args: [MatExpansionPanelHeader, { descendants: true },] }],
17595
17825
  hideToggle: [{ type: core.Input }],
17596
- displayMode: [{ type: core.Input }]
17826
+ displayMode: [{ type: core.Input }],
17827
+ togglePosition: [{ type: core.Input }]
17597
17828
  };
17598
17829
  return MatAccordion;
17599
17830
  }(accordion.CdkAccordion));
@@ -20960,13 +21191,22 @@ var MatListOption = /** @class */ (function (_super) {
20960
21191
  */
20961
21192
  function () {
20962
21193
  var _this = this;
21194
+ /** @type {?} */
21195
+ var list = this.selectionList;
21196
+ if (list._value && list._value.some((/**
21197
+ * @param {?} value
21198
+ * @return {?}
21199
+ */
21200
+ function (value) { return list.compareWith(value, _this._value); }))) {
21201
+ this._setSelected(true);
21202
+ }
21203
+ /** @type {?} */
21204
+ var wasSelected = this._selected;
20963
21205
  // List options that are selected at initialization can't be reported properly to the form
20964
21206
  // control. This is because it takes some time until the selection-list knows about all
20965
21207
  // available options. Also it can happen that the ControlValueAccessor has an initial value
20966
21208
  // that should be used instead. Deferring the value change report to the next tick ensures
20967
21209
  // that the form control value is not being overwritten.
20968
- /** @type {?} */
20969
- var wasSelected = this._selected;
20970
21210
  Promise.resolve().then((/**
20971
21211
  * @return {?}
20972
21212
  */
@@ -21174,8 +21414,8 @@ var MatListOption = /** @class */ (function (_super) {
21174
21414
  // its theme. The accent theme palette is the default and doesn't need to be set.
21175
21415
  '[class.mat-primary]': 'color === "primary"',
21176
21416
  '[class.mat-warn]': 'color === "warn"',
21177
- '[attr.aria-selected]': 'selected.toString()',
21178
- '[attr.aria-disabled]': 'disabled.toString()',
21417
+ '[attr.aria-selected]': 'selected',
21418
+ '[attr.aria-disabled]': 'disabled',
21179
21419
  },
21180
21420
  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>",
21181
21421
  encapsulation: core.ViewEncapsulation.None,
@@ -21224,6 +21464,17 @@ var MatSelectionList = /** @class */ (function (_super) {
21224
21464
  * Theme color of the selection list. This sets the checkbox color for all list options.
21225
21465
  */
21226
21466
  _this.color = 'accent';
21467
+ /**
21468
+ * Function used for comparing an option against the selected value when determining which
21469
+ * options should appear as selected. The first argument is the value of an options. The second
21470
+ * one is a value from the selected value. A boolean must be returned.
21471
+ */
21472
+ _this.compareWith = (/**
21473
+ * @param {?} a1
21474
+ * @param {?} a2
21475
+ * @return {?}
21476
+ */
21477
+ function (a1, a2) { return a1 === a2; });
21227
21478
  _this._disabled = false;
21228
21479
  /**
21229
21480
  * The currently selected options.
@@ -21238,9 +21489,9 @@ var MatSelectionList = /** @class */ (function (_super) {
21238
21489
  */
21239
21490
  function (_) { });
21240
21491
  /**
21241
- * Subscription to sync value changes in the SelectionModel back to the SelectionList.
21492
+ * Emits when the list has been destroyed.
21242
21493
  */
21243
- _this._modelChanges = rxjs.Subscription.EMPTY;
21494
+ _this._destroyed = new rxjs.Subject();
21244
21495
  /**
21245
21496
  * View to model callback that should be called if the list or its options lost focus.
21246
21497
  */
@@ -21290,12 +21541,11 @@ var MatSelectionList = /** @class */ (function (_super) {
21290
21541
  */
21291
21542
  function () { return false; }))
21292
21543
  .withAllowedModifierKeys(['shiftKey']);
21293
- if (this._tempValues) {
21294
- this._setOptionsFromValues(this._tempValues);
21295
- this._tempValues = null;
21544
+ if (this._value) {
21545
+ this._setOptionsFromValues(this._value);
21296
21546
  }
21297
21547
  // Sync external changes to the model back to the options.
21298
- this._modelChanges = this.selectedOptions.onChange.subscribe((/**
21548
+ this.selectedOptions.onChange.pipe(operators.takeUntil(this._destroyed)).subscribe((/**
21299
21549
  * @param {?} event
21300
21550
  * @return {?}
21301
21551
  */
@@ -21339,8 +21589,9 @@ var MatSelectionList = /** @class */ (function (_super) {
21339
21589
  * @return {?}
21340
21590
  */
21341
21591
  function () {
21342
- this._destroyed = true;
21343
- this._modelChanges.unsubscribe();
21592
+ this._destroyed.next();
21593
+ this._destroyed.complete();
21594
+ this._isDestroyed = true;
21344
21595
  };
21345
21596
  /** Focuses the selection list. */
21346
21597
  /**
@@ -21487,8 +21738,11 @@ var MatSelectionList = /** @class */ (function (_super) {
21487
21738
  // Stop reporting value changes after the list has been destroyed. This avoids
21488
21739
  // cases where the list might wrongly reset its value once it is removed, but
21489
21740
  // the form control is still live.
21490
- if (this.options && !this._destroyed) {
21491
- this._onChange(this._getSelectedOptionValues());
21741
+ if (this.options && !this._isDestroyed) {
21742
+ /** @type {?} */
21743
+ var value = this._getSelectedOptionValues();
21744
+ this._onChange(value);
21745
+ this._value = value;
21492
21746
  }
21493
21747
  };
21494
21748
  /** Emits a change event if the selected state of an option changed. */
@@ -21517,12 +21771,10 @@ var MatSelectionList = /** @class */ (function (_super) {
21517
21771
  * @return {?}
21518
21772
  */
21519
21773
  function (values) {
21774
+ this._value = values;
21520
21775
  if (this.options) {
21521
21776
  this._setOptionsFromValues(values || []);
21522
21777
  }
21523
- else {
21524
- this._tempValues = values;
21525
- }
21526
21778
  };
21527
21779
  /** Implemented as a part of ControlValueAccessor. */
21528
21780
  /**
@@ -21599,10 +21851,7 @@ var MatSelectionList = /** @class */ (function (_super) {
21599
21851
  function (option) {
21600
21852
  // Skip options that are already in the model. This allows us to handle cases
21601
21853
  // where the same primitive value is selected multiple times.
21602
- if (option.selected) {
21603
- return false;
21604
- }
21605
- return _this.compareWith ? _this.compareWith(option.value, value) : option.value === value;
21854
+ return option.selected ? false : _this.compareWith(option.value, value);
21606
21855
  }));
21607
21856
  if (correspondingOption) {
21608
21857
  correspondingOption._setSelected(true);
@@ -22313,13 +22562,9 @@ var _MatMenuBase = /** @class */ (function () {
22313
22562
  this._xPosition = this._defaultOptions.xPosition;
22314
22563
  this._yPosition = this._defaultOptions.yPosition;
22315
22564
  /**
22316
- * Menu items inside the current menu.
22565
+ * Only the direct descendant menu items.
22317
22566
  */
22318
- this._items = [];
22319
- /**
22320
- * Emits whenever the amount of menu items changes.
22321
- */
22322
- this._itemChanges = new rxjs.Subject();
22567
+ this._directDescendantItems = new core.QueryList();
22323
22568
  /**
22324
22569
  * Subscription to tab events on the menu panel
22325
22570
  */
@@ -22513,7 +22758,8 @@ var _MatMenuBase = /** @class */ (function () {
22513
22758
  */
22514
22759
  function () {
22515
22760
  var _this = this;
22516
- this._keyManager = new a11y.FocusKeyManager(this._items).withWrap().withTypeAhead();
22761
+ this._updateDirectDescendants();
22762
+ this._keyManager = new a11y.FocusKeyManager(this._directDescendantItems).withWrap().withTypeAhead();
22517
22763
  this._tabSubscription = this._keyManager.tabOut.subscribe((/**
22518
22764
  * @return {?}
22519
22765
  */
@@ -22526,6 +22772,7 @@ var _MatMenuBase = /** @class */ (function () {
22526
22772
  * @return {?}
22527
22773
  */
22528
22774
  function () {
22775
+ this._directDescendantItems.destroy();
22529
22776
  this._tabSubscription.unsubscribe();
22530
22777
  this.closed.complete();
22531
22778
  };
@@ -22539,7 +22786,7 @@ var _MatMenuBase = /** @class */ (function () {
22539
22786
  * @return {?}
22540
22787
  */
22541
22788
  function () {
22542
- return this._itemChanges.pipe(operators.startWith(this._items), operators.switchMap((/**
22789
+ return this._directDescendantItems.changes.pipe(operators.startWith(this._directDescendantItems), operators.switchMap((/**
22543
22790
  * @param {?} items
22544
22791
  * @return {?}
22545
22792
  */
@@ -22549,6 +22796,56 @@ var _MatMenuBase = /** @class */ (function () {
22549
22796
  */
22550
22797
  function (item) { return item._hovered; }))); })));
22551
22798
  };
22799
+ /*
22800
+ * Registers a menu item with the menu.
22801
+ * @docs-private
22802
+ * @deprecated No longer being used. To be removed.
22803
+ * @breaking-change 9.0.0
22804
+ */
22805
+ /*
22806
+ * Registers a menu item with the menu.
22807
+ * @docs-private
22808
+ * @deprecated No longer being used. To be removed.
22809
+ * @breaking-change 9.0.0
22810
+ */
22811
+ /**
22812
+ * @param {?} _item
22813
+ * @return {?}
22814
+ */
22815
+ _MatMenuBase.prototype.addItem = /*
22816
+ * Registers a menu item with the menu.
22817
+ * @docs-private
22818
+ * @deprecated No longer being used. To be removed.
22819
+ * @breaking-change 9.0.0
22820
+ */
22821
+ /**
22822
+ * @param {?} _item
22823
+ * @return {?}
22824
+ */
22825
+ function (_item) { };
22826
+ /**
22827
+ * Removes an item from the menu.
22828
+ * @docs-private
22829
+ * @deprecated No longer being used. To be removed.
22830
+ * @breaking-change 9.0.0
22831
+ */
22832
+ /**
22833
+ * Removes an item from the menu.
22834
+ * \@docs-private
22835
+ * @deprecated No longer being used. To be removed.
22836
+ * \@breaking-change 9.0.0
22837
+ * @param {?} _item
22838
+ * @return {?}
22839
+ */
22840
+ _MatMenuBase.prototype.removeItem = /**
22841
+ * Removes an item from the menu.
22842
+ * \@docs-private
22843
+ * @deprecated No longer being used. To be removed.
22844
+ * \@breaking-change 9.0.0
22845
+ * @param {?} _item
22846
+ * @return {?}
22847
+ */
22848
+ function (_item) { };
22552
22849
  /** Handle a keyboard event from the menu, delegating to the appropriate action. */
22553
22850
  /**
22554
22851
  * Handle a keyboard event from the menu, delegating to the appropriate action.
@@ -22567,7 +22864,10 @@ var _MatMenuBase = /** @class */ (function () {
22567
22864
  var manager = this._keyManager;
22568
22865
  switch (keyCode) {
22569
22866
  case keycodes.ESCAPE:
22570
- this.closed.emit('keydown');
22867
+ if (!keycodes.hasModifierKey(event)) {
22868
+ event.preventDefault();
22869
+ this.closed.emit('keydown');
22870
+ }
22571
22871
  break;
22572
22872
  case keycodes.LEFT_ARROW:
22573
22873
  if (this.parentMenu && this.direction === 'ltr') {
@@ -22672,57 +22972,6 @@ var _MatMenuBase = /** @class */ (function () {
22672
22972
  this._previousElevation = newElevation;
22673
22973
  }
22674
22974
  };
22675
- /**
22676
- * Registers a menu item with the menu.
22677
- * @docs-private
22678
- */
22679
- /**
22680
- * Registers a menu item with the menu.
22681
- * \@docs-private
22682
- * @param {?} item
22683
- * @return {?}
22684
- */
22685
- _MatMenuBase.prototype.addItem = /**
22686
- * Registers a menu item with the menu.
22687
- * \@docs-private
22688
- * @param {?} item
22689
- * @return {?}
22690
- */
22691
- function (item) {
22692
- // We register the items through this method, rather than picking them up through
22693
- // `ContentChildren`, because we need the items to be picked up by their closest
22694
- // `mat-menu` ancestor. If we used `@ContentChildren(MatMenuItem, {descendants: true})`,
22695
- // all descendant items will bleed into the top-level menu in the case where the consumer
22696
- // has `mat-menu` instances nested inside each other.
22697
- if (this._items.indexOf(item) === -1) {
22698
- this._items.push(item);
22699
- this._itemChanges.next(this._items);
22700
- }
22701
- };
22702
- /**
22703
- * Removes an item from the menu.
22704
- * @docs-private
22705
- */
22706
- /**
22707
- * Removes an item from the menu.
22708
- * \@docs-private
22709
- * @param {?} item
22710
- * @return {?}
22711
- */
22712
- _MatMenuBase.prototype.removeItem = /**
22713
- * Removes an item from the menu.
22714
- * \@docs-private
22715
- * @param {?} item
22716
- * @return {?}
22717
- */
22718
- function (item) {
22719
- /** @type {?} */
22720
- var index = this._items.indexOf(item);
22721
- if (this._items.indexOf(item) > -1) {
22722
- this._items.splice(index, 1);
22723
- this._itemChanges.next(this._items);
22724
- }
22725
- };
22726
22975
  /**
22727
22976
  * Adds classes to the menu panel based on its position. Can be used by
22728
22977
  * consumers to add specific styling based on the position.
@@ -22817,6 +23066,45 @@ var _MatMenuBase = /** @class */ (function () {
22817
23066
  event.element.scrollTop = 0;
22818
23067
  }
22819
23068
  };
23069
+ /**
23070
+ * Sets up a stream that will keep track of any newly-added menu items and will update the list
23071
+ * of direct descendants. We collect the descendants this way, because `_allItems` can include
23072
+ * items that are part of child menus, and using a custom way of registering items is unreliable
23073
+ * when it comes to maintaining the item order.
23074
+ */
23075
+ /**
23076
+ * Sets up a stream that will keep track of any newly-added menu items and will update the list
23077
+ * of direct descendants. We collect the descendants this way, because `_allItems` can include
23078
+ * items that are part of child menus, and using a custom way of registering items is unreliable
23079
+ * when it comes to maintaining the item order.
23080
+ * @private
23081
+ * @return {?}
23082
+ */
23083
+ _MatMenuBase.prototype._updateDirectDescendants = /**
23084
+ * Sets up a stream that will keep track of any newly-added menu items and will update the list
23085
+ * of direct descendants. We collect the descendants this way, because `_allItems` can include
23086
+ * items that are part of child menus, and using a custom way of registering items is unreliable
23087
+ * when it comes to maintaining the item order.
23088
+ * @private
23089
+ * @return {?}
23090
+ */
23091
+ function () {
23092
+ var _this = this;
23093
+ this._allItems.changes
23094
+ .pipe(operators.startWith(this._allItems))
23095
+ .subscribe((/**
23096
+ * @param {?} items
23097
+ * @return {?}
23098
+ */
23099
+ function (items) {
23100
+ _this._directDescendantItems.reset(items.filter((/**
23101
+ * @param {?} item
23102
+ * @return {?}
23103
+ */
23104
+ function (item) { return item._parentMenu === _this; })));
23105
+ _this._directDescendantItems.notifyOnChanges();
23106
+ }));
23107
+ };
22820
23108
  /** @nocollapse */
22821
23109
  _MatMenuBase.ctorParameters = function () { return [
22822
23110
  { type: core.ElementRef },
@@ -22824,6 +23112,7 @@ var _MatMenuBase = /** @class */ (function () {
22824
23112
  { type: undefined, decorators: [{ type: core.Inject, args: [MAT_MENU_DEFAULT_OPTIONS,] }] }
22825
23113
  ]; };
22826
23114
  _MatMenuBase.propDecorators = {
23115
+ _allItems: [{ type: core.ContentChildren, args: [MatMenuItem, { descendants: true },] }],
22827
23116
  backdropClass: [{ type: core.Input }],
22828
23117
  xPosition: [{ type: core.Input }],
22829
23118
  yPosition: [{ type: core.Input }],
@@ -22839,7 +23128,13 @@ var _MatMenuBase = /** @class */ (function () {
22839
23128
  };
22840
23129
  return _MatMenuBase;
22841
23130
  }());
22842
- var MatMenu = /** @class */ (function (_super) {
23131
+ /**
23132
+ * \@docs-private We show the "_MatMenu" class as "MatMenu" in the docs.
23133
+ */
23134
+ var /**
23135
+ * \@docs-private We show the "_MatMenu" class as "MatMenu" in the docs.
23136
+ */
23137
+ MatMenu = /** @class */ (function (_super) {
22843
23138
  __extends(MatMenu, _super);
22844
23139
  function MatMenu() {
22845
23140
  return _super !== null && _super.apply(this, arguments) || this;
@@ -22856,6 +23151,9 @@ var MatMenu = /** @class */ (function (_super) {
22856
23151
  // is used as a provider for DI and query purposes.
22857
23152
  // * _MatMenu - the actual menu component implementation with the Angular metadata that should
22858
23153
  // be tree shaken away for MDC.
23154
+ /**
23155
+ * \@docs-public MatMenu
23156
+ */
22859
23157
  var _MatMenu = /** @class */ (function (_super) {
22860
23158
  __extends(_MatMenu, _super);
22861
23159
  function _MatMenu(elementRef, ngZone, defaultOptions) {
@@ -23223,16 +23521,17 @@ var MatMenuTrigger = /** @class */ (function () {
23223
23521
  function (event) { return event.toState === 'void'; })), operators.take(1),
23224
23522
  // Interrupt if the content got re-attached.
23225
23523
  operators.takeUntil(menu.lazyContent._attached))
23226
- .subscribe((/**
23227
- * @return {?}
23228
- */
23229
- function () { return (/** @type {?} */ (menu.lazyContent)).detach(); }), undefined, (/**
23230
- * @return {?}
23231
- */
23232
- function () {
23524
+ .subscribe({
23525
+ next: (/**
23526
+ * @return {?}
23527
+ */
23528
+ function () { return (/** @type {?} */ (menu.lazyContent)).detach(); }),
23233
23529
  // No matter whether the content got re-attached, reset the menu.
23234
- _this._resetMenu();
23235
- }));
23530
+ complete: (/**
23531
+ * @return {?}
23532
+ */
23533
+ function () { return _this._resetMenu(); })
23534
+ });
23236
23535
  }
23237
23536
  else {
23238
23537
  this._resetMenu();
@@ -26312,7 +26611,8 @@ var MatTooltip = /** @class */ (function () {
26312
26611
  * @return {?}
26313
26612
  */
26314
26613
  function (e) {
26315
- if (this._isTooltipVisible() && e.keyCode === keycodes.ESCAPE) {
26614
+ if (this._isTooltipVisible() && e.keyCode === keycodes.ESCAPE && !keycodes.hasModifierKey(e)) {
26615
+ e.preventDefault();
26316
26616
  e.stopPropagation();
26317
26617
  this.hide(0);
26318
26618
  }
@@ -27805,13 +28105,21 @@ var MatProgressSpinner = /** @class */ (function (_super) {
27805
28105
  var _this = _super.call(this, _elementRef) || this;
27806
28106
  _this._elementRef = _elementRef;
27807
28107
  _this._document = _document;
28108
+ _this._diameter = BASE_SIZE;
27808
28109
  _this._value = 0;
27809
28110
  _this._fallbackAnimation = false;
27810
- _this._diameter = BASE_SIZE;
27811
28111
  /**
27812
28112
  * Mode of the progress circle
27813
28113
  */
27814
28114
  _this.mode = 'determinate';
28115
+ /** @type {?} */
28116
+ var trackedDiameters = MatProgressSpinner._diameters;
28117
+ // The base size is already inserted via the component's structural styles. We still
28118
+ // need to track it so we don't end up adding the same styles again.
28119
+ if (!trackedDiameters.has(_document.head)) {
28120
+ trackedDiameters.set(_document.head, new Set([BASE_SIZE]));
28121
+ }
28122
+ _this._styleRoot = _getShadowRoot(_elementRef.nativeElement, _document) || _document.head;
27815
28123
  _this._fallbackAnimation = platform$$1.EDGE || platform$$1.TRIDENT;
27816
28124
  _this._noopAnimations = animationMode === 'NoopAnimations' &&
27817
28125
  (!!defaults && !defaults._forceAnimations);
@@ -27843,8 +28151,14 @@ var MatProgressSpinner = /** @class */ (function (_super) {
27843
28151
  */
27844
28152
  function (size) {
27845
28153
  this._diameter = coercion.coerceNumberProperty(size);
27846
- if (!this._fallbackAnimation && !MatProgressSpinner._diameters.has(this._diameter)) {
27847
- this._attachStyleNode();
28154
+ if (!this._fallbackAnimation) {
28155
+ /** @type {?} */
28156
+ var trackedDiameters = MatProgressSpinner._diameters;
28157
+ /** @type {?} */
28158
+ var diametersForElement = trackedDiameters.get(this._styleRoot);
28159
+ if (!diametersForElement || !diametersForElement.has(this._diameter)) {
28160
+ this._attachStyleNode();
28161
+ }
27848
28162
  }
27849
28163
  },
27850
28164
  enumerable: true,
@@ -27970,16 +28284,23 @@ var MatProgressSpinner = /** @class */ (function (_super) {
27970
28284
  */
27971
28285
  function () {
27972
28286
  /** @type {?} */
27973
- var styleTag = MatProgressSpinner._styleTag;
27974
- if (!styleTag) {
27975
- styleTag = this._document.createElement('style');
27976
- this._document.head.appendChild(styleTag);
27977
- MatProgressSpinner._styleTag = styleTag;
27978
- }
27979
- if (styleTag && styleTag.sheet) {
27980
- ((/** @type {?} */ (styleTag.sheet))).insertRule(this._getAnimationText(), 0);
28287
+ var styleTag = this._document.createElement('style');
28288
+ /** @type {?} */
28289
+ var styleRoot = this._styleRoot;
28290
+ /** @type {?} */
28291
+ var currentDiameter = this._diameter;
28292
+ /** @type {?} */
28293
+ var diameters = MatProgressSpinner._diameters;
28294
+ /** @type {?} */
28295
+ var diametersForElement = diameters.get(styleRoot);
28296
+ styleTag.setAttribute('mat-spinner-animation', currentDiameter + '');
28297
+ styleTag.textContent = this._getAnimationText();
28298
+ styleRoot.appendChild(styleTag);
28299
+ if (!diametersForElement) {
28300
+ diametersForElement = new Set();
28301
+ diameters.set(styleRoot, diametersForElement);
27981
28302
  }
27982
- MatProgressSpinner._diameters.add(this.diameter);
28303
+ diametersForElement.add(currentDiameter);
27983
28304
  };
27984
28305
  /** Generates animation styles adjusted for the spinner's diameter. */
27985
28306
  /**
@@ -28000,14 +28321,12 @@ var MatProgressSpinner = /** @class */ (function (_super) {
28000
28321
  .replace(/DIAMETER/g, "" + this.diameter);
28001
28322
  };
28002
28323
  /**
28003
- * Tracks diameters of existing instances to de-dupe generated styles (default d = 100)
28004
- */
28005
- MatProgressSpinner._diameters = new Set([BASE_SIZE]);
28006
- /**
28007
- * Used for storing all of the generated keyframe animations.
28008
- * \@dynamic
28324
+ * Tracks diameters of existing instances to de-dupe generated styles (default d = 100).
28325
+ * We need to keep track of which elements the diameters were attached to, because for
28326
+ * elements in the Shadow DOM the style tags are attached to the shadow root, rather
28327
+ * than the document head.
28009
28328
  */
28010
- MatProgressSpinner._styleTag = null;
28329
+ MatProgressSpinner._diameters = new WeakMap();
28011
28330
  MatProgressSpinner.decorators = [
28012
28331
  { type: core.Component, args: [{selector: 'mat-progress-spinner',
28013
28332
  exportAs: 'matProgressSpinner',
@@ -28085,6 +28404,31 @@ var MatSpinner = /** @class */ (function (_super) {
28085
28404
  ]; };
28086
28405
  return MatSpinner;
28087
28406
  }(MatProgressSpinner));
28407
+ /**
28408
+ * Gets the shadow root of an element, if supported and the element is inside the Shadow DOM.
28409
+ * @param {?} element
28410
+ * @param {?} _document
28411
+ * @return {?}
28412
+ */
28413
+ function _getShadowRoot(element, _document) {
28414
+ // TODO(crisbeto): see whether we should move this into the CDK
28415
+ // feature detection utilities once #15616 gets merged in.
28416
+ if (typeof window !== 'undefined') {
28417
+ /** @type {?} */
28418
+ var head = _document.head;
28419
+ // Check whether the browser supports Shadow DOM.
28420
+ if (head && (((/** @type {?} */ (head))).createShadowRoot || head.attachShadow)) {
28421
+ /** @type {?} */
28422
+ var rootNode = element.getRootNode ? element.getRootNode() : null;
28423
+ // We need to take the `ShadowRoot` off of `window`, because the built-in types are
28424
+ // incorrect. See https://github.com/Microsoft/TypeScript/issues/27929.
28425
+ if (rootNode instanceof ((/** @type {?} */ (window))).ShadowRoot) {
28426
+ return rootNode;
28427
+ }
28428
+ }
28429
+ }
28430
+ return null;
28431
+ }
28088
28432
 
28089
28433
  /**
28090
28434
  * @fileoverview added by tsickle
@@ -28114,6 +28458,19 @@ var MatProgressSpinnerModule = /** @class */ (function () {
28114
28458
  * @fileoverview added by tsickle
28115
28459
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
28116
28460
  */
28461
+ /** @type {?} */
28462
+ var MAT_RADIO_DEFAULT_OPTIONS = new core.InjectionToken('mat-radio-default-options', {
28463
+ providedIn: 'root',
28464
+ factory: MAT_RADIO_DEFAULT_OPTIONS_FACTORY
28465
+ });
28466
+ /**
28467
+ * @return {?}
28468
+ */
28469
+ function MAT_RADIO_DEFAULT_OPTIONS_FACTORY() {
28470
+ return {
28471
+ color: 'accent'
28472
+ };
28473
+ }
28117
28474
  // Increasing integer for generating unique ids for radio components.
28118
28475
  /** @type {?} */
28119
28476
  var nextUniqueId$7 = 0;
@@ -28588,12 +28945,13 @@ var _MatRadioButtonMixinBase = mixinDisableRipple(mixinTabIndex(MatRadioButtonBa
28588
28945
  */
28589
28946
  var MatRadioButton = /** @class */ (function (_super) {
28590
28947
  __extends(MatRadioButton, _super);
28591
- function MatRadioButton(radioGroup, elementRef, _changeDetector, _focusMonitor, _radioDispatcher, _animationMode) {
28948
+ function MatRadioButton(radioGroup, elementRef, _changeDetector, _focusMonitor, _radioDispatcher, _animationMode, _providerOverride) {
28592
28949
  var _this = _super.call(this, elementRef) || this;
28593
28950
  _this._changeDetector = _changeDetector;
28594
28951
  _this._focusMonitor = _focusMonitor;
28595
28952
  _this._radioDispatcher = _radioDispatcher;
28596
28953
  _this._animationMode = _animationMode;
28954
+ _this._providerOverride = _providerOverride;
28597
28955
  _this._uniqueId = "mat-radio-" + ++nextUniqueId$7;
28598
28956
  /**
28599
28957
  * The unique ID for the radio button.
@@ -28767,7 +29125,9 @@ var MatRadioButton = /** @class */ (function (_super) {
28767
29125
  * @return {?}
28768
29126
  */
28769
29127
  function () {
28770
- return this._color || (this.radioGroup && this.radioGroup.color) || 'accent';
29128
+ return this._color ||
29129
+ (this.radioGroup && this.radioGroup.color) ||
29130
+ this._providerOverride && this._providerOverride.color || 'accent';
28771
29131
  },
28772
29132
  set: /**
28773
29133
  * @param {?} newValue
@@ -28971,7 +29331,8 @@ var MatRadioButton = /** @class */ (function (_super) {
28971
29331
  { type: core.ChangeDetectorRef },
28972
29332
  { type: a11y.FocusMonitor },
28973
29333
  { type: collections.UniqueSelectionDispatcher },
28974
- { type: String, decorators: [{ type: core.Optional }, { type: core.Inject, args: [animations.ANIMATION_MODULE_TYPE,] }] }
29334
+ { type: String, decorators: [{ type: core.Optional }, { type: core.Inject, args: [animations.ANIMATION_MODULE_TYPE,] }] },
29335
+ { type: undefined, decorators: [{ type: core.Optional }, { type: core.Inject, args: [MAT_RADIO_DEFAULT_OPTIONS,] }] }
28975
29336
  ]; };
28976
29337
  MatRadioButton.propDecorators = {
28977
29338
  id: [{ type: core.Input }],
@@ -29204,7 +29565,9 @@ var MatDrawer = /** @class */ (function () {
29204
29565
  * @param {?} event
29205
29566
  * @return {?}
29206
29567
  */
29207
- function (event) { return event.keyCode === keycodes.ESCAPE && !_this.disableClose; })), operators.takeUntil(_this._destroyed)).subscribe((/**
29568
+ function (event) {
29569
+ return event.keyCode === keycodes.ESCAPE && !_this.disableClose && !keycodes.hasModifierKey(event);
29570
+ })), operators.takeUntil(_this._destroyed)).subscribe((/**
29208
29571
  * @param {?} event
29209
29572
  * @return {?}
29210
29573
  */
@@ -29214,6 +29577,7 @@ var MatDrawer = /** @class */ (function () {
29214
29577
  function () {
29215
29578
  _this.close();
29216
29579
  event.stopPropagation();
29580
+ event.preventDefault();
29217
29581
  })); }));
29218
29582
  }));
29219
29583
  // We need a Subject with distinctUntilChanged, because the `done` event
@@ -35601,10 +35965,11 @@ function _MAT_INK_BAR_POSITIONER_FACTORY() {
35601
35965
  * \@docs-private
35602
35966
  */
35603
35967
  var MatInkBar = /** @class */ (function () {
35604
- function MatInkBar(_elementRef, _ngZone, _inkBarPositioner) {
35968
+ function MatInkBar(_elementRef, _ngZone, _inkBarPositioner, _animationMode) {
35605
35969
  this._elementRef = _elementRef;
35606
35970
  this._ngZone = _ngZone;
35607
35971
  this._inkBarPositioner = _inkBarPositioner;
35972
+ this._animationMode = _animationMode;
35608
35973
  }
35609
35974
  /**
35610
35975
  * Calculates the styles from the provided element in order to align the ink-bar to that element.
@@ -35694,6 +36059,7 @@ var MatInkBar = /** @class */ (function () {
35694
36059
  selector: 'mat-ink-bar',
35695
36060
  host: {
35696
36061
  'class': 'mat-ink-bar',
36062
+ '[class._mat-animation-noopable]': "_animationMode === 'NoopAnimations'",
35697
36063
  },
35698
36064
  },] },
35699
36065
  ];
@@ -35701,7 +36067,8 @@ var MatInkBar = /** @class */ (function () {
35701
36067
  MatInkBar.ctorParameters = function () { return [
35702
36068
  { type: core.ElementRef },
35703
36069
  { type: core.NgZone },
35704
- { type: undefined, decorators: [{ type: core.Inject, args: [_MAT_INK_BAR_POSITIONER,] }] }
36070
+ { type: undefined, decorators: [{ type: core.Inject, args: [_MAT_INK_BAR_POSITIONER,] }] },
36071
+ { type: String, decorators: [{ type: core.Optional }, { type: core.Inject, args: [animations.ANIMATION_MODULE_TYPE,] }] }
35705
36072
  ]; };
35706
36073
  return MatInkBar;
35707
36074
  }());
@@ -36329,76 +36696,57 @@ var HEADER_SCROLL_DELAY = 650;
36329
36696
  * @type {?}
36330
36697
  */
36331
36698
  var HEADER_SCROLL_INTERVAL = 100;
36332
- // Boilerplate for applying mixins to MatTabHeader.
36333
- /**
36334
- * \@docs-private
36335
- */
36336
- var
36337
- // Boilerplate for applying mixins to MatTabHeader.
36338
- /**
36339
- * \@docs-private
36340
- */
36341
- MatTabHeaderBase = /** @class */ (function () {
36342
- function MatTabHeaderBase() {
36343
- }
36344
- return MatTabHeaderBase;
36345
- }());
36346
- /** @type {?} */
36347
- var _MatTabHeaderMixinBase = mixinDisableRipple(MatTabHeaderBase);
36348
36699
  /**
36349
- * The header of the tab group which displays a list of all the tabs in the tab group. Includes
36350
- * an ink bar that follows the currently selected tab. When the tabs list's width exceeds the
36351
- * width of the header container, then arrows will be displayed to allow the user to scroll
36352
- * left and right across the header.
36353
- * \@docs-private
36700
+ * Base class for a tab header that supported pagination.
36701
+ * @abstract
36354
36702
  */
36355
- var MatTabHeader = /** @class */ (function (_super) {
36356
- __extends(MatTabHeader, _super);
36357
- function MatTabHeader(_elementRef, _changeDetectorRef, _viewportRuler, _dir, _ngZone, _platform) {
36358
- var _this = _super.call(this) || this;
36359
- _this._elementRef = _elementRef;
36360
- _this._changeDetectorRef = _changeDetectorRef;
36361
- _this._viewportRuler = _viewportRuler;
36362
- _this._dir = _dir;
36363
- _this._ngZone = _ngZone;
36364
- _this._platform = _platform;
36703
+ var MatPaginatedTabHeader = /** @class */ (function () {
36704
+ function MatPaginatedTabHeader(_elementRef, _changeDetectorRef, _viewportRuler, _dir, _ngZone, _platform, _animationMode) {
36705
+ var _this = this;
36706
+ this._elementRef = _elementRef;
36707
+ this._changeDetectorRef = _changeDetectorRef;
36708
+ this._viewportRuler = _viewportRuler;
36709
+ this._dir = _dir;
36710
+ this._ngZone = _ngZone;
36711
+ this._platform = _platform;
36712
+ this._animationMode = _animationMode;
36365
36713
  /**
36366
36714
  * The distance in pixels that the tab labels should be translated to the left.
36367
36715
  */
36368
- _this._scrollDistance = 0;
36716
+ this._scrollDistance = 0;
36369
36717
  /**
36370
36718
  * Whether the header should scroll to the selected index after the view has been checked.
36371
36719
  */
36372
- _this._selectedIndexChanged = false;
36720
+ this._selectedIndexChanged = false;
36373
36721
  /**
36374
36722
  * Emits when the component is destroyed.
36375
36723
  */
36376
- _this._destroyed = new rxjs.Subject();
36724
+ this._destroyed = new rxjs.Subject();
36377
36725
  /**
36378
36726
  * Whether the controls for pagination should be displayed
36379
36727
  */
36380
- _this._showPaginationControls = false;
36728
+ this._showPaginationControls = false;
36381
36729
  /**
36382
36730
  * Whether the tab list can be scrolled more towards the end of the tab label list.
36383
36731
  */
36384
- _this._disableScrollAfter = true;
36732
+ this._disableScrollAfter = true;
36385
36733
  /**
36386
36734
  * Whether the tab list can be scrolled more towards the beginning of the tab label list.
36387
36735
  */
36388
- _this._disableScrollBefore = true;
36736
+ this._disableScrollBefore = true;
36389
36737
  /**
36390
36738
  * Stream that will stop the automated scrolling.
36391
36739
  */
36392
- _this._stopScrolling = new rxjs.Subject();
36393
- _this._selectedIndex = 0;
36740
+ this._stopScrolling = new rxjs.Subject();
36741
+ this._selectedIndex = 0;
36394
36742
  /**
36395
36743
  * Event emitted when the option is selected.
36396
36744
  */
36397
- _this.selectFocusedIndex = new core.EventEmitter();
36745
+ this.selectFocusedIndex = new core.EventEmitter();
36398
36746
  /**
36399
36747
  * Event emitted when a label is focused.
36400
36748
  */
36401
- _this.indexFocused = new core.EventEmitter();
36749
+ this.indexFocused = new core.EventEmitter();
36402
36750
  // Bind the `mouseleave` event on the outside since it doesn't change anything in the view.
36403
36751
  _ngZone.runOutsideAngular((/**
36404
36752
  * @return {?}
@@ -36413,9 +36761,8 @@ var MatTabHeader = /** @class */ (function (_super) {
36413
36761
  _this._stopInterval();
36414
36762
  }));
36415
36763
  }));
36416
- return _this;
36417
36764
  }
36418
- Object.defineProperty(MatTabHeader.prototype, "selectedIndex", {
36765
+ Object.defineProperty(MatPaginatedTabHeader.prototype, "selectedIndex", {
36419
36766
  /** The index of the active tab. */
36420
36767
  get: /**
36421
36768
  * The index of the active tab.
@@ -36428,10 +36775,12 @@ var MatTabHeader = /** @class */ (function (_super) {
36428
36775
  */
36429
36776
  function (value) {
36430
36777
  value = coercion.coerceNumberProperty(value);
36431
- this._selectedIndexChanged = this._selectedIndex != value;
36432
- this._selectedIndex = value;
36433
- if (this._keyManager) {
36434
- this._keyManager.updateActiveItemIndex(value);
36778
+ if (this._selectedIndex != value) {
36779
+ this._selectedIndexChanged = true;
36780
+ this._selectedIndex = value;
36781
+ if (this._keyManager) {
36782
+ this._keyManager.updateActiveItemIndex(value);
36783
+ }
36435
36784
  }
36436
36785
  },
36437
36786
  enumerable: true,
@@ -36440,76 +36789,33 @@ var MatTabHeader = /** @class */ (function (_super) {
36440
36789
  /**
36441
36790
  * @return {?}
36442
36791
  */
36443
- MatTabHeader.prototype.ngAfterContentChecked = /**
36792
+ MatPaginatedTabHeader.prototype.ngAfterViewInit = /**
36444
36793
  * @return {?}
36445
36794
  */
36446
36795
  function () {
36447
- // If the number of tab labels have changed, check if scrolling should be enabled
36448
- if (this._tabLabelCount != this._labelWrappers.length) {
36449
- this.updatePagination();
36450
- this._tabLabelCount = this._labelWrappers.length;
36451
- this._changeDetectorRef.markForCheck();
36452
- }
36453
- // If the selected index has changed, scroll to the label and check if the scrolling controls
36454
- // should be disabled.
36455
- if (this._selectedIndexChanged) {
36456
- this._scrollToLabel(this._selectedIndex);
36457
- this._checkScrollingControls();
36458
- this._alignInkBarToSelectedTab();
36459
- this._selectedIndexChanged = false;
36460
- this._changeDetectorRef.markForCheck();
36461
- }
36462
- // If the scroll distance has been changed (tab selected, focused, scroll controls activated),
36463
- // then translate the header to reflect this.
36464
- if (this._scrollDistanceChanged) {
36465
- this._updateTabScrollPosition();
36466
- this._scrollDistanceChanged = false;
36467
- this._changeDetectorRef.markForCheck();
36468
- }
36469
- };
36470
- /** Handles keyboard events on the header. */
36471
- /**
36472
- * Handles keyboard events on the header.
36473
- * @param {?} event
36474
- * @return {?}
36475
- */
36476
- MatTabHeader.prototype._handleKeydown = /**
36477
- * Handles keyboard events on the header.
36478
- * @param {?} event
36479
- * @return {?}
36480
- */
36481
- function (event) {
36482
- // We don't handle any key bindings with a modifier key.
36483
- if (keycodes.hasModifierKey(event)) {
36484
- return;
36485
- }
36486
- switch (event.keyCode) {
36487
- case keycodes.HOME:
36488
- this._keyManager.setFirstItemActive();
36489
- event.preventDefault();
36490
- break;
36491
- case keycodes.END:
36492
- this._keyManager.setLastItemActive();
36493
- event.preventDefault();
36494
- break;
36495
- case keycodes.ENTER:
36496
- case keycodes.SPACE:
36497
- this.selectFocusedIndex.emit(this.focusIndex);
36498
- event.preventDefault();
36499
- break;
36500
- default:
36501
- this._keyManager.onKeydown(event);
36502
- }
36796
+ var _this = this;
36797
+ // We need to handle these events manually, because we want to bind passive event listeners.
36798
+ rxjs.fromEvent(this._previousPaginator.nativeElement, 'touchstart', passiveEventListenerOptions$1)
36799
+ .pipe(operators.takeUntil(this._destroyed))
36800
+ .subscribe((/**
36801
+ * @return {?}
36802
+ */
36803
+ function () {
36804
+ _this._handlePaginatorPress('before');
36805
+ }));
36806
+ rxjs.fromEvent(this._nextPaginator.nativeElement, 'touchstart', passiveEventListenerOptions$1)
36807
+ .pipe(operators.takeUntil(this._destroyed))
36808
+ .subscribe((/**
36809
+ * @return {?}
36810
+ */
36811
+ function () {
36812
+ _this._handlePaginatorPress('after');
36813
+ }));
36503
36814
  };
36504
36815
  /**
36505
- * Aligns the ink bar to the selected tab on load.
36506
- */
36507
- /**
36508
- * Aligns the ink bar to the selected tab on load.
36509
36816
  * @return {?}
36510
36817
  */
36511
- MatTabHeader.prototype.ngAfterContentInit = /**
36512
- * Aligns the ink bar to the selected tab on load.
36818
+ MatPaginatedTabHeader.prototype.ngAfterContentInit = /**
36513
36819
  * @return {?}
36514
36820
  */
36515
36821
  function () {
@@ -36526,7 +36832,7 @@ var MatTabHeader = /** @class */ (function (_super) {
36526
36832
  _this.updatePagination();
36527
36833
  _this._alignInkBarToSelectedTab();
36528
36834
  });
36529
- this._keyManager = new a11y.FocusKeyManager(this._labelWrappers)
36835
+ this._keyManager = new a11y.FocusKeyManager(this._items)
36530
36836
  .withHorizontalOrientation(this._getLayoutDirection())
36531
36837
  .withWrap();
36532
36838
  this._keyManager.updateActiveItem(0);
@@ -36535,7 +36841,7 @@ var MatTabHeader = /** @class */ (function (_super) {
36535
36841
  typeof requestAnimationFrame !== 'undefined' ? requestAnimationFrame(realign) : realign();
36536
36842
  // On dir change or window resize, realign the ink bar and update the orientation of
36537
36843
  // the key manager if the direction has changed.
36538
- rxjs.merge(dirChange, resize).pipe(operators.takeUntil(this._destroyed)).subscribe((/**
36844
+ rxjs.merge(dirChange, resize, this._items.changes).pipe(operators.takeUntil(this._destroyed)).subscribe((/**
36539
36845
  * @return {?}
36540
36846
  */
36541
36847
  function () {
@@ -36557,33 +36863,37 @@ var MatTabHeader = /** @class */ (function (_super) {
36557
36863
  /**
36558
36864
  * @return {?}
36559
36865
  */
36560
- MatTabHeader.prototype.ngAfterViewInit = /**
36866
+ MatPaginatedTabHeader.prototype.ngAfterContentChecked = /**
36561
36867
  * @return {?}
36562
36868
  */
36563
36869
  function () {
36564
- var _this = this;
36565
- // We need to handle these events manually, because we want to bind passive event listeners.
36566
- rxjs.fromEvent(this._previousPaginator.nativeElement, 'touchstart', passiveEventListenerOptions$1)
36567
- .pipe(operators.takeUntil(this._destroyed))
36568
- .subscribe((/**
36569
- * @return {?}
36570
- */
36571
- function () {
36572
- _this._handlePaginatorPress('before');
36573
- }));
36574
- rxjs.fromEvent(this._nextPaginator.nativeElement, 'touchstart', passiveEventListenerOptions$1)
36575
- .pipe(operators.takeUntil(this._destroyed))
36576
- .subscribe((/**
36577
- * @return {?}
36578
- */
36579
- function () {
36580
- _this._handlePaginatorPress('after');
36581
- }));
36870
+ // If the number of tab labels have changed, check if scrolling should be enabled
36871
+ if (this._tabLabelCount != this._items.length) {
36872
+ this.updatePagination();
36873
+ this._tabLabelCount = this._items.length;
36874
+ this._changeDetectorRef.markForCheck();
36875
+ }
36876
+ // If the selected index has changed, scroll to the label and check if the scrolling controls
36877
+ // should be disabled.
36878
+ if (this._selectedIndexChanged) {
36879
+ this._scrollToLabel(this._selectedIndex);
36880
+ this._checkScrollingControls();
36881
+ this._alignInkBarToSelectedTab();
36882
+ this._selectedIndexChanged = false;
36883
+ this._changeDetectorRef.markForCheck();
36884
+ }
36885
+ // If the scroll distance has been changed (tab selected, focused, scroll controls activated),
36886
+ // then translate the header to reflect this.
36887
+ if (this._scrollDistanceChanged) {
36888
+ this._updateTabScrollPosition();
36889
+ this._scrollDistanceChanged = false;
36890
+ this._changeDetectorRef.markForCheck();
36891
+ }
36582
36892
  };
36583
36893
  /**
36584
36894
  * @return {?}
36585
36895
  */
36586
- MatTabHeader.prototype.ngOnDestroy = /**
36896
+ MatPaginatedTabHeader.prototype.ngOnDestroy = /**
36587
36897
  * @return {?}
36588
36898
  */
36589
36899
  function () {
@@ -36591,6 +36901,40 @@ var MatTabHeader = /** @class */ (function (_super) {
36591
36901
  this._destroyed.complete();
36592
36902
  this._stopScrolling.complete();
36593
36903
  };
36904
+ /** Handles keyboard events on the header. */
36905
+ /**
36906
+ * Handles keyboard events on the header.
36907
+ * @param {?} event
36908
+ * @return {?}
36909
+ */
36910
+ MatPaginatedTabHeader.prototype._handleKeydown = /**
36911
+ * Handles keyboard events on the header.
36912
+ * @param {?} event
36913
+ * @return {?}
36914
+ */
36915
+ function (event) {
36916
+ // We don't handle any key bindings with a modifier key.
36917
+ if (keycodes.hasModifierKey(event)) {
36918
+ return;
36919
+ }
36920
+ switch (event.keyCode) {
36921
+ case keycodes.HOME:
36922
+ this._keyManager.setFirstItemActive();
36923
+ event.preventDefault();
36924
+ break;
36925
+ case keycodes.END:
36926
+ this._keyManager.setLastItemActive();
36927
+ event.preventDefault();
36928
+ break;
36929
+ case keycodes.ENTER:
36930
+ case keycodes.SPACE:
36931
+ this.selectFocusedIndex.emit(this.focusIndex);
36932
+ this._itemSelected(event);
36933
+ break;
36934
+ default:
36935
+ this._keyManager.onKeydown(event);
36936
+ }
36937
+ };
36594
36938
  /**
36595
36939
  * Callback for when the MutationObserver detects that the content has changed.
36596
36940
  */
@@ -36598,7 +36942,7 @@ var MatTabHeader = /** @class */ (function (_super) {
36598
36942
  * Callback for when the MutationObserver detects that the content has changed.
36599
36943
  * @return {?}
36600
36944
  */
36601
- MatTabHeader.prototype._onContentChanges = /**
36945
+ MatPaginatedTabHeader.prototype._onContentChanges = /**
36602
36946
  * Callback for when the MutationObserver detects that the content has changed.
36603
36947
  * @return {?}
36604
36948
  */
@@ -36610,7 +36954,7 @@ var MatTabHeader = /** @class */ (function (_super) {
36610
36954
  // will fire even if the text content didn't change which is inefficient and is prone
36611
36955
  // to infinite loops if a poorly constructed expression is passed in (see #14249).
36612
36956
  if (textContent !== this._currentTextContent) {
36613
- this._currentTextContent = textContent;
36957
+ this._currentTextContent = textContent || '';
36614
36958
  // The content observer runs outside the `NgZone` by default, which
36615
36959
  // means that we need to bring the callback back in ourselves.
36616
36960
  this._ngZone.run((/**
@@ -36626,22 +36970,22 @@ var MatTabHeader = /** @class */ (function (_super) {
36626
36970
  /**
36627
36971
  * Updates the view whether pagination should be enabled or not.
36628
36972
  *
36629
- * WARNING: Calling this method can be very costly in terms of performance. It should be called
36973
+ * WARNING: Calling this method can be very costly in terms of performance. It should be called
36630
36974
  * as infrequently as possible from outside of the Tabs component as it causes a reflow of the
36631
36975
  * page.
36632
36976
  */
36633
36977
  /**
36634
36978
  * Updates the view whether pagination should be enabled or not.
36635
36979
  *
36636
- * WARNING: Calling this method can be very costly in terms of performance. It should be called
36980
+ * WARNING: Calling this method can be very costly in terms of performance. It should be called
36637
36981
  * as infrequently as possible from outside of the Tabs component as it causes a reflow of the
36638
36982
  * page.
36639
36983
  * @return {?}
36640
36984
  */
36641
- MatTabHeader.prototype.updatePagination = /**
36985
+ MatPaginatedTabHeader.prototype.updatePagination = /**
36642
36986
  * Updates the view whether pagination should be enabled or not.
36643
36987
  *
36644
- * WARNING: Calling this method can be very costly in terms of performance. It should be called
36988
+ * WARNING: Calling this method can be very costly in terms of performance. It should be called
36645
36989
  * as infrequently as possible from outside of the Tabs component as it causes a reflow of the
36646
36990
  * page.
36647
36991
  * @return {?}
@@ -36651,7 +36995,7 @@ var MatTabHeader = /** @class */ (function (_super) {
36651
36995
  this._checkScrollingControls();
36652
36996
  this._updateTabScrollPosition();
36653
36997
  };
36654
- Object.defineProperty(MatTabHeader.prototype, "focusIndex", {
36998
+ Object.defineProperty(MatPaginatedTabHeader.prototype, "focusIndex", {
36655
36999
  /** Tracks which element has focus; used for keyboard navigation */
36656
37000
  get: /**
36657
37001
  * Tracks which element has focus; used for keyboard navigation
@@ -36685,18 +37029,18 @@ var MatTabHeader = /** @class */ (function (_super) {
36685
37029
  * @param {?} index
36686
37030
  * @return {?}
36687
37031
  */
36688
- MatTabHeader.prototype._isValidIndex = /**
37032
+ MatPaginatedTabHeader.prototype._isValidIndex = /**
36689
37033
  * Determines if an index is valid. If the tabs are not ready yet, we assume that the user is
36690
37034
  * providing a valid index and return true.
36691
37035
  * @param {?} index
36692
37036
  * @return {?}
36693
37037
  */
36694
37038
  function (index) {
36695
- if (!this._labelWrappers) {
37039
+ if (!this._items) {
36696
37040
  return true;
36697
37041
  }
36698
37042
  /** @type {?} */
36699
- var tab = this._labelWrappers ? this._labelWrappers.toArray()[index] : null;
37043
+ var tab = this._items ? this._items.toArray()[index] : null;
36700
37044
  return !!tab && !tab.disabled;
36701
37045
  };
36702
37046
  /**
@@ -36709,7 +37053,7 @@ var MatTabHeader = /** @class */ (function (_super) {
36709
37053
  * @param {?} tabIndex
36710
37054
  * @return {?}
36711
37055
  */
36712
- MatTabHeader.prototype._setTabFocus = /**
37056
+ MatPaginatedTabHeader.prototype._setTabFocus = /**
36713
37057
  * Sets focus on the HTML element for the label wrapper and scrolls it into the view if
36714
37058
  * scrolling is enabled.
36715
37059
  * @param {?} tabIndex
@@ -36719,8 +37063,8 @@ var MatTabHeader = /** @class */ (function (_super) {
36719
37063
  if (this._showPaginationControls) {
36720
37064
  this._scrollToLabel(tabIndex);
36721
37065
  }
36722
- if (this._labelWrappers && this._labelWrappers.length) {
36723
- this._labelWrappers.toArray()[tabIndex].focus();
37066
+ if (this._items && this._items.length) {
37067
+ this._items.toArray()[tabIndex].focus();
36724
37068
  // Do not let the browser manage scrolling to focus the element, this will be handled
36725
37069
  // by using translation. In LTR, the scroll left should be 0. In RTL, the scroll width
36726
37070
  // should be the full width minus the offset width.
@@ -36741,7 +37085,7 @@ var MatTabHeader = /** @class */ (function (_super) {
36741
37085
  * The layout direction of the containing app.
36742
37086
  * @return {?}
36743
37087
  */
36744
- MatTabHeader.prototype._getLayoutDirection = /**
37088
+ MatPaginatedTabHeader.prototype._getLayoutDirection = /**
36745
37089
  * The layout direction of the containing app.
36746
37090
  * @return {?}
36747
37091
  */
@@ -36753,7 +37097,7 @@ var MatTabHeader = /** @class */ (function (_super) {
36753
37097
  * Performs the CSS transformation on the tab list that will cause the list to scroll.
36754
37098
  * @return {?}
36755
37099
  */
36756
- MatTabHeader.prototype._updateTabScrollPosition = /**
37100
+ MatPaginatedTabHeader.prototype._updateTabScrollPosition = /**
36757
37101
  * Performs the CSS transformation on the tab list that will cause the list to scroll.
36758
37102
  * @return {?}
36759
37103
  */
@@ -36775,11 +37119,12 @@ var MatTabHeader = /** @class */ (function (_super) {
36775
37119
  // position to be thrown off in some cases. We have to reset it ourselves to ensure that
36776
37120
  // it doesn't get thrown off. Note that we scope it only to IE and Edge, because messing
36777
37121
  // with the scroll position throws off Chrome 71+ in RTL mode (see #14689).
36778
- if (platform$$1.TRIDENT || platform$$1.EDGE) {
37122
+ // @breaking-change 9.0.0 Remove null check for `platform` after it can no longer be undefined.
37123
+ if (platform$$1 && (platform$$1.TRIDENT || platform$$1.EDGE)) {
36779
37124
  this._tabListContainer.nativeElement.scrollLeft = 0;
36780
37125
  }
36781
37126
  };
36782
- Object.defineProperty(MatTabHeader.prototype, "scrollDistance", {
37127
+ Object.defineProperty(MatPaginatedTabHeader.prototype, "scrollDistance", {
36783
37128
  /** Sets the distance in pixels that the tab header should be transformed in the X-axis. */
36784
37129
  get: /**
36785
37130
  * Sets the distance in pixels that the tab header should be transformed in the X-axis.
@@ -36814,7 +37159,7 @@ var MatTabHeader = /** @class */ (function (_super) {
36814
37159
  * @param {?} direction
36815
37160
  * @return {?}
36816
37161
  */
36817
- MatTabHeader.prototype._scrollHeader = /**
37162
+ MatPaginatedTabHeader.prototype._scrollHeader = /**
36818
37163
  * Moves the tab list in the 'before' or 'after' direction (towards the beginning of the list or
36819
37164
  * the end of the list, respectively). The distance to scroll is computed to be a third of the
36820
37165
  * length of the tab list view window.
@@ -36838,7 +37183,7 @@ var MatTabHeader = /** @class */ (function (_super) {
36838
37183
  * @param {?} direction
36839
37184
  * @return {?}
36840
37185
  */
36841
- MatTabHeader.prototype._handlePaginatorClick = /**
37186
+ MatPaginatedTabHeader.prototype._handlePaginatorClick = /**
36842
37187
  * Handles click events on the pagination arrows.
36843
37188
  * @param {?} direction
36844
37189
  * @return {?}
@@ -36861,7 +37206,7 @@ var MatTabHeader = /** @class */ (function (_super) {
36861
37206
  * @param {?} labelIndex
36862
37207
  * @return {?}
36863
37208
  */
36864
- MatTabHeader.prototype._scrollToLabel = /**
37209
+ MatPaginatedTabHeader.prototype._scrollToLabel = /**
36865
37210
  * Moves the tab list such that the desired tab label (marked by index) is moved into view.
36866
37211
  *
36867
37212
  * This is an expensive call that forces a layout reflow to compute box and scroll metrics and
@@ -36871,24 +37216,25 @@ var MatTabHeader = /** @class */ (function (_super) {
36871
37216
  */
36872
37217
  function (labelIndex) {
36873
37218
  /** @type {?} */
36874
- var selectedLabel = this._labelWrappers ? this._labelWrappers.toArray()[labelIndex] : null;
37219
+ var selectedLabel = this._items ? this._items.toArray()[labelIndex] : null;
36875
37220
  if (!selectedLabel) {
36876
37221
  return;
36877
37222
  }
36878
37223
  // The view length is the visible width of the tab labels.
36879
37224
  /** @type {?} */
36880
37225
  var viewLength = this._tabListContainer.nativeElement.offsetWidth;
37226
+ var _a = selectedLabel.elementRef.nativeElement, offsetLeft = _a.offsetLeft, offsetWidth = _a.offsetWidth;
36881
37227
  /** @type {?} */
36882
37228
  var labelBeforePos;
36883
37229
  /** @type {?} */
36884
37230
  var labelAfterPos;
36885
37231
  if (this._getLayoutDirection() == 'ltr') {
36886
- labelBeforePos = selectedLabel.getOffsetLeft();
36887
- labelAfterPos = labelBeforePos + selectedLabel.getOffsetWidth();
37232
+ labelBeforePos = offsetLeft;
37233
+ labelAfterPos = labelBeforePos + offsetWidth;
36888
37234
  }
36889
37235
  else {
36890
- labelAfterPos = this._tabList.nativeElement.offsetWidth - selectedLabel.getOffsetLeft();
36891
- labelBeforePos = labelAfterPos - selectedLabel.getOffsetWidth();
37236
+ labelAfterPos = this._tabList.nativeElement.offsetWidth - offsetLeft;
37237
+ labelBeforePos = labelAfterPos - offsetWidth;
36892
37238
  }
36893
37239
  /** @type {?} */
36894
37240
  var beforeVisiblePos = this.scrollDistance;
@@ -36920,7 +37266,7 @@ var MatTabHeader = /** @class */ (function (_super) {
36920
37266
  * should be called sparingly.
36921
37267
  * @return {?}
36922
37268
  */
36923
- MatTabHeader.prototype._checkPaginationEnabled = /**
37269
+ MatPaginatedTabHeader.prototype._checkPaginationEnabled = /**
36924
37270
  * Evaluate whether the pagination controls should be displayed. If the scroll width of the
36925
37271
  * tab list is wider than the size of the header container, then the pagination controls should
36926
37272
  * be shown.
@@ -36959,7 +37305,7 @@ var MatTabHeader = /** @class */ (function (_super) {
36959
37305
  * should be called sparingly.
36960
37306
  * @return {?}
36961
37307
  */
36962
- MatTabHeader.prototype._checkScrollingControls = /**
37308
+ MatPaginatedTabHeader.prototype._checkScrollingControls = /**
36963
37309
  * Evaluate whether the before and after controls should be enabled or disabled.
36964
37310
  * If the header is at the beginning of the list (scroll distance is equal to 0) then disable the
36965
37311
  * before button. If the header is at the end of the list (scroll distance is equal to the
@@ -36990,7 +37336,7 @@ var MatTabHeader = /** @class */ (function (_super) {
36990
37336
  * should be called sparingly.
36991
37337
  * @return {?}
36992
37338
  */
36993
- MatTabHeader.prototype._getMaxScrollDistance = /**
37339
+ MatPaginatedTabHeader.prototype._getMaxScrollDistance = /**
36994
37340
  * Determines what is the maximum length in pixels that can be set for the scroll distance. This
36995
37341
  * is equal to the difference in width between the tab list container and tab header container.
36996
37342
  *
@@ -37010,23 +37356,29 @@ var MatTabHeader = /** @class */ (function (_super) {
37010
37356
  * Tells the ink-bar to align itself to the current label wrapper
37011
37357
  * @return {?}
37012
37358
  */
37013
- MatTabHeader.prototype._alignInkBarToSelectedTab = /**
37359
+ MatPaginatedTabHeader.prototype._alignInkBarToSelectedTab = /**
37014
37360
  * Tells the ink-bar to align itself to the current label wrapper
37015
37361
  * @return {?}
37016
37362
  */
37017
37363
  function () {
37018
37364
  /** @type {?} */
37019
- var selectedLabelWrapper = this._labelWrappers && this._labelWrappers.length ?
37020
- this._labelWrappers.toArray()[this.selectedIndex].elementRef.nativeElement :
37021
- null;
37022
- this._inkBar.alignToElement((/** @type {?} */ (selectedLabelWrapper)));
37365
+ var selectedItem = this._items && this._items.length ?
37366
+ this._items.toArray()[this.selectedIndex] : null;
37367
+ /** @type {?} */
37368
+ var selectedLabelWrapper = selectedItem ? selectedItem.elementRef.nativeElement : null;
37369
+ if (selectedLabelWrapper) {
37370
+ this._inkBar.alignToElement(selectedLabelWrapper);
37371
+ }
37372
+ else {
37373
+ this._inkBar.hide();
37374
+ }
37023
37375
  };
37024
37376
  /** Stops the currently-running paginator interval. */
37025
37377
  /**
37026
37378
  * Stops the currently-running paginator interval.
37027
37379
  * @return {?}
37028
37380
  */
37029
- MatTabHeader.prototype._stopInterval = /**
37381
+ MatPaginatedTabHeader.prototype._stopInterval = /**
37030
37382
  * Stops the currently-running paginator interval.
37031
37383
  * @return {?}
37032
37384
  */
@@ -37044,7 +37396,7 @@ var MatTabHeader = /** @class */ (function (_super) {
37044
37396
  * @param {?} direction In which direction the paginator should be scrolled.
37045
37397
  * @return {?}
37046
37398
  */
37047
- MatTabHeader.prototype._handlePaginatorPress = /**
37399
+ MatPaginatedTabHeader.prototype._handlePaginatorPress = /**
37048
37400
  * Handles the user pressing down on one of the paginators.
37049
37401
  * Starts scrolling the header after a certain amount of time.
37050
37402
  * @param {?} direction In which direction the paginator should be scrolled.
@@ -37080,7 +37432,7 @@ var MatTabHeader = /** @class */ (function (_super) {
37080
37432
  * @param {?} position Position to which to scroll.
37081
37433
  * @return {?} Information on the current scroll distance and the maximum.
37082
37434
  */
37083
- MatTabHeader.prototype._scrollTo = /**
37435
+ MatPaginatedTabHeader.prototype._scrollTo = /**
37084
37436
  * Scrolls the header to a given position.
37085
37437
  * @private
37086
37438
  * @param {?} position Position to which to scroll.
@@ -37096,11 +37448,73 @@ var MatTabHeader = /** @class */ (function (_super) {
37096
37448
  this._checkScrollingControls();
37097
37449
  return { maxScrollDistance: maxScrollDistance, distance: this._scrollDistance };
37098
37450
  };
37451
+ /** @nocollapse */
37452
+ MatPaginatedTabHeader.ctorParameters = function () { return [
37453
+ { type: core.ElementRef },
37454
+ { type: core.ChangeDetectorRef },
37455
+ { type: scrolling.ViewportRuler },
37456
+ { type: bidi.Directionality, decorators: [{ type: core.Optional }] },
37457
+ { type: core.NgZone },
37458
+ { type: platform.Platform },
37459
+ { type: String }
37460
+ ]; };
37461
+ return MatPaginatedTabHeader;
37462
+ }());
37463
+
37464
+ /**
37465
+ * @fileoverview added by tsickle
37466
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
37467
+ */
37468
+ /**
37469
+ * The header of the tab group which displays a list of all the tabs in the tab group. Includes
37470
+ * an ink bar that follows the currently selected tab. When the tabs list's width exceeds the
37471
+ * width of the header container, then arrows will be displayed to allow the user to scroll
37472
+ * left and right across the header.
37473
+ * \@docs-private
37474
+ */
37475
+ var MatTabHeader = /** @class */ (function (_super) {
37476
+ __extends(MatTabHeader, _super);
37477
+ function MatTabHeader(elementRef, changeDetectorRef, viewportRuler, dir, ngZone, platform$$1,
37478
+ // @breaking-change 9.0.0 `_animationMode` parameter to be made required.
37479
+ animationMode) {
37480
+ var _this = _super.call(this, elementRef, changeDetectorRef, viewportRuler, dir, ngZone, platform$$1, animationMode) || this;
37481
+ _this._disableRipple = false;
37482
+ return _this;
37483
+ }
37484
+ Object.defineProperty(MatTabHeader.prototype, "disableRipple", {
37485
+ /** Whether the ripple effect is disabled or not. */
37486
+ get: /**
37487
+ * Whether the ripple effect is disabled or not.
37488
+ * @return {?}
37489
+ */
37490
+ function () { return this._disableRipple; },
37491
+ set: /**
37492
+ * @param {?} value
37493
+ * @return {?}
37494
+ */
37495
+ function (value) { this._disableRipple = coercion.coerceBooleanProperty(value); },
37496
+ enumerable: true,
37497
+ configurable: true
37498
+ });
37499
+ /**
37500
+ * @protected
37501
+ * @param {?} event
37502
+ * @return {?}
37503
+ */
37504
+ MatTabHeader.prototype._itemSelected = /**
37505
+ * @protected
37506
+ * @param {?} event
37507
+ * @return {?}
37508
+ */
37509
+ function (event) {
37510
+ event.preventDefault();
37511
+ };
37099
37512
  MatTabHeader.decorators = [
37100
37513
  { type: core.Component, args: [{selector: 'mat-tab-header',
37101
- 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>",
37102
- 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}"],
37103
- inputs: ['disableRipple'],
37514
+ 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>",
37515
+ 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}}"],
37516
+ inputs: ['selectedIndex'],
37517
+ outputs: ['selectFocusedIndex', 'indexFocused'],
37104
37518
  encapsulation: core.ViewEncapsulation.None,
37105
37519
  changeDetection: core.ChangeDetectionStrategy.OnPush,
37106
37520
  host: {
@@ -37117,21 +37531,20 @@ var MatTabHeader = /** @class */ (function (_super) {
37117
37531
  { type: scrolling.ViewportRuler },
37118
37532
  { type: bidi.Directionality, decorators: [{ type: core.Optional }] },
37119
37533
  { type: core.NgZone },
37120
- { type: platform.Platform }
37534
+ { type: platform.Platform },
37535
+ { type: String, decorators: [{ type: core.Optional }, { type: core.Inject, args: [animations.ANIMATION_MODULE_TYPE,] }] }
37121
37536
  ]; };
37122
37537
  MatTabHeader.propDecorators = {
37123
- _labelWrappers: [{ type: core.ContentChildren, args: [MatTabLabelWrapper,] }],
37538
+ _items: [{ type: core.ContentChildren, args: [MatTabLabelWrapper,] }],
37124
37539
  _inkBar: [{ type: core.ViewChild, args: [MatInkBar, { static: true },] }],
37125
37540
  _tabListContainer: [{ type: core.ViewChild, args: ['tabListContainer', { static: true },] }],
37126
37541
  _tabList: [{ type: core.ViewChild, args: ['tabList', { static: true },] }],
37127
37542
  _nextPaginator: [{ type: core.ViewChild, args: ['nextPaginator', { static: false },] }],
37128
37543
  _previousPaginator: [{ type: core.ViewChild, args: ['previousPaginator', { static: false },] }],
37129
- selectedIndex: [{ type: core.Input }],
37130
- selectFocusedIndex: [{ type: core.Output }],
37131
- indexFocused: [{ type: core.Output }]
37544
+ disableRipple: [{ type: core.Input }]
37132
37545
  };
37133
37546
  return MatTabHeader;
37134
- }(_MatTabHeaderMixinBase));
37547
+ }(MatPaginatedTabHeader));
37135
37548
 
37136
37549
  /**
37137
37550
  * @fileoverview added by tsickle
@@ -37182,9 +37595,10 @@ var _MatTabGroupMixinBase = mixinColor(mixinDisableRipple(MatTabGroupBase), 'pri
37182
37595
  */
37183
37596
  var MatTabGroup = /** @class */ (function (_super) {
37184
37597
  __extends(MatTabGroup, _super);
37185
- function MatTabGroup(elementRef, _changeDetectorRef, defaultConfig) {
37598
+ function MatTabGroup(elementRef, _changeDetectorRef, defaultConfig, _animationMode) {
37186
37599
  var _this = _super.call(this, elementRef) || this;
37187
37600
  _this._changeDetectorRef = _changeDetectorRef;
37601
+ _this._animationMode = _animationMode;
37188
37602
  /**
37189
37603
  * The tab index that should be selected after the content has been checked.
37190
37604
  */
@@ -37630,8 +38044,8 @@ var MatTabGroup = /** @class */ (function (_super) {
37630
38044
  MatTabGroup.decorators = [
37631
38045
  { type: core.Component, args: [{selector: 'mat-tab-group',
37632
38046
  exportAs: 'matTabGroup',
37633
- 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>",
37634
- 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}"],
38047
+ 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>",
38048
+ 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}"],
37635
38049
  encapsulation: core.ViewEncapsulation.None,
37636
38050
  changeDetection: core.ChangeDetectionStrategy.OnPush,
37637
38051
  inputs: ['color', 'disableRipple'],
@@ -37646,7 +38060,8 @@ var MatTabGroup = /** @class */ (function (_super) {
37646
38060
  MatTabGroup.ctorParameters = function () { return [
37647
38061
  { type: core.ElementRef },
37648
38062
  { type: core.ChangeDetectorRef },
37649
- { type: undefined, decorators: [{ type: core.Inject, args: [MAT_TABS_CONFIG,] }, { type: core.Optional }] }
38063
+ { type: undefined, decorators: [{ type: core.Inject, args: [MAT_TABS_CONFIG,] }, { type: core.Optional }] },
38064
+ { type: String, decorators: [{ type: core.Optional }, { type: core.Inject, args: [animations.ANIMATION_MODULE_TYPE,] }] }
37650
38065
  ]; };
37651
38066
  MatTabGroup.propDecorators = {
37652
38067
  _tabs: [{ type: core.ContentChildren, args: [MatTab,] }],
@@ -37669,39 +38084,23 @@ var MatTabGroup = /** @class */ (function (_super) {
37669
38084
  * @fileoverview added by tsickle
37670
38085
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
37671
38086
  */
37672
- // Boilerplate for applying mixins to MatTabNav.
37673
- /**
37674
- * \@docs-private
37675
- */
37676
- var
37677
- // Boilerplate for applying mixins to MatTabNav.
37678
- /**
37679
- * \@docs-private
37680
- */
37681
- MatTabNavBase = /** @class */ (function () {
37682
- function MatTabNavBase(_elementRef) {
37683
- this._elementRef = _elementRef;
37684
- }
37685
- return MatTabNavBase;
37686
- }());
37687
- /** @type {?} */
37688
- var _MatTabNavMixinBase = mixinDisableRipple(mixinColor(MatTabNavBase, 'primary'));
37689
38087
  /**
37690
38088
  * Navigation component matching the styles of the tab group header.
37691
38089
  * Provides anchored navigation with animated ink bar.
37692
38090
  */
37693
38091
  var MatTabNav = /** @class */ (function (_super) {
37694
38092
  __extends(MatTabNav, _super);
37695
- function MatTabNav(elementRef, _dir, _ngZone, _changeDetectorRef, _viewportRuler) {
37696
- var _this = _super.call(this, elementRef) || this;
37697
- _this._dir = _dir;
37698
- _this._ngZone = _ngZone;
37699
- _this._changeDetectorRef = _changeDetectorRef;
37700
- _this._viewportRuler = _viewportRuler;
38093
+ function MatTabNav(elementRef, dir, ngZone, changeDetectorRef, viewportRuler,
38094
+ /**
38095
+ * @deprecated @breaking-change 9.0.0 `platform` parameter to become required.
38096
+ */
38097
+ platform$$1, animationMode) {
38098
+ var _this = _super.call(this, elementRef, changeDetectorRef, viewportRuler, dir, ngZone, platform$$1, animationMode) || this;
38099
+ _this._disableRipple = false;
37701
38100
  /**
37702
- * Subject that emits when the component has been destroyed.
38101
+ * Theme color of the nav bar.
37703
38102
  */
37704
- _this._onDestroy = new rxjs.Subject();
38103
+ _this.color = 'primary';
37705
38104
  return _this;
37706
38105
  }
37707
38106
  Object.defineProperty(MatTabNav.prototype, "backgroundColor", {
@@ -37717,117 +38116,99 @@ var MatTabNav = /** @class */ (function (_super) {
37717
38116
  */
37718
38117
  function (value) {
37719
38118
  /** @type {?} */
37720
- var nativeElement = this._elementRef.nativeElement;
37721
- nativeElement.classList.remove("mat-background-" + this.backgroundColor);
38119
+ var classList = this._elementRef.nativeElement.classList;
38120
+ classList.remove("mat-background-" + this.backgroundColor);
37722
38121
  if (value) {
37723
- nativeElement.classList.add("mat-background-" + value);
38122
+ classList.add("mat-background-" + value);
37724
38123
  }
37725
38124
  this._backgroundColor = value;
37726
38125
  },
37727
38126
  enumerable: true,
37728
38127
  configurable: true
37729
38128
  });
37730
- /**
37731
- * Notifies the component that the active link has been changed.
37732
- * @breaking-change 8.0.0 `element` parameter to be removed.
37733
- */
37734
- /**
37735
- * Notifies the component that the active link has been changed.
37736
- * \@breaking-change 8.0.0 `element` parameter to be removed.
37737
- * @param {?} element
37738
- * @return {?}
37739
- */
37740
- MatTabNav.prototype.updateActiveLink = /**
37741
- * Notifies the component that the active link has been changed.
37742
- * \@breaking-change 8.0.0 `element` parameter to be removed.
37743
- * @param {?} element
37744
- * @return {?}
37745
- */
37746
- function (element) {
37747
- // Note: keeping the `element` for backwards-compat, but isn't being used for anything.
37748
- // @breaking-change 8.0.0
37749
- this._activeLinkChanged = !!element;
37750
- this._changeDetectorRef.markForCheck();
37751
- };
37752
- /**
37753
- * @return {?}
37754
- */
37755
- MatTabNav.prototype.ngAfterContentInit = /**
37756
- * @return {?}
37757
- */
37758
- function () {
37759
- var _this = this;
37760
- this._ngZone.runOutsideAngular((/**
38129
+ Object.defineProperty(MatTabNav.prototype, "disableRipple", {
38130
+ /** Whether the ripple effect is disabled or not. */
38131
+ get: /**
38132
+ * Whether the ripple effect is disabled or not.
37761
38133
  * @return {?}
37762
38134
  */
37763
- function () {
37764
- /** @type {?} */
37765
- var dirChange = _this._dir ? _this._dir.change : rxjs.of(null);
37766
- return rxjs.merge(dirChange, _this._viewportRuler.change(10))
37767
- .pipe(operators.takeUntil(_this._onDestroy))
37768
- .subscribe((/**
37769
- * @return {?}
37770
- */
37771
- function () { return _this._alignInkBar(); }));
37772
- }));
37773
- };
37774
- /** Checks if the active link has been changed and, if so, will update the ink bar. */
38135
+ function () { return this._disableRipple; },
38136
+ set: /**
38137
+ * @param {?} value
38138
+ * @return {?}
38139
+ */
38140
+ function (value) { this._disableRipple = coercion.coerceBooleanProperty(value); },
38141
+ enumerable: true,
38142
+ configurable: true
38143
+ });
37775
38144
  /**
37776
- * Checks if the active link has been changed and, if so, will update the ink bar.
38145
+ * @protected
37777
38146
  * @return {?}
37778
38147
  */
37779
- MatTabNav.prototype.ngAfterContentChecked = /**
37780
- * Checks if the active link has been changed and, if so, will update the ink bar.
38148
+ MatTabNav.prototype._itemSelected = /**
38149
+ * @protected
37781
38150
  * @return {?}
37782
38151
  */
37783
38152
  function () {
37784
- if (this._activeLinkChanged) {
37785
- /** @type {?} */
37786
- var activeTab = this._tabLinks.find((/**
37787
- * @param {?} tab
37788
- * @return {?}
37789
- */
37790
- function (tab) { return tab.active; }));
37791
- this._activeLinkElement = activeTab ? activeTab._elementRef : null;
37792
- this._alignInkBar();
37793
- this._activeLinkChanged = false;
37794
- }
38153
+ // noop
37795
38154
  };
37796
38155
  /**
37797
38156
  * @return {?}
37798
38157
  */
37799
- MatTabNav.prototype.ngOnDestroy = /**
38158
+ MatTabNav.prototype.ngAfterContentInit = /**
37800
38159
  * @return {?}
37801
38160
  */
37802
38161
  function () {
37803
- this._onDestroy.next();
37804
- this._onDestroy.complete();
38162
+ this.updateActiveLink();
38163
+ _super.prototype.ngAfterContentInit.call(this);
37805
38164
  };
37806
- /** Aligns the ink bar to the active link. */
37807
38165
  /**
37808
- * Aligns the ink bar to the active link.
38166
+ * Notifies the component that the active link has been changed.
38167
+ * @breaking-change 8.0.0 `element` parameter to be removed.
38168
+ */
38169
+ /**
38170
+ * Notifies the component that the active link has been changed.
38171
+ * \@breaking-change 8.0.0 `element` parameter to be removed.
38172
+ * @param {?=} _element
37809
38173
  * @return {?}
37810
38174
  */
37811
- MatTabNav.prototype._alignInkBar = /**
37812
- * Aligns the ink bar to the active link.
38175
+ MatTabNav.prototype.updateActiveLink = /**
38176
+ * Notifies the component that the active link has been changed.
38177
+ * \@breaking-change 8.0.0 `element` parameter to be removed.
38178
+ * @param {?=} _element
37813
38179
  * @return {?}
37814
38180
  */
37815
- function () {
37816
- if (this._activeLinkElement) {
37817
- this._inkBar.show();
37818
- this._inkBar.alignToElement(this._activeLinkElement.nativeElement);
38181
+ function (_element) {
38182
+ if (!this._items) {
38183
+ return;
37819
38184
  }
37820
- else {
37821
- this._inkBar.hide();
38185
+ /** @type {?} */
38186
+ var items = this._items.toArray();
38187
+ for (var i = 0; i < items.length; i++) {
38188
+ if (items[i].active) {
38189
+ this.selectedIndex = i;
38190
+ this._changeDetectorRef.markForCheck();
38191
+ return;
38192
+ }
37822
38193
  }
38194
+ // The ink bar should hide itself if no items are active.
38195
+ this.selectedIndex = -1;
38196
+ this._inkBar.hide();
37823
38197
  };
37824
38198
  MatTabNav.decorators = [
37825
38199
  { type: core.Component, args: [{selector: '[mat-tab-nav-bar]',
37826
38200
  exportAs: 'matTabNavBar, matTabNav',
37827
- inputs: ['color', 'disableRipple'],
37828
- template: "<div class=\"mat-tab-links\" (cdkObserveContent)=\"_alignInkBar()\"><ng-content></ng-content><mat-ink-bar></mat-ink-bar></div>",
37829
- 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}}"],
37830
- host: { 'class': 'mat-tab-nav-bar' },
38201
+ inputs: ['color'],
38202
+ 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>",
38203
+ 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}}"],
38204
+ host: {
38205
+ 'class': 'mat-tab-nav-bar mat-tab-header',
38206
+ '[class.mat-tab-header-pagination-controls-enabled]': '_showPaginationControls',
38207
+ '[class.mat-tab-header-rtl]': "_getLayoutDirection() == 'rtl'",
38208
+ '[class.mat-primary]': 'color !== "warn" && color !== "accent"',
38209
+ '[class.mat-accent]': 'color === "accent"',
38210
+ '[class.mat-warn]': 'color === "warn"',
38211
+ },
37831
38212
  encapsulation: core.ViewEncapsulation.None,
37832
38213
  changeDetection: core.ChangeDetectionStrategy.OnPush,
37833
38214
  },] },
@@ -37838,18 +38219,26 @@ var MatTabNav = /** @class */ (function (_super) {
37838
38219
  { type: bidi.Directionality, decorators: [{ type: core.Optional }] },
37839
38220
  { type: core.NgZone },
37840
38221
  { type: core.ChangeDetectorRef },
37841
- { type: scrolling.ViewportRuler }
38222
+ { type: scrolling.ViewportRuler },
38223
+ { type: platform.Platform, decorators: [{ type: core.Optional }] },
38224
+ { type: String, decorators: [{ type: core.Optional }, { type: core.Inject, args: [animations.ANIMATION_MODULE_TYPE,] }] }
37842
38225
  ]; };
37843
38226
  MatTabNav.propDecorators = {
37844
- _inkBar: [{ type: core.ViewChild, args: [MatInkBar, { static: true },] }],
37845
- _tabLinks: [{ type: core.ContentChildren, args: [core.forwardRef((/**
38227
+ _items: [{ type: core.ContentChildren, args: [core.forwardRef((/**
37846
38228
  * @return {?}
37847
38229
  */
37848
38230
  function () { return MatTabLink; })), { descendants: true },] }],
37849
- backgroundColor: [{ type: core.Input }]
38231
+ _inkBar: [{ type: core.ViewChild, args: [MatInkBar, { static: true },] }],
38232
+ _tabListContainer: [{ type: core.ViewChild, args: ['tabListContainer', { static: true },] }],
38233
+ _tabList: [{ type: core.ViewChild, args: ['tabList', { static: true },] }],
38234
+ _nextPaginator: [{ type: core.ViewChild, args: ['nextPaginator', { static: false },] }],
38235
+ _previousPaginator: [{ type: core.ViewChild, args: ['previousPaginator', { static: false },] }],
38236
+ backgroundColor: [{ type: core.Input }],
38237
+ disableRipple: [{ type: core.Input }],
38238
+ color: [{ type: core.Input }]
37850
38239
  };
37851
38240
  return MatTabNav;
37852
- }(_MatTabNavMixinBase));
38241
+ }(MatPaginatedTabHeader));
37853
38242
  // Boilerplate for applying mixins to MatTabLink.
37854
38243
  var
37855
38244
  // Boilerplate for applying mixins to MatTabLink.
@@ -37865,20 +38254,23 @@ var _MatTabLinkMixinBase = mixinTabIndex(mixinDisableRipple(mixinDisabled(MatTab
37865
38254
  */
37866
38255
  var MatTabLink = /** @class */ (function (_super) {
37867
38256
  __extends(MatTabLink, _super);
37868
- function MatTabLink(_tabNavBar, _elementRef, ngZone, platform$$1, globalRippleOptions, tabIndex, _focusMonitor) {
38257
+ function MatTabLink(_tabNavBar, elementRef, ngZone, platform$$1, globalRippleOptions, tabIndex, _focusMonitor, animationMode) {
37869
38258
  var _this = _super.call(this) || this;
37870
38259
  _this._tabNavBar = _tabNavBar;
37871
- _this._elementRef = _elementRef;
38260
+ _this.elementRef = elementRef;
37872
38261
  _this._focusMonitor = _focusMonitor;
37873
38262
  /**
37874
38263
  * Whether the tab link is active or not.
37875
38264
  */
37876
38265
  _this._isActive = false;
37877
- _this._tabLinkRipple = new RippleRenderer(_this, ngZone, _elementRef, platform$$1);
37878
- _this._tabLinkRipple.setupTriggerEvents(_elementRef.nativeElement);
38266
+ _this._tabLinkRipple = new RippleRenderer(_this, ngZone, elementRef, platform$$1);
38267
+ _this._tabLinkRipple.setupTriggerEvents(elementRef.nativeElement);
37879
38268
  _this.rippleConfig = globalRippleOptions || {};
37880
38269
  _this.tabIndex = parseInt(tabIndex) || 0;
37881
- _focusMonitor.monitor(_elementRef);
38270
+ if (animationMode === 'NoopAnimations') {
38271
+ _this.rippleConfig.animation = { enterDuration: 0, exitDuration: 0 };
38272
+ }
38273
+ _focusMonitor.monitor(elementRef);
37882
38274
  return _this;
37883
38275
  }
37884
38276
  Object.defineProperty(MatTabLink.prototype, "active", {
@@ -37895,7 +38287,7 @@ var MatTabLink = /** @class */ (function (_super) {
37895
38287
  function (value) {
37896
38288
  if (value !== this._isActive) {
37897
38289
  this._isActive = value;
37898
- this._tabNavBar.updateActiveLink(this._elementRef);
38290
+ this._tabNavBar.updateActiveLink(this.elementRef);
37899
38291
  }
37900
38292
  },
37901
38293
  enumerable: true,
@@ -37918,6 +38310,15 @@ var MatTabLink = /** @class */ (function (_super) {
37918
38310
  enumerable: true,
37919
38311
  configurable: true
37920
38312
  });
38313
+ /**
38314
+ * @return {?}
38315
+ */
38316
+ MatTabLink.prototype.focus = /**
38317
+ * @return {?}
38318
+ */
38319
+ function () {
38320
+ this.elementRef.nativeElement.focus();
38321
+ };
37921
38322
  /**
37922
38323
  * @return {?}
37923
38324
  */
@@ -37926,7 +38327,7 @@ var MatTabLink = /** @class */ (function (_super) {
37926
38327
  */
37927
38328
  function () {
37928
38329
  this._tabLinkRipple._removeTriggerEvents();
37929
- this._focusMonitor.stopMonitoring(this._elementRef);
38330
+ this._focusMonitor.stopMonitoring(this.elementRef);
37930
38331
  };
37931
38332
  MatTabLink.decorators = [
37932
38333
  { type: core.Directive, args: [{
@@ -37936,7 +38337,7 @@ var MatTabLink = /** @class */ (function (_super) {
37936
38337
  host: {
37937
38338
  'class': 'mat-tab-link',
37938
38339
  '[attr.aria-current]': 'active',
37939
- '[attr.aria-disabled]': 'disabled.toString()',
38340
+ '[attr.aria-disabled]': 'disabled',
37940
38341
  '[attr.tabIndex]': 'tabIndex',
37941
38342
  '[class.mat-tab-disabled]': 'disabled',
37942
38343
  '[class.mat-tab-label-active]': 'active',
@@ -37951,7 +38352,8 @@ var MatTabLink = /** @class */ (function (_super) {
37951
38352
  { type: platform.Platform },
37952
38353
  { type: undefined, decorators: [{ type: core.Optional }, { type: core.Inject, args: [MAT_RIPPLE_GLOBAL_OPTIONS,] }] },
37953
38354
  { type: String, decorators: [{ type: core.Attribute, args: ['tabindex',] }] },
37954
- { type: a11y.FocusMonitor }
38355
+ { type: a11y.FocusMonitor },
38356
+ { type: String, decorators: [{ type: core.Optional }, { type: core.Inject, args: [animations.ANIMATION_MODULE_TYPE,] }] }
37955
38357
  ]; };
37956
38358
  MatTabLink.propDecorators = {
37957
38359
  active: [{ type: core.Input }]
@@ -38901,7 +39303,7 @@ exports.MatChipRemove = MatChipRemove;
38901
39303
  exports.MatChipInput = MatChipInput;
38902
39304
  exports.MAT_CHIPS_DEFAULT_OPTIONS = MAT_CHIPS_DEFAULT_OPTIONS;
38903
39305
  exports.ɵa1 = MATERIAL_SANITY_CHECKS_FACTORY;
38904
- exports.VERSION = VERSION;
39306
+ exports.VERSION = VERSION$1;
38905
39307
  exports.AnimationCurves = AnimationCurves;
38906
39308
  exports.AnimationDurations = AnimationDurations;
38907
39309
  exports.MatCommonModule = MatCommonModule;
@@ -38958,6 +39360,9 @@ exports.SEP = SEP;
38958
39360
  exports.OCT = OCT;
38959
39361
  exports.NOV = NOV;
38960
39362
  exports.DEC = DEC;
39363
+ exports.MatMultiYearView = MatMultiYearView;
39364
+ exports.yearsPerPage = yearsPerPage;
39365
+ exports.yearsPerRow = yearsPerRow;
38961
39366
  exports.MatDatepickerModule = MatDatepickerModule;
38962
39367
  exports.MatCalendarHeader = MatCalendarHeader;
38963
39368
  exports.MatCalendar = MatCalendar;
@@ -38978,9 +39383,6 @@ exports.MatDatepickerToggleIcon = MatDatepickerToggleIcon;
38978
39383
  exports.MatDatepickerToggle = MatDatepickerToggle;
38979
39384
  exports.MatMonthView = MatMonthView;
38980
39385
  exports.MatYearView = MatYearView;
38981
- exports.yearsPerPage = yearsPerPage;
38982
- exports.yearsPerRow = yearsPerRow;
38983
- exports.MatMultiYearView = MatMultiYearView;
38984
39386
  exports.MatDialogModule = MatDialogModule;
38985
39387
  exports.MAT_DIALOG_SCROLL_STRATEGY_FACTORY = MAT_DIALOG_SCROLL_STRATEGY_FACTORY;
38986
39388
  exports.MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY = MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY;
@@ -39026,7 +39428,7 @@ exports.MatPrefix = MatPrefix;
39026
39428
  exports.MatSuffix = MatSuffix;
39027
39429
  exports.MatLabel = MatLabel;
39028
39430
  exports.matFormFieldAnimations = matFormFieldAnimations;
39029
- exports.ɵa11 = MAT_GRID_LIST;
39431
+ exports.ɵa4 = MAT_GRID_LIST;
39030
39432
  exports.MatGridListModule = MatGridListModule;
39031
39433
  exports.MatGridList = MatGridList;
39032
39434
  exports.MatGridTile = MatGridTile;
@@ -39061,9 +39463,9 @@ exports.MAT_SELECTION_LIST_VALUE_ACCESSOR = MAT_SELECTION_LIST_VALUE_ACCESSOR;
39061
39463
  exports.MatSelectionListChange = MatSelectionListChange;
39062
39464
  exports.MatListOption = MatListOption;
39063
39465
  exports.MatSelectionList = MatSelectionList;
39064
- exports.ɵa24 = MAT_MENU_DEFAULT_OPTIONS_FACTORY;
39065
- exports.ɵb24 = MAT_MENU_SCROLL_STRATEGY_FACTORY;
39066
- exports.ɵc24 = MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER;
39466
+ exports.ɵa23 = MAT_MENU_DEFAULT_OPTIONS_FACTORY;
39467
+ exports.ɵb23 = MAT_MENU_SCROLL_STRATEGY_FACTORY;
39468
+ exports.ɵc23 = MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER;
39067
39469
  exports.MatMenu = MatMenu;
39068
39470
  exports.MAT_MENU_DEFAULT_OPTIONS = MAT_MENU_DEFAULT_OPTIONS;
39069
39471
  exports._MatMenu = _MatMenu;
@@ -39088,12 +39490,14 @@ exports.MatProgressBarModule = MatProgressBarModule;
39088
39490
  exports.MAT_PROGRESS_BAR_LOCATION_FACTORY = MAT_PROGRESS_BAR_LOCATION_FACTORY;
39089
39491
  exports.MAT_PROGRESS_BAR_LOCATION = MAT_PROGRESS_BAR_LOCATION;
39090
39492
  exports.MatProgressBar = MatProgressBar;
39091
- exports.MatProgressSpinnerModule = MatProgressSpinnerModule;
39092
- exports.MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS_FACTORY = MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS_FACTORY;
39093
- exports.MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS = MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS;
39094
39493
  exports.MatProgressSpinner = MatProgressSpinner;
39095
39494
  exports.MatSpinner = MatSpinner;
39495
+ exports.MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS = MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS;
39496
+ exports.MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS_FACTORY = MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS_FACTORY;
39497
+ exports.MatProgressSpinnerModule = MatProgressSpinnerModule;
39096
39498
  exports.MatRadioModule = MatRadioModule;
39499
+ exports.MAT_RADIO_DEFAULT_OPTIONS_FACTORY = MAT_RADIO_DEFAULT_OPTIONS_FACTORY;
39500
+ exports.MAT_RADIO_DEFAULT_OPTIONS = MAT_RADIO_DEFAULT_OPTIONS;
39097
39501
  exports.MAT_RADIO_GROUP_CONTROL_VALUE_ACCESSOR = MAT_RADIO_GROUP_CONTROL_VALUE_ACCESSOR;
39098
39502
  exports.MatRadioChange = MatRadioChange;
39099
39503
  exports.MatRadioGroup = MatRadioGroup;
@@ -39181,7 +39585,8 @@ exports.MatFooterRow = MatFooterRow;
39181
39585
  exports.MatRow = MatRow;
39182
39586
  exports.MatTableDataSource = MatTableDataSource;
39183
39587
  exports.MatTextColumn = MatTextColumn;
39184
- exports.ɵa22 = _MAT_INK_BAR_POSITIONER_FACTORY;
39588
+ exports.ɵa24 = _MAT_INK_BAR_POSITIONER_FACTORY;
39589
+ exports.ɵb24 = MatPaginatedTabHeader;
39185
39590
  exports.MatInkBar = MatInkBar;
39186
39591
  exports._MAT_INK_BAR_POSITIONER = _MAT_INK_BAR_POSITIONER;
39187
39592
  exports.MatTabBody = MatTabBody;