@swimlane/ngx-datatable 11.1.4 → 11.2.0

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 (196) hide show
  1. package/.npmignore +6 -0
  2. package/README.md +2 -1
  3. package/config/deploy.js +2 -2
  4. package/config/karma.conf.js +5 -0
  5. package/config/webpack.package.js +4 -0
  6. package/package.json +15 -14
  7. package/release/components/body/body-cell.component.js.map +1 -1
  8. package/release/components/body/body-cell.component.metadata.json +1 -1
  9. package/release/components/body/body-group-header-template.directive.js.map +1 -1
  10. package/release/components/body/body-group-header-template.directive.metadata.json +1 -1
  11. package/release/components/body/body-group-header.directive.d.ts +4 -5
  12. package/release/components/body/body-group-header.directive.js +4 -5
  13. package/release/components/body/body-group-header.directive.js.map +1 -1
  14. package/release/components/body/body-group-header.directive.metadata.json +1 -1
  15. package/release/components/body/body-row-wrapper.component.js.map +1 -1
  16. package/release/components/body/body-row-wrapper.component.metadata.json +1 -1
  17. package/release/components/body/body-row.component.js +5 -1
  18. package/release/components/body/body-row.component.js.map +1 -1
  19. package/release/components/body/body-row.component.metadata.json +1 -1
  20. package/release/components/body/body.component.d.ts +2 -1
  21. package/release/components/body/body.component.js +31 -16
  22. package/release/components/body/body.component.js.map +1 -1
  23. package/release/components/body/body.component.metadata.json +1 -1
  24. package/release/components/body/index.js.map +1 -1
  25. package/release/components/body/index.metadata.json +1 -1
  26. package/release/components/body/progress-bar.component.js.map +1 -1
  27. package/release/components/body/progress-bar.component.metadata.json +1 -1
  28. package/release/components/body/scroller.component.d.ts +3 -2
  29. package/release/components/body/scroller.component.js +5 -3
  30. package/release/components/body/scroller.component.js.map +1 -1
  31. package/release/components/body/scroller.component.metadata.json +1 -1
  32. package/release/components/body/selection.component.js.map +1 -1
  33. package/release/components/body/selection.component.metadata.json +1 -1
  34. package/release/components/columns/column-cell.directive.js.map +1 -1
  35. package/release/components/columns/column-cell.directive.metadata.json +1 -1
  36. package/release/components/columns/column-header.directive.js.map +1 -1
  37. package/release/components/columns/column-header.directive.metadata.json +1 -1
  38. package/release/components/columns/column.directive.js.map +1 -1
  39. package/release/components/columns/column.directive.metadata.json +1 -1
  40. package/release/components/columns/index.js.map +1 -1
  41. package/release/components/columns/index.metadata.json +1 -1
  42. package/release/components/datatable.component.css +7 -2
  43. package/release/components/datatable.component.d.ts +8 -3
  44. package/release/components/datatable.component.js +29 -11
  45. package/release/components/datatable.component.js.map +1 -1
  46. package/release/components/datatable.component.metadata.json +1 -1
  47. package/release/components/footer/footer-template.directive.js.map +1 -1
  48. package/release/components/footer/footer-template.directive.metadata.json +1 -1
  49. package/release/components/footer/footer.component.js.map +1 -1
  50. package/release/components/footer/footer.component.metadata.json +1 -1
  51. package/release/components/footer/footer.directive.js.map +1 -1
  52. package/release/components/footer/footer.directive.metadata.json +1 -1
  53. package/release/components/footer/index.js.map +1 -1
  54. package/release/components/footer/index.metadata.json +1 -1
  55. package/release/components/footer/pager.component.js +1 -1
  56. package/release/components/footer/pager.component.js.map +1 -1
  57. package/release/components/footer/pager.component.metadata.json +1 -1
  58. package/release/components/header/header-cell.component.js +2 -1
  59. package/release/components/header/header-cell.component.js.map +1 -1
  60. package/release/components/header/header-cell.component.metadata.json +1 -1
  61. package/release/components/header/header.component.js +1 -0
  62. package/release/components/header/header.component.js.map +1 -1
  63. package/release/components/header/header.component.metadata.json +1 -1
  64. package/release/components/header/index.js.map +1 -1
  65. package/release/components/header/index.metadata.json +1 -1
  66. package/release/components/index.js.map +1 -1
  67. package/release/components/index.metadata.json +1 -1
  68. package/release/components/row-detail/index.js.map +1 -1
  69. package/release/components/row-detail/index.metadata.json +1 -1
  70. package/release/components/row-detail/row-detail-template.directive.js.map +1 -1
  71. package/release/components/row-detail/row-detail-template.directive.metadata.json +1 -1
  72. package/release/components/row-detail/row-detail.directive.js.map +1 -1
  73. package/release/components/row-detail/row-detail.directive.metadata.json +1 -1
  74. package/release/datatable.module.d.ts +0 -1
  75. package/release/datatable.module.js +2 -2
  76. package/release/datatable.module.js.map +1 -1
  77. package/release/datatable.module.metadata.json +1 -1
  78. package/release/directives/draggable.directive.js +3 -3
  79. package/release/directives/draggable.directive.js.map +1 -1
  80. package/release/directives/draggable.directive.metadata.json +1 -1
  81. package/release/directives/index.js.map +1 -1
  82. package/release/directives/index.metadata.json +1 -1
  83. package/release/directives/long-press.directive.js +3 -3
  84. package/release/directives/long-press.directive.js.map +1 -1
  85. package/release/directives/long-press.directive.metadata.json +1 -1
  86. package/release/directives/orderable.directive.js.map +1 -1
  87. package/release/directives/orderable.directive.metadata.json +1 -1
  88. package/release/directives/resizeable.directive.d.ts +3 -2
  89. package/release/directives/resizeable.directive.js +13 -8
  90. package/release/directives/resizeable.directive.js.map +1 -1
  91. package/release/directives/resizeable.directive.metadata.json +1 -1
  92. package/release/directives/visibility.directive.js.map +1 -1
  93. package/release/directives/visibility.directive.metadata.json +1 -1
  94. package/release/events.d.ts +1 -0
  95. package/release/events.js +1 -0
  96. package/release/events.js.map +1 -1
  97. package/release/events.metadata.json +1 -1
  98. package/release/index.css +8 -3
  99. package/release/index.d.ts +1 -0
  100. package/release/index.js +198 -14804
  101. package/release/index.js.map +1 -1
  102. package/release/index.metadata.json +1 -1
  103. package/release/index.min.js +1 -1
  104. package/release/index.min.js.map +1 -1
  105. package/release/services/dimensions-helper.service.d.ts +7 -0
  106. package/release/services/dimensions-helper.service.js +26 -0
  107. package/release/services/dimensions-helper.service.js.map +1 -0
  108. package/release/services/dimensions-helper.service.metadata.json +1 -0
  109. package/release/services/index.d.ts +1 -0
  110. package/release/services/index.js +1 -0
  111. package/release/services/index.js.map +1 -1
  112. package/release/services/index.metadata.json +1 -1
  113. package/release/services/scrollbar-helper.service.js.map +1 -1
  114. package/release/services/scrollbar-helper.service.metadata.json +1 -1
  115. package/release/types/click.type.js.map +1 -1
  116. package/release/types/click.type.metadata.json +1 -1
  117. package/release/types/column-mode.type.js.map +1 -1
  118. package/release/types/column-mode.type.metadata.json +1 -1
  119. package/release/types/contextmenu.type.js.map +1 -1
  120. package/release/types/contextmenu.type.metadata.json +1 -1
  121. package/release/types/index.js.map +1 -1
  122. package/release/types/index.metadata.json +1 -1
  123. package/release/types/selection.type.js.map +1 -1
  124. package/release/types/selection.type.metadata.json +1 -1
  125. package/release/types/sort-direction.type.js.map +1 -1
  126. package/release/types/sort-direction.type.metadata.json +1 -1
  127. package/release/types/sort-prop-dir.type.js.map +1 -1
  128. package/release/types/sort-prop-dir.type.metadata.json +1 -1
  129. package/release/types/sort.type.js.map +1 -1
  130. package/release/types/sort.type.metadata.json +1 -1
  131. package/release/types/table-column.type.js.map +1 -1
  132. package/release/types/table-column.type.metadata.json +1 -1
  133. package/release/utils/camel-case.js.map +1 -1
  134. package/release/utils/camel-case.metadata.json +1 -1
  135. package/release/utils/column-helper.js.map +1 -1
  136. package/release/utils/column-helper.metadata.json +1 -1
  137. package/release/utils/column-prop-getters.js.map +1 -1
  138. package/release/utils/column-prop-getters.metadata.json +1 -1
  139. package/release/utils/column.d.ts +0 -4
  140. package/release/utils/column.js +0 -10
  141. package/release/utils/column.js.map +1 -1
  142. package/release/utils/column.metadata.json +1 -1
  143. package/release/utils/elm-from-point.js.map +1 -1
  144. package/release/utils/elm-from-point.metadata.json +1 -1
  145. package/release/utils/id.js.map +1 -1
  146. package/release/utils/id.metadata.json +1 -1
  147. package/release/utils/index.js.map +1 -1
  148. package/release/utils/index.metadata.json +1 -1
  149. package/release/utils/keys.js.map +1 -1
  150. package/release/utils/keys.metadata.json +1 -1
  151. package/release/utils/math.js +1 -1
  152. package/release/utils/math.js.map +1 -1
  153. package/release/utils/math.metadata.json +1 -1
  154. package/release/utils/prefixes.js +4 -6
  155. package/release/utils/prefixes.js.map +1 -1
  156. package/release/utils/prefixes.metadata.json +1 -1
  157. package/release/utils/row-height-cache.js.map +1 -1
  158. package/release/utils/row-height-cache.metadata.json +1 -1
  159. package/release/utils/selection.js.map +1 -1
  160. package/release/utils/selection.metadata.json +1 -1
  161. package/release/utils/sort.d.ts +2 -1
  162. package/release/utils/sort.js +6 -2
  163. package/release/utils/sort.js.map +1 -1
  164. package/release/utils/sort.metadata.json +1 -1
  165. package/release/utils/throttle.js.map +1 -1
  166. package/release/utils/throttle.metadata.json +1 -1
  167. package/release/utils/translate.js.map +1 -1
  168. package/release/utils/translate.metadata.json +1 -1
  169. package/src/components/body/body-group-header.directive.ts +5 -6
  170. package/src/components/body/body-row.component.ts +5 -5
  171. package/src/components/body/body.component.ts +46 -36
  172. package/src/components/body/scroller.component.ts +7 -5
  173. package/src/components/body/selection.component.ts +1 -1
  174. package/src/components/datatable.component.scss +14 -1
  175. package/src/components/datatable.component.spec.ts +383 -220
  176. package/src/components/datatable.component.ts +26 -13
  177. package/src/components/footer/footer.component.spec.ts +329 -47
  178. package/src/components/footer/pager.component.ts +10 -0
  179. package/src/components/header/header-cell.component.ts +2 -1
  180. package/src/components/header/header.component.ts +1 -0
  181. package/src/datatable.module.ts +6 -3
  182. package/src/directives/draggable.directive.ts +3 -2
  183. package/src/directives/long-press.directive.ts +3 -3
  184. package/src/directives/resizeable.directive.ts +11 -7
  185. package/src/events.ts +1 -0
  186. package/src/index.ts +1 -0
  187. package/src/services/dimensions-helper.service.ts +14 -0
  188. package/src/services/index.ts +1 -0
  189. package/src/utils/column-prop-getters.spec.ts +44 -0
  190. package/src/utils/column.ts +0 -12
  191. package/src/utils/facade/browser.ts +26 -0
  192. package/src/utils/math.ts +1 -1
  193. package/src/utils/sort.ts +7 -3
  194. package/test/index.ts +1 -0
  195. package/test/jasmine-matchers.d.ts +12 -0
  196. package/test/jasmine-matchers.ts +70 -0
@@ -1 +1 @@
1
- [{"__symbolic":"module","version":4,"metadata":{"throttle":{"__symbolic":"function"},"throttleable":{"__symbolic":"function","parameters":["duration","options"],"value":{"__symbolic":"error","message":"Function call not supported","line":50,"character":9}}}}]
1
+ [{"__symbolic":"module","version":3,"metadata":{"throttle":{"__symbolic":"function"},"throttleable":{"__symbolic":"function","parameters":["duration","options"],"value":{"__symbolic":"error","message":"Function call not supported","line":50,"character":9}}}},{"__symbolic":"module","version":1,"metadata":{"throttle":{"__symbolic":"function"},"throttleable":{"__symbolic":"function","parameters":["duration","options"],"value":{"__symbolic":"error","message":"Function call not supported","line":50,"character":9}}}}]
@@ -1 +1 @@
1
- {"version":3,"file":"translate.js","sourceRoot":"","sources":["../../build/utils/translate.ts"],"names":[],"mappings":";;AAAA,uCAAmD;AACnD,2CAAyC;AAEzC,wCAAwC;AACxC,IAAM,SAAS,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,gCAAqB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACjG,IAAM,kBAAkB,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,gCAAqB,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACnH,IAAM,gBAAgB,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,gCAAqB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1G,IAAM,kBAAkB,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,gCAAqB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9G,IAAM,EAAE,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;AACjF,IAAM,QAAQ,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAEjE,qBAA4B,MAAW,EAAE,CAAS,EAAE,CAAS;IAC3D,EAAE,CAAC,CAAC,OAAO,SAAS,KAAK,WAAW,IAAI,gBAAgB,CAAC,CAAC,CAAC;QACzD,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,kBAAkB,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,SAAS,CAAC,GAAG,iBAAe,CAAC,YAAO,CAAC,WAAQ,CAAC;YACrD,MAAM,CAAC,kBAAkB,CAAC,GAAG,QAAQ,CAAC;QACxC,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,MAAM,CAAC,sBAAS,CAAC,SAAS,CAAC,CAAC,GAAG,eAAa,CAAC,YAAO,CAAC,QAAK,CAAC;QAC7D,CAAC;IACH,CAAC;IAAC,IAAI,CAAC,CAAC;QACN,MAAM,CAAC,GAAG,GAAM,CAAC,OAAI,CAAC;QACtB,MAAM,CAAC,IAAI,GAAM,CAAC,OAAI,CAAC;IACzB,CAAC;AACH,CAAC;AAZD,kCAYC"}
1
+ {"version":3,"sources":["../../build/utils/translate.ts"],"names":[],"mappings":";;AAAA,uCAAmD;AACnD,2CAAyC;AAEzC,wCAAwC;AACxC,IAAM,SAAS,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,gCAAqB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACjG,IAAM,kBAAkB,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,gCAAqB,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACnH,IAAM,gBAAgB,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,gCAAqB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1G,IAAM,kBAAkB,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,gCAAqB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9G,IAAM,EAAE,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;AACjF,IAAM,QAAQ,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAEjE,qBAA4B,MAAW,EAAE,CAAS,EAAE,CAAS;IAC3D,EAAE,CAAC,CAAC,OAAO,SAAS,KAAK,WAAW,IAAI,gBAAgB,CAAC,CAAC,CAAC;QACzD,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,kBAAkB,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,SAAS,CAAC,GAAG,iBAAe,CAAC,YAAO,CAAC,WAAQ,CAAC;YACrD,MAAM,CAAC,kBAAkB,CAAC,GAAG,QAAQ,CAAC;QACxC,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,MAAM,CAAC,sBAAS,CAAC,SAAS,CAAC,CAAC,GAAG,eAAa,CAAC,YAAO,CAAC,QAAK,CAAC;QAC7D,CAAC;IACH,CAAC;IAAC,IAAI,CAAC,CAAC;QACN,MAAM,CAAC,GAAG,GAAM,CAAC,OAAI,CAAC;QACtB,MAAM,CAAC,IAAI,GAAM,CAAC,OAAI,CAAC;IACzB,CAAC;AACH,CAAC;AAZD,kCAYC","file":"translate.js","sourceRoot":""}
@@ -1 +1 @@
1
- [{"__symbolic":"module","version":4,"metadata":{"translateXY":{"__symbolic":"function"}}}]
1
+ [{"__symbolic":"module","version":3,"metadata":{"translateXY":{"__symbolic":"function"}}},{"__symbolic":"module","version":1,"metadata":{"translateXY":{"__symbolic":"function"}}}]
@@ -5,17 +5,16 @@ import { DatatableGroupHeaderTemplateDirective } from './body-group-header-templ
5
5
  export class DatatableGroupHeaderDirective {
6
6
 
7
7
  /**
8
- * The detail row height is required especially
9
- * when virtual scroll is enabled.
8
+ * Row height is required when virtual scroll is enabled.
10
9
  */
11
10
  @Input() rowHeight: (number | ((group?: any, index?: number) => number)) = 0;
12
11
 
13
12
  @Input()
14
- @ContentChild(DatatableGroupHeaderTemplateDirective, { read: TemplateRef })
13
+ @ContentChild(DatatableGroupHeaderTemplateDirective, { read: TemplateRef })
15
14
  template: TemplateRef<any>;
16
15
 
17
16
  /**
18
- * Group visbility was toggled.
17
+ * Track toggling of group visibility
19
18
  */
20
19
  @Output() toggle: EventEmitter<any> = new EventEmitter();
21
20
 
@@ -30,7 +29,7 @@ export class DatatableGroupHeaderDirective {
30
29
  }
31
30
 
32
31
  /**
33
- * API method to expand all groups.
32
+ * Expand all groups
34
33
  */
35
34
  expandAllGroups(): void {
36
35
  this.toggle.emit({
@@ -40,7 +39,7 @@ export class DatatableGroupHeaderDirective {
40
39
  }
41
40
 
42
41
  /**
43
- * API method to collapse all groups.
42
+ * Collapse all groups
44
43
  */
45
44
  collapseAllGroups(): void {
46
45
  this.toggle.emit({
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  Component, Input, HostBinding, ElementRef, Output, KeyValueDiffers, KeyValueDiffer,
3
- EventEmitter, HostListener, ChangeDetectionStrategy, ChangeDetectorRef, DoCheck
3
+ EventEmitter, HostListener, ChangeDetectionStrategy, ChangeDetectorRef, DoCheck, SkipSelf
4
4
  } from '@angular/core';
5
5
 
6
6
  import {
7
- allColumnsByPinArr, columnsByPin, columnGroupWidths, columnsByPinArr, translateXY, Keys
7
+ columnsByPin, columnGroupWidths, columnsByPinArr, translateXY, Keys
8
8
  } from '../../utils';
9
9
  import { ScrollbarHelper } from '../../services';
10
- import { MouseEvent, KeyboardEvent } from '../../events';
10
+ import { MouseEvent, KeyboardEvent, Event } from '../../events';
11
11
 
12
12
  @Component({
13
13
  selector: 'datatable-body-row',
@@ -122,7 +122,7 @@ export class DataTableBodyRowComponent implements DoCheck {
122
122
 
123
123
  constructor(
124
124
  private differs: KeyValueDiffers,
125
- private scrollbarHelper: ScrollbarHelper,
125
+ @SkipSelf() private scrollbarHelper: ScrollbarHelper,
126
126
  private cd: ChangeDetectorRef,
127
127
  element: ElementRef) {
128
128
  this._element = element.nativeElement;
@@ -215,7 +215,7 @@ export class DataTableBodyRowComponent implements DoCheck {
215
215
  recalculateColumns(val: any[] = this.columns): void {
216
216
  this._columns = val;
217
217
  const colsByPin = columnsByPin(this._columns);
218
- this._columnsByPin = allColumnsByPinArr(this._columns);
218
+ this._columnsByPin = columnsByPinArr(this._columns);
219
219
  this._columnGroupWidths = columnGroupWidths(colsByPin, this._columns);
220
220
  }
221
221
 
@@ -43,8 +43,8 @@ import { MouseEvent } from '../../events';
43
43
  [expanded]="getRowExpanded(group)"
44
44
  [rowIndex]="getRowIndex(group[i])"
45
45
  (rowContextmenu)="rowContextmenu.emit($event)">
46
- <datatable-body-row
47
- *ngIf="!groupedRows; else groupedRowsTemplate"
46
+ <datatable-body-row
47
+ *ngIf="!groupedRows; else groupedRowsTemplate"
48
48
  tabindex="-1"
49
49
  [isSelected]="selector.getRowSelected(group)"
50
50
  [innerWidth]="innerWidth"
@@ -53,7 +53,7 @@ import { MouseEvent } from '../../events';
53
53
  [rowHeight]="getRowHeight(group)"
54
54
  [row]="group"
55
55
  [rowIndex]="getRowIndex(group)"
56
- [expanded]="getRowExpanded(group)"
56
+ [expanded]="getRowExpanded(group)"
57
57
  [rowClass]="rowClass"
58
58
  [displayCheck]="displayCheck"
59
59
  (activate)="selector.onActivate($event, indexes.first + i)">
@@ -95,7 +95,7 @@ export class DataTableBodyComponent implements OnInit, OnDestroy {
95
95
  @Input() scrollbarH: boolean;
96
96
  @Input() loadingIndicator: boolean;
97
97
  @Input() externalPaging: boolean;
98
- @Input() rowHeight: number;
98
+ @Input() rowHeight: number | ((row: any) => number);
99
99
  @Input() offsetX: number;
100
100
  @Input() emptyMessage: string;
101
101
  @Input() selectionType: SelectionType;
@@ -111,6 +111,7 @@ export class DataTableBodyComponent implements OnInit, OnDestroy {
111
111
  @Input() groupExpansionDefault: boolean;
112
112
  @Input() innerWidth: number;
113
113
  @Input() groupRowsBy: string;
114
+ @Input() virtualization: boolean;
114
115
 
115
116
  @Input() set pageSize(val: number) {
116
117
  this._pageSize = val;
@@ -134,7 +135,7 @@ export class DataTableBodyComponent implements OnInit, OnDestroy {
134
135
  @Input() set columns(val: any[]) {
135
136
  this._columns = val;
136
137
  const colsByPin = columnsByPin(val);
137
- this.columnGroupWidths = columnGroupWidths(colsByPin, val);
138
+ this.columnGroupWidths = columnGroupWidths(colsByPin, val);
138
139
  }
139
140
 
140
141
  get columns(): any[] {
@@ -206,7 +207,7 @@ export class DataTableBodyComponent implements OnInit, OnDestroy {
206
207
  * calculate scroll height automatically (as height will be undefined).
207
208
  */
208
209
  get scrollHeight(): number | undefined {
209
- if (this.scrollbarV) {
210
+ if (this.scrollbarV && this.rowCount) {
210
211
  return this.rowHeightsCache.query(this.rowCount - 1);
211
212
  }
212
213
  // avoid TS7030: Not all code paths return a value.
@@ -276,8 +277,8 @@ export class DataTableBodyComponent implements OnInit, OnDestroy {
276
277
  this.updateIndexes();
277
278
  this.updateRows();
278
279
  this.cd.markForCheck();
279
- });
280
- }
280
+ });
281
+ }
281
282
  }
282
283
 
283
284
  /**
@@ -357,12 +358,12 @@ export class DataTableBodyComponent implements OnInit, OnDestroy {
357
358
 
358
359
  this.rowIndexes.clear();
359
360
 
360
- // if grouprowsby has been specified treat row paging
361
- // parameters as group paging parameters ie if limit 10 has been
362
- // specified treat it as 10 groups rather than 10 rows
361
+ // if grouprowsby has been specified treat row paging
362
+ // parameters as group paging parameters ie if limit 10 has been
363
+ // specified treat it as 10 groups rather than 10 rows
363
364
  if(this.groupedRows) {
364
365
  let maxRowsPerGroup = 3;
365
- // if there is only one group set the maximum number of
366
+ // if there is only one group set the maximum number of
366
367
  // rows per group the same as the total number of rows
367
368
  if (this.groupedRows.length === 1) {
368
369
  maxRowsPerGroup = this.groupedRows[0].value.length;
@@ -375,9 +376,9 @@ export class DataTableBodyComponent implements OnInit, OnDestroy {
375
376
  idx++;
376
377
 
377
378
  // Group index in this context
378
- rowIndex++;
379
- }
380
- } else {
379
+ rowIndex++;
380
+ }
381
+ } else {
381
382
  while (rowIndex < last && rowIndex < this.rowCount) {
382
383
  const row = this.rows[rowIndex];
383
384
 
@@ -388,9 +389,9 @@ export class DataTableBodyComponent implements OnInit, OnDestroy {
388
389
 
389
390
  idx++;
390
391
  rowIndex++;
391
- }
392
+ }
392
393
  }
393
-
394
+
394
395
  this.temp = temp;
395
396
  this.cd.detectChanges();
396
397
  }
@@ -399,14 +400,16 @@ export class DataTableBodyComponent implements OnInit, OnDestroy {
399
400
  * Get the row height
400
401
  */
401
402
  getRowHeight(row: any): number {
402
- let rowHeight = this.rowHeight;
403
-
403
+ let height;
404
+
404
405
  // if its a function return it
405
406
  if (typeof this.rowHeight === 'function') {
406
- rowHeight = this.rowHeight(row);
407
+ height = this.rowHeight(row);
408
+ } else {
409
+ height = this.rowHeight;
407
410
  }
408
411
 
409
- return rowHeight;
412
+ return height;
410
413
  }
411
414
 
412
415
  /**
@@ -417,9 +420,9 @@ export class DataTableBodyComponent implements OnInit, OnDestroy {
417
420
 
418
421
  if (group.value) {
419
422
  for (let index = 0; index < group.value.length; index++) {
420
- rowHeight += this.getRowAndDetailHeight(group.value[index]);
421
- }
422
- }
423
+ rowHeight += this.getRowAndDetailHeight(group.value[index]);
424
+ }
425
+ }
423
426
 
424
427
  return rowHeight;
425
428
  }
@@ -462,7 +465,7 @@ export class DataTableBodyComponent implements OnInit, OnDestroy {
462
465
  * be able to determine which row is of what height before hand. In the above
463
466
  * case the positionY of the translate3d for row2 would be the sum of all the
464
467
  * heights of the rows before it (i.e. row0 and row1).
465
- *
468
+ *
466
469
  * @param {*} rows The row that needs to be placed in the 2D space.
467
470
  * @returns {*} Returns the CSS3 style to be applied
468
471
  *
@@ -475,7 +478,7 @@ export class DataTableBodyComponent implements OnInit, OnDestroy {
475
478
  if (this.groupedRows) {
476
479
  styles['width'] = this.columnGroupWidths.total;
477
480
  }
478
-
481
+
479
482
  if (this.scrollbarV) {
480
483
  let idx = 0;
481
484
 
@@ -485,7 +488,7 @@ export class DataTableBodyComponent implements OnInit, OnDestroy {
485
488
  idx = row ? this.getRowIndex(row) : 0;
486
489
  } else {
487
490
  idx = this.getRowIndex(rows);
488
- }
491
+ }
489
492
 
490
493
  // const pos = idx * rowHeight;
491
494
  // The position of this row would be the sum of all row heights
@@ -497,7 +500,7 @@ export class DataTableBodyComponent implements OnInit, OnDestroy {
497
500
 
498
501
  return styles;
499
502
  }
500
-
503
+
501
504
  /**
502
505
  * Hides the loading indicator
503
506
  */
@@ -513,12 +516,19 @@ export class DataTableBodyComponent implements OnInit, OnDestroy {
513
516
  let last = 0;
514
517
 
515
518
  if (this.scrollbarV) {
516
- // Calculation of the first and last indexes will be based on where the
517
- // scrollY position would be at. The last index would be the one
518
- // that shows up inside the view port the last.
519
- const height = parseInt(this.bodyHeight, 0);
520
- first = this.rowHeightsCache.getRowIndex(this.offsetY);
521
- last = this.rowHeightsCache.getRowIndex(height + this.offsetY) + 1;
519
+ if (this.virtualization) {
520
+ // Calculation of the first and last indexes will be based on where the
521
+ // scrollY position would be at. The last index would be the one
522
+ // that shows up inside the view port the last.
523
+ const height = parseInt(this.bodyHeight, 0);
524
+ first = this.rowHeightsCache.getRowIndex(this.offsetY);
525
+ last = this.rowHeightsCache.getRowIndex(height + this.offsetY) + 1;
526
+ } else {
527
+ // If virtual rows are not needed
528
+ // We render all in one go
529
+ first = 0;
530
+ last = this.rowCount;
531
+ }
522
532
  } else {
523
533
  // The server is handling paging and will pass an array that begins with the
524
534
  // element at a specified offset. first should always be 0 with external paging.
@@ -670,7 +680,7 @@ export class DataTableBodyComponent implements OnInit, OnDestroy {
670
680
 
671
681
  return styles;
672
682
  }
673
-
683
+
674
684
  /**
675
685
  * Returns if the row was expanded and set default row expansion when row expansion is empty
676
686
  */
@@ -679,7 +689,7 @@ export class DataTableBodyComponent implements OnInit, OnDestroy {
679
689
  for (const group of this.groupedRows) {
680
690
  this.rowExpansions.set(group, 1);
681
691
  }
682
- }
692
+ }
683
693
 
684
694
  const expanded = this.rowExpansions.get(row);
685
695
  return expanded === 1;
@@ -1,5 +1,5 @@
1
1
  import {
2
- Component, Input, ElementRef, Output, EventEmitter, NgZone,
2
+ Component, Input, ElementRef, Output, EventEmitter, Renderer2, NgZone,
3
3
  OnInit, OnDestroy, HostBinding, ChangeDetectionStrategy
4
4
  } from '@angular/core';
5
5
 
@@ -36,17 +36,19 @@ export class ScrollerComponent implements OnInit, OnDestroy {
36
36
  parentElement: any;
37
37
  onScrollListener: any;
38
38
 
39
- constructor(private ngZone: NgZone, element: ElementRef) {
39
+ constructor(private ngZone: NgZone, element: ElementRef, private renderer: Renderer2) {
40
+
40
41
  this.element = element.nativeElement;
41
42
  }
42
43
 
43
44
  ngOnInit(): void {
44
45
  // manual bind so we don't always listen
45
46
  if (this.scrollbarV || this.scrollbarH) {
46
- this.parentElement = this.element.parentElement.parentElement;
47
+ const renderer = this.renderer;
48
+ this.parentElement = renderer.parentNode(renderer.parentNode(this.element));
47
49
  this.ngZone.runOutsideAngular(() => {
48
- this.parentElement.addEventListener('scroll', this.onScrolled.bind(this));
49
- });
50
+ this.parentElement.addEventListener('scroll', this.onScrolled.bind(this));
51
+ });
50
52
  }
51
53
  }
52
54
 
@@ -4,7 +4,7 @@ import { SelectionType } from '../../types';
4
4
  import { MouseEvent, KeyboardEvent } from '../../events';
5
5
 
6
6
  export interface Model {
7
- type: string;
7
+ type: string;
8
8
  event: MouseEvent | KeyboardEvent;
9
9
  row: any;
10
10
  rowElement: any;
@@ -156,7 +156,7 @@
156
156
  cursor: pointer;
157
157
  }
158
158
 
159
- .resize-handle{
159
+ .resize-handle, .resize-handle--not-resizable {
160
160
  display: inline-block;
161
161
  position: absolute;
162
162
  right: 0;
@@ -165,6 +165,9 @@
165
165
  width: 5px;
166
166
  padding: 0 4px;
167
167
  visibility: hidden;
168
+ }
169
+
170
+ .resize-handle {
168
171
  cursor: ew-resize;
169
172
  }
170
173
 
@@ -173,6 +176,16 @@
173
176
  visibility: visible;
174
177
  }
175
178
  }
179
+
180
+ &:hover {
181
+ .resize-handle--not-resizable {
182
+ visibility: visible;
183
+ }
184
+ }
185
+
186
+ .datatable-header-cell-template-wrap {
187
+ height: inherit;
188
+ }
176
189
  }
177
190
  }
178
191