@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.
- package/.npmignore +6 -0
- package/README.md +2 -1
- package/config/deploy.js +2 -2
- package/config/karma.conf.js +5 -0
- package/config/webpack.package.js +4 -0
- package/package.json +15 -14
- package/release/components/body/body-cell.component.js.map +1 -1
- package/release/components/body/body-cell.component.metadata.json +1 -1
- package/release/components/body/body-group-header-template.directive.js.map +1 -1
- package/release/components/body/body-group-header-template.directive.metadata.json +1 -1
- package/release/components/body/body-group-header.directive.d.ts +4 -5
- package/release/components/body/body-group-header.directive.js +4 -5
- package/release/components/body/body-group-header.directive.js.map +1 -1
- package/release/components/body/body-group-header.directive.metadata.json +1 -1
- package/release/components/body/body-row-wrapper.component.js.map +1 -1
- package/release/components/body/body-row-wrapper.component.metadata.json +1 -1
- package/release/components/body/body-row.component.js +5 -1
- package/release/components/body/body-row.component.js.map +1 -1
- package/release/components/body/body-row.component.metadata.json +1 -1
- package/release/components/body/body.component.d.ts +2 -1
- package/release/components/body/body.component.js +31 -16
- package/release/components/body/body.component.js.map +1 -1
- package/release/components/body/body.component.metadata.json +1 -1
- package/release/components/body/index.js.map +1 -1
- package/release/components/body/index.metadata.json +1 -1
- package/release/components/body/progress-bar.component.js.map +1 -1
- package/release/components/body/progress-bar.component.metadata.json +1 -1
- package/release/components/body/scroller.component.d.ts +3 -2
- package/release/components/body/scroller.component.js +5 -3
- package/release/components/body/scroller.component.js.map +1 -1
- package/release/components/body/scroller.component.metadata.json +1 -1
- package/release/components/body/selection.component.js.map +1 -1
- package/release/components/body/selection.component.metadata.json +1 -1
- package/release/components/columns/column-cell.directive.js.map +1 -1
- package/release/components/columns/column-cell.directive.metadata.json +1 -1
- package/release/components/columns/column-header.directive.js.map +1 -1
- package/release/components/columns/column-header.directive.metadata.json +1 -1
- package/release/components/columns/column.directive.js.map +1 -1
- package/release/components/columns/column.directive.metadata.json +1 -1
- package/release/components/columns/index.js.map +1 -1
- package/release/components/columns/index.metadata.json +1 -1
- package/release/components/datatable.component.css +7 -2
- package/release/components/datatable.component.d.ts +8 -3
- package/release/components/datatable.component.js +29 -11
- package/release/components/datatable.component.js.map +1 -1
- package/release/components/datatable.component.metadata.json +1 -1
- package/release/components/footer/footer-template.directive.js.map +1 -1
- package/release/components/footer/footer-template.directive.metadata.json +1 -1
- package/release/components/footer/footer.component.js.map +1 -1
- package/release/components/footer/footer.component.metadata.json +1 -1
- package/release/components/footer/footer.directive.js.map +1 -1
- package/release/components/footer/footer.directive.metadata.json +1 -1
- package/release/components/footer/index.js.map +1 -1
- package/release/components/footer/index.metadata.json +1 -1
- package/release/components/footer/pager.component.js +1 -1
- package/release/components/footer/pager.component.js.map +1 -1
- package/release/components/footer/pager.component.metadata.json +1 -1
- package/release/components/header/header-cell.component.js +2 -1
- package/release/components/header/header-cell.component.js.map +1 -1
- package/release/components/header/header-cell.component.metadata.json +1 -1
- package/release/components/header/header.component.js +1 -0
- package/release/components/header/header.component.js.map +1 -1
- package/release/components/header/header.component.metadata.json +1 -1
- package/release/components/header/index.js.map +1 -1
- package/release/components/header/index.metadata.json +1 -1
- package/release/components/index.js.map +1 -1
- package/release/components/index.metadata.json +1 -1
- package/release/components/row-detail/index.js.map +1 -1
- package/release/components/row-detail/index.metadata.json +1 -1
- package/release/components/row-detail/row-detail-template.directive.js.map +1 -1
- package/release/components/row-detail/row-detail-template.directive.metadata.json +1 -1
- package/release/components/row-detail/row-detail.directive.js.map +1 -1
- package/release/components/row-detail/row-detail.directive.metadata.json +1 -1
- package/release/datatable.module.d.ts +0 -1
- package/release/datatable.module.js +2 -2
- package/release/datatable.module.js.map +1 -1
- package/release/datatable.module.metadata.json +1 -1
- package/release/directives/draggable.directive.js +3 -3
- package/release/directives/draggable.directive.js.map +1 -1
- package/release/directives/draggable.directive.metadata.json +1 -1
- package/release/directives/index.js.map +1 -1
- package/release/directives/index.metadata.json +1 -1
- package/release/directives/long-press.directive.js +3 -3
- package/release/directives/long-press.directive.js.map +1 -1
- package/release/directives/long-press.directive.metadata.json +1 -1
- package/release/directives/orderable.directive.js.map +1 -1
- package/release/directives/orderable.directive.metadata.json +1 -1
- package/release/directives/resizeable.directive.d.ts +3 -2
- package/release/directives/resizeable.directive.js +13 -8
- package/release/directives/resizeable.directive.js.map +1 -1
- package/release/directives/resizeable.directive.metadata.json +1 -1
- package/release/directives/visibility.directive.js.map +1 -1
- package/release/directives/visibility.directive.metadata.json +1 -1
- package/release/events.d.ts +1 -0
- package/release/events.js +1 -0
- package/release/events.js.map +1 -1
- package/release/events.metadata.json +1 -1
- package/release/index.css +8 -3
- package/release/index.d.ts +1 -0
- package/release/index.js +198 -14804
- package/release/index.js.map +1 -1
- package/release/index.metadata.json +1 -1
- package/release/index.min.js +1 -1
- package/release/index.min.js.map +1 -1
- package/release/services/dimensions-helper.service.d.ts +7 -0
- package/release/services/dimensions-helper.service.js +26 -0
- package/release/services/dimensions-helper.service.js.map +1 -0
- package/release/services/dimensions-helper.service.metadata.json +1 -0
- package/release/services/index.d.ts +1 -0
- package/release/services/index.js +1 -0
- package/release/services/index.js.map +1 -1
- package/release/services/index.metadata.json +1 -1
- package/release/services/scrollbar-helper.service.js.map +1 -1
- package/release/services/scrollbar-helper.service.metadata.json +1 -1
- package/release/types/click.type.js.map +1 -1
- package/release/types/click.type.metadata.json +1 -1
- package/release/types/column-mode.type.js.map +1 -1
- package/release/types/column-mode.type.metadata.json +1 -1
- package/release/types/contextmenu.type.js.map +1 -1
- package/release/types/contextmenu.type.metadata.json +1 -1
- package/release/types/index.js.map +1 -1
- package/release/types/index.metadata.json +1 -1
- package/release/types/selection.type.js.map +1 -1
- package/release/types/selection.type.metadata.json +1 -1
- package/release/types/sort-direction.type.js.map +1 -1
- package/release/types/sort-direction.type.metadata.json +1 -1
- package/release/types/sort-prop-dir.type.js.map +1 -1
- package/release/types/sort-prop-dir.type.metadata.json +1 -1
- package/release/types/sort.type.js.map +1 -1
- package/release/types/sort.type.metadata.json +1 -1
- package/release/types/table-column.type.js.map +1 -1
- package/release/types/table-column.type.metadata.json +1 -1
- package/release/utils/camel-case.js.map +1 -1
- package/release/utils/camel-case.metadata.json +1 -1
- package/release/utils/column-helper.js.map +1 -1
- package/release/utils/column-helper.metadata.json +1 -1
- package/release/utils/column-prop-getters.js.map +1 -1
- package/release/utils/column-prop-getters.metadata.json +1 -1
- package/release/utils/column.d.ts +0 -4
- package/release/utils/column.js +0 -10
- package/release/utils/column.js.map +1 -1
- package/release/utils/column.metadata.json +1 -1
- package/release/utils/elm-from-point.js.map +1 -1
- package/release/utils/elm-from-point.metadata.json +1 -1
- package/release/utils/id.js.map +1 -1
- package/release/utils/id.metadata.json +1 -1
- package/release/utils/index.js.map +1 -1
- package/release/utils/index.metadata.json +1 -1
- package/release/utils/keys.js.map +1 -1
- package/release/utils/keys.metadata.json +1 -1
- package/release/utils/math.js +1 -1
- package/release/utils/math.js.map +1 -1
- package/release/utils/math.metadata.json +1 -1
- package/release/utils/prefixes.js +4 -6
- package/release/utils/prefixes.js.map +1 -1
- package/release/utils/prefixes.metadata.json +1 -1
- package/release/utils/row-height-cache.js.map +1 -1
- package/release/utils/row-height-cache.metadata.json +1 -1
- package/release/utils/selection.js.map +1 -1
- package/release/utils/selection.metadata.json +1 -1
- package/release/utils/sort.d.ts +2 -1
- package/release/utils/sort.js +6 -2
- package/release/utils/sort.js.map +1 -1
- package/release/utils/sort.metadata.json +1 -1
- package/release/utils/throttle.js.map +1 -1
- package/release/utils/throttle.metadata.json +1 -1
- package/release/utils/translate.js.map +1 -1
- package/release/utils/translate.metadata.json +1 -1
- package/src/components/body/body-group-header.directive.ts +5 -6
- package/src/components/body/body-row.component.ts +5 -5
- package/src/components/body/body.component.ts +46 -36
- package/src/components/body/scroller.component.ts +7 -5
- package/src/components/body/selection.component.ts +1 -1
- package/src/components/datatable.component.scss +14 -1
- package/src/components/datatable.component.spec.ts +383 -220
- package/src/components/datatable.component.ts +26 -13
- package/src/components/footer/footer.component.spec.ts +329 -47
- package/src/components/footer/pager.component.ts +10 -0
- package/src/components/header/header-cell.component.ts +2 -1
- package/src/components/header/header.component.ts +1 -0
- package/src/datatable.module.ts +6 -3
- package/src/directives/draggable.directive.ts +3 -2
- package/src/directives/long-press.directive.ts +3 -3
- package/src/directives/resizeable.directive.ts +11 -7
- package/src/events.ts +1 -0
- package/src/index.ts +1 -0
- package/src/services/dimensions-helper.service.ts +14 -0
- package/src/services/index.ts +1 -0
- package/src/utils/column-prop-getters.spec.ts +44 -0
- package/src/utils/column.ts +0 -12
- package/src/utils/facade/browser.ts +26 -0
- package/src/utils/math.ts +1 -1
- package/src/utils/sort.ts +7 -3
- package/test/index.ts +1 -0
- package/test/jasmine-matchers.d.ts +12 -0
- package/test/jasmine-matchers.ts +70 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"__symbolic":"module","version":
|
|
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,"
|
|
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":
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
|
|
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 =
|
|
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
|
|
403
|
-
|
|
403
|
+
let height;
|
|
404
|
+
|
|
404
405
|
// if its a function return it
|
|
405
406
|
if (typeof this.rowHeight === 'function') {
|
|
406
|
-
|
|
407
|
+
height = this.rowHeight(row);
|
|
408
|
+
} else {
|
|
409
|
+
height = this.rowHeight;
|
|
407
410
|
}
|
|
408
411
|
|
|
409
|
-
return
|
|
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
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
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
|
-
|
|
47
|
+
const renderer = this.renderer;
|
|
48
|
+
this.parentElement = renderer.parentNode(renderer.parentNode(this.element));
|
|
47
49
|
this.ngZone.runOutsideAngular(() => {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
+
this.parentElement.addEventListener('scroll', this.onScrolled.bind(this));
|
|
51
|
+
});
|
|
50
52
|
}
|
|
51
53
|
}
|
|
52
54
|
|
|
@@ -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
|
|