@covalent/core 3.1.0 → 3.1.2-beta.6

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 (639) hide show
  1. package/breadcrumbs/covalent-core-breadcrumbs.metadata.json +1 -1
  2. package/breadcrumbs/package.json +1 -3
  3. package/bundles/covalent-core-breadcrumbs.umd.js +131 -167
  4. package/bundles/covalent-core-breadcrumbs.umd.js.map +1 -1
  5. package/bundles/covalent-core-breadcrumbs.umd.min.js +1 -1
  6. package/bundles/covalent-core-breadcrumbs.umd.min.js.map +1 -1
  7. package/bundles/covalent-core-chips.umd.js +533 -708
  8. package/bundles/covalent-core-chips.umd.js.map +1 -1
  9. package/bundles/covalent-core-chips.umd.min.js +12 -12
  10. package/bundles/covalent-core-chips.umd.min.js.map +1 -1
  11. package/bundles/covalent-core-common.umd.js +566 -571
  12. package/bundles/covalent-core-common.umd.js.map +1 -1
  13. package/bundles/covalent-core-common.umd.min.js +13 -12
  14. package/bundles/covalent-core-common.umd.min.js.map +1 -1
  15. package/bundles/covalent-core-data-table.umd.js +727 -1038
  16. package/bundles/covalent-core-data-table.umd.js.map +1 -1
  17. package/bundles/covalent-core-data-table.umd.min.js +12 -12
  18. package/bundles/covalent-core-data-table.umd.min.js.map +1 -1
  19. package/bundles/covalent-core-dialogs.umd.js +515 -592
  20. package/bundles/covalent-core-dialogs.umd.js.map +1 -1
  21. package/bundles/covalent-core-dialogs.umd.min.js +1 -15
  22. package/bundles/covalent-core-dialogs.umd.min.js.map +1 -1
  23. package/bundles/covalent-core-dynamic-menu.umd.js +73 -62
  24. package/bundles/covalent-core-dynamic-menu.umd.js.map +1 -1
  25. package/bundles/covalent-core-dynamic-menu.umd.min.js +1 -1
  26. package/bundles/covalent-core-dynamic-menu.umd.min.js.map +1 -1
  27. package/bundles/covalent-core-expansion-panel.umd.js +465 -449
  28. package/bundles/covalent-core-expansion-panel.umd.js.map +1 -1
  29. package/bundles/covalent-core-expansion-panel.umd.min.js +12 -12
  30. package/bundles/covalent-core-expansion-panel.umd.min.js.map +1 -1
  31. package/bundles/covalent-core-file.umd.js +533 -598
  32. package/bundles/covalent-core-file.umd.js.map +1 -1
  33. package/bundles/covalent-core-file.umd.min.js +13 -12
  34. package/bundles/covalent-core-file.umd.min.js.map +1 -1
  35. package/bundles/covalent-core-json-formatter.umd.js +101 -152
  36. package/bundles/covalent-core-json-formatter.umd.js.map +1 -1
  37. package/bundles/covalent-core-json-formatter.umd.min.js +1 -1
  38. package/bundles/covalent-core-json-formatter.umd.min.js.map +1 -1
  39. package/bundles/covalent-core-layout.umd.js +845 -883
  40. package/bundles/covalent-core-layout.umd.js.map +1 -1
  41. package/bundles/covalent-core-layout.umd.min.js +13 -12
  42. package/bundles/covalent-core-layout.umd.min.js.map +1 -1
  43. package/bundles/covalent-core-loading.umd.js +481 -723
  44. package/bundles/covalent-core-loading.umd.js.map +1 -1
  45. package/bundles/covalent-core-loading.umd.min.js +12 -12
  46. package/bundles/covalent-core-loading.umd.min.js.map +1 -1
  47. package/bundles/covalent-core-media.umd.js +395 -375
  48. package/bundles/covalent-core-media.umd.js.map +1 -1
  49. package/bundles/covalent-core-media.umd.min.js +12 -12
  50. package/bundles/covalent-core-media.umd.min.js.map +1 -1
  51. package/bundles/covalent-core-menu.umd.js +37 -17
  52. package/bundles/covalent-core-menu.umd.js.map +1 -1
  53. package/bundles/covalent-core-menu.umd.min.js +1 -1
  54. package/bundles/covalent-core-menu.umd.min.js.map +1 -1
  55. package/bundles/covalent-core-message.umd.js +96 -152
  56. package/bundles/covalent-core-message.umd.js.map +1 -1
  57. package/bundles/covalent-core-message.umd.min.js +1 -1
  58. package/bundles/covalent-core-message.umd.min.js.map +1 -1
  59. package/bundles/covalent-core-nav-links.umd.js +63 -75
  60. package/bundles/covalent-core-nav-links.umd.js.map +1 -1
  61. package/bundles/covalent-core-nav-links.umd.min.js +1 -1
  62. package/bundles/covalent-core-nav-links.umd.min.js.map +1 -1
  63. package/bundles/covalent-core-notifications.umd.js +77 -101
  64. package/bundles/covalent-core-notifications.umd.js.map +1 -1
  65. package/bundles/covalent-core-notifications.umd.min.js +1 -1
  66. package/bundles/covalent-core-notifications.umd.min.js.map +1 -1
  67. package/bundles/covalent-core-paging.umd.js +89 -166
  68. package/bundles/covalent-core-paging.umd.js.map +1 -1
  69. package/bundles/covalent-core-paging.umd.min.js +1 -1
  70. package/bundles/covalent-core-paging.umd.min.js.map +1 -1
  71. package/bundles/covalent-core-search.umd.js +469 -418
  72. package/bundles/covalent-core-search.umd.js.map +1 -1
  73. package/bundles/covalent-core-search.umd.min.js +12 -12
  74. package/bundles/covalent-core-search.umd.min.js.map +1 -1
  75. package/bundles/covalent-core-sidesheet.umd.js +72 -52
  76. package/bundles/covalent-core-sidesheet.umd.js.map +1 -1
  77. package/bundles/covalent-core-sidesheet.umd.min.js +1 -1
  78. package/bundles/covalent-core-sidesheet.umd.min.js.map +1 -1
  79. package/bundles/covalent-core-steps.umd.js +663 -822
  80. package/bundles/covalent-core-steps.umd.js.map +1 -1
  81. package/bundles/covalent-core-steps.umd.min.js +12 -12
  82. package/bundles/covalent-core-steps.umd.min.js.map +1 -1
  83. package/bundles/covalent-core-tab-select.umd.js +446 -385
  84. package/bundles/covalent-core-tab-select.umd.js.map +1 -1
  85. package/bundles/covalent-core-tab-select.umd.min.js +12 -12
  86. package/bundles/covalent-core-tab-select.umd.min.js.map +1 -1
  87. package/bundles/covalent-core-user-profile.umd.js +65 -48
  88. package/bundles/covalent-core-user-profile.umd.js.map +1 -1
  89. package/bundles/covalent-core-user-profile.umd.min.js +1 -1
  90. package/bundles/covalent-core-user-profile.umd.min.js.map +1 -1
  91. package/bundles/covalent-core-virtual-scroll.umd.js +412 -356
  92. package/bundles/covalent-core-virtual-scroll.umd.js.map +1 -1
  93. package/bundles/covalent-core-virtual-scroll.umd.min.js +12 -12
  94. package/bundles/covalent-core-virtual-scroll.umd.min.js.map +1 -1
  95. package/bundles/covalent-core.umd.js +0 -8
  96. package/bundles/covalent-core.umd.js.map +1 -1
  97. package/chips/covalent-core-chips.metadata.json +1 -1
  98. package/chips/package.json +1 -3
  99. package/common/_common-theme.scss +11 -0
  100. package/common/package.json +1 -3
  101. package/data-table/covalent-core-data-table.metadata.json +1 -1
  102. package/data-table/package.json +1 -3
  103. package/dialogs/_dialog-theme.scss +6 -0
  104. package/dialogs/covalent-core-dialogs.metadata.json +1 -1
  105. package/dialogs/package.json +1 -3
  106. package/dialogs/window-dialog/window-dialog.component.scss +4 -0
  107. package/dynamic-menu/covalent-core-dynamic-menu.metadata.json +1 -1
  108. package/dynamic-menu/dynamic-menu-item/dynamic-menu-item.component.scss +0 -4
  109. package/dynamic-menu/package.json +1 -3
  110. package/esm2015/breadcrumbs/breadcrumb/breadcrumb.component.js +4 -3
  111. package/esm2015/breadcrumbs/breadcrumbs.component.js +3 -2
  112. package/esm2015/breadcrumbs/breadcrumbs.module.js +3 -2
  113. package/esm2015/breadcrumbs/covalent-core-breadcrumbs.js +3 -2
  114. package/esm2015/breadcrumbs/index.js +3 -2
  115. package/esm2015/breadcrumbs/public-api.js +3 -2
  116. package/esm2015/chips/chips.component.js +4 -3
  117. package/esm2015/chips/chips.module.js +3 -2
  118. package/esm2015/chips/covalent-core-chips.js +3 -2
  119. package/esm2015/chips/index.js +3 -2
  120. package/esm2015/chips/public-api.js +3 -2
  121. package/esm2015/common/animations/bounce/bounce.animation.js +3 -2
  122. package/esm2015/common/animations/collapse/collapse.animation.js +3 -2
  123. package/esm2015/common/animations/common/interfaces.js +3 -2
  124. package/esm2015/common/animations/fade/fadeInOut.animation.js +3 -2
  125. package/esm2015/common/animations/flash/flash.animation.js +3 -2
  126. package/esm2015/common/animations/headshake/headshake.animation.js +3 -2
  127. package/esm2015/common/animations/jello/jello.animation.js +3 -2
  128. package/esm2015/common/animations/pulse/pulse.animation.js +3 -2
  129. package/esm2015/common/animations/rotate/rotate.animation.js +3 -2
  130. package/esm2015/common/behaviors/control-value-accesor.mixin.js +3 -2
  131. package/esm2015/common/behaviors/disable-ripple.mixin.js +3 -2
  132. package/esm2015/common/behaviors/disabled.mixin.js +3 -2
  133. package/esm2015/common/common.module.js +3 -2
  134. package/esm2015/common/covalent-core-common.js +3 -2
  135. package/esm2015/common/directives/fullscreen/fullscreen.directive.js +3 -2
  136. package/esm2015/common/forms/auto-trim/auto-trim.directive.js +3 -2
  137. package/esm2015/common/forms/validators/validators.js +3 -2
  138. package/esm2015/common/functions/clipboard.js +3 -2
  139. package/esm2015/common/functions/convert.js +3 -2
  140. package/esm2015/common/functions/download.js +3 -2
  141. package/esm2015/common/functions/file.js +3 -2
  142. package/esm2015/common/index.js +3 -2
  143. package/esm2015/common/pipes/bytes/bytes.pipe.js +3 -2
  144. package/esm2015/common/pipes/decimal-bytes/decimal-bytes.pipe.js +3 -2
  145. package/esm2015/common/pipes/digits/digits.pipe.js +3 -2
  146. package/esm2015/common/pipes/time-ago/time-ago.pipe.js +3 -2
  147. package/esm2015/common/pipes/time-difference/time-difference.pipe.js +3 -2
  148. package/esm2015/common/pipes/time-until/time-until.pipe.js +3 -2
  149. package/esm2015/common/pipes/truncate/truncate.pipe.js +3 -2
  150. package/esm2015/common/public-api.js +3 -2
  151. package/esm2015/common/services/icon.service.js +3 -2
  152. package/esm2015/common/services/router-path.service.js +3 -2
  153. package/esm2015/covalent-core.js +3 -2
  154. package/esm2015/data-table/covalent-core-data-table.js +3 -2
  155. package/esm2015/data-table/data-table-cell/data-table-cell.component.js +4 -3
  156. package/esm2015/data-table/data-table-column/data-table-column.component.js +4 -3
  157. package/esm2015/data-table/data-table-row/data-table-row.component.js +3 -2
  158. package/esm2015/data-table/data-table-table/data-table-table.component.js +4 -3
  159. package/esm2015/data-table/data-table.component.js +6 -5
  160. package/esm2015/data-table/data-table.module.js +3 -2
  161. package/esm2015/data-table/directives/data-table-template.directive.js +3 -2
  162. package/esm2015/data-table/index.js +3 -2
  163. package/esm2015/data-table/public-api.js +3 -2
  164. package/esm2015/data-table/services/data-table.service.js +3 -2
  165. package/esm2015/dialogs/alert-dialog/alert-dialog.component.js +3 -2
  166. package/esm2015/dialogs/confirm-dialog/confirm-dialog.component.js +3 -2
  167. package/esm2015/dialogs/covalent-core-dialogs.js +3 -2
  168. package/esm2015/dialogs/dialog.component.js +4 -3
  169. package/esm2015/dialogs/dialogs.module.js +3 -2
  170. package/esm2015/dialogs/index.js +3 -2
  171. package/esm2015/dialogs/prompt-dialog/prompt-dialog.component.js +4 -3
  172. package/esm2015/dialogs/public-api.js +3 -2
  173. package/esm2015/dialogs/resizable-draggable-dialog/resizable-draggable-dialog.js +14 -13
  174. package/esm2015/dialogs/services/dialog.service.js +3 -2
  175. package/esm2015/dialogs/window-dialog/window-dialog.component.js +4 -3
  176. package/esm2015/dynamic-menu/covalent-core-dynamic-menu.js +3 -2
  177. package/esm2015/dynamic-menu/dynamic-menu-item/dynamic-menu-item.component.js +5 -4
  178. package/esm2015/dynamic-menu/dynamic-menu-item/dynamic-menu-link/dynamic-menu-link.component.js +4 -3
  179. package/esm2015/dynamic-menu/dynamic-menu.component.js +3 -2
  180. package/esm2015/dynamic-menu/dynamic-menu.module.js +3 -2
  181. package/esm2015/dynamic-menu/index.js +3 -2
  182. package/esm2015/dynamic-menu/public_api.js +3 -2
  183. package/esm2015/expansion-panel/covalent-core-expansion-panel.js +3 -2
  184. package/esm2015/expansion-panel/expansion-panel-group.component.js +3 -2
  185. package/esm2015/expansion-panel/expansion-panel.component.js +4 -3
  186. package/esm2015/expansion-panel/expansion-panel.module.js +3 -2
  187. package/esm2015/expansion-panel/index.js +3 -2
  188. package/esm2015/expansion-panel/public-api.js +3 -2
  189. package/esm2015/file/covalent-core-file.js +3 -2
  190. package/esm2015/file/directives/file-drop.directive.js +3 -2
  191. package/esm2015/file/directives/file-select.directive.js +3 -2
  192. package/esm2015/file/file-input/file-input.component.js +3 -2
  193. package/esm2015/file/file-upload/file-upload.component.js +4 -3
  194. package/esm2015/file/file.module.js +3 -2
  195. package/esm2015/file/index.js +3 -2
  196. package/esm2015/file/public-api.js +3 -2
  197. package/esm2015/file/services/file.service.js +3 -2
  198. package/esm2015/index.js +4 -2
  199. package/esm2015/json-formatter/covalent-core-json-formatter.js +3 -2
  200. package/esm2015/json-formatter/index.js +3 -2
  201. package/esm2015/json-formatter/json-formatter.component.js +4 -3
  202. package/esm2015/json-formatter/json-formatter.module.js +3 -2
  203. package/esm2015/json-formatter/public-api.js +3 -2
  204. package/esm2015/layout/covalent-core-layout.js +4 -3
  205. package/esm2015/layout/index.js +4 -3
  206. package/esm2015/layout/layout-card-over/layout-card-over.component.js +4 -3
  207. package/esm2015/layout/layout-footer/layout-footer.component.js +3 -2
  208. package/esm2015/layout/layout-manage-list/layout-manage-list.component.js +4 -3
  209. package/esm2015/layout/layout-manage-list/layout-manage-list.directives.js +7 -6
  210. package/esm2015/layout/layout-nav/layout-nav.component.js +4 -3
  211. package/esm2015/layout/layout-nav-list/layout-nav-list.component.js +4 -3
  212. package/esm2015/layout/layout-nav-list/layout-nav-list.directives.js +7 -6
  213. package/esm2015/layout/layout-toggle.class.js +22 -12
  214. package/esm2015/layout/layout.component.js +4 -3
  215. package/esm2015/layout/layout.directives.js +7 -6
  216. package/esm2015/layout/layout.module.js +3 -2
  217. package/esm2015/layout/navigation-drawer/navigation-drawer.component.js +4 -3
  218. package/esm2015/layout/public-api.js +4 -3
  219. package/esm2015/loading/covalent-core-loading.js +3 -2
  220. package/esm2015/loading/directives/loading.directive.js +3 -2
  221. package/esm2015/loading/index.js +3 -2
  222. package/esm2015/loading/loading.component.js +13 -12
  223. package/esm2015/loading/loading.module.js +3 -2
  224. package/esm2015/loading/public-api.js +3 -2
  225. package/esm2015/loading/services/loading.factory.js +3 -2
  226. package/esm2015/loading/services/loading.service.js +3 -2
  227. package/esm2015/media/covalent-core-media.js +3 -2
  228. package/esm2015/media/directives/media-toggle.directive.js +3 -2
  229. package/esm2015/media/index.js +3 -2
  230. package/esm2015/media/media.module.js +3 -2
  231. package/esm2015/media/public-api.js +3 -2
  232. package/esm2015/media/services/media.service.js +3 -2
  233. package/esm2015/menu/covalent-core-menu.js +3 -2
  234. package/esm2015/menu/index.js +3 -2
  235. package/esm2015/menu/menu.component.js +4 -3
  236. package/esm2015/menu/menu.module.js +3 -2
  237. package/esm2015/menu/public-api.js +3 -2
  238. package/esm2015/message/covalent-core-message.js +3 -2
  239. package/esm2015/message/index.js +3 -2
  240. package/esm2015/message/message.component.js +4 -3
  241. package/esm2015/message/message.module.js +3 -2
  242. package/esm2015/message/public-api.js +3 -2
  243. package/esm2015/nav-links/covalent-core-nav-links.js +3 -2
  244. package/esm2015/nav-links/index.js +3 -2
  245. package/esm2015/nav-links/nav-links.component.js +3 -2
  246. package/esm2015/nav-links/nav-links.module.js +3 -2
  247. package/esm2015/nav-links/public-api.js +3 -2
  248. package/esm2015/notifications/covalent-core-notifications.js +3 -2
  249. package/esm2015/notifications/index.js +3 -2
  250. package/esm2015/notifications/notification-count.component.js +10 -9
  251. package/esm2015/notifications/notifications.module.js +3 -2
  252. package/esm2015/notifications/public-api.js +3 -2
  253. package/esm2015/paging/covalent-core-paging.js +3 -2
  254. package/esm2015/paging/index.js +3 -2
  255. package/esm2015/paging/paging-bar.component.js +4 -3
  256. package/esm2015/paging/paging.module.js +3 -2
  257. package/esm2015/paging/public-api.js +3 -2
  258. package/esm2015/search/covalent-core-search.js +3 -2
  259. package/esm2015/search/index.js +3 -2
  260. package/esm2015/search/public-api.js +3 -2
  261. package/esm2015/search/search-box/search-box.component.js +4 -3
  262. package/esm2015/search/search-input/search-input.component.js +4 -3
  263. package/esm2015/search/search.module.js +3 -2
  264. package/esm2015/sidesheet/covalent-core-sidesheet.js +3 -2
  265. package/esm2015/sidesheet/index.js +3 -2
  266. package/esm2015/sidesheet/public-api.js +3 -2
  267. package/esm2015/sidesheet/sidesheet.component.js +4 -3
  268. package/esm2015/sidesheet/sidesheet.module.js +3 -2
  269. package/esm2015/steps/covalent-core-steps.js +3 -2
  270. package/esm2015/steps/index.js +3 -2
  271. package/esm2015/steps/nav/nav-step-link/nav-step-link.component.js +4 -3
  272. package/esm2015/steps/nav/nav-steps-horizontal/nav-steps-horizontal.component.js +4 -3
  273. package/esm2015/steps/nav/nav-steps-vertical/nav-steps-vertical.component.js +4 -3
  274. package/esm2015/steps/public-api.js +3 -2
  275. package/esm2015/steps/step-body/step-body.component.js +4 -3
  276. package/esm2015/steps/step-header/step-header.component.js +4 -3
  277. package/esm2015/steps/step.component.js +6 -5
  278. package/esm2015/steps/steps.component.js +6 -5
  279. package/esm2015/steps/steps.module.js +3 -2
  280. package/esm2015/tab-select/covalent-core-tab-select.js +3 -2
  281. package/esm2015/tab-select/index.js +3 -2
  282. package/esm2015/tab-select/public-api.js +3 -2
  283. package/esm2015/tab-select/tab-option.component.js +3 -2
  284. package/esm2015/tab-select/tab-select.component.js +3 -2
  285. package/esm2015/tab-select/tab-select.module.js +3 -2
  286. package/esm2015/user-profile/covalent-core-user-profile.js +3 -2
  287. package/esm2015/user-profile/index.js +3 -2
  288. package/esm2015/user-profile/public_api.js +3 -2
  289. package/esm2015/user-profile/user-profile-menu/user-profile-menu.component.js +4 -3
  290. package/esm2015/user-profile/user-profile.component.js +3 -2
  291. package/esm2015/user-profile/user-profile.module.js +3 -2
  292. package/esm2015/virtual-scroll/covalent-core-virtual-scroll.js +3 -2
  293. package/esm2015/virtual-scroll/index.js +3 -2
  294. package/esm2015/virtual-scroll/public-api.js +3 -2
  295. package/esm2015/virtual-scroll/virtual-scroll-container.component.js +4 -3
  296. package/esm2015/virtual-scroll/virtual-scroll-row.directive.js +3 -2
  297. package/esm2015/virtual-scroll/virtual-scroll.module.js +3 -2
  298. package/expansion-panel/covalent-core-expansion-panel.metadata.json +1 -1
  299. package/expansion-panel/package.json +1 -3
  300. package/fesm2015/covalent-core-breadcrumbs.js +13 -7
  301. package/fesm2015/covalent-core-breadcrumbs.js.map +1 -1
  302. package/fesm2015/covalent-core-chips.js +11 -6
  303. package/fesm2015/covalent-core-chips.js.map +1 -1
  304. package/fesm2015/covalent-core-common.js +62 -31
  305. package/fesm2015/covalent-core-common.js.map +1 -1
  306. package/fesm2015/covalent-core-data-table.js +28 -17
  307. package/fesm2015/covalent-core-data-table.js.map +1 -1
  308. package/fesm2015/covalent-core-dialogs.js +36 -25
  309. package/fesm2015/covalent-core-dialogs.js.map +1 -1
  310. package/fesm2015/covalent-core-dynamic-menu.js +17 -10
  311. package/fesm2015/covalent-core-dynamic-menu.js.map +1 -1
  312. package/fesm2015/covalent-core-expansion-panel.js +13 -7
  313. package/fesm2015/covalent-core-expansion-panel.js.map +1 -1
  314. package/fesm2015/covalent-core-file.js +19 -10
  315. package/fesm2015/covalent-core-file.js.map +1 -1
  316. package/fesm2015/covalent-core-json-formatter.js +11 -6
  317. package/fesm2015/covalent-core-json-formatter.js.map +1 -1
  318. package/fesm2015/covalent-core-layout.js +65 -41
  319. package/fesm2015/covalent-core-layout.js.map +1 -1
  320. package/fesm2015/covalent-core-loading.js +26 -18
  321. package/fesm2015/covalent-core-loading.js.map +1 -1
  322. package/fesm2015/covalent-core-media.js +12 -6
  323. package/fesm2015/covalent-core-media.js.map +1 -1
  324. package/fesm2015/covalent-core-menu.js +11 -6
  325. package/fesm2015/covalent-core-menu.js.map +1 -1
  326. package/fesm2015/covalent-core-message.js +11 -6
  327. package/fesm2015/covalent-core-message.js.map +1 -1
  328. package/fesm2015/covalent-core-nav-links.js +10 -5
  329. package/fesm2015/covalent-core-nav-links.js.map +1 -1
  330. package/fesm2015/covalent-core-notifications.js +17 -12
  331. package/fesm2015/covalent-core-notifications.js.map +1 -1
  332. package/fesm2015/covalent-core-paging.js +11 -6
  333. package/fesm2015/covalent-core-paging.js.map +1 -1
  334. package/fesm2015/covalent-core-search.js +14 -8
  335. package/fesm2015/covalent-core-search.js.map +1 -1
  336. package/fesm2015/covalent-core-sidesheet.js +11 -6
  337. package/fesm2015/covalent-core-sidesheet.js.map +1 -1
  338. package/fesm2015/covalent-core-steps.js +33 -22
  339. package/fesm2015/covalent-core-steps.js.map +1 -1
  340. package/fesm2015/covalent-core-tab-select.js +12 -6
  341. package/fesm2015/covalent-core-tab-select.js.map +1 -1
  342. package/fesm2015/covalent-core-user-profile.js +13 -7
  343. package/fesm2015/covalent-core-user-profile.js.map +1 -1
  344. package/fesm2015/covalent-core-virtual-scroll.js +13 -7
  345. package/fesm2015/covalent-core-virtual-scroll.js.map +1 -1
  346. package/fesm2015/covalent-core.js +4 -2
  347. package/fesm2015/covalent-core.js.map +1 -1
  348. package/file/covalent-core-file.metadata.json +1 -1
  349. package/file/package.json +1 -3
  350. package/json-formatter/covalent-core-json-formatter.metadata.json +1 -1
  351. package/json-formatter/package.json +1 -3
  352. package/layout/covalent-core-layout.metadata.json +1 -1
  353. package/layout/layout-manage-list/layout-manage-list.directives.d.ts +4 -4
  354. package/layout/layout-nav-list/layout-nav-list.directives.d.ts +4 -4
  355. package/layout/layout-toggle.class.d.ts +1 -1
  356. package/layout/layout.directives.d.ts +4 -4
  357. package/layout/package.json +1 -3
  358. package/loading/covalent-core-loading.metadata.json +1 -1
  359. package/loading/package.json +1 -3
  360. package/media/package.json +1 -3
  361. package/menu/covalent-core-menu.metadata.json +1 -1
  362. package/menu/package.json +1 -3
  363. package/message/covalent-core-message.metadata.json +1 -1
  364. package/message/package.json +1 -3
  365. package/nav-links/package.json +1 -3
  366. package/notifications/covalent-core-notifications.metadata.json +1 -1
  367. package/notifications/package.json +1 -3
  368. package/package.json +12 -12
  369. package/paging/covalent-core-paging.metadata.json +1 -1
  370. package/paging/package.json +1 -3
  371. package/schematics/components.js +1 -0
  372. package/schematics/components.js.map +1 -1
  373. package/schematics/ng-add/files/theme.scss +1 -1
  374. package/schematics/ng-add/index.js +4 -6
  375. package/schematics/ng-add/index.js.map +1 -1
  376. package/schematics/ng-update/index.js +1 -0
  377. package/schematics/ng-update/index.js.map +1 -1
  378. package/schematics/ng-update/target-version.js +1 -0
  379. package/schematics/ng-update/target-version.js.map +1 -1
  380. package/schematics/version-names.js +1 -0
  381. package/schematics/version-names.js.map +1 -1
  382. package/search/covalent-core-search.metadata.json +1 -1
  383. package/search/package.json +1 -3
  384. package/sidesheet/covalent-core-sidesheet.metadata.json +1 -1
  385. package/sidesheet/package.json +1 -3
  386. package/steps/covalent-core-steps.metadata.json +1 -1
  387. package/steps/package.json +1 -3
  388. package/tab-select/covalent-core-tab-select.metadata.json +1 -1
  389. package/tab-select/package.json +1 -3
  390. package/theming/prebuilt/blue-grey-deep-orange.css +193 -28
  391. package/theming/prebuilt/blue-grey-deep-orange.css.map +1 -1
  392. package/theming/prebuilt/blue-orange.css +193 -28
  393. package/theming/prebuilt/blue-orange.css.map +1 -1
  394. package/theming/prebuilt/indigo-pink.css +193 -28
  395. package/theming/prebuilt/indigo-pink.css.map +1 -1
  396. package/theming/prebuilt/orange-light-blue.css +193 -28
  397. package/theming/prebuilt/orange-light-blue.css.map +1 -1
  398. package/theming/prebuilt/teal-orange.css +193 -28
  399. package/theming/prebuilt/teal-orange.css.map +1 -1
  400. package/user-profile/covalent-core-user-profile.metadata.json +1 -1
  401. package/user-profile/package.json +1 -3
  402. package/virtual-scroll/covalent-core-virtual-scroll.metadata.json +1 -1
  403. package/virtual-scroll/package.json +1 -3
  404. package/esm5/breadcrumbs/breadcrumb/breadcrumb.component.js +0 -216
  405. package/esm5/breadcrumbs/breadcrumbs.component.js +0 -286
  406. package/esm5/breadcrumbs/breadcrumbs.module.js +0 -23
  407. package/esm5/breadcrumbs/covalent-core-breadcrumbs.js +0 -9
  408. package/esm5/breadcrumbs/index.js +0 -6
  409. package/esm5/breadcrumbs/public-api.js +0 -8
  410. package/esm5/chips/chips.component.js +0 -1453
  411. package/esm5/chips/chips.module.js +0 -26
  412. package/esm5/chips/covalent-core-chips.js +0 -9
  413. package/esm5/chips/index.js +0 -6
  414. package/esm5/chips/public-api.js +0 -7
  415. package/esm5/common/animations/bounce/bounce.animation.js +0 -75
  416. package/esm5/common/animations/collapse/collapse.animation.js +0 -66
  417. package/esm5/common/animations/common/interfaces.js +0 -17
  418. package/esm5/common/animations/fade/fadeInOut.animation.js +0 -52
  419. package/esm5/common/animations/flash/flash.animation.js +0 -39
  420. package/esm5/common/animations/headshake/headshake.animation.js +0 -40
  421. package/esm5/common/animations/jello/jello.animation.js +0 -43
  422. package/esm5/common/animations/pulse/pulse.animation.js +0 -37
  423. package/esm5/common/animations/rotate/rotate.animation.js +0 -40
  424. package/esm5/common/behaviors/control-value-accesor.mixin.js +0 -127
  425. package/esm5/common/behaviors/disable-ripple.mixin.js +0 -75
  426. package/esm5/common/behaviors/disabled.mixin.js +0 -75
  427. package/esm5/common/common.module.js +0 -57
  428. package/esm5/common/covalent-core-common.js +0 -11
  429. package/esm5/common/directives/fullscreen/fullscreen.directive.js +0 -228
  430. package/esm5/common/forms/auto-trim/auto-trim.directive.js +0 -52
  431. package/esm5/common/forms/validators/validators.js +0 -73
  432. package/esm5/common/functions/clipboard.js +0 -29
  433. package/esm5/common/functions/convert.js +0 -120
  434. package/esm5/common/functions/download.js +0 -93
  435. package/esm5/common/functions/file.js +0 -28
  436. package/esm5/common/index.js +0 -6
  437. package/esm5/common/pipes/bytes/bytes.pipe.js +0 -54
  438. package/esm5/common/pipes/decimal-bytes/decimal-bytes.pipe.js +0 -54
  439. package/esm5/common/pipes/digits/digits.pipe.js +0 -72
  440. package/esm5/common/pipes/time-ago/time-ago.pipe.js +0 -89
  441. package/esm5/common/pipes/time-difference/time-difference.pipe.js +0 -74
  442. package/esm5/common/pipes/time-until/time-until.pipe.js +0 -89
  443. package/esm5/common/pipes/truncate/truncate.pipe.js +0 -42
  444. package/esm5/common/public-api.js +0 -43
  445. package/esm5/common/services/icon.service.js +0 -1118
  446. package/esm5/common/services/router-path.service.js +0 -69
  447. package/esm5/covalent-core.js +0 -9
  448. package/esm5/data-table/covalent-core-data-table.js +0 -9
  449. package/esm5/data-table/data-table-cell/data-table-cell.component.js +0 -98
  450. package/esm5/data-table/data-table-column/data-table-column.component.js +0 -257
  451. package/esm5/data-table/data-table-row/data-table-row.component.js +0 -145
  452. package/esm5/data-table/data-table-table/data-table-table.component.js +0 -40
  453. package/esm5/data-table/data-table.component.js +0 -2079
  454. package/esm5/data-table/data-table.module.js +0 -42
  455. package/esm5/data-table/directives/data-table-template.directive.js +0 -31
  456. package/esm5/data-table/index.js +0 -6
  457. package/esm5/data-table/public-api.js +0 -13
  458. package/esm5/data-table/services/data-table.service.js +0 -184
  459. package/esm5/dialogs/alert-dialog/alert-dialog.component.js +0 -48
  460. package/esm5/dialogs/confirm-dialog/confirm-dialog.component.js +0 -63
  461. package/esm5/dialogs/covalent-core-dialogs.js +0 -10
  462. package/esm5/dialogs/dialog.component.js +0 -76
  463. package/esm5/dialogs/dialogs.module.js +0 -60
  464. package/esm5/dialogs/index.js +0 -6
  465. package/esm5/dialogs/prompt-dialog/prompt-dialog.component.js +0 -100
  466. package/esm5/dialogs/public-api.js +0 -12
  467. package/esm5/dialogs/resizable-draggable-dialog/resizable-draggable-dialog.js +0 -356
  468. package/esm5/dialogs/services/dialog.service.js +0 -441
  469. package/esm5/dialogs/window-dialog/window-dialog.component.js +0 -60
  470. package/esm5/dynamic-menu/covalent-core-dynamic-menu.js +0 -10
  471. package/esm5/dynamic-menu/dynamic-menu-item/dynamic-menu-item.component.js +0 -45
  472. package/esm5/dynamic-menu/dynamic-menu-item/dynamic-menu-link/dynamic-menu-link.component.js +0 -39
  473. package/esm5/dynamic-menu/dynamic-menu.component.js +0 -94
  474. package/esm5/dynamic-menu/dynamic-menu.module.js +0 -29
  475. package/esm5/dynamic-menu/index.js +0 -6
  476. package/esm5/dynamic-menu/public_api.js +0 -8
  477. package/esm5/expansion-panel/covalent-core-expansion-panel.js +0 -9
  478. package/esm5/expansion-panel/expansion-panel-group.component.js +0 -251
  479. package/esm5/expansion-panel/expansion-panel.component.js +0 -344
  480. package/esm5/expansion-panel/expansion-panel.module.js +0 -34
  481. package/esm5/expansion-panel/index.js +0 -6
  482. package/esm5/expansion-panel/public-api.js +0 -8
  483. package/esm5/file/covalent-core-file.js +0 -9
  484. package/esm5/file/directives/file-drop.directive.js +0 -276
  485. package/esm5/file/directives/file-select.directive.js +0 -124
  486. package/esm5/file/file-input/file-input.component.js +0 -225
  487. package/esm5/file/file-upload/file-upload.component.js +0 -284
  488. package/esm5/file/file.module.js +0 -38
  489. package/esm5/file/index.js +0 -6
  490. package/esm5/file/public-api.js +0 -11
  491. package/esm5/file/services/file.service.js +0 -137
  492. package/esm5/index.js +0 -5
  493. package/esm5/json-formatter/covalent-core-json-formatter.js +0 -9
  494. package/esm5/json-formatter/index.js +0 -6
  495. package/esm5/json-formatter/json-formatter.component.js +0 -433
  496. package/esm5/json-formatter/json-formatter.module.js +0 -23
  497. package/esm5/json-formatter/public-api.js +0 -7
  498. package/esm5/layout/covalent-core-layout.js +0 -9
  499. package/esm5/layout/index.js +0 -6
  500. package/esm5/layout/layout-card-over/layout-card-over.component.js +0 -72
  501. package/esm5/layout/layout-footer/layout-footer.component.js +0 -77
  502. package/esm5/layout/layout-manage-list/layout-manage-list.component.js +0 -175
  503. package/esm5/layout/layout-manage-list/layout-manage-list.directives.js +0 -147
  504. package/esm5/layout/layout-nav/layout-nav.component.js +0 -108
  505. package/esm5/layout/layout-nav-list/layout-nav-list.component.js +0 -257
  506. package/esm5/layout/layout-nav-list/layout-nav-list.directives.js +0 -147
  507. package/esm5/layout/layout-toggle.class.js +0 -214
  508. package/esm5/layout/layout.component.js +0 -175
  509. package/esm5/layout/layout.directives.js +0 -144
  510. package/esm5/layout/layout.module.js +0 -67
  511. package/esm5/layout/navigation-drawer/navigation-drawer.component.js +0 -364
  512. package/esm5/layout/public-api.js +0 -17
  513. package/esm5/loading/covalent-core-loading.js +0 -9
  514. package/esm5/loading/directives/loading.directive.js +0 -304
  515. package/esm5/loading/index.js +0 -6
  516. package/esm5/loading/loading.component.js +0 -367
  517. package/esm5/loading/loading.module.js +0 -33
  518. package/esm5/loading/public-api.js +0 -10
  519. package/esm5/loading/services/loading.factory.js +0 -378
  520. package/esm5/loading/services/loading.service.js +0 -494
  521. package/esm5/media/covalent-core-media.js +0 -9
  522. package/esm5/media/directives/media-toggle.directive.js +0 -261
  523. package/esm5/media/index.js +0 -6
  524. package/esm5/media/media.module.js +0 -23
  525. package/esm5/media/public-api.js +0 -8
  526. package/esm5/media/services/media.service.js +0 -229
  527. package/esm5/menu/covalent-core-menu.js +0 -9
  528. package/esm5/menu/index.js +0 -6
  529. package/esm5/menu/menu.component.js +0 -19
  530. package/esm5/menu/menu.module.js +0 -25
  531. package/esm5/menu/public-api.js +0 -7
  532. package/esm5/message/covalent-core-message.js +0 -9
  533. package/esm5/message/index.js +0 -6
  534. package/esm5/message/message.component.js +0 -402
  535. package/esm5/message/message.module.js +0 -24
  536. package/esm5/message/public-api.js +0 -7
  537. package/esm5/nav-links/covalent-core-nav-links.js +0 -9
  538. package/esm5/nav-links/index.js +0 -6
  539. package/esm5/nav-links/nav-links.component.js +0 -171
  540. package/esm5/nav-links/nav-links.module.js +0 -40
  541. package/esm5/nav-links/public-api.js +0 -7
  542. package/esm5/notifications/covalent-core-notifications.js +0 -9
  543. package/esm5/notifications/index.js +0 -6
  544. package/esm5/notifications/notification-count.component.js +0 -268
  545. package/esm5/notifications/notifications.module.js +0 -23
  546. package/esm5/notifications/public-api.js +0 -7
  547. package/esm5/paging/covalent-core-paging.js +0 -9
  548. package/esm5/paging/index.js +0 -6
  549. package/esm5/paging/paging-bar.component.js +0 -542
  550. package/esm5/paging/paging.module.js +0 -23
  551. package/esm5/paging/public-api.js +0 -7
  552. package/esm5/search/covalent-core-search.js +0 -9
  553. package/esm5/search/index.js +0 -6
  554. package/esm5/search/public-api.js +0 -8
  555. package/esm5/search/search-box/search-box.component.js +0 -298
  556. package/esm5/search/search-input/search-input.component.js +0 -297
  557. package/esm5/search/search.module.js +0 -26
  558. package/esm5/sidesheet/covalent-core-sidesheet.js +0 -9
  559. package/esm5/sidesheet/index.js +0 -6
  560. package/esm5/sidesheet/public-api.js +0 -7
  561. package/esm5/sidesheet/sidesheet.component.js +0 -89
  562. package/esm5/sidesheet/sidesheet.module.js +0 -30
  563. package/esm5/steps/covalent-core-steps.js +0 -9
  564. package/esm5/steps/index.js +0 -6
  565. package/esm5/steps/nav/nav-step-link/nav-step-link.component.js +0 -165
  566. package/esm5/steps/nav/nav-steps-horizontal/nav-steps-horizontal.component.js +0 -464
  567. package/esm5/steps/nav/nav-steps-vertical/nav-steps-vertical.component.js +0 -143
  568. package/esm5/steps/public-api.js +0 -13
  569. package/esm5/steps/step-body/step-body.component.js +0 -103
  570. package/esm5/steps/step-header/step-header.component.js +0 -101
  571. package/esm5/steps/step.component.js +0 -399
  572. package/esm5/steps/steps.component.js +0 -313
  573. package/esm5/steps/steps.module.js +0 -47
  574. package/esm5/tab-select/covalent-core-tab-select.js +0 -9
  575. package/esm5/tab-select/index.js +0 -6
  576. package/esm5/tab-select/public-api.js +0 -8
  577. package/esm5/tab-select/tab-option.component.js +0 -86
  578. package/esm5/tab-select/tab-select.component.js +0 -344
  579. package/esm5/tab-select/tab-select.module.js +0 -34
  580. package/esm5/user-profile/covalent-core-user-profile.js +0 -9
  581. package/esm5/user-profile/index.js +0 -6
  582. package/esm5/user-profile/public_api.js +0 -8
  583. package/esm5/user-profile/user-profile-menu/user-profile-menu.component.js +0 -42
  584. package/esm5/user-profile/user-profile.component.js +0 -29
  585. package/esm5/user-profile/user-profile.module.js +0 -36
  586. package/esm5/virtual-scroll/covalent-core-virtual-scroll.js +0 -9
  587. package/esm5/virtual-scroll/index.js +0 -6
  588. package/esm5/virtual-scroll/public-api.js +0 -8
  589. package/esm5/virtual-scroll/virtual-scroll-container.component.js +0 -468
  590. package/esm5/virtual-scroll/virtual-scroll-row.directive.js +0 -24
  591. package/esm5/virtual-scroll/virtual-scroll.module.js +0 -24
  592. package/fesm5/covalent-core-breadcrumbs.js +0 -535
  593. package/fesm5/covalent-core-breadcrumbs.js.map +0 -1
  594. package/fesm5/covalent-core-chips.js +0 -1484
  595. package/fesm5/covalent-core-chips.js.map +0 -1
  596. package/fesm5/covalent-core-common.js +0 -2961
  597. package/fesm5/covalent-core-common.js.map +0 -1
  598. package/fesm5/covalent-core-data-table.js +0 -2863
  599. package/fesm5/covalent-core-data-table.js.map +0 -1
  600. package/fesm5/covalent-core-dialogs.js +0 -1189
  601. package/fesm5/covalent-core-dialogs.js.map +0 -1
  602. package/fesm5/covalent-core-dynamic-menu.js +0 -214
  603. package/fesm5/covalent-core-dynamic-menu.js.map +0 -1
  604. package/fesm5/covalent-core-expansion-panel.js +0 -631
  605. package/fesm5/covalent-core-expansion-panel.js.map +0 -1
  606. package/fesm5/covalent-core-file.js +0 -1068
  607. package/fesm5/covalent-core-file.js.map +0 -1
  608. package/fesm5/covalent-core-json-formatter.js +0 -470
  609. package/fesm5/covalent-core-json-formatter.js.map +0 -1
  610. package/fesm5/covalent-core-layout.js +0 -1906
  611. package/fesm5/covalent-core-layout.js.map +0 -1
  612. package/fesm5/covalent-core-loading.js +0 -1562
  613. package/fesm5/covalent-core-loading.js.map +0 -1
  614. package/fesm5/covalent-core-media.js +0 -522
  615. package/fesm5/covalent-core-media.js.map +0 -1
  616. package/fesm5/covalent-core-menu.js +0 -58
  617. package/fesm5/covalent-core-menu.js.map +0 -1
  618. package/fesm5/covalent-core-message.js +0 -439
  619. package/fesm5/covalent-core-message.js.map +0 -1
  620. package/fesm5/covalent-core-nav-links.js +0 -224
  621. package/fesm5/covalent-core-nav-links.js.map +0 -1
  622. package/fesm5/covalent-core-notifications.js +0 -303
  623. package/fesm5/covalent-core-notifications.js.map +0 -1
  624. package/fesm5/covalent-core-paging.js +0 -579
  625. package/fesm5/covalent-core-paging.js.map +0 -1
  626. package/fesm5/covalent-core-search.js +0 -623
  627. package/fesm5/covalent-core-search.js.map +0 -1
  628. package/fesm5/covalent-core-sidesheet.js +0 -129
  629. package/fesm5/covalent-core-sidesheet.js.map +0 -1
  630. package/fesm5/covalent-core-steps.js +0 -1704
  631. package/fesm5/covalent-core-steps.js.map +0 -1
  632. package/fesm5/covalent-core-tab-select.js +0 -467
  633. package/fesm5/covalent-core-tab-select.js.map +0 -1
  634. package/fesm5/covalent-core-user-profile.js +0 -118
  635. package/fesm5/covalent-core-user-profile.js.map +0 -1
  636. package/fesm5/covalent-core-virtual-scroll.js +0 -526
  637. package/fesm5/covalent-core-virtual-scroll.js.map +0 -1
  638. package/fesm5/covalent-core.js +0 -10
  639. package/fesm5/covalent-core.js.map +0 -1
@@ -15,7 +15,8 @@ import { mixinControlValueAccessor } from '@covalent/core/common';
15
15
 
16
16
  /**
17
17
  * @fileoverview added by tsickle
18
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
18
+ * Generated from: data-table-row/data-table-row.component.ts
19
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
19
20
  */
20
21
  class TdDataTableColumnRowComponent {
21
22
  /**
@@ -145,7 +146,8 @@ if (false) {
145
146
 
146
147
  /**
147
148
  * @fileoverview added by tsickle
148
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
149
+ * Generated from: directives/data-table-template.directive.ts
150
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
149
151
  */
150
152
  class TdDataTableTemplateDirective extends TemplatePortalDirective {
151
153
  /**
@@ -174,12 +176,13 @@ if (false) {
174
176
 
175
177
  /**
176
178
  * @fileoverview added by tsickle
177
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
179
+ * Generated from: data-table.component.ts
180
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
178
181
  */
179
182
  /** @enum {string} */
180
183
  const TdDataTableSortingOrder = {
181
- Ascending: 'ASC',
182
- Descending: 'DESC',
184
+ Ascending: "ASC",
185
+ Descending: "DESC",
183
186
  };
184
187
  /**
185
188
  * @record
@@ -1506,7 +1509,7 @@ TdDataTableComponent.decorators = [
1506
1509
  template: "<table td-data-table [style.left.px]=\"columnsLeftScroll\" [class.mat-selectable]=\"selectable\">\n <thead class=\"td-data-table-head\" (dragover)=\"_handleColumnDrag($event)\">\n <tr td-data-table-column-row>\n <th td-data-table-column class=\"mat-checkbox-column\" *ngIf=\"selectable\">\n <mat-checkbox\n #checkBoxAll\n *ngIf=\"multiple\"\n [disabled]=\"!hasData\"\n [indeterminate]=\"indeterminate && !allSelected && hasData\"\n [checked]=\"allSelected && hasData\"\n (click)=\"blockEvent($event); _selectAll(!checkBoxAll.checked)\"\n (keyup.enter)=\"_selectAll(!checkBoxAll.checked)\"\n (keyup.space)=\"_selectAll(!checkBoxAll.checked)\"\n (keydown.space)=\"blockEvent($event)\"\n ></mat-checkbox>\n </th>\n <th\n td-data-table-column\n #columnElement\n *ngFor=\"let column of columns; let i = index; let last = last\"\n [style.min-width.px]=\"getColumnWidth(i)\"\n [style.max-width.px]=\"getColumnWidth(i)\"\n [name]=\"column.name\"\n [numeric]=\"column.numeric\"\n [active]=\"(column.sortable || sortable) && column === sortByColumn\"\n [sortable]=\"column.sortable || (sortable && column.sortable !== false)\"\n [sortOrder]=\"sortOrderEnum\"\n [hidden]=\"column.hidden\"\n [isColumnSortOrder]=\"!!column.columnSortOrder\"\n (sortChange)=\"handleSort(column)\"\n >\n <span [matTooltip]=\"column.tooltip\" [class]=\"column.columnSortOrder ? 'td-table-header-label' : ''\">\n {{ column.label }}\n <span *ngIf=\"column.columnSortOrder\" class=\"td-data-table-sort-badge\">\n {{ column.columnSortOrder || '' }}\n\n <span\n td-column-resizer\n *ngIf=\"resizableColumns\"\n draggable=\"true\"\n class=\"td-data-table-column-resizer\"\n [class.td-resizing]=\"i === resizingColumn\"\n (mousedown)=\"_handleStartColumnDrag(i, $event)\"\n (dragstart)=\"$event?.dataTransfer?.setData('text', '')\"\n (drag)=\"_handleColumnDrag($event)\"\n (dragend)=\"_handleEndColumnDrag()\"\n (mouseup)=\"_handleEndColumnDrag()\"\n >\n <span class=\"td-data-table-column-separator\"></span>\n </span>\n </span>\n </span>\n </th>\n </tr>\n </thead>\n</table>\n<div #scrollableDiv class=\"td-data-table-scrollable\" (scroll)=\"handleScroll($event)\">\n <div [style.height.px]=\"totalHeight\"></div>\n <table\n td-data-table\n [style.transform]=\"offsetTransform\"\n [style.position]=\"'absolute'\"\n [class.mat-selectable]=\"selectable\"\n [class.mat-clickable]=\"clickable\"\n >\n <tbody class=\"td-data-table-body\">\n <tr\n td-data-table-row\n #dtRow\n [tabIndex]=\"selectable ? 0 : -1\"\n [selected]=\"(clickable || selectable) && isRowSelected(row)\"\n *ngFor=\"let row of virtualData; let rowIndex = index\"\n (click)=\"handleRowClick(row, fromRow + rowIndex, $event)\"\n (keyup)=\"selectable && _rowKeyup($event, row, rowIndex)\"\n (keydown.space)=\"blockEvent($event)\"\n (keydown.shift.space)=\"blockEvent($event)\"\n (keydown.shift)=\"disableTextSelection()\"\n (keyup.shift)=\"enableTextSelection()\"\n >\n <td td-data-table-cell class=\"mat-checkbox-cell\" *ngIf=\"selectable\">\n <mat-pseudo-checkbox\n [state]=\"dtRow.selected ? 'checked' : 'unchecked'\"\n (mousedown)=\"disableTextSelection()\"\n (mouseup)=\"enableTextSelection()\"\n stopRowClick\n (click)=\"select(row, $event, fromRow + rowIndex)\"\n ></mat-pseudo-checkbox>\n </td>\n <td\n td-data-table-cell\n [numeric]=\"column.numeric\"\n [hidden]=\"column.hidden\"\n *ngFor=\"let column of columns; let i = index\"\n [style.min-width.px]=\"getColumnWidth(i)\"\n [style.max-width.px]=\"getColumnWidth(i)\"\n >\n <span *ngIf=\"!getTemplateRef(column.name)\">\n {{ column.format ? column.format(getCellValue(column, row)) : getCellValue(column, row) }}\n </span>\n <ng-template\n *ngIf=\"getTemplateRef(column.name)\"\n [ngTemplateOutlet]=\"getTemplateRef(column.name)\"\n [ngTemplateOutletContext]=\"{\n value: getCellValue(column, row),\n row: row,\n column: column.name,\n index: rowIndex\n }\"\n ></ng-template>\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n<ng-content></ng-content>\n",
1507
1510
  inputs: ['value'],
1508
1511
  changeDetection: ChangeDetectionStrategy.OnPush,
1509
- styles: [".td-data-table-sort-badge{height:16px;width:16px;border-radius:50%;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;margin-left:4px}:host{display:block;overflow:hidden}:host .td-data-table-scrollable{position:relative;overflow:auto;height:calc(100% - 56px)}.td-table-header-label{display:-ms-flexbox;display:flex}.td-data-table-column-resizer{right:0;width:6px;cursor:col-resize}.td-data-table-column-resizer,.td-data-table-column-resizer .td-data-table-column-separator{position:absolute;height:100%;top:0}.td-data-table-column-resizer .td-data-table-column-separator{left:2px}.td-data-table-column-resizer.td-resizing{cursor:-webkit-grabbing}table.td-data-table{width:auto!important}table.td-data-table.mat-selectable tbody>tr.td-data-table-row{transition:background-color .2s}table.td-data-table.mat-selectable .td-data-table-column:first-child>.td-data-table-column-content-wrapper,table.td-data-table.mat-selectable td.td-data-table-cell:first-child>.td-data-table-column-content-wrapper,table.td-data-table.mat-selectable th.td-data-table-column:first-child>.td-data-table-column-content-wrapper{width:18px;min-width:18px;padding:0 24px}table.td-data-table.mat-selectable .td-data-table-column:nth-child(2)>.td-data-table-column-content-wrapper,table.td-data-table.mat-selectable td.td-data-table-cell:nth-child(2)>.td-data-table-column-content-wrapper,table.td-data-table.mat-selectable th.td-data-table-column:nth-child(2)>.td-data-table-column-content-wrapper{padding-left:0}[dir=rtl] table.td-data-table.mat-selectable .td-data-table-column:nth-child(2)>.td-data-table-column-content-wrapper,[dir=rtl] table.td-data-table.mat-selectable td.td-data-table-cell:nth-child(2)>.td-data-table-column-content-wrapper,[dir=rtl] table.td-data-table.mat-selectable th.td-data-table-column:nth-child(2)>.td-data-table-column-content-wrapper{padding-right:0;padding-left:28px}table.td-data-table td.mat-checkbox-cell,table.td-data-table th.mat-checkbox-column{min-width:42px;width:42px;font-size:0!important}table.td-data-table td.mat-checkbox-cell mat-pseudo-checkbox,table.td-data-table th.mat-checkbox-column mat-pseudo-checkbox{width:18px;height:18px}::ng-deep table.td-data-table td.mat-checkbox-cell mat-pseudo-checkbox.mat-pseudo-checkbox-checked::after,::ng-deep table.td-data-table th.mat-checkbox-column mat-pseudo-checkbox.mat-pseudo-checkbox-checked::after{width:11px!important;height:4px!important}table.td-data-table td.mat-checkbox-cell mat-checkbox ::ng-deep .mat-checkbox-inner-container,table.td-data-table th.mat-checkbox-column mat-checkbox ::ng-deep .mat-checkbox-inner-container{width:18px;height:18px;margin:0}"]
1512
+ styles: [".td-data-table-sort-badge{-ms-flex-align:center;-ms-flex-pack:center;align-items:center;border-radius:50%;display:-ms-flexbox;display:flex;height:16px;justify-content:center;margin-left:4px;width:16px}:host{display:block;overflow:hidden}:host .td-data-table-scrollable{height:calc(100% - 56px);overflow:auto;position:relative}.td-table-header-label{display:-ms-flexbox;display:flex}.td-data-table-column-resizer{cursor:col-resize;right:0;width:6px}.td-data-table-column-resizer,.td-data-table-column-resizer .td-data-table-column-separator{height:100%;position:absolute;top:0}.td-data-table-column-resizer .td-data-table-column-separator{left:2px}.td-data-table-column-resizer.td-resizing{cursor:-webkit-grabbing}table.td-data-table{width:auto!important}table.td-data-table.mat-selectable tbody>tr.td-data-table-row{transition:background-color .2s}table.td-data-table.mat-selectable .td-data-table-column:first-child>.td-data-table-column-content-wrapper,table.td-data-table.mat-selectable td.td-data-table-cell:first-child>.td-data-table-column-content-wrapper,table.td-data-table.mat-selectable th.td-data-table-column:first-child>.td-data-table-column-content-wrapper{min-width:18px;padding:0 24px;width:18px}table.td-data-table.mat-selectable .td-data-table-column:nth-child(2)>.td-data-table-column-content-wrapper,table.td-data-table.mat-selectable td.td-data-table-cell:nth-child(2)>.td-data-table-column-content-wrapper,table.td-data-table.mat-selectable th.td-data-table-column:nth-child(2)>.td-data-table-column-content-wrapper{padding-left:0}[dir=rtl] table.td-data-table.mat-selectable .td-data-table-column:nth-child(2)>.td-data-table-column-content-wrapper,[dir=rtl] table.td-data-table.mat-selectable td.td-data-table-cell:nth-child(2)>.td-data-table-column-content-wrapper,[dir=rtl] table.td-data-table.mat-selectable th.td-data-table-column:nth-child(2)>.td-data-table-column-content-wrapper{padding-left:28px;padding-right:0}table.td-data-table td.mat-checkbox-cell,table.td-data-table th.mat-checkbox-column{font-size:0!important;min-width:42px;width:42px}table.td-data-table td.mat-checkbox-cell mat-pseudo-checkbox,table.td-data-table th.mat-checkbox-column mat-pseudo-checkbox{height:18px;width:18px}::ng-deep table.td-data-table td.mat-checkbox-cell mat-pseudo-checkbox.mat-pseudo-checkbox-checked:after,::ng-deep table.td-data-table th.mat-checkbox-column mat-pseudo-checkbox.mat-pseudo-checkbox-checked:after{height:4px!important;width:11px!important}table.td-data-table td.mat-checkbox-cell mat-checkbox ::ng-deep .mat-checkbox-inner-container,table.td-data-table th.mat-checkbox-column mat-checkbox ::ng-deep .mat-checkbox-inner-container{height:18px;margin:0;width:18px}"]
1510
1513
  }] }
1511
1514
  ];
1512
1515
  /** @nocollapse */
@@ -1801,7 +1804,8 @@ if (false) {
1801
1804
 
1802
1805
  /**
1803
1806
  * @fileoverview added by tsickle
1804
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1807
+ * Generated from: data-table-column/data-table-column.component.ts
1808
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1805
1809
  */
1806
1810
  /**
1807
1811
  * @record
@@ -1932,7 +1936,7 @@ TdDataTableColumnComponent.decorators = [
1932
1936
  /* tslint:disable-next-line */
1933
1937
  selector: 'th[td-data-table-column]',
1934
1938
  template: "<span #columnContent class=\"td-data-table-heading\">\n <mat-icon\n class=\"td-data-table-sort-icon\"\n *ngIf=\"sortable && numeric\"\n [class.mat-asc]=\"isAscending()\"\n [class.mat-desc]=\"isDescending()\"\n >\n arrow_upward\n </mat-icon>\n <span>\n <ng-content></ng-content>\n </span>\n <mat-icon\n class=\"td-data-table-sort-icon\"\n *ngIf=\"sortable && !numeric\"\n [class.mat-asc]=\"isAscending()\"\n [class.mat-desc]=\"isDescending()\"\n [class.display-numeric]=\"isColumnSortOrder\"\n >\n arrow_upward\n </mat-icon>\n</span>\n<ng-content select=\"[td-column-resizer]\"></ng-content>\n",
1935
- styles: [":host{white-space:nowrap;position:relative;padding:0;vertical-align:middle;text-align:left}:host>.td-data-table-heading{padding:0 28px}:host:first-child>.td-data-table-heading{padding-left:24px;padding-right:initial}html[dir=rtl] :host:first-child>.td-data-table-heading{padding-left:initial;unicode-bidi:embed;padding-right:24px;unicode-bidi:embed}body[dir=rtl] :host:first-child>.td-data-table-heading{padding-left:initial;unicode-bidi:embed;padding-right:24px;unicode-bidi:embed}[dir=rtl] :host:first-child>.td-data-table-heading{padding-left:initial;unicode-bidi:embed;padding-right:24px;unicode-bidi:embed}:host:first-child>.td-data-table-heading bdo[dir=rtl]{direction:rtl;unicode-bidi:bidi-override}:host:first-child>.td-data-table-heading bdo[dir=ltr]{direction:ltr;unicode-bidi:bidi-override}:host:last-child>.td-data-table-heading{padding-left:28px;padding-right:24px}html[dir=rtl] :host:last-child>.td-data-table-heading{padding-left:24px;unicode-bidi:embed;padding-right:28px;unicode-bidi:embed}body[dir=rtl] :host:last-child>.td-data-table-heading{padding-left:24px;unicode-bidi:embed;padding-right:28px;unicode-bidi:embed}[dir=rtl] :host:last-child>.td-data-table-heading{padding-left:24px;unicode-bidi:embed;padding-right:28px;unicode-bidi:embed}:host:last-child>.td-data-table-heading bdo[dir=rtl]{direction:rtl;unicode-bidi:bidi-override}:host:last-child>.td-data-table-heading bdo[dir=ltr]{direction:ltr;unicode-bidi:bidi-override}:host mat-icon{height:16px;width:16px;font-size:16px!important;line-height:16px!important}:host mat-icon.td-data-table-sort-icon{opacity:0;transition:transform .25s;position:absolute;top:0}:host mat-icon.td-data-table-sort-icon.display-numeric{right:0}:host mat-icon.td-data-table-sort-icon.mat-asc{-ms-transform:rotate(0);transform:rotate(0)}:host mat-icon.td-data-table-sort-icon.mat-desc{-ms-transform:rotate(180deg);transform:rotate(180deg)}:host.mat-active.mat-sortable mat-icon.td-data-table-sort-icon,:host:hover.mat-sortable mat-icon.td-data-table-sort-icon{opacity:1}html[dir=rtl] :host{text-align:right;unicode-bidi:embed}body[dir=rtl] :host{text-align:right;unicode-bidi:embed}[dir=rtl] :host{text-align:right;unicode-bidi:embed}:host bdo[dir=rtl]{direction:rtl;unicode-bidi:bidi-override}:host bdo[dir=ltr]{direction:ltr;unicode-bidi:bidi-override}:host>*{vertical-align:middle}:host.mat-clickable{cursor:pointer}:host.mat-clickable:focus{outline:0}:host .td-data-table-heading{display:inline-block;position:relative}:host.mat-numeric{text-align:right}html[dir=rtl] :host.mat-numeric{text-align:left;unicode-bidi:embed}body[dir=rtl] :host.mat-numeric{text-align:left;unicode-bidi:embed}[dir=rtl] :host.mat-numeric{text-align:left;unicode-bidi:embed}:host.mat-numeric bdo[dir=rtl]{direction:rtl;unicode-bidi:bidi-override}:host.mat-numeric bdo[dir=ltr]{direction:ltr;unicode-bidi:bidi-override}:host.mat-numeric mat-icon.td-data-table-sort-icon{margin-left:-22px;margin-right:initial}html[dir=rtl] :host.mat-numeric mat-icon.td-data-table-sort-icon{margin-left:initial;unicode-bidi:embed;margin-right:-22px;unicode-bidi:embed}body[dir=rtl] :host.mat-numeric mat-icon.td-data-table-sort-icon{margin-left:initial;unicode-bidi:embed;margin-right:-22px;unicode-bidi:embed}[dir=rtl] :host.mat-numeric mat-icon.td-data-table-sort-icon{margin-left:initial;unicode-bidi:embed;margin-right:-22px;unicode-bidi:embed}:host.mat-numeric mat-icon.td-data-table-sort-icon bdo[dir=rtl]{direction:rtl;unicode-bidi:bidi-override}:host.mat-numeric mat-icon.td-data-table-sort-icon bdo[dir=ltr]{direction:ltr;unicode-bidi:bidi-override}:host:not(.mat-numeric) mat-icon.td-data-table-sort-icon{margin-left:6px;margin-right:initial}html[dir=rtl] :host:not(.mat-numeric) mat-icon.td-data-table-sort-icon{margin-left:initial;unicode-bidi:embed;margin-right:6px;unicode-bidi:embed}body[dir=rtl] :host:not(.mat-numeric) mat-icon.td-data-table-sort-icon{margin-left:initial;unicode-bidi:embed;margin-right:6px;unicode-bidi:embed}[dir=rtl] :host:not(.mat-numeric) mat-icon.td-data-table-sort-icon{margin-left:initial;unicode-bidi:embed;margin-right:6px;unicode-bidi:embed}:host:not(.mat-numeric) mat-icon.td-data-table-sort-icon bdo[dir=rtl]{direction:rtl;unicode-bidi:bidi-override}:host:not(.mat-numeric) mat-icon.td-data-table-sort-icon bdo[dir=ltr]{direction:ltr;unicode-bidi:bidi-override}"]
1939
+ styles: [":host{padding:0;position:relative;text-align:left;vertical-align:middle;white-space:nowrap}:host>.td-data-table-heading{padding:0 28px}:host:first-child>.td-data-table-heading{padding-left:24px;padding-right:0}html[dir=rtl] :host:first-child>.td-data-table-heading{padding-left:0}body[dir=rtl] :host:first-child>.td-data-table-heading{padding-left:0}[dir=rtl] :host:first-child>.td-data-table-heading{padding-left:0}html[dir=rtl] :host:first-child>.td-data-table-heading{padding-right:24px;unicode-bidi:embed}body[dir=rtl] :host:first-child>.td-data-table-heading{padding-right:24px;unicode-bidi:embed}[dir=rtl] :host:first-child>.td-data-table-heading{padding-right:24px;unicode-bidi:embed}:host:first-child>.td-data-table-heading bdo[dir=rtl]{direction:rtl;unicode-bidi:bidi-override}:host:first-child>.td-data-table-heading bdo[dir=ltr]{direction:ltr;unicode-bidi:bidi-override}:host:last-child>.td-data-table-heading{padding-left:28px;padding-right:24px}html[dir=rtl] :host:last-child>.td-data-table-heading{padding-left:24px}body[dir=rtl] :host:last-child>.td-data-table-heading{padding-left:24px}[dir=rtl] :host:last-child>.td-data-table-heading{padding-left:24px}html[dir=rtl] :host:last-child>.td-data-table-heading{padding-right:28px;unicode-bidi:embed}body[dir=rtl] :host:last-child>.td-data-table-heading{padding-right:28px;unicode-bidi:embed}[dir=rtl] :host:last-child>.td-data-table-heading{padding-right:28px;unicode-bidi:embed}:host:last-child>.td-data-table-heading bdo[dir=rtl]{direction:rtl;unicode-bidi:bidi-override}:host:last-child>.td-data-table-heading bdo[dir=ltr]{direction:ltr;unicode-bidi:bidi-override}:host mat-icon{font-size:16px!important;height:16px;line-height:16px!important;width:16px}:host mat-icon.td-data-table-sort-icon{opacity:0;position:absolute;top:0;transition:transform .25s}:host mat-icon.td-data-table-sort-icon.display-numeric{right:0}:host mat-icon.td-data-table-sort-icon.mat-asc{-ms-transform:rotate(0deg);transform:rotate(0deg)}:host mat-icon.td-data-table-sort-icon.mat-desc{-ms-transform:rotate(180deg);transform:rotate(180deg)}:host.mat-active.mat-sortable mat-icon.td-data-table-sort-icon,:host:hover.mat-sortable mat-icon.td-data-table-sort-icon{opacity:1}html[dir=rtl] :host{text-align:right;unicode-bidi:embed}body[dir=rtl] :host{text-align:right;unicode-bidi:embed}[dir=rtl] :host{text-align:right;unicode-bidi:embed}:host bdo[dir=rtl]{direction:rtl;unicode-bidi:bidi-override}:host bdo[dir=ltr]{direction:ltr;unicode-bidi:bidi-override}:host>*{vertical-align:middle}:host.mat-clickable{cursor:pointer}:host.mat-clickable:focus{outline:none}:host .td-data-table-heading{display:inline-block;position:relative}:host.mat-numeric{text-align:right}html[dir=rtl] :host.mat-numeric{text-align:left;unicode-bidi:embed}body[dir=rtl] :host.mat-numeric{text-align:left;unicode-bidi:embed}[dir=rtl] :host.mat-numeric{text-align:left;unicode-bidi:embed}:host.mat-numeric bdo[dir=rtl]{direction:rtl;unicode-bidi:bidi-override}:host.mat-numeric bdo[dir=ltr]{direction:ltr;unicode-bidi:bidi-override}:host.mat-numeric mat-icon.td-data-table-sort-icon{margin-left:-22px;margin-right:0}html[dir=rtl] :host.mat-numeric mat-icon.td-data-table-sort-icon{margin-left:0}body[dir=rtl] :host.mat-numeric mat-icon.td-data-table-sort-icon{margin-left:0}[dir=rtl] :host.mat-numeric mat-icon.td-data-table-sort-icon{margin-left:0}html[dir=rtl] :host.mat-numeric mat-icon.td-data-table-sort-icon{margin-right:-22px;unicode-bidi:embed}body[dir=rtl] :host.mat-numeric mat-icon.td-data-table-sort-icon{margin-right:-22px;unicode-bidi:embed}[dir=rtl] :host.mat-numeric mat-icon.td-data-table-sort-icon{margin-right:-22px;unicode-bidi:embed}:host.mat-numeric mat-icon.td-data-table-sort-icon bdo[dir=rtl]{direction:rtl;unicode-bidi:bidi-override}:host.mat-numeric mat-icon.td-data-table-sort-icon bdo[dir=ltr]{direction:ltr;unicode-bidi:bidi-override}:host:not(.mat-numeric) mat-icon.td-data-table-sort-icon{margin-left:6px;margin-right:0}html[dir=rtl] :host:not(.mat-numeric) mat-icon.td-data-table-sort-icon{margin-left:0}body[dir=rtl] :host:not(.mat-numeric) mat-icon.td-data-table-sort-icon{margin-left:0}[dir=rtl] :host:not(.mat-numeric) mat-icon.td-data-table-sort-icon{margin-left:0}html[dir=rtl] :host:not(.mat-numeric) mat-icon.td-data-table-sort-icon{margin-right:6px;unicode-bidi:embed}body[dir=rtl] :host:not(.mat-numeric) mat-icon.td-data-table-sort-icon{margin-right:6px;unicode-bidi:embed}[dir=rtl] :host:not(.mat-numeric) mat-icon.td-data-table-sort-icon{margin-right:6px;unicode-bidi:embed}:host:not(.mat-numeric) mat-icon.td-data-table-sort-icon bdo[dir=rtl]{direction:rtl;unicode-bidi:bidi-override}:host:not(.mat-numeric) mat-icon.td-data-table-sort-icon bdo[dir=ltr]{direction:ltr;unicode-bidi:bidi-override}"]
1936
1940
  }] }
1937
1941
  ];
1938
1942
  /** @nocollapse */
@@ -2016,7 +2020,8 @@ if (false) {
2016
2020
 
2017
2021
  /**
2018
2022
  * @fileoverview added by tsickle
2019
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
2023
+ * Generated from: data-table-cell/data-table-cell.component.ts
2024
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
2020
2025
  */
2021
2026
  class TdDataTableCellComponent {
2022
2027
  /**
@@ -2062,7 +2067,7 @@ TdDataTableCellComponent.decorators = [
2062
2067
  /* tslint:disable-next-line */
2063
2068
  selector: 'td[td-data-table-cell]',
2064
2069
  template: "<div\n class=\"td-data-table-cell-content-wrapper\"\n [class.td-data-table-cell-numeric]=\"numeric\"\n [class.td-data-table-cell-align-center]=\"align === 'center'\"\n [class.td-data-table-cell-align-end]=\"align === 'end'\"\n [class.td-data-table-cell-align-start]=\"align === 'start'\"\n>\n <ng-content></ng-content>\n</div>\n",
2065
- styles: [":host{vertical-align:middle;text-align:left;padding:0}html[dir=rtl] :host{text-align:right;unicode-bidi:embed}body[dir=rtl] :host{text-align:right;unicode-bidi:embed}[dir=rtl] :host{text-align:right;unicode-bidi:embed}:host bdo[dir=rtl]{direction:rtl;unicode-bidi:bidi-override}:host bdo[dir=ltr]{direction:ltr;unicode-bidi:bidi-override}:host>.td-data-table-cell-content-wrapper{padding:0 28px;box-sizing:border-box;display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-align:center;align-items:center;-ms-flex-line-pack:center;align-content:center;max-width:100%;-ms-flex-pack:start;justify-content:flex-start}:host>.td-data-table-cell-content-wrapper.td-data-table-cell-numeric{-ms-flex-pack:end;justify-content:flex-end}:host>.td-data-table-cell-content-wrapper.td-data-table-cell-align-start{-ms-flex-pack:start;justify-content:flex-start}:host>.td-data-table-cell-content-wrapper.td-data-table-cell-align-end{-ms-flex-pack:end;justify-content:flex-end}:host>.td-data-table-cell-content-wrapper.td-data-table-cell-align-center{-ms-flex-pack:center;justify-content:center}:host:first-child>.td-data-table-cell-content-wrapper{padding-left:24px;padding-right:initial}html[dir=rtl] :host:first-child>.td-data-table-cell-content-wrapper{padding-left:initial;unicode-bidi:embed;padding-right:24px;unicode-bidi:embed}body[dir=rtl] :host:first-child>.td-data-table-cell-content-wrapper{padding-left:initial;unicode-bidi:embed;padding-right:24px;unicode-bidi:embed}[dir=rtl] :host:first-child>.td-data-table-cell-content-wrapper{padding-left:initial;unicode-bidi:embed;padding-right:24px;unicode-bidi:embed}:host:first-child>.td-data-table-cell-content-wrapper bdo[dir=rtl]{direction:rtl;unicode-bidi:bidi-override}:host:first-child>.td-data-table-cell-content-wrapper bdo[dir=ltr]{direction:ltr;unicode-bidi:bidi-override}:host:last-child>.td-data-table-cell-content-wrapper{padding-left:28px;padding-right:24px}html[dir=rtl] :host:last-child>.td-data-table-cell-content-wrapper{padding-left:24px;unicode-bidi:embed;padding-right:28px;unicode-bidi:embed}body[dir=rtl] :host:last-child>.td-data-table-cell-content-wrapper{padding-left:24px;unicode-bidi:embed;padding-right:28px;unicode-bidi:embed}[dir=rtl] :host:last-child>.td-data-table-cell-content-wrapper{padding-left:24px;unicode-bidi:embed;padding-right:28px;unicode-bidi:embed}:host:last-child>.td-data-table-cell-content-wrapper bdo[dir=rtl]{direction:rtl;unicode-bidi:bidi-override}:host:last-child>.td-data-table-cell-content-wrapper bdo[dir=ltr]{direction:ltr;unicode-bidi:bidi-override}:host>*{vertical-align:middle}:host.mat-clickable{cursor:pointer}:host.mat-clickable:focus{outline:0}:host.mat-numeric{text-align:right}html[dir=rtl] :host.mat-numeric{text-align:left;unicode-bidi:embed}body[dir=rtl] :host.mat-numeric{text-align:left;unicode-bidi:embed}[dir=rtl] :host.mat-numeric{text-align:left;unicode-bidi:embed}:host.mat-numeric bdo[dir=rtl]{direction:rtl;unicode-bidi:bidi-override}:host.mat-numeric bdo[dir=ltr]{direction:ltr;unicode-bidi:bidi-override}"]
2070
+ styles: [":host{padding:0;text-align:left;vertical-align:middle}html[dir=rtl] :host{text-align:right;unicode-bidi:embed}body[dir=rtl] :host{text-align:right;unicode-bidi:embed}[dir=rtl] :host{text-align:right;unicode-bidi:embed}:host bdo[dir=rtl]{direction:rtl;unicode-bidi:bidi-override}:host bdo[dir=ltr]{direction:ltr;unicode-bidi:bidi-override}:host>.td-data-table-cell-content-wrapper{-ms-flex-align:center;-ms-flex-direction:row;-ms-flex-line-pack:center;-ms-flex-pack:start;align-content:center;align-items:center;box-sizing:border-box;display:-ms-flexbox;display:flex;flex-direction:row;justify-content:flex-start;max-width:100%;padding:0 28px}:host>.td-data-table-cell-content-wrapper.td-data-table-cell-numeric{-ms-flex-pack:end;justify-content:flex-end}:host>.td-data-table-cell-content-wrapper.td-data-table-cell-align-start{-ms-flex-pack:start;justify-content:flex-start}:host>.td-data-table-cell-content-wrapper.td-data-table-cell-align-end{-ms-flex-pack:end;justify-content:flex-end}:host>.td-data-table-cell-content-wrapper.td-data-table-cell-align-center{-ms-flex-pack:center;justify-content:center}:host:first-child>.td-data-table-cell-content-wrapper{padding-left:24px;padding-right:0}html[dir=rtl] :host:first-child>.td-data-table-cell-content-wrapper{padding-left:0}body[dir=rtl] :host:first-child>.td-data-table-cell-content-wrapper{padding-left:0}[dir=rtl] :host:first-child>.td-data-table-cell-content-wrapper{padding-left:0}html[dir=rtl] :host:first-child>.td-data-table-cell-content-wrapper{padding-right:24px;unicode-bidi:embed}body[dir=rtl] :host:first-child>.td-data-table-cell-content-wrapper{padding-right:24px;unicode-bidi:embed}[dir=rtl] :host:first-child>.td-data-table-cell-content-wrapper{padding-right:24px;unicode-bidi:embed}:host:first-child>.td-data-table-cell-content-wrapper bdo[dir=rtl]{direction:rtl;unicode-bidi:bidi-override}:host:first-child>.td-data-table-cell-content-wrapper bdo[dir=ltr]{direction:ltr;unicode-bidi:bidi-override}:host:last-child>.td-data-table-cell-content-wrapper{padding-left:28px;padding-right:24px}html[dir=rtl] :host:last-child>.td-data-table-cell-content-wrapper{padding-left:24px}body[dir=rtl] :host:last-child>.td-data-table-cell-content-wrapper{padding-left:24px}[dir=rtl] :host:last-child>.td-data-table-cell-content-wrapper{padding-left:24px}html[dir=rtl] :host:last-child>.td-data-table-cell-content-wrapper{padding-right:28px;unicode-bidi:embed}body[dir=rtl] :host:last-child>.td-data-table-cell-content-wrapper{padding-right:28px;unicode-bidi:embed}[dir=rtl] :host:last-child>.td-data-table-cell-content-wrapper{padding-right:28px;unicode-bidi:embed}:host:last-child>.td-data-table-cell-content-wrapper bdo[dir=rtl]{direction:rtl;unicode-bidi:bidi-override}:host:last-child>.td-data-table-cell-content-wrapper bdo[dir=ltr]{direction:ltr;unicode-bidi:bidi-override}:host>*{vertical-align:middle}:host.mat-clickable{cursor:pointer}:host.mat-clickable:focus{outline:none}:host.mat-numeric{text-align:right}html[dir=rtl] :host.mat-numeric{text-align:left;unicode-bidi:embed}body[dir=rtl] :host.mat-numeric{text-align:left;unicode-bidi:embed}[dir=rtl] :host.mat-numeric{text-align:left;unicode-bidi:embed}:host.mat-numeric bdo[dir=rtl]{direction:rtl;unicode-bidi:bidi-override}:host.mat-numeric bdo[dir=ltr]{direction:ltr;unicode-bidi:bidi-override}"]
2066
2071
  }] }
2067
2072
  ];
2068
2073
  /** @nocollapse */
@@ -2102,7 +2107,8 @@ if (false) {
2102
2107
 
2103
2108
  /**
2104
2109
  * @fileoverview added by tsickle
2105
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
2110
+ * Generated from: data-table-table/data-table-table.component.ts
2111
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
2106
2112
  */
2107
2113
  class TdDataTableTableComponent {
2108
2114
  /**
@@ -2120,7 +2126,7 @@ TdDataTableTableComponent.decorators = [
2120
2126
  /* tslint:disable-next-line */
2121
2127
  selector: 'table[td-data-table]',
2122
2128
  template: "<ng-content></ng-content>\n",
2123
- styles: [":host{width:100%;position:relative;border-spacing:0;overflow:hidden;border-collapse:collapse}"]
2129
+ styles: [":host{border-collapse:collapse;border-spacing:0;overflow:hidden;position:relative;width:100%}"]
2124
2130
  }] }
2125
2131
  ];
2126
2132
  /** @nocollapse */
@@ -2143,7 +2149,8 @@ if (false) {
2143
2149
 
2144
2150
  /**
2145
2151
  * @fileoverview added by tsickle
2146
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
2152
+ * Generated from: services/data-table.service.ts
2153
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
2147
2154
  */
2148
2155
  class TdDataTableService {
2149
2156
  /**
@@ -2256,7 +2263,8 @@ TdDataTableService.decorators = [
2256
2263
 
2257
2264
  /**
2258
2265
  * @fileoverview added by tsickle
2259
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
2266
+ * Generated from: data-table.module.ts
2267
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
2260
2268
  */
2261
2269
  /** @type {?} */
2262
2270
  const TD_DATA_TABLE = [
@@ -2281,17 +2289,20 @@ CovalentDataTableModule.decorators = [
2281
2289
 
2282
2290
  /**
2283
2291
  * @fileoverview added by tsickle
2284
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
2292
+ * Generated from: public-api.ts
2293
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
2285
2294
  */
2286
2295
 
2287
2296
  /**
2288
2297
  * @fileoverview added by tsickle
2289
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
2298
+ * Generated from: index.ts
2299
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
2290
2300
  */
2291
2301
 
2292
2302
  /**
2293
2303
  * @fileoverview added by tsickle
2294
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
2304
+ * Generated from: covalent-core-data-table.ts
2305
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
2295
2306
  */
2296
2307
 
2297
2308
  export { CovalentDataTableModule, TdDataTableBase, TdDataTableCellComponent, TdDataTableColumnComponent, TdDataTableColumnRowComponent, TdDataTableComponent, TdDataTableRowComponent, TdDataTableService, TdDataTableSortingOrder, TdDataTableTableComponent, TdDataTableTemplateDirective, _TdDataTableMixinBase };
@@ -1 +1 @@
1
- {"version":3,"file":"covalent-core-data-table.js","sources":["ng://@covalent/core/data-table/data-table-row/data-table-row.component.ts","ng://@covalent/core/data-table/directives/data-table-template.directive.ts","ng://@covalent/core/data-table/data-table.component.ts","ng://@covalent/core/data-table/data-table-column/data-table-column.component.ts","ng://@covalent/core/data-table/data-table-cell/data-table-cell.component.ts","ng://@covalent/core/data-table/data-table-table/data-table-table.component.ts","ng://@covalent/core/data-table/services/data-table.service.ts","ng://@covalent/core/data-table/data-table.module.ts"],"sourcesContent":["import {\n Component,\n Input,\n Output,\n Renderer2,\n ElementRef,\n ContentChildren,\n QueryList,\n HostListener,\n} from '@angular/core';\n\nimport { TdDataTableCellComponent } from '../data-table-cell/data-table-cell.component';\nimport { TdDataTableColumnComponent } from '../data-table-column/data-table-column.component';\n\n@Component({\n /* tslint:disable-next-line */\n selector: 'tr[td-data-table-column-row]',\n styleUrls: ['./data-table-row.component.scss'],\n templateUrl: './data-table-row.component.html',\n})\nexport class TdDataTableColumnRowComponent {\n constructor(protected _elementRef: ElementRef, protected _renderer: Renderer2) {\n this._renderer.addClass(this._elementRef.nativeElement, 'td-data-table-column-row');\n }\n}\n\n@Component({\n /* tslint:disable-next-line */\n selector: 'tr[td-data-table-row]',\n styleUrls: ['./data-table-row.component.scss'],\n templateUrl: './data-table-row.component.html',\n})\nexport class TdDataTableRowComponent {\n private _selected: boolean = false;\n\n @Input('selected')\n set selected(selected: boolean) {\n if (selected) {\n this._renderer.addClass(this._elementRef.nativeElement, 'td-selected');\n } else {\n this._renderer.removeClass(this._elementRef.nativeElement, 'td-selected');\n }\n this._selected = selected;\n }\n get selected(): boolean {\n return this._selected;\n }\n\n get height(): number {\n let height: number = 48;\n if (this._elementRef.nativeElement) {\n height = (<HTMLElement>this._elementRef.nativeElement).getBoundingClientRect().height;\n }\n return height;\n }\n\n constructor(private _elementRef: ElementRef, private _renderer: Renderer2) {\n this._renderer.addClass(this._elementRef.nativeElement, 'td-data-table-row');\n }\n\n /**\n * Listening to click event to explicitly focus the row element.\n */\n @HostListener('click')\n clickListener(): void {\n this.focus();\n }\n\n focus(): void {\n this._elementRef.nativeElement.focus();\n }\n}\n","import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { TemplatePortalDirective } from '@angular/cdk/portal';\n\n@Directive({ selector: '[tdDataTableTemplate]ng-template' })\nexport class TdDataTableTemplateDirective extends TemplatePortalDirective {\n @Input() tdDataTableTemplate: string;\n constructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef) {\n super(templateRef, viewContainerRef);\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n forwardRef,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n ViewChild,\n OnDestroy,\n AfterViewInit,\n ContentChildren,\n TemplateRef,\n AfterContentInit,\n QueryList,\n Inject,\n Optional,\n ViewChildren,\n ElementRef,\n OnInit,\n AfterContentChecked,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ENTER, SPACE, UP_ARROW, DOWN_ARROW } from '@angular/cdk/keycodes';\n\nimport { Observable, Subscription, Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nimport { TdDataTableRowComponent } from './data-table-row/data-table-row.component';\nimport {\n ITdDataTableSortChangeEvent,\n TdDataTableColumnComponent,\n} from './data-table-column/data-table-column.component';\nimport { TdDataTableTemplateDirective } from './directives/data-table-template.directive';\n\nimport { IControlValueAccessor, mixinControlValueAccessor } from '@covalent/core/common';\n\nexport enum TdDataTableSortingOrder {\n Ascending = 'ASC',\n Descending = 'DESC',\n}\n\nexport interface ITdDataTableColumnWidth {\n min?: number;\n max?: number;\n}\n\nexport interface ITdDataTableColumn {\n name: string;\n label: string;\n tooltip?: string;\n numeric?: boolean;\n format?: (value: any) => any;\n nested?: boolean;\n sortable?: boolean;\n hidden?: boolean;\n filter?: boolean;\n width?: ITdDataTableColumnWidth | number;\n columnSortOrder?: number;\n}\n\nexport interface ITdDataTableSelectEvent {\n row: any;\n selected: boolean;\n index: number;\n}\n\nexport interface ITdDataTableSelectAllEvent {\n rows: any[];\n selected: boolean;\n}\n\nexport interface ITdDataTableRowClickEvent {\n row: any;\n index: number;\n}\n\nexport interface IInternalColumnWidth {\n value: number;\n limit: boolean;\n index: number;\n min?: boolean;\n max?: boolean;\n}\n\n/**\n * Constant to set the rows offset before and after the viewport\n */\nconst TD_VIRTUAL_OFFSET: number = 2;\n\n/**\n * Constant to set default row height if none is provided\n */\nconst TD_VIRTUAL_DEFAULT_ROW_HEIGHT: number = 48;\n\nexport class TdDataTableBase {\n constructor(public _changeDetectorRef: ChangeDetectorRef) {}\n}\n\n/* tslint:disable-next-line */\nexport const _TdDataTableMixinBase = mixinControlValueAccessor(TdDataTableBase, []);\n\n@Component({\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TdDataTableComponent),\n multi: true,\n },\n ],\n selector: 'td-data-table',\n styleUrls: ['./data-table.component.scss'],\n templateUrl: './data-table.component.html',\n inputs: ['value'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TdDataTableComponent\n extends _TdDataTableMixinBase\n implements IControlValueAccessor, OnInit, AfterContentInit, AfterContentChecked, AfterViewInit, OnDestroy {\n /** responsive width calculations */\n private _resizeSubs: Subscription;\n private _rowsChangedSubs: Subscription;\n private _hostWidth: number = 0;\n\n /** manually resizable columns */\n private _resizableColumns: boolean = false;\n private _columnClientX: number = 0;\n private _columnResizeSubs: Subscription;\n private _resizingColumn: number;\n private _onColumnResize: Subject<number> = new Subject<number>();\n\n get resizingColumn(): number {\n return this._resizingColumn;\n }\n\n get hostWidth(): number {\n // if the checkboxes are rendered, we need to remove their width\n // from the total width to calculate properly\n if (this.selectable) {\n return this._hostWidth - 42;\n }\n return this._hostWidth;\n }\n\n private _widths: IInternalColumnWidth[] = [];\n private _onResize: Subject<void> = new Subject<void>();\n\n /** column header reposition and viewpoort */\n private _verticalScrollSubs: Subscription;\n private _horizontalScrollSubs: Subscription;\n private _scrollHorizontalOffset: number = 0;\n\n private _onHorizontalScroll: Subject<number> = new Subject<number>();\n private _onVerticalScroll: Subject<number> = new Subject<number>();\n\n // Array of cached row heights to allow dynamic row heights\n private _rowHeightCache: number[] = [];\n // Total pseudo height of all the elements\n private _totalHeight: number = 0;\n // Total host height for the viewport\n private _hostHeight: number = 0;\n // Scrolled vertical pixels\n private _scrollVerticalOffset: number = 0;\n // Style to move the content a certain offset depending on scrolled offset\n private _offsetTransform: SafeStyle;\n\n // Variables that set from and to which rows will be rendered\n private _fromRow: number = 0;\n private _toRow: number = 0;\n\n /**\n * Returns the offset style with a proper calculation on how much it should move\n * over the y axis of the total height\n */\n get offsetTransform(): SafeStyle {\n return this._offsetTransform;\n }\n\n /**\n * Returns the assumed total height of the rows\n */\n get totalHeight(): number {\n return this._totalHeight;\n }\n\n /**\n * Returns the initial row to render in the viewport\n */\n get fromRow(): number {\n return this._fromRow;\n }\n\n /**\n * Returns the last row to render in the viewport\n */\n get toRow(): number {\n return this._toRow;\n }\n\n private _valueChangesSubs: Subscription;\n /** internal attributes */\n private _data: any[];\n // data virtually iterated by component\n private _virtualData: any[];\n private _columns: ITdDataTableColumn[];\n private _selectable: boolean = false;\n private _clickable: boolean = false;\n private _multiple: boolean = true;\n private _allSelected: boolean = false;\n private _indeterminate: boolean = false;\n\n /** sorting */\n private _sortable: boolean = false;\n private _sortBy: ITdDataTableColumn;\n private _sortOrder: TdDataTableSortingOrder = TdDataTableSortingOrder.Ascending;\n\n /** shift select */\n private _shiftPreviouslyPressed: boolean = false;\n private _lastSelectedIndex: number = -1;\n private _firstSelectedIndex: number = -1;\n private _firstCheckboxValue: boolean = false;\n\n /** template fetching support */\n private _templateMap: Map<string, TemplateRef<any>> = new Map<string, TemplateRef<any>>();\n @ContentChildren(TdDataTableTemplateDirective, { descendants: true }) _templates: QueryList<\n TdDataTableTemplateDirective\n >;\n\n @ViewChild('scrollableDiv', { static: true }) _scrollableDiv: ElementRef;\n\n @ViewChildren('columnElement') _colElements: QueryList<TdDataTableColumnComponent>;\n\n @ViewChildren(TdDataTableRowComponent) _rows: QueryList<TdDataTableRowComponent>;\n\n /**\n * Returns scroll position to reposition column headers\n */\n get columnsLeftScroll(): number {\n return this._scrollHorizontalOffset * -1;\n }\n\n /**\n * Returns true if all values are selected.\n */\n get allSelected(): boolean {\n return this._allSelected;\n }\n\n /**\n * Returns true if all values are not deselected\n * and at least one is.\n */\n get indeterminate(): boolean {\n return this._indeterminate;\n }\n\n /**\n * data?: {[key: string]: any}[]\n * Sets the data to be rendered as rows.\n */\n @Input('data')\n set data(data: any[]) {\n this._data = data;\n this._rowHeightCache = [];\n Promise.resolve().then(() => {\n this.refresh();\n // scroll back to the top if the data has changed\n this._scrollableDiv.nativeElement.scrollTop = 0;\n });\n }\n get data(): any[] {\n return this._data;\n }\n\n get virtualData(): any[] {\n return this._virtualData;\n }\n\n /**\n * columns?: ITdDataTableColumn[]\n * Sets additional column configuration. [ITdDataTableColumn.name] has to exist in [data] as key.\n * Defaults to [data] keys.\n */\n @Input('columns')\n set columns(cols: ITdDataTableColumn[]) {\n this._columns = cols;\n }\n get columns(): ITdDataTableColumn[] {\n if (this._columns) {\n return this._columns;\n }\n\n if (this.hasData) {\n this._columns = [];\n // if columns is undefined, use key in [data] rows as name and label for column headers.\n const row: any = this._data[0];\n Object.keys(row).forEach((k: string) => {\n if (!this._columns.find((c: any) => c.name === k)) {\n this._columns.push({ name: k, label: k });\n }\n });\n return this._columns;\n } else {\n return [];\n }\n }\n\n /**\n * resizableColumns?: boolean\n * Enables manual column resize.\n * Defaults to 'false'\n */\n @Input('resizableColumns')\n set resizableColumns(resizableColumns: boolean) {\n this._resizableColumns = coerceBooleanProperty(resizableColumns);\n }\n get resizableColumns(): boolean {\n return this._resizableColumns;\n }\n\n /**\n * selectable?: boolean\n * Enables row selection events, hover and selected row states.\n * Defaults to 'false'\n */\n @Input('selectable')\n set selectable(selectable: boolean) {\n this._selectable = coerceBooleanProperty(selectable);\n }\n get selectable(): boolean {\n return this._selectable;\n }\n\n /**\n * clickable?: boolean\n * Enables row click events, hover.\n * Defaults to 'false'\n */\n @Input('clickable')\n set clickable(clickable: boolean) {\n this._clickable = coerceBooleanProperty(clickable);\n }\n get clickable(): boolean {\n return this._clickable;\n }\n\n /**\n * multiple?: boolean\n * Enables multiple row selection. [selectable] needs to be enabled.\n * Defaults to 'false'\n */\n @Input('multiple')\n set multiple(multiple: boolean) {\n this._multiple = coerceBooleanProperty(multiple);\n }\n get multiple(): boolean {\n return this._multiple;\n }\n\n /**\n * sortable?: boolean\n * Enables sorting events, sort icons and active column states.\n * Defaults to 'false'\n */\n @Input('sortable')\n set sortable(sortable: boolean) {\n this._sortable = coerceBooleanProperty(sortable);\n }\n get sortable(): boolean {\n return this._sortable;\n }\n\n /**\n * sortBy?: string\n * Sets the active sort column. [sortable] needs to be enabled.\n */\n @Input('sortBy')\n set sortBy(columnName: string) {\n if (!columnName) {\n return;\n }\n const column: ITdDataTableColumn = this.columns.find((c: any) => c.name === columnName);\n if (!column) {\n throw new Error('[sortBy] must be a valid column name');\n }\n\n this._sortBy = column;\n }\n get sortByColumn(): ITdDataTableColumn {\n return this._sortBy;\n }\n\n /**\n * sortOrder?: ['ASC' | 'DESC'] or TdDataTableSortingOrder\n * Sets the sort order of the [sortBy] column. [sortable] needs to be enabled.\n * Defaults to 'ASC' or TdDataTableSortingOrder.Ascending\n */\n @Input('sortOrder')\n set sortOrder(order: 'ASC' | 'DESC') {\n const sortOrder: string = order ? order.toUpperCase() : 'ASC';\n if (sortOrder !== 'DESC' && sortOrder !== 'ASC') {\n throw new Error('[sortOrder] must be empty, ASC or DESC');\n }\n\n this._sortOrder = sortOrder === 'ASC' ? TdDataTableSortingOrder.Ascending : TdDataTableSortingOrder.Descending;\n }\n get sortOrderEnum(): TdDataTableSortingOrder {\n return this._sortOrder;\n }\n\n get hasData(): boolean {\n return this._data && this._data.length > 0;\n }\n\n /**\n * sortChange?: function\n * Event emitted when the column headers are clicked. [sortable] needs to be enabled.\n * Emits an [ITdDataTableSortChangeEvent] implemented object.\n */\n @Output() sortChange: EventEmitter<ITdDataTableSortChangeEvent> = new EventEmitter<ITdDataTableSortChangeEvent>();\n\n /**\n * rowSelect?: function\n * Event emitted when a row is selected/deselected. [selectable] needs to be enabled.\n * Emits an [ITdDataTableSelectEvent] implemented object.\n */\n @Output() rowSelect: EventEmitter<ITdDataTableSelectEvent> = new EventEmitter<ITdDataTableSelectEvent>();\n\n /**\n * rowClick?: function\n * Event emitted when a row is clicked.\n * Emits an [ITdDataTableRowClickEvent] implemented object.\n */\n @Output() rowClick: EventEmitter<ITdDataTableRowClickEvent> = new EventEmitter<ITdDataTableRowClickEvent>();\n\n /**\n * selectAll?: function\n * Event emitted when all rows are selected/deselected by the all checkbox. [selectable] needs to be enabled.\n * Emits an [ITdDataTableSelectAllEvent] implemented object.\n */\n @Output() selectAll: EventEmitter<ITdDataTableSelectAllEvent> = new EventEmitter<ITdDataTableSelectAllEvent>();\n\n constructor(\n @Optional() @Inject(DOCUMENT) private _document: any,\n private _elementRef: ElementRef,\n private _domSanitizer: DomSanitizer,\n _changeDetectorRef: ChangeDetectorRef,\n ) {\n super(_changeDetectorRef);\n }\n\n /**\n * compareWith?: function(row, model): boolean\n * Allows custom comparison between row and model to see if row is selected or not\n * Default comparation is by reference\n */\n @Input() compareWith: (row: any, model: any) => boolean = (row: any, model: any) => {\n return row === model;\n };\n\n /**\n * Initialize observable for resize and scroll events\n */\n ngOnInit(): void {\n // initialize observable for resize calculations\n this._resizeSubs = this._onResize.asObservable().subscribe(() => {\n if (this._rows) {\n this._rows.toArray().forEach((row: TdDataTableRowComponent, index: number) => {\n this._rowHeightCache[this.fromRow + index] = row.height + 1;\n });\n }\n this._calculateWidths();\n this._calculateVirtualRows();\n });\n\n // initialize observable for column resize calculations\n this._columnResizeSubs = this._onColumnResize\n .asObservable()\n .pipe(debounceTime(0))\n .subscribe((clientX: number) => {\n this._columnClientX = clientX;\n this._calculateWidths();\n this._changeDetectorRef.markForCheck();\n });\n // initialize observable for scroll column header reposition\n this._horizontalScrollSubs = this._onHorizontalScroll.asObservable().subscribe((horizontalScroll: number) => {\n this._scrollHorizontalOffset = horizontalScroll;\n this._changeDetectorRef.markForCheck();\n });\n // initialize observable for virtual scroll rendering\n this._verticalScrollSubs = this._onVerticalScroll.asObservable().subscribe((verticalScroll: number) => {\n this._scrollVerticalOffset = verticalScroll;\n this._calculateVirtualRows();\n this._changeDetectorRef.markForCheck();\n });\n this._valueChangesSubs = this.valueChanges.subscribe((value: any) => {\n this.refresh();\n });\n }\n\n /**\n * Loads templates and sets them in a map for faster access.\n */\n ngAfterContentInit(): void {\n for (const template of this._templates.toArray()) {\n this._templateMap.set(template.tdDataTableTemplate, template.templateRef);\n }\n }\n\n /**\n * Checks hosts native elements widths to see if it has changed (resize check)\n */\n ngAfterContentChecked(): void {\n // check if the scroll has been reset when element is hidden\n if (this._scrollVerticalOffset - this._scrollableDiv.nativeElement.scrollTop > 5) {\n // scroll back to the top if element has been reset\n this._onVerticalScroll.next(0);\n }\n if (this._elementRef.nativeElement) {\n const newHostWidth: number = this._elementRef.nativeElement.getBoundingClientRect().width;\n // if the width has changed then we throw a resize event.\n if (this._hostWidth !== newHostWidth) {\n setTimeout(() => {\n this._hostWidth = newHostWidth;\n this._onResize.next();\n }, 0);\n }\n }\n if (this._scrollableDiv.nativeElement) {\n const newHostHeight: number = this._scrollableDiv.nativeElement.getBoundingClientRect().height;\n // if the height of the viewport has changed, then we mark for check\n if (this._hostHeight !== newHostHeight) {\n this._hostHeight = newHostHeight;\n this._calculateVirtualRows();\n this._changeDetectorRef.markForCheck();\n }\n }\n }\n\n /**\n * Registers to an observable that checks if all rows have been rendered\n * so we can start calculating the widths\n */\n ngAfterViewInit(): void {\n this._rowsChangedSubs = this._rows.changes.pipe(debounceTime(0)).subscribe(() => {\n this._onResize.next();\n });\n this._calculateVirtualRows();\n }\n\n /**\n * Unsubscribes observables when data table is destroyed\n */\n ngOnDestroy(): void {\n if (this._resizeSubs) {\n this._resizeSubs.unsubscribe();\n }\n if (this._columnResizeSubs) {\n this._columnResizeSubs.unsubscribe();\n }\n if (this._horizontalScrollSubs) {\n this._horizontalScrollSubs.unsubscribe();\n }\n if (this._verticalScrollSubs) {\n this._verticalScrollSubs.unsubscribe();\n }\n if (this._rowsChangedSubs) {\n this._rowsChangedSubs.unsubscribe();\n }\n if (this._valueChangesSubs) {\n this._valueChangesSubs.unsubscribe();\n }\n }\n\n /**\n * Method that gets executed every time there is a scroll event\n * Calls the scroll observable\n */\n handleScroll(event: Event): void {\n const element: HTMLElement = <HTMLElement>event.target;\n if (element) {\n const horizontalScroll: number = element.scrollLeft;\n if (this._scrollHorizontalOffset !== horizontalScroll) {\n this._onHorizontalScroll.next(horizontalScroll);\n }\n const verticalScroll: number = element.scrollTop;\n if (this._scrollVerticalOffset !== verticalScroll) {\n this._onVerticalScroll.next(verticalScroll);\n }\n }\n }\n\n /**\n * Returns the width needed for the columns via index\n */\n getColumnWidth(index: number): number {\n if (this._widths[index]) {\n return this._widths[index].value;\n }\n return undefined;\n }\n\n getCellValue(column: ITdDataTableColumn, value: any): string {\n if (column.nested === undefined || column.nested) {\n return this._getNestedValue(column.name, value);\n }\n return value[column.name];\n }\n\n /**\n * Getter method for template references\n */\n getTemplateRef(name: string): TemplateRef<any> {\n return this._templateMap.get(name);\n }\n\n /**\n * Clears model (ngModel) of component by removing all values in array.\n */\n clearModel(): void {\n this.value.splice(0, this.value.length);\n }\n\n /**\n * Refreshes data table and rerenders [data] and [columns]\n */\n refresh(): void {\n this._calculateVirtualRows();\n this._calculateWidths();\n this._calculateCheckboxState();\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Selects or clears all rows depending on 'checked' value.\n */\n _selectAll(checked: boolean): void {\n const toggledRows: any[] = [];\n if (checked) {\n this._data.forEach((row: any) => {\n // skiping already selected rows\n if (!this.isRowSelected(row)) {\n this.value.push(row);\n // checking which ones are being toggled\n toggledRows.push(row);\n }\n });\n this._allSelected = true;\n this._indeterminate = true;\n } else {\n this._data.forEach((row: any) => {\n // checking which ones are being toggled\n if (this.isRowSelected(row)) {\n toggledRows.push(row);\n const modelRow: any = this.value.filter((val: any) => {\n return this.compareWith(row, val);\n })[0];\n const index: number = this.value.indexOf(modelRow);\n if (index > -1) {\n this.value.splice(index, 1);\n }\n }\n });\n this._allSelected = false;\n this._indeterminate = false;\n }\n this.selectAll.emit({ rows: toggledRows, selected: checked });\n this.onChange(this.value);\n }\n\n /**\n * Checks if row is selected\n */\n isRowSelected(row: any): boolean {\n // compare items by [compareWith] function\n return this.value\n ? this.value.filter((val: any) => {\n return this.compareWith(row, val);\n }).length > 0\n : false;\n }\n\n /**\n * Selects or clears a row depending on 'checked' value if the row 'isSelectable'\n * handles cntrl clicks and shift clicks for multi-select\n */\n select(row: any, event: Event, currentSelected: number): void {\n if (this.selectable) {\n this.blockEvent(event);\n // Check to see if Shift key is selected and need to select everything in between\n const mouseEvent: MouseEvent = event as MouseEvent;\n if (this.multiple && mouseEvent && mouseEvent.shiftKey && this._lastSelectedIndex > -1) {\n let firstIndex: number = currentSelected;\n let lastIndex: number = this._lastSelectedIndex;\n if (currentSelected > this._lastSelectedIndex) {\n firstIndex = this._lastSelectedIndex;\n lastIndex = currentSelected;\n }\n // if clicking a checkbox behind the initial check, then toggle all selections expect the initial checkbox\n // else the checkboxes clicked are all after the initial one\n if (\n (this._firstSelectedIndex >= currentSelected && this._lastSelectedIndex > this._firstSelectedIndex) ||\n (this._firstSelectedIndex <= currentSelected && this._lastSelectedIndex < this._firstSelectedIndex)\n ) {\n for (let i: number = firstIndex; i <= lastIndex; i++) {\n if (this._firstSelectedIndex !== i) {\n this._doSelection(this._data[i], i);\n }\n }\n } else if (this._firstSelectedIndex > currentSelected || this._firstSelectedIndex < currentSelected) {\n // change indexes depending on where the next checkbox is selected (before or after)\n if (this._firstSelectedIndex > currentSelected) {\n lastIndex--;\n } else if (this._firstSelectedIndex < currentSelected) {\n firstIndex++;\n }\n for (let i: number = firstIndex; i <= lastIndex; i++) {\n const rowSelected: boolean = this.isRowSelected(this._data[i]);\n // if row is selected and first checkbox was selected\n // or if row was unselected and first checkbox was unselected\n // we ignore the toggle\n if ((this._firstCheckboxValue && !rowSelected) || (!this._firstCheckboxValue && rowSelected)) {\n this._doSelection(this._data[i], i);\n } else if (\n this._shiftPreviouslyPressed &&\n ((currentSelected >= this._firstSelectedIndex && currentSelected <= this._lastSelectedIndex) ||\n (currentSelected <= this._firstSelectedIndex && currentSelected >= this._lastSelectedIndex))\n ) {\n // else if the checkbox selected was in the middle of the last selection and the first selection\n // then we undo the selections\n this._doSelection(this._data[i], i);\n }\n }\n }\n this._shiftPreviouslyPressed = true;\n // if shift wasnt pressed, then we take the element checked as the first row\n // incase the next click uses shift\n } else if (mouseEvent && !mouseEvent.shiftKey) {\n this._firstCheckboxValue = this._doSelection(row, currentSelected);\n this._shiftPreviouslyPressed = false;\n this._firstSelectedIndex = currentSelected;\n }\n this._lastSelectedIndex = currentSelected;\n }\n }\n\n /**\n * Overrides the onselectstart method of the document so other text on the page\n * doesn't get selected when doing shift selections.\n */\n disableTextSelection(): void {\n if (this._document) {\n this._document.onselectstart = function (): boolean {\n return false;\n };\n }\n }\n\n /**\n * Resets the original onselectstart method.\n */\n enableTextSelection(): void {\n if (this._document) {\n this._document.onselectstart = undefined;\n }\n }\n\n /**\n * emits the onRowClickEvent when a row is clicked\n * if clickable is true and selectable is false then select the row\n */\n handleRowClick(row: any, index: number, event: Event): void {\n if (this.clickable) {\n // ignoring linting rules here because attribute it actually null or not there\n // can't check for undefined\n const srcElement: any = event.srcElement || event.currentTarget;\n const element: HTMLElement = event.target as HTMLElement;\n /* tslint:disable-next-line */\n if (srcElement.getAttribute('stopRowClick') === null && element.tagName.toLowerCase() !== 'mat-pseudo-checkbox') {\n this.rowClick.emit({\n row,\n index,\n });\n }\n }\n }\n\n /**\n * Method handle for sort click event in column headers.\n */\n handleSort(column: ITdDataTableColumn): void {\n if (this._sortBy === column) {\n this._sortOrder =\n this._sortOrder === TdDataTableSortingOrder.Ascending\n ? TdDataTableSortingOrder.Descending\n : TdDataTableSortingOrder.Ascending;\n } else {\n this._sortBy = column;\n this._sortOrder = TdDataTableSortingOrder.Ascending;\n }\n this.sortChange.next({ name: this._sortBy.name, order: this._sortOrder });\n }\n\n /**\n * Handle all keyup events when focusing a data table row\n */\n _rowKeyup(event: KeyboardEvent, row: any, index: number): void {\n switch (event.keyCode) {\n case ENTER:\n case SPACE:\n /** if user presses enter or space, the row should be selected */\n if (this.selectable) {\n this._doSelection(this._data[this.fromRow + index], this.fromRow + index);\n }\n break;\n case UP_ARROW:\n /**\n * if users presses the up arrow, we focus the prev row\n * unless its the first row\n */\n if (index > 0) {\n this._rows.toArray()[index - 1].focus();\n }\n this.blockEvent(event);\n if (this.selectable && this.multiple && event.shiftKey && this.fromRow + index >= 0) {\n this._doSelection(this._data[this.fromRow + index], this.fromRow + index);\n }\n break;\n case DOWN_ARROW:\n /**\n * if users presses the down arrow, we focus the next row\n * unless its the last row\n */\n if (index < this._rows.toArray().length - 1) {\n this._rows.toArray()[index + 1].focus();\n }\n this.blockEvent(event);\n if (this.selectable && this.multiple && event.shiftKey && this.fromRow + index < this._data.length) {\n this._doSelection(this._data[this.fromRow + index], this.fromRow + index);\n }\n break;\n default:\n // default\n }\n }\n\n /**\n * Sets column index of the dragged column and initial clientX of column\n */\n _handleStartColumnDrag(index: number, event: MouseEvent): void {\n this._columnClientX = event.clientX;\n this._resizingColumn = index;\n }\n\n /**\n * Calculates new width depending on new clientX of dragger column\n */\n _handleColumnDrag(event: MouseEvent | DragEvent): void {\n // check if there was been a separator clicked for resize\n if (this._resizingColumn !== undefined && event.clientX > 0) {\n const xPosition: number = event.clientX;\n // checks if the separator is being moved to try and resize the column, else dont do anything\n if (xPosition > 0 && this._columnClientX > 0 && xPosition - this._columnClientX !== 0) {\n // calculate the new width depending if making the column bigger or smaller\n let proposedManualWidth: number = this._widths[this._resizingColumn].value + (xPosition - this._columnClientX);\n // if the proposed new width is less than the projected min width of the column, use projected min width\n if (proposedManualWidth < this._colElements.toArray()[this._resizingColumn].projectedWidth) {\n proposedManualWidth = this._colElements.toArray()[this._resizingColumn].projectedWidth;\n }\n this.columns[this._resizingColumn].width = proposedManualWidth;\n // update new x position for the resized column\n this._onColumnResize.next(xPosition);\n }\n }\n }\n\n /**\n * Ends dragged flags\n */\n _handleEndColumnDrag(): void {\n this._columnClientX = undefined;\n this._resizingColumn = undefined;\n }\n\n /**\n * Method to prevent the default events\n */\n blockEvent(event: Event): void {\n event.preventDefault();\n }\n\n private _getNestedValue(name: string, value: any): string {\n if (!(value instanceof Object) || !name) {\n return value;\n }\n if (name.indexOf('.') > -1) {\n const splitName: string[] = name.split(/\\.(.+)/, 2);\n return this._getNestedValue(splitName[1], value[splitName[0]]);\n } else {\n return value[name];\n }\n }\n\n /**\n * Does the actual Row Selection\n */\n private _doSelection(row: any, rowIndex: number): boolean {\n const wasSelected: boolean = this.isRowSelected(row);\n if (!wasSelected) {\n if (!this._multiple) {\n this.clearModel();\n }\n this.value.push(row);\n } else {\n // compare items by [compareWith] function\n row = this.value.filter((val: any) => {\n return this.compareWith(row, val);\n })[0];\n const index: number = this.value.indexOf(row);\n if (index > -1) {\n this.value.splice(index, 1);\n }\n }\n this._calculateCheckboxState();\n this.rowSelect.emit({ row, index: rowIndex, selected: !wasSelected });\n this.onChange(this.value);\n return !wasSelected;\n }\n\n /**\n * Calculate all the state of all checkboxes\n */\n private _calculateCheckboxState(): void {\n if (this._data) {\n this._allSelected = typeof this._data.find((d: any) => !this.isRowSelected(d)) === 'undefined';\n this._indeterminate = false;\n for (const row of this._data) {\n if (!this.isRowSelected(row)) {\n continue;\n }\n this._indeterminate = true;\n break;\n }\n }\n }\n\n /**\n * Calculates the widths for columns and cells depending on content\n */\n private _calculateWidths(): void {\n if (this._colElements && this._colElements.length) {\n this._widths = [];\n this._colElements.forEach((col: TdDataTableColumnComponent, index: number) => {\n this._adjustColumnWidth(index, this._calculateWidth());\n });\n this._adjustColumnWidhts();\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /**\n * Adjusts columns after calculation to see if they need to be recalculated.\n */\n private _adjustColumnWidhts(): void {\n let fixedTotalWidth: number = 0;\n // get the number of total columns that have flexible widths (not fixed or hidden)\n const flexibleWidths: number = this._widths.filter((width: IInternalColumnWidth, index: number) => {\n if (this.columns[index].hidden) {\n return false;\n }\n if (width.limit || width.max || width.min) {\n fixedTotalWidth += width.value;\n }\n return !width.limit && !width.max && !width.min;\n }).length;\n // calculate how much pixes are left that could be spread across\n // the flexible columns\n let recalculateHostWidth: number = 0;\n if (fixedTotalWidth < this.hostWidth) {\n recalculateHostWidth = this.hostWidth - fixedTotalWidth;\n }\n // if we have flexible columns and pixels to spare on them\n // we try and spread the pixels across them\n if (flexibleWidths && recalculateHostWidth) {\n const newValue: number = Math.floor(recalculateHostWidth / flexibleWidths);\n let adjustedNumber: number = 0;\n // adjust the column widths with the spread pixels\n this._widths.forEach((colWidth: IInternalColumnWidth) => {\n if (\n (this._widths[colWidth.index].max && this._widths[colWidth.index].value > newValue) ||\n (this._widths[colWidth.index].min && this._widths[colWidth.index].value < newValue) ||\n !this._widths[colWidth.index].limit\n ) {\n this._adjustColumnWidth(colWidth.index, newValue);\n adjustedNumber++;\n }\n });\n // if there are still columns that need to be recalculated, we start over\n const newFlexibleWidths: number = this._widths.filter((width: IInternalColumnWidth) => {\n return !width.limit && !width.max;\n }).length;\n if (newFlexibleWidths !== adjustedNumber && newFlexibleWidths !== flexibleWidths) {\n this._adjustColumnWidhts();\n }\n }\n }\n\n /**\n * Adjusts a single column to see if it can be recalculated\n */\n private _adjustColumnWidth(index: number, value: number): void {\n this._widths[index] = {\n value,\n index,\n limit: false,\n min: false,\n max: false,\n };\n // flag to see if we need to skip the min width projection\n // depending if a width or min width has been provided\n let skipMinWidthProjection: boolean = false;\n if (this.columns[index]) {\n // if the provided width has min/max, then we check to see if we need to set it\n if (typeof this.columns[index].width === 'object') {\n const widthOpts: ITdDataTableColumnWidth = <ITdDataTableColumnWidth>this.columns[index].width;\n // if the column width is less than the configured min, we override it\n skipMinWidthProjection = widthOpts && !!widthOpts.min;\n if (widthOpts && widthOpts.min >= this._widths[index].value) {\n this._widths[index].value = widthOpts.min;\n this._widths[index].min = true;\n // if the column width is more than the configured max, we override it\n } else if (widthOpts && widthOpts.max <= this._widths[index].value) {\n this._widths[index].value = widthOpts.max;\n this._widths[index].max = true;\n }\n // if it has a fixed width, then we just set it\n } else if (typeof this.columns[index].width === 'number') {\n this._widths[index].value = <number>this.columns[index].width;\n skipMinWidthProjection = this._widths[index].limit = true;\n }\n }\n // if there wasn't any width or min width provided, we set a min to what the column width min should be\n if (!skipMinWidthProjection && this._widths[index].value < this._colElements.toArray()[index].projectedWidth) {\n this._widths[index].value = this._colElements.toArray()[index].projectedWidth;\n this._widths[index].min = true;\n this._widths[index].limit = false;\n }\n }\n\n /**\n * Generic method to calculate column width\n */\n private _calculateWidth(): number {\n const renderedColumns: ITdDataTableColumn[] = this.columns.filter((col: ITdDataTableColumn) => !col.hidden);\n return Math.floor(this.hostWidth / renderedColumns.length);\n }\n\n /**\n * Method to calculate the rows to be rendered in the viewport\n */\n private _calculateVirtualRows(): void {\n let scrolledRows: number = 0;\n if (this._data) {\n this._totalHeight = 0;\n let rowHeightSum: number = 0;\n // loop through all rows to see if we have their height cached\n // and sum them all to calculate the total height\n this._data.forEach((d: any, i: number) => {\n // iterate through all rows at first and assume all\n // rows are the same height as the first one\n if (!this._rowHeightCache[i]) {\n this._rowHeightCache[i] = this._rowHeightCache[0] || TD_VIRTUAL_DEFAULT_ROW_HEIGHT;\n }\n rowHeightSum += this._rowHeightCache[i];\n // check how many rows have been scrolled\n if (this._scrollVerticalOffset - rowHeightSum > 0) {\n scrolledRows++;\n }\n });\n this._totalHeight = rowHeightSum;\n // set the initial row to be rendered taking into account the row offset\n const fromRow: number = scrolledRows - TD_VIRTUAL_OFFSET;\n this._fromRow = fromRow > 0 ? fromRow : 0;\n\n let hostHeight: number = this._hostHeight;\n let index: number = 0;\n // calculate how many rows can fit in the viewport\n while (hostHeight > 0) {\n hostHeight -= this._rowHeightCache[this.fromRow + index];\n index++;\n }\n // set the last row to be rendered taking into account the row offset\n const range: number = index - 1 + TD_VIRTUAL_OFFSET * 2;\n let toRow: number = range + this.fromRow;\n // if last row is greater than the total length, then we use the total length\n if (isFinite(toRow) && toRow > this._data.length) {\n toRow = this._data.length;\n } else if (!isFinite(toRow)) {\n toRow = TD_VIRTUAL_OFFSET;\n }\n this._toRow = toRow;\n } else {\n this._totalHeight = 0;\n this._fromRow = 0;\n this._toRow = 0;\n }\n\n let offset: number = 0;\n // calculate the proper offset depending on how many rows have been scrolled\n if (scrolledRows > TD_VIRTUAL_OFFSET) {\n for (let index: number = 0; index < this.fromRow; index++) {\n offset += this._rowHeightCache[index];\n }\n }\n\n this._offsetTransform = this._domSanitizer.bypassSecurityTrustStyle(\n 'translateY(' + (offset - this.totalHeight) + 'px)',\n );\n if (this._data) {\n this._virtualData = this.data.slice(this.fromRow, this.toRow);\n }\n // mark for check at the end of the queue so we are sure\n // that the changes will be marked\n Promise.resolve().then(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n Renderer2,\n ElementRef,\n HostBinding,\n HostListener,\n ViewChild,\n} from '@angular/core';\n\nimport { TdDataTableSortingOrder } from '../data-table.component';\n\nexport interface ITdDataTableSortChangeEvent {\n order: TdDataTableSortingOrder;\n name: string;\n}\n\n@Component({\n /* tslint:disable-next-line */\n selector: 'th[td-data-table-column]',\n styleUrls: ['./data-table-column.component.scss'],\n templateUrl: './data-table-column.component.html',\n})\nexport class TdDataTableColumnComponent {\n private _sortOrder: TdDataTableSortingOrder = TdDataTableSortingOrder.Ascending;\n\n @ViewChild('columnContent', { read: ElementRef, static: true }) _columnContent: ElementRef;\n\n get projectedWidth(): number {\n if (this._columnContent && this._columnContent.nativeElement) {\n return (<HTMLElement>this._columnContent.nativeElement).getBoundingClientRect().width;\n }\n return 100;\n }\n\n /**\n * name?: string\n * Sets unique column [name] for [sortable] events.\n */\n @Input() name: string = '';\n\n /**\n * sortable?: boolean\n * Enables sorting events, sort icons and active column states.\n * Defaults to 'false'\n */\n @Input() sortable: boolean = false;\n\n /**\n * active?: boolean\n * Sets column to active state when 'true'.\n * Defaults to 'false'\n */\n @Input() active: boolean = false;\n\n /**\n * numeric?: boolean\n * Makes column follow the numeric data-table specs and sort icon.\n * Defaults to 'false'\n */\n @Input() numeric: boolean = false;\n\n /**\n * if column sort order is present\n */\n @Input() isColumnSortOrder: boolean = false;\n\n /**\n * sortOrder?: ['ASC' | 'DESC'] or TdDataTableSortingOrder\n * Sets the sort order of column.\n * Defaults to 'ASC' or TdDataTableSortingOrder.Ascending\n */\n @Input('sortOrder')\n set sortOrder(order: 'ASC' | 'DESC') {\n const sortOrder: string = order ? order.toUpperCase() : 'ASC';\n if (sortOrder !== 'DESC' && sortOrder !== 'ASC') {\n throw new Error('[sortOrder] must be empty, ASC or DESC');\n }\n\n this._sortOrder = sortOrder === 'ASC' ? TdDataTableSortingOrder.Ascending : TdDataTableSortingOrder.Descending;\n }\n\n /**\n * sortChange?: function\n * Event emitted when the column headers are clicked. [sortable] needs to be enabled.\n * Emits an [ITdDataTableSortChangeEvent] implemented object.\n */\n @Output() sortChange: EventEmitter<ITdDataTableSortChangeEvent> = new EventEmitter<ITdDataTableSortChangeEvent>();\n\n @HostBinding('class.mat-clickable')\n get bindClickable(): boolean {\n return this.sortable;\n }\n\n @HostBinding('class.mat-sortable')\n get bingSortable(): boolean {\n return this.sortable;\n }\n\n @HostBinding('class.mat-active')\n get bindActive(): boolean {\n return this.active;\n }\n\n @HostBinding('class.mat-numeric')\n get bindNumeric(): boolean {\n return this.numeric;\n }\n\n constructor(private _elementRef: ElementRef, private _renderer: Renderer2) {\n this._renderer.addClass(this._elementRef.nativeElement, 'td-data-table-column');\n }\n\n /**\n * Listening to click event on host to throw a sort event\n */\n @HostListener('click')\n handleClick(): void {\n if (this.sortable) {\n this.sortChange.emit({ name: this.name, order: this._sortOrder });\n }\n }\n\n isAscending(): boolean {\n return this._sortOrder === TdDataTableSortingOrder.Ascending;\n }\n\n isDescending(): boolean {\n return this._sortOrder === TdDataTableSortingOrder.Descending;\n }\n}\n","import { Component, Input, Renderer2, ElementRef, HostBinding } from '@angular/core';\n\nexport type TdDataTableCellAlign = 'start' | 'center' | 'end';\n\n@Component({\n /* tslint:disable-next-line */\n selector: 'td[td-data-table-cell]',\n styleUrls: ['./data-table-cell.component.scss'],\n templateUrl: './data-table-cell.component.html',\n})\nexport class TdDataTableCellComponent {\n private _align: TdDataTableCellAlign;\n\n /**\n * numeric?: boolean\n * Makes cell follow the numeric data-table specs.\n * Defaults to 'false'\n */\n @Input() numeric: boolean = false;\n\n /**\n * align?: 'start' | 'center' | 'end'\n * Makes cell content align on demand\n * Defaults to 'left', overrides numeric\n */\n @Input()\n set align(align: TdDataTableCellAlign) {\n this._align = align;\n }\n get align(): TdDataTableCellAlign {\n return this._align;\n }\n\n @HostBinding('class.mat-numeric')\n get bindNumeric(): boolean {\n return this.numeric;\n }\n\n constructor(private _elementRef: ElementRef, private _renderer: Renderer2) {\n this._renderer.addClass(this._elementRef.nativeElement, 'td-data-table-cell');\n }\n}\n","import { Component, Renderer2, ElementRef } from '@angular/core';\n\n@Component({\n /* tslint:disable-next-line */\n selector: 'table[td-data-table]',\n styleUrls: ['./data-table-table.component.scss'],\n templateUrl: './data-table-table.component.html',\n})\nexport class TdDataTableTableComponent {\n constructor(private _elementRef: ElementRef, private _renderer: Renderer2) {\n this._renderer.addClass(this._elementRef.nativeElement, 'td-data-table');\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { TdDataTableSortingOrder } from '../data-table.component';\n\n@Injectable()\nexport class TdDataTableService {\n /**\n * params:\n * - data: any[]\n * - searchTerm: string\n * - ignoreCase: boolean = false\n * - excludedColumns: string[] = []\n *\n * Searches [data] parameter for [searchTerm] matches and returns a new array with them.\n */\n filterData(data: any[], searchTerm: string, ignoreCase: boolean = false, excludedColumns?: string[]): any[] {\n const filter: string = searchTerm ? (ignoreCase ? searchTerm.toLowerCase() : searchTerm) : '';\n if (filter) {\n data = data.filter((item: any) => {\n const res: any = Object.keys(item).find((key: string) => {\n if (!excludedColumns || excludedColumns.indexOf(key) === -1) {\n const preItemValue: string = '' + item[key];\n const itemValue: string = ignoreCase ? preItemValue.toLowerCase() : preItemValue;\n return itemValue.indexOf(filter) > -1;\n }\n });\n return typeof res !== 'undefined';\n });\n }\n return data;\n }\n\n /**\n * params:\n * - data: any[]\n * - sortBy: string\n * - sortOrder: TdDataTableSortingOrder = TdDataTableSortingOrder.Ascending\n *\n * Sorts [data] parameter by [sortBy] and [sortOrder] and returns the sorted data.\n */\n sortData(data: any[], sortBy: string, sortOrder: TdDataTableSortingOrder = TdDataTableSortingOrder.Ascending): any[] {\n if (sortBy) {\n data = Array.from(data); // Change the array reference to trigger OnPush and not mutate original array\n data.sort((a: any, b: any) => {\n const compA: any = a[sortBy];\n const compB: any = b[sortBy];\n let direction: number = 0;\n if (!Number.isNaN(Number.parseFloat(compA)) && !Number.isNaN(Number.parseFloat(compB))) {\n direction = Number.parseFloat(compA) - Number.parseFloat(compB);\n } else {\n if (compA < compB) {\n direction = -1;\n } else if (compA > compB) {\n direction = 1;\n }\n }\n return direction * (sortOrder === TdDataTableSortingOrder.Descending ? -1 : 1);\n });\n }\n return data;\n }\n\n /**\n * params:\n * - data: any[]\n * - fromRow: number\n * - toRow: : number\n *\n * Returns a section of the [data] parameter starting from [fromRow] and ending in [toRow].\n */\n pageData(data: any[], fromRow: number, toRow: number): any[] {\n if (fromRow >= 1) {\n data = data.slice(fromRow - 1, toRow);\n }\n return data;\n }\n}\n","import { NgModule, Type } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatPseudoCheckboxModule } from '@angular/material/core';\n\nimport { TdDataTableComponent } from './data-table.component';\nimport { TdDataTableColumnComponent } from './data-table-column/data-table-column.component';\nimport { TdDataTableCellComponent } from './data-table-cell/data-table-cell.component';\nimport { TdDataTableRowComponent, TdDataTableColumnRowComponent } from './data-table-row/data-table-row.component';\nimport { TdDataTableTableComponent } from './data-table-table/data-table-table.component';\nimport { TdDataTableTemplateDirective } from './directives/data-table-template.directive';\nimport { TdDataTableService } from './services/data-table.service';\n\nconst TD_DATA_TABLE: Type<any>[] = [\n TdDataTableComponent,\n TdDataTableTemplateDirective,\n\n TdDataTableColumnComponent,\n TdDataTableCellComponent,\n TdDataTableRowComponent,\n TdDataTableColumnRowComponent,\n TdDataTableTableComponent,\n];\n\n@NgModule({\n imports: [CommonModule, MatCheckboxModule, MatTooltipModule, MatIconModule, MatPseudoCheckboxModule],\n declarations: [TD_DATA_TABLE],\n exports: [TD_DATA_TABLE],\n providers: [TdDataTableService],\n})\nexport class CovalentDataTableModule {}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"covalent-core-data-table.js","sources":["../../../src/platform/core/data-table/data-table-row/data-table-row.component.ts","../../../src/platform/core/data-table/directives/data-table-template.directive.ts","../../../../src/platform/core/data-table/data-table.component.ts","../../../src/platform/core/data-table/data-table-column/data-table-column.component.ts","../../../src/platform/core/data-table/data-table-cell/data-table-cell.component.ts","../../../src/platform/core/data-table/data-table-table/data-table-table.component.ts","../../../src/platform/core/data-table/services/data-table.service.ts","../../../../src/platform/core/data-table/data-table.module.ts"],"sourcesContent":["import {\n Component,\n Input,\n Output,\n Renderer2,\n ElementRef,\n ContentChildren,\n QueryList,\n HostListener,\n} from '@angular/core';\n\nimport { TdDataTableCellComponent } from '../data-table-cell/data-table-cell.component';\nimport { TdDataTableColumnComponent } from '../data-table-column/data-table-column.component';\n\n@Component({\n /* tslint:disable-next-line */\n selector: 'tr[td-data-table-column-row]',\n styleUrls: ['./data-table-row.component.scss'],\n templateUrl: './data-table-row.component.html',\n})\nexport class TdDataTableColumnRowComponent {\n constructor(protected _elementRef: ElementRef, protected _renderer: Renderer2) {\n this._renderer.addClass(this._elementRef.nativeElement, 'td-data-table-column-row');\n }\n}\n\n@Component({\n /* tslint:disable-next-line */\n selector: 'tr[td-data-table-row]',\n styleUrls: ['./data-table-row.component.scss'],\n templateUrl: './data-table-row.component.html',\n})\nexport class TdDataTableRowComponent {\n private _selected: boolean = false;\n\n @Input('selected')\n set selected(selected: boolean) {\n if (selected) {\n this._renderer.addClass(this._elementRef.nativeElement, 'td-selected');\n } else {\n this._renderer.removeClass(this._elementRef.nativeElement, 'td-selected');\n }\n this._selected = selected;\n }\n get selected(): boolean {\n return this._selected;\n }\n\n get height(): number {\n let height: number = 48;\n if (this._elementRef.nativeElement) {\n height = (<HTMLElement>this._elementRef.nativeElement).getBoundingClientRect().height;\n }\n return height;\n }\n\n constructor(private _elementRef: ElementRef, private _renderer: Renderer2) {\n this._renderer.addClass(this._elementRef.nativeElement, 'td-data-table-row');\n }\n\n /**\n * Listening to click event to explicitly focus the row element.\n */\n @HostListener('click')\n clickListener(): void {\n this.focus();\n }\n\n focus(): void {\n this._elementRef.nativeElement.focus();\n }\n}\n","import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { TemplatePortalDirective } from '@angular/cdk/portal';\n\n@Directive({ selector: '[tdDataTableTemplate]ng-template' })\nexport class TdDataTableTemplateDirective extends TemplatePortalDirective {\n @Input() tdDataTableTemplate: string;\n constructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef) {\n super(templateRef, viewContainerRef);\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n forwardRef,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n ViewChild,\n OnDestroy,\n AfterViewInit,\n ContentChildren,\n TemplateRef,\n AfterContentInit,\n QueryList,\n Inject,\n Optional,\n ViewChildren,\n ElementRef,\n OnInit,\n AfterContentChecked,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ENTER, SPACE, UP_ARROW, DOWN_ARROW } from '@angular/cdk/keycodes';\n\nimport { Observable, Subscription, Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nimport { TdDataTableRowComponent } from './data-table-row/data-table-row.component';\nimport {\n ITdDataTableSortChangeEvent,\n TdDataTableColumnComponent,\n} from './data-table-column/data-table-column.component';\nimport { TdDataTableTemplateDirective } from './directives/data-table-template.directive';\n\nimport { IControlValueAccessor, mixinControlValueAccessor } from '@covalent/core/common';\n\nexport enum TdDataTableSortingOrder {\n Ascending = 'ASC',\n Descending = 'DESC',\n}\n\nexport interface ITdDataTableColumnWidth {\n min?: number;\n max?: number;\n}\n\nexport interface ITdDataTableColumn {\n name: string;\n label: string;\n tooltip?: string;\n numeric?: boolean;\n format?: (value: any) => any;\n nested?: boolean;\n sortable?: boolean;\n hidden?: boolean;\n filter?: boolean;\n width?: ITdDataTableColumnWidth | number;\n columnSortOrder?: number;\n}\n\nexport interface ITdDataTableSelectEvent {\n row: any;\n selected: boolean;\n index: number;\n}\n\nexport interface ITdDataTableSelectAllEvent {\n rows: any[];\n selected: boolean;\n}\n\nexport interface ITdDataTableRowClickEvent {\n row: any;\n index: number;\n}\n\nexport interface IInternalColumnWidth {\n value: number;\n limit: boolean;\n index: number;\n min?: boolean;\n max?: boolean;\n}\n\n/**\n * Constant to set the rows offset before and after the viewport\n */\nconst TD_VIRTUAL_OFFSET: number = 2;\n\n/**\n * Constant to set default row height if none is provided\n */\nconst TD_VIRTUAL_DEFAULT_ROW_HEIGHT: number = 48;\n\nexport class TdDataTableBase {\n constructor(public _changeDetectorRef: ChangeDetectorRef) {}\n}\n\n/* tslint:disable-next-line */\nexport const _TdDataTableMixinBase = mixinControlValueAccessor(TdDataTableBase, []);\n\n@Component({\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TdDataTableComponent),\n multi: true,\n },\n ],\n selector: 'td-data-table',\n styleUrls: ['./data-table.component.scss'],\n templateUrl: './data-table.component.html',\n inputs: ['value'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TdDataTableComponent\n extends _TdDataTableMixinBase\n implements IControlValueAccessor, OnInit, AfterContentInit, AfterContentChecked, AfterViewInit, OnDestroy\n{\n /** responsive width calculations */\n private _resizeSubs: Subscription;\n private _rowsChangedSubs: Subscription;\n private _hostWidth: number = 0;\n\n /** manually resizable columns */\n private _resizableColumns: boolean = false;\n private _columnClientX: number = 0;\n private _columnResizeSubs: Subscription;\n private _resizingColumn: number;\n private _onColumnResize: Subject<number> = new Subject<number>();\n\n get resizingColumn(): number {\n return this._resizingColumn;\n }\n\n get hostWidth(): number {\n // if the checkboxes are rendered, we need to remove their width\n // from the total width to calculate properly\n if (this.selectable) {\n return this._hostWidth - 42;\n }\n return this._hostWidth;\n }\n\n private _widths: IInternalColumnWidth[] = [];\n private _onResize: Subject<void> = new Subject<void>();\n\n /** column header reposition and viewpoort */\n private _verticalScrollSubs: Subscription;\n private _horizontalScrollSubs: Subscription;\n private _scrollHorizontalOffset: number = 0;\n\n private _onHorizontalScroll: Subject<number> = new Subject<number>();\n private _onVerticalScroll: Subject<number> = new Subject<number>();\n\n // Array of cached row heights to allow dynamic row heights\n private _rowHeightCache: number[] = [];\n // Total pseudo height of all the elements\n private _totalHeight: number = 0;\n // Total host height for the viewport\n private _hostHeight: number = 0;\n // Scrolled vertical pixels\n private _scrollVerticalOffset: number = 0;\n // Style to move the content a certain offset depending on scrolled offset\n private _offsetTransform: SafeStyle;\n\n // Variables that set from and to which rows will be rendered\n private _fromRow: number = 0;\n private _toRow: number = 0;\n\n /**\n * Returns the offset style with a proper calculation on how much it should move\n * over the y axis of the total height\n */\n get offsetTransform(): SafeStyle {\n return this._offsetTransform;\n }\n\n /**\n * Returns the assumed total height of the rows\n */\n get totalHeight(): number {\n return this._totalHeight;\n }\n\n /**\n * Returns the initial row to render in the viewport\n */\n get fromRow(): number {\n return this._fromRow;\n }\n\n /**\n * Returns the last row to render in the viewport\n */\n get toRow(): number {\n return this._toRow;\n }\n\n private _valueChangesSubs: Subscription;\n /** internal attributes */\n private _data: any[];\n // data virtually iterated by component\n private _virtualData: any[];\n private _columns: ITdDataTableColumn[];\n private _selectable: boolean = false;\n private _clickable: boolean = false;\n private _multiple: boolean = true;\n private _allSelected: boolean = false;\n private _indeterminate: boolean = false;\n\n /** sorting */\n private _sortable: boolean = false;\n private _sortBy: ITdDataTableColumn;\n private _sortOrder: TdDataTableSortingOrder = TdDataTableSortingOrder.Ascending;\n\n /** shift select */\n private _shiftPreviouslyPressed: boolean = false;\n private _lastSelectedIndex: number = -1;\n private _firstSelectedIndex: number = -1;\n private _firstCheckboxValue: boolean = false;\n\n /** template fetching support */\n private _templateMap: Map<string, TemplateRef<any>> = new Map<string, TemplateRef<any>>();\n @ContentChildren(TdDataTableTemplateDirective, { descendants: true })\n _templates: QueryList<TdDataTableTemplateDirective>;\n\n @ViewChild('scrollableDiv', { static: true }) _scrollableDiv: ElementRef;\n\n @ViewChildren('columnElement') _colElements: QueryList<TdDataTableColumnComponent>;\n\n @ViewChildren(TdDataTableRowComponent) _rows: QueryList<TdDataTableRowComponent>;\n\n /**\n * Returns scroll position to reposition column headers\n */\n get columnsLeftScroll(): number {\n return this._scrollHorizontalOffset * -1;\n }\n\n /**\n * Returns true if all values are selected.\n */\n get allSelected(): boolean {\n return this._allSelected;\n }\n\n /**\n * Returns true if all values are not deselected\n * and at least one is.\n */\n get indeterminate(): boolean {\n return this._indeterminate;\n }\n\n /**\n * data?: {[key: string]: any}[]\n * Sets the data to be rendered as rows.\n */\n @Input('data')\n set data(data: any[]) {\n this._data = data;\n this._rowHeightCache = [];\n Promise.resolve().then(() => {\n this.refresh();\n // scroll back to the top if the data has changed\n this._scrollableDiv.nativeElement.scrollTop = 0;\n });\n }\n get data(): any[] {\n return this._data;\n }\n\n get virtualData(): any[] {\n return this._virtualData;\n }\n\n /**\n * columns?: ITdDataTableColumn[]\n * Sets additional column configuration. [ITdDataTableColumn.name] has to exist in [data] as key.\n * Defaults to [data] keys.\n */\n @Input('columns')\n set columns(cols: ITdDataTableColumn[]) {\n this._columns = cols;\n }\n get columns(): ITdDataTableColumn[] {\n if (this._columns) {\n return this._columns;\n }\n\n if (this.hasData) {\n this._columns = [];\n // if columns is undefined, use key in [data] rows as name and label for column headers.\n const row: any = this._data[0];\n Object.keys(row).forEach((k: string) => {\n if (!this._columns.find((c: any) => c.name === k)) {\n this._columns.push({ name: k, label: k });\n }\n });\n return this._columns;\n } else {\n return [];\n }\n }\n\n /**\n * resizableColumns?: boolean\n * Enables manual column resize.\n * Defaults to 'false'\n */\n @Input('resizableColumns')\n set resizableColumns(resizableColumns: boolean) {\n this._resizableColumns = coerceBooleanProperty(resizableColumns);\n }\n get resizableColumns(): boolean {\n return this._resizableColumns;\n }\n\n /**\n * selectable?: boolean\n * Enables row selection events, hover and selected row states.\n * Defaults to 'false'\n */\n @Input('selectable')\n set selectable(selectable: boolean) {\n this._selectable = coerceBooleanProperty(selectable);\n }\n get selectable(): boolean {\n return this._selectable;\n }\n\n /**\n * clickable?: boolean\n * Enables row click events, hover.\n * Defaults to 'false'\n */\n @Input('clickable')\n set clickable(clickable: boolean) {\n this._clickable = coerceBooleanProperty(clickable);\n }\n get clickable(): boolean {\n return this._clickable;\n }\n\n /**\n * multiple?: boolean\n * Enables multiple row selection. [selectable] needs to be enabled.\n * Defaults to 'false'\n */\n @Input('multiple')\n set multiple(multiple: boolean) {\n this._multiple = coerceBooleanProperty(multiple);\n }\n get multiple(): boolean {\n return this._multiple;\n }\n\n /**\n * sortable?: boolean\n * Enables sorting events, sort icons and active column states.\n * Defaults to 'false'\n */\n @Input('sortable')\n set sortable(sortable: boolean) {\n this._sortable = coerceBooleanProperty(sortable);\n }\n get sortable(): boolean {\n return this._sortable;\n }\n\n /**\n * sortBy?: string\n * Sets the active sort column. [sortable] needs to be enabled.\n */\n @Input('sortBy')\n set sortBy(columnName: string) {\n if (!columnName) {\n return;\n }\n const column: ITdDataTableColumn = this.columns.find((c: any) => c.name === columnName);\n if (!column) {\n throw new Error('[sortBy] must be a valid column name');\n }\n\n this._sortBy = column;\n }\n get sortByColumn(): ITdDataTableColumn {\n return this._sortBy;\n }\n\n /**\n * sortOrder?: ['ASC' | 'DESC'] or TdDataTableSortingOrder\n * Sets the sort order of the [sortBy] column. [sortable] needs to be enabled.\n * Defaults to 'ASC' or TdDataTableSortingOrder.Ascending\n */\n @Input('sortOrder')\n set sortOrder(order: 'ASC' | 'DESC') {\n const sortOrder: string = order ? order.toUpperCase() : 'ASC';\n if (sortOrder !== 'DESC' && sortOrder !== 'ASC') {\n throw new Error('[sortOrder] must be empty, ASC or DESC');\n }\n\n this._sortOrder = sortOrder === 'ASC' ? TdDataTableSortingOrder.Ascending : TdDataTableSortingOrder.Descending;\n }\n get sortOrderEnum(): TdDataTableSortingOrder {\n return this._sortOrder;\n }\n\n get hasData(): boolean {\n return this._data && this._data.length > 0;\n }\n\n /**\n * sortChange?: function\n * Event emitted when the column headers are clicked. [sortable] needs to be enabled.\n * Emits an [ITdDataTableSortChangeEvent] implemented object.\n */\n @Output() sortChange: EventEmitter<ITdDataTableSortChangeEvent> = new EventEmitter<ITdDataTableSortChangeEvent>();\n\n /**\n * rowSelect?: function\n * Event emitted when a row is selected/deselected. [selectable] needs to be enabled.\n * Emits an [ITdDataTableSelectEvent] implemented object.\n */\n @Output() rowSelect: EventEmitter<ITdDataTableSelectEvent> = new EventEmitter<ITdDataTableSelectEvent>();\n\n /**\n * rowClick?: function\n * Event emitted when a row is clicked.\n * Emits an [ITdDataTableRowClickEvent] implemented object.\n */\n @Output() rowClick: EventEmitter<ITdDataTableRowClickEvent> = new EventEmitter<ITdDataTableRowClickEvent>();\n\n /**\n * selectAll?: function\n * Event emitted when all rows are selected/deselected by the all checkbox. [selectable] needs to be enabled.\n * Emits an [ITdDataTableSelectAllEvent] implemented object.\n */\n @Output() selectAll: EventEmitter<ITdDataTableSelectAllEvent> = new EventEmitter<ITdDataTableSelectAllEvent>();\n\n constructor(\n @Optional() @Inject(DOCUMENT) private _document: any,\n private _elementRef: ElementRef,\n private _domSanitizer: DomSanitizer,\n _changeDetectorRef: ChangeDetectorRef,\n ) {\n super(_changeDetectorRef);\n }\n\n /**\n * compareWith?: function(row, model): boolean\n * Allows custom comparison between row and model to see if row is selected or not\n * Default comparation is by reference\n */\n @Input() compareWith: (row: any, model: any) => boolean = (row: any, model: any) => {\n return row === model;\n };\n\n /**\n * Initialize observable for resize and scroll events\n */\n ngOnInit(): void {\n // initialize observable for resize calculations\n this._resizeSubs = this._onResize.asObservable().subscribe(() => {\n if (this._rows) {\n this._rows.toArray().forEach((row: TdDataTableRowComponent, index: number) => {\n this._rowHeightCache[this.fromRow + index] = row.height + 1;\n });\n }\n this._calculateWidths();\n this._calculateVirtualRows();\n });\n\n // initialize observable for column resize calculations\n this._columnResizeSubs = this._onColumnResize\n .asObservable()\n .pipe(debounceTime(0))\n .subscribe((clientX: number) => {\n this._columnClientX = clientX;\n this._calculateWidths();\n this._changeDetectorRef.markForCheck();\n });\n // initialize observable for scroll column header reposition\n this._horizontalScrollSubs = this._onHorizontalScroll.asObservable().subscribe((horizontalScroll: number) => {\n this._scrollHorizontalOffset = horizontalScroll;\n this._changeDetectorRef.markForCheck();\n });\n // initialize observable for virtual scroll rendering\n this._verticalScrollSubs = this._onVerticalScroll.asObservable().subscribe((verticalScroll: number) => {\n this._scrollVerticalOffset = verticalScroll;\n this._calculateVirtualRows();\n this._changeDetectorRef.markForCheck();\n });\n this._valueChangesSubs = this.valueChanges.subscribe((value: any) => {\n this.refresh();\n });\n }\n\n /**\n * Loads templates and sets them in a map for faster access.\n */\n ngAfterContentInit(): void {\n for (const template of this._templates.toArray()) {\n this._templateMap.set(template.tdDataTableTemplate, template.templateRef);\n }\n }\n\n /**\n * Checks hosts native elements widths to see if it has changed (resize check)\n */\n ngAfterContentChecked(): void {\n // check if the scroll has been reset when element is hidden\n if (this._scrollVerticalOffset - this._scrollableDiv.nativeElement.scrollTop > 5) {\n // scroll back to the top if element has been reset\n this._onVerticalScroll.next(0);\n }\n if (this._elementRef.nativeElement) {\n const newHostWidth: number = this._elementRef.nativeElement.getBoundingClientRect().width;\n // if the width has changed then we throw a resize event.\n if (this._hostWidth !== newHostWidth) {\n setTimeout(() => {\n this._hostWidth = newHostWidth;\n this._onResize.next();\n }, 0);\n }\n }\n if (this._scrollableDiv.nativeElement) {\n const newHostHeight: number = this._scrollableDiv.nativeElement.getBoundingClientRect().height;\n // if the height of the viewport has changed, then we mark for check\n if (this._hostHeight !== newHostHeight) {\n this._hostHeight = newHostHeight;\n this._calculateVirtualRows();\n this._changeDetectorRef.markForCheck();\n }\n }\n }\n\n /**\n * Registers to an observable that checks if all rows have been rendered\n * so we can start calculating the widths\n */\n ngAfterViewInit(): void {\n this._rowsChangedSubs = this._rows.changes.pipe(debounceTime(0)).subscribe(() => {\n this._onResize.next();\n });\n this._calculateVirtualRows();\n }\n\n /**\n * Unsubscribes observables when data table is destroyed\n */\n ngOnDestroy(): void {\n if (this._resizeSubs) {\n this._resizeSubs.unsubscribe();\n }\n if (this._columnResizeSubs) {\n this._columnResizeSubs.unsubscribe();\n }\n if (this._horizontalScrollSubs) {\n this._horizontalScrollSubs.unsubscribe();\n }\n if (this._verticalScrollSubs) {\n this._verticalScrollSubs.unsubscribe();\n }\n if (this._rowsChangedSubs) {\n this._rowsChangedSubs.unsubscribe();\n }\n if (this._valueChangesSubs) {\n this._valueChangesSubs.unsubscribe();\n }\n }\n\n /**\n * Method that gets executed every time there is a scroll event\n * Calls the scroll observable\n */\n handleScroll(event: Event): void {\n const element: HTMLElement = <HTMLElement>event.target;\n if (element) {\n const horizontalScroll: number = element.scrollLeft;\n if (this._scrollHorizontalOffset !== horizontalScroll) {\n this._onHorizontalScroll.next(horizontalScroll);\n }\n const verticalScroll: number = element.scrollTop;\n if (this._scrollVerticalOffset !== verticalScroll) {\n this._onVerticalScroll.next(verticalScroll);\n }\n }\n }\n\n /**\n * Returns the width needed for the columns via index\n */\n getColumnWidth(index: number): number {\n if (this._widths[index]) {\n return this._widths[index].value;\n }\n return undefined;\n }\n\n getCellValue(column: ITdDataTableColumn, value: any): string {\n if (column.nested === undefined || column.nested) {\n return this._getNestedValue(column.name, value);\n }\n return value[column.name];\n }\n\n /**\n * Getter method for template references\n */\n getTemplateRef(name: string): TemplateRef<any> {\n return this._templateMap.get(name);\n }\n\n /**\n * Clears model (ngModel) of component by removing all values in array.\n */\n clearModel(): void {\n this.value.splice(0, this.value.length);\n }\n\n /**\n * Refreshes data table and rerenders [data] and [columns]\n */\n refresh(): void {\n this._calculateVirtualRows();\n this._calculateWidths();\n this._calculateCheckboxState();\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Selects or clears all rows depending on 'checked' value.\n */\n _selectAll(checked: boolean): void {\n const toggledRows: any[] = [];\n if (checked) {\n this._data.forEach((row: any) => {\n // skiping already selected rows\n if (!this.isRowSelected(row)) {\n this.value.push(row);\n // checking which ones are being toggled\n toggledRows.push(row);\n }\n });\n this._allSelected = true;\n this._indeterminate = true;\n } else {\n this._data.forEach((row: any) => {\n // checking which ones are being toggled\n if (this.isRowSelected(row)) {\n toggledRows.push(row);\n const modelRow: any = this.value.filter((val: any) => {\n return this.compareWith(row, val);\n })[0];\n const index: number = this.value.indexOf(modelRow);\n if (index > -1) {\n this.value.splice(index, 1);\n }\n }\n });\n this._allSelected = false;\n this._indeterminate = false;\n }\n this.selectAll.emit({ rows: toggledRows, selected: checked });\n this.onChange(this.value);\n }\n\n /**\n * Checks if row is selected\n */\n isRowSelected(row: any): boolean {\n // compare items by [compareWith] function\n return this.value\n ? this.value.filter((val: any) => {\n return this.compareWith(row, val);\n }).length > 0\n : false;\n }\n\n /**\n * Selects or clears a row depending on 'checked' value if the row 'isSelectable'\n * handles cntrl clicks and shift clicks for multi-select\n */\n select(row: any, event: Event, currentSelected: number): void {\n if (this.selectable) {\n this.blockEvent(event);\n // Check to see if Shift key is selected and need to select everything in between\n const mouseEvent: MouseEvent = event as MouseEvent;\n if (this.multiple && mouseEvent && mouseEvent.shiftKey && this._lastSelectedIndex > -1) {\n let firstIndex: number = currentSelected;\n let lastIndex: number = this._lastSelectedIndex;\n if (currentSelected > this._lastSelectedIndex) {\n firstIndex = this._lastSelectedIndex;\n lastIndex = currentSelected;\n }\n // if clicking a checkbox behind the initial check, then toggle all selections expect the initial checkbox\n // else the checkboxes clicked are all after the initial one\n if (\n (this._firstSelectedIndex >= currentSelected && this._lastSelectedIndex > this._firstSelectedIndex) ||\n (this._firstSelectedIndex <= currentSelected && this._lastSelectedIndex < this._firstSelectedIndex)\n ) {\n for (let i: number = firstIndex; i <= lastIndex; i++) {\n if (this._firstSelectedIndex !== i) {\n this._doSelection(this._data[i], i);\n }\n }\n } else if (this._firstSelectedIndex > currentSelected || this._firstSelectedIndex < currentSelected) {\n // change indexes depending on where the next checkbox is selected (before or after)\n if (this._firstSelectedIndex > currentSelected) {\n lastIndex--;\n } else if (this._firstSelectedIndex < currentSelected) {\n firstIndex++;\n }\n for (let i: number = firstIndex; i <= lastIndex; i++) {\n const rowSelected: boolean = this.isRowSelected(this._data[i]);\n // if row is selected and first checkbox was selected\n // or if row was unselected and first checkbox was unselected\n // we ignore the toggle\n if ((this._firstCheckboxValue && !rowSelected) || (!this._firstCheckboxValue && rowSelected)) {\n this._doSelection(this._data[i], i);\n } else if (\n this._shiftPreviouslyPressed &&\n ((currentSelected >= this._firstSelectedIndex && currentSelected <= this._lastSelectedIndex) ||\n (currentSelected <= this._firstSelectedIndex && currentSelected >= this._lastSelectedIndex))\n ) {\n // else if the checkbox selected was in the middle of the last selection and the first selection\n // then we undo the selections\n this._doSelection(this._data[i], i);\n }\n }\n }\n this._shiftPreviouslyPressed = true;\n // if shift wasnt pressed, then we take the element checked as the first row\n // incase the next click uses shift\n } else if (mouseEvent && !mouseEvent.shiftKey) {\n this._firstCheckboxValue = this._doSelection(row, currentSelected);\n this._shiftPreviouslyPressed = false;\n this._firstSelectedIndex = currentSelected;\n }\n this._lastSelectedIndex = currentSelected;\n }\n }\n\n /**\n * Overrides the onselectstart method of the document so other text on the page\n * doesn't get selected when doing shift selections.\n */\n disableTextSelection(): void {\n if (this._document) {\n this._document.onselectstart = function (): boolean {\n return false;\n };\n }\n }\n\n /**\n * Resets the original onselectstart method.\n */\n enableTextSelection(): void {\n if (this._document) {\n this._document.onselectstart = undefined;\n }\n }\n\n /**\n * emits the onRowClickEvent when a row is clicked\n * if clickable is true and selectable is false then select the row\n */\n handleRowClick(row: any, index: number, event: Event): void {\n if (this.clickable) {\n // ignoring linting rules here because attribute it actually null or not there\n // can't check for undefined\n const srcElement: any = event.srcElement || event.currentTarget;\n const element: HTMLElement = event.target as HTMLElement;\n /* tslint:disable-next-line */\n if (srcElement.getAttribute('stopRowClick') === null && element.tagName.toLowerCase() !== 'mat-pseudo-checkbox') {\n this.rowClick.emit({\n row,\n index,\n });\n }\n }\n }\n\n /**\n * Method handle for sort click event in column headers.\n */\n handleSort(column: ITdDataTableColumn): void {\n if (this._sortBy === column) {\n this._sortOrder =\n this._sortOrder === TdDataTableSortingOrder.Ascending\n ? TdDataTableSortingOrder.Descending\n : TdDataTableSortingOrder.Ascending;\n } else {\n this._sortBy = column;\n this._sortOrder = TdDataTableSortingOrder.Ascending;\n }\n this.sortChange.next({ name: this._sortBy.name, order: this._sortOrder });\n }\n\n /**\n * Handle all keyup events when focusing a data table row\n */\n _rowKeyup(event: KeyboardEvent, row: any, index: number): void {\n switch (event.keyCode) {\n case ENTER:\n case SPACE:\n /** if user presses enter or space, the row should be selected */\n if (this.selectable) {\n this._doSelection(this._data[this.fromRow + index], this.fromRow + index);\n }\n break;\n case UP_ARROW:\n /**\n * if users presses the up arrow, we focus the prev row\n * unless its the first row\n */\n if (index > 0) {\n this._rows.toArray()[index - 1].focus();\n }\n this.blockEvent(event);\n if (this.selectable && this.multiple && event.shiftKey && this.fromRow + index >= 0) {\n this._doSelection(this._data[this.fromRow + index], this.fromRow + index);\n }\n break;\n case DOWN_ARROW:\n /**\n * if users presses the down arrow, we focus the next row\n * unless its the last row\n */\n if (index < this._rows.toArray().length - 1) {\n this._rows.toArray()[index + 1].focus();\n }\n this.blockEvent(event);\n if (this.selectable && this.multiple && event.shiftKey && this.fromRow + index < this._data.length) {\n this._doSelection(this._data[this.fromRow + index], this.fromRow + index);\n }\n break;\n default:\n // default\n }\n }\n\n /**\n * Sets column index of the dragged column and initial clientX of column\n */\n _handleStartColumnDrag(index: number, event: MouseEvent): void {\n this._columnClientX = event.clientX;\n this._resizingColumn = index;\n }\n\n /**\n * Calculates new width depending on new clientX of dragger column\n */\n _handleColumnDrag(event: MouseEvent | DragEvent): void {\n // check if there was been a separator clicked for resize\n if (this._resizingColumn !== undefined && event.clientX > 0) {\n const xPosition: number = event.clientX;\n // checks if the separator is being moved to try and resize the column, else dont do anything\n if (xPosition > 0 && this._columnClientX > 0 && xPosition - this._columnClientX !== 0) {\n // calculate the new width depending if making the column bigger or smaller\n let proposedManualWidth: number = this._widths[this._resizingColumn].value + (xPosition - this._columnClientX);\n // if the proposed new width is less than the projected min width of the column, use projected min width\n if (proposedManualWidth < this._colElements.toArray()[this._resizingColumn].projectedWidth) {\n proposedManualWidth = this._colElements.toArray()[this._resizingColumn].projectedWidth;\n }\n this.columns[this._resizingColumn].width = proposedManualWidth;\n // update new x position for the resized column\n this._onColumnResize.next(xPosition);\n }\n }\n }\n\n /**\n * Ends dragged flags\n */\n _handleEndColumnDrag(): void {\n this._columnClientX = undefined;\n this._resizingColumn = undefined;\n }\n\n /**\n * Method to prevent the default events\n */\n blockEvent(event: Event): void {\n event.preventDefault();\n }\n\n private _getNestedValue(name: string, value: any): string {\n if (!(value instanceof Object) || !name) {\n return value;\n }\n if (name.indexOf('.') > -1) {\n const splitName: string[] = name.split(/\\.(.+)/, 2);\n return this._getNestedValue(splitName[1], value[splitName[0]]);\n } else {\n return value[name];\n }\n }\n\n /**\n * Does the actual Row Selection\n */\n private _doSelection(row: any, rowIndex: number): boolean {\n const wasSelected: boolean = this.isRowSelected(row);\n if (!wasSelected) {\n if (!this._multiple) {\n this.clearModel();\n }\n this.value.push(row);\n } else {\n // compare items by [compareWith] function\n row = this.value.filter((val: any) => {\n return this.compareWith(row, val);\n })[0];\n const index: number = this.value.indexOf(row);\n if (index > -1) {\n this.value.splice(index, 1);\n }\n }\n this._calculateCheckboxState();\n this.rowSelect.emit({ row, index: rowIndex, selected: !wasSelected });\n this.onChange(this.value);\n return !wasSelected;\n }\n\n /**\n * Calculate all the state of all checkboxes\n */\n private _calculateCheckboxState(): void {\n if (this._data) {\n this._allSelected = typeof this._data.find((d: any) => !this.isRowSelected(d)) === 'undefined';\n this._indeterminate = false;\n for (const row of this._data) {\n if (!this.isRowSelected(row)) {\n continue;\n }\n this._indeterminate = true;\n break;\n }\n }\n }\n\n /**\n * Calculates the widths for columns and cells depending on content\n */\n private _calculateWidths(): void {\n if (this._colElements && this._colElements.length) {\n this._widths = [];\n this._colElements.forEach((col: TdDataTableColumnComponent, index: number) => {\n this._adjustColumnWidth(index, this._calculateWidth());\n });\n this._adjustColumnWidhts();\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /**\n * Adjusts columns after calculation to see if they need to be recalculated.\n */\n private _adjustColumnWidhts(): void {\n let fixedTotalWidth: number = 0;\n // get the number of total columns that have flexible widths (not fixed or hidden)\n const flexibleWidths: number = this._widths.filter((width: IInternalColumnWidth, index: number) => {\n if (this.columns[index].hidden) {\n return false;\n }\n if (width.limit || width.max || width.min) {\n fixedTotalWidth += width.value;\n }\n return !width.limit && !width.max && !width.min;\n }).length;\n // calculate how much pixes are left that could be spread across\n // the flexible columns\n let recalculateHostWidth: number = 0;\n if (fixedTotalWidth < this.hostWidth) {\n recalculateHostWidth = this.hostWidth - fixedTotalWidth;\n }\n // if we have flexible columns and pixels to spare on them\n // we try and spread the pixels across them\n if (flexibleWidths && recalculateHostWidth) {\n const newValue: number = Math.floor(recalculateHostWidth / flexibleWidths);\n let adjustedNumber: number = 0;\n // adjust the column widths with the spread pixels\n this._widths.forEach((colWidth: IInternalColumnWidth) => {\n if (\n (this._widths[colWidth.index].max && this._widths[colWidth.index].value > newValue) ||\n (this._widths[colWidth.index].min && this._widths[colWidth.index].value < newValue) ||\n !this._widths[colWidth.index].limit\n ) {\n this._adjustColumnWidth(colWidth.index, newValue);\n adjustedNumber++;\n }\n });\n // if there are still columns that need to be recalculated, we start over\n const newFlexibleWidths: number = this._widths.filter((width: IInternalColumnWidth) => {\n return !width.limit && !width.max;\n }).length;\n if (newFlexibleWidths !== adjustedNumber && newFlexibleWidths !== flexibleWidths) {\n this._adjustColumnWidhts();\n }\n }\n }\n\n /**\n * Adjusts a single column to see if it can be recalculated\n */\n private _adjustColumnWidth(index: number, value: number): void {\n this._widths[index] = {\n value,\n index,\n limit: false,\n min: false,\n max: false,\n };\n // flag to see if we need to skip the min width projection\n // depending if a width or min width has been provided\n let skipMinWidthProjection: boolean = false;\n if (this.columns[index]) {\n // if the provided width has min/max, then we check to see if we need to set it\n if (typeof this.columns[index].width === 'object') {\n const widthOpts: ITdDataTableColumnWidth = <ITdDataTableColumnWidth>this.columns[index].width;\n // if the column width is less than the configured min, we override it\n skipMinWidthProjection = widthOpts && !!widthOpts.min;\n if (widthOpts && widthOpts.min >= this._widths[index].value) {\n this._widths[index].value = widthOpts.min;\n this._widths[index].min = true;\n // if the column width is more than the configured max, we override it\n } else if (widthOpts && widthOpts.max <= this._widths[index].value) {\n this._widths[index].value = widthOpts.max;\n this._widths[index].max = true;\n }\n // if it has a fixed width, then we just set it\n } else if (typeof this.columns[index].width === 'number') {\n this._widths[index].value = <number>this.columns[index].width;\n skipMinWidthProjection = this._widths[index].limit = true;\n }\n }\n // if there wasn't any width or min width provided, we set a min to what the column width min should be\n if (!skipMinWidthProjection && this._widths[index].value < this._colElements.toArray()[index].projectedWidth) {\n this._widths[index].value = this._colElements.toArray()[index].projectedWidth;\n this._widths[index].min = true;\n this._widths[index].limit = false;\n }\n }\n\n /**\n * Generic method to calculate column width\n */\n private _calculateWidth(): number {\n const renderedColumns: ITdDataTableColumn[] = this.columns.filter((col: ITdDataTableColumn) => !col.hidden);\n return Math.floor(this.hostWidth / renderedColumns.length);\n }\n\n /**\n * Method to calculate the rows to be rendered in the viewport\n */\n private _calculateVirtualRows(): void {\n let scrolledRows: number = 0;\n if (this._data) {\n this._totalHeight = 0;\n let rowHeightSum: number = 0;\n // loop through all rows to see if we have their height cached\n // and sum them all to calculate the total height\n this._data.forEach((d: any, i: number) => {\n // iterate through all rows at first and assume all\n // rows are the same height as the first one\n if (!this._rowHeightCache[i]) {\n this._rowHeightCache[i] = this._rowHeightCache[0] || TD_VIRTUAL_DEFAULT_ROW_HEIGHT;\n }\n rowHeightSum += this._rowHeightCache[i];\n // check how many rows have been scrolled\n if (this._scrollVerticalOffset - rowHeightSum > 0) {\n scrolledRows++;\n }\n });\n this._totalHeight = rowHeightSum;\n // set the initial row to be rendered taking into account the row offset\n const fromRow: number = scrolledRows - TD_VIRTUAL_OFFSET;\n this._fromRow = fromRow > 0 ? fromRow : 0;\n\n let hostHeight: number = this._hostHeight;\n let index: number = 0;\n // calculate how many rows can fit in the viewport\n while (hostHeight > 0) {\n hostHeight -= this._rowHeightCache[this.fromRow + index];\n index++;\n }\n // set the last row to be rendered taking into account the row offset\n const range: number = index - 1 + TD_VIRTUAL_OFFSET * 2;\n let toRow: number = range + this.fromRow;\n // if last row is greater than the total length, then we use the total length\n if (isFinite(toRow) && toRow > this._data.length) {\n toRow = this._data.length;\n } else if (!isFinite(toRow)) {\n toRow = TD_VIRTUAL_OFFSET;\n }\n this._toRow = toRow;\n } else {\n this._totalHeight = 0;\n this._fromRow = 0;\n this._toRow = 0;\n }\n\n let offset: number = 0;\n // calculate the proper offset depending on how many rows have been scrolled\n if (scrolledRows > TD_VIRTUAL_OFFSET) {\n for (let index: number = 0; index < this.fromRow; index++) {\n offset += this._rowHeightCache[index];\n }\n }\n\n this._offsetTransform = this._domSanitizer.bypassSecurityTrustStyle(\n 'translateY(' + (offset - this.totalHeight) + 'px)',\n );\n if (this._data) {\n this._virtualData = this.data.slice(this.fromRow, this.toRow);\n }\n // mark for check at the end of the queue so we are sure\n // that the changes will be marked\n Promise.resolve().then(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n Renderer2,\n ElementRef,\n HostBinding,\n HostListener,\n ViewChild,\n} from '@angular/core';\n\nimport { TdDataTableSortingOrder } from '../data-table.component';\n\nexport interface ITdDataTableSortChangeEvent {\n order: TdDataTableSortingOrder;\n name: string;\n}\n\n@Component({\n /* tslint:disable-next-line */\n selector: 'th[td-data-table-column]',\n styleUrls: ['./data-table-column.component.scss'],\n templateUrl: './data-table-column.component.html',\n})\nexport class TdDataTableColumnComponent {\n private _sortOrder: TdDataTableSortingOrder = TdDataTableSortingOrder.Ascending;\n\n @ViewChild('columnContent', { read: ElementRef, static: true }) _columnContent: ElementRef;\n\n get projectedWidth(): number {\n if (this._columnContent && this._columnContent.nativeElement) {\n return (<HTMLElement>this._columnContent.nativeElement).getBoundingClientRect().width;\n }\n return 100;\n }\n\n /**\n * name?: string\n * Sets unique column [name] for [sortable] events.\n */\n @Input() name: string = '';\n\n /**\n * sortable?: boolean\n * Enables sorting events, sort icons and active column states.\n * Defaults to 'false'\n */\n @Input() sortable: boolean = false;\n\n /**\n * active?: boolean\n * Sets column to active state when 'true'.\n * Defaults to 'false'\n */\n @Input() active: boolean = false;\n\n /**\n * numeric?: boolean\n * Makes column follow the numeric data-table specs and sort icon.\n * Defaults to 'false'\n */\n @Input() numeric: boolean = false;\n\n /**\n * if column sort order is present\n */\n @Input() isColumnSortOrder: boolean = false;\n\n /**\n * sortOrder?: ['ASC' | 'DESC'] or TdDataTableSortingOrder\n * Sets the sort order of column.\n * Defaults to 'ASC' or TdDataTableSortingOrder.Ascending\n */\n @Input('sortOrder')\n set sortOrder(order: 'ASC' | 'DESC') {\n const sortOrder: string = order ? order.toUpperCase() : 'ASC';\n if (sortOrder !== 'DESC' && sortOrder !== 'ASC') {\n throw new Error('[sortOrder] must be empty, ASC or DESC');\n }\n\n this._sortOrder = sortOrder === 'ASC' ? TdDataTableSortingOrder.Ascending : TdDataTableSortingOrder.Descending;\n }\n\n /**\n * sortChange?: function\n * Event emitted when the column headers are clicked. [sortable] needs to be enabled.\n * Emits an [ITdDataTableSortChangeEvent] implemented object.\n */\n @Output() sortChange: EventEmitter<ITdDataTableSortChangeEvent> = new EventEmitter<ITdDataTableSortChangeEvent>();\n\n @HostBinding('class.mat-clickable')\n get bindClickable(): boolean {\n return this.sortable;\n }\n\n @HostBinding('class.mat-sortable')\n get bingSortable(): boolean {\n return this.sortable;\n }\n\n @HostBinding('class.mat-active')\n get bindActive(): boolean {\n return this.active;\n }\n\n @HostBinding('class.mat-numeric')\n get bindNumeric(): boolean {\n return this.numeric;\n }\n\n constructor(private _elementRef: ElementRef, private _renderer: Renderer2) {\n this._renderer.addClass(this._elementRef.nativeElement, 'td-data-table-column');\n }\n\n /**\n * Listening to click event on host to throw a sort event\n */\n @HostListener('click')\n handleClick(): void {\n if (this.sortable) {\n this.sortChange.emit({ name: this.name, order: this._sortOrder });\n }\n }\n\n isAscending(): boolean {\n return this._sortOrder === TdDataTableSortingOrder.Ascending;\n }\n\n isDescending(): boolean {\n return this._sortOrder === TdDataTableSortingOrder.Descending;\n }\n}\n","import { Component, Input, Renderer2, ElementRef, HostBinding } from '@angular/core';\n\nexport type TdDataTableCellAlign = 'start' | 'center' | 'end';\n\n@Component({\n /* tslint:disable-next-line */\n selector: 'td[td-data-table-cell]',\n styleUrls: ['./data-table-cell.component.scss'],\n templateUrl: './data-table-cell.component.html',\n})\nexport class TdDataTableCellComponent {\n private _align: TdDataTableCellAlign;\n\n /**\n * numeric?: boolean\n * Makes cell follow the numeric data-table specs.\n * Defaults to 'false'\n */\n @Input() numeric: boolean = false;\n\n /**\n * align?: 'start' | 'center' | 'end'\n * Makes cell content align on demand\n * Defaults to 'left', overrides numeric\n */\n @Input()\n set align(align: TdDataTableCellAlign) {\n this._align = align;\n }\n get align(): TdDataTableCellAlign {\n return this._align;\n }\n\n @HostBinding('class.mat-numeric')\n get bindNumeric(): boolean {\n return this.numeric;\n }\n\n constructor(private _elementRef: ElementRef, private _renderer: Renderer2) {\n this._renderer.addClass(this._elementRef.nativeElement, 'td-data-table-cell');\n }\n}\n","import { Component, Renderer2, ElementRef } from '@angular/core';\n\n@Component({\n /* tslint:disable-next-line */\n selector: 'table[td-data-table]',\n styleUrls: ['./data-table-table.component.scss'],\n templateUrl: './data-table-table.component.html',\n})\nexport class TdDataTableTableComponent {\n constructor(private _elementRef: ElementRef, private _renderer: Renderer2) {\n this._renderer.addClass(this._elementRef.nativeElement, 'td-data-table');\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { TdDataTableSortingOrder } from '../data-table.component';\n\n@Injectable()\nexport class TdDataTableService {\n /**\n * params:\n * - data: any[]\n * - searchTerm: string\n * - ignoreCase: boolean = false\n * - excludedColumns: string[] = []\n *\n * Searches [data] parameter for [searchTerm] matches and returns a new array with them.\n */\n filterData(data: any[], searchTerm: string, ignoreCase: boolean = false, excludedColumns?: string[]): any[] {\n const filter: string = searchTerm ? (ignoreCase ? searchTerm.toLowerCase() : searchTerm) : '';\n if (filter) {\n data = data.filter((item: any) => {\n const res: any = Object.keys(item).find((key: string) => {\n if (!excludedColumns || excludedColumns.indexOf(key) === -1) {\n const preItemValue: string = '' + item[key];\n const itemValue: string = ignoreCase ? preItemValue.toLowerCase() : preItemValue;\n return itemValue.indexOf(filter) > -1;\n }\n });\n return typeof res !== 'undefined';\n });\n }\n return data;\n }\n\n /**\n * params:\n * - data: any[]\n * - sortBy: string\n * - sortOrder: TdDataTableSortingOrder = TdDataTableSortingOrder.Ascending\n *\n * Sorts [data] parameter by [sortBy] and [sortOrder] and returns the sorted data.\n */\n sortData(data: any[], sortBy: string, sortOrder: TdDataTableSortingOrder = TdDataTableSortingOrder.Ascending): any[] {\n if (sortBy) {\n data = Array.from(data); // Change the array reference to trigger OnPush and not mutate original array\n data.sort((a: any, b: any) => {\n const compA: any = a[sortBy];\n const compB: any = b[sortBy];\n let direction: number = 0;\n if (!Number.isNaN(Number.parseFloat(compA)) && !Number.isNaN(Number.parseFloat(compB))) {\n direction = Number.parseFloat(compA) - Number.parseFloat(compB);\n } else {\n if (compA < compB) {\n direction = -1;\n } else if (compA > compB) {\n direction = 1;\n }\n }\n return direction * (sortOrder === TdDataTableSortingOrder.Descending ? -1 : 1);\n });\n }\n return data;\n }\n\n /**\n * params:\n * - data: any[]\n * - fromRow: number\n * - toRow: : number\n *\n * Returns a section of the [data] parameter starting from [fromRow] and ending in [toRow].\n */\n pageData(data: any[], fromRow: number, toRow: number): any[] {\n if (fromRow >= 1) {\n data = data.slice(fromRow - 1, toRow);\n }\n return data;\n }\n}\n","import { NgModule, Type } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatPseudoCheckboxModule } from '@angular/material/core';\n\nimport { TdDataTableComponent } from './data-table.component';\nimport { TdDataTableColumnComponent } from './data-table-column/data-table-column.component';\nimport { TdDataTableCellComponent } from './data-table-cell/data-table-cell.component';\nimport { TdDataTableRowComponent, TdDataTableColumnRowComponent } from './data-table-row/data-table-row.component';\nimport { TdDataTableTableComponent } from './data-table-table/data-table-table.component';\nimport { TdDataTableTemplateDirective } from './directives/data-table-template.directive';\nimport { TdDataTableService } from './services/data-table.service';\n\nconst TD_DATA_TABLE: Type<any>[] = [\n TdDataTableComponent,\n TdDataTableTemplateDirective,\n\n TdDataTableColumnComponent,\n TdDataTableCellComponent,\n TdDataTableRowComponent,\n TdDataTableColumnRowComponent,\n TdDataTableTableComponent,\n];\n\n@NgModule({\n imports: [CommonModule, MatCheckboxModule, MatTooltipModule, MatIconModule, MatPseudoCheckboxModule],\n declarations: [TD_DATA_TABLE],\n exports: [TD_DATA_TABLE],\n providers: [TdDataTableService],\n})\nexport class CovalentDataTableModule {}\n"],"names":[],"mappings":"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"}