@angular/material 11.0.4 → 11.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (583) hide show
  1. package/_theming.scss +354 -337
  2. package/autocomplete/_autocomplete-theme.scss +4 -5
  3. package/autocomplete/autocomplete.d.ts +7 -1
  4. package/autocomplete/index.metadata.json +1 -1
  5. package/autocomplete/testing/autocomplete-harness.d.ts +29 -15
  6. package/badge/_badge-theme.scss +2 -3
  7. package/bottom-sheet/_bottom-sheet-theme.scss +4 -5
  8. package/bundles/material-autocomplete-testing.umd.js +54 -36
  9. package/bundles/material-autocomplete-testing.umd.js.map +1 -1
  10. package/bundles/material-autocomplete-testing.umd.min.js +2 -2
  11. package/bundles/material-autocomplete-testing.umd.min.js.map +1 -1
  12. package/bundles/material-autocomplete.umd.js +31 -9
  13. package/bundles/material-autocomplete.umd.js.map +1 -1
  14. package/bundles/material-autocomplete.umd.min.js +3 -3
  15. package/bundles/material-autocomplete.umd.min.js.map +1 -1
  16. package/bundles/material-badge-testing.umd.js +9 -1
  17. package/bundles/material-badge-testing.umd.js.map +1 -1
  18. package/bundles/material-badge-testing.umd.min.js +1 -1
  19. package/bundles/material-badge-testing.umd.min.js.map +1 -1
  20. package/bundles/material-badge.umd.js +9 -1
  21. package/bundles/material-badge.umd.js.map +1 -1
  22. package/bundles/material-badge.umd.min.js +3 -3
  23. package/bundles/material-badge.umd.min.js.map +1 -1
  24. package/bundles/material-bottom-sheet-testing.umd.js +9 -1
  25. package/bundles/material-bottom-sheet-testing.umd.js.map +1 -1
  26. package/bundles/material-bottom-sheet-testing.umd.min.js +1 -1
  27. package/bundles/material-bottom-sheet-testing.umd.min.js.map +1 -1
  28. package/bundles/material-bottom-sheet.umd.js +9 -1
  29. package/bundles/material-bottom-sheet.umd.js.map +1 -1
  30. package/bundles/material-bottom-sheet.umd.min.js +1 -1
  31. package/bundles/material-bottom-sheet.umd.min.js.map +1 -1
  32. package/bundles/material-button-testing.umd.js +9 -1
  33. package/bundles/material-button-testing.umd.js.map +1 -1
  34. package/bundles/material-button-testing.umd.min.js +1 -1
  35. package/bundles/material-button-testing.umd.min.js.map +1 -1
  36. package/bundles/material-button-toggle-testing.umd.js +9 -1
  37. package/bundles/material-button-toggle-testing.umd.js.map +1 -1
  38. package/bundles/material-button-toggle-testing.umd.min.js +1 -1
  39. package/bundles/material-button-toggle-testing.umd.min.js.map +1 -1
  40. package/bundles/material-button-toggle.umd.js +9 -1
  41. package/bundles/material-button-toggle.umd.js.map +1 -1
  42. package/bundles/material-button-toggle.umd.min.js +1 -1
  43. package/bundles/material-button-toggle.umd.min.js.map +1 -1
  44. package/bundles/material-button.umd.js +17 -5
  45. package/bundles/material-button.umd.js.map +1 -1
  46. package/bundles/material-button.umd.min.js +1 -1
  47. package/bundles/material-button.umd.min.js.map +1 -1
  48. package/bundles/material-card-testing.umd.js +9 -1
  49. package/bundles/material-card-testing.umd.js.map +1 -1
  50. package/bundles/material-card-testing.umd.min.js +1 -1
  51. package/bundles/material-card-testing.umd.min.js.map +1 -1
  52. package/bundles/material-checkbox-testing.umd.js +73 -64
  53. package/bundles/material-checkbox-testing.umd.js.map +1 -1
  54. package/bundles/material-checkbox-testing.umd.min.js +2 -2
  55. package/bundles/material-checkbox-testing.umd.min.js.map +1 -1
  56. package/bundles/material-checkbox.umd.js +15 -3
  57. package/bundles/material-checkbox.umd.js.map +1 -1
  58. package/bundles/material-checkbox.umd.min.js +2 -2
  59. package/bundles/material-checkbox.umd.min.js.map +1 -1
  60. package/bundles/material-chips-testing.umd.js +189 -29
  61. package/bundles/material-chips-testing.umd.js.map +1 -1
  62. package/bundles/material-chips-testing.umd.min.js +2 -2
  63. package/bundles/material-chips-testing.umd.min.js.map +1 -1
  64. package/bundles/material-chips.umd.js +9 -1
  65. package/bundles/material-chips.umd.js.map +1 -1
  66. package/bundles/material-chips.umd.min.js +4 -4
  67. package/bundles/material-chips.umd.min.js.map +1 -1
  68. package/bundles/material-core-testing.umd.js +14 -3
  69. package/bundles/material-core-testing.umd.js.map +1 -1
  70. package/bundles/material-core-testing.umd.min.js +1 -1
  71. package/bundles/material-core-testing.umd.min.js.map +1 -1
  72. package/bundles/material-core.umd.js +55 -14
  73. package/bundles/material-core.umd.js.map +1 -1
  74. package/bundles/material-core.umd.min.js +16 -8
  75. package/bundles/material-core.umd.min.js.map +1 -1
  76. package/bundles/material-datepicker-testing.umd.js +24 -12
  77. package/bundles/material-datepicker-testing.umd.js.map +1 -1
  78. package/bundles/material-datepicker-testing.umd.min.js +1 -1
  79. package/bundles/material-datepicker-testing.umd.min.js.map +1 -1
  80. package/bundles/material-datepicker.umd.js +250 -80
  81. package/bundles/material-datepicker.umd.js.map +1 -1
  82. package/bundles/material-datepicker.umd.min.js +20 -12
  83. package/bundles/material-datepicker.umd.min.js.map +1 -1
  84. package/bundles/material-dialog-testing.umd.js +9 -1
  85. package/bundles/material-dialog-testing.umd.js.map +1 -1
  86. package/bundles/material-dialog-testing.umd.min.js +1 -1
  87. package/bundles/material-dialog-testing.umd.min.js.map +1 -1
  88. package/bundles/material-dialog.umd.js +10 -2
  89. package/bundles/material-dialog.umd.js.map +1 -1
  90. package/bundles/material-dialog.umd.min.js +8 -8
  91. package/bundles/material-dialog.umd.min.js.map +1 -1
  92. package/bundles/material-divider-testing.umd.js +9 -1
  93. package/bundles/material-divider-testing.umd.js.map +1 -1
  94. package/bundles/material-divider-testing.umd.min.js +2 -2
  95. package/bundles/material-divider-testing.umd.min.js.map +1 -1
  96. package/bundles/material-expansion-testing.umd.js +9 -1
  97. package/bundles/material-expansion-testing.umd.js.map +1 -1
  98. package/bundles/material-expansion-testing.umd.min.js +1 -1
  99. package/bundles/material-expansion-testing.umd.min.js.map +1 -1
  100. package/bundles/material-expansion.umd.js +16 -4
  101. package/bundles/material-expansion.umd.js.map +1 -1
  102. package/bundles/material-expansion.umd.min.js +6 -6
  103. package/bundles/material-expansion.umd.min.js.map +1 -1
  104. package/bundles/material-form-field-testing-control.umd.js +9 -1
  105. package/bundles/material-form-field-testing-control.umd.js.map +1 -1
  106. package/bundles/material-form-field-testing-control.umd.min.js +1 -1
  107. package/bundles/material-form-field-testing-control.umd.min.js.map +1 -1
  108. package/bundles/material-form-field-testing.umd.js +41 -30
  109. package/bundles/material-form-field-testing.umd.js.map +1 -1
  110. package/bundles/material-form-field-testing.umd.min.js +3 -3
  111. package/bundles/material-form-field-testing.umd.min.js.map +1 -1
  112. package/bundles/material-form-field.umd.js +11 -3
  113. package/bundles/material-form-field.umd.js.map +1 -1
  114. package/bundles/material-form-field.umd.min.js +2 -2
  115. package/bundles/material-form-field.umd.min.js.map +1 -1
  116. package/bundles/material-grid-list-testing.umd.js +15 -5
  117. package/bundles/material-grid-list-testing.umd.js.map +1 -1
  118. package/bundles/material-grid-list-testing.umd.min.js +2 -2
  119. package/bundles/material-grid-list-testing.umd.min.js.map +1 -1
  120. package/bundles/material-grid-list.umd.js +156 -146
  121. package/bundles/material-grid-list.umd.js.map +1 -1
  122. package/bundles/material-grid-list.umd.min.js +12 -19
  123. package/bundles/material-grid-list.umd.min.js.map +1 -1
  124. package/bundles/material-icon-testing.umd.js +12 -2
  125. package/bundles/material-icon-testing.umd.js.map +1 -1
  126. package/bundles/material-icon-testing.umd.min.js +2 -2
  127. package/bundles/material-icon-testing.umd.min.js.map +1 -1
  128. package/bundles/material-icon.umd.js +46 -2
  129. package/bundles/material-icon.umd.js.map +1 -1
  130. package/bundles/material-icon.umd.min.js +3 -3
  131. package/bundles/material-icon.umd.min.js.map +1 -1
  132. package/bundles/material-input-testing.umd.js +19 -8
  133. package/bundles/material-input-testing.umd.js.map +1 -1
  134. package/bundles/material-input-testing.umd.min.js +1 -1
  135. package/bundles/material-input-testing.umd.min.js.map +1 -1
  136. package/bundles/material-input.umd.js +9 -1
  137. package/bundles/material-input.umd.js.map +1 -1
  138. package/bundles/material-input.umd.min.js +1 -1
  139. package/bundles/material-input.umd.min.js.map +1 -1
  140. package/bundles/material-list-testing.umd.js +62 -57
  141. package/bundles/material-list-testing.umd.js.map +1 -1
  142. package/bundles/material-list-testing.umd.min.js +1 -1
  143. package/bundles/material-list-testing.umd.min.js.map +1 -1
  144. package/bundles/material-list.umd.js +9 -1
  145. package/bundles/material-list.umd.js.map +1 -1
  146. package/bundles/material-list.umd.min.js +1 -1
  147. package/bundles/material-list.umd.min.js.map +1 -1
  148. package/bundles/material-menu-testing.umd.js +94 -67
  149. package/bundles/material-menu-testing.umd.js.map +1 -1
  150. package/bundles/material-menu-testing.umd.min.js +2 -2
  151. package/bundles/material-menu-testing.umd.min.js.map +1 -1
  152. package/bundles/material-menu.umd.js +24 -28
  153. package/bundles/material-menu.umd.js.map +1 -1
  154. package/bundles/material-menu.umd.min.js +3 -3
  155. package/bundles/material-menu.umd.min.js.map +1 -1
  156. package/bundles/material-paginator-testing.umd.js +50 -34
  157. package/bundles/material-paginator-testing.umd.js.map +1 -1
  158. package/bundles/material-paginator-testing.umd.min.js +2 -2
  159. package/bundles/material-paginator-testing.umd.min.js.map +1 -1
  160. package/bundles/material-paginator.umd.js +9 -1
  161. package/bundles/material-paginator.umd.js.map +1 -1
  162. package/bundles/material-paginator.umd.min.js +1 -1
  163. package/bundles/material-paginator.umd.min.js.map +1 -1
  164. package/bundles/material-progress-bar-testing.umd.js +9 -1
  165. package/bundles/material-progress-bar-testing.umd.js.map +1 -1
  166. package/bundles/material-progress-bar-testing.umd.min.js +1 -1
  167. package/bundles/material-progress-bar-testing.umd.min.js.map +1 -1
  168. package/bundles/material-progress-bar.umd.js +9 -1
  169. package/bundles/material-progress-bar.umd.js.map +1 -1
  170. package/bundles/material-progress-bar.umd.min.js +1 -1
  171. package/bundles/material-progress-bar.umd.min.js.map +1 -1
  172. package/bundles/material-progress-spinner-testing.umd.js +9 -1
  173. package/bundles/material-progress-spinner-testing.umd.js.map +1 -1
  174. package/bundles/material-progress-spinner-testing.umd.min.js +1 -1
  175. package/bundles/material-progress-spinner-testing.umd.min.js.map +1 -1
  176. package/bundles/material-progress-spinner.umd.js +9 -1
  177. package/bundles/material-progress-spinner.umd.js.map +1 -1
  178. package/bundles/material-progress-spinner.umd.min.js +2 -2
  179. package/bundles/material-progress-spinner.umd.min.js.map +1 -1
  180. package/bundles/material-radio-testing.umd.js +88 -63
  181. package/bundles/material-radio-testing.umd.js.map +1 -1
  182. package/bundles/material-radio-testing.umd.min.js +2 -2
  183. package/bundles/material-radio-testing.umd.min.js.map +1 -1
  184. package/bundles/material-radio.umd.js +18 -5
  185. package/bundles/material-radio.umd.js.map +1 -1
  186. package/bundles/material-radio.umd.min.js +1 -1
  187. package/bundles/material-radio.umd.min.js.map +1 -1
  188. package/bundles/material-select-testing.umd.js +73 -51
  189. package/bundles/material-select-testing.umd.js.map +1 -1
  190. package/bundles/material-select-testing.umd.min.js +2 -2
  191. package/bundles/material-select-testing.umd.min.js.map +1 -1
  192. package/bundles/material-select.umd.js +14 -3
  193. package/bundles/material-select.umd.js.map +1 -1
  194. package/bundles/material-select.umd.min.js +5 -5
  195. package/bundles/material-select.umd.min.js.map +1 -1
  196. package/bundles/material-sidenav-testing.umd.js +175 -28
  197. package/bundles/material-sidenav-testing.umd.js.map +1 -1
  198. package/bundles/material-sidenav-testing.umd.min.js +2 -2
  199. package/bundles/material-sidenav-testing.umd.min.js.map +1 -1
  200. package/bundles/material-sidenav.umd.js +9 -1
  201. package/bundles/material-sidenav.umd.js.map +1 -1
  202. package/bundles/material-sidenav.umd.min.js +1 -1
  203. package/bundles/material-sidenav.umd.min.js.map +1 -1
  204. package/bundles/material-slide-toggle-testing.umd.js +9 -1
  205. package/bundles/material-slide-toggle-testing.umd.js.map +1 -1
  206. package/bundles/material-slide-toggle-testing.umd.min.js +1 -1
  207. package/bundles/material-slide-toggle-testing.umd.min.js.map +1 -1
  208. package/bundles/material-slide-toggle.umd.js +16 -3
  209. package/bundles/material-slide-toggle.umd.js.map +1 -1
  210. package/bundles/material-slide-toggle.umd.min.js +3 -3
  211. package/bundles/material-slide-toggle.umd.min.js.map +1 -1
  212. package/bundles/material-slider-testing.umd.js +15 -4
  213. package/bundles/material-slider-testing.umd.js.map +1 -1
  214. package/bundles/material-slider-testing.umd.min.js +2 -2
  215. package/bundles/material-slider-testing.umd.min.js.map +1 -1
  216. package/bundles/material-slider.umd.js +9 -1
  217. package/bundles/material-slider.umd.js.map +1 -1
  218. package/bundles/material-slider.umd.min.js +1 -1
  219. package/bundles/material-slider.umd.min.js.map +1 -1
  220. package/bundles/material-snack-bar-testing.umd.js +29 -12
  221. package/bundles/material-snack-bar-testing.umd.js.map +1 -1
  222. package/bundles/material-snack-bar-testing.umd.min.js +2 -2
  223. package/bundles/material-snack-bar-testing.umd.min.js.map +1 -1
  224. package/bundles/material-snack-bar.umd.js +20 -2
  225. package/bundles/material-snack-bar.umd.js.map +1 -1
  226. package/bundles/material-snack-bar.umd.min.js +1 -1
  227. package/bundles/material-snack-bar.umd.min.js.map +1 -1
  228. package/bundles/material-sort-testing.umd.js +9 -1
  229. package/bundles/material-sort-testing.umd.js.map +1 -1
  230. package/bundles/material-sort-testing.umd.min.js +1 -1
  231. package/bundles/material-sort-testing.umd.min.js.map +1 -1
  232. package/bundles/material-sort.umd.js +9 -1
  233. package/bundles/material-sort.umd.js.map +1 -1
  234. package/bundles/material-sort.umd.min.js +3 -3
  235. package/bundles/material-sort.umd.min.js.map +1 -1
  236. package/bundles/material-stepper-testing.umd.js +9 -1
  237. package/bundles/material-stepper-testing.umd.js.map +1 -1
  238. package/bundles/material-stepper-testing.umd.min.js +2 -2
  239. package/bundles/material-stepper-testing.umd.min.js.map +1 -1
  240. package/bundles/material-stepper.umd.js +16 -3
  241. package/bundles/material-stepper.umd.js.map +1 -1
  242. package/bundles/material-stepper.umd.min.js +3 -3
  243. package/bundles/material-stepper.umd.min.js.map +1 -1
  244. package/bundles/material-table-testing.umd.js +26 -17
  245. package/bundles/material-table-testing.umd.js.map +1 -1
  246. package/bundles/material-table-testing.umd.min.js +2 -2
  247. package/bundles/material-table-testing.umd.min.js.map +1 -1
  248. package/bundles/material-table.umd.js +65 -38
  249. package/bundles/material-table.umd.js.map +1 -1
  250. package/bundles/material-table.umd.min.js +3 -3
  251. package/bundles/material-table.umd.min.js.map +1 -1
  252. package/bundles/material-tabs-testing.umd.js +11 -3
  253. package/bundles/material-tabs-testing.umd.js.map +1 -1
  254. package/bundles/material-tabs-testing.umd.min.js +1 -1
  255. package/bundles/material-tabs-testing.umd.min.js.map +1 -1
  256. package/bundles/material-tabs.umd.js +10 -2
  257. package/bundles/material-tabs.umd.js.map +1 -1
  258. package/bundles/material-tabs.umd.min.js +5 -5
  259. package/bundles/material-tabs.umd.min.js.map +1 -1
  260. package/bundles/material-toolbar-testing.umd.js +11 -2
  261. package/bundles/material-toolbar-testing.umd.js.map +1 -1
  262. package/bundles/material-toolbar-testing.umd.min.js +2 -2
  263. package/bundles/material-toolbar-testing.umd.min.js.map +1 -1
  264. package/bundles/material-toolbar.umd.js +9 -1
  265. package/bundles/material-toolbar.umd.js.map +1 -1
  266. package/bundles/material-toolbar.umd.min.js +2 -2
  267. package/bundles/material-toolbar.umd.min.js.map +1 -1
  268. package/bundles/material-tooltip-testing.umd.js +9 -1
  269. package/bundles/material-tooltip-testing.umd.js.map +1 -1
  270. package/bundles/material-tooltip-testing.umd.min.js +1 -1
  271. package/bundles/material-tooltip-testing.umd.min.js.map +1 -1
  272. package/bundles/material-tooltip.umd.js +35 -7
  273. package/bundles/material-tooltip.umd.js.map +1 -1
  274. package/bundles/material-tooltip.umd.min.js +3 -3
  275. package/bundles/material-tooltip.umd.min.js.map +1 -1
  276. package/bundles/material-tree-testing.umd.js +10 -2
  277. package/bundles/material-tree-testing.umd.js.map +1 -1
  278. package/bundles/material-tree-testing.umd.min.js +1 -1
  279. package/bundles/material-tree-testing.umd.min.js.map +1 -1
  280. package/bundles/material-tree.umd.js +9 -1
  281. package/bundles/material-tree.umd.js.map +1 -1
  282. package/bundles/material-tree.umd.min.js +3 -3
  283. package/bundles/material-tree.umd.min.js.map +1 -1
  284. package/button/_button-base.scss +2 -2
  285. package/button/_button-theme.scss +10 -11
  286. package/button/index.metadata.json +1 -1
  287. package/button-toggle/_button-toggle-theme.scss +9 -10
  288. package/card/_card-theme.scss +5 -6
  289. package/checkbox/_checkbox-theme.scss +2 -3
  290. package/checkbox/testing/checkbox-harness.d.ts +21 -16
  291. package/chips/_chips-theme.scss +4 -5
  292. package/chips/testing/chip-harness-filters.d.ts +11 -3
  293. package/chips/testing/chip-harness.d.ts +5 -5
  294. package/chips/testing/chip-list-harness.d.ts +15 -12
  295. package/chips/testing/chip-listbox-harness.d.ts +34 -0
  296. package/chips/testing/chip-option-harness.d.ts +29 -0
  297. package/chips/testing/public-api.d.ts +3 -1
  298. package/core/_core.scss +6 -6
  299. package/core/color/_all-color.scss +2 -1
  300. package/core/datetime/date-formats.d.ts +1 -0
  301. package/core/density/private/_all-density.scss +34 -0
  302. package/core/density/{_index.scss → private/_compatibility.scss} +11 -8
  303. package/core/focus-indicators/_focus-indicators.scss +3 -4
  304. package/core/index.metadata.json +1 -1
  305. package/core/option/_optgroup-theme.scss +2 -3
  306. package/core/option/_option-theme.scss +2 -3
  307. package/core/option/index.d.ts +1 -0
  308. package/core/option/optgroup.d.ts +4 -0
  309. package/core/option/option-parent.d.ts +22 -0
  310. package/core/option/option.d.ts +2 -14
  311. package/core/ripple/_ripple.scss +2 -3
  312. package/core/selection/pseudo-checkbox/_pseudo-checkbox-theme.scss +2 -3
  313. package/core/style/_elevation.scss +2 -18
  314. package/core/style/_form-common.scss +2 -2
  315. package/core/style/_private.scss +40 -0
  316. package/core/testing/option-harness.d.ts +2 -0
  317. package/core/theming/_all-theme.scss +3 -2
  318. package/core/theming/_theming.scss +148 -38
  319. package/core/typography/_all-typography.scss +1 -1
  320. package/datepicker/_datepicker-theme.scss +5 -6
  321. package/datepicker/date-range-input-parts.d.ts +2 -3
  322. package/datepicker/date-range-input.d.ts +5 -4
  323. package/datepicker/date-selection-model.d.ts +10 -0
  324. package/datepicker/datepicker-actions.d.ts +33 -0
  325. package/datepicker/datepicker-base.d.ts +52 -9
  326. package/datepicker/datepicker-input-base.d.ts +5 -10
  327. package/datepicker/datepicker-input.d.ts +9 -8
  328. package/datepicker/datepicker-toggle.d.ts +4 -2
  329. package/datepicker/index.metadata.json +1 -1
  330. package/datepicker/public-api.d.ts +1 -0
  331. package/dialog/_dialog-theme.scss +4 -5
  332. package/divider/_divider-theme.scss +2 -3
  333. package/esm2015/autocomplete/autocomplete-trigger.js +10 -2
  334. package/esm2015/autocomplete/autocomplete.js +11 -4
  335. package/esm2015/autocomplete/testing/autocomplete-harness.js +27 -19
  336. package/esm2015/button/button.js +10 -5
  337. package/esm2015/checkbox/checkbox.js +8 -3
  338. package/esm2015/checkbox/testing/checkbox-harness.js +31 -36
  339. package/esm2015/chips/testing/chip-harness-filters.js +1 -1
  340. package/esm2015/chips/testing/chip-harness.js +6 -6
  341. package/esm2015/chips/testing/chip-list-harness.js +19 -16
  342. package/esm2015/chips/testing/chip-listbox-harness.js +49 -0
  343. package/esm2015/chips/testing/chip-option-harness.js +54 -0
  344. package/esm2015/chips/testing/public-api.js +4 -2
  345. package/esm2015/core/common-behaviors/common-module.js +1 -1
  346. package/esm2015/core/datetime/date-formats.js +1 -1
  347. package/esm2015/core/option/index.js +2 -1
  348. package/esm2015/core/option/optgroup.js +32 -7
  349. package/esm2015/core/option/option-parent.js +13 -0
  350. package/esm2015/core/option/option.js +5 -8
  351. package/esm2015/core/testing/option-harness.js +7 -2
  352. package/esm2015/core/version.js +1 -1
  353. package/esm2015/datepicker/date-range-input-parts.js +10 -14
  354. package/esm2015/datepicker/date-range-input.js +11 -4
  355. package/esm2015/datepicker/date-range-picker.js +3 -2
  356. package/esm2015/datepicker/date-selection-model.js +24 -1
  357. package/esm2015/datepicker/datepicker-actions.js +89 -0
  358. package/esm2015/datepicker/datepicker-base.js +66 -25
  359. package/esm2015/datepicker/datepicker-input-base.js +15 -27
  360. package/esm2015/datepicker/datepicker-input.js +11 -5
  361. package/esm2015/datepicker/datepicker-module.js +8 -1
  362. package/esm2015/datepicker/datepicker-toggle.js +7 -10
  363. package/esm2015/datepicker/datepicker.js +5 -2
  364. package/esm2015/datepicker/month-view.js +6 -3
  365. package/esm2015/datepicker/public-api.js +2 -1
  366. package/esm2015/datepicker/testing/date-range-input-harness.js +4 -4
  367. package/esm2015/datepicker/testing/datepicker-input-harness.js +3 -3
  368. package/esm2015/datepicker/testing/datepicker-trigger-harness-base.js +3 -3
  369. package/esm2015/dialog/dialog-ref.js +2 -2
  370. package/esm2015/expansion/expansion-panel-header.js +9 -4
  371. package/esm2015/expansion/expansion-panel.js +1 -1
  372. package/esm2015/form-field/form-field-animations.js +2 -2
  373. package/esm2015/form-field/form-field.js +2 -2
  374. package/esm2015/form-field/testing/form-field-harness.js +14 -9
  375. package/esm2015/grid-list/public-api.js +3 -2
  376. package/esm2015/grid-list/testing/grid-list-harness.js +6 -5
  377. package/esm2015/icon/icon-registry.js +39 -3
  378. package/esm2015/icon/testing/fake-icon-registry.js +4 -2
  379. package/esm2015/input/testing/input-harness.js +3 -3
  380. package/esm2015/input/testing/native-select-harness.js +7 -5
  381. package/esm2015/list/selection-list.js +1 -1
  382. package/esm2015/list/testing/list-harness-base.js +5 -4
  383. package/esm2015/list/testing/list-item-harness-base.js +5 -4
  384. package/esm2015/list/testing/selection-list-harness.js +8 -5
  385. package/esm2015/menu/menu-item.js +3 -3
  386. package/esm2015/menu/menu-trigger.js +15 -25
  387. package/esm2015/menu/menu.js +2 -2
  388. package/esm2015/menu/testing/menu-harness.js +44 -32
  389. package/esm2015/paginator/testing/paginator-harness.js +27 -25
  390. package/esm2015/radio/radio.js +10 -5
  391. package/esm2015/radio/testing/radio-harness.js +40 -29
  392. package/esm2015/select/select.js +6 -3
  393. package/esm2015/select/testing/select-harness.js +36 -28
  394. package/esm2015/sidenav/testing/drawer-container-harness.js +41 -0
  395. package/esm2015/sidenav/testing/drawer-content-harness.js +23 -0
  396. package/esm2015/sidenav/testing/drawer-harness-filters.js +1 -1
  397. package/esm2015/sidenav/testing/drawer-harness.js +19 -13
  398. package/esm2015/sidenav/testing/public-api.js +6 -2
  399. package/esm2015/sidenav/testing/sidenav-container-harness.js +41 -0
  400. package/esm2015/sidenav/testing/sidenav-content-harness.js +23 -0
  401. package/esm2015/sidenav/testing/sidenav-harness.js +4 -4
  402. package/esm2015/slide-toggle/slide-toggle.js +8 -3
  403. package/esm2015/slider/testing/slider-harness.js +5 -5
  404. package/esm2015/snack-bar/snack-bar-container.js +12 -2
  405. package/esm2015/snack-bar/testing/snack-bar-harness.js +19 -12
  406. package/esm2015/stepper/step-header.js +8 -3
  407. package/esm2015/table/table-data-source.js +34 -21
  408. package/esm2015/table/testing/cell-harness.js +3 -3
  409. package/esm2015/table/testing/row-harness.js +5 -5
  410. package/esm2015/table/testing/table-harness.js +8 -8
  411. package/esm2015/tabs/tab-body.js +3 -3
  412. package/esm2015/tabs/testing/tab-group-harness.js +3 -3
  413. package/esm2015/tabs/testing/tab-nav-bar-harness.js +3 -3
  414. package/esm2015/toolbar/testing/toolbar-harness.js +3 -3
  415. package/esm2015/tooltip/tooltip.js +28 -7
  416. package/esm2015/tree/testing/tree-harness.js +2 -2
  417. package/expansion/_expansion-mixins.scss +11 -0
  418. package/expansion/_expansion-theme.scss +13 -19
  419. package/expansion/index.metadata.json +1 -1
  420. package/fesm2015/autocomplete/testing.js +26 -18
  421. package/fesm2015/autocomplete/testing.js.map +1 -1
  422. package/fesm2015/autocomplete.js +19 -5
  423. package/fesm2015/autocomplete.js.map +1 -1
  424. package/fesm2015/button.js +9 -4
  425. package/fesm2015/button.js.map +1 -1
  426. package/fesm2015/checkbox/testing.js +30 -35
  427. package/fesm2015/checkbox/testing.js.map +1 -1
  428. package/fesm2015/checkbox.js +7 -2
  429. package/fesm2015/checkbox.js.map +1 -1
  430. package/fesm2015/chips/testing.js +120 -21
  431. package/fesm2015/chips/testing.js.map +1 -1
  432. package/fesm2015/core/testing.js +6 -1
  433. package/fesm2015/core/testing.js.map +1 -1
  434. package/fesm2015/core.js +45 -13
  435. package/fesm2015/core.js.map +1 -1
  436. package/fesm2015/datepicker/testing.js +5 -5
  437. package/fesm2015/datepicker/testing.js.map +1 -1
  438. package/fesm2015/datepicker.js +275 -116
  439. package/fesm2015/datepicker.js.map +1 -1
  440. package/fesm2015/dialog.js +1 -1
  441. package/fesm2015/dialog.js.map +1 -1
  442. package/fesm2015/expansion.js +8 -3
  443. package/fesm2015/expansion.js.map +1 -1
  444. package/fesm2015/form-field/testing.js +13 -8
  445. package/fesm2015/form-field/testing.js.map +1 -1
  446. package/fesm2015/form-field.js +2 -2
  447. package/fesm2015/form-field.js.map +1 -1
  448. package/fesm2015/grid-list/testing.js +5 -4
  449. package/fesm2015/grid-list/testing.js.map +1 -1
  450. package/fesm2015/grid-list.js +128 -126
  451. package/fesm2015/grid-list.js.map +1 -1
  452. package/fesm2015/icon/testing.js +3 -1
  453. package/fesm2015/icon/testing.js.map +1 -1
  454. package/fesm2015/icon.js +38 -2
  455. package/fesm2015/icon.js.map +1 -1
  456. package/fesm2015/input/testing.js +7 -5
  457. package/fesm2015/input/testing.js.map +1 -1
  458. package/fesm2015/list/testing.js +13 -8
  459. package/fesm2015/list/testing.js.map +1 -1
  460. package/fesm2015/list.js.map +1 -1
  461. package/fesm2015/menu/testing.js +45 -33
  462. package/fesm2015/menu/testing.js.map +1 -1
  463. package/fesm2015/menu.js +17 -27
  464. package/fesm2015/menu.js.map +1 -1
  465. package/fesm2015/paginator/testing.js +26 -24
  466. package/fesm2015/paginator/testing.js.map +1 -1
  467. package/fesm2015/paginator.js.map +1 -1
  468. package/fesm2015/progress-spinner.js.map +1 -1
  469. package/fesm2015/radio/testing.js +39 -28
  470. package/fesm2015/radio/testing.js.map +1 -1
  471. package/fesm2015/radio.js +9 -4
  472. package/fesm2015/radio.js.map +1 -1
  473. package/fesm2015/select/testing.js +36 -28
  474. package/fesm2015/select/testing.js.map +1 -1
  475. package/fesm2015/select.js +5 -2
  476. package/fesm2015/select.js.map +1 -1
  477. package/fesm2015/sidenav/testing.js +139 -15
  478. package/fesm2015/sidenav/testing.js.map +1 -1
  479. package/fesm2015/sidenav.js.map +1 -1
  480. package/fesm2015/slide-toggle.js +7 -2
  481. package/fesm2015/slide-toggle.js.map +1 -1
  482. package/fesm2015/slider/testing.js +4 -4
  483. package/fesm2015/slider/testing.js.map +1 -1
  484. package/fesm2015/snack-bar/testing.js +18 -11
  485. package/fesm2015/snack-bar/testing.js.map +1 -1
  486. package/fesm2015/snack-bar.js +11 -1
  487. package/fesm2015/snack-bar.js.map +1 -1
  488. package/fesm2015/stepper.js +7 -2
  489. package/fesm2015/stepper.js.map +1 -1
  490. package/fesm2015/table/testing.js +11 -11
  491. package/fesm2015/table/testing.js.map +1 -1
  492. package/fesm2015/table.js +34 -21
  493. package/fesm2015/table.js.map +1 -1
  494. package/fesm2015/tabs/testing.js +3 -3
  495. package/fesm2015/tabs/testing.js.map +1 -1
  496. package/fesm2015/tabs.js +2 -2
  497. package/fesm2015/tabs.js.map +1 -1
  498. package/fesm2015/toolbar/testing.js +2 -2
  499. package/fesm2015/toolbar/testing.js.map +1 -1
  500. package/fesm2015/tooltip.js +27 -7
  501. package/fesm2015/tooltip.js.map +1 -1
  502. package/fesm2015/tree/testing.js +1 -1
  503. package/fesm2015/tree/testing.js.map +1 -1
  504. package/form-field/_form-field-fill-theme.scss +4 -5
  505. package/form-field/_form-field-legacy-theme.scss +5 -6
  506. package/form-field/_form-field-outline-theme.scss +4 -5
  507. package/form-field/_form-field-standard-theme.scss +5 -6
  508. package/form-field/_form-field-theme.scss +8 -9
  509. package/form-field/index.metadata.json +1 -1
  510. package/grid-list/_grid-list-theme.scss +2 -3
  511. package/grid-list/index.metadata.json +1 -1
  512. package/grid-list/public-api.d.ts +2 -1
  513. package/icon/_icon-theme.scss +2 -3
  514. package/icon/icon-registry.d.ts +23 -0
  515. package/icon/index.metadata.json +1 -1
  516. package/icon/testing/fake-icon-registry.d.ts +1 -0
  517. package/icon/testing/index.metadata.json +1 -1
  518. package/input/_input-theme.scss +3 -4
  519. package/list/_list-theme.scss +2 -3
  520. package/list/index.metadata.json +1 -1
  521. package/list/selection-list.d.ts +6 -1
  522. package/list/testing/list-harness-base.d.ts +1 -1
  523. package/list/testing/list-item-harness-base.d.ts +2 -2
  524. package/list/testing/selection-list-harness.d.ts +2 -1
  525. package/menu/_menu-theme.scss +4 -5
  526. package/menu/index.metadata.json +1 -1
  527. package/menu/menu-trigger.d.ts +1 -3
  528. package/menu/menu.d.ts +4 -2
  529. package/menu/testing/menu-harness.d.ts +39 -26
  530. package/package.json +2 -2
  531. package/paginator/_paginator-theme.scss +7 -8
  532. package/paginator/testing/paginator-harness.d.ts +32 -19
  533. package/prebuilt-themes/deeppurple-amber.css +1 -1
  534. package/prebuilt-themes/indigo-pink.css +1 -1
  535. package/prebuilt-themes/pink-bluegrey.css +1 -1
  536. package/prebuilt-themes/purple-green.css +1 -1
  537. package/progress-bar/_progress-bar-theme.scss +2 -3
  538. package/progress-spinner/_progress-spinner-theme.scss +2 -3
  539. package/radio/_radio-theme.scss +2 -3
  540. package/radio/index.metadata.json +1 -1
  541. package/radio/radio.d.ts +2 -2
  542. package/radio/testing/radio-harness.d.ts +39 -24
  543. package/schematics/ng-add/fonts/material-fonts.js +7 -5
  544. package/schematics/ng-add/index.js +1 -1
  545. package/schematics/ng-add/setup-project.js +4 -3
  546. package/select/_select-theme.scss +5 -6
  547. package/select/index.metadata.json +1 -1
  548. package/select/testing/select-harness.d.ts +28 -16
  549. package/sidenav/_sidenav-theme.scss +4 -5
  550. package/sidenav/testing/drawer-container-harness.d.ts +30 -0
  551. package/sidenav/testing/drawer-content-harness.d.ts +21 -0
  552. package/sidenav/testing/drawer-harness-filters.d.ts +6 -0
  553. package/sidenav/testing/drawer-harness.d.ts +13 -7
  554. package/sidenav/testing/public-api.d.ts +5 -1
  555. package/sidenav/testing/sidenav-container-harness.d.ts +30 -0
  556. package/sidenav/testing/sidenav-content-harness.d.ts +21 -0
  557. package/sidenav/testing/sidenav-harness.d.ts +3 -3
  558. package/slide-toggle/_slide-toggle-theme.scss +4 -5
  559. package/slide-toggle/slide-toggle.d.ts +2 -2
  560. package/slider/_slider-theme.scss +2 -3
  561. package/snack-bar/_snack-bar-theme.scss +4 -5
  562. package/snack-bar/index.metadata.json +1 -1
  563. package/snack-bar/snack-bar-container.d.ts +5 -0
  564. package/snack-bar/testing/snack-bar-harness.d.ts +7 -4
  565. package/sort/_sort-theme.scss +2 -3
  566. package/stepper/_stepper-theme.scss +7 -8
  567. package/stepper/step-header.d.ts +2 -2
  568. package/table/_table-theme.scss +2 -3
  569. package/table/index.metadata.json +1 -1
  570. package/table/table-data-source.d.ts +31 -20
  571. package/table/testing/cell-harness.d.ts +2 -2
  572. package/tabs/_tabs-common.scss +2 -2
  573. package/tabs/_tabs-theme.scss +14 -9
  574. package/tabs/index.metadata.json +1 -1
  575. package/tabs/tab-body.d.ts +3 -3
  576. package/toolbar/_toolbar-theme.scss +8 -9
  577. package/tooltip/_tooltip-theme.scss +2 -3
  578. package/tooltip/index.metadata.json +1 -1
  579. package/tooltip/tooltip.d.ts +10 -1
  580. package/tree/_tree-theme.scss +7 -8
  581. package/core/density/_all-density.scss +0 -19
  582. package/core/style/_noop-animation.scss +0 -22
  583. package/core/theming/_check-duplicate-styles.scss +0 -106
@@ -1 +1 @@
1
- {"version":3,"file":"stepper.js","sources":["../../../../../../src/material/stepper/step-label.ts","../../../../../../src/material/stepper/stepper-intl.ts","../../../../../../src/material/stepper/step-header.ts","../../../../../../src/material/stepper/stepper-animations.ts","../../../../../../src/material/stepper/stepper-icon.ts","../../../../../../src/material/stepper/stepper.ts","../../../../../../src/material/stepper/stepper-button.ts","../../../../../../src/material/stepper/stepper-module.ts","../../../../../../src/material/stepper/public-api.ts","../../../../../../src/material/stepper/index.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 {Directive} from '@angular/core';\nimport {CdkStepLabel} from '@angular/cdk/stepper';\n\n@Directive({\n selector: '[matStepLabel]',\n})\nexport class MatStepLabel extends CdkStepLabel {}\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 {Injectable, Optional, SkipSelf} from '@angular/core';\nimport {Subject} from 'rxjs';\n\n\n/** Stepper data that is required for internationalization. */\n@Injectable({providedIn: 'root'})\nexport class MatStepperIntl {\n /**\n * Stream that emits whenever the labels here are changed. Use this to notify\n * components if the labels have changed after initialization.\n */\n readonly changes: Subject<void> = new Subject<void>();\n\n /** Label that is rendered below optional steps. */\n optionalLabel: string = 'Optional';\n}\n\n\n/** @docs-private */\nexport function MAT_STEPPER_INTL_PROVIDER_FACTORY(parentIntl: MatStepperIntl) {\n return parentIntl || new MatStepperIntl();\n}\n\n/** @docs-private */\nexport const MAT_STEPPER_INTL_PROVIDER = {\n provide: MatStepperIntl,\n deps: [[new Optional(), new SkipSelf(), MatStepperIntl]],\n useFactory: MAT_STEPPER_INTL_PROVIDER_FACTORY\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 {FocusMonitor} from '@angular/cdk/a11y';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n ViewEncapsulation,\n TemplateRef,\n AfterViewInit,\n} from '@angular/core';\nimport {Subscription} from 'rxjs';\nimport {MatStepLabel} from './step-label';\nimport {MatStepperIntl} from './stepper-intl';\nimport {MatStepperIconContext} from './stepper-icon';\nimport {CdkStepHeader, StepState} from '@angular/cdk/stepper';\nimport {CanColorCtor, mixinColor, CanColor} from '@angular/material/core';\n\n\n// Boilerplate for applying mixins to MatStepHeader.\n/** @docs-private */\nclass MatStepHeaderBase extends CdkStepHeader {\n constructor(elementRef: ElementRef) {\n super(elementRef);\n }\n}\n\nconst _MatStepHeaderMixinBase: CanColorCtor & typeof MatStepHeaderBase =\n mixinColor(MatStepHeaderBase, 'primary');\n\n@Component({\n selector: 'mat-step-header',\n templateUrl: 'step-header.html',\n styleUrls: ['step-header.css'],\n inputs: ['color'],\n host: {\n 'class': 'mat-step-header mat-focus-indicator',\n 'role': 'tab',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatStepHeader extends _MatStepHeaderMixinBase implements AfterViewInit, OnDestroy,\n CanColor {\n private _intlSubscription: Subscription;\n\n /** State of the given step. */\n @Input() state: StepState;\n\n /** Label of the given step. */\n @Input() label: MatStepLabel | string;\n\n /** Error message to display when there's an error. */\n @Input() errorMessage: string;\n\n /** Overrides for the header icons, passed in via the stepper. */\n @Input() iconOverrides: {[key: string]: TemplateRef<MatStepperIconContext>};\n\n /** Index of the given step. */\n @Input() index: number;\n\n /** Whether the given step is selected. */\n @Input() selected: boolean;\n\n /** Whether the given step label is active. */\n @Input() active: boolean;\n\n /** Whether the given step is optional. */\n @Input() optional: boolean;\n\n /** Whether the ripple should be disabled. */\n @Input() disableRipple: boolean;\n\n constructor(\n public _intl: MatStepperIntl,\n private _focusMonitor: FocusMonitor,\n _elementRef: ElementRef<HTMLElement>,\n changeDetectorRef: ChangeDetectorRef) {\n super(_elementRef);\n this._intlSubscription = _intl.changes.subscribe(() => changeDetectorRef.markForCheck());\n }\n\n ngAfterViewInit() {\n this._focusMonitor.monitor(this._elementRef, true);\n }\n\n ngOnDestroy() {\n this._intlSubscription.unsubscribe();\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n\n /** Focuses the step header. */\n focus() {\n this._focusMonitor.focusVia(this._elementRef, 'program');\n }\n\n /** Returns string label of given step if it is a text label. */\n _stringLabel(): string | null {\n return this.label instanceof MatStepLabel ? null : this.label;\n }\n\n /** Returns MatStepLabel if the label of given step is a template label. */\n _templateLabel(): MatStepLabel | null {\n return this.label instanceof MatStepLabel ? this.label : null;\n }\n\n /** Returns the host HTML element. */\n _getHostElement() {\n return this._elementRef.nativeElement;\n }\n\n /** Template context variables that are exposed to the `matStepperIcon` instances. */\n _getIconContext(): MatStepperIconContext {\n return {\n index: this.index,\n active: this.active,\n optional: this.optional\n };\n }\n\n _getDefaultTextForState(state: StepState): string {\n if (state == 'number') {\n return `${this.index + 1}`;\n }\n if (state == 'edit') {\n return 'create';\n }\n if (state == 'error') {\n return 'warning';\n }\n return state;\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 */\nimport {\n animate,\n state,\n style,\n transition,\n trigger,\n AnimationTriggerMetadata,\n} from '@angular/animations';\n\n/**\n * Animations used by the Material steppers.\n * @docs-private\n */\nexport const matStepperAnimations: {\n readonly horizontalStepTransition: AnimationTriggerMetadata;\n readonly verticalStepTransition: AnimationTriggerMetadata;\n} = {\n /** Animation that transitions the step along the X axis in a horizontal stepper. */\n horizontalStepTransition: trigger('stepTransition', [\n state('previous', style({transform: 'translate3d(-100%, 0, 0)', visibility: 'hidden'})),\n state('current', style({transform: 'none', visibility: 'visible'})),\n state('next', style({transform: 'translate3d(100%, 0, 0)', visibility: 'hidden'})),\n transition('* => *', animate('500ms cubic-bezier(0.35, 0, 0.25, 1)'))\n ]),\n\n /** Animation that transitions the step along the Y axis in a vertical stepper. */\n verticalStepTransition: trigger('stepTransition', [\n state('previous', style({height: '0px', visibility: 'hidden'})),\n state('next', style({height: '0px', visibility: 'hidden'})),\n state('current', style({height: '*', visibility: 'visible'})),\n transition('* <=> current', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)'))\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 {Directive, Input, TemplateRef} from '@angular/core';\nimport {StepState} from '@angular/cdk/stepper';\n\n/** Template context available to an attached `matStepperIcon`. */\nexport interface MatStepperIconContext {\n /** Index of the step. */\n index: number;\n /** Whether the step is currently active. */\n active: boolean;\n /** Whether the step is optional. */\n optional: boolean;\n}\n\n/**\n * Template to be used to override the icons inside the step header.\n */\n@Directive({\n selector: 'ng-template[matStepperIcon]',\n})\nexport class MatStepperIcon {\n /** Name of the icon to be overridden. */\n @Input('matStepperIcon') name: StepState;\n\n constructor(public templateRef: TemplateRef<MatStepperIconContext>) {}\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 {Directionality} from '@angular/cdk/bidi';\nimport {BooleanInput} from '@angular/cdk/coercion';\nimport {\n CdkStep,\n CdkStepper,\n StepContentPositionState,\n STEPPER_GLOBAL_OPTIONS,\n StepperOptions\n} from '@angular/cdk/stepper';\nimport {AnimationEvent} from '@angular/animations';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n Optional,\n Output,\n QueryList,\n SkipSelf,\n TemplateRef,\n ViewChildren,\n ViewEncapsulation,\n} from '@angular/core';\nimport {FormControl, FormGroupDirective, NgForm} from '@angular/forms';\nimport {DOCUMENT} from '@angular/common';\nimport {ErrorStateMatcher, ThemePalette} from '@angular/material/core';\nimport {Subject} from 'rxjs';\nimport {takeUntil, distinctUntilChanged} from 'rxjs/operators';\n\nimport {MatStepHeader} from './step-header';\nimport {MatStepLabel} from './step-label';\nimport {matStepperAnimations} from './stepper-animations';\nimport {MatStepperIcon, MatStepperIconContext} from './stepper-icon';\n\n@Component({\n selector: 'mat-step',\n templateUrl: 'step.html',\n providers: [\n {provide: ErrorStateMatcher, useExisting: MatStep},\n {provide: CdkStep, useExisting: MatStep},\n ],\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matStep',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatStep extends CdkStep implements ErrorStateMatcher {\n /** Content for step label given by `<ng-template matStepLabel>`. */\n @ContentChild(MatStepLabel) stepLabel: MatStepLabel;\n\n /** Theme color for the particular step. */\n @Input() color: ThemePalette;\n\n /** @breaking-change 8.0.0 remove the `?` after `stepperOptions` */\n constructor(@Inject(forwardRef(() => MatStepper)) stepper: MatStepper,\n @SkipSelf() private _errorStateMatcher: ErrorStateMatcher,\n @Optional() @Inject(STEPPER_GLOBAL_OPTIONS) stepperOptions?: StepperOptions) {\n super(stepper, stepperOptions);\n }\n\n /** Custom error state matcher that additionally checks for validity of interacted form. */\n isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {\n const originalErrorState = this._errorStateMatcher.isErrorState(control, form);\n\n // Custom error state checks for the validity of form that is not submitted or touched\n // since user can trigger a form change by calling for another step without directly\n // interacting with the current form.\n const customErrorState = !!(control && control.invalid && this.interacted);\n\n return originalErrorState || customErrorState;\n }\n}\n\n\n@Directive({selector: '[matStepper]', providers: [{provide: CdkStepper, useExisting: MatStepper}]})\nexport class MatStepper extends CdkStepper implements AfterContentInit {\n /** The list of step headers of the steps in the stepper. */\n @ViewChildren(MatStepHeader) _stepHeader: QueryList<MatStepHeader>;\n\n /** Full list of steps inside the stepper, including inside nested steppers. */\n @ContentChildren(MatStep, {descendants: true}) _steps: QueryList<MatStep>;\n\n /** Steps that belong to the current stepper, excluding ones from nested steppers. */\n readonly steps: QueryList<MatStep> = new QueryList<MatStep>();\n\n /** Custom icon overrides passed in by the consumer. */\n @ContentChildren(MatStepperIcon, {descendants: true}) _icons: QueryList<MatStepperIcon>;\n\n /** Event emitted when the current step is done transitioning in. */\n @Output() readonly animationDone: EventEmitter<void> = new EventEmitter<void>();\n\n /** Whether ripples should be disabled for the step headers. */\n @Input() disableRipple: boolean;\n\n /** Theme color for all of the steps in stepper. */\n @Input() color: ThemePalette;\n\n /** Consumer-specified template-refs to be used to override the header icons. */\n _iconOverrides: {[key: string]: TemplateRef<MatStepperIconContext>} = {};\n\n /** Stream of animation `done` events when the body expands/collapses. */\n _animationDone = new Subject<AnimationEvent>();\n\n ngAfterContentInit() {\n super.ngAfterContentInit();\n this._icons.forEach(({name, templateRef}) => this._iconOverrides[name] = templateRef);\n\n // Mark the component for change detection whenever the content children query changes\n this.steps.changes.pipe(takeUntil(this._destroyed)).subscribe(() => {\n this._stateChanged();\n });\n\n this._animationDone.pipe(\n // This needs a `distinctUntilChanged` in order to avoid emitting the same event twice due\n // to a bug in animations where the `.done` callback gets invoked twice on some browsers.\n // See https://github.com/angular/angular/issues/24084\n distinctUntilChanged((x, y) => x.fromState === y.fromState && x.toState === y.toState),\n takeUntil(this._destroyed)\n ).subscribe(event => {\n if ((event.toState as StepContentPositionState) === 'current') {\n this.animationDone.emit();\n }\n });\n }\n\n static ngAcceptInputType_editable: BooleanInput;\n static ngAcceptInputType_optional: BooleanInput;\n static ngAcceptInputType_completed: BooleanInput;\n static ngAcceptInputType_hasError: BooleanInput;\n}\n\n@Component({\n selector: 'mat-horizontal-stepper',\n exportAs: 'matHorizontalStepper',\n templateUrl: 'stepper-horizontal.html',\n styleUrls: ['stepper.css'],\n inputs: ['selectedIndex'],\n host: {\n 'class': 'mat-stepper-horizontal',\n '[class.mat-stepper-label-position-end]': 'labelPosition == \"end\"',\n '[class.mat-stepper-label-position-bottom]': 'labelPosition == \"bottom\"',\n 'aria-orientation': 'horizontal',\n 'role': 'tablist',\n },\n animations: [matStepperAnimations.horizontalStepTransition],\n providers: [\n {provide: MatStepper, useExisting: MatHorizontalStepper},\n {provide: CdkStepper, useExisting: MatHorizontalStepper}\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatHorizontalStepper extends MatStepper {\n /** Whether the label should display in bottom or end position. */\n @Input()\n labelPosition: 'bottom' | 'end' = 'end';\n\n static ngAcceptInputType_editable: BooleanInput;\n static ngAcceptInputType_optional: BooleanInput;\n static ngAcceptInputType_completed: BooleanInput;\n static ngAcceptInputType_hasError: BooleanInput;\n}\n\n@Component({\n selector: 'mat-vertical-stepper',\n exportAs: 'matVerticalStepper',\n templateUrl: 'stepper-vertical.html',\n styleUrls: ['stepper.css'],\n inputs: ['selectedIndex'],\n host: {\n 'class': 'mat-stepper-vertical',\n 'aria-orientation': 'vertical',\n 'role': 'tablist',\n },\n animations: [matStepperAnimations.verticalStepTransition],\n providers: [\n {provide: MatStepper, useExisting: MatVerticalStepper},\n {provide: CdkStepper, useExisting: MatVerticalStepper}\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatVerticalStepper extends MatStepper {\n constructor(\n @Optional() dir: Directionality,\n changeDetectorRef: ChangeDetectorRef,\n // @breaking-change 8.0.0 `elementRef` and `_document` parameters to become required.\n elementRef?: ElementRef<HTMLElement>,\n @Inject(DOCUMENT) _document?: any) {\n super(dir, changeDetectorRef, elementRef, _document);\n this._orientation = 'vertical';\n }\n\n static ngAcceptInputType_editable: BooleanInput;\n static ngAcceptInputType_optional: BooleanInput;\n static ngAcceptInputType_completed: BooleanInput;\n static ngAcceptInputType_hasError: BooleanInput;\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 {CdkStepperNext, CdkStepperPrevious} from '@angular/cdk/stepper';\nimport {Directive} from '@angular/core';\n\n/** Button that moves to the next step in a stepper workflow. */\n@Directive({\n selector: 'button[matStepperNext]',\n host: {\n 'class': 'mat-stepper-next',\n '[type]': 'type',\n },\n inputs: ['type']\n})\nexport class MatStepperNext extends CdkStepperNext {\n}\n\n/** Button that moves to the previous step in a stepper workflow. */\n@Directive({\n selector: 'button[matStepperPrevious]',\n host: {\n 'class': 'mat-stepper-previous',\n '[type]': 'type',\n },\n inputs: ['type']\n})\nexport class MatStepperPrevious extends CdkStepperPrevious {\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 {PortalModule} from '@angular/cdk/portal';\nimport {CdkStepperModule} from '@angular/cdk/stepper';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {MatButtonModule} from '@angular/material/button';\nimport {ErrorStateMatcher, MatCommonModule, MatRippleModule} from '@angular/material/core';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatStepHeader} from './step-header';\nimport {MatStepLabel} from './step-label';\nimport {MatHorizontalStepper, MatStep, MatStepper, MatVerticalStepper} from './stepper';\nimport {MatStepperNext, MatStepperPrevious} from './stepper-button';\nimport {MatStepperIcon} from './stepper-icon';\nimport {MAT_STEPPER_INTL_PROVIDER} from './stepper-intl';\n\n\n@NgModule({\n imports: [\n MatCommonModule,\n CommonModule,\n PortalModule,\n MatButtonModule,\n CdkStepperModule,\n MatIconModule,\n MatRippleModule,\n ],\n exports: [\n MatCommonModule,\n MatHorizontalStepper,\n MatVerticalStepper,\n MatStep,\n MatStepLabel,\n MatStepper,\n MatStepperNext,\n MatStepperPrevious,\n MatStepHeader,\n MatStepperIcon,\n ],\n declarations: [\n MatHorizontalStepper,\n MatVerticalStepper,\n MatStep,\n MatStepLabel,\n MatStepper,\n MatStepperNext,\n MatStepperPrevious,\n MatStepHeader,\n MatStepperIcon,\n ],\n providers: [MAT_STEPPER_INTL_PROVIDER, ErrorStateMatcher],\n})\nexport class MatStepperModule {}\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\nexport * from './stepper-module';\nexport * from './step-label';\nexport * from './stepper';\nexport * from './stepper-button';\nexport * from './step-header';\nexport * from './stepper-intl';\nexport * from './stepper-animations';\nexport * from './stepper-icon';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;AAAA;;;;;;;AAQA,MAMa,YAAa,SAAQ,YAAY;;;YAH7C,SAAS,SAAC;gBACT,QAAQ,EAAE,gBAAgB;aAC3B;;;ACbD;;;;;;;AAQA,AAIA;AAEA,MAAa,cAAc;IAD3B;;;;;QAMW,YAAO,GAAkB,IAAI,OAAO,EAAQ,CAAC;;QAGtD,kBAAa,GAAW,UAAU,CAAC;KACpC;;;;YAVA,UAAU,SAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;;AAchC,SAAgB,iCAAiC,CAAC,UAA0B;IAC1E,OAAO,UAAU,IAAI,IAAI,cAAc,EAAE,CAAC;CAC3C;;AAGD,MAAa,yBAAyB,GAAG;IACvC,OAAO,EAAE,cAAc;IACvB,IAAI,EAAE,CAAC,CAAC,IAAI,QAAQ,EAAE,EAAE,IAAI,QAAQ,EAAE,EAAE,cAAc,CAAC,CAAC;IACxD,UAAU,EAAE,iCAAiC;CAC9C;;ACpCD;;;;;;;AAQA,AAoBA;;AAEA,MAAM,iBAAkB,SAAQ,aAAa;IAC3C,YAAY,UAAsB;QAChC,KAAK,CAAC,UAAU,CAAC,CAAC;KACnB;CACF;AAED,MAAM,uBAAuB,GACzB,UAAU,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC;AAc7C,MAAa,aAAc,SAAQ,uBAAuB;IA+BxD,YACS,KAAqB,EACpB,aAA2B,EACnC,WAAoC,EACpC,iBAAoC;QACpC,KAAK,CAAC,WAAW,CAAC,CAAC;QAJZ,UAAK,GAAL,KAAK,CAAgB;QACpB,kBAAa,GAAb,aAAa,CAAc;QAInC,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,iBAAiB,CAAC,YAAY,EAAE,CAAC,CAAC;KAC1F;IAED,eAAe;QACb,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;KACpD;IAED,WAAW;QACT,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC;QACrC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACrD;;IAGD,KAAK;QACH,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;KAC1D;;IAGD,YAAY;QACV,OAAO,IAAI,CAAC,KAAK,YAAY,YAAY,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;KAC/D;;IAGD,cAAc;QACZ,OAAO,IAAI,CAAC,KAAK,YAAY,YAAY,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;KAC/D;;IAGD,eAAe;QACb,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;KACvC;;IAGD,eAAe;QACb,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC;KACH;IAED,uBAAuB,CAAC,KAAgB;QACtC,IAAI,KAAK,IAAI,QAAQ,EAAE;YACrB,OAAO,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;SAC5B;QACD,IAAI,KAAK,IAAI,MAAM,EAAE;YACnB,OAAO,QAAQ,CAAC;SACjB;QACD,IAAI,KAAK,IAAI,OAAO,EAAE;YACpB,OAAO,SAAS,CAAC;SAClB;QACD,OAAO,KAAK,CAAC;KACd;;;YArGF,SAAS,SAAC;gBACT,QAAQ,EAAE,iBAAiB;gBAC3B,ghDAA+B;gBAE/B,MAAM,EAAE,CAAC,OAAO,CAAC;gBACjB,IAAI,EAAE;oBACJ,OAAO,EAAE,qCAAqC;oBAC9C,MAAM,EAAE,KAAK;iBACd;gBACD,aAAa,EAAE,iBAAiB,CAAC,IAAI;gBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;;aAChD;;;YA5BO,cAAc;YAdd,YAAY;YAKlB,UAAU;YAFV,iBAAiB;;;oBA6ChB,KAAK;oBAGL,KAAK;2BAGL,KAAK;4BAGL,KAAK;oBAGL,KAAK;uBAGL,KAAK;qBAGL,KAAK;uBAGL,KAAK;4BAGL,KAAK;;;AChFR;;;;;;;AAOA,AASA;;;;AAIA,MAAa,oBAAoB,GAG7B;;IAEF,wBAAwB,EAAE,OAAO,CAAC,gBAAgB,EAAE;QAClD,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,EAAC,SAAS,EAAE,0BAA0B,EAAE,UAAU,EAAE,QAAQ,EAAC,CAAC,CAAC;QACvF,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,EAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAC,CAAC,CAAC;QACnE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAC,SAAS,EAAE,yBAAyB,EAAE,UAAU,EAAE,QAAQ,EAAC,CAAC,CAAC;QAClF,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,sCAAsC,CAAC,CAAC;KACtE,CAAC;;IAGF,sBAAsB,EAAE,OAAO,CAAC,gBAAgB,EAAE;QAChD,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,EAAC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAC,CAAC,CAAC;QAC/D,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAC,CAAC,CAAC;QAC3D,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,EAAC,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAC,CAAC,CAAC;QAC7D,UAAU,CAAC,eAAe,EAAE,OAAO,CAAC,sCAAsC,CAAC,CAAC;KAC7E,CAAC;CACH;;ACvCD;;;;;;;AAQA,AAaA;;;AAMA,MAAa,cAAc;IAIzB,YAAmB,WAA+C;QAA/C,gBAAW,GAAX,WAAW,CAAoC;KAAI;;;YAPvE,SAAS,SAAC;gBACT,QAAQ,EAAE,6BAA6B;aACxC;;;YAlByB,WAAW;;;mBAqBlC,KAAK,SAAC,gBAAgB;;;AC7BzB;;;;;;;AAQA,MAqDa,OAAQ,SAAQ,OAAO;;IAQlC,YAAkD,OAAmB,EACrC,kBAAqC,EACb,cAA+B;QACrF,KAAK,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAFD,uBAAkB,GAAlB,kBAAkB,CAAmB;KAGpE;;IAGD,YAAY,CAAC,OAA2B,EAAE,IAAwC;QAChF,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;;;;QAK/E,MAAM,gBAAgB,GAAG,CAAC,EAAE,OAAO,IAAI,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;QAE3E,OAAO,kBAAkB,IAAI,gBAAgB,CAAC;KAC/C;;;YAnCF,SAAS,SAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,kEAAwB;gBACxB,SAAS,EAAE;oBACT,EAAC,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,OAAO,EAAC;oBAClD,EAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAC;iBACzC;gBACD,aAAa,EAAE,iBAAiB,CAAC,IAAI;gBACrC,QAAQ,EAAE,SAAS;gBACnB,eAAe,EAAE,uBAAuB,CAAC,MAAM;aAChD;;;YAS4D,UAAU,uBAAxD,MAAM,SAAC,UAAU,CAAC,MAAM,UAAU,CAAC;YA5B1C,iBAAiB,uBA6BV,QAAQ;4CACR,QAAQ,YAAI,MAAM,SAAC,sBAAsB;;;wBARrD,YAAY,SAAC,YAAY;oBAGzB,KAAK;;AAwBR,MAAa,UAAW,SAAQ,UAAU;IAD1C;;;QASW,UAAK,GAAuB,IAAI,SAAS,EAAW,CAAC;;QAM3C,kBAAa,GAAuB,IAAI,YAAY,EAAQ,CAAC;;QAShF,mBAAc,GAAwD,EAAE,CAAC;;QAGzE,mBAAc,GAAG,IAAI,OAAO,EAAkB,CAAC;KA4BhD;IA1BC,kBAAkB;QAChB,KAAK,CAAC,kBAAkB,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAC,IAAI,EAAE,WAAW,EAAC,KAAK,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;;QAGtF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;YAC5D,IAAI,CAAC,aAAa,EAAE,CAAC;SACtB,CAAC,CAAC;QAEH,IAAI,CAAC,cAAc,CAAC,IAAI;;;;QAItB,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,CAAC,EACtF,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B,CAAC,SAAS,CAAC,KAAK;YACf,IAAK,KAAK,CAAC,OAAoC,KAAK,SAAS,EAAE;gBAC7D,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;aAC3B;SACF,CAAC,CAAC;KACJ;;;YAjDF,SAAS,SAAC,EAAC,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,EAAC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAC,CAAC,EAAC;;;0BAG/F,YAAY,SAAC,aAAa;qBAG1B,eAAe,SAAC,OAAO,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC;qBAM5C,eAAe,SAAC,cAAc,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC;4BAGnD,MAAM;4BAGN,KAAK;oBAGL,KAAK;;AAyDR,MAAa,oBAAqB,SAAQ,UAAU;IArBpD;;;QAwBE,kBAAa,GAAqB,KAAK,CAAC;KAMzC;;;YA9BA,SAAS,SAAC;gBACT,QAAQ,EAAE,wBAAwB;gBAClC,QAAQ,EAAE,sBAAsB;gBAChC,ojEAAsC;gBAEtC,MAAM,EAAE,CAAC,eAAe,CAAC;gBACzB,IAAI,EAAE;oBACJ,OAAO,EAAE,wBAAwB;oBACjC,wCAAwC,EAAE,wBAAwB;oBAClE,2CAA2C,EAAE,2BAA2B;oBACxE,kBAAkB,EAAE,YAAY;oBAChC,MAAM,EAAE,SAAS;iBAClB;gBACD,UAAU,EAAE,CAAC,oBAAoB,CAAC,wBAAwB,CAAC;gBAC3D,SAAS,EAAE;oBACT,EAAC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,oBAAoB,EAAC;oBACxD,EAAC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,oBAAoB,EAAC;iBACzD;gBACD,aAAa,EAAE,iBAAiB,CAAC,IAAI;gBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;;aAChD;;;4BAGE,KAAK;;AA4BR,MAAa,kBAAmB,SAAQ,UAAU;IAChD,YACc,GAAmB,EAC/B,iBAAoC;;IAEpC,UAAoC,EAClB,SAAe;QACjC,KAAK,CAAC,GAAG,EAAE,iBAAiB,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;QACrD,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC;KAChC;;;YA5BF,SAAS,SAAC;gBACT,QAAQ,EAAE,sBAAsB;gBAChC,QAAQ,EAAE,oBAAoB;gBAC9B,+7DAAoC;gBAEpC,MAAM,EAAE,CAAC,eAAe,CAAC;gBACzB,IAAI,EAAE;oBACJ,OAAO,EAAE,sBAAsB;oBAC/B,kBAAkB,EAAE,UAAU;oBAC9B,MAAM,EAAE,SAAS;iBAClB;gBACD,UAAU,EAAE,CAAC,oBAAoB,CAAC,sBAAsB,CAAC;gBACzD,SAAS,EAAE;oBACT,EAAC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAC;oBACtD,EAAC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAC;iBACvD;gBACD,aAAa,EAAE,iBAAiB,CAAC,IAAI;gBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;;aAChD;;;YA5LO,cAAc,uBA+LjB,QAAQ;YAlLX,iBAAiB;YAKjB,UAAU;4CAiLP,MAAM,SAAC,QAAQ;;;AC3MpB;;;;;;;AAQA,AAGA;AASA,MAAa,cAAe,SAAQ,cAAc;;;YARjD,SAAS,SAAC;gBACT,QAAQ,EAAE,wBAAwB;gBAClC,IAAI,EAAE;oBACJ,OAAO,EAAE,kBAAkB;oBAC3B,QAAQ,EAAE,MAAM;iBACjB;gBACD,MAAM,EAAE,CAAC,MAAM,CAAC;aACjB;;;AAaD,MAAa,kBAAmB,SAAQ,kBAAkB;;;YARzD,SAAS,SAAC;gBACT,QAAQ,EAAE,4BAA4B;gBACtC,IAAI,EAAE;oBACJ,OAAO,EAAE,sBAAsB;oBAC/B,QAAQ,EAAE,MAAM;iBACjB;gBACD,MAAM,EAAE,CAAC,MAAM,CAAC;aACjB;;;AC/BD;;;;;;;AAQA,MAkDa,gBAAgB;;;YAnC5B,QAAQ,SAAC;gBACR,OAAO,EAAE;oBACP,eAAe;oBACf,YAAY;oBACZ,YAAY;oBACZ,eAAe;oBACf,gBAAgB;oBAChB,aAAa;oBACb,eAAe;iBAChB;gBACD,OAAO,EAAE;oBACP,eAAe;oBACf,oBAAoB;oBACpB,kBAAkB;oBAClB,OAAO;oBACP,YAAY;oBACZ,UAAU;oBACV,cAAc;oBACd,kBAAkB;oBAClB,aAAa;oBACb,cAAc;iBACf;gBACD,YAAY,EAAE;oBACZ,oBAAoB;oBACpB,kBAAkB;oBAClB,OAAO;oBACP,YAAY;oBACZ,UAAU;oBACV,cAAc;oBACd,kBAAkB;oBAClB,aAAa;oBACb,cAAc;iBACf;gBACD,SAAS,EAAE,CAAC,yBAAyB,EAAE,iBAAiB,CAAC;aAC1D;;;ACzDD;;;;;;GAMG;;ACNH;;GAEG;;;;"}
1
+ {"version":3,"file":"stepper.js","sources":["../../../../../../src/material/stepper/step-label.ts","../../../../../../src/material/stepper/stepper-intl.ts","../../../../../../src/material/stepper/step-header.ts","../../../../../../src/material/stepper/stepper-animations.ts","../../../../../../src/material/stepper/stepper-icon.ts","../../../../../../src/material/stepper/stepper.ts","../../../../../../src/material/stepper/stepper-button.ts","../../../../../../src/material/stepper/stepper-module.ts","../../../../../../src/material/stepper/public-api.ts","../../../../../../src/material/stepper/index.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 {Directive} from '@angular/core';\nimport {CdkStepLabel} from '@angular/cdk/stepper';\n\n@Directive({\n selector: '[matStepLabel]',\n})\nexport class MatStepLabel extends CdkStepLabel {}\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 {Injectable, Optional, SkipSelf} from '@angular/core';\nimport {Subject} from 'rxjs';\n\n\n/** Stepper data that is required for internationalization. */\n@Injectable({providedIn: 'root'})\nexport class MatStepperIntl {\n /**\n * Stream that emits whenever the labels here are changed. Use this to notify\n * components if the labels have changed after initialization.\n */\n readonly changes: Subject<void> = new Subject<void>();\n\n /** Label that is rendered below optional steps. */\n optionalLabel: string = 'Optional';\n}\n\n\n/** @docs-private */\nexport function MAT_STEPPER_INTL_PROVIDER_FACTORY(parentIntl: MatStepperIntl) {\n return parentIntl || new MatStepperIntl();\n}\n\n/** @docs-private */\nexport const MAT_STEPPER_INTL_PROVIDER = {\n provide: MatStepperIntl,\n deps: [[new Optional(), new SkipSelf(), MatStepperIntl]],\n useFactory: MAT_STEPPER_INTL_PROVIDER_FACTORY\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 {FocusMonitor, FocusOrigin} from '@angular/cdk/a11y';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n ViewEncapsulation,\n TemplateRef,\n AfterViewInit,\n} from '@angular/core';\nimport {Subscription} from 'rxjs';\nimport {MatStepLabel} from './step-label';\nimport {MatStepperIntl} from './stepper-intl';\nimport {MatStepperIconContext} from './stepper-icon';\nimport {CdkStepHeader, StepState} from '@angular/cdk/stepper';\nimport {CanColorCtor, mixinColor, CanColor} from '@angular/material/core';\n\n\n// Boilerplate for applying mixins to MatStepHeader.\n/** @docs-private */\nclass MatStepHeaderBase extends CdkStepHeader {\n constructor(elementRef: ElementRef) {\n super(elementRef);\n }\n}\n\nconst _MatStepHeaderMixinBase: CanColorCtor & typeof MatStepHeaderBase =\n mixinColor(MatStepHeaderBase, 'primary');\n\n@Component({\n selector: 'mat-step-header',\n templateUrl: 'step-header.html',\n styleUrls: ['step-header.css'],\n inputs: ['color'],\n host: {\n 'class': 'mat-step-header mat-focus-indicator',\n 'role': 'tab',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatStepHeader extends _MatStepHeaderMixinBase implements AfterViewInit, OnDestroy,\n CanColor {\n private _intlSubscription: Subscription;\n\n /** State of the given step. */\n @Input() state: StepState;\n\n /** Label of the given step. */\n @Input() label: MatStepLabel | string;\n\n /** Error message to display when there's an error. */\n @Input() errorMessage: string;\n\n /** Overrides for the header icons, passed in via the stepper. */\n @Input() iconOverrides: {[key: string]: TemplateRef<MatStepperIconContext>};\n\n /** Index of the given step. */\n @Input() index: number;\n\n /** Whether the given step is selected. */\n @Input() selected: boolean;\n\n /** Whether the given step label is active. */\n @Input() active: boolean;\n\n /** Whether the given step is optional. */\n @Input() optional: boolean;\n\n /** Whether the ripple should be disabled. */\n @Input() disableRipple: boolean;\n\n constructor(\n public _intl: MatStepperIntl,\n private _focusMonitor: FocusMonitor,\n _elementRef: ElementRef<HTMLElement>,\n changeDetectorRef: ChangeDetectorRef) {\n super(_elementRef);\n this._intlSubscription = _intl.changes.subscribe(() => changeDetectorRef.markForCheck());\n }\n\n ngAfterViewInit() {\n this._focusMonitor.monitor(this._elementRef, true);\n }\n\n ngOnDestroy() {\n this._intlSubscription.unsubscribe();\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n\n /** Focuses the step header. */\n focus(origin?: FocusOrigin, options?: FocusOptions) {\n if (origin) {\n this._focusMonitor.focusVia(this._elementRef, origin, options);\n } else {\n this._elementRef.nativeElement.focus(options);\n }\n }\n\n /** Returns string label of given step if it is a text label. */\n _stringLabel(): string | null {\n return this.label instanceof MatStepLabel ? null : this.label;\n }\n\n /** Returns MatStepLabel if the label of given step is a template label. */\n _templateLabel(): MatStepLabel | null {\n return this.label instanceof MatStepLabel ? this.label : null;\n }\n\n /** Returns the host HTML element. */\n _getHostElement() {\n return this._elementRef.nativeElement;\n }\n\n /** Template context variables that are exposed to the `matStepperIcon` instances. */\n _getIconContext(): MatStepperIconContext {\n return {\n index: this.index,\n active: this.active,\n optional: this.optional\n };\n }\n\n _getDefaultTextForState(state: StepState): string {\n if (state == 'number') {\n return `${this.index + 1}`;\n }\n if (state == 'edit') {\n return 'create';\n }\n if (state == 'error') {\n return 'warning';\n }\n return state;\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 */\nimport {\n animate,\n state,\n style,\n transition,\n trigger,\n AnimationTriggerMetadata,\n} from '@angular/animations';\n\n/**\n * Animations used by the Material steppers.\n * @docs-private\n */\nexport const matStepperAnimations: {\n readonly horizontalStepTransition: AnimationTriggerMetadata;\n readonly verticalStepTransition: AnimationTriggerMetadata;\n} = {\n /** Animation that transitions the step along the X axis in a horizontal stepper. */\n horizontalStepTransition: trigger('stepTransition', [\n state('previous', style({transform: 'translate3d(-100%, 0, 0)', visibility: 'hidden'})),\n state('current', style({transform: 'none', visibility: 'visible'})),\n state('next', style({transform: 'translate3d(100%, 0, 0)', visibility: 'hidden'})),\n transition('* => *', animate('500ms cubic-bezier(0.35, 0, 0.25, 1)'))\n ]),\n\n /** Animation that transitions the step along the Y axis in a vertical stepper. */\n verticalStepTransition: trigger('stepTransition', [\n state('previous', style({height: '0px', visibility: 'hidden'})),\n state('next', style({height: '0px', visibility: 'hidden'})),\n state('current', style({height: '*', visibility: 'visible'})),\n transition('* <=> current', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)'))\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 {Directive, Input, TemplateRef} from '@angular/core';\nimport {StepState} from '@angular/cdk/stepper';\n\n/** Template context available to an attached `matStepperIcon`. */\nexport interface MatStepperIconContext {\n /** Index of the step. */\n index: number;\n /** Whether the step is currently active. */\n active: boolean;\n /** Whether the step is optional. */\n optional: boolean;\n}\n\n/**\n * Template to be used to override the icons inside the step header.\n */\n@Directive({\n selector: 'ng-template[matStepperIcon]',\n})\nexport class MatStepperIcon {\n /** Name of the icon to be overridden. */\n @Input('matStepperIcon') name: StepState;\n\n constructor(public templateRef: TemplateRef<MatStepperIconContext>) {}\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 {Directionality} from '@angular/cdk/bidi';\nimport {BooleanInput} from '@angular/cdk/coercion';\nimport {\n CdkStep,\n CdkStepper,\n StepContentPositionState,\n STEPPER_GLOBAL_OPTIONS,\n StepperOptions\n} from '@angular/cdk/stepper';\nimport {AnimationEvent} from '@angular/animations';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n Optional,\n Output,\n QueryList,\n SkipSelf,\n TemplateRef,\n ViewChildren,\n ViewEncapsulation,\n} from '@angular/core';\nimport {FormControl, FormGroupDirective, NgForm} from '@angular/forms';\nimport {DOCUMENT} from '@angular/common';\nimport {ErrorStateMatcher, ThemePalette} from '@angular/material/core';\nimport {Subject} from 'rxjs';\nimport {takeUntil, distinctUntilChanged} from 'rxjs/operators';\n\nimport {MatStepHeader} from './step-header';\nimport {MatStepLabel} from './step-label';\nimport {matStepperAnimations} from './stepper-animations';\nimport {MatStepperIcon, MatStepperIconContext} from './stepper-icon';\n\n@Component({\n selector: 'mat-step',\n templateUrl: 'step.html',\n providers: [\n {provide: ErrorStateMatcher, useExisting: MatStep},\n {provide: CdkStep, useExisting: MatStep},\n ],\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matStep',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatStep extends CdkStep implements ErrorStateMatcher {\n /** Content for step label given by `<ng-template matStepLabel>`. */\n @ContentChild(MatStepLabel) stepLabel: MatStepLabel;\n\n /** Theme color for the particular step. */\n @Input() color: ThemePalette;\n\n /** @breaking-change 8.0.0 remove the `?` after `stepperOptions` */\n constructor(@Inject(forwardRef(() => MatStepper)) stepper: MatStepper,\n @SkipSelf() private _errorStateMatcher: ErrorStateMatcher,\n @Optional() @Inject(STEPPER_GLOBAL_OPTIONS) stepperOptions?: StepperOptions) {\n super(stepper, stepperOptions);\n }\n\n /** Custom error state matcher that additionally checks for validity of interacted form. */\n isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {\n const originalErrorState = this._errorStateMatcher.isErrorState(control, form);\n\n // Custom error state checks for the validity of form that is not submitted or touched\n // since user can trigger a form change by calling for another step without directly\n // interacting with the current form.\n const customErrorState = !!(control && control.invalid && this.interacted);\n\n return originalErrorState || customErrorState;\n }\n}\n\n\n@Directive({selector: '[matStepper]', providers: [{provide: CdkStepper, useExisting: MatStepper}]})\nexport class MatStepper extends CdkStepper implements AfterContentInit {\n /** The list of step headers of the steps in the stepper. */\n @ViewChildren(MatStepHeader) _stepHeader: QueryList<MatStepHeader>;\n\n /** Full list of steps inside the stepper, including inside nested steppers. */\n @ContentChildren(MatStep, {descendants: true}) _steps: QueryList<MatStep>;\n\n /** Steps that belong to the current stepper, excluding ones from nested steppers. */\n readonly steps: QueryList<MatStep> = new QueryList<MatStep>();\n\n /** Custom icon overrides passed in by the consumer. */\n @ContentChildren(MatStepperIcon, {descendants: true}) _icons: QueryList<MatStepperIcon>;\n\n /** Event emitted when the current step is done transitioning in. */\n @Output() readonly animationDone: EventEmitter<void> = new EventEmitter<void>();\n\n /** Whether ripples should be disabled for the step headers. */\n @Input() disableRipple: boolean;\n\n /** Theme color for all of the steps in stepper. */\n @Input() color: ThemePalette;\n\n /** Consumer-specified template-refs to be used to override the header icons. */\n _iconOverrides: {[key: string]: TemplateRef<MatStepperIconContext>} = {};\n\n /** Stream of animation `done` events when the body expands/collapses. */\n _animationDone = new Subject<AnimationEvent>();\n\n ngAfterContentInit() {\n super.ngAfterContentInit();\n this._icons.forEach(({name, templateRef}) => this._iconOverrides[name] = templateRef);\n\n // Mark the component for change detection whenever the content children query changes\n this.steps.changes.pipe(takeUntil(this._destroyed)).subscribe(() => {\n this._stateChanged();\n });\n\n this._animationDone.pipe(\n // This needs a `distinctUntilChanged` in order to avoid emitting the same event twice due\n // to a bug in animations where the `.done` callback gets invoked twice on some browsers.\n // See https://github.com/angular/angular/issues/24084\n distinctUntilChanged((x, y) => x.fromState === y.fromState && x.toState === y.toState),\n takeUntil(this._destroyed)\n ).subscribe(event => {\n if ((event.toState as StepContentPositionState) === 'current') {\n this.animationDone.emit();\n }\n });\n }\n\n static ngAcceptInputType_editable: BooleanInput;\n static ngAcceptInputType_optional: BooleanInput;\n static ngAcceptInputType_completed: BooleanInput;\n static ngAcceptInputType_hasError: BooleanInput;\n}\n\n@Component({\n selector: 'mat-horizontal-stepper',\n exportAs: 'matHorizontalStepper',\n templateUrl: 'stepper-horizontal.html',\n styleUrls: ['stepper.css'],\n inputs: ['selectedIndex'],\n host: {\n 'class': 'mat-stepper-horizontal',\n '[class.mat-stepper-label-position-end]': 'labelPosition == \"end\"',\n '[class.mat-stepper-label-position-bottom]': 'labelPosition == \"bottom\"',\n 'aria-orientation': 'horizontal',\n 'role': 'tablist',\n },\n animations: [matStepperAnimations.horizontalStepTransition],\n providers: [\n {provide: MatStepper, useExisting: MatHorizontalStepper},\n {provide: CdkStepper, useExisting: MatHorizontalStepper}\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatHorizontalStepper extends MatStepper {\n /** Whether the label should display in bottom or end position. */\n @Input()\n labelPosition: 'bottom' | 'end' = 'end';\n\n static ngAcceptInputType_editable: BooleanInput;\n static ngAcceptInputType_optional: BooleanInput;\n static ngAcceptInputType_completed: BooleanInput;\n static ngAcceptInputType_hasError: BooleanInput;\n}\n\n@Component({\n selector: 'mat-vertical-stepper',\n exportAs: 'matVerticalStepper',\n templateUrl: 'stepper-vertical.html',\n styleUrls: ['stepper.css'],\n inputs: ['selectedIndex'],\n host: {\n 'class': 'mat-stepper-vertical',\n 'aria-orientation': 'vertical',\n 'role': 'tablist',\n },\n animations: [matStepperAnimations.verticalStepTransition],\n providers: [\n {provide: MatStepper, useExisting: MatVerticalStepper},\n {provide: CdkStepper, useExisting: MatVerticalStepper}\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatVerticalStepper extends MatStepper {\n constructor(\n @Optional() dir: Directionality,\n changeDetectorRef: ChangeDetectorRef,\n // @breaking-change 8.0.0 `elementRef` and `_document` parameters to become required.\n elementRef?: ElementRef<HTMLElement>,\n @Inject(DOCUMENT) _document?: any) {\n super(dir, changeDetectorRef, elementRef, _document);\n this._orientation = 'vertical';\n }\n\n static ngAcceptInputType_editable: BooleanInput;\n static ngAcceptInputType_optional: BooleanInput;\n static ngAcceptInputType_completed: BooleanInput;\n static ngAcceptInputType_hasError: BooleanInput;\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 {CdkStepperNext, CdkStepperPrevious} from '@angular/cdk/stepper';\nimport {Directive} from '@angular/core';\n\n/** Button that moves to the next step in a stepper workflow. */\n@Directive({\n selector: 'button[matStepperNext]',\n host: {\n 'class': 'mat-stepper-next',\n '[type]': 'type',\n },\n inputs: ['type']\n})\nexport class MatStepperNext extends CdkStepperNext {\n}\n\n/** Button that moves to the previous step in a stepper workflow. */\n@Directive({\n selector: 'button[matStepperPrevious]',\n host: {\n 'class': 'mat-stepper-previous',\n '[type]': 'type',\n },\n inputs: ['type']\n})\nexport class MatStepperPrevious extends CdkStepperPrevious {\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 {PortalModule} from '@angular/cdk/portal';\nimport {CdkStepperModule} from '@angular/cdk/stepper';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {MatButtonModule} from '@angular/material/button';\nimport {ErrorStateMatcher, MatCommonModule, MatRippleModule} from '@angular/material/core';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatStepHeader} from './step-header';\nimport {MatStepLabel} from './step-label';\nimport {MatHorizontalStepper, MatStep, MatStepper, MatVerticalStepper} from './stepper';\nimport {MatStepperNext, MatStepperPrevious} from './stepper-button';\nimport {MatStepperIcon} from './stepper-icon';\nimport {MAT_STEPPER_INTL_PROVIDER} from './stepper-intl';\n\n\n@NgModule({\n imports: [\n MatCommonModule,\n CommonModule,\n PortalModule,\n MatButtonModule,\n CdkStepperModule,\n MatIconModule,\n MatRippleModule,\n ],\n exports: [\n MatCommonModule,\n MatHorizontalStepper,\n MatVerticalStepper,\n MatStep,\n MatStepLabel,\n MatStepper,\n MatStepperNext,\n MatStepperPrevious,\n MatStepHeader,\n MatStepperIcon,\n ],\n declarations: [\n MatHorizontalStepper,\n MatVerticalStepper,\n MatStep,\n MatStepLabel,\n MatStepper,\n MatStepperNext,\n MatStepperPrevious,\n MatStepHeader,\n MatStepperIcon,\n ],\n providers: [MAT_STEPPER_INTL_PROVIDER, ErrorStateMatcher],\n})\nexport class MatStepperModule {}\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\nexport * from './stepper-module';\nexport * from './step-label';\nexport * from './stepper';\nexport * from './stepper-button';\nexport * from './step-header';\nexport * from './stepper-intl';\nexport * from './stepper-animations';\nexport * from './stepper-icon';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { __awaiter } from 'tslib';
2
- import { ComponentHarness, HarnessPredicate, ContentContainerComponentHarness } from '@angular/cdk/testing';
2
+ import { ContentContainerComponentHarness, HarnessPredicate, ComponentHarness, parallel } from '@angular/cdk/testing';
3
3
 
4
4
  /**
5
5
  * @license
@@ -9,7 +9,7 @@ import { ComponentHarness, HarnessPredicate, ContentContainerComponentHarness }
9
9
  * found in the LICENSE file at https://angular.io/license
10
10
  */
11
11
  /** Harness for interacting with a standard Angular Material table cell. */
12
- class MatCellHarness extends ComponentHarness {
12
+ class MatCellHarness extends ContentContainerComponentHarness {
13
13
  /**
14
14
  * Gets a `HarnessPredicate` that can be used to search for a table cell with specific attributes.
15
15
  * @param options Options for narrowing the search
@@ -181,15 +181,15 @@ MatFooterRowHarness.hostSelector = '.mat-footer-row';
181
181
  function getCellTextByIndex(harness, filter) {
182
182
  return __awaiter(this, void 0, void 0, function* () {
183
183
  const cells = yield harness.getCells(filter);
184
- return Promise.all(cells.map(cell => cell.getText()));
184
+ return parallel(() => cells.map(cell => cell.getText()));
185
185
  });
186
186
  }
187
187
  function getCellTextByColumnName(harness) {
188
188
  return __awaiter(this, void 0, void 0, function* () {
189
189
  const output = {};
190
190
  const cells = yield harness.getCells();
191
- const cellsData = yield Promise.all(cells.map(cell => {
192
- return Promise.all([cell.getColumnName(), cell.getText()]);
191
+ const cellsData = yield parallel(() => cells.map(cell => {
192
+ return parallel(() => [cell.getColumnName(), cell.getText()]);
193
193
  }));
194
194
  cellsData.forEach(([columnName, text]) => output[columnName] = text);
195
195
  return output;
@@ -235,22 +235,22 @@ class MatTableHarness extends ContentContainerComponentHarness {
235
235
  getCellTextByIndex() {
236
236
  return __awaiter(this, void 0, void 0, function* () {
237
237
  const rows = yield this.getRows();
238
- return Promise.all(rows.map(row => row.getCellTextByIndex()));
238
+ return parallel(() => rows.map(row => row.getCellTextByIndex()));
239
239
  });
240
240
  }
241
241
  /** Gets the text inside the entire table organized by columns. */
242
242
  getCellTextByColumnName() {
243
243
  return __awaiter(this, void 0, void 0, function* () {
244
- const [headerRows, footerRows, dataRows] = yield Promise.all([
244
+ const [headerRows, footerRows, dataRows] = yield parallel(() => [
245
245
  this.getHeaderRows(),
246
246
  this.getFooterRows(),
247
247
  this.getRows()
248
248
  ]);
249
249
  const text = {};
250
- const [headerData, footerData, rowsData] = yield Promise.all([
251
- Promise.all(headerRows.map(row => row.getCellTextByColumnName())),
252
- Promise.all(footerRows.map(row => row.getCellTextByColumnName())),
253
- Promise.all(dataRows.map(row => row.getCellTextByColumnName())),
250
+ const [headerData, footerData, rowsData] = yield parallel(() => [
251
+ parallel(() => headerRows.map(row => row.getCellTextByColumnName())),
252
+ parallel(() => footerRows.map(row => row.getCellTextByColumnName())),
253
+ parallel(() => dataRows.map(row => row.getCellTextByColumnName())),
254
254
  ]);
255
255
  rowsData.forEach(data => {
256
256
  Object.keys(data).forEach(columnName => {
@@ -1 +1 @@
1
- {"version":3,"file":"table__testing.js","sources":["../../../../../../src/material/table/testing/cell-harness.ts","../../../../../../src/material/table/testing/row-harness.ts","../../../../../../src/material/table/testing/table-harness.ts","../../../../../../src/material/table/testing/public-api.ts","../../../../../../src/material/table/testing/index.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 {\n ComponentHarness,\n HarnessPredicate,\n ComponentHarnessConstructor,\n} from '@angular/cdk/testing';\nimport {CellHarnessFilters} from './table-harness-filters';\n\n/** Harness for interacting with a standard Angular Material table cell. */\nexport class MatCellHarness extends ComponentHarness {\n /** The selector for the host element of a `MatCellHarness` instance. */\n static hostSelector = '.mat-cell';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a table cell with specific attributes.\n * @param options Options for narrowing the search\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: CellHarnessFilters = {}): HarnessPredicate<MatCellHarness> {\n return getCellPredicate(MatCellHarness, options);\n }\n\n /** Gets the cell's text. */\n async getText(): Promise<string> {\n return (await this.host()).text();\n }\n\n /** Gets the name of the column that the cell belongs to. */\n async getColumnName(): Promise<string> {\n const host = await this.host();\n const classAttribute = await host.getAttribute('class');\n\n if (classAttribute) {\n const prefix = 'mat-column-';\n const name = classAttribute.split(' ').map(c => c.trim()).find(c => c.startsWith(prefix));\n\n if (name) {\n return name.split(prefix)[1];\n }\n }\n\n throw Error('Could not determine column name of cell.');\n }\n}\n\n/** Harness for interacting with a standard Angular Material table header cell. */\nexport class MatHeaderCellHarness extends MatCellHarness {\n /** The selector for the host element of a `MatHeaderCellHarness` instance. */\n static hostSelector = '.mat-header-cell';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for\n * a table header cell with specific attributes.\n * @param options Options for narrowing the search\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: CellHarnessFilters = {}): HarnessPredicate<MatHeaderCellHarness> {\n return getCellPredicate(MatHeaderCellHarness, options);\n }\n}\n\n/** Harness for interacting with a standard Angular Material table footer cell. */\nexport class MatFooterCellHarness extends MatCellHarness {\n /** The selector for the host element of a `MatFooterCellHarness` instance. */\n static hostSelector = '.mat-footer-cell';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for\n * a table footer cell with specific attributes.\n * @param options Options for narrowing the search\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: CellHarnessFilters = {}): HarnessPredicate<MatFooterCellHarness> {\n return getCellPredicate(MatFooterCellHarness, options);\n }\n}\n\n\nfunction getCellPredicate<T extends MatCellHarness>(\n type: ComponentHarnessConstructor<T>,\n options: CellHarnessFilters): HarnessPredicate<T> {\n return new HarnessPredicate(type, options)\n .addOption('text', options.text,\n (harness, text) => HarnessPredicate.stringMatches(harness.getText(), text))\n .addOption('columnName', options.columnName,\n (harness, name) => HarnessPredicate.stringMatches(harness.getColumnName(), name));\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 {ComponentHarness, HarnessPredicate} from '@angular/cdk/testing';\nimport {RowHarnessFilters, CellHarnessFilters} from './table-harness-filters';\nimport {MatCellHarness, MatHeaderCellHarness, MatFooterCellHarness} from './cell-harness';\n\n/** Text extracted from a table row organized by columns. */\nexport interface MatRowHarnessColumnsText {\n [columnName: string]: string;\n}\n\n/** Harness for interacting with a standard Angular Material table row. */\nexport class MatRowHarness extends ComponentHarness {\n /** The selector for the host element of a `MatRowHarness` instance. */\n static hostSelector = '.mat-row';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a table row with specific attributes.\n * @param options Options for narrowing the search\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: RowHarnessFilters = {}): HarnessPredicate<MatRowHarness> {\n return new HarnessPredicate(MatRowHarness, options);\n }\n\n /** Gets a list of `MatCellHarness` for all cells in the row. */\n async getCells(filter: CellHarnessFilters = {}): Promise<MatCellHarness[]> {\n return this.locatorForAll(MatCellHarness.with(filter))();\n }\n\n /** Gets the text of the cells in the row. */\n async getCellTextByIndex(filter: CellHarnessFilters = {}): Promise<string[]> {\n return getCellTextByIndex(this, filter);\n }\n\n /** Gets the text inside the row organized by columns. */\n async getCellTextByColumnName(): Promise<MatRowHarnessColumnsText> {\n return getCellTextByColumnName(this);\n }\n}\n\n/** Harness for interacting with a standard Angular Material table header row. */\nexport class MatHeaderRowHarness extends ComponentHarness {\n /** The selector for the host element of a `MatHeaderRowHarness` instance. */\n static hostSelector = '.mat-header-row';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for\n * a table header row with specific attributes.\n * @param options Options for narrowing the search\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: RowHarnessFilters = {}): HarnessPredicate<MatHeaderRowHarness> {\n return new HarnessPredicate(MatHeaderRowHarness, options);\n }\n\n /** Gets a list of `MatHeaderCellHarness` for all cells in the row. */\n async getCells(filter: CellHarnessFilters = {}): Promise<MatHeaderCellHarness[]> {\n return this.locatorForAll(MatHeaderCellHarness.with(filter))();\n }\n\n /** Gets the text of the cells in the header row. */\n async getCellTextByIndex(filter: CellHarnessFilters = {}): Promise<string[]> {\n return getCellTextByIndex(this, filter);\n }\n\n /** Gets the text inside the header row organized by columns. */\n async getCellTextByColumnName(): Promise<MatRowHarnessColumnsText> {\n return getCellTextByColumnName(this);\n }\n}\n\n\n/** Harness for interacting with a standard Angular Material table footer row. */\nexport class MatFooterRowHarness extends ComponentHarness {\n /** The selector for the host element of a `MatFooterRowHarness` instance. */\n static hostSelector = '.mat-footer-row';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for\n * a table footer row cell with specific attributes.\n * @param options Options for narrowing the search\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: RowHarnessFilters = {}): HarnessPredicate<MatFooterRowHarness> {\n return new HarnessPredicate(MatFooterRowHarness, options);\n }\n\n /** Gets a list of `MatFooterCellHarness` for all cells in the row. */\n async getCells(filter: CellHarnessFilters = {}): Promise<MatFooterCellHarness[]> {\n return this.locatorForAll(MatFooterCellHarness.with(filter))();\n }\n\n /** Gets the text of the cells in the footer row. */\n async getCellTextByIndex(filter: CellHarnessFilters = {}): Promise<string[]> {\n return getCellTextByIndex(this, filter);\n }\n\n /** Gets the text inside the footer row organized by columns. */\n async getCellTextByColumnName(): Promise<MatRowHarnessColumnsText> {\n return getCellTextByColumnName(this);\n }\n}\n\n\nasync function getCellTextByIndex(harness: {\n getCells: (filter?: CellHarnessFilters) => Promise<MatCellHarness[]>\n}, filter: CellHarnessFilters): Promise<string[]> {\n const cells = await harness.getCells(filter);\n return Promise.all(cells.map(cell => cell.getText()));\n}\n\nasync function getCellTextByColumnName(harness: {\n getCells: () => Promise<MatCellHarness[]>\n}): Promise<MatRowHarnessColumnsText> {\n const output: MatRowHarnessColumnsText = {};\n const cells = await harness.getCells();\n const cellsData = await Promise.all(cells.map(cell => {\n return Promise.all([cell.getColumnName(), cell.getText()]);\n }));\n cellsData.forEach(([columnName, text]) => output[columnName] = text);\n return output;\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 {ContentContainerComponentHarness, HarnessPredicate} from '@angular/cdk/testing';\nimport {TableHarnessFilters, RowHarnessFilters} from './table-harness-filters';\nimport {\n MatRowHarness,\n MatHeaderRowHarness,\n MatFooterRowHarness,\n MatRowHarnessColumnsText,\n} from './row-harness';\n\n/** Text extracted from a table organized by columns. */\nexport interface MatTableHarnessColumnsText {\n [columnName: string]: {\n text: string[];\n headerText: string[];\n footerText: string[];\n };\n}\n\n/** Harness for interacting with a standard mat-table in tests. */\nexport class MatTableHarness extends ContentContainerComponentHarness<string> {\n /** The selector for the host element of a `MatTableHarness` instance. */\n static hostSelector = '.mat-table';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a table with specific attributes.\n * @param options Options for narrowing the search\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: TableHarnessFilters = {}): HarnessPredicate<MatTableHarness> {\n return new HarnessPredicate(MatTableHarness, options);\n }\n\n /** Gets all of the header rows in a table. */\n async getHeaderRows(filter: RowHarnessFilters = {}): Promise<MatHeaderRowHarness[]> {\n return this.locatorForAll(MatHeaderRowHarness.with(filter))();\n }\n\n /** Gets all of the regular data rows in a table. */\n async getRows(filter: RowHarnessFilters = {}): Promise<MatRowHarness[]> {\n return this.locatorForAll(MatRowHarness.with(filter))();\n }\n\n /** Gets all of the footer rows in a table. */\n async getFooterRows(filter: RowHarnessFilters = {}): Promise<MatFooterRowHarness[]> {\n return this.locatorForAll(MatFooterRowHarness.with(filter))();\n }\n\n /** Gets the text inside the entire table organized by rows. */\n async getCellTextByIndex(): Promise<string[][]> {\n const rows = await this.getRows();\n return Promise.all(rows.map(row => row.getCellTextByIndex()));\n }\n\n /** Gets the text inside the entire table organized by columns. */\n async getCellTextByColumnName(): Promise<MatTableHarnessColumnsText> {\n const [headerRows, footerRows, dataRows] = await Promise.all([\n this.getHeaderRows(),\n this.getFooterRows(),\n this.getRows()\n ]);\n\n const text: MatTableHarnessColumnsText = {};\n const [headerData, footerData, rowsData] = await Promise.all([\n Promise.all(headerRows.map(row => row.getCellTextByColumnName())),\n Promise.all(footerRows.map(row => row.getCellTextByColumnName())),\n Promise.all(dataRows.map(row => row.getCellTextByColumnName())),\n ]);\n\n rowsData.forEach(data => {\n Object.keys(data).forEach(columnName => {\n const cellText = data[columnName];\n\n if (!text[columnName]) {\n text[columnName] = {\n headerText: getCellTextsByColumn(headerData, columnName),\n footerText: getCellTextsByColumn(footerData, columnName),\n text: []\n };\n }\n\n text[columnName].text.push(cellText);\n });\n });\n\n return text;\n }\n}\n\n/** Extracts the text of cells only under a particular column. */\nfunction getCellTextsByColumn(rowsData: MatRowHarnessColumnsText[], column: string): string[] {\n const columnTexts: string[] = [];\n\n rowsData.forEach(data => {\n Object.keys(data).forEach(columnName => {\n if (columnName === column) {\n columnTexts.push(data[columnName]);\n }\n });\n });\n\n return columnTexts;\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\nexport * from './table-harness';\nexport * from './row-harness';\nexport * from './cell-harness';\nexport * from './table-harness-filters';\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\nexport * from './public-api';\n"],"names":[],"mappings":";;;AAAA;;;;;;;AAeA;AACA,MAAa,cAAe,SAAQ,gBAAgB;;;;;;IASlD,OAAO,IAAI,CAAC,UAA8B,EAAE;QAC1C,OAAO,gBAAgB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;KAClD;;IAGK,OAAO;;YACX,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;SACnC;KAAA;;IAGK,aAAa;;YACjB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YAC/B,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YAExD,IAAI,cAAc,EAAE;gBAClB,MAAM,MAAM,GAAG,aAAa,CAAC;gBAC7B,MAAM,IAAI,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;gBAE1F,IAAI,IAAI,EAAE;oBACR,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC9B;aACF;YAED,MAAM,KAAK,CAAC,0CAA0C,CAAC,CAAC;SACzD;KAAA;;;AA/BM,2BAAY,GAAG,WAAW,CAAC;;AAmCpC,MAAa,oBAAqB,SAAQ,cAAc;;;;;;;IAUtD,OAAO,IAAI,CAAC,UAA8B,EAAE;QAC1C,OAAO,gBAAgB,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;KACxD;;;AAVM,iCAAY,GAAG,kBAAkB,CAAC;;AAc3C,MAAa,oBAAqB,SAAQ,cAAc;;;;;;;IAUtD,OAAO,IAAI,CAAC,UAA8B,EAAE;QAC1C,OAAO,gBAAgB,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;KACxD;;;AAVM,iCAAY,GAAG,kBAAkB,CAAC;AAc3C,SAAS,gBAAgB,CACvB,IAAoC,EACpC,OAA2B;IAC3B,OAAO,IAAI,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC;SACvC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAC3B,CAAC,OAAO,EAAE,IAAI,KAAK,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;SAC9E,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,UAAU,EACvC,CAAC,OAAO,EAAE,IAAI,KAAK,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;CACzF;;AC7FD;;;;;;;AAiBA;AACA,MAAa,aAAc,SAAQ,gBAAgB;;;;;;IASjD,OAAO,IAAI,CAAC,UAA6B,EAAE;QACzC,OAAO,IAAI,gBAAgB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;KACrD;;IAGK,QAAQ,CAAC,SAA6B,EAAE;;YAC5C,OAAO,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;SAC1D;KAAA;;IAGK,kBAAkB,CAAC,SAA6B,EAAE;;YACtD,OAAO,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;SACzC;KAAA;;IAGK,uBAAuB;;YAC3B,OAAO,uBAAuB,CAAC,IAAI,CAAC,CAAC;SACtC;KAAA;;;AAxBM,0BAAY,GAAG,UAAU,CAAC;;AA4BnC,MAAa,mBAAoB,SAAQ,gBAAgB;;;;;;;IAUvD,OAAO,IAAI,CAAC,UAA6B,EAAE;QACzC,OAAO,IAAI,gBAAgB,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;KAC3D;;IAGK,QAAQ,CAAC,SAA6B,EAAE;;YAC5C,OAAO,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;SAChE;KAAA;;IAGK,kBAAkB,CAAC,SAA6B,EAAE;;YACtD,OAAO,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;SACzC;KAAA;;IAGK,uBAAuB;;YAC3B,OAAO,uBAAuB,CAAC,IAAI,CAAC,CAAC;SACtC;KAAA;;;AAzBM,gCAAY,GAAG,iBAAiB,CAAC;;AA8B1C,MAAa,mBAAoB,SAAQ,gBAAgB;;;;;;;IAUvD,OAAO,IAAI,CAAC,UAA6B,EAAE;QACzC,OAAO,IAAI,gBAAgB,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;KAC3D;;IAGK,QAAQ,CAAC,SAA6B,EAAE;;YAC5C,OAAO,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;SAChE;KAAA;;IAGK,kBAAkB,CAAC,SAA6B,EAAE;;YACtD,OAAO,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;SACzC;KAAA;;IAGK,uBAAuB;;YAC3B,OAAO,uBAAuB,CAAC,IAAI,CAAC,CAAC;SACtC;KAAA;;;AAzBM,gCAAY,GAAG,iBAAiB,CAAC;AA6B1C,SAAe,kBAAkB,CAAC,OAEjC,EAAE,MAA0B;;QAC3B,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC7C,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;KACvD;CAAA;AAED,SAAe,uBAAuB,CAAC,OAEtC;;QACC,MAAM,MAAM,GAA6B,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;QACvC,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI;YAChD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;SAC5D,CAAC,CAAC,CAAC;QACJ,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC;QACrE,OAAO,MAAM,CAAC;KACf;CAAA;;AChID;;;;;;;AA0BA;AACA,MAAa,eAAgB,SAAQ,gCAAwC;;;;;;IAS3E,OAAO,IAAI,CAAC,UAA+B,EAAE;QAC3C,OAAO,IAAI,gBAAgB,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;KACvD;;IAGK,aAAa,CAAC,SAA4B,EAAE;;YAChD,OAAO,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;SAC/D;KAAA;;IAGK,OAAO,CAAC,SAA4B,EAAE;;YAC1C,OAAO,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;SACzD;KAAA;;IAGK,aAAa,CAAC,SAA4B,EAAE;;YAChD,OAAO,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;SAC/D;KAAA;;IAGK,kBAAkB;;YACtB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;SAC/D;KAAA;;IAGK,uBAAuB;;YAC3B,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBAC3D,IAAI,CAAC,aAAa,EAAE;gBACpB,IAAI,CAAC,aAAa,EAAE;gBACpB,IAAI,CAAC,OAAO,EAAE;aACf,CAAC,CAAC;YAEH,MAAM,IAAI,GAA+B,EAAE,CAAC;YAC5C,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBAC3D,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,uBAAuB,EAAE,CAAC,CAAC;gBACjE,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,uBAAuB,EAAE,CAAC,CAAC;gBACjE,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,uBAAuB,EAAE,CAAC,CAAC;aAChE,CAAC,CAAC;YAEH,QAAQ,CAAC,OAAO,CAAC,IAAI;gBACnB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU;oBAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;oBAElC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;wBACrB,IAAI,CAAC,UAAU,CAAC,GAAG;4BACjB,UAAU,EAAE,oBAAoB,CAAC,UAAU,EAAE,UAAU,CAAC;4BACxD,UAAU,EAAE,oBAAoB,CAAC,UAAU,EAAE,UAAU,CAAC;4BACxD,IAAI,EAAE,EAAE;yBACT,CAAC;qBACH;oBAED,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBACtC,CAAC,CAAC;aACJ,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC;SACb;KAAA;;;AAhEM,4BAAY,GAAG,YAAY,CAAC;;AAoErC,SAAS,oBAAoB,CAAC,QAAoC,EAAE,MAAc;IAChF,MAAM,WAAW,GAAa,EAAE,CAAC;IAEjC,QAAQ,CAAC,OAAO,CAAC,IAAI;QACnB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU;YAClC,IAAI,UAAU,KAAK,MAAM,EAAE;gBACzB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;aACpC;SACF,CAAC,CAAC;KACJ,CAAC,CAAC;IAEH,OAAO,WAAW,CAAC;CACpB;;AC7GD;;;;;;GAMG;;ACNH;;;;;;GAMG;;;;"}
1
+ {"version":3,"file":"table__testing.js","sources":["../../../../../../src/material/table/testing/cell-harness.ts","../../../../../../src/material/table/testing/row-harness.ts","../../../../../../src/material/table/testing/table-harness.ts","../../../../../../src/material/table/testing/public-api.ts","../../../../../../src/material/table/testing/index.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 {\n HarnessPredicate,\n ComponentHarnessConstructor,\n ContentContainerComponentHarness\n} from '@angular/cdk/testing';\nimport {CellHarnessFilters} from './table-harness-filters';\n\n/** Harness for interacting with a standard Angular Material table cell. */\nexport class MatCellHarness extends ContentContainerComponentHarness {\n /** The selector for the host element of a `MatCellHarness` instance. */\n static hostSelector = '.mat-cell';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a table cell with specific attributes.\n * @param options Options for narrowing the search\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: CellHarnessFilters = {}): HarnessPredicate<MatCellHarness> {\n return getCellPredicate(MatCellHarness, options);\n }\n\n /** Gets the cell's text. */\n async getText(): Promise<string> {\n return (await this.host()).text();\n }\n\n /** Gets the name of the column that the cell belongs to. */\n async getColumnName(): Promise<string> {\n const host = await this.host();\n const classAttribute = await host.getAttribute('class');\n\n if (classAttribute) {\n const prefix = 'mat-column-';\n const name = classAttribute.split(' ').map(c => c.trim()).find(c => c.startsWith(prefix));\n\n if (name) {\n return name.split(prefix)[1];\n }\n }\n\n throw Error('Could not determine column name of cell.');\n }\n}\n\n/** Harness for interacting with a standard Angular Material table header cell. */\nexport class MatHeaderCellHarness extends MatCellHarness {\n /** The selector for the host element of a `MatHeaderCellHarness` instance. */\n static hostSelector = '.mat-header-cell';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for\n * a table header cell with specific attributes.\n * @param options Options for narrowing the search\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: CellHarnessFilters = {}): HarnessPredicate<MatHeaderCellHarness> {\n return getCellPredicate(MatHeaderCellHarness, options);\n }\n}\n\n/** Harness for interacting with a standard Angular Material table footer cell. */\nexport class MatFooterCellHarness extends MatCellHarness {\n /** The selector for the host element of a `MatFooterCellHarness` instance. */\n static hostSelector = '.mat-footer-cell';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for\n * a table footer cell with specific attributes.\n * @param options Options for narrowing the search\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: CellHarnessFilters = {}): HarnessPredicate<MatFooterCellHarness> {\n return getCellPredicate(MatFooterCellHarness, options);\n }\n}\n\n\nfunction getCellPredicate<T extends MatCellHarness>(\n type: ComponentHarnessConstructor<T>,\n options: CellHarnessFilters): HarnessPredicate<T> {\n return new HarnessPredicate(type, options)\n .addOption('text', options.text,\n (harness, text) => HarnessPredicate.stringMatches(harness.getText(), text))\n .addOption('columnName', options.columnName,\n (harness, name) => HarnessPredicate.stringMatches(harness.getColumnName(), name));\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 {ComponentHarness, HarnessPredicate, parallel} from '@angular/cdk/testing';\nimport {RowHarnessFilters, CellHarnessFilters} from './table-harness-filters';\nimport {MatCellHarness, MatHeaderCellHarness, MatFooterCellHarness} from './cell-harness';\n\n/** Text extracted from a table row organized by columns. */\nexport interface MatRowHarnessColumnsText {\n [columnName: string]: string;\n}\n\n/** Harness for interacting with a standard Angular Material table row. */\nexport class MatRowHarness extends ComponentHarness {\n /** The selector for the host element of a `MatRowHarness` instance. */\n static hostSelector = '.mat-row';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a table row with specific attributes.\n * @param options Options for narrowing the search\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: RowHarnessFilters = {}): HarnessPredicate<MatRowHarness> {\n return new HarnessPredicate(MatRowHarness, options);\n }\n\n /** Gets a list of `MatCellHarness` for all cells in the row. */\n async getCells(filter: CellHarnessFilters = {}): Promise<MatCellHarness[]> {\n return this.locatorForAll(MatCellHarness.with(filter))();\n }\n\n /** Gets the text of the cells in the row. */\n async getCellTextByIndex(filter: CellHarnessFilters = {}): Promise<string[]> {\n return getCellTextByIndex(this, filter);\n }\n\n /** Gets the text inside the row organized by columns. */\n async getCellTextByColumnName(): Promise<MatRowHarnessColumnsText> {\n return getCellTextByColumnName(this);\n }\n}\n\n/** Harness for interacting with a standard Angular Material table header row. */\nexport class MatHeaderRowHarness extends ComponentHarness {\n /** The selector for the host element of a `MatHeaderRowHarness` instance. */\n static hostSelector = '.mat-header-row';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for\n * a table header row with specific attributes.\n * @param options Options for narrowing the search\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: RowHarnessFilters = {}): HarnessPredicate<MatHeaderRowHarness> {\n return new HarnessPredicate(MatHeaderRowHarness, options);\n }\n\n /** Gets a list of `MatHeaderCellHarness` for all cells in the row. */\n async getCells(filter: CellHarnessFilters = {}): Promise<MatHeaderCellHarness[]> {\n return this.locatorForAll(MatHeaderCellHarness.with(filter))();\n }\n\n /** Gets the text of the cells in the header row. */\n async getCellTextByIndex(filter: CellHarnessFilters = {}): Promise<string[]> {\n return getCellTextByIndex(this, filter);\n }\n\n /** Gets the text inside the header row organized by columns. */\n async getCellTextByColumnName(): Promise<MatRowHarnessColumnsText> {\n return getCellTextByColumnName(this);\n }\n}\n\n\n/** Harness for interacting with a standard Angular Material table footer row. */\nexport class MatFooterRowHarness extends ComponentHarness {\n /** The selector for the host element of a `MatFooterRowHarness` instance. */\n static hostSelector = '.mat-footer-row';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for\n * a table footer row cell with specific attributes.\n * @param options Options for narrowing the search\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: RowHarnessFilters = {}): HarnessPredicate<MatFooterRowHarness> {\n return new HarnessPredicate(MatFooterRowHarness, options);\n }\n\n /** Gets a list of `MatFooterCellHarness` for all cells in the row. */\n async getCells(filter: CellHarnessFilters = {}): Promise<MatFooterCellHarness[]> {\n return this.locatorForAll(MatFooterCellHarness.with(filter))();\n }\n\n /** Gets the text of the cells in the footer row. */\n async getCellTextByIndex(filter: CellHarnessFilters = {}): Promise<string[]> {\n return getCellTextByIndex(this, filter);\n }\n\n /** Gets the text inside the footer row organized by columns. */\n async getCellTextByColumnName(): Promise<MatRowHarnessColumnsText> {\n return getCellTextByColumnName(this);\n }\n}\n\n\nasync function getCellTextByIndex(harness: {\n getCells: (filter?: CellHarnessFilters) => Promise<MatCellHarness[]>\n}, filter: CellHarnessFilters): Promise<string[]> {\n const cells = await harness.getCells(filter);\n return parallel(() => cells.map(cell => cell.getText()));\n}\n\nasync function getCellTextByColumnName(harness: {\n getCells: () => Promise<MatCellHarness[]>\n}): Promise<MatRowHarnessColumnsText> {\n const output: MatRowHarnessColumnsText = {};\n const cells = await harness.getCells();\n const cellsData = await parallel(() => cells.map(cell => {\n return parallel(() => [cell.getColumnName(), cell.getText()]);\n }));\n cellsData.forEach(([columnName, text]) => output[columnName] = text);\n return output;\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 {ContentContainerComponentHarness, HarnessPredicate, parallel} from '@angular/cdk/testing';\nimport {TableHarnessFilters, RowHarnessFilters} from './table-harness-filters';\nimport {\n MatRowHarness,\n MatHeaderRowHarness,\n MatFooterRowHarness,\n MatRowHarnessColumnsText,\n} from './row-harness';\n\n/** Text extracted from a table organized by columns. */\nexport interface MatTableHarnessColumnsText {\n [columnName: string]: {\n text: string[];\n headerText: string[];\n footerText: string[];\n };\n}\n\n/** Harness for interacting with a standard mat-table in tests. */\nexport class MatTableHarness extends ContentContainerComponentHarness<string> {\n /** The selector for the host element of a `MatTableHarness` instance. */\n static hostSelector = '.mat-table';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a table with specific attributes.\n * @param options Options for narrowing the search\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: TableHarnessFilters = {}): HarnessPredicate<MatTableHarness> {\n return new HarnessPredicate(MatTableHarness, options);\n }\n\n /** Gets all of the header rows in a table. */\n async getHeaderRows(filter: RowHarnessFilters = {}): Promise<MatHeaderRowHarness[]> {\n return this.locatorForAll(MatHeaderRowHarness.with(filter))();\n }\n\n /** Gets all of the regular data rows in a table. */\n async getRows(filter: RowHarnessFilters = {}): Promise<MatRowHarness[]> {\n return this.locatorForAll(MatRowHarness.with(filter))();\n }\n\n /** Gets all of the footer rows in a table. */\n async getFooterRows(filter: RowHarnessFilters = {}): Promise<MatFooterRowHarness[]> {\n return this.locatorForAll(MatFooterRowHarness.with(filter))();\n }\n\n /** Gets the text inside the entire table organized by rows. */\n async getCellTextByIndex(): Promise<string[][]> {\n const rows = await this.getRows();\n return parallel(() => rows.map(row => row.getCellTextByIndex()));\n }\n\n /** Gets the text inside the entire table organized by columns. */\n async getCellTextByColumnName(): Promise<MatTableHarnessColumnsText> {\n const [headerRows, footerRows, dataRows] = await parallel(() => [\n this.getHeaderRows(),\n this.getFooterRows(),\n this.getRows()\n ]);\n\n const text: MatTableHarnessColumnsText = {};\n const [headerData, footerData, rowsData] = await parallel(() => [\n parallel(() => headerRows.map(row => row.getCellTextByColumnName())),\n parallel(() => footerRows.map(row => row.getCellTextByColumnName())),\n parallel(() => dataRows.map(row => row.getCellTextByColumnName())),\n ]);\n\n rowsData.forEach(data => {\n Object.keys(data).forEach(columnName => {\n const cellText = data[columnName];\n\n if (!text[columnName]) {\n text[columnName] = {\n headerText: getCellTextsByColumn(headerData, columnName),\n footerText: getCellTextsByColumn(footerData, columnName),\n text: []\n };\n }\n\n text[columnName].text.push(cellText);\n });\n });\n\n return text;\n }\n}\n\n/** Extracts the text of cells only under a particular column. */\nfunction getCellTextsByColumn(rowsData: MatRowHarnessColumnsText[], column: string): string[] {\n const columnTexts: string[] = [];\n\n rowsData.forEach(data => {\n Object.keys(data).forEach(columnName => {\n if (columnName === column) {\n columnTexts.push(data[columnName]);\n }\n });\n });\n\n return columnTexts;\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\nexport * from './table-harness';\nexport * from './row-harness';\nexport * from './cell-harness';\nexport * from './table-harness-filters';\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\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/fesm2015/table.js CHANGED
@@ -3,7 +3,7 @@ import { CdkTable, CDK_TABLE_TEMPLATE, CDK_TABLE, _COALESCED_STYLE_SCHEDULER, _C
3
3
  import { _VIEW_REPEATER_STRATEGY, _DisposeViewRepeaterStrategy } from '@angular/cdk/collections';
4
4
  import { MatCommonModule } from '@angular/material/core';
5
5
  import { _isNumberValue } from '@angular/cdk/coercion';
6
- import { BehaviorSubject, Subject, Subscription, merge, of, combineLatest } from 'rxjs';
6
+ import { BehaviorSubject, Subject, merge, of, combineLatest } from 'rxjs';
7
7
  import { map } from 'rxjs/operators';
8
8
 
9
9
  /**
@@ -372,20 +372,8 @@ MatTableModule.decorators = [
372
372
  * flaky browser support and the value not being defined in Closure's typings.
373
373
  */
374
374
  const MAX_SAFE_INTEGER = 9007199254740991;
375
- /**
376
- * Data source that accepts a client-side data array and includes native support of filtering,
377
- * sorting (using MatSort), and pagination (using MatPaginator).
378
- *
379
- * Allows for sort customization by overriding sortingDataAccessor, which defines how data
380
- * properties are accessed. Also allows for filter customization by overriding filterTermAccessor,
381
- * which defines how row data is converted to a string for filter matching.
382
- *
383
- * **Note:** This class is meant to be a simple data source to help you get started. As such
384
- * it isn't equipped to handle some more advanced cases like robust i18n support or server-side
385
- * interactions. If your app needs to support more advanced use cases, consider implementing your
386
- * own `DataSource`.
387
- */
388
- class MatTableDataSource extends DataSource {
375
+ /** Shared base class with MDC-based implementation. */
376
+ class _MatTableDataSource extends DataSource {
389
377
  constructor(initialData = []) {
390
378
  super();
391
379
  /** Stream emitting render data to the table (depends on ordered data changes). */
@@ -398,7 +386,7 @@ class MatTableDataSource extends DataSource {
398
386
  * Subscription to the changes that should trigger an update to the table's rendered rows, such
399
387
  * as filtering, sorting, pagination, or base data changes.
400
388
  */
401
- this._renderChangesSubscription = Subscription.EMPTY;
389
+ this._renderChangesSubscription = null;
402
390
  /**
403
391
  * Data accessor function that is used for accessing data properties for sorting through
404
392
  * the default sortData function.
@@ -539,6 +527,7 @@ class MatTableDataSource extends DataSource {
539
527
  * the provided base data and send it to the table for rendering.
540
528
  */
541
529
  _updateChangeSubscription() {
530
+ var _a;
542
531
  // Sorting and/or pagination should be watched if MatSort and/or MatPaginator are provided.
543
532
  // The events should emit whenever the component emits a change or initializes, or if no
544
533
  // component is provided, a stream with just a null event should be provided.
@@ -562,7 +551,7 @@ class MatTableDataSource extends DataSource {
562
551
  const paginatedData = combineLatest([orderedData, pageChange])
563
552
  .pipe(map(([data]) => this._pageData(data)));
564
553
  // Watched for paged data changes and send the result to the table to render.
565
- this._renderChangesSubscription.unsubscribe();
554
+ (_a = this._renderChangesSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
566
555
  this._renderChangesSubscription = paginatedData.subscribe(data => this._renderData.next(data));
567
556
  }
568
557
  /**
@@ -633,12 +622,36 @@ class MatTableDataSource extends DataSource {
633
622
  * Used by the MatTable. Called when it connects to the data source.
634
623
  * @docs-private
635
624
  */
636
- connect() { return this._renderData; }
625
+ connect() {
626
+ if (!this._renderChangesSubscription) {
627
+ this._updateChangeSubscription();
628
+ }
629
+ return this._renderData;
630
+ }
637
631
  /**
638
- * Used by the MatTable. Called when it is destroyed. No-op.
632
+ * Used by the MatTable. Called when it disconnects from the data source.
639
633
  * @docs-private
640
634
  */
641
- disconnect() { }
635
+ disconnect() {
636
+ var _a;
637
+ (_a = this._renderChangesSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
638
+ this._renderChangesSubscription = null;
639
+ }
640
+ }
641
+ /**
642
+ * Data source that accepts a client-side data array and includes native support of filtering,
643
+ * sorting (using MatSort), and pagination (using MatPaginator).
644
+ *
645
+ * Allows for sort customization by overriding sortingDataAccessor, which defines how data
646
+ * properties are accessed. Also allows for filter customization by overriding filterTermAccessor,
647
+ * which defines how row data is converted to a string for filter matching.
648
+ *
649
+ * **Note:** This class is meant to be a simple data source to help you get started. As such
650
+ * it isn't equipped to handle some more advanced cases like robust i18n support or server-side
651
+ * interactions. If your app needs to support more advanced use cases, consider implementing your
652
+ * own `DataSource`.
653
+ */
654
+ class MatTableDataSource extends _MatTableDataSource {
642
655
  }
643
656
 
644
657
  /**
@@ -653,5 +666,5 @@ class MatTableDataSource extends DataSource {
653
666
  * Generated bundle index. Do not edit.
654
667
  */
655
668
 
656
- export { MatCell, MatCellDef, MatColumnDef, MatFooterCell, MatFooterCellDef, MatFooterRow, MatFooterRowDef, MatHeaderCell, MatHeaderCellDef, MatHeaderRow, MatHeaderRowDef, MatNoDataRow, MatRow, MatRowDef, MatTable, MatTableDataSource, MatTableModule, MatTextColumn };
669
+ export { MatCell, MatCellDef, MatColumnDef, MatFooterCell, MatFooterCellDef, MatFooterRow, MatFooterRowDef, MatHeaderCell, MatHeaderCellDef, MatHeaderRow, MatHeaderRowDef, MatNoDataRow, MatRow, MatRowDef, MatTable, MatTableDataSource, MatTableModule, MatTextColumn, _MatTableDataSource };
657
670
  //# sourceMappingURL=table.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"table.js","sources":["../../../../../../src/material/table/table.ts","../../../../../../src/material/table/cell.ts","../../../../../../src/material/table/row.ts","../../../../../../src/material/table/text-column.ts","../../../../../../src/material/table/table-module.ts","../../../../../../src/material/table/table-data-source.ts","../../../../../../src/material/table/public-api.ts","../../../../../../src/material/table/index.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 {\n CDK_TABLE_TEMPLATE,\n CdkTable,\n CDK_TABLE,\n _CoalescedStyleScheduler, _COALESCED_STYLE_SCHEDULER\n} from '@angular/cdk/table';\nimport {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\nimport {_DisposeViewRepeaterStrategy, _VIEW_REPEATER_STRATEGY} from '@angular/cdk/collections';\n\n/**\n * Wrapper for the CdkTable with Material design styles.\n */\n@Component({\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 '[class.mat-table-fixed-layout]': 'fixedLayout',\n },\n providers: [\n // TODO(michaeljamesparsons) Abstract the view repeater strategy to a directive API so this code\n // is only included in the build if used.\n {provide: _VIEW_REPEATER_STRATEGY, useClass: _DisposeViewRepeaterStrategy},\n {provide: CdkTable, useExisting: MatTable},\n {provide: CDK_TABLE, useExisting: MatTable},\n {provide: _COALESCED_STYLE_SCHEDULER, useClass: _CoalescedStyleScheduler},\n ],\n encapsulation: ViewEncapsulation.None,\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\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 /** Overrides the need to add position: sticky on every sticky cell element in `CdkTable`. */\n protected needsPositionStickyOnElement = false;\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 {BooleanInput} from '@angular/cdk/coercion';\nimport {Directive, 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 inputs: ['sticky'],\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')\n get name(): string { return this._name; }\n set name(name: string) { this._setNameInput(name); }\n\n /**\n * Add \"mat-column-\" prefix in addition to \"cdk-column-\" prefix.\n * In the future, this will only add \"mat-column-\" and columnCssClassName\n * will change from type string[] to string.\n * @docs-private\n */\n protected _updateColumnCssClassName() {\n super._updateColumnCssClassName();\n this._columnCssClassName!.push(`mat-column-${this.cssClassFriendlyName}`);\n }\n\n static ngAcceptInputType_sticky: BooleanInput;\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\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\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","/**\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 {BooleanInput} from '@angular/cdk/coercion';\nimport {\n CDK_ROW_TEMPLATE,\n CdkFooterRow,\n CdkFooterRowDef,\n CdkHeaderRow,\n CdkHeaderRowDef,\n CdkRow,\n CdkRowDef,\n CdkNoDataRow\n} from '@angular/cdk/table';\nimport {ChangeDetectionStrategy, Component, Directive, ViewEncapsulation} from '@angular/core';\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 static ngAcceptInputType_sticky: BooleanInput;\n}\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 static ngAcceptInputType_sticky: BooleanInput;\n}\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\n/** Header template container that contains the cell outlet. Adds the right class and role. */\n@Component({\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 // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matHeaderRow',\n providers: [{provide: CdkHeaderRow, useExisting: MatHeaderRow}],\n})\nexport class MatHeaderRow extends CdkHeaderRow {\n}\n\n/** Footer template container that contains the cell outlet. Adds the right class and role. */\n@Component({\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 // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matFooterRow',\n providers: [{provide: CdkFooterRow, useExisting: MatFooterRow}],\n})\nexport class MatFooterRow extends CdkFooterRow {\n}\n\n/** Data row template container that contains the cell outlet. Adds the right class and role. */\n@Component({\n selector: 'mat-row, tr[mat-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'mat-row',\n 'role': 'row',\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matRow',\n providers: [{provide: CdkRow, useExisting: MatRow}],\n})\nexport class MatRow extends CdkRow {\n}\n\n/** Row that can be used to display a message when no data is shown in the table. */\n@Directive({\n selector: 'ng-template[matNoDataRow]',\n providers: [{provide: CdkNoDataRow, useExisting: MatNoDataRow}],\n})\nexport class MatNoDataRow extends CdkNoDataRow {\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 {CdkTextColumn} from '@angular/cdk/table';\nimport {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\n\n/**\n * Column that simply shows text content for the header and row cells. Assumes that the table\n * is using the native table implementation (`<table>`).\n *\n * By default, the name of this column will be the header text and data property accessor.\n * The header text can be overridden with the `headerText` input. Cell values can be overridden with\n * the `dataAccessor` input. Change the text justification to the start or end using the `justify`\n * input.\n */\n@Component({\n selector: 'mat-text-column',\n template: `\n <ng-container matColumnDef>\n <th mat-header-cell *matHeaderCellDef [style.text-align]=\"justify\">\n {{headerText}}\n </th>\n <td mat-cell *matCellDef=\"let data\" [style.text-align]=\"justify\">\n {{dataAccessor(data, name)}}\n </td>\n </ng-container>\n `,\n encapsulation: ViewEncapsulation.None,\n // Change detection is intentionally not set to OnPush. This component's template will be provided\n // to the table to be inserted into its view. This is problematic when change detection runs since\n // the bindings in this template will be evaluated _after_ the table's view is evaluated, which\n // mean's the template in the table's view will not have the updated value (and in fact will cause\n // an ExpressionChangedAfterItHasBeenCheckedError).\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class MatTextColumn<T> extends CdkTextColumn<T> {\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 MatNoDataRow\n} from './row';\nimport {MatTextColumn} from './text-column';\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 directives\n MatHeaderRow,\n MatRow,\n MatFooterRow,\n MatNoDataRow,\n\n MatTextColumn,\n];\n\n@NgModule({\n imports: [\n CdkTableModule,\n MatCommonModule,\n ],\n exports: [MatCommonModule, 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 {_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 *\n * **Note:** This class is meant to be a simple data source to help you get started. As such\n * it isn't equipped to handle some more advanced cases like robust i18n support or server-side\n * interactions. If your app needs to support more advanced use cases, consider implementing your\n * own `DataSource`.\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 there are data in the column that can be converted to a number,\n // it must be ensured that the rest of the data\n // is of the same type so as not to order incorrectly.\n const valueAType = typeof valueA;\n const valueBType = typeof valueB;\n\n if (valueAType !== valueBType) {\n if (valueAType === 'number') { valueA += ''; }\n if (valueBType === 'number') { valueB += ''; }\n }\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 last.\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(this._sort.sortChange, this._sort.initialized) as Observable<Sort|void> :\n observableOf(null);\n const pageChange: Observable<PageEvent|null|void> = this._paginator ?\n merge(\n this._paginator.page,\n this._internalPageChanges,\n this._paginator.initialized\n ) as Observable<PageEvent|void> :\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 = (this.filter == null || this.filter === '') ? data :\n 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 slice 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(startIndex, 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\nexport * from './table-module';\nexport * from './cell';\nexport * from './table';\nexport * from './row';\nexport * from './table-data-source';\nexport * from './text-column';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["observableOf"],"mappings":"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"}
1
+ {"version":3,"file":"table.js","sources":["../../../../../../src/material/table/table.ts","../../../../../../src/material/table/cell.ts","../../../../../../src/material/table/row.ts","../../../../../../src/material/table/text-column.ts","../../../../../../src/material/table/table-module.ts","../../../../../../src/material/table/table-data-source.ts","../../../../../../src/material/table/public-api.ts","../../../../../../src/material/table/index.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 {\n CDK_TABLE_TEMPLATE,\n CdkTable,\n CDK_TABLE,\n _CoalescedStyleScheduler, _COALESCED_STYLE_SCHEDULER\n} from '@angular/cdk/table';\nimport {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\nimport {_DisposeViewRepeaterStrategy, _VIEW_REPEATER_STRATEGY} from '@angular/cdk/collections';\n\n/**\n * Wrapper for the CdkTable with Material design styles.\n */\n@Component({\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 '[class.mat-table-fixed-layout]': 'fixedLayout',\n },\n providers: [\n // TODO(michaeljamesparsons) Abstract the view repeater strategy to a directive API so this code\n // is only included in the build if used.\n {provide: _VIEW_REPEATER_STRATEGY, useClass: _DisposeViewRepeaterStrategy},\n {provide: CdkTable, useExisting: MatTable},\n {provide: CDK_TABLE, useExisting: MatTable},\n {provide: _COALESCED_STYLE_SCHEDULER, useClass: _CoalescedStyleScheduler},\n ],\n encapsulation: ViewEncapsulation.None,\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\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 /** Overrides the need to add position: sticky on every sticky cell element in `CdkTable`. */\n protected needsPositionStickyOnElement = false;\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 {BooleanInput} from '@angular/cdk/coercion';\nimport {Directive, 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 inputs: ['sticky'],\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')\n get name(): string { return this._name; }\n set name(name: string) { this._setNameInput(name); }\n\n /**\n * Add \"mat-column-\" prefix in addition to \"cdk-column-\" prefix.\n * In the future, this will only add \"mat-column-\" and columnCssClassName\n * will change from type string[] to string.\n * @docs-private\n */\n protected _updateColumnCssClassName() {\n super._updateColumnCssClassName();\n this._columnCssClassName!.push(`mat-column-${this.cssClassFriendlyName}`);\n }\n\n static ngAcceptInputType_sticky: BooleanInput;\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\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\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","/**\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 {BooleanInput} from '@angular/cdk/coercion';\nimport {\n CDK_ROW_TEMPLATE,\n CdkFooterRow,\n CdkFooterRowDef,\n CdkHeaderRow,\n CdkHeaderRowDef,\n CdkRow,\n CdkRowDef,\n CdkNoDataRow\n} from '@angular/cdk/table';\nimport {ChangeDetectionStrategy, Component, Directive, ViewEncapsulation} from '@angular/core';\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 static ngAcceptInputType_sticky: BooleanInput;\n}\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 static ngAcceptInputType_sticky: BooleanInput;\n}\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\n/** Header template container that contains the cell outlet. Adds the right class and role. */\n@Component({\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 // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matHeaderRow',\n providers: [{provide: CdkHeaderRow, useExisting: MatHeaderRow}],\n})\nexport class MatHeaderRow extends CdkHeaderRow {\n}\n\n/** Footer template container that contains the cell outlet. Adds the right class and role. */\n@Component({\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 // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matFooterRow',\n providers: [{provide: CdkFooterRow, useExisting: MatFooterRow}],\n})\nexport class MatFooterRow extends CdkFooterRow {\n}\n\n/** Data row template container that contains the cell outlet. Adds the right class and role. */\n@Component({\n selector: 'mat-row, tr[mat-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'mat-row',\n 'role': 'row',\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matRow',\n providers: [{provide: CdkRow, useExisting: MatRow}],\n})\nexport class MatRow extends CdkRow {\n}\n\n/** Row that can be used to display a message when no data is shown in the table. */\n@Directive({\n selector: 'ng-template[matNoDataRow]',\n providers: [{provide: CdkNoDataRow, useExisting: MatNoDataRow}],\n})\nexport class MatNoDataRow extends CdkNoDataRow {\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 {CdkTextColumn} from '@angular/cdk/table';\nimport {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\n\n/**\n * Column that simply shows text content for the header and row cells. Assumes that the table\n * is using the native table implementation (`<table>`).\n *\n * By default, the name of this column will be the header text and data property accessor.\n * The header text can be overridden with the `headerText` input. Cell values can be overridden with\n * the `dataAccessor` input. Change the text justification to the start or end using the `justify`\n * input.\n */\n@Component({\n selector: 'mat-text-column',\n template: `\n <ng-container matColumnDef>\n <th mat-header-cell *matHeaderCellDef [style.text-align]=\"justify\">\n {{headerText}}\n </th>\n <td mat-cell *matCellDef=\"let data\" [style.text-align]=\"justify\">\n {{dataAccessor(data, name)}}\n </td>\n </ng-container>\n `,\n encapsulation: ViewEncapsulation.None,\n // Change detection is intentionally not set to OnPush. This component's template will be provided\n // to the table to be inserted into its view. This is problematic when change detection runs since\n // the bindings in this template will be evaluated _after_ the table's view is evaluated, which\n // mean's the template in the table's view will not have the updated value (and in fact will cause\n // an ExpressionChangedAfterItHasBeenCheckedError).\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class MatTextColumn<T> extends CdkTextColumn<T> {\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 MatNoDataRow\n} from './row';\nimport {MatTextColumn} from './text-column';\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 directives\n MatHeaderRow,\n MatRow,\n MatFooterRow,\n MatNoDataRow,\n\n MatTextColumn,\n];\n\n@NgModule({\n imports: [\n CdkTableModule,\n MatCommonModule,\n ],\n exports: [MatCommonModule, 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 {_isNumberValue} from '@angular/cdk/coercion';\nimport {DataSource} from '@angular/cdk/table';\nimport {MatPaginator, PageEvent} from '@angular/material/paginator';\nimport {MatSort, Sort} from '@angular/material/sort';\nimport {\n BehaviorSubject,\n combineLatest,\n merge,\n Observable,\n of as observableOf,\n Subject,\n Subscription,\n} from 'rxjs';\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\ninterface Paginator {\n page: Subject<PageEvent>;\n pageIndex: number;\n initialized: Observable<void>;\n pageSize: number;\n length: number;\n}\n\n/** Shared base class with MDC-based implementation. */\nexport class _MatTableDataSource<T, P extends Paginator> 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|null = null;\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(): P | null { return this._paginator; }\n set paginator(paginator: P | null) {\n this._paginator = paginator;\n this._updateChangeSubscription();\n }\n private _paginator: P | 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 there are data in the column that can be converted to a number,\n // it must be ensured that the rest of the data\n // is of the same type so as not to order incorrectly.\n const valueAType = typeof valueA;\n const valueBType = typeof valueB;\n\n if (valueAType !== valueBType) {\n if (valueAType === 'number') { valueA += ''; }\n if (valueBType === 'number') { valueB += ''; }\n }\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 last.\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(this._sort.sortChange, this._sort.initialized) as Observable<Sort|void> :\n observableOf(null);\n const pageChange: Observable<PageEvent|null|void> = this._paginator ?\n merge(\n this._paginator.page,\n this._internalPageChanges,\n this._paginator.initialized\n ) as Observable<PageEvent|void> :\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 = (this.filter == null || this.filter === '') ? data :\n 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 slice 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(startIndex, 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() {\n if (!this._renderChangesSubscription) {\n this._updateChangeSubscription();\n }\n\n return this._renderData;\n }\n\n /**\n * Used by the MatTable. Called when it disconnects from the data source.\n * @docs-private\n */\n disconnect() {\n this._renderChangesSubscription?.unsubscribe();\n this._renderChangesSubscription = null;\n }\n}\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 *\n * **Note:** This class is meant to be a simple data source to help you get started. As such\n * it isn't equipped to handle some more advanced cases like robust i18n support or server-side\n * interactions. If your app needs to support more advanced use cases, consider implementing your\n * own `DataSource`.\n */\nexport class MatTableDataSource<T> extends _MatTableDataSource<T, MatPaginator> {}\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\nexport * from './table-module';\nexport * from './cell';\nexport * from './table';\nexport * from './row';\nexport * from './table-data-source';\nexport * from './text-column';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["observableOf"],"mappings":"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"}