@angular/material 7.1.0 → 7.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (495) hide show
  1. package/LICENSE +1 -1
  2. package/_theming.scss +50 -19
  3. package/autocomplete/typings/index.d.ts +0 -1
  4. package/autocomplete/typings/index.metadata.json +1 -1
  5. package/autocomplete/typings/public-api.d.ts +1 -0
  6. package/badge/typings/index.metadata.json +1 -1
  7. package/bottom-sheet/typings/bottom-sheet-ref.d.ts +2 -0
  8. package/bottom-sheet/typings/index.metadata.json +1 -1
  9. package/bundles/material-autocomplete.umd.js +139 -39
  10. package/bundles/material-autocomplete.umd.js.map +1 -1
  11. package/bundles/material-autocomplete.umd.min.js +1 -1
  12. package/bundles/material-autocomplete.umd.min.js.map +1 -1
  13. package/bundles/material-badge.umd.js +38 -5
  14. package/bundles/material-badge.umd.js.map +1 -1
  15. package/bundles/material-badge.umd.min.js +1 -1
  16. package/bundles/material-badge.umd.min.js.map +1 -1
  17. package/bundles/material-bottom-sheet.umd.js +67 -22
  18. package/bundles/material-bottom-sheet.umd.js.map +1 -1
  19. package/bundles/material-bottom-sheet.umd.min.js +1 -1
  20. package/bundles/material-bottom-sheet.umd.min.js.map +1 -1
  21. package/bundles/material-button-toggle.umd.js +45 -14
  22. package/bundles/material-button-toggle.umd.js.map +1 -1
  23. package/bundles/material-button-toggle.umd.min.js +1 -1
  24. package/bundles/material-button-toggle.umd.min.js.map +1 -1
  25. package/bundles/material-button.umd.js +21 -14
  26. package/bundles/material-button.umd.js.map +1 -1
  27. package/bundles/material-button.umd.min.js +1 -1
  28. package/bundles/material-button.umd.min.js.map +1 -1
  29. package/bundles/material-card.umd.js +3 -3
  30. package/bundles/material-card.umd.js.map +1 -1
  31. package/bundles/material-card.umd.min.js +1 -1
  32. package/bundles/material-card.umd.min.js.map +1 -1
  33. package/bundles/material-checkbox.umd.js +56 -15
  34. package/bundles/material-checkbox.umd.js.map +1 -1
  35. package/bundles/material-checkbox.umd.min.js +1 -1
  36. package/bundles/material-checkbox.umd.min.js.map +1 -1
  37. package/bundles/material-chips.umd.js +126 -38
  38. package/bundles/material-chips.umd.js.map +1 -1
  39. package/bundles/material-chips.umd.min.js +1 -1
  40. package/bundles/material-chips.umd.min.js.map +1 -1
  41. package/bundles/material-core.umd.js +190 -127
  42. package/bundles/material-core.umd.js.map +1 -1
  43. package/bundles/material-core.umd.min.js +1 -2
  44. package/bundles/material-core.umd.min.js.map +1 -1
  45. package/bundles/material-datepicker.umd.js +205 -42
  46. package/bundles/material-datepicker.umd.js.map +1 -1
  47. package/bundles/material-datepicker.umd.min.js +2 -2
  48. package/bundles/material-datepicker.umd.min.js.map +1 -1
  49. package/bundles/material-dialog.umd.js +138 -40
  50. package/bundles/material-dialog.umd.js.map +1 -1
  51. package/bundles/material-dialog.umd.min.js +1 -1
  52. package/bundles/material-dialog.umd.min.js.map +1 -1
  53. package/bundles/material-divider.umd.js +2 -2
  54. package/bundles/material-divider.umd.js.map +1 -1
  55. package/bundles/material-divider.umd.min.js.map +1 -1
  56. package/bundles/material-expansion.umd.js +52 -26
  57. package/bundles/material-expansion.umd.js.map +1 -1
  58. package/bundles/material-expansion.umd.min.js +1 -1
  59. package/bundles/material-expansion.umd.min.js.map +1 -1
  60. package/bundles/material-form-field.umd.js +123 -34
  61. package/bundles/material-form-field.umd.js.map +1 -1
  62. package/bundles/material-form-field.umd.min.js +1 -1
  63. package/bundles/material-form-field.umd.min.js.map +1 -1
  64. package/bundles/material-grid-list.umd.js +67 -16
  65. package/bundles/material-grid-list.umd.js.map +1 -1
  66. package/bundles/material-grid-list.umd.min.js +1 -1
  67. package/bundles/material-grid-list.umd.min.js.map +1 -1
  68. package/bundles/material-icon.umd.js +288 -78
  69. package/bundles/material-icon.umd.js.map +1 -1
  70. package/bundles/material-icon.umd.min.js +1 -1
  71. package/bundles/material-icon.umd.min.js.map +1 -1
  72. package/bundles/material-input.umd.js +50 -22
  73. package/bundles/material-input.umd.js.map +1 -1
  74. package/bundles/material-input.umd.min.js +1 -1
  75. package/bundles/material-input.umd.min.js.map +1 -1
  76. package/bundles/material-list.umd.js +159 -26
  77. package/bundles/material-list.umd.js.map +1 -1
  78. package/bundles/material-list.umd.min.js +2 -2
  79. package/bundles/material-list.umd.min.js.map +1 -1
  80. package/bundles/material-menu.umd.js +176 -70
  81. package/bundles/material-menu.umd.js.map +1 -1
  82. package/bundles/material-menu.umd.min.js +1 -1
  83. package/bundles/material-menu.umd.min.js.map +1 -1
  84. package/bundles/material-paginator.umd.js +25 -8
  85. package/bundles/material-paginator.umd.js.map +1 -1
  86. package/bundles/material-paginator.umd.min.js.map +1 -1
  87. package/bundles/material-progress-bar.umd.js +32 -13
  88. package/bundles/material-progress-bar.umd.js.map +1 -1
  89. package/bundles/material-progress-bar.umd.min.js +1 -1
  90. package/bundles/material-progress-bar.umd.min.js.map +1 -1
  91. package/bundles/material-progress-spinner.umd.js +30 -14
  92. package/bundles/material-progress-spinner.umd.js.map +1 -1
  93. package/bundles/material-progress-spinner.umd.min.js +1 -1
  94. package/bundles/material-progress-spinner.umd.min.js.map +1 -1
  95. package/bundles/material-radio.umd.js +38 -40
  96. package/bundles/material-radio.umd.js.map +1 -1
  97. package/bundles/material-radio.umd.min.js +1 -1
  98. package/bundles/material-radio.umd.min.js.map +1 -1
  99. package/bundles/material-select.umd.js +186 -49
  100. package/bundles/material-select.umd.js.map +1 -1
  101. package/bundles/material-select.umd.min.js +1 -1
  102. package/bundles/material-select.umd.min.js.map +1 -1
  103. package/bundles/material-sidenav.umd.js +104 -25
  104. package/bundles/material-sidenav.umd.js.map +1 -1
  105. package/bundles/material-sidenav.umd.min.js +1 -1
  106. package/bundles/material-sidenav.umd.min.js.map +1 -1
  107. package/bundles/material-slide-toggle.umd.js +31 -15
  108. package/bundles/material-slide-toggle.umd.js.map +1 -1
  109. package/bundles/material-slide-toggle.umd.min.js +1 -1
  110. package/bundles/material-slide-toggle.umd.min.js.map +1 -1
  111. package/bundles/material-slider.umd.js +88 -20
  112. package/bundles/material-slider.umd.js.map +1 -1
  113. package/bundles/material-slider.umd.min.js +1 -1
  114. package/bundles/material-slider.umd.min.js.map +1 -1
  115. package/bundles/material-snack-bar.umd.js +69 -20
  116. package/bundles/material-snack-bar.umd.js.map +1 -1
  117. package/bundles/material-snack-bar.umd.min.js +1 -1
  118. package/bundles/material-snack-bar.umd.min.js.map +1 -1
  119. package/bundles/material-sort.umd.js +46 -24
  120. package/bundles/material-sort.umd.js.map +1 -1
  121. package/bundles/material-sort.umd.min.js +1 -1
  122. package/bundles/material-sort.umd.min.js.map +1 -1
  123. package/bundles/material-stepper.umd.js +29 -20
  124. package/bundles/material-stepper.umd.js.map +1 -1
  125. package/bundles/material-stepper.umd.min.js +1 -1
  126. package/bundles/material-stepper.umd.min.js.map +1 -1
  127. package/bundles/material-table.umd.js +48 -15
  128. package/bundles/material-table.umd.js.map +1 -1
  129. package/bundles/material-table.umd.min.js +1 -1
  130. package/bundles/material-table.umd.min.js.map +1 -1
  131. package/bundles/material-tabs.umd.js +162 -61
  132. package/bundles/material-tabs.umd.js.map +1 -1
  133. package/bundles/material-tabs.umd.min.js +2 -2
  134. package/bundles/material-tabs.umd.min.js.map +1 -1
  135. package/bundles/material-toolbar.umd.js +14 -4
  136. package/bundles/material-toolbar.umd.js.map +1 -1
  137. package/bundles/material-toolbar.umd.min.js +1 -1
  138. package/bundles/material-toolbar.umd.min.js.map +1 -1
  139. package/bundles/material-tooltip.umd.js +62 -26
  140. package/bundles/material-tooltip.umd.js.map +1 -1
  141. package/bundles/material-tooltip.umd.min.js +1 -1
  142. package/bundles/material-tooltip.umd.min.js.map +1 -1
  143. package/bundles/material-tree.umd.js +25 -16
  144. package/bundles/material-tree.umd.js.map +1 -1
  145. package/bundles/material-tree.umd.min.js +1 -1
  146. package/bundles/material-tree.umd.min.js.map +1 -1
  147. package/bundles/material.umd.js +2927 -995
  148. package/bundles/material.umd.js.map +1 -1
  149. package/bundles/material.umd.min.js +18 -18
  150. package/bundles/material.umd.min.js.map +1 -1
  151. package/button/typings/button.d.ts +0 -5
  152. package/button/typings/index.metadata.json +1 -1
  153. package/button-toggle/typings/index.metadata.json +1 -1
  154. package/card/typings/index.metadata.json +1 -1
  155. package/checkbox/typings/index.metadata.json +1 -1
  156. package/chips/typings/chip-list.d.ts +2 -2
  157. package/chips/typings/chip.d.ts +2 -2
  158. package/chips/typings/index.metadata.json +1 -1
  159. package/core/typings/index.metadata.json +1 -1
  160. package/core/typings/{testing/month-constants.d.ts → month-constants.d.ts} +2 -0
  161. package/core/typings/public-api.d.ts +1 -1
  162. package/core/typings/ripple/ripple.d.ts +1 -1
  163. package/datepicker/typings/calendar.d.ts +2 -2
  164. package/datepicker/typings/index.metadata.json +1 -1
  165. package/dialog/typings/index.metadata.json +1 -1
  166. package/esm2015/autocomplete.js +73 -36
  167. package/esm2015/autocomplete.js.map +1 -1
  168. package/esm2015/badge.js +29 -6
  169. package/esm2015/badge.js.map +1 -1
  170. package/esm2015/bottom-sheet.js +44 -23
  171. package/esm2015/bottom-sheet.js.map +1 -1
  172. package/esm2015/button-toggle.js +27 -11
  173. package/esm2015/button-toggle.js.map +1 -1
  174. package/esm2015/button.js +20 -15
  175. package/esm2015/button.js.map +1 -1
  176. package/esm2015/card.js +5 -5
  177. package/esm2015/card.js.map +1 -1
  178. package/esm2015/checkbox.js +30 -12
  179. package/esm2015/checkbox.js.map +1 -1
  180. package/esm2015/chips.js +64 -30
  181. package/esm2015/chips.js.map +1 -1
  182. package/esm2015/core.js +147 -128
  183. package/esm2015/core.js.map +1 -1
  184. package/esm2015/datepicker.js +103 -37
  185. package/esm2015/datepicker.js.map +1 -1
  186. package/esm2015/dialog.js +77 -40
  187. package/esm2015/dialog.js.map +1 -1
  188. package/esm2015/divider.js +4 -4
  189. package/esm2015/divider.js.map +1 -1
  190. package/esm2015/expansion.js +56 -29
  191. package/esm2015/expansion.js.map +1 -1
  192. package/esm2015/form-field.js +95 -35
  193. package/esm2015/form-field.js.map +1 -1
  194. package/esm2015/grid-list.js +45 -17
  195. package/esm2015/grid-list.js.map +1 -1
  196. package/esm2015/icon.js +144 -67
  197. package/esm2015/icon.js.map +1 -1
  198. package/esm2015/input.js +44 -23
  199. package/esm2015/input.js.map +1 -1
  200. package/esm2015/list.js +118 -24
  201. package/esm2015/list.js.map +1 -1
  202. package/esm2015/material.js +13 -12
  203. package/esm2015/material.js.map +1 -1
  204. package/esm2015/menu.js +114 -67
  205. package/esm2015/menu.js.map +1 -1
  206. package/esm2015/paginator.js +17 -9
  207. package/esm2015/paginator.js.map +1 -1
  208. package/esm2015/progress-bar.js +26 -13
  209. package/esm2015/progress-bar.js.map +1 -1
  210. package/esm2015/progress-spinner.js +24 -14
  211. package/esm2015/progress-spinner.js.map +1 -1
  212. package/esm2015/radio.js +22 -21
  213. package/esm2015/radio.js.map +1 -1
  214. package/esm2015/select.js +112 -50
  215. package/esm2015/select.js.map +1 -1
  216. package/esm2015/sidenav.js +75 -28
  217. package/esm2015/sidenav.js.map +1 -1
  218. package/esm2015/slide-toggle.js +23 -15
  219. package/esm2015/slide-toggle.js.map +1 -1
  220. package/esm2015/slider.js +51 -23
  221. package/esm2015/slider.js.map +1 -1
  222. package/esm2015/snack-bar.js +38 -21
  223. package/esm2015/snack-bar.js.map +1 -1
  224. package/esm2015/sort.js +47 -24
  225. package/esm2015/sort.js.map +1 -1
  226. package/esm2015/stepper.js +32 -23
  227. package/esm2015/stepper.js.map +1 -1
  228. package/esm2015/table.js +51 -18
  229. package/esm2015/table.js.map +1 -1
  230. package/esm2015/tabs.js +112 -49
  231. package/esm2015/tabs.js.map +1 -1
  232. package/esm2015/toolbar.js +9 -5
  233. package/esm2015/toolbar.js.map +1 -1
  234. package/esm2015/tooltip.js +49 -28
  235. package/esm2015/tooltip.js.map +1 -1
  236. package/esm2015/tree.js +22 -17
  237. package/esm2015/tree.js.map +1 -1
  238. package/esm5/autocomplete.es5.js +141 -41
  239. package/esm5/autocomplete.es5.js.map +1 -1
  240. package/esm5/badge.es5.js +40 -7
  241. package/esm5/badge.es5.js.map +1 -1
  242. package/esm5/bottom-sheet.es5.js +68 -23
  243. package/esm5/bottom-sheet.es5.js.map +1 -1
  244. package/esm5/button-toggle.es5.js +46 -15
  245. package/esm5/button-toggle.es5.js.map +1 -1
  246. package/esm5/button.es5.js +23 -16
  247. package/esm5/button.es5.js.map +1 -1
  248. package/esm5/card.es5.js +5 -5
  249. package/esm5/card.es5.js.map +1 -1
  250. package/esm5/checkbox.es5.js +58 -17
  251. package/esm5/checkbox.es5.js.map +1 -1
  252. package/esm5/chips.es5.js +129 -41
  253. package/esm5/chips.es5.js.map +1 -1
  254. package/esm5/core.es5.js +192 -129
  255. package/esm5/core.es5.js.map +1 -1
  256. package/esm5/datepicker.es5.js +207 -44
  257. package/esm5/datepicker.es5.js.map +1 -1
  258. package/esm5/dialog.es5.js +140 -42
  259. package/esm5/dialog.es5.js.map +1 -1
  260. package/esm5/divider.es5.js +4 -4
  261. package/esm5/divider.es5.js.map +1 -1
  262. package/esm5/expansion.es5.js +54 -29
  263. package/esm5/expansion.es5.js.map +1 -1
  264. package/esm5/form-field.es5.js +126 -37
  265. package/esm5/form-field.es5.js.map +1 -1
  266. package/esm5/grid-list.es5.js +68 -17
  267. package/esm5/grid-list.es5.js.map +1 -1
  268. package/esm5/icon.es5.js +290 -80
  269. package/esm5/icon.es5.js.map +1 -1
  270. package/esm5/input.es5.js +52 -24
  271. package/esm5/input.es5.js.map +1 -1
  272. package/esm5/list.es5.js +161 -27
  273. package/esm5/list.es5.js.map +1 -1
  274. package/esm5/material.es5.js +13 -12
  275. package/esm5/material.es5.js.map +1 -1
  276. package/esm5/menu.es5.js +175 -69
  277. package/esm5/menu.es5.js.map +1 -1
  278. package/esm5/paginator.es5.js +27 -10
  279. package/esm5/paginator.es5.js.map +1 -1
  280. package/esm5/progress-bar.es5.js +33 -14
  281. package/esm5/progress-bar.es5.js.map +1 -1
  282. package/esm5/progress-spinner.es5.js +31 -15
  283. package/esm5/progress-spinner.es5.js.map +1 -1
  284. package/esm5/radio.es5.js +42 -42
  285. package/esm5/radio.es5.js.map +1 -1
  286. package/esm5/select.es5.js +189 -52
  287. package/esm5/select.es5.js.map +1 -1
  288. package/esm5/sidenav.es5.js +107 -28
  289. package/esm5/sidenav.es5.js.map +1 -1
  290. package/esm5/slide-toggle.es5.js +32 -16
  291. package/esm5/slide-toggle.es5.js.map +1 -1
  292. package/esm5/slider.es5.js +91 -23
  293. package/esm5/slider.es5.js.map +1 -1
  294. package/esm5/snack-bar.es5.js +70 -21
  295. package/esm5/snack-bar.es5.js.map +1 -1
  296. package/esm5/sort.es5.js +53 -26
  297. package/esm5/sort.es5.js.map +1 -1
  298. package/esm5/stepper.es5.js +32 -23
  299. package/esm5/stepper.es5.js.map +1 -1
  300. package/esm5/table.es5.js +51 -18
  301. package/esm5/table.es5.js.map +1 -1
  302. package/esm5/tabs.es5.js +156 -55
  303. package/esm5/tabs.es5.js.map +1 -1
  304. package/esm5/toolbar.es5.js +16 -6
  305. package/esm5/toolbar.es5.js.map +1 -1
  306. package/esm5/tooltip.es5.js +64 -28
  307. package/esm5/tooltip.es5.js.map +1 -1
  308. package/esm5/tree.es5.js +27 -18
  309. package/esm5/tree.es5.js.map +1 -1
  310. package/expansion/typings/expansion-panel-header.d.ts +2 -2
  311. package/expansion/typings/expansion-panel.d.ts +19 -2
  312. package/expansion/typings/index.metadata.json +1 -1
  313. package/form-field/typings/form-field.d.ts +15 -4
  314. package/form-field/typings/index.metadata.json +1 -1
  315. package/form-field/typings/prefix.d.ts +1 -1
  316. package/grid-list/typings/index.d.ts +1 -1
  317. package/grid-list/typings/index.metadata.json +1 -1
  318. package/icon/typings/icon-registry.d.ts +3 -2
  319. package/icon/typings/index.metadata.json +1 -1
  320. package/list/typings/index.metadata.json +1 -1
  321. package/list/typings/list.d.ts +16 -5
  322. package/list/typings/selection-list.d.ts +1 -0
  323. package/material.d.ts +1 -1
  324. package/material.metadata.json +3 -3
  325. package/menu/typings/index.d.ts +4 -4
  326. package/menu/typings/index.metadata.json +1 -1
  327. package/menu/typings/menu-directive.d.ts +1 -0
  328. package/menu/typings/menu-item.d.ts +2 -0
  329. package/menu/typings/menu-trigger.d.ts +1 -1
  330. package/package.json +5 -5
  331. package/prebuilt-themes/deeppurple-amber.css +1 -1
  332. package/prebuilt-themes/indigo-pink.css +1 -1
  333. package/prebuilt-themes/pink-bluegrey.css +1 -1
  334. package/prebuilt-themes/purple-green.css +1 -1
  335. package/progress-bar/typings/index.metadata.json +1 -1
  336. package/radio/typings/index.metadata.json +1 -1
  337. package/radio/typings/radio.d.ts +2 -6
  338. package/schematics/ng-add/theming/{custom-theme.d.ts → create-custom-theme.d.ts} +0 -0
  339. package/schematics/ng-add/theming/{custom-theme.js → create-custom-theme.js} +1 -1
  340. package/schematics/ng-add/theming/create-custom-theme.js.map +1 -0
  341. package/schematics/ng-add/theming/theming.js +35 -19
  342. package/schematics/ng-add/theming/theming.js.map +1 -1
  343. package/schematics/ng-generate/address-form/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.ts +2 -2
  344. package/schematics/ng-generate/dashboard/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.ts +2 -2
  345. package/schematics/ng-generate/nav/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.ts +2 -2
  346. package/schematics/ng-generate/table/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.ts +2 -2
  347. package/schematics/ng-generate/tree/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.ts +2 -2
  348. package/select/typings/index.metadata.json +1 -1
  349. package/select/typings/select.d.ts +12 -2
  350. package/sidenav/typings/drawer.d.ts +9 -2
  351. package/sidenav/typings/index.metadata.json +1 -1
  352. package/slide-toggle/typings/index.metadata.json +1 -1
  353. package/slider/typings/index.metadata.json +1 -1
  354. package/snack-bar/typings/index.metadata.json +1 -1
  355. package/sort/typings/index.metadata.json +1 -1
  356. package/stepper/typings/index.metadata.json +1 -1
  357. package/table/typings/index.metadata.json +1 -1
  358. package/table/typings/table-data-source.d.ts +2 -0
  359. package/tabs/typings/index.d.ts +5 -5
  360. package/tabs/typings/index.metadata.json +1 -1
  361. package/tabs/typings/tab-group.d.ts +2 -1
  362. package/tabs/typings/tab-header.d.ts +8 -4
  363. package/toolbar/typings/index.metadata.json +1 -1
  364. package/tooltip/typings/index.metadata.json +1 -1
  365. package/tooltip/typings/tooltip.d.ts +2 -1
  366. package/tree/typings/data-source/flat-data-source.d.ts +2 -2
  367. package/tree/typings/index.metadata.json +1 -1
  368. package/typings/autocomplete/index.d.ts +0 -1
  369. package/typings/autocomplete/index.metadata.json +1 -1
  370. package/typings/autocomplete/public-api.d.ts +1 -0
  371. package/typings/badge/index.metadata.json +1 -1
  372. package/typings/bottom-sheet/bottom-sheet-ref.d.ts +2 -0
  373. package/typings/bottom-sheet/index.metadata.json +1 -1
  374. package/typings/button/button.d.ts +0 -5
  375. package/typings/button/index.metadata.json +1 -1
  376. package/typings/button-toggle/index.metadata.json +1 -1
  377. package/typings/card/index.metadata.json +1 -1
  378. package/typings/checkbox/index.metadata.json +1 -1
  379. package/typings/chips/chip-list.d.ts +2 -2
  380. package/typings/chips/chip.d.ts +2 -2
  381. package/typings/chips/index.metadata.json +1 -1
  382. package/typings/core/index.metadata.json +1 -1
  383. package/typings/core/{testing/month-constants.d.ts → month-constants.d.ts} +2 -0
  384. package/typings/core/public-api.d.ts +1 -1
  385. package/typings/core/ripple/ripple.d.ts +1 -1
  386. package/typings/datepicker/calendar.d.ts +2 -2
  387. package/typings/datepicker/index.metadata.json +1 -1
  388. package/typings/dialog/index.metadata.json +1 -1
  389. package/typings/esm5/autocomplete/index.d.ts +0 -1
  390. package/typings/esm5/autocomplete/index.metadata.json +1 -1
  391. package/typings/esm5/autocomplete/public-api.d.ts +1 -0
  392. package/typings/esm5/badge/index.metadata.json +1 -1
  393. package/typings/esm5/bottom-sheet/bottom-sheet-ref.d.ts +2 -0
  394. package/typings/esm5/bottom-sheet/index.metadata.json +1 -1
  395. package/typings/esm5/button/button.d.ts +0 -5
  396. package/typings/esm5/button/index.metadata.json +1 -1
  397. package/typings/esm5/button-toggle/index.metadata.json +1 -1
  398. package/typings/esm5/card/index.metadata.json +1 -1
  399. package/typings/esm5/checkbox/index.metadata.json +1 -1
  400. package/typings/esm5/chips/chip-list.d.ts +2 -2
  401. package/typings/esm5/chips/chip.d.ts +2 -2
  402. package/typings/esm5/chips/index.metadata.json +1 -1
  403. package/typings/esm5/core/index.metadata.json +1 -1
  404. package/typings/esm5/core/{testing/month-constants.d.ts → month-constants.d.ts} +2 -0
  405. package/typings/esm5/core/public-api.d.ts +1 -1
  406. package/typings/esm5/core/ripple/ripple.d.ts +1 -1
  407. package/typings/esm5/datepicker/calendar.d.ts +2 -2
  408. package/typings/esm5/datepicker/index.metadata.json +1 -1
  409. package/typings/esm5/dialog/index.metadata.json +1 -1
  410. package/typings/esm5/expansion/expansion-panel-header.d.ts +2 -2
  411. package/typings/esm5/expansion/expansion-panel.d.ts +19 -2
  412. package/typings/esm5/expansion/index.metadata.json +1 -1
  413. package/typings/esm5/form-field/form-field.d.ts +15 -4
  414. package/typings/esm5/form-field/index.metadata.json +1 -1
  415. package/typings/esm5/form-field/prefix.d.ts +1 -1
  416. package/typings/esm5/grid-list/index.d.ts +1 -1
  417. package/typings/esm5/grid-list/index.metadata.json +1 -1
  418. package/typings/esm5/icon/icon-registry.d.ts +3 -2
  419. package/typings/esm5/icon/index.metadata.json +1 -1
  420. package/typings/esm5/index.metadata.json +1 -1
  421. package/typings/esm5/list/index.metadata.json +1 -1
  422. package/typings/esm5/list/list.d.ts +16 -5
  423. package/typings/esm5/list/selection-list.d.ts +1 -0
  424. package/typings/esm5/menu/index.d.ts +4 -4
  425. package/typings/esm5/menu/index.metadata.json +1 -1
  426. package/typings/esm5/menu/menu-directive.d.ts +1 -0
  427. package/typings/esm5/menu/menu-item.d.ts +2 -0
  428. package/typings/esm5/menu/menu-trigger.d.ts +1 -1
  429. package/typings/esm5/progress-bar/index.metadata.json +1 -1
  430. package/typings/esm5/radio/index.metadata.json +1 -1
  431. package/typings/esm5/radio/radio.d.ts +2 -6
  432. package/typings/esm5/select/index.metadata.json +1 -1
  433. package/typings/esm5/select/select.d.ts +12 -2
  434. package/typings/esm5/sidenav/drawer.d.ts +9 -2
  435. package/typings/esm5/sidenav/index.metadata.json +1 -1
  436. package/typings/esm5/slide-toggle/index.metadata.json +1 -1
  437. package/typings/esm5/slider/index.metadata.json +1 -1
  438. package/typings/esm5/snack-bar/index.metadata.json +1 -1
  439. package/typings/esm5/sort/index.metadata.json +1 -1
  440. package/typings/esm5/stepper/index.metadata.json +1 -1
  441. package/typings/esm5/table/index.metadata.json +1 -1
  442. package/typings/esm5/table/table-data-source.d.ts +2 -0
  443. package/typings/esm5/tabs/index.d.ts +5 -5
  444. package/typings/esm5/tabs/index.metadata.json +1 -1
  445. package/typings/esm5/tabs/tab-group.d.ts +2 -1
  446. package/typings/esm5/tabs/tab-header.d.ts +8 -4
  447. package/typings/esm5/toolbar/index.metadata.json +1 -1
  448. package/typings/esm5/tooltip/index.metadata.json +1 -1
  449. package/typings/esm5/tooltip/tooltip.d.ts +2 -1
  450. package/typings/esm5/tree/data-source/flat-data-source.d.ts +2 -2
  451. package/typings/esm5/tree/index.metadata.json +1 -1
  452. package/typings/expansion/expansion-panel-header.d.ts +2 -2
  453. package/typings/expansion/expansion-panel.d.ts +19 -2
  454. package/typings/expansion/index.metadata.json +1 -1
  455. package/typings/form-field/form-field.d.ts +15 -4
  456. package/typings/form-field/index.metadata.json +1 -1
  457. package/typings/form-field/prefix.d.ts +1 -1
  458. package/typings/grid-list/index.d.ts +1 -1
  459. package/typings/grid-list/index.metadata.json +1 -1
  460. package/typings/icon/icon-registry.d.ts +3 -2
  461. package/typings/icon/index.metadata.json +1 -1
  462. package/typings/index.metadata.json +1 -1
  463. package/typings/list/index.metadata.json +1 -1
  464. package/typings/list/list.d.ts +16 -5
  465. package/typings/list/selection-list.d.ts +1 -0
  466. package/typings/menu/index.d.ts +4 -4
  467. package/typings/menu/index.metadata.json +1 -1
  468. package/typings/menu/menu-directive.d.ts +1 -0
  469. package/typings/menu/menu-item.d.ts +2 -0
  470. package/typings/menu/menu-trigger.d.ts +1 -1
  471. package/typings/progress-bar/index.metadata.json +1 -1
  472. package/typings/radio/index.metadata.json +1 -1
  473. package/typings/radio/radio.d.ts +2 -6
  474. package/typings/schematics/ng-add/theming/{custom-theme.d.ts → create-custom-theme.d.ts} +0 -0
  475. package/typings/select/index.metadata.json +1 -1
  476. package/typings/select/select.d.ts +12 -2
  477. package/typings/sidenav/drawer.d.ts +9 -2
  478. package/typings/sidenav/index.metadata.json +1 -1
  479. package/typings/slide-toggle/index.metadata.json +1 -1
  480. package/typings/slider/index.metadata.json +1 -1
  481. package/typings/snack-bar/index.metadata.json +1 -1
  482. package/typings/sort/index.metadata.json +1 -1
  483. package/typings/stepper/index.metadata.json +1 -1
  484. package/typings/table/index.metadata.json +1 -1
  485. package/typings/table/table-data-source.d.ts +2 -0
  486. package/typings/tabs/index.d.ts +5 -5
  487. package/typings/tabs/index.metadata.json +1 -1
  488. package/typings/tabs/tab-group.d.ts +2 -1
  489. package/typings/tabs/tab-header.d.ts +8 -4
  490. package/typings/toolbar/index.metadata.json +1 -1
  491. package/typings/tooltip/index.metadata.json +1 -1
  492. package/typings/tooltip/tooltip.d.ts +2 -1
  493. package/typings/tree/data-source/flat-data-source.d.ts +2 -2
  494. package/typings/tree/index.metadata.json +1 -1
  495. package/schematics/ng-add/theming/custom-theme.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"table.js","sources":["../../../src/lib/table/table-data-source.ts","../../../src/lib/table/table-module.ts","../../../src/lib/table/row.ts","../../../src/lib/table/cell.ts","../../../src/lib/table/table.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {_isNumberValue} from '@angular/cdk/coercion';\nimport {DataSource} from '@angular/cdk/table';\nimport {\n BehaviorSubject,\n combineLatest,\n merge,\n Observable,\n of as observableOf,\n Subscription\n} from 'rxjs';\nimport {MatPaginator, PageEvent} from '@angular/material/paginator';\nimport {MatSort, Sort} from '@angular/material/sort';\nimport {map} from 'rxjs/operators';\n\n/**\n * Corresponds to `Number.MAX_SAFE_INTEGER`. Moved out into a variable here due to\n * flaky browser support and the value not being defined in Closure's typings.\n */\nconst MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Data source that accepts a client-side data array and includes native support of filtering,\n * sorting (using MatSort), and pagination (using MatPaginator).\n *\n * Allows for sort customization by overriding sortingDataAccessor, which defines how data\n * properties are accessed. Also allows for filter customization by overriding filterTermAccessor,\n * which defines how row data is converted to a string for filter matching.\n */\nexport class MatTableDataSource<T> extends DataSource<T> {\n /** Stream that emits when a new data array is set on the data source. */\n private readonly _data: BehaviorSubject<T[]>;\n\n /** Stream emitting render data to the table (depends on ordered data changes). */\n private readonly _renderData = new BehaviorSubject<T[]>([]);\n\n /** Stream that emits when a new filter string is set on the data source. */\n private readonly _filter = new BehaviorSubject<string>('');\n\n /**\n * Subscription to the changes that should trigger an update to the table's rendered rows, such\n * as filtering, sorting, pagination, or base data changes.\n */\n _renderChangesSubscription = Subscription.EMPTY;\n\n /**\n * The filtered set of data that has been matched by the filter string, or all the data if there\n * is no filter. Useful for knowing the set of data the table represents.\n * For example, a 'selectAll()' function would likely want to select the set of filtered data\n * shown to the user rather than all the data.\n */\n filteredData: T[];\n\n /** Array of data that should be rendered by the table, where each object represents one row. */\n get data() { return this._data.value; }\n set data(data: T[]) { this._data.next(data); }\n\n /**\n * Filter term that should be used to filter out objects from the data array. To override how\n * data objects match to this filter string, provide a custom function for filterPredicate.\n */\n get filter(): string { return this._filter.value; }\n set filter(filter: string) { this._filter.next(filter); }\n\n /**\n * Instance of the MatSort directive used by the table to control its sorting. Sort changes\n * emitted by the MatSort will trigger an update to the table's rendered data.\n */\n get sort(): MatSort | null { return this._sort; }\n set sort(sort: MatSort|null) {\n this._sort = sort;\n this._updateChangeSubscription();\n }\n private _sort: MatSort|null;\n\n /**\n * Instance of the MatPaginator component used by the table to control what page of the data is\n * displayed. Page changes emitted by the MatPaginator will trigger an update to the\n * table's rendered data.\n *\n * Note that the data source uses the paginator's properties to calculate which page of data\n * should be displayed. If the paginator receives its properties as template inputs,\n * e.g. `[pageLength]=100` or `[pageIndex]=1`, then be sure that the paginator's view has been\n * initialized before assigning it to this data source.\n */\n get paginator(): MatPaginator | null { return this._paginator; }\n set paginator(paginator: MatPaginator|null) {\n this._paginator = paginator;\n this._updateChangeSubscription();\n }\n private _paginator: MatPaginator|null;\n\n /**\n * Data accessor function that is used for accessing data properties for sorting through\n * the default sortData function.\n * This default function assumes that the sort header IDs (which defaults to the column name)\n * matches the data's properties (e.g. column Xyz represents data['Xyz']).\n * May be set to a custom function for different behavior.\n * @param data Data object that is being accessed.\n * @param sortHeaderId The name of the column that represents the data.\n */\n sortingDataAccessor: ((data: T, sortHeaderId: string) => string|number) =\n (data: T, sortHeaderId: string): string|number => {\n const value = (data as {[key: string]: any})[sortHeaderId];\n\n if (_isNumberValue(value)) {\n const numberValue = Number(value);\n\n // Numbers beyond `MAX_SAFE_INTEGER` can't be compared reliably so we\n // leave them as strings. For more info: https://goo.gl/y5vbSg\n return numberValue < MAX_SAFE_INTEGER ? numberValue : value;\n }\n\n return value;\n }\n\n /**\n * Gets a sorted copy of the data array based on the state of the MatSort. Called\n * after changes are made to the filtered data or when sort changes are emitted from MatSort.\n * By default, the function retrieves the active sort and its direction and compares data\n * by retrieving data using the sortingDataAccessor. May be overridden for a custom implementation\n * of data ordering.\n * @param data The array of data that should be sorted.\n * @param sort The connected MatSort that holds the current sort state.\n */\n sortData: ((data: T[], sort: MatSort) => T[]) = (data: T[], sort: MatSort): T[] => {\n const active = sort.active;\n const direction = sort.direction;\n if (!active || direction == '') { return data; }\n\n return data.sort((a, b) => {\n let valueA = this.sortingDataAccessor(a, active);\n let valueB = this.sortingDataAccessor(b, active);\n\n // If both valueA and valueB exist (truthy), then compare the two. Otherwise, check if\n // one value exists while the other doesn't. In this case, existing value should come first.\n // This avoids inconsistent results when comparing values to undefined/null.\n // If neither value exists, return 0 (equal).\n let comparatorResult = 0;\n if (valueA != null && valueB != null) {\n // Check if one value is greater than the other; if equal, comparatorResult should remain 0.\n if (valueA > valueB) {\n comparatorResult = 1;\n } else if (valueA < valueB) {\n comparatorResult = -1;\n }\n } else if (valueA != null) {\n comparatorResult = 1;\n } else if (valueB != null) {\n comparatorResult = -1;\n }\n\n return comparatorResult * (direction == 'asc' ? 1 : -1);\n });\n }\n\n /**\n * Checks if a data object matches the data source's filter string. By default, each data object\n * is converted to a string of its properties and returns true if the filter has\n * at least one occurrence in that string. By default, the filter string has its whitespace\n * trimmed and the match is case-insensitive. May be overridden for a custom implementation of\n * filter matching.\n * @param data Data object used to check against the filter.\n * @param filter Filter string that has been set on the data source.\n * @returns Whether the filter matches against the data\n */\n filterPredicate: ((data: T, filter: string) => boolean) = (data: T, filter: string): boolean => {\n // Transform the data into a lowercase string of all property values.\n const dataStr = Object.keys(data).reduce((currentTerm: string, key: string) => {\n // Use an obscure Unicode character to delimit the words in the concatenated string.\n // This avoids matches where the values of two columns combined will match the user's query\n // (e.g. `Flute` and `Stop` will match `Test`). The character is intended to be something\n // that has a very low chance of being typed in by somebody in a text field. This one in\n // particular is \"White up-pointing triangle with dot\" from\n // https://en.wikipedia.org/wiki/List_of_Unicode_characters\n return currentTerm + (data as {[key: string]: any})[key] + '◬';\n }, '').toLowerCase();\n\n // Transform the filter by converting it to lowercase and removing whitespace.\n const transformedFilter = filter.trim().toLowerCase();\n\n return dataStr.indexOf(transformedFilter) != -1;\n }\n\n constructor(initialData: T[] = []) {\n super();\n this._data = new BehaviorSubject<T[]>(initialData);\n this._updateChangeSubscription();\n }\n\n /**\n * Subscribe to changes that should trigger an update to the table's rendered rows. When the\n * changes occur, process the current state of the filter, sort, and pagination along with\n * the provided base data and send it to the table for rendering.\n */\n _updateChangeSubscription() {\n // Sorting and/or pagination should be watched if MatSort and/or MatPaginator are provided.\n // The events should emit whenever the component emits a change or initializes, or if no\n // component is provided, a stream with just a null event should be provided.\n // The `sortChange` and `pageChange` acts as a signal to the combineLatests below so that the\n // pipeline can progress to the next step. Note that the value from these streams are not used,\n // they purely act as a signal to progress in the pipeline.\n const sortChange: Observable<Sort|null|void> = this._sort ?\n merge<Sort|void>(this._sort.sortChange, this._sort.initialized) :\n observableOf(null);\n const pageChange: Observable<PageEvent|null|void> = this._paginator ?\n merge<PageEvent|void>(this._paginator.page, this._paginator.initialized) :\n observableOf(null);\n\n const dataStream = this._data;\n // Watch for base data or filter changes to provide a filtered set of data.\n const filteredData = combineLatest(dataStream, this._filter)\n .pipe(map(([data]) => this._filterData(data)));\n // Watch for filtered data or sort changes to provide an ordered set of data.\n const orderedData = combineLatest(filteredData, sortChange)\n .pipe(map(([data]) => this._orderData(data)));\n // Watch for ordered data or page changes to provide a paged set of data.\n const paginatedData = combineLatest(orderedData, pageChange)\n .pipe(map(([data]) => this._pageData(data)));\n // Watched for paged data changes and send the result to the table to render.\n this._renderChangesSubscription.unsubscribe();\n this._renderChangesSubscription = paginatedData.subscribe(data => this._renderData.next(data));\n }\n\n /**\n * Returns a filtered data array where each filter object contains the filter string within\n * the result of the filterTermAccessor function. If no filter is set, returns the data array\n * as provided.\n */\n _filterData(data: T[]) {\n // If there is a filter string, filter out data that does not contain it.\n // Each data object is converted to a string using the function defined by filterTermAccessor.\n // May be overridden for customization.\n this.filteredData =\n !this.filter ? data : data.filter(obj => this.filterPredicate(obj, this.filter));\n\n if (this.paginator) { this._updatePaginator(this.filteredData.length); }\n\n return this.filteredData;\n }\n\n /**\n * Returns a sorted copy of the data if MatSort has a sort applied, otherwise just returns the\n * data array as provided. Uses the default data accessor for data lookup, unless a\n * sortDataAccessor function is defined.\n */\n _orderData(data: T[]): T[] {\n // If there is no active sort or direction, return the data without trying to sort.\n if (!this.sort) { return data; }\n\n return this.sortData(data.slice(), this.sort);\n }\n\n /**\n * Returns a paged splice of the provided data array according to the provided MatPaginator's page\n * index and length. If there is no paginator provided, returns the data array as provided.\n */\n _pageData(data: T[]): T[] {\n if (!this.paginator) { return data; }\n\n const startIndex = this.paginator.pageIndex * this.paginator.pageSize;\n return data.slice().splice(startIndex, this.paginator.pageSize);\n }\n\n /**\n * Updates the paginator to reflect the length of the filtered data, and makes sure that the page\n * index does not exceed the paginator's last page. Values are changed in a resolved promise to\n * guard against making property changes within a round of change detection.\n */\n _updatePaginator(filteredDataLength: number) {\n Promise.resolve().then(() => {\n if (!this.paginator) { return; }\n\n this.paginator.length = filteredDataLength;\n\n // If the page index is set beyond the page, reduce it to the last page.\n if (this.paginator.pageIndex > 0) {\n const lastPageIndex = Math.ceil(this.paginator.length / this.paginator.pageSize) - 1 || 0;\n this.paginator.pageIndex = Math.min(this.paginator.pageIndex, lastPageIndex);\n }\n });\n }\n\n /**\n * Used by the MatTable. Called when it connects to the data source.\n * @docs-private\n */\n connect() { return this._renderData; }\n\n /**\n * Used by the MatTable. Called when it is destroyed. No-op.\n * @docs-private\n */\n disconnect() { }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {NgModule} from '@angular/core';\nimport {MatTable} from './table';\nimport {CdkTableModule} from '@angular/cdk/table';\nimport {\n MatCell,\n MatCellDef,\n MatColumnDef,\n MatFooterCell,\n MatFooterCellDef,\n MatHeaderCell,\n MatHeaderCellDef\n} from './cell';\nimport {\n MatFooterRow,\n MatFooterRowDef,\n MatHeaderRow,\n MatHeaderRowDef,\n MatRow,\n MatRowDef\n} from './row';\nimport {CommonModule} from '@angular/common';\nimport {MatCommonModule} from '@angular/material/core';\n\nconst EXPORTED_DECLARATIONS = [\n // Table\n MatTable,\n\n // Template defs\n MatHeaderCellDef,\n MatHeaderRowDef,\n MatColumnDef,\n MatCellDef,\n MatRowDef,\n MatFooterCellDef,\n MatFooterRowDef,\n\n // Cell directives\n MatHeaderCell,\n MatCell,\n MatFooterCell,\n\n // Row directions\n MatHeaderRow,\n MatRow,\n MatFooterRow,\n];\n\n@NgModule({\n imports: [CdkTableModule, CommonModule, MatCommonModule],\n exports: EXPORTED_DECLARATIONS,\n declarations: EXPORTED_DECLARATIONS,\n})\nexport class MatTableModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n ChangeDetectionStrategy,\n Component,\n Directive,\n ViewEncapsulation\n} from '@angular/core';\nimport {\n CDK_ROW_TEMPLATE, CdkFooterRow, CdkFooterRowDef,\n CdkHeaderRow,\n CdkHeaderRowDef,\n CdkRow,\n CdkRowDef,\n} from '@angular/cdk/table';\n\n/**\n * Header row definition for the mat-table.\n * Captures the header row's template and other header properties such as the columns to display.\n */\n@Directive({\n selector: '[matHeaderRowDef]',\n providers: [{provide: CdkHeaderRowDef, useExisting: MatHeaderRowDef}],\n inputs: ['columns: matHeaderRowDef', 'sticky: matHeaderRowDefSticky'],\n})\nexport class MatHeaderRowDef extends CdkHeaderRowDef {}\n\n/**\n * Footer row definition for the mat-table.\n * Captures the footer row's template and other footer properties such as the columns to display.\n */\n@Directive({\n selector: '[matFooterRowDef]',\n providers: [{provide: CdkFooterRowDef, useExisting: MatFooterRowDef}],\n inputs: ['columns: matFooterRowDef', 'sticky: matFooterRowDefSticky'],\n})\nexport class MatFooterRowDef extends CdkFooterRowDef {}\n\n/**\n * Data row definition for the mat-table.\n * Captures the data row's template and other properties such as the columns to display and\n * a when predicate that describes when this row should be used.\n */\n@Directive({\n selector: '[matRowDef]',\n providers: [{provide: CdkRowDef, useExisting: MatRowDef}],\n inputs: ['columns: matRowDefColumns', 'when: matRowDefWhen'],\n})\nexport class MatRowDef<T> extends CdkRowDef<T> {}\n\n/** Footer template container that contains the cell outlet. Adds the right class and role. */\n@Component({\n moduleId: module.id,\n selector: 'mat-header-row, tr[mat-header-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'mat-header-row',\n 'role': 'row',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matHeaderRow',\n providers: [{provide: CdkHeaderRow, useExisting: MatHeaderRow}],\n})\nexport class MatHeaderRow extends CdkHeaderRow { }\n\n/** Footer template container that contains the cell outlet. Adds the right class and role. */\n@Component({\n moduleId: module.id,\n selector: 'mat-footer-row, tr[mat-footer-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'mat-footer-row',\n 'role': 'row',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matFooterRow',\n providers: [{provide: CdkFooterRow, useExisting: MatFooterRow}],\n})\nexport class MatFooterRow extends CdkFooterRow { }\n\n/** Data row template container that contains the cell outlet. Adds the right class and role. */\n@Component({\n moduleId: module.id,\n selector: 'mat-row, tr[mat-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'mat-row',\n 'role': 'row',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matRow',\n providers: [{provide: CdkRow, useExisting: MatRow}],\n})\nexport class MatRow extends CdkRow { }\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Directive, ElementRef, Input} from '@angular/core';\nimport {\n CdkCell,\n CdkCellDef,\n CdkColumnDef, CdkFooterCell, CdkFooterCellDef,\n CdkHeaderCell,\n CdkHeaderCellDef,\n} from '@angular/cdk/table';\n\n/**\n * Cell definition for the mat-table.\n * Captures the template of a column's data row cell as well as cell-specific properties.\n */\n@Directive({\n selector: '[matCellDef]',\n providers: [{provide: CdkCellDef, useExisting: MatCellDef}]\n})\nexport class MatCellDef extends CdkCellDef {}\n\n/**\n * Header cell definition for the mat-table.\n * Captures the template of a column's header cell and as well as cell-specific properties.\n */\n@Directive({\n selector: '[matHeaderCellDef]',\n providers: [{provide: CdkHeaderCellDef, useExisting: MatHeaderCellDef}]\n})\nexport class MatHeaderCellDef extends CdkHeaderCellDef {}\n\n/**\n * Footer cell definition for the mat-table.\n * Captures the template of a column's footer cell and as well as cell-specific properties.\n */\n@Directive({\n selector: '[matFooterCellDef]',\n providers: [{provide: CdkFooterCellDef, useExisting: MatFooterCellDef}]\n})\nexport class MatFooterCellDef extends CdkFooterCellDef {}\n\n/**\n * Column definition for the mat-table.\n * Defines a set of cells available for a table column.\n */\n@Directive({\n selector: '[matColumnDef]',\n providers: [\n {provide: CdkColumnDef, useExisting: MatColumnDef},\n {provide: 'MAT_SORT_HEADER_COLUMN_DEF', useExisting: MatColumnDef}\n ],\n})\nexport class MatColumnDef extends CdkColumnDef {\n /** Unique name for this column. */\n @Input('matColumnDef') name: string;\n\n /** Whether this column should be sticky positioned at the start of the row */\n @Input() sticky: boolean;\n\n /** Whether this column should be sticky positioned on the end of the row */\n @Input() stickyEnd: boolean;\n}\n\n/** Header cell template container that adds the right classes and role. */\n@Directive({\n selector: 'mat-header-cell, th[mat-header-cell]',\n host: {\n 'class': 'mat-header-cell',\n 'role': 'columnheader',\n },\n})\nexport class MatHeaderCell extends CdkHeaderCell {\n constructor(columnDef: CdkColumnDef,\n elementRef: ElementRef<HTMLElement>) {\n super(columnDef, elementRef);\n elementRef.nativeElement.classList.add(`mat-column-${columnDef.cssClassFriendlyName}`);\n }\n}\n\n/** Footer cell template container that adds the right classes and role. */\n@Directive({\n selector: 'mat-footer-cell, td[mat-footer-cell]',\n host: {\n 'class': 'mat-footer-cell',\n 'role': 'gridcell',\n },\n})\nexport class MatFooterCell extends CdkFooterCell {\n constructor(columnDef: CdkColumnDef,\n elementRef: ElementRef) {\n super(columnDef, elementRef);\n elementRef.nativeElement.classList.add(`mat-column-${columnDef.cssClassFriendlyName}`);\n }\n}\n\n/** Cell template container that adds the right classes and role. */\n@Directive({\n selector: 'mat-cell, td[mat-cell]',\n host: {\n 'class': 'mat-cell',\n 'role': 'gridcell',\n },\n})\nexport class MatCell extends CdkCell {\n constructor(columnDef: CdkColumnDef,\n elementRef: ElementRef<HTMLElement>) {\n super(columnDef, elementRef);\n elementRef.nativeElement.classList.add(`mat-column-${columnDef.cssClassFriendlyName}`);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {CDK_TABLE_TEMPLATE, CdkTable} from '@angular/cdk/table';\nimport {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\n\n/**\n * Wrapper for the CdkTable with Material design styles.\n */\n@Component({\n moduleId: module.id,\n selector: 'mat-table, table[mat-table]',\n exportAs: 'matTable',\n template: CDK_TABLE_TEMPLATE,\n styleUrls: ['table.css'],\n host: {\n 'class': 'mat-table',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatTable<T> extends CdkTable<T> {\n /** Overrides the sticky CSS class set by the `CdkTable`. */\n protected stickyCssClass = 'mat-table-sticky';\n}\n"],"names":["observableOf"],"mappings":"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"}
1
+ {"version":3,"file":"table.js","sources":["../../../src/lib/table/table-data-source.ts","../../../src/lib/table/table-module.ts","../../../src/lib/table/row.ts","../../../src/lib/table/cell.ts","../../../src/lib/table/table.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {_isNumberValue} from '@angular/cdk/coercion';\nimport {DataSource} from '@angular/cdk/table';\nimport {\n BehaviorSubject,\n combineLatest,\n merge,\n Observable,\n of as observableOf,\n Subscription,\n Subject,\n} from 'rxjs';\nimport {MatPaginator, PageEvent} from '@angular/material/paginator';\nimport {MatSort, Sort} from '@angular/material/sort';\nimport {map} from 'rxjs/operators';\n\n/**\n * Corresponds to `Number.MAX_SAFE_INTEGER`. Moved out into a variable here due to\n * flaky browser support and the value not being defined in Closure's typings.\n */\nconst MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Data source that accepts a client-side data array and includes native support of filtering,\n * sorting (using MatSort), and pagination (using MatPaginator).\n *\n * Allows for sort customization by overriding sortingDataAccessor, which defines how data\n * properties are accessed. Also allows for filter customization by overriding filterTermAccessor,\n * which defines how row data is converted to a string for filter matching.\n */\nexport class MatTableDataSource<T> extends DataSource<T> {\n /** Stream that emits when a new data array is set on the data source. */\n private readonly _data: BehaviorSubject<T[]>;\n\n /** Stream emitting render data to the table (depends on ordered data changes). */\n private readonly _renderData = new BehaviorSubject<T[]>([]);\n\n /** Stream that emits when a new filter string is set on the data source. */\n private readonly _filter = new BehaviorSubject<string>('');\n\n /** Used to react to internal changes of the paginator that are made by the data source itself. */\n private readonly _internalPageChanges = new Subject<void>();\n\n /**\n * Subscription to the changes that should trigger an update to the table's rendered rows, such\n * as filtering, sorting, pagination, or base data changes.\n */\n _renderChangesSubscription = Subscription.EMPTY;\n\n /**\n * The filtered set of data that has been matched by the filter string, or all the data if there\n * is no filter. Useful for knowing the set of data the table represents.\n * For example, a 'selectAll()' function would likely want to select the set of filtered data\n * shown to the user rather than all the data.\n */\n filteredData: T[];\n\n /** Array of data that should be rendered by the table, where each object represents one row. */\n get data() { return this._data.value; }\n set data(data: T[]) { this._data.next(data); }\n\n /**\n * Filter term that should be used to filter out objects from the data array. To override how\n * data objects match to this filter string, provide a custom function for filterPredicate.\n */\n get filter(): string { return this._filter.value; }\n set filter(filter: string) { this._filter.next(filter); }\n\n /**\n * Instance of the MatSort directive used by the table to control its sorting. Sort changes\n * emitted by the MatSort will trigger an update to the table's rendered data.\n */\n get sort(): MatSort | null { return this._sort; }\n set sort(sort: MatSort|null) {\n this._sort = sort;\n this._updateChangeSubscription();\n }\n private _sort: MatSort|null;\n\n /**\n * Instance of the MatPaginator component used by the table to control what page of the data is\n * displayed. Page changes emitted by the MatPaginator will trigger an update to the\n * table's rendered data.\n *\n * Note that the data source uses the paginator's properties to calculate which page of data\n * should be displayed. If the paginator receives its properties as template inputs,\n * e.g. `[pageLength]=100` or `[pageIndex]=1`, then be sure that the paginator's view has been\n * initialized before assigning it to this data source.\n */\n get paginator(): MatPaginator | null { return this._paginator; }\n set paginator(paginator: MatPaginator|null) {\n this._paginator = paginator;\n this._updateChangeSubscription();\n }\n private _paginator: MatPaginator|null;\n\n /**\n * Data accessor function that is used for accessing data properties for sorting through\n * the default sortData function.\n * This default function assumes that the sort header IDs (which defaults to the column name)\n * matches the data's properties (e.g. column Xyz represents data['Xyz']).\n * May be set to a custom function for different behavior.\n * @param data Data object that is being accessed.\n * @param sortHeaderId The name of the column that represents the data.\n */\n sortingDataAccessor: ((data: T, sortHeaderId: string) => string|number) =\n (data: T, sortHeaderId: string): string|number => {\n const value = (data as {[key: string]: any})[sortHeaderId];\n\n if (_isNumberValue(value)) {\n const numberValue = Number(value);\n\n // Numbers beyond `MAX_SAFE_INTEGER` can't be compared reliably so we\n // leave them as strings. For more info: https://goo.gl/y5vbSg\n return numberValue < MAX_SAFE_INTEGER ? numberValue : value;\n }\n\n return value;\n }\n\n /**\n * Gets a sorted copy of the data array based on the state of the MatSort. Called\n * after changes are made to the filtered data or when sort changes are emitted from MatSort.\n * By default, the function retrieves the active sort and its direction and compares data\n * by retrieving data using the sortingDataAccessor. May be overridden for a custom implementation\n * of data ordering.\n * @param data The array of data that should be sorted.\n * @param sort The connected MatSort that holds the current sort state.\n */\n sortData: ((data: T[], sort: MatSort) => T[]) = (data: T[], sort: MatSort): T[] => {\n const active = sort.active;\n const direction = sort.direction;\n if (!active || direction == '') { return data; }\n\n return data.sort((a, b) => {\n let valueA = this.sortingDataAccessor(a, active);\n let valueB = this.sortingDataAccessor(b, active);\n\n // If both valueA and valueB exist (truthy), then compare the two. Otherwise, check if\n // one value exists while the other doesn't. In this case, existing value should come first.\n // This avoids inconsistent results when comparing values to undefined/null.\n // If neither value exists, return 0 (equal).\n let comparatorResult = 0;\n if (valueA != null && valueB != null) {\n // Check if one value is greater than the other; if equal, comparatorResult should remain 0.\n if (valueA > valueB) {\n comparatorResult = 1;\n } else if (valueA < valueB) {\n comparatorResult = -1;\n }\n } else if (valueA != null) {\n comparatorResult = 1;\n } else if (valueB != null) {\n comparatorResult = -1;\n }\n\n return comparatorResult * (direction == 'asc' ? 1 : -1);\n });\n }\n\n /**\n * Checks if a data object matches the data source's filter string. By default, each data object\n * is converted to a string of its properties and returns true if the filter has\n * at least one occurrence in that string. By default, the filter string has its whitespace\n * trimmed and the match is case-insensitive. May be overridden for a custom implementation of\n * filter matching.\n * @param data Data object used to check against the filter.\n * @param filter Filter string that has been set on the data source.\n * @returns Whether the filter matches against the data\n */\n filterPredicate: ((data: T, filter: string) => boolean) = (data: T, filter: string): boolean => {\n // Transform the data into a lowercase string of all property values.\n const dataStr = Object.keys(data).reduce((currentTerm: string, key: string) => {\n // Use an obscure Unicode character to delimit the words in the concatenated string.\n // This avoids matches where the values of two columns combined will match the user's query\n // (e.g. `Flute` and `Stop` will match `Test`). The character is intended to be something\n // that has a very low chance of being typed in by somebody in a text field. This one in\n // particular is \"White up-pointing triangle with dot\" from\n // https://en.wikipedia.org/wiki/List_of_Unicode_characters\n return currentTerm + (data as {[key: string]: any})[key] + '◬';\n }, '').toLowerCase();\n\n // Transform the filter by converting it to lowercase and removing whitespace.\n const transformedFilter = filter.trim().toLowerCase();\n\n return dataStr.indexOf(transformedFilter) != -1;\n }\n\n constructor(initialData: T[] = []) {\n super();\n this._data = new BehaviorSubject<T[]>(initialData);\n this._updateChangeSubscription();\n }\n\n /**\n * Subscribe to changes that should trigger an update to the table's rendered rows. When the\n * changes occur, process the current state of the filter, sort, and pagination along with\n * the provided base data and send it to the table for rendering.\n */\n _updateChangeSubscription() {\n // Sorting and/or pagination should be watched if MatSort and/or MatPaginator are provided.\n // The events should emit whenever the component emits a change or initializes, or if no\n // component is provided, a stream with just a null event should be provided.\n // The `sortChange` and `pageChange` acts as a signal to the combineLatests below so that the\n // pipeline can progress to the next step. Note that the value from these streams are not used,\n // they purely act as a signal to progress in the pipeline.\n const sortChange: Observable<Sort|null|void> = this._sort ?\n merge<Sort|void>(this._sort.sortChange, this._sort.initialized) :\n observableOf(null);\n const pageChange: Observable<PageEvent|null|void> = this._paginator ?\n merge<PageEvent|void>(\n this._paginator.page, this._internalPageChanges, this._paginator.initialized) :\n observableOf(null);\n const dataStream = this._data;\n // Watch for base data or filter changes to provide a filtered set of data.\n const filteredData = combineLatest(dataStream, this._filter)\n .pipe(map(([data]) => this._filterData(data)));\n // Watch for filtered data or sort changes to provide an ordered set of data.\n const orderedData = combineLatest(filteredData, sortChange)\n .pipe(map(([data]) => this._orderData(data)));\n // Watch for ordered data or page changes to provide a paged set of data.\n const paginatedData = combineLatest(orderedData, pageChange)\n .pipe(map(([data]) => this._pageData(data)));\n // Watched for paged data changes and send the result to the table to render.\n this._renderChangesSubscription.unsubscribe();\n this._renderChangesSubscription = paginatedData.subscribe(data => this._renderData.next(data));\n }\n\n /**\n * Returns a filtered data array where each filter object contains the filter string within\n * the result of the filterTermAccessor function. If no filter is set, returns the data array\n * as provided.\n */\n _filterData(data: T[]) {\n // If there is a filter string, filter out data that does not contain it.\n // Each data object is converted to a string using the function defined by filterTermAccessor.\n // May be overridden for customization.\n this.filteredData =\n !this.filter ? data : data.filter(obj => this.filterPredicate(obj, this.filter));\n\n if (this.paginator) { this._updatePaginator(this.filteredData.length); }\n\n return this.filteredData;\n }\n\n /**\n * Returns a sorted copy of the data if MatSort has a sort applied, otherwise just returns the\n * data array as provided. Uses the default data accessor for data lookup, unless a\n * sortDataAccessor function is defined.\n */\n _orderData(data: T[]): T[] {\n // If there is no active sort or direction, return the data without trying to sort.\n if (!this.sort) { return data; }\n\n return this.sortData(data.slice(), this.sort);\n }\n\n /**\n * Returns a paged splice of the provided data array according to the provided MatPaginator's page\n * index and length. If there is no paginator provided, returns the data array as provided.\n */\n _pageData(data: T[]): T[] {\n if (!this.paginator) { return data; }\n\n const startIndex = this.paginator.pageIndex * this.paginator.pageSize;\n return data.slice().splice(startIndex, this.paginator.pageSize);\n }\n\n /**\n * Updates the paginator to reflect the length of the filtered data, and makes sure that the page\n * index does not exceed the paginator's last page. Values are changed in a resolved promise to\n * guard against making property changes within a round of change detection.\n */\n _updatePaginator(filteredDataLength: number) {\n Promise.resolve().then(() => {\n const paginator = this.paginator;\n\n if (!paginator) { return; }\n\n paginator.length = filteredDataLength;\n\n // If the page index is set beyond the page, reduce it to the last page.\n if (paginator.pageIndex > 0) {\n const lastPageIndex = Math.ceil(paginator.length / paginator.pageSize) - 1 || 0;\n const newPageIndex = Math.min(paginator.pageIndex, lastPageIndex);\n\n if (newPageIndex !== paginator.pageIndex) {\n paginator.pageIndex = newPageIndex;\n\n // Since the paginator only emits after user-generated changes,\n // we need our own stream so we know to should re-render the data.\n this._internalPageChanges.next();\n }\n }\n });\n }\n\n /**\n * Used by the MatTable. Called when it connects to the data source.\n * @docs-private\n */\n connect() { return this._renderData; }\n\n /**\n * Used by the MatTable. Called when it is destroyed. No-op.\n * @docs-private\n */\n disconnect() { }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {NgModule} from '@angular/core';\nimport {MatTable} from './table';\nimport {CdkTableModule} from '@angular/cdk/table';\nimport {\n MatCell,\n MatCellDef,\n MatColumnDef,\n MatFooterCell,\n MatFooterCellDef,\n MatHeaderCell,\n MatHeaderCellDef\n} from './cell';\nimport {\n MatFooterRow,\n MatFooterRowDef,\n MatHeaderRow,\n MatHeaderRowDef,\n MatRow,\n MatRowDef\n} from './row';\nimport {CommonModule} from '@angular/common';\nimport {MatCommonModule} from '@angular/material/core';\n\nconst EXPORTED_DECLARATIONS = [\n // Table\n MatTable,\n\n // Template defs\n MatHeaderCellDef,\n MatHeaderRowDef,\n MatColumnDef,\n MatCellDef,\n MatRowDef,\n MatFooterCellDef,\n MatFooterRowDef,\n\n // Cell directives\n MatHeaderCell,\n MatCell,\n MatFooterCell,\n\n // Row directions\n MatHeaderRow,\n MatRow,\n MatFooterRow,\n];\n\n@NgModule({\n imports: [CdkTableModule, CommonModule, MatCommonModule],\n exports: EXPORTED_DECLARATIONS,\n declarations: EXPORTED_DECLARATIONS,\n})\nexport class MatTableModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n ChangeDetectionStrategy,\n Component,\n Directive,\n ViewEncapsulation\n} from '@angular/core';\nimport {\n CDK_ROW_TEMPLATE, CdkFooterRow, CdkFooterRowDef,\n CdkHeaderRow,\n CdkHeaderRowDef,\n CdkRow,\n CdkRowDef,\n} from '@angular/cdk/table';\n\n/**\n * Header row definition for the mat-table.\n * Captures the header row's template and other header properties such as the columns to display.\n */\n@Directive({\n selector: '[matHeaderRowDef]',\n providers: [{provide: CdkHeaderRowDef, useExisting: MatHeaderRowDef}],\n inputs: ['columns: matHeaderRowDef', 'sticky: matHeaderRowDefSticky'],\n})\nexport class MatHeaderRowDef extends CdkHeaderRowDef {}\n\n/**\n * Footer row definition for the mat-table.\n * Captures the footer row's template and other footer properties such as the columns to display.\n */\n@Directive({\n selector: '[matFooterRowDef]',\n providers: [{provide: CdkFooterRowDef, useExisting: MatFooterRowDef}],\n inputs: ['columns: matFooterRowDef', 'sticky: matFooterRowDefSticky'],\n})\nexport class MatFooterRowDef extends CdkFooterRowDef {}\n\n/**\n * Data row definition for the mat-table.\n * Captures the data row's template and other properties such as the columns to display and\n * a when predicate that describes when this row should be used.\n */\n@Directive({\n selector: '[matRowDef]',\n providers: [{provide: CdkRowDef, useExisting: MatRowDef}],\n inputs: ['columns: matRowDefColumns', 'when: matRowDefWhen'],\n})\nexport class MatRowDef<T> extends CdkRowDef<T> {}\n\n/** Footer template container that contains the cell outlet. Adds the right class and role. */\n@Component({\n moduleId: module.id,\n selector: 'mat-header-row, tr[mat-header-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'mat-header-row',\n 'role': 'row',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matHeaderRow',\n providers: [{provide: CdkHeaderRow, useExisting: MatHeaderRow}],\n})\nexport class MatHeaderRow extends CdkHeaderRow { }\n\n/** Footer template container that contains the cell outlet. Adds the right class and role. */\n@Component({\n moduleId: module.id,\n selector: 'mat-footer-row, tr[mat-footer-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'mat-footer-row',\n 'role': 'row',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matFooterRow',\n providers: [{provide: CdkFooterRow, useExisting: MatFooterRow}],\n})\nexport class MatFooterRow extends CdkFooterRow { }\n\n/** Data row template container that contains the cell outlet. Adds the right class and role. */\n@Component({\n moduleId: module.id,\n selector: 'mat-row, tr[mat-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'mat-row',\n 'role': 'row',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matRow',\n providers: [{provide: CdkRow, useExisting: MatRow}],\n})\nexport class MatRow extends CdkRow { }\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Directive, ElementRef, Input} from '@angular/core';\nimport {\n CdkCell,\n CdkCellDef,\n CdkColumnDef, CdkFooterCell, CdkFooterCellDef,\n CdkHeaderCell,\n CdkHeaderCellDef,\n} from '@angular/cdk/table';\n\n/**\n * Cell definition for the mat-table.\n * Captures the template of a column's data row cell as well as cell-specific properties.\n */\n@Directive({\n selector: '[matCellDef]',\n providers: [{provide: CdkCellDef, useExisting: MatCellDef}]\n})\nexport class MatCellDef extends CdkCellDef {}\n\n/**\n * Header cell definition for the mat-table.\n * Captures the template of a column's header cell and as well as cell-specific properties.\n */\n@Directive({\n selector: '[matHeaderCellDef]',\n providers: [{provide: CdkHeaderCellDef, useExisting: MatHeaderCellDef}]\n})\nexport class MatHeaderCellDef extends CdkHeaderCellDef {}\n\n/**\n * Footer cell definition for the mat-table.\n * Captures the template of a column's footer cell and as well as cell-specific properties.\n */\n@Directive({\n selector: '[matFooterCellDef]',\n providers: [{provide: CdkFooterCellDef, useExisting: MatFooterCellDef}]\n})\nexport class MatFooterCellDef extends CdkFooterCellDef {}\n\n/**\n * Column definition for the mat-table.\n * Defines a set of cells available for a table column.\n */\n@Directive({\n selector: '[matColumnDef]',\n providers: [\n {provide: CdkColumnDef, useExisting: MatColumnDef},\n {provide: 'MAT_SORT_HEADER_COLUMN_DEF', useExisting: MatColumnDef}\n ],\n})\nexport class MatColumnDef extends CdkColumnDef {\n /** Unique name for this column. */\n @Input('matColumnDef') name: string;\n\n /** Whether this column should be sticky positioned at the start of the row */\n @Input() sticky: boolean;\n\n /** Whether this column should be sticky positioned on the end of the row */\n @Input() stickyEnd: boolean;\n}\n\n/** Header cell template container that adds the right classes and role. */\n@Directive({\n selector: 'mat-header-cell, th[mat-header-cell]',\n host: {\n 'class': 'mat-header-cell',\n 'role': 'columnheader',\n },\n})\nexport class MatHeaderCell extends CdkHeaderCell {\n constructor(columnDef: CdkColumnDef,\n elementRef: ElementRef<HTMLElement>) {\n super(columnDef, elementRef);\n elementRef.nativeElement.classList.add(`mat-column-${columnDef.cssClassFriendlyName}`);\n }\n}\n\n/** Footer cell template container that adds the right classes and role. */\n@Directive({\n selector: 'mat-footer-cell, td[mat-footer-cell]',\n host: {\n 'class': 'mat-footer-cell',\n 'role': 'gridcell',\n },\n})\nexport class MatFooterCell extends CdkFooterCell {\n constructor(columnDef: CdkColumnDef,\n elementRef: ElementRef) {\n super(columnDef, elementRef);\n elementRef.nativeElement.classList.add(`mat-column-${columnDef.cssClassFriendlyName}`);\n }\n}\n\n/** Cell template container that adds the right classes and role. */\n@Directive({\n selector: 'mat-cell, td[mat-cell]',\n host: {\n 'class': 'mat-cell',\n 'role': 'gridcell',\n },\n})\nexport class MatCell extends CdkCell {\n constructor(columnDef: CdkColumnDef,\n elementRef: ElementRef<HTMLElement>) {\n super(columnDef, elementRef);\n elementRef.nativeElement.classList.add(`mat-column-${columnDef.cssClassFriendlyName}`);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {CDK_TABLE_TEMPLATE, CdkTable} from '@angular/cdk/table';\nimport {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\n\n/**\n * Wrapper for the CdkTable with Material design styles.\n */\n@Component({\n moduleId: module.id,\n selector: 'mat-table, table[mat-table]',\n exportAs: 'matTable',\n template: CDK_TABLE_TEMPLATE,\n styleUrls: ['table.css'],\n host: {\n 'class': 'mat-table',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatTable<T> extends CdkTable<T> {\n /** Overrides the sticky CSS class set by the `CdkTable`. */\n protected stickyCssClass = 'mat-table-sticky';\n}\n"],"names":["observableOf"],"mappings":"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"}
package/esm2015/tabs.js CHANGED
@@ -13,7 +13,7 @@ import { animate, state, style, transition, trigger } from '@angular/animations'
13
13
  import { Directionality } from '@angular/cdk/bidi';
14
14
  import { startWith, distinctUntilChanged, takeUntil } from 'rxjs/operators';
15
15
  import { coerceNumberProperty, coerceBooleanProperty } from '@angular/cdk/coercion';
16
- import { END, ENTER, HOME, SPACE } from '@angular/cdk/keycodes';
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
19
  import { Platform } from '@angular/cdk/platform';
@@ -22,11 +22,12 @@ import { CommonModule } from '@angular/common';
22
22
 
23
23
  /**
24
24
  * @fileoverview added by tsickle
25
- * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
25
+ * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
26
26
  */
27
- /** *
27
+ /**
28
28
  * Injection token for the MatInkBar's Positioner.
29
- @type {?} */
29
+ * @type {?}
30
+ */
30
31
  const _MAT_INK_BAR_POSITIONER = new InjectionToken('MatInkBarPositioner', {
31
32
  providedIn: 'root',
32
33
  factory: _MAT_INK_BAR_POSITIONER_FACTORY
@@ -92,6 +93,7 @@ class MatInkBar {
92
93
  }
93
94
  /**
94
95
  * Sets the proper styles to the ink bar element.
96
+ * @private
95
97
  * @param {?} element
96
98
  * @return {?}
97
99
  */
@@ -121,7 +123,7 @@ MatInkBar.ctorParameters = () => [
121
123
 
122
124
  /**
123
125
  * @fileoverview added by tsickle
124
- * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
126
+ * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
125
127
  */
126
128
  /**
127
129
  * Decorates the `ng-template` tags and reads out the template from it.
@@ -144,7 +146,7 @@ MatTabContent.ctorParameters = () => [
144
146
 
145
147
  /**
146
148
  * @fileoverview added by tsickle
147
- * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
149
+ * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
148
150
  */
149
151
  /**
150
152
  * Used to flag tab labels for use with the portal directive
@@ -159,8 +161,9 @@ MatTabLabel.decorators = [
159
161
 
160
162
  /**
161
163
  * @fileoverview added by tsickle
162
- * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
164
+ * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
163
165
  */
166
+ // Boilerplate for applying mixins to MatTab.
164
167
  /**
165
168
  * \@docs-private
166
169
  */
@@ -255,14 +258,17 @@ MatTab.propDecorators = {
255
258
 
256
259
  /**
257
260
  * @fileoverview added by tsickle
258
- * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
261
+ * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
259
262
  */
260
- /** *
263
+ /**
261
264
  * Animations used by the Material tabs.
262
265
  * \@docs-private
263
- @type {?} */
266
+ * @type {?}
267
+ */
264
268
  const matTabsAnimations = {
265
- /** Animation translates a tab along the X axis. */
269
+ /**
270
+ * Animation translates a tab along the X axis.
271
+ */
266
272
  translateTab: trigger('translateTab', [
267
273
  // Note: transitions to `none` instead of 0, because some browsers might blur the content.
268
274
  state('center, void, left-origin-center, right-origin-center', style({ transform: 'none' })),
@@ -286,7 +292,7 @@ const matTabsAnimations = {
286
292
 
287
293
  /**
288
294
  * @fileoverview added by tsickle
289
- * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
295
+ * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
290
296
  */
291
297
  /**
292
298
  * The portal host directive for the contents of the tab.
@@ -358,9 +364,10 @@ class MatTabBody {
358
364
  * @param {?} _dir
359
365
  * @param {?=} changeDetectorRef
360
366
  */
361
- constructor(_elementRef, _dir, /**
362
- * @breaking-change 8.0.0 changeDetectorRef to be made required.
363
- */
367
+ constructor(_elementRef, _dir,
368
+ /**
369
+ * @breaking-change 8.0.0 changeDetectorRef to be made required.
370
+ */
364
371
  changeDetectorRef) {
365
372
  this._elementRef = _elementRef;
366
373
  this._dir = _dir;
@@ -388,6 +395,8 @@ class MatTabBody {
388
395
  * Event emitted when the tab completes its animation towards the center.
389
396
  */
390
397
  this._onCentered = new EventEmitter(true);
398
+ // Note that the default value will always be overwritten by `MatTabBody`, but we need one
399
+ // anyway to prevent the animations module from throwing an error if the body is used on its own.
391
400
  /**
392
401
  * Duration for the tab's animation.
393
402
  */
@@ -469,6 +478,7 @@ class MatTabBody {
469
478
  }
470
479
  /**
471
480
  * Computes the position state that will be used for the tab-body animation trigger.
481
+ * @private
472
482
  * @param {?=} dir
473
483
  * @return {?}
474
484
  */
@@ -486,6 +496,7 @@ class MatTabBody {
486
496
  /**
487
497
  * Computes the position state based on the specified origin position. This is used if the
488
498
  * tab is becoming visible immediately after creation.
499
+ * @private
489
500
  * @return {?}
490
501
  */
491
502
  _computePositionFromOrigin() {
@@ -529,8 +540,9 @@ MatTabBody.propDecorators = {
529
540
 
530
541
  /**
531
542
  * @fileoverview added by tsickle
532
- * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
543
+ * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
533
544
  */
545
+ // Boilerplate for applying mixins to MatTabLabelWrapper.
534
546
  /**
535
547
  * \@docs-private
536
548
  */
@@ -587,13 +599,15 @@ MatTabLabelWrapper.ctorParameters = () => [
587
599
 
588
600
  /**
589
601
  * @fileoverview added by tsickle
590
- * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
602
+ * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
591
603
  */
592
- /** *
604
+ /**
593
605
  * The distance in pixels that will be overshot when scrolling a tab label into view. This helps
594
606
  * provide a small affordance to the label next to it.
595
- @type {?} */
607
+ * @type {?}
608
+ */
596
609
  const EXAGGERATED_OVERSCROLL = 60;
610
+ // Boilerplate for applying mixins to MatTabHeader.
597
611
  /**
598
612
  * \@docs-private
599
613
  */
@@ -615,14 +629,16 @@ class MatTabHeader extends _MatTabHeaderMixinBase {
615
629
  * @param {?} _viewportRuler
616
630
  * @param {?} _dir
617
631
  * @param {?=} _ngZone
632
+ * @param {?=} _platform
618
633
  */
619
- constructor(_elementRef, _changeDetectorRef, _viewportRuler, _dir, _ngZone) {
634
+ constructor(_elementRef, _changeDetectorRef, _viewportRuler, _dir, _ngZone, _platform) {
620
635
  super();
621
636
  this._elementRef = _elementRef;
622
637
  this._changeDetectorRef = _changeDetectorRef;
623
638
  this._viewportRuler = _viewportRuler;
624
639
  this._dir = _dir;
625
640
  this._ngZone = _ngZone;
641
+ this._platform = _platform;
626
642
  /**
627
643
  * The distance in pixels that the tab labels should be translated to the left.
628
644
  */
@@ -706,6 +722,10 @@ class MatTabHeader extends _MatTabHeaderMixinBase {
706
722
  * @return {?}
707
723
  */
708
724
  _handleKeydown(event) {
725
+ // We don't handle any key bindings with a modifier key.
726
+ if (hasModifierKey(event)) {
727
+ return;
728
+ }
709
729
  switch (event.keyCode) {
710
730
  case HOME:
711
731
  this._keyManager.setFirstItemActive();
@@ -772,15 +792,23 @@ class MatTabHeader extends _MatTabHeaderMixinBase {
772
792
  */
773
793
  _onContentChanges() {
774
794
  /** @type {?} */
775
- const zoneCallback = () => {
776
- this.updatePagination();
777
- this._alignInkBarToSelectedTab();
778
- this._changeDetectorRef.markForCheck();
779
- };
780
- // The content observer runs outside the `NgZone` by default, which
781
- // means that we need to bring the callback back in ourselves.
782
- // @breaking-change 8.0.0 Remove null check for `_ngZone` once it's a required parameter.
783
- this._ngZone ? this._ngZone.run(zoneCallback) : zoneCallback();
795
+ const textContent = this._elementRef.nativeElement.textContent;
796
+ // We need to diff the text content of the header, because the MutationObserver callback
797
+ // will fire even if the text content didn't change which is inefficient and is prone
798
+ // to infinite loops if a poorly constructed expression is passed in (see #14249).
799
+ if (textContent !== this._currentTextContent) {
800
+ this._currentTextContent = textContent;
801
+ /** @type {?} */
802
+ const zoneCallback = () => {
803
+ this.updatePagination();
804
+ this._alignInkBarToSelectedTab();
805
+ this._changeDetectorRef.markForCheck();
806
+ };
807
+ // The content observer runs outside the `NgZone` by default, which
808
+ // means that we need to bring the callback back in ourselves.
809
+ // @breaking-change 8.0.0 Remove null check for `_ngZone` once it's a required parameter.
810
+ this._ngZone ? this._ngZone.run(zoneCallback) : zoneCallback();
811
+ }
784
812
  }
785
813
  /**
786
814
  * Updates the view whether pagination should be enabled or not.
@@ -800,7 +828,7 @@ class MatTabHeader extends _MatTabHeaderMixinBase {
800
828
  * @return {?}
801
829
  */
802
830
  get focusIndex() {
803
- return this._keyManager ? /** @type {?} */ ((this._keyManager.activeItemIndex)) : 0;
831
+ return this._keyManager ? (/** @type {?} */ (this._keyManager.activeItemIndex)) : 0;
804
832
  }
805
833
  /**
806
834
  * When the focus index is set, we must manually send focus to the correct label
@@ -839,6 +867,9 @@ class MatTabHeader extends _MatTabHeaderMixinBase {
839
867
  }
840
868
  if (this._labelWrappers && this._labelWrappers.length) {
841
869
  this._labelWrappers.toArray()[tabIndex].focus();
870
+ // Do not let the browser manage scrolling to focus the element, this will be handled
871
+ // by using translation. In LTR, the scroll left should be 0. In RTL, the scroll width
872
+ // should be the full width minus the offset width.
842
873
  /** @type {?} */
843
874
  const containerEl = this._tabListContainer.nativeElement;
844
875
  /** @type {?} */
@@ -866,16 +897,24 @@ class MatTabHeader extends _MatTabHeaderMixinBase {
866
897
  /** @type {?} */
867
898
  const scrollDistance = this.scrollDistance;
868
899
  /** @type {?} */
900
+ const platform = this._platform;
901
+ /** @type {?} */
869
902
  const translateX = this._getLayoutDirection() === 'ltr' ? -scrollDistance : scrollDistance;
870
903
  // Don't use `translate3d` here because we don't want to create a new layer. A new layer
871
904
  // seems to cause flickering and overflow in Internet Explorer. For example, the ink bar
872
905
  // and ripples will exceed the boundaries of the visible tab bar.
873
906
  // See: https://github.com/angular/material2/issues/10276
874
- this._tabList.nativeElement.style.transform = `translateX(${translateX}px)`;
907
+ // We round the `transform` here, because transforms with sub-pixel precision cause some
908
+ // browsers to blur the content of the element.
909
+ this._tabList.nativeElement.style.transform = `translateX(${Math.round(translateX)}px)`;
875
910
  // Setting the `transform` on IE will change the scroll offset of the parent, causing the
876
911
  // position to be thrown off in some cases. We have to reset it ourselves to ensure that
877
- // it doesn't get thrown off.
878
- this._tabListContainer.nativeElement.scrollLeft = 0;
912
+ // it doesn't get thrown off. Note that we scope it only to IE and Edge, because messing
913
+ // with the scroll position throws off Chrome 71+ in RTL mode (see #14689).
914
+ // @breaking-change 8.0.0 Remove null check for `platform`.
915
+ if (platform && (platform.TRIDENT || platform.EDGE)) {
916
+ this._tabListContainer.nativeElement.scrollLeft = 0;
917
+ }
879
918
  }
880
919
  /**
881
920
  * Sets the distance in pixels that the tab header should be transformed in the X-axis.
@@ -923,6 +962,7 @@ class MatTabHeader extends _MatTabHeaderMixinBase {
923
962
  if (!selectedLabel) {
924
963
  return;
925
964
  }
965
+ // The view length is the visible width of the tab labels.
926
966
  /** @type {?} */
927
967
  const viewLength = this._tabListContainer.nativeElement.offsetWidth;
928
968
  /** @type {?} */
@@ -1010,13 +1050,13 @@ class MatTabHeader extends _MatTabHeaderMixinBase {
1010
1050
  const selectedLabelWrapper = this._labelWrappers && this._labelWrappers.length ?
1011
1051
  this._labelWrappers.toArray()[this.selectedIndex].elementRef.nativeElement :
1012
1052
  null;
1013
- this._inkBar.alignToElement(/** @type {?} */ ((selectedLabelWrapper)));
1053
+ this._inkBar.alignToElement((/** @type {?} */ (selectedLabelWrapper)));
1014
1054
  }
1015
1055
  }
1016
1056
  MatTabHeader.decorators = [
1017
1057
  { type: Component, args: [{selector: 'mat-tab-header',
1018
1058
  template: "<div class=\"mat-tab-header-pagination mat-tab-header-pagination-before mat-elevation-z4\" aria-hidden=\"true\" mat-ripple [matRippleDisabled]=\"_disableScrollBefore || disableRipple\" [class.mat-tab-header-pagination-disabled]=\"_disableScrollBefore\" (click)=\"_scrollHeader('before')\"><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\" aria-hidden=\"true\" mat-ripple [matRippleDisabled]=\"_disableScrollAfter || disableRipple\" [class.mat-tab-header-pagination-disabled]=\"_disableScrollAfter\" (click)=\"_scrollHeader('after')\"><div class=\"mat-tab-header-pagination-chevron\"></div></div>",
1019
- 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 screen and (-ms-high-contrast:active){.mat-tab-label:focus{outline:dotted 2px}}.mat-tab-label.mat-tab-disabled{cursor:default}@media screen and (-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 screen and (-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 screen and (-ms-high-contrast:active){.mat-ink-bar{outline:solid 2px;height:0}}.mat-tab-header-pagination{position:relative;display:none;justify-content:center;align-items:center;min-width:32px;cursor:pointer;z-index:2}.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}"],
1059
+ 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{position:relative;display:none;justify-content:center;align-items:center;min-width:32px;cursor:pointer;z-index:2}.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}"],
1020
1060
  inputs: ['disableRipple'],
1021
1061
  encapsulation: ViewEncapsulation.None,
1022
1062
  changeDetection: ChangeDetectionStrategy.OnPush,
@@ -1033,7 +1073,8 @@ MatTabHeader.ctorParameters = () => [
1033
1073
  { type: ChangeDetectorRef },
1034
1074
  { type: ViewportRuler },
1035
1075
  { type: Directionality, decorators: [{ type: Optional }] },
1036
- { type: NgZone }
1076
+ { type: NgZone },
1077
+ { type: Platform }
1037
1078
  ];
1038
1079
  MatTabHeader.propDecorators = {
1039
1080
  _labelWrappers: [{ type: ContentChildren, args: [MatTabLabelWrapper,] }],
@@ -1047,21 +1088,24 @@ MatTabHeader.propDecorators = {
1047
1088
 
1048
1089
  /**
1049
1090
  * @fileoverview added by tsickle
1050
- * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
1091
+ * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1051
1092
  */
1052
- /** *
1093
+ /**
1053
1094
  * Used to generate unique ID's for each tab component
1054
- @type {?} */
1095
+ * @type {?}
1096
+ */
1055
1097
  let nextId = 0;
1056
1098
  /**
1057
1099
  * A simple change event emitted on focus or selection changes.
1058
1100
  */
1059
1101
  class MatTabChangeEvent {
1060
1102
  }
1061
- /** *
1103
+ /**
1062
1104
  * Injection token that can be used to provide the default options the tabs module.
1063
- @type {?} */
1105
+ * @type {?}
1106
+ */
1064
1107
  const MAT_TABS_CONFIG = new InjectionToken('MAT_TABS_CONFIG');
1108
+ // Boilerplate for applying mixins to MatTabGroup.
1065
1109
  /**
1066
1110
  * \@docs-private
1067
1111
  */
@@ -1153,6 +1197,18 @@ class MatTabGroup extends _MatTabGroupMixinBase {
1153
1197
  set selectedIndex(value) {
1154
1198
  this._indexToSelect = coerceNumberProperty(value, null);
1155
1199
  }
1200
+ /**
1201
+ * Duration for the tab animation. Will be normalized to milliseconds if no units are set.
1202
+ * @return {?}
1203
+ */
1204
+ get animationDuration() { return this._animationDuration; }
1205
+ /**
1206
+ * @param {?} value
1207
+ * @return {?}
1208
+ */
1209
+ set animationDuration(value) {
1210
+ this._animationDuration = /^\d+$/.test(value) ? value + 'ms' : value;
1211
+ }
1156
1212
  /**
1157
1213
  * Background color of the tab group.
1158
1214
  * @return {?}
@@ -1179,6 +1235,8 @@ class MatTabGroup extends _MatTabGroupMixinBase {
1179
1235
  * @return {?}
1180
1236
  */
1181
1237
  ngAfterContentChecked() {
1238
+ // Don't clamp the `indexToSelect` immediately in the setter because it can happen that
1239
+ // the amount of tabs changes before the actual change detection runs.
1182
1240
  /** @type {?} */
1183
1241
  const indexToSelect = this._indexToSelect = this._clampTabIndex(this._indexToSelect);
1184
1242
  // If there is a change in selected index, emit a change event. Should not trigger if
@@ -1265,6 +1323,7 @@ class MatTabGroup extends _MatTabGroupMixinBase {
1265
1323
  this.focusChange.emit(this._createChangeEvent(index));
1266
1324
  }
1267
1325
  /**
1326
+ * @private
1268
1327
  * @param {?} index
1269
1328
  * @return {?}
1270
1329
  */
@@ -1282,6 +1341,7 @@ class MatTabGroup extends _MatTabGroupMixinBase {
1282
1341
  * on the MatTab component, whereas the data binding is inside the MatTabGroup. In order for the
1283
1342
  * binding to be updated, we need to subscribe to changes in it and trigger change detection
1284
1343
  * manually.
1344
+ * @private
1285
1345
  * @return {?}
1286
1346
  */
1287
1347
  _subscribeToTabLabels() {
@@ -1293,6 +1353,7 @@ class MatTabGroup extends _MatTabGroupMixinBase {
1293
1353
  }
1294
1354
  /**
1295
1355
  * Clamps the given index to the bounds of 0 and the tabs length.
1356
+ * @private
1296
1357
  * @param {?} index
1297
1358
  * @return {?}
1298
1359
  */
@@ -1377,7 +1438,7 @@ MatTabGroup.decorators = [
1377
1438
  { type: Component, args: [{selector: 'mat-tab-group',
1378
1439
  exportAs: 'matTabGroup',
1379
1440
  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>",
1380
- 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 screen and (-ms-high-contrast:active){.mat-tab-label:focus{outline:dotted 2px}}.mat-tab-label.mat-tab-disabled{cursor:default}@media screen and (-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 screen and (-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}"],
1441
+ 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}"],
1381
1442
  encapsulation: ViewEncapsulation.None,
1382
1443
  changeDetection: ChangeDetectionStrategy.OnPush,
1383
1444
  inputs: ['color', 'disableRipple'],
@@ -1411,8 +1472,9 @@ MatTabGroup.propDecorators = {
1411
1472
 
1412
1473
  /**
1413
1474
  * @fileoverview added by tsickle
1414
- * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
1475
+ * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1415
1476
  */
1477
+ // Boilerplate for applying mixins to MatTabNav.
1416
1478
  /**
1417
1479
  * \@docs-private
1418
1480
  */
@@ -1530,7 +1592,7 @@ MatTabNav.decorators = [
1530
1592
  exportAs: 'matTabNavBar, matTabNav',
1531
1593
  inputs: ['color', 'disableRipple'],
1532
1594
  template: "<div class=\"mat-tab-links\" (cdkObserveContent)=\"_alignInkBar()\"><ng-content></ng-content><mat-ink-bar></mat-ink-bar></div>",
1533
- 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 screen and (-ms-high-contrast:active){.mat-tab-link:focus{outline:dotted 2px}}.mat-tab-link.mat-tab-disabled{cursor:default}@media screen and (-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 screen and (-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 screen and (-ms-high-contrast:active){.mat-ink-bar{outline:solid 2px;height:0}}"],
1595
+ 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}}"],
1534
1596
  host: { 'class': 'mat-tab-nav-bar' },
1535
1597
  encapsulation: ViewEncapsulation.None,
1536
1598
  changeDetection: ChangeDetectionStrategy.OnPush,
@@ -1549,6 +1611,7 @@ MatTabNav.propDecorators = {
1549
1611
  _tabLinks: [{ type: ContentChildren, args: [forwardRef(() => MatTabLink), { descendants: true },] }],
1550
1612
  backgroundColor: [{ type: Input }]
1551
1613
  };
1614
+ // Boilerplate for applying mixins to MatTabLink.
1552
1615
  class MatTabLinkBase {
1553
1616
  }
1554
1617
  /** @type {?} */
@@ -1664,7 +1727,7 @@ MatTabLink.propDecorators = {
1664
1727
 
1665
1728
  /**
1666
1729
  * @fileoverview added by tsickle
1667
- * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
1730
+ * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1668
1731
  */
1669
1732
  class MatTabsModule {
1670
1733
  }
@@ -1706,18 +1769,18 @@ MatTabsModule.decorators = [
1706
1769
 
1707
1770
  /**
1708
1771
  * @fileoverview added by tsickle
1709
- * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
1772
+ * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1710
1773
  */
1711
1774
 
1712
1775
  /**
1713
1776
  * @fileoverview added by tsickle
1714
- * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
1777
+ * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1715
1778
  */
1716
1779
 
1717
1780
  /**
1718
1781
  * @fileoverview added by tsickle
1719
- * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
1782
+ * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1720
1783
  */
1721
1784
 
1722
- export { MatInkBar, _MAT_INK_BAR_POSITIONER, MatTabBody, MatTabBodyPortal, MatTabHeader, MatTabLabelWrapper, MatTab, MatTabLabel, MatTabNav, MatTabLink, MatTabContent, MatTabsModule, MatTabChangeEvent, MAT_TABS_CONFIG, MatTabGroupBase, _MatTabGroupMixinBase, MatTabGroup, matTabsAnimations, _MAT_INK_BAR_POSITIONER_FACTORY as ɵa22, MatTabBase as ɵf22, _MatTabMixinBase as ɵg22, MatTabHeaderBase as ɵb22, _MatTabHeaderMixinBase as ɵc22, MatTabLabelWrapperBase as ɵd22, _MatTabLabelWrapperMixinBase as ɵe22, MatTabLinkBase as ɵj22, MatTabNavBase as ɵh22, _MatTabLinkMixinBase as ɵk22, _MatTabNavMixinBase as ɵi22 };
1785
+ export { MatInkBar, _MAT_INK_BAR_POSITIONER, MatTabBody, MatTabBodyPortal, MatTabHeader, MatTabLabelWrapper, MatTab, MatTabLabel, MatTabNav, MatTabLink, MatTabContent, MatTabsModule, MatTabChangeEvent, MAT_TABS_CONFIG, MatTabGroupBase, _MatTabGroupMixinBase, MatTabGroup, matTabsAnimations, _MAT_INK_BAR_POSITIONER_FACTORY as ɵa24, MatTabBase as ɵf24, _MatTabMixinBase as ɵg24, MatTabHeaderBase as ɵb24, _MatTabHeaderMixinBase as ɵc24, MatTabLabelWrapperBase as ɵd24, _MatTabLabelWrapperMixinBase as ɵe24, MatTabLinkBase as ɵj24, MatTabNavBase as ɵh24, _MatTabLinkMixinBase as ɵk24, _MatTabNavMixinBase as ɵi24 };
1723
1786
  //# sourceMappingURL=tabs.js.map