@angular/material 8.0.1 → 8.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (422) hide show
  1. package/_theming.scss +33 -30
  2. package/bottom-sheet/typings/bottom-sheet-ref.d.ts +2 -0
  3. package/bottom-sheet/typings/index.metadata.json +1 -1
  4. package/bundles/material-autocomplete.umd.js +4 -0
  5. package/bundles/material-autocomplete.umd.js.map +1 -1
  6. package/bundles/material-autocomplete.umd.min.js +1 -1
  7. package/bundles/material-autocomplete.umd.min.js.map +1 -1
  8. package/bundles/material-bottom-sheet.umd.js +31 -2
  9. package/bundles/material-bottom-sheet.umd.js.map +1 -1
  10. package/bundles/material-bottom-sheet.umd.min.js +1 -1
  11. package/bundles/material-bottom-sheet.umd.min.js.map +1 -1
  12. package/bundles/material-button-toggle.umd.js +10 -5
  13. package/bundles/material-button-toggle.umd.js.map +1 -1
  14. package/bundles/material-button-toggle.umd.min.js +1 -1
  15. package/bundles/material-button-toggle.umd.min.js.map +1 -1
  16. package/bundles/material-button.umd.js +1 -1
  17. package/bundles/material-button.umd.js.map +1 -1
  18. package/bundles/material-button.umd.min.js +1 -1
  19. package/bundles/material-button.umd.min.js.map +1 -1
  20. package/bundles/material-card.umd.js +16 -7
  21. package/bundles/material-card.umd.js.map +1 -1
  22. package/bundles/material-card.umd.min.js +1 -1
  23. package/bundles/material-card.umd.min.js.map +1 -1
  24. package/bundles/material-checkbox.umd.js +2 -3
  25. package/bundles/material-checkbox.umd.js.map +1 -1
  26. package/bundles/material-checkbox.umd.min.js +1 -1
  27. package/bundles/material-checkbox.umd.min.js.map +1 -1
  28. package/bundles/material-chips.umd.js +12 -7
  29. package/bundles/material-chips.umd.js.map +1 -1
  30. package/bundles/material-chips.umd.min.js +1 -1
  31. package/bundles/material-chips.umd.min.js.map +1 -1
  32. package/bundles/material-core.umd.js +31 -6
  33. package/bundles/material-core.umd.js.map +1 -1
  34. package/bundles/material-core.umd.min.js +2 -2
  35. package/bundles/material-core.umd.min.js.map +1 -1
  36. package/bundles/material-datepicker.umd.js +88 -22
  37. package/bundles/material-datepicker.umd.js.map +1 -1
  38. package/bundles/material-datepicker.umd.min.js +2 -2
  39. package/bundles/material-datepicker.umd.min.js.map +1 -1
  40. package/bundles/material-dialog.umd.js +33 -4
  41. package/bundles/material-dialog.umd.js.map +1 -1
  42. package/bundles/material-dialog.umd.min.js +1 -1
  43. package/bundles/material-dialog.umd.min.js.map +1 -1
  44. package/bundles/material-expansion.umd.js +70 -4
  45. package/bundles/material-expansion.umd.js.map +1 -1
  46. package/bundles/material-expansion.umd.min.js +1 -1
  47. package/bundles/material-expansion.umd.min.js.map +1 -1
  48. package/bundles/material-form-field.umd.js +1 -1
  49. package/bundles/material-form-field.umd.js.map +1 -1
  50. package/bundles/material-form-field.umd.min.js +1 -1
  51. package/bundles/material-form-field.umd.min.js.map +1 -1
  52. package/bundles/material-grid-list.umd.js +1 -1
  53. package/bundles/material-grid-list.umd.min.js +1 -1
  54. package/bundles/material-list.umd.js +39 -21
  55. package/bundles/material-list.umd.js.map +1 -1
  56. package/bundles/material-list.umd.min.js +1 -1
  57. package/bundles/material-list.umd.min.js.map +1 -1
  58. package/bundles/material-menu.umd.js +99 -62
  59. package/bundles/material-menu.umd.js.map +1 -1
  60. package/bundles/material-menu.umd.min.js +1 -1
  61. package/bundles/material-menu.umd.min.js.map +1 -1
  62. package/bundles/material-progress-spinner.umd.js +1 -1
  63. package/bundles/material-progress-spinner.umd.js.map +1 -1
  64. package/bundles/material-progress-spinner.umd.min.js +1 -1
  65. package/bundles/material-progress-spinner.umd.min.js.map +1 -1
  66. package/bundles/material-radio.umd.js +22 -3
  67. package/bundles/material-radio.umd.js.map +1 -1
  68. package/bundles/material-radio.umd.min.js +1 -1
  69. package/bundles/material-radio.umd.min.js.map +1 -1
  70. package/bundles/material-slide-toggle.umd.js +63 -2
  71. package/bundles/material-slide-toggle.umd.js.map +1 -1
  72. package/bundles/material-slide-toggle.umd.min.js +1 -1
  73. package/bundles/material-slide-toggle.umd.min.js.map +1 -1
  74. package/bundles/material-table.umd.js +4 -4
  75. package/bundles/material-table.umd.js.map +1 -1
  76. package/bundles/material-table.umd.min.js +1 -1
  77. package/bundles/material-table.umd.min.js.map +1 -1
  78. package/bundles/material-tabs.umd.js +355 -316
  79. package/bundles/material-tabs.umd.js.map +1 -1
  80. package/bundles/material-tabs.umd.min.js +2 -2
  81. package/bundles/material-tabs.umd.min.js.map +1 -1
  82. package/bundles/material-tree.umd.js +71 -39
  83. package/bundles/material-tree.umd.js.map +1 -1
  84. package/bundles/material-tree.umd.min.js +1 -1
  85. package/bundles/material-tree.umd.min.js.map +1 -1
  86. package/bundles/material.umd.js +927 -484
  87. package/bundles/material.umd.js.map +1 -1
  88. package/bundles/material.umd.min.js +19 -19
  89. package/bundles/material.umd.min.js.map +1 -1
  90. package/button-toggle/typings/button-toggle.d.ts +1 -1
  91. package/button-toggle/typings/index.metadata.json +1 -1
  92. package/card/typings/card.d.ts +2 -0
  93. package/card/typings/index.metadata.json +1 -1
  94. package/checkbox/typings/checkbox.d.ts +1 -1
  95. package/checkbox/typings/index.metadata.json +1 -1
  96. package/chips/typings/chip.d.ts +4 -2
  97. package/chips/typings/index.metadata.json +1 -1
  98. package/core/typings/common-behaviors/common-module.d.ts +2 -0
  99. package/core/typings/index.metadata.json +1 -1
  100. package/datepicker/typings/calendar.d.ts +1 -1
  101. package/datepicker/typings/index.metadata.json +1 -1
  102. package/datepicker/typings/multi-year-view.d.ts +7 -0
  103. package/datepicker/typings/public-api.d.ts +1 -1
  104. package/dialog/typings/dialog-ref.d.ts +2 -0
  105. package/dialog/typings/index.metadata.json +1 -1
  106. package/esm2015/autocomplete.js +4 -0
  107. package/esm2015/autocomplete.js.map +1 -1
  108. package/esm2015/bottom-sheet.js +31 -2
  109. package/esm2015/bottom-sheet.js.map +1 -1
  110. package/esm2015/button-toggle.js +10 -5
  111. package/esm2015/button-toggle.js.map +1 -1
  112. package/esm2015/button.js +1 -1
  113. package/esm2015/button.js.map +1 -1
  114. package/esm2015/card.js +18 -3
  115. package/esm2015/card.js.map +1 -1
  116. package/esm2015/checkbox.js +2 -3
  117. package/esm2015/checkbox.js.map +1 -1
  118. package/esm2015/chips.js +10 -3
  119. package/esm2015/chips.js.map +1 -1
  120. package/esm2015/core.js +22 -2
  121. package/esm2015/core.js.map +1 -1
  122. package/esm2015/datepicker.js +87 -21
  123. package/esm2015/datepicker.js.map +1 -1
  124. package/esm2015/dialog.js +33 -4
  125. package/esm2015/dialog.js.map +1 -1
  126. package/esm2015/expansion.js +57 -4
  127. package/esm2015/expansion.js.map +1 -1
  128. package/esm2015/form-field.js +1 -1
  129. package/esm2015/form-field.js.map +1 -1
  130. package/esm2015/grid-list.js +1 -1
  131. package/esm2015/list.js +40 -22
  132. package/esm2015/list.js.map +1 -1
  133. package/esm2015/material.js +6 -6
  134. package/esm2015/menu.js +54 -42
  135. package/esm2015/menu.js.map +1 -1
  136. package/esm2015/progress-spinner.js +1 -1
  137. package/esm2015/progress-spinner.js.map +1 -1
  138. package/esm2015/radio.js +23 -5
  139. package/esm2015/radio.js.map +1 -1
  140. package/esm2015/slide-toggle.js +57 -5
  141. package/esm2015/slide-toggle.js.map +1 -1
  142. package/esm2015/table.js +2 -2
  143. package/esm2015/table.js.map +1 -1
  144. package/esm2015/tabs.js +282 -223
  145. package/esm2015/tabs.js.map +1 -1
  146. package/esm2015/tree.js +63 -40
  147. package/esm2015/tree.js.map +1 -1
  148. package/esm5/autocomplete.es5.js +4 -0
  149. package/esm5/autocomplete.es5.js.map +1 -1
  150. package/esm5/bottom-sheet.es5.js +31 -2
  151. package/esm5/bottom-sheet.es5.js.map +1 -1
  152. package/esm5/button-toggle.es5.js +10 -5
  153. package/esm5/button-toggle.es5.js.map +1 -1
  154. package/esm5/button.es5.js +1 -1
  155. package/esm5/button.es5.js.map +1 -1
  156. package/esm5/card.es5.js +14 -4
  157. package/esm5/card.es5.js.map +1 -1
  158. package/esm5/checkbox.es5.js +2 -3
  159. package/esm5/checkbox.es5.js.map +1 -1
  160. package/esm5/chips.es5.js +9 -3
  161. package/esm5/chips.es5.js.map +1 -1
  162. package/esm5/core.es5.js +28 -2
  163. package/esm5/core.es5.js.map +1 -1
  164. package/esm5/datepicker.es5.js +86 -20
  165. package/esm5/datepicker.es5.js.map +1 -1
  166. package/esm5/dialog.es5.js +33 -4
  167. package/esm5/dialog.es5.js.map +1 -1
  168. package/esm5/expansion.es5.js +70 -4
  169. package/esm5/expansion.es5.js.map +1 -1
  170. package/esm5/form-field.es5.js +1 -1
  171. package/esm5/form-field.es5.js.map +1 -1
  172. package/esm5/grid-list.es5.js +1 -1
  173. package/esm5/list.es5.js +40 -22
  174. package/esm5/list.es5.js.map +1 -1
  175. package/esm5/material.es5.js +6 -6
  176. package/esm5/menu.es5.js +98 -61
  177. package/esm5/menu.es5.js.map +1 -1
  178. package/esm5/progress-spinner.es5.js +1 -1
  179. package/esm5/progress-spinner.es5.js.map +1 -1
  180. package/esm5/radio.es5.js +22 -5
  181. package/esm5/radio.es5.js.map +1 -1
  182. package/esm5/slide-toggle.es5.js +63 -5
  183. package/esm5/slide-toggle.es5.js.map +1 -1
  184. package/esm5/table.es5.js +4 -4
  185. package/esm5/table.es5.js.map +1 -1
  186. package/esm5/tabs.es5.js +343 -304
  187. package/esm5/tabs.es5.js.map +1 -1
  188. package/esm5/tree.es5.js +70 -37
  189. package/esm5/tree.es5.js.map +1 -1
  190. package/expansion/typings/accordion-base.d.ts +4 -0
  191. package/expansion/typings/accordion.d.ts +3 -1
  192. package/expansion/typings/expansion-panel-header.d.ts +6 -0
  193. package/expansion/typings/expansion-panel.d.ts +5 -2
  194. package/expansion/typings/index.metadata.json +1 -1
  195. package/form-field/typings/index.metadata.json +1 -1
  196. package/grid-list/typings/index.d.ts +1 -1
  197. package/grid-list/typings/index.metadata.json +1 -1
  198. package/list/typings/index.metadata.json +1 -1
  199. package/list/typings/selection-list.d.ts +5 -5
  200. package/menu/typings/index.d.ts +2 -2
  201. package/menu/typings/index.metadata.json +1 -1
  202. package/menu/typings/menu-item.d.ts +1 -1
  203. package/menu/typings/menu-panel.d.ts +8 -0
  204. package/menu/typings/menu.d.ts +19 -14
  205. package/package.json +5 -5
  206. package/prebuilt-themes/deeppurple-amber.css +1 -1
  207. package/prebuilt-themes/indigo-pink.css +1 -1
  208. package/prebuilt-themes/pink-bluegrey.css +1 -1
  209. package/prebuilt-themes/purple-green.css +1 -1
  210. package/progress-spinner/typings/index.metadata.json +1 -1
  211. package/progress-spinner/typings/progress-spinner.d.ts +1 -1
  212. package/radio/typings/index.metadata.json +1 -1
  213. package/radio/typings/radio.d.ts +8 -2
  214. package/schematics/ng-add/fonts/material-fonts.js +1 -1
  215. package/schematics/ng-add/fonts/material-fonts.js.map +1 -1
  216. package/schematics/ng-generate/address-form/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.spec.ts.template +5 -7
  217. package/schematics/ng-generate/address-form/index.js +5 -5
  218. package/schematics/ng-generate/address-form/index.js.map +1 -1
  219. package/schematics/ng-generate/dashboard/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.spec.ts.template +5 -7
  220. package/schematics/ng-generate/dashboard/index.js +5 -5
  221. package/schematics/ng-generate/dashboard/index.js.map +1 -1
  222. package/schematics/ng-generate/nav/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.spec.ts.template +5 -7
  223. package/schematics/ng-generate/nav/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.ts.template +3 -2
  224. package/schematics/ng-generate/nav/index.js +5 -5
  225. package/schematics/ng-generate/nav/index.js.map +1 -1
  226. package/schematics/ng-generate/table/files/__path__/__name@dasherize@if-flat__/__name@dasherize__-datasource.ts.template +2 -1
  227. package/schematics/ng-generate/table/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.spec.ts.template +3 -1
  228. package/schematics/ng-generate/table/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.ts.template +3 -1
  229. package/schematics/ng-generate/table/index.js +3 -3
  230. package/schematics/ng-generate/table/index.js.map +1 -1
  231. package/schematics/ng-generate/tree/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.spec.ts.template +3 -1
  232. package/schematics/ng-generate/tree/index.js +3 -3
  233. package/schematics/ng-generate/tree/index.js.map +1 -1
  234. package/schematics/ng-update/data/class-names.js +3 -12
  235. package/schematics/ng-update/data/class-names.js.map +1 -1
  236. package/schematics/ng-update/data/constructor-checks.js +7 -29
  237. package/schematics/ng-update/data/constructor-checks.js.map +1 -1
  238. package/schematics/ng-update/data/css-selectors.js +19 -68
  239. package/schematics/ng-update/data/css-selectors.js.map +1 -1
  240. package/schematics/ng-update/data/element-selectors.js +3 -10
  241. package/schematics/ng-update/data/element-selectors.js.map +1 -1
  242. package/schematics/ng-update/data/input-names.js +17 -55
  243. package/schematics/ng-update/data/input-names.js.map +1 -1
  244. package/schematics/ng-update/data/property-names.js +28 -100
  245. package/schematics/ng-update/data/property-names.js.map +1 -1
  246. package/schematics/ng-update/index.d.ts +0 -2
  247. package/schematics/ng-update/index.js +27 -37
  248. package/schematics/ng-update/index.js.map +1 -1
  249. package/schematics/ng-update/typescript/module-specifiers.js.map +1 -1
  250. package/schematics/ng-update/upgrade-rules/misc-checks/misc-class-inheritance-rule.d.ts +18 -0
  251. package/schematics/ng-update/upgrade-rules/misc-checks/misc-class-inheritance-rule.js +47 -0
  252. package/schematics/ng-update/upgrade-rules/misc-checks/misc-class-inheritance-rule.js.map +1 -0
  253. package/schematics/ng-update/upgrade-rules/misc-checks/misc-class-names-rule.d.ts +18 -0
  254. package/schematics/ng-update/upgrade-rules/misc-checks/misc-class-names-rule.js +42 -0
  255. package/schematics/ng-update/upgrade-rules/misc-checks/misc-class-names-rule.js.map +1 -0
  256. package/{typings/schematics/ng-update/upgrade-rules/misc-checks/checkImportsMiscRule.d.ts → schematics/ng-update/upgrade-rules/misc-checks/misc-imports-rule.d.ts} +7 -8
  257. package/schematics/ng-update/upgrade-rules/misc-checks/{checkImportsMiscRule.js → misc-imports-rule.js} +19 -16
  258. package/schematics/ng-update/upgrade-rules/misc-checks/misc-imports-rule.js.map +1 -0
  259. package/schematics/ng-update/upgrade-rules/misc-checks/misc-property-names-rule.d.ts +18 -0
  260. package/schematics/ng-update/upgrade-rules/misc-checks/misc-property-names-rule.js +46 -0
  261. package/schematics/ng-update/upgrade-rules/misc-checks/misc-property-names-rule.js.map +1 -0
  262. package/schematics/ng-update/upgrade-rules/misc-checks/misc-template-rule.d.ts +16 -0
  263. package/schematics/ng-update/upgrade-rules/misc-checks/misc-template-rule.js +59 -0
  264. package/schematics/ng-update/upgrade-rules/misc-checks/misc-template-rule.js.map +1 -0
  265. package/schematics/ng-update/upgrade-rules/misc-ripples-v7/{rippleSpeedFactorAssignmentRule.d.ts → ripple-speed-factor-rule.d.ts} +11 -9
  266. package/schematics/ng-update/upgrade-rules/misc-ripples-v7/{rippleSpeedFactorAssignmentRule.js → ripple-speed-factor-rule.js} +57 -31
  267. package/schematics/ng-update/upgrade-rules/misc-ripples-v7/ripple-speed-factor-rule.js.map +1 -0
  268. package/schematics/ng-update/upgrade-rules/package-imports-v8/secondary-entry-points-rule.d.ts +18 -0
  269. package/schematics/ng-update/upgrade-rules/package-imports-v8/{updateAngularMaterialImportsRule.js → secondary-entry-points-rule.js} +40 -52
  270. package/schematics/ng-update/upgrade-rules/package-imports-v8/secondary-entry-points-rule.js.map +1 -0
  271. package/slide-toggle/typings/index.metadata.json +1 -1
  272. package/slide-toggle/typings/public-api.d.ts +1 -0
  273. package/slide-toggle/typings/slide-toggle-module.d.ts +3 -0
  274. package/slide-toggle/typings/slide-toggle-required-validator.d.ts +20 -0
  275. package/table/typings/table-data-source.d.ts +1 -1
  276. package/tabs/typings/index.d.ts +2 -1
  277. package/tabs/typings/index.metadata.json +1 -1
  278. package/tabs/typings/ink-bar.d.ts +2 -1
  279. package/tabs/typings/paginated-tab-header.d.ts +187 -0
  280. package/tabs/typings/public-api.d.ts +2 -1
  281. package/tabs/typings/tab-group.d.ts +2 -1
  282. package/tabs/typings/tab-header.d.ts +10 -159
  283. package/tabs/typings/tab-nav-bar/tab-nav-bar.d.ts +27 -30
  284. package/tree/typings/index.metadata.json +1 -1
  285. package/tree/typings/node.d.ts +8 -6
  286. package/typings/bottom-sheet/bottom-sheet-ref.d.ts +2 -0
  287. package/typings/bottom-sheet/index.metadata.json +1 -1
  288. package/typings/button-toggle/button-toggle.d.ts +1 -1
  289. package/typings/button-toggle/index.metadata.json +1 -1
  290. package/typings/card/card.d.ts +2 -0
  291. package/typings/card/index.metadata.json +1 -1
  292. package/typings/checkbox/checkbox.d.ts +1 -1
  293. package/typings/checkbox/index.metadata.json +1 -1
  294. package/typings/chips/chip.d.ts +4 -2
  295. package/typings/chips/index.metadata.json +1 -1
  296. package/typings/core/common-behaviors/common-module.d.ts +2 -0
  297. package/typings/core/index.metadata.json +1 -1
  298. package/typings/datepicker/calendar.d.ts +1 -1
  299. package/typings/datepicker/index.metadata.json +1 -1
  300. package/typings/datepicker/multi-year-view.d.ts +7 -0
  301. package/typings/datepicker/public-api.d.ts +1 -1
  302. package/typings/dialog/dialog-ref.d.ts +2 -0
  303. package/typings/dialog/index.metadata.json +1 -1
  304. package/typings/esm5/bottom-sheet/bottom-sheet-ref.d.ts +2 -0
  305. package/typings/esm5/bottom-sheet/index.metadata.json +1 -1
  306. package/typings/esm5/button-toggle/button-toggle.d.ts +1 -1
  307. package/typings/esm5/button-toggle/index.metadata.json +1 -1
  308. package/typings/esm5/card/card.d.ts +2 -0
  309. package/typings/esm5/card/index.metadata.json +1 -1
  310. package/typings/esm5/checkbox/checkbox.d.ts +1 -1
  311. package/typings/esm5/checkbox/index.metadata.json +1 -1
  312. package/typings/esm5/chips/chip.d.ts +4 -2
  313. package/typings/esm5/chips/index.metadata.json +1 -1
  314. package/typings/esm5/core/common-behaviors/common-module.d.ts +2 -0
  315. package/typings/esm5/core/index.metadata.json +1 -1
  316. package/typings/esm5/datepicker/calendar.d.ts +1 -1
  317. package/typings/esm5/datepicker/index.metadata.json +1 -1
  318. package/typings/esm5/datepicker/multi-year-view.d.ts +7 -0
  319. package/typings/esm5/datepicker/public-api.d.ts +1 -1
  320. package/typings/esm5/dialog/dialog-ref.d.ts +2 -0
  321. package/typings/esm5/dialog/index.metadata.json +1 -1
  322. package/typings/esm5/expansion/accordion-base.d.ts +4 -0
  323. package/typings/esm5/expansion/accordion.d.ts +3 -1
  324. package/typings/esm5/expansion/expansion-panel-header.d.ts +6 -0
  325. package/typings/esm5/expansion/expansion-panel.d.ts +5 -2
  326. package/typings/esm5/expansion/index.metadata.json +1 -1
  327. package/typings/esm5/form-field/index.metadata.json +1 -1
  328. package/typings/esm5/grid-list/index.d.ts +1 -1
  329. package/typings/esm5/grid-list/index.metadata.json +1 -1
  330. package/typings/esm5/list/index.metadata.json +1 -1
  331. package/typings/esm5/list/selection-list.d.ts +5 -5
  332. package/typings/esm5/menu/index.d.ts +2 -2
  333. package/typings/esm5/menu/index.metadata.json +1 -1
  334. package/typings/esm5/menu/menu-item.d.ts +1 -1
  335. package/typings/esm5/menu/menu-panel.d.ts +8 -0
  336. package/typings/esm5/menu/menu.d.ts +19 -14
  337. package/typings/esm5/progress-spinner/index.metadata.json +1 -1
  338. package/typings/esm5/progress-spinner/progress-spinner.d.ts +1 -1
  339. package/typings/esm5/radio/index.metadata.json +1 -1
  340. package/typings/esm5/radio/radio.d.ts +8 -2
  341. package/typings/esm5/slide-toggle/index.metadata.json +1 -1
  342. package/typings/esm5/slide-toggle/public-api.d.ts +1 -0
  343. package/typings/esm5/slide-toggle/slide-toggle-module.d.ts +3 -0
  344. package/typings/esm5/slide-toggle/slide-toggle-required-validator.d.ts +20 -0
  345. package/typings/esm5/table/table-data-source.d.ts +1 -1
  346. package/typings/esm5/tabs/index.d.ts +2 -1
  347. package/typings/esm5/tabs/index.metadata.json +1 -1
  348. package/typings/esm5/tabs/ink-bar.d.ts +2 -1
  349. package/typings/esm5/tabs/paginated-tab-header.d.ts +187 -0
  350. package/typings/esm5/tabs/public-api.d.ts +2 -1
  351. package/typings/esm5/tabs/tab-group.d.ts +2 -1
  352. package/typings/esm5/tabs/tab-header.d.ts +10 -159
  353. package/typings/esm5/tabs/tab-nav-bar/tab-nav-bar.d.ts +27 -30
  354. package/typings/esm5/tree/index.metadata.json +1 -1
  355. package/typings/esm5/tree/node.d.ts +8 -6
  356. package/typings/expansion/accordion-base.d.ts +4 -0
  357. package/typings/expansion/accordion.d.ts +3 -1
  358. package/typings/expansion/expansion-panel-header.d.ts +6 -0
  359. package/typings/expansion/expansion-panel.d.ts +5 -2
  360. package/typings/expansion/index.metadata.json +1 -1
  361. package/typings/form-field/index.metadata.json +1 -1
  362. package/typings/grid-list/index.d.ts +1 -1
  363. package/typings/grid-list/index.metadata.json +1 -1
  364. package/typings/list/index.metadata.json +1 -1
  365. package/typings/list/selection-list.d.ts +5 -5
  366. package/typings/menu/index.d.ts +2 -2
  367. package/typings/menu/index.metadata.json +1 -1
  368. package/typings/menu/menu-item.d.ts +1 -1
  369. package/typings/menu/menu-panel.d.ts +8 -0
  370. package/typings/menu/menu.d.ts +19 -14
  371. package/typings/progress-spinner/index.metadata.json +1 -1
  372. package/typings/progress-spinner/progress-spinner.d.ts +1 -1
  373. package/typings/radio/index.metadata.json +1 -1
  374. package/typings/radio/radio.d.ts +8 -2
  375. package/typings/schematics/ng-update/index.d.ts +0 -2
  376. package/typings/schematics/ng-update/upgrade-rules/misc-checks/misc-class-inheritance-rule.d.ts +18 -0
  377. package/typings/schematics/ng-update/upgrade-rules/misc-checks/misc-class-names-rule.d.ts +18 -0
  378. package/{schematics/ng-update/upgrade-rules/misc-checks/checkImportsMiscRule.d.ts → typings/schematics/ng-update/upgrade-rules/misc-checks/misc-imports-rule.d.ts} +7 -8
  379. package/typings/schematics/ng-update/upgrade-rules/misc-checks/misc-property-names-rule.d.ts +18 -0
  380. package/typings/schematics/ng-update/upgrade-rules/misc-checks/misc-template-rule.d.ts +16 -0
  381. package/typings/schematics/ng-update/upgrade-rules/misc-ripples-v7/{rippleSpeedFactorAssignmentRule.d.ts → ripple-speed-factor-rule.d.ts} +11 -9
  382. package/typings/schematics/ng-update/upgrade-rules/package-imports-v8/secondary-entry-points-rule.d.ts +18 -0
  383. package/typings/slide-toggle/index.metadata.json +1 -1
  384. package/typings/slide-toggle/public-api.d.ts +1 -0
  385. package/typings/slide-toggle/slide-toggle-module.d.ts +3 -0
  386. package/typings/slide-toggle/slide-toggle-required-validator.d.ts +20 -0
  387. package/typings/table/table-data-source.d.ts +1 -1
  388. package/typings/tabs/index.d.ts +2 -1
  389. package/typings/tabs/index.metadata.json +1 -1
  390. package/typings/tabs/ink-bar.d.ts +2 -1
  391. package/typings/tabs/paginated-tab-header.d.ts +187 -0
  392. package/typings/tabs/public-api.d.ts +2 -1
  393. package/typings/tabs/tab-group.d.ts +2 -1
  394. package/typings/tabs/tab-header.d.ts +10 -159
  395. package/typings/tabs/tab-nav-bar/tab-nav-bar.d.ts +27 -30
  396. package/typings/tree/index.metadata.json +1 -1
  397. package/typings/tree/node.d.ts +8 -6
  398. package/schematics/ng-update/upgrade-rules/misc-checks/checkClassInheritanceMiscRule.d.ts +0 -19
  399. package/schematics/ng-update/upgrade-rules/misc-checks/checkClassInheritanceMiscRule.js +0 -43
  400. package/schematics/ng-update/upgrade-rules/misc-checks/checkClassInheritanceMiscRule.js.map +0 -1
  401. package/schematics/ng-update/upgrade-rules/misc-checks/checkClassNamesMiscRule.d.ts +0 -19
  402. package/schematics/ng-update/upgrade-rules/misc-checks/checkClassNamesMiscRule.js +0 -35
  403. package/schematics/ng-update/upgrade-rules/misc-checks/checkClassNamesMiscRule.js.map +0 -1
  404. package/schematics/ng-update/upgrade-rules/misc-checks/checkImportsMiscRule.js.map +0 -1
  405. package/schematics/ng-update/upgrade-rules/misc-checks/checkPropertyNamesMiscRule.d.ts +0 -19
  406. package/schematics/ng-update/upgrade-rules/misc-checks/checkPropertyNamesMiscRule.js +0 -40
  407. package/schematics/ng-update/upgrade-rules/misc-checks/checkPropertyNamesMiscRule.js.map +0 -1
  408. package/schematics/ng-update/upgrade-rules/misc-checks/checkTemplateMiscRule.d.ts +0 -22
  409. package/schematics/ng-update/upgrade-rules/misc-checks/checkTemplateMiscRule.js +0 -66
  410. package/schematics/ng-update/upgrade-rules/misc-checks/checkTemplateMiscRule.js.map +0 -1
  411. package/schematics/ng-update/upgrade-rules/misc-ripples-v7/rippleSpeedFactorAssignmentRule.js.map +0 -1
  412. package/schematics/ng-update/upgrade-rules/misc-ripples-v7/rippleSpeedFactorTemplateRule.d.ts +0 -22
  413. package/schematics/ng-update/upgrade-rules/misc-ripples-v7/rippleSpeedFactorTemplateRule.js +0 -66
  414. package/schematics/ng-update/upgrade-rules/misc-ripples-v7/rippleSpeedFactorTemplateRule.js.map +0 -1
  415. package/schematics/ng-update/upgrade-rules/package-imports-v8/updateAngularMaterialImportsRule.d.ts +0 -22
  416. package/schematics/ng-update/upgrade-rules/package-imports-v8/updateAngularMaterialImportsRule.js.map +0 -1
  417. package/typings/schematics/ng-update/upgrade-rules/misc-checks/checkClassInheritanceMiscRule.d.ts +0 -19
  418. package/typings/schematics/ng-update/upgrade-rules/misc-checks/checkClassNamesMiscRule.d.ts +0 -19
  419. package/typings/schematics/ng-update/upgrade-rules/misc-checks/checkPropertyNamesMiscRule.d.ts +0 -19
  420. package/typings/schematics/ng-update/upgrade-rules/misc-checks/checkTemplateMiscRule.d.ts +0 -22
  421. package/typings/schematics/ng-update/upgrade-rules/misc-ripples-v7/rippleSpeedFactorTemplateRule.d.ts +0 -22
  422. package/typings/schematics/ng-update/upgrade-rules/package-imports-v8/updateAngularMaterialImportsRule.d.ts +0 -22
package/esm2015/tabs.js CHANGED
@@ -5,17 +5,18 @@
5
5
  * Use of this source code is governed by an MIT-style license that can be
6
6
  * found in the LICENSE file at https://angular.io/license
7
7
  */
8
- import { Directive, ElementRef, Inject, InjectionToken, NgZone, TemplateRef, ChangeDetectionStrategy, Component, ContentChild, Input, ViewChild, ViewContainerRef, ViewEncapsulation, ChangeDetectorRef, Output, EventEmitter, Optional, ComponentFactoryResolver, forwardRef, ContentChildren, Attribute, NgModule } from '@angular/core';
8
+ import { Directive, ElementRef, Inject, InjectionToken, NgZone, Optional, TemplateRef, ChangeDetectionStrategy, Component, ContentChild, Input, ViewChild, ViewContainerRef, ViewEncapsulation, ChangeDetectorRef, Output, EventEmitter, ComponentFactoryResolver, forwardRef, ContentChildren, Attribute, NgModule } from '@angular/core';
9
+ import { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';
9
10
  import { CdkPortal, TemplatePortal, CdkPortalOutlet, PortalHostDirective, PortalModule } from '@angular/cdk/portal';
10
- import { mixinDisabled, mixinDisableRipple, mixinColor, MAT_RIPPLE_GLOBAL_OPTIONS, mixinTabIndex, RippleRenderer, MatCommonModule, MatRippleModule } from '@angular/material/core';
11
+ import { mixinDisabled, mixinColor, mixinDisableRipple, MAT_RIPPLE_GLOBAL_OPTIONS, mixinTabIndex, RippleRenderer, MatCommonModule, MatRippleModule } from '@angular/material/core';
11
12
  import { Subject, Subscription, merge, of, timer, fromEvent } from 'rxjs';
12
13
  import { animate, state, style, transition, trigger } from '@angular/animations';
13
14
  import { Directionality } from '@angular/cdk/bidi';
14
15
  import { startWith, distinctUntilChanged, takeUntil } from 'rxjs/operators';
15
16
  import { coerceNumberProperty, coerceBooleanProperty } from '@angular/cdk/coercion';
16
- import { END, ENTER, HOME, SPACE, hasModifierKey } from '@angular/cdk/keycodes';
17
17
  import { ViewportRuler } from '@angular/cdk/scrolling';
18
18
  import { FocusKeyManager, FocusMonitor, A11yModule } from '@angular/cdk/a11y';
19
+ import { END, ENTER, HOME, SPACE, hasModifierKey } from '@angular/cdk/keycodes';
19
20
  import { Platform, normalizePassiveListenerOptions } from '@angular/cdk/platform';
20
21
  import { ObserversModule } from '@angular/cdk/observers';
21
22
  import { CommonModule } from '@angular/common';
@@ -58,11 +59,13 @@ class MatInkBar {
58
59
  * @param {?} _elementRef
59
60
  * @param {?} _ngZone
60
61
  * @param {?} _inkBarPositioner
62
+ * @param {?=} _animationMode
61
63
  */
62
- constructor(_elementRef, _ngZone, _inkBarPositioner) {
64
+ constructor(_elementRef, _ngZone, _inkBarPositioner, _animationMode) {
63
65
  this._elementRef = _elementRef;
64
66
  this._ngZone = _ngZone;
65
67
  this._inkBarPositioner = _inkBarPositioner;
68
+ this._animationMode = _animationMode;
66
69
  }
67
70
  /**
68
71
  * Calculates the styles from the provided element in order to align the ink-bar to that element.
@@ -121,6 +124,7 @@ MatInkBar.decorators = [
121
124
  selector: 'mat-ink-bar',
122
125
  host: {
123
126
  'class': 'mat-ink-bar',
127
+ '[class._mat-animation-noopable]': `_animationMode === 'NoopAnimations'`,
124
128
  },
125
129
  },] },
126
130
  ];
@@ -128,7 +132,8 @@ MatInkBar.decorators = [
128
132
  MatInkBar.ctorParameters = () => [
129
133
  { type: ElementRef },
130
134
  { type: NgZone },
131
- { type: undefined, decorators: [{ type: Inject, args: [_MAT_INK_BAR_POSITIONER,] }] }
135
+ { type: undefined, decorators: [{ type: Inject, args: [_MAT_INK_BAR_POSITIONER,] }] },
136
+ { type: String, decorators: [{ type: Optional }, { type: Inject, args: [ANIMATION_MODULE_TYPE,] }] }
132
137
  ];
133
138
 
134
139
  /**
@@ -653,38 +658,28 @@ const HEADER_SCROLL_DELAY = 650;
653
658
  * @type {?}
654
659
  */
655
660
  const HEADER_SCROLL_INTERVAL = 100;
656
- // Boilerplate for applying mixins to MatTabHeader.
657
661
  /**
658
- * \@docs-private
659
- */
660
- class MatTabHeaderBase {
661
- }
662
- /** @type {?} */
663
- const _MatTabHeaderMixinBase = mixinDisableRipple(MatTabHeaderBase);
664
- /**
665
- * The header of the tab group which displays a list of all the tabs in the tab group. Includes
666
- * an ink bar that follows the currently selected tab. When the tabs list's width exceeds the
667
- * width of the header container, then arrows will be displayed to allow the user to scroll
668
- * left and right across the header.
669
- * \@docs-private
662
+ * Base class for a tab header that supported pagination.
663
+ * @abstract
670
664
  */
671
- class MatTabHeader extends _MatTabHeaderMixinBase {
665
+ class MatPaginatedTabHeader {
672
666
  /**
673
667
  * @param {?} _elementRef
674
668
  * @param {?} _changeDetectorRef
675
669
  * @param {?} _viewportRuler
676
670
  * @param {?} _dir
677
671
  * @param {?} _ngZone
678
- * @param {?} _platform
672
+ * @param {?=} _platform
673
+ * @param {?=} _animationMode
679
674
  */
680
- constructor(_elementRef, _changeDetectorRef, _viewportRuler, _dir, _ngZone, _platform) {
681
- super();
675
+ constructor(_elementRef, _changeDetectorRef, _viewportRuler, _dir, _ngZone, _platform, _animationMode) {
682
676
  this._elementRef = _elementRef;
683
677
  this._changeDetectorRef = _changeDetectorRef;
684
678
  this._viewportRuler = _viewportRuler;
685
679
  this._dir = _dir;
686
680
  this._ngZone = _ngZone;
687
681
  this._platform = _platform;
682
+ this._animationMode = _animationMode;
688
683
  /**
689
684
  * The distance in pixels that the tab labels should be translated to the left.
690
685
  */
@@ -748,69 +743,37 @@ class MatTabHeader extends _MatTabHeaderMixinBase {
748
743
  */
749
744
  set selectedIndex(value) {
750
745
  value = coerceNumberProperty(value);
751
- this._selectedIndexChanged = this._selectedIndex != value;
752
- this._selectedIndex = value;
753
- if (this._keyManager) {
754
- this._keyManager.updateActiveItemIndex(value);
755
- }
756
- }
757
- /**
758
- * @return {?}
759
- */
760
- ngAfterContentChecked() {
761
- // If the number of tab labels have changed, check if scrolling should be enabled
762
- if (this._tabLabelCount != this._labelWrappers.length) {
763
- this.updatePagination();
764
- this._tabLabelCount = this._labelWrappers.length;
765
- this._changeDetectorRef.markForCheck();
766
- }
767
- // If the selected index has changed, scroll to the label and check if the scrolling controls
768
- // should be disabled.
769
- if (this._selectedIndexChanged) {
770
- this._scrollToLabel(this._selectedIndex);
771
- this._checkScrollingControls();
772
- this._alignInkBarToSelectedTab();
773
- this._selectedIndexChanged = false;
774
- this._changeDetectorRef.markForCheck();
775
- }
776
- // If the scroll distance has been changed (tab selected, focused, scroll controls activated),
777
- // then translate the header to reflect this.
778
- if (this._scrollDistanceChanged) {
779
- this._updateTabScrollPosition();
780
- this._scrollDistanceChanged = false;
781
- this._changeDetectorRef.markForCheck();
746
+ if (this._selectedIndex != value) {
747
+ this._selectedIndexChanged = true;
748
+ this._selectedIndex = value;
749
+ if (this._keyManager) {
750
+ this._keyManager.updateActiveItemIndex(value);
751
+ }
782
752
  }
783
753
  }
784
754
  /**
785
- * Handles keyboard events on the header.
786
- * @param {?} event
787
755
  * @return {?}
788
756
  */
789
- _handleKeydown(event) {
790
- // We don't handle any key bindings with a modifier key.
791
- if (hasModifierKey(event)) {
792
- return;
793
- }
794
- switch (event.keyCode) {
795
- case HOME:
796
- this._keyManager.setFirstItemActive();
797
- event.preventDefault();
798
- break;
799
- case END:
800
- this._keyManager.setLastItemActive();
801
- event.preventDefault();
802
- break;
803
- case ENTER:
804
- case SPACE:
805
- this.selectFocusedIndex.emit(this.focusIndex);
806
- event.preventDefault();
807
- break;
808
- default:
809
- this._keyManager.onKeydown(event);
810
- }
757
+ ngAfterViewInit() {
758
+ // We need to handle these events manually, because we want to bind passive event listeners.
759
+ fromEvent(this._previousPaginator.nativeElement, 'touchstart', passiveEventListenerOptions)
760
+ .pipe(takeUntil(this._destroyed))
761
+ .subscribe((/**
762
+ * @return {?}
763
+ */
764
+ () => {
765
+ this._handlePaginatorPress('before');
766
+ }));
767
+ fromEvent(this._nextPaginator.nativeElement, 'touchstart', passiveEventListenerOptions)
768
+ .pipe(takeUntil(this._destroyed))
769
+ .subscribe((/**
770
+ * @return {?}
771
+ */
772
+ () => {
773
+ this._handlePaginatorPress('after');
774
+ }));
811
775
  }
812
776
  /**
813
- * Aligns the ink bar to the selected tab on load.
814
777
  * @return {?}
815
778
  */
816
779
  ngAfterContentInit() {
@@ -826,7 +789,7 @@ class MatTabHeader extends _MatTabHeaderMixinBase {
826
789
  this.updatePagination();
827
790
  this._alignInkBarToSelectedTab();
828
791
  });
829
- this._keyManager = new FocusKeyManager(this._labelWrappers)
792
+ this._keyManager = new FocusKeyManager(this._items)
830
793
  .withHorizontalOrientation(this._getLayoutDirection())
831
794
  .withWrap();
832
795
  this._keyManager.updateActiveItem(0);
@@ -835,7 +798,7 @@ class MatTabHeader extends _MatTabHeaderMixinBase {
835
798
  typeof requestAnimationFrame !== 'undefined' ? requestAnimationFrame(realign) : realign();
836
799
  // On dir change or window resize, realign the ink bar and update the orientation of
837
800
  // the key manager if the direction has changed.
838
- merge(dirChange, resize).pipe(takeUntil(this._destroyed)).subscribe((/**
801
+ merge(dirChange, resize, this._items.changes).pipe(takeUntil(this._destroyed)).subscribe((/**
839
802
  * @return {?}
840
803
  */
841
804
  () => {
@@ -857,24 +820,29 @@ class MatTabHeader extends _MatTabHeaderMixinBase {
857
820
  /**
858
821
  * @return {?}
859
822
  */
860
- ngAfterViewInit() {
861
- // We need to handle these events manually, because we want to bind passive event listeners.
862
- fromEvent(this._previousPaginator.nativeElement, 'touchstart', passiveEventListenerOptions)
863
- .pipe(takeUntil(this._destroyed))
864
- .subscribe((/**
865
- * @return {?}
866
- */
867
- () => {
868
- this._handlePaginatorPress('before');
869
- }));
870
- fromEvent(this._nextPaginator.nativeElement, 'touchstart', passiveEventListenerOptions)
871
- .pipe(takeUntil(this._destroyed))
872
- .subscribe((/**
873
- * @return {?}
874
- */
875
- () => {
876
- this._handlePaginatorPress('after');
877
- }));
823
+ ngAfterContentChecked() {
824
+ // If the number of tab labels have changed, check if scrolling should be enabled
825
+ if (this._tabLabelCount != this._items.length) {
826
+ this.updatePagination();
827
+ this._tabLabelCount = this._items.length;
828
+ this._changeDetectorRef.markForCheck();
829
+ }
830
+ // If the selected index has changed, scroll to the label and check if the scrolling controls
831
+ // should be disabled.
832
+ if (this._selectedIndexChanged) {
833
+ this._scrollToLabel(this._selectedIndex);
834
+ this._checkScrollingControls();
835
+ this._alignInkBarToSelectedTab();
836
+ this._selectedIndexChanged = false;
837
+ this._changeDetectorRef.markForCheck();
838
+ }
839
+ // If the scroll distance has been changed (tab selected, focused, scroll controls activated),
840
+ // then translate the header to reflect this.
841
+ if (this._scrollDistanceChanged) {
842
+ this._updateTabScrollPosition();
843
+ this._scrollDistanceChanged = false;
844
+ this._changeDetectorRef.markForCheck();
845
+ }
878
846
  }
879
847
  /**
880
848
  * @return {?}
@@ -884,6 +852,34 @@ class MatTabHeader extends _MatTabHeaderMixinBase {
884
852
  this._destroyed.complete();
885
853
  this._stopScrolling.complete();
886
854
  }
855
+ /**
856
+ * Handles keyboard events on the header.
857
+ * @param {?} event
858
+ * @return {?}
859
+ */
860
+ _handleKeydown(event) {
861
+ // We don't handle any key bindings with a modifier key.
862
+ if (hasModifierKey(event)) {
863
+ return;
864
+ }
865
+ switch (event.keyCode) {
866
+ case HOME:
867
+ this._keyManager.setFirstItemActive();
868
+ event.preventDefault();
869
+ break;
870
+ case END:
871
+ this._keyManager.setLastItemActive();
872
+ event.preventDefault();
873
+ break;
874
+ case ENTER:
875
+ case SPACE:
876
+ this.selectFocusedIndex.emit(this.focusIndex);
877
+ this._itemSelected(event);
878
+ break;
879
+ default:
880
+ this._keyManager.onKeydown(event);
881
+ }
882
+ }
887
883
  /**
888
884
  * Callback for when the MutationObserver detects that the content has changed.
889
885
  * @return {?}
@@ -895,7 +891,7 @@ class MatTabHeader extends _MatTabHeaderMixinBase {
895
891
  // will fire even if the text content didn't change which is inefficient and is prone
896
892
  // to infinite loops if a poorly constructed expression is passed in (see #14249).
897
893
  if (textContent !== this._currentTextContent) {
898
- this._currentTextContent = textContent;
894
+ this._currentTextContent = textContent || '';
899
895
  // The content observer runs outside the `NgZone` by default, which
900
896
  // means that we need to bring the callback back in ourselves.
901
897
  this._ngZone.run((/**
@@ -911,7 +907,7 @@ class MatTabHeader extends _MatTabHeaderMixinBase {
911
907
  /**
912
908
  * Updates the view whether pagination should be enabled or not.
913
909
  *
914
- * WARNING: Calling this method can be very costly in terms of performance. It should be called
910
+ * WARNING: Calling this method can be very costly in terms of performance. It should be called
915
911
  * as infrequently as possible from outside of the Tabs component as it causes a reflow of the
916
912
  * page.
917
913
  * @return {?}
@@ -946,11 +942,11 @@ class MatTabHeader extends _MatTabHeaderMixinBase {
946
942
  * @return {?}
947
943
  */
948
944
  _isValidIndex(index) {
949
- if (!this._labelWrappers) {
945
+ if (!this._items) {
950
946
  return true;
951
947
  }
952
948
  /** @type {?} */
953
- const tab = this._labelWrappers ? this._labelWrappers.toArray()[index] : null;
949
+ const tab = this._items ? this._items.toArray()[index] : null;
954
950
  return !!tab && !tab.disabled;
955
951
  }
956
952
  /**
@@ -963,8 +959,8 @@ class MatTabHeader extends _MatTabHeaderMixinBase {
963
959
  if (this._showPaginationControls) {
964
960
  this._scrollToLabel(tabIndex);
965
961
  }
966
- if (this._labelWrappers && this._labelWrappers.length) {
967
- this._labelWrappers.toArray()[tabIndex].focus();
962
+ if (this._items && this._items.length) {
963
+ this._items.toArray()[tabIndex].focus();
968
964
  // Do not let the browser manage scrolling to focus the element, this will be handled
969
965
  // by using translation. In LTR, the scroll left should be 0. In RTL, the scroll width
970
966
  // should be the full width minus the offset width.
@@ -1009,7 +1005,8 @@ class MatTabHeader extends _MatTabHeaderMixinBase {
1009
1005
  // position to be thrown off in some cases. We have to reset it ourselves to ensure that
1010
1006
  // it doesn't get thrown off. Note that we scope it only to IE and Edge, because messing
1011
1007
  // with the scroll position throws off Chrome 71+ in RTL mode (see #14689).
1012
- if (platform.TRIDENT || platform.EDGE) {
1008
+ // @breaking-change 9.0.0 Remove null check for `platform` after it can no longer be undefined.
1009
+ if (platform && (platform.TRIDENT || platform.EDGE)) {
1013
1010
  this._tabListContainer.nativeElement.scrollLeft = 0;
1014
1011
  }
1015
1012
  }
@@ -1062,24 +1059,25 @@ class MatTabHeader extends _MatTabHeaderMixinBase {
1062
1059
  */
1063
1060
  _scrollToLabel(labelIndex) {
1064
1061
  /** @type {?} */
1065
- const selectedLabel = this._labelWrappers ? this._labelWrappers.toArray()[labelIndex] : null;
1062
+ const selectedLabel = this._items ? this._items.toArray()[labelIndex] : null;
1066
1063
  if (!selectedLabel) {
1067
1064
  return;
1068
1065
  }
1069
1066
  // The view length is the visible width of the tab labels.
1070
1067
  /** @type {?} */
1071
1068
  const viewLength = this._tabListContainer.nativeElement.offsetWidth;
1069
+ const { offsetLeft, offsetWidth } = selectedLabel.elementRef.nativeElement;
1072
1070
  /** @type {?} */
1073
1071
  let labelBeforePos;
1074
1072
  /** @type {?} */
1075
1073
  let labelAfterPos;
1076
1074
  if (this._getLayoutDirection() == 'ltr') {
1077
- labelBeforePos = selectedLabel.getOffsetLeft();
1078
- labelAfterPos = labelBeforePos + selectedLabel.getOffsetWidth();
1075
+ labelBeforePos = offsetLeft;
1076
+ labelAfterPos = labelBeforePos + offsetWidth;
1079
1077
  }
1080
1078
  else {
1081
- labelAfterPos = this._tabList.nativeElement.offsetWidth - selectedLabel.getOffsetLeft();
1082
- labelBeforePos = labelAfterPos - selectedLabel.getOffsetWidth();
1079
+ labelAfterPos = this._tabList.nativeElement.offsetWidth - offsetLeft;
1080
+ labelBeforePos = labelAfterPos - offsetWidth;
1083
1081
  }
1084
1082
  /** @type {?} */
1085
1083
  const beforeVisiblePos = this.scrollDistance;
@@ -1151,10 +1149,16 @@ class MatTabHeader extends _MatTabHeaderMixinBase {
1151
1149
  */
1152
1150
  _alignInkBarToSelectedTab() {
1153
1151
  /** @type {?} */
1154
- const selectedLabelWrapper = this._labelWrappers && this._labelWrappers.length ?
1155
- this._labelWrappers.toArray()[this.selectedIndex].elementRef.nativeElement :
1156
- null;
1157
- this._inkBar.alignToElement((/** @type {?} */ (selectedLabelWrapper)));
1152
+ const selectedItem = this._items && this._items.length ?
1153
+ this._items.toArray()[this.selectedIndex] : null;
1154
+ /** @type {?} */
1155
+ const selectedLabelWrapper = selectedItem ? selectedItem.elementRef.nativeElement : null;
1156
+ if (selectedLabelWrapper) {
1157
+ this._inkBar.alignToElement(selectedLabelWrapper);
1158
+ }
1159
+ else {
1160
+ this._inkBar.hide();
1161
+ }
1158
1162
  }
1159
1163
  /**
1160
1164
  * Stops the currently-running paginator interval.
@@ -1204,11 +1208,69 @@ class MatTabHeader extends _MatTabHeaderMixinBase {
1204
1208
  return { maxScrollDistance, distance: this._scrollDistance };
1205
1209
  }
1206
1210
  }
1211
+ /** @nocollapse */
1212
+ MatPaginatedTabHeader.ctorParameters = () => [
1213
+ { type: ElementRef },
1214
+ { type: ChangeDetectorRef },
1215
+ { type: ViewportRuler },
1216
+ { type: Directionality, decorators: [{ type: Optional }] },
1217
+ { type: NgZone },
1218
+ { type: Platform },
1219
+ { type: String }
1220
+ ];
1221
+
1222
+ /**
1223
+ * @fileoverview added by tsickle
1224
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1225
+ */
1226
+ /**
1227
+ * The header of the tab group which displays a list of all the tabs in the tab group. Includes
1228
+ * an ink bar that follows the currently selected tab. When the tabs list's width exceeds the
1229
+ * width of the header container, then arrows will be displayed to allow the user to scroll
1230
+ * left and right across the header.
1231
+ * \@docs-private
1232
+ */
1233
+ class MatTabHeader extends MatPaginatedTabHeader {
1234
+ /**
1235
+ * @param {?} elementRef
1236
+ * @param {?} changeDetectorRef
1237
+ * @param {?} viewportRuler
1238
+ * @param {?} dir
1239
+ * @param {?} ngZone
1240
+ * @param {?} platform
1241
+ * @param {?=} animationMode
1242
+ */
1243
+ constructor(elementRef, changeDetectorRef, viewportRuler, dir, ngZone, platform,
1244
+ // @breaking-change 9.0.0 `_animationMode` parameter to be made required.
1245
+ animationMode) {
1246
+ super(elementRef, changeDetectorRef, viewportRuler, dir, ngZone, platform, animationMode);
1247
+ this._disableRipple = false;
1248
+ }
1249
+ /**
1250
+ * Whether the ripple effect is disabled or not.
1251
+ * @return {?}
1252
+ */
1253
+ get disableRipple() { return this._disableRipple; }
1254
+ /**
1255
+ * @param {?} value
1256
+ * @return {?}
1257
+ */
1258
+ set disableRipple(value) { this._disableRipple = coerceBooleanProperty(value); }
1259
+ /**
1260
+ * @protected
1261
+ * @param {?} event
1262
+ * @return {?}
1263
+ */
1264
+ _itemSelected(event) {
1265
+ event.preventDefault();
1266
+ }
1267
+ }
1207
1268
  MatTabHeader.decorators = [
1208
1269
  { type: Component, args: [{selector: 'mat-tab-header',
1209
- 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>",
1210
- 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}"],
1211
- inputs: ['disableRipple'],
1270
+ 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>",
1271
+ 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}}"],
1272
+ inputs: ['selectedIndex'],
1273
+ outputs: ['selectFocusedIndex', 'indexFocused'],
1212
1274
  encapsulation: ViewEncapsulation.None,
1213
1275
  changeDetection: ChangeDetectionStrategy.OnPush,
1214
1276
  host: {
@@ -1225,18 +1287,17 @@ MatTabHeader.ctorParameters = () => [
1225
1287
  { type: ViewportRuler },
1226
1288
  { type: Directionality, decorators: [{ type: Optional }] },
1227
1289
  { type: NgZone },
1228
- { type: Platform }
1290
+ { type: Platform },
1291
+ { type: String, decorators: [{ type: Optional }, { type: Inject, args: [ANIMATION_MODULE_TYPE,] }] }
1229
1292
  ];
1230
1293
  MatTabHeader.propDecorators = {
1231
- _labelWrappers: [{ type: ContentChildren, args: [MatTabLabelWrapper,] }],
1294
+ _items: [{ type: ContentChildren, args: [MatTabLabelWrapper,] }],
1232
1295
  _inkBar: [{ type: ViewChild, args: [MatInkBar, { static: true },] }],
1233
1296
  _tabListContainer: [{ type: ViewChild, args: ['tabListContainer', { static: true },] }],
1234
1297
  _tabList: [{ type: ViewChild, args: ['tabList', { static: true },] }],
1235
1298
  _nextPaginator: [{ type: ViewChild, args: ['nextPaginator', { static: false },] }],
1236
1299
  _previousPaginator: [{ type: ViewChild, args: ['previousPaginator', { static: false },] }],
1237
- selectedIndex: [{ type: Input }],
1238
- selectFocusedIndex: [{ type: Output }],
1239
- indexFocused: [{ type: Output }]
1300
+ disableRipple: [{ type: Input }]
1240
1301
  };
1241
1302
 
1242
1303
  /**
@@ -1282,10 +1343,12 @@ class MatTabGroup extends _MatTabGroupMixinBase {
1282
1343
  * @param {?} elementRef
1283
1344
  * @param {?} _changeDetectorRef
1284
1345
  * @param {?=} defaultConfig
1346
+ * @param {?=} _animationMode
1285
1347
  */
1286
- constructor(elementRef, _changeDetectorRef, defaultConfig) {
1348
+ constructor(elementRef, _changeDetectorRef, defaultConfig, _animationMode) {
1287
1349
  super(elementRef);
1288
1350
  this._changeDetectorRef = _changeDetectorRef;
1351
+ this._animationMode = _animationMode;
1289
1352
  /**
1290
1353
  * The tab index that should be selected after the content has been checked.
1291
1354
  */
@@ -1613,8 +1676,8 @@ class MatTabGroup extends _MatTabGroupMixinBase {
1613
1676
  MatTabGroup.decorators = [
1614
1677
  { type: Component, args: [{selector: 'mat-tab-group',
1615
1678
  exportAs: 'matTabGroup',
1616
- 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>",
1617
- 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}"],
1679
+ 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>",
1680
+ 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}"],
1618
1681
  encapsulation: ViewEncapsulation.None,
1619
1682
  changeDetection: ChangeDetectionStrategy.OnPush,
1620
1683
  inputs: ['color', 'disableRipple'],
@@ -1629,7 +1692,8 @@ MatTabGroup.decorators = [
1629
1692
  MatTabGroup.ctorParameters = () => [
1630
1693
  { type: ElementRef },
1631
1694
  { type: ChangeDetectorRef },
1632
- { type: undefined, decorators: [{ type: Inject, args: [MAT_TABS_CONFIG,] }, { type: Optional }] }
1695
+ { type: undefined, decorators: [{ type: Inject, args: [MAT_TABS_CONFIG,] }, { type: Optional }] },
1696
+ { type: String, decorators: [{ type: Optional }, { type: Inject, args: [ANIMATION_MODULE_TYPE,] }] }
1633
1697
  ];
1634
1698
  MatTabGroup.propDecorators = {
1635
1699
  _tabs: [{ type: ContentChildren, args: [MatTab,] }],
@@ -1650,42 +1714,31 @@ MatTabGroup.propDecorators = {
1650
1714
  * @fileoverview added by tsickle
1651
1715
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1652
1716
  */
1653
- // Boilerplate for applying mixins to MatTabNav.
1654
- /**
1655
- * \@docs-private
1656
- */
1657
- class MatTabNavBase {
1658
- /**
1659
- * @param {?} _elementRef
1660
- */
1661
- constructor(_elementRef) {
1662
- this._elementRef = _elementRef;
1663
- }
1664
- }
1665
- /** @type {?} */
1666
- const _MatTabNavMixinBase = mixinDisableRipple(mixinColor(MatTabNavBase, 'primary'));
1667
1717
  /**
1668
1718
  * Navigation component matching the styles of the tab group header.
1669
1719
  * Provides anchored navigation with animated ink bar.
1670
1720
  */
1671
- class MatTabNav extends _MatTabNavMixinBase {
1721
+ class MatTabNav extends MatPaginatedTabHeader {
1672
1722
  /**
1673
1723
  * @param {?} elementRef
1674
- * @param {?} _dir
1675
- * @param {?} _ngZone
1676
- * @param {?} _changeDetectorRef
1677
- * @param {?} _viewportRuler
1724
+ * @param {?} dir
1725
+ * @param {?} ngZone
1726
+ * @param {?} changeDetectorRef
1727
+ * @param {?} viewportRuler
1728
+ * @param {?=} platform
1729
+ * @param {?=} animationMode
1678
1730
  */
1679
- constructor(elementRef, _dir, _ngZone, _changeDetectorRef, _viewportRuler) {
1680
- super(elementRef);
1681
- this._dir = _dir;
1682
- this._ngZone = _ngZone;
1683
- this._changeDetectorRef = _changeDetectorRef;
1684
- this._viewportRuler = _viewportRuler;
1731
+ constructor(elementRef, dir, ngZone, changeDetectorRef, viewportRuler,
1732
+ /**
1733
+ * @deprecated @breaking-change 9.0.0 `platform` parameter to become required.
1734
+ */
1735
+ platform, animationMode) {
1736
+ super(elementRef, changeDetectorRef, viewportRuler, dir, ngZone, platform, animationMode);
1737
+ this._disableRipple = false;
1685
1738
  /**
1686
- * Subject that emits when the component has been destroyed.
1739
+ * Theme color of the nav bar.
1687
1740
  */
1688
- this._onDestroy = new Subject();
1741
+ this.color = 'primary';
1689
1742
  }
1690
1743
  /**
1691
1744
  * Background color of the tab nav.
@@ -1698,88 +1751,75 @@ class MatTabNav extends _MatTabNavMixinBase {
1698
1751
  */
1699
1752
  set backgroundColor(value) {
1700
1753
  /** @type {?} */
1701
- const nativeElement = this._elementRef.nativeElement;
1702
- nativeElement.classList.remove(`mat-background-${this.backgroundColor}`);
1754
+ const classList = this._elementRef.nativeElement.classList;
1755
+ classList.remove(`mat-background-${this.backgroundColor}`);
1703
1756
  if (value) {
1704
- nativeElement.classList.add(`mat-background-${value}`);
1757
+ classList.add(`mat-background-${value}`);
1705
1758
  }
1706
1759
  this._backgroundColor = value;
1707
1760
  }
1708
1761
  /**
1709
- * Notifies the component that the active link has been changed.
1710
- * \@breaking-change 8.0.0 `element` parameter to be removed.
1711
- * @param {?} element
1762
+ * Whether the ripple effect is disabled or not.
1712
1763
  * @return {?}
1713
1764
  */
1714
- updateActiveLink(element) {
1715
- // Note: keeping the `element` for backwards-compat, but isn't being used for anything.
1716
- // @breaking-change 8.0.0
1717
- this._activeLinkChanged = !!element;
1718
- this._changeDetectorRef.markForCheck();
1719
- }
1765
+ get disableRipple() { return this._disableRipple; }
1720
1766
  /**
1767
+ * @param {?} value
1721
1768
  * @return {?}
1722
1769
  */
1723
- ngAfterContentInit() {
1724
- this._ngZone.runOutsideAngular((/**
1725
- * @return {?}
1726
- */
1727
- () => {
1728
- /** @type {?} */
1729
- const dirChange = this._dir ? this._dir.change : of(null);
1730
- return merge(dirChange, this._viewportRuler.change(10))
1731
- .pipe(takeUntil(this._onDestroy))
1732
- .subscribe((/**
1733
- * @return {?}
1734
- */
1735
- () => this._alignInkBar()));
1736
- }));
1737
- }
1770
+ set disableRipple(value) { this._disableRipple = coerceBooleanProperty(value); }
1738
1771
  /**
1739
- * Checks if the active link has been changed and, if so, will update the ink bar.
1772
+ * @protected
1740
1773
  * @return {?}
1741
1774
  */
1742
- ngAfterContentChecked() {
1743
- if (this._activeLinkChanged) {
1744
- /** @type {?} */
1745
- const activeTab = this._tabLinks.find((/**
1746
- * @param {?} tab
1747
- * @return {?}
1748
- */
1749
- tab => tab.active));
1750
- this._activeLinkElement = activeTab ? activeTab._elementRef : null;
1751
- this._alignInkBar();
1752
- this._activeLinkChanged = false;
1753
- }
1775
+ _itemSelected() {
1776
+ // noop
1754
1777
  }
1755
1778
  /**
1756
1779
  * @return {?}
1757
1780
  */
1758
- ngOnDestroy() {
1759
- this._onDestroy.next();
1760
- this._onDestroy.complete();
1781
+ ngAfterContentInit() {
1782
+ this.updateActiveLink();
1783
+ super.ngAfterContentInit();
1761
1784
  }
1762
1785
  /**
1763
- * Aligns the ink bar to the active link.
1786
+ * Notifies the component that the active link has been changed.
1787
+ * \@breaking-change 8.0.0 `element` parameter to be removed.
1788
+ * @param {?=} _element
1764
1789
  * @return {?}
1765
1790
  */
1766
- _alignInkBar() {
1767
- if (this._activeLinkElement) {
1768
- this._inkBar.show();
1769
- this._inkBar.alignToElement(this._activeLinkElement.nativeElement);
1791
+ updateActiveLink(_element) {
1792
+ if (!this._items) {
1793
+ return;
1770
1794
  }
1771
- else {
1772
- this._inkBar.hide();
1795
+ /** @type {?} */
1796
+ const items = this._items.toArray();
1797
+ for (let i = 0; i < items.length; i++) {
1798
+ if (items[i].active) {
1799
+ this.selectedIndex = i;
1800
+ this._changeDetectorRef.markForCheck();
1801
+ return;
1802
+ }
1773
1803
  }
1804
+ // The ink bar should hide itself if no items are active.
1805
+ this.selectedIndex = -1;
1806
+ this._inkBar.hide();
1774
1807
  }
1775
1808
  }
1776
1809
  MatTabNav.decorators = [
1777
1810
  { type: Component, args: [{selector: '[mat-tab-nav-bar]',
1778
1811
  exportAs: 'matTabNavBar, matTabNav',
1779
- inputs: ['color', 'disableRipple'],
1780
- template: "<div class=\"mat-tab-links\" (cdkObserveContent)=\"_alignInkBar()\"><ng-content></ng-content><mat-ink-bar></mat-ink-bar></div>",
1781
- 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}}"],
1782
- host: { 'class': 'mat-tab-nav-bar' },
1812
+ inputs: ['color'],
1813
+ 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>",
1814
+ 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}}"],
1815
+ host: {
1816
+ 'class': 'mat-tab-nav-bar mat-tab-header',
1817
+ '[class.mat-tab-header-pagination-controls-enabled]': '_showPaginationControls',
1818
+ '[class.mat-tab-header-rtl]': "_getLayoutDirection() == 'rtl'",
1819
+ '[class.mat-primary]': 'color !== "warn" && color !== "accent"',
1820
+ '[class.mat-accent]': 'color === "accent"',
1821
+ '[class.mat-warn]': 'color === "warn"',
1822
+ },
1783
1823
  encapsulation: ViewEncapsulation.None,
1784
1824
  changeDetection: ChangeDetectionStrategy.OnPush,
1785
1825
  },] },
@@ -1790,15 +1830,23 @@ MatTabNav.ctorParameters = () => [
1790
1830
  { type: Directionality, decorators: [{ type: Optional }] },
1791
1831
  { type: NgZone },
1792
1832
  { type: ChangeDetectorRef },
1793
- { type: ViewportRuler }
1833
+ { type: ViewportRuler },
1834
+ { type: Platform, decorators: [{ type: Optional }] },
1835
+ { type: String, decorators: [{ type: Optional }, { type: Inject, args: [ANIMATION_MODULE_TYPE,] }] }
1794
1836
  ];
1795
1837
  MatTabNav.propDecorators = {
1796
- _inkBar: [{ type: ViewChild, args: [MatInkBar, { static: true },] }],
1797
- _tabLinks: [{ type: ContentChildren, args: [forwardRef((/**
1838
+ _items: [{ type: ContentChildren, args: [forwardRef((/**
1798
1839
  * @return {?}
1799
1840
  */
1800
1841
  () => MatTabLink)), { descendants: true },] }],
1801
- backgroundColor: [{ type: Input }]
1842
+ _inkBar: [{ type: ViewChild, args: [MatInkBar, { static: true },] }],
1843
+ _tabListContainer: [{ type: ViewChild, args: ['tabListContainer', { static: true },] }],
1844
+ _tabList: [{ type: ViewChild, args: ['tabList', { static: true },] }],
1845
+ _nextPaginator: [{ type: ViewChild, args: ['nextPaginator', { static: false },] }],
1846
+ _previousPaginator: [{ type: ViewChild, args: ['previousPaginator', { static: false },] }],
1847
+ backgroundColor: [{ type: Input }],
1848
+ disableRipple: [{ type: Input }],
1849
+ color: [{ type: Input }]
1802
1850
  };
1803
1851
  // Boilerplate for applying mixins to MatTabLink.
1804
1852
  class MatTabLinkBase {
@@ -1811,27 +1859,31 @@ const _MatTabLinkMixinBase = mixinTabIndex(mixinDisableRipple(mixinDisabled(MatT
1811
1859
  class MatTabLink extends _MatTabLinkMixinBase {
1812
1860
  /**
1813
1861
  * @param {?} _tabNavBar
1814
- * @param {?} _elementRef
1862
+ * @param {?} elementRef
1815
1863
  * @param {?} ngZone
1816
1864
  * @param {?} platform
1817
1865
  * @param {?} globalRippleOptions
1818
1866
  * @param {?} tabIndex
1819
1867
  * @param {?} _focusMonitor
1868
+ * @param {?=} animationMode
1820
1869
  */
1821
- constructor(_tabNavBar, _elementRef, ngZone, platform, globalRippleOptions, tabIndex, _focusMonitor) {
1870
+ constructor(_tabNavBar, elementRef, ngZone, platform, globalRippleOptions, tabIndex, _focusMonitor, animationMode) {
1822
1871
  super();
1823
1872
  this._tabNavBar = _tabNavBar;
1824
- this._elementRef = _elementRef;
1873
+ this.elementRef = elementRef;
1825
1874
  this._focusMonitor = _focusMonitor;
1826
1875
  /**
1827
1876
  * Whether the tab link is active or not.
1828
1877
  */
1829
1878
  this._isActive = false;
1830
- this._tabLinkRipple = new RippleRenderer(this, ngZone, _elementRef, platform);
1831
- this._tabLinkRipple.setupTriggerEvents(_elementRef.nativeElement);
1879
+ this._tabLinkRipple = new RippleRenderer(this, ngZone, elementRef, platform);
1880
+ this._tabLinkRipple.setupTriggerEvents(elementRef.nativeElement);
1832
1881
  this.rippleConfig = globalRippleOptions || {};
1833
1882
  this.tabIndex = parseInt(tabIndex) || 0;
1834
- _focusMonitor.monitor(_elementRef);
1883
+ if (animationMode === 'NoopAnimations') {
1884
+ this.rippleConfig.animation = { enterDuration: 0, exitDuration: 0 };
1885
+ }
1886
+ _focusMonitor.monitor(elementRef);
1835
1887
  }
1836
1888
  /**
1837
1889
  * Whether the link is active.
@@ -1845,7 +1897,7 @@ class MatTabLink extends _MatTabLinkMixinBase {
1845
1897
  set active(value) {
1846
1898
  if (value !== this._isActive) {
1847
1899
  this._isActive = value;
1848
- this._tabNavBar.updateActiveLink(this._elementRef);
1900
+ this._tabNavBar.updateActiveLink(this.elementRef);
1849
1901
  }
1850
1902
  }
1851
1903
  /**
@@ -1857,12 +1909,18 @@ class MatTabLink extends _MatTabLinkMixinBase {
1857
1909
  return this.disabled || this.disableRipple || this._tabNavBar.disableRipple ||
1858
1910
  !!this.rippleConfig.disabled;
1859
1911
  }
1912
+ /**
1913
+ * @return {?}
1914
+ */
1915
+ focus() {
1916
+ this.elementRef.nativeElement.focus();
1917
+ }
1860
1918
  /**
1861
1919
  * @return {?}
1862
1920
  */
1863
1921
  ngOnDestroy() {
1864
1922
  this._tabLinkRipple._removeTriggerEvents();
1865
- this._focusMonitor.stopMonitoring(this._elementRef);
1923
+ this._focusMonitor.stopMonitoring(this.elementRef);
1866
1924
  }
1867
1925
  }
1868
1926
  MatTabLink.decorators = [
@@ -1872,8 +1930,8 @@ MatTabLink.decorators = [
1872
1930
  inputs: ['disabled', 'disableRipple', 'tabIndex'],
1873
1931
  host: {
1874
1932
  'class': 'mat-tab-link',
1875
- '[attr.aria-current]': 'active',
1876
- '[attr.aria-disabled]': 'disabled.toString()',
1933
+ '[attr.aria-current]': 'active ? "page" : null',
1934
+ '[attr.aria-disabled]': 'disabled',
1877
1935
  '[attr.tabIndex]': 'tabIndex',
1878
1936
  '[class.mat-tab-disabled]': 'disabled',
1879
1937
  '[class.mat-tab-label-active]': 'active',
@@ -1888,7 +1946,8 @@ MatTabLink.ctorParameters = () => [
1888
1946
  { type: Platform },
1889
1947
  { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [MAT_RIPPLE_GLOBAL_OPTIONS,] }] },
1890
1948
  { type: String, decorators: [{ type: Attribute, args: ['tabindex',] }] },
1891
- { type: FocusMonitor }
1949
+ { type: FocusMonitor },
1950
+ { type: String, decorators: [{ type: Optional }, { type: Inject, args: [ANIMATION_MODULE_TYPE,] }] }
1892
1951
  ];
1893
1952
  MatTabLink.propDecorators = {
1894
1953
  active: [{ type: Input }]
@@ -1951,5 +2010,5 @@ MatTabsModule.decorators = [
1951
2010
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1952
2011
  */
1953
2012
 
1954
- export { MatInkBar, _MAT_INK_BAR_POSITIONER, MatTabBody, MatTabBodyPortal, MatTabHeader, MatTabLabelWrapper, MatTab, MatTabLabel, MatTabNav, MatTabLink, MatTabContent, MatTabsModule, MatTabChangeEvent, MAT_TABS_CONFIG, MatTabGroup, matTabsAnimations, _MAT_INK_BAR_POSITIONER_FACTORY as ɵa23 };
2013
+ export { MatInkBar, _MAT_INK_BAR_POSITIONER, MatTabBody, MatTabBodyPortal, MatTabHeader, MatTabLabelWrapper, MatTab, MatTabLabel, MatTabNav, MatTabLink, MatTabContent, MatTabsModule, MatTabChangeEvent, MAT_TABS_CONFIG, MatTabGroup, matTabsAnimations, _MAT_INK_BAR_POSITIONER_FACTORY as ɵa24, MatPaginatedTabHeader as ɵb24 };
1955
2014
  //# sourceMappingURL=tabs.js.map