@progress/kendo-angular-grid 21.3.0-develop.8 → 21.3.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.
@@ -10,7 +10,7 @@ export const packageMetadata = {
10
10
  productName: 'Kendo UI for Angular',
11
11
  productCode: 'KENDOUIANGULAR',
12
12
  productCodes: ['KENDOUIANGULAR'],
13
- publishDate: 1765209527,
14
- version: '21.3.0-develop.8',
13
+ publishDate: 1765468080,
14
+ version: '21.3.0',
15
15
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
16
16
  };
@@ -284,6 +284,12 @@ export class ListComponent {
284
284
  this.container.nativeElement.scrollTop = (this.isVirtual && this.ctx.grid?.pageable) ? 0 : this.rowHeightService.offset(this.skip);
285
285
  }
286
286
  if (anyChanged(['total', 'take'], changes)) {
287
+ // For virtual scrolling without paging, preserve scroll position when only take/pageSize changes
288
+ const isVirtualOnly = this.isVirtual && !this.ctx.grid?.pageable;
289
+ const onlyTakeChanged = isChanged('take', changes) && !isChanged('total', changes);
290
+ if (isVirtualOnly && onlyTakeChanged) {
291
+ this.skipScroll = true;
292
+ }
287
293
  this.init();
288
294
  }
289
295
  this.rebind = false;
@@ -438,6 +444,9 @@ export class ListComponent {
438
444
  this.rowHeightService = this.scroller.rowHeightService = new RowHeightService(total, this.rowHeight || this.minRowHeight);
439
445
  if (!isUniversal()) {
440
446
  if (this.skipScroll) {
447
+ // Update scroller's take value when preserving scroll position
448
+ this.scroller.take = this.take;
449
+ this.scroller.total = this.total;
441
450
  this.setScrollerOptions();
442
451
  this.scroller.update();
443
452
  }
@@ -808,6 +817,7 @@ export class ListComponent {
808
817
  setScrollerOptions() {
809
818
  this.scroller.scrollableVirtual = this.isVirtual;
810
819
  this.scroller.table = this.table.nativeElement;
820
+ this.scroller.lockedTable = this.lockedTable?.nativeElement || null;
811
821
  this.scroller.tableBody = this.table.nativeElement.tBodies[0];
812
822
  this.scroller.container = this.container.nativeElement;
813
823
  this.scroller.scrollHeightContainer = this.container.nativeElement.querySelector('.k-height-container');
@@ -41,6 +41,7 @@ export class ScrollerService {
41
41
  total = 0;
42
42
  rowHeightService;
43
43
  table = null;
44
+ lockedTable = null;
44
45
  tableBody = null;
45
46
  container = null;
46
47
  scrollHeightContainer = null;
@@ -51,12 +52,12 @@ export class ScrollerService {
51
52
  firstToLoad = 0;
52
53
  lastLoaded = 0;
53
54
  scrollSyncing = false;
54
- take;
55
55
  scrollSubscription;
56
56
  subscription;
57
57
  lastScrollTop = 0;
58
58
  firstLoaded = 0;
59
59
  expandedRows = {};
60
+ take;
60
61
  constructor(scrollObservable, ctx) {
61
62
  this.scrollObservable = scrollObservable;
62
63
  this.ctx = ctx;
@@ -170,6 +171,9 @@ export class ScrollerService {
170
171
  if (this.scrollableVirtual && this.table) {
171
172
  if (forceSet) {
172
173
  this.table.style.transform = 'translateY(' + dY + 'px)';
174
+ if (this.lockedTable) {
175
+ this.lockedTable.style.transform = 'translateY(' + dY + 'px)';
176
+ }
173
177
  }
174
178
  else {
175
179
  this.tableTransformOffset = dY;
@@ -23596,8 +23596,8 @@ const packageMetadata = {
23596
23596
  productName: 'Kendo UI for Angular',
23597
23597
  productCode: 'KENDOUIANGULAR',
23598
23598
  productCodes: ['KENDOUIANGULAR'],
23599
- publishDate: 1765209527,
23600
- version: '21.3.0-develop.8',
23599
+ publishDate: 1765468080,
23600
+ version: '21.3.0',
23601
23601
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
23602
23602
  };
23603
23603
 
@@ -26196,6 +26196,7 @@ class ScrollerService {
26196
26196
  total = 0;
26197
26197
  rowHeightService;
26198
26198
  table = null;
26199
+ lockedTable = null;
26199
26200
  tableBody = null;
26200
26201
  container = null;
26201
26202
  scrollHeightContainer = null;
@@ -26206,12 +26207,12 @@ class ScrollerService {
26206
26207
  firstToLoad = 0;
26207
26208
  lastLoaded = 0;
26208
26209
  scrollSyncing = false;
26209
- take;
26210
26210
  scrollSubscription;
26211
26211
  subscription;
26212
26212
  lastScrollTop = 0;
26213
26213
  firstLoaded = 0;
26214
26214
  expandedRows = {};
26215
+ take;
26215
26216
  constructor(scrollObservable, ctx) {
26216
26217
  this.scrollObservable = scrollObservable;
26217
26218
  this.ctx = ctx;
@@ -26325,6 +26326,9 @@ class ScrollerService {
26325
26326
  if (this.scrollableVirtual && this.table) {
26326
26327
  if (forceSet) {
26327
26328
  this.table.style.transform = 'translateY(' + dY + 'px)';
26329
+ if (this.lockedTable) {
26330
+ this.lockedTable.style.transform = 'translateY(' + dY + 'px)';
26331
+ }
26328
26332
  }
26329
26333
  else {
26330
26334
  this.tableTransformOffset = dY;
@@ -26904,6 +26908,12 @@ class ListComponent {
26904
26908
  this.container.nativeElement.scrollTop = (this.isVirtual && this.ctx.grid?.pageable) ? 0 : this.rowHeightService.offset(this.skip);
26905
26909
  }
26906
26910
  if (anyChanged(['total', 'take'], changes)) {
26911
+ // For virtual scrolling without paging, preserve scroll position when only take/pageSize changes
26912
+ const isVirtualOnly = this.isVirtual && !this.ctx.grid?.pageable;
26913
+ const onlyTakeChanged = isChanged$1('take', changes) && !isChanged$1('total', changes);
26914
+ if (isVirtualOnly && onlyTakeChanged) {
26915
+ this.skipScroll = true;
26916
+ }
26907
26917
  this.init();
26908
26918
  }
26909
26919
  this.rebind = false;
@@ -27058,6 +27068,9 @@ class ListComponent {
27058
27068
  this.rowHeightService = this.scroller.rowHeightService = new RowHeightService(total, this.rowHeight || this.minRowHeight);
27059
27069
  if (!isUniversal()) {
27060
27070
  if (this.skipScroll) {
27071
+ // Update scroller's take value when preserving scroll position
27072
+ this.scroller.take = this.take;
27073
+ this.scroller.total = this.total;
27061
27074
  this.setScrollerOptions();
27062
27075
  this.scroller.update();
27063
27076
  }
@@ -27428,6 +27441,7 @@ class ListComponent {
27428
27441
  setScrollerOptions() {
27429
27442
  this.scroller.scrollableVirtual = this.isVirtual;
27430
27443
  this.scroller.table = this.table.nativeElement;
27444
+ this.scroller.lockedTable = this.lockedTable?.nativeElement || null;
27431
27445
  this.scroller.tableBody = this.table.nativeElement.tBodies[0];
27432
27446
  this.scroller.container = this.container.nativeElement;
27433
27447
  this.scroller.scrollHeightContainer = this.container.nativeElement.querySelector('.k-height-container');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@progress/kendo-angular-grid",
3
- "version": "21.3.0-develop.8",
3
+ "version": "21.3.0",
4
4
  "description": "Kendo UI Grid for Angular - high performance data grid with paging, filtering, virtualization, CRUD, and more.",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "author": "Progress",
@@ -73,7 +73,7 @@
73
73
  "package": {
74
74
  "productName": "Kendo UI for Angular",
75
75
  "productCode": "KENDOUIANGULAR",
76
- "publishDate": 1765209527,
76
+ "publishDate": 1765468080,
77
77
  "licensingDocsUrl": "https://www.telerik.com/kendo-angular-ui/my-license/"
78
78
  }
79
79
  },
@@ -86,32 +86,32 @@
86
86
  "@progress/kendo-data-query": "^1.0.0",
87
87
  "@progress/kendo-drawing": "^1.23.1",
88
88
  "@progress/kendo-licensing": "^1.7.0",
89
- "@progress/kendo-angular-buttons": "21.3.0-develop.8",
90
- "@progress/kendo-angular-common": "21.3.0-develop.8",
91
- "@progress/kendo-angular-dateinputs": "21.3.0-develop.8",
92
- "@progress/kendo-angular-layout": "21.3.0-develop.8",
93
- "@progress/kendo-angular-navigation": "21.3.0-develop.8",
94
- "@progress/kendo-angular-dropdowns": "21.3.0-develop.8",
95
- "@progress/kendo-angular-excel-export": "21.3.0-develop.8",
96
- "@progress/kendo-angular-icons": "21.3.0-develop.8",
97
- "@progress/kendo-angular-indicators": "21.3.0-develop.8",
98
- "@progress/kendo-angular-inputs": "21.3.0-develop.8",
99
- "@progress/kendo-angular-conversational-ui": "21.3.0-develop.8",
100
- "@progress/kendo-angular-intl": "21.3.0-develop.8",
101
- "@progress/kendo-angular-l10n": "21.3.0-develop.8",
102
- "@progress/kendo-angular-label": "21.3.0-develop.8",
103
- "@progress/kendo-angular-menu": "21.3.0-develop.8",
104
- "@progress/kendo-angular-pager": "21.3.0-develop.8",
105
- "@progress/kendo-angular-pdf-export": "21.3.0-develop.8",
106
- "@progress/kendo-angular-popup": "21.3.0-develop.8",
107
- "@progress/kendo-angular-toolbar": "21.3.0-develop.8",
108
- "@progress/kendo-angular-upload": "21.3.0-develop.8",
109
- "@progress/kendo-angular-utils": "21.3.0-develop.8",
89
+ "@progress/kendo-angular-buttons": "21.3.0",
90
+ "@progress/kendo-angular-common": "21.3.0",
91
+ "@progress/kendo-angular-dateinputs": "21.3.0",
92
+ "@progress/kendo-angular-layout": "21.3.0",
93
+ "@progress/kendo-angular-navigation": "21.3.0",
94
+ "@progress/kendo-angular-dropdowns": "21.3.0",
95
+ "@progress/kendo-angular-excel-export": "21.3.0",
96
+ "@progress/kendo-angular-icons": "21.3.0",
97
+ "@progress/kendo-angular-indicators": "21.3.0",
98
+ "@progress/kendo-angular-inputs": "21.3.0",
99
+ "@progress/kendo-angular-conversational-ui": "21.3.0",
100
+ "@progress/kendo-angular-intl": "21.3.0",
101
+ "@progress/kendo-angular-l10n": "21.3.0",
102
+ "@progress/kendo-angular-label": "21.3.0",
103
+ "@progress/kendo-angular-menu": "21.3.0",
104
+ "@progress/kendo-angular-pager": "21.3.0",
105
+ "@progress/kendo-angular-pdf-export": "21.3.0",
106
+ "@progress/kendo-angular-popup": "21.3.0",
107
+ "@progress/kendo-angular-toolbar": "21.3.0",
108
+ "@progress/kendo-angular-upload": "21.3.0",
109
+ "@progress/kendo-angular-utils": "21.3.0",
110
110
  "rxjs": "^6.5.3 || ^7.0.0"
111
111
  },
112
112
  "dependencies": {
113
113
  "tslib": "^2.3.1",
114
- "@progress/kendo-angular-schematics": "21.3.0-develop.8",
114
+ "@progress/kendo-angular-schematics": "21.3.0",
115
115
  "@progress/kendo-common": "^1.0.1",
116
116
  "@progress/kendo-file-saver": "^1.0.0"
117
117
  },
@@ -9,19 +9,19 @@ const schematics_1 = require("@angular-devkit/schematics");
9
9
  function default_1(options) {
10
10
  const finalOptions = Object.assign(Object.assign({}, options), { mainNgModule: 'GridModule', package: 'grid', peerDependencies: {
11
11
  // peer deps of the dropdowns
12
- '@progress/kendo-angular-treeview': '21.3.0-develop.8',
13
- '@progress/kendo-angular-navigation': '21.3.0-develop.8',
12
+ '@progress/kendo-angular-treeview': '21.3.0',
13
+ '@progress/kendo-angular-navigation': '21.3.0',
14
14
  // peer dependency of kendo-angular-inputs
15
- '@progress/kendo-angular-dialog': '21.3.0-develop.8',
15
+ '@progress/kendo-angular-dialog': '21.3.0',
16
16
  // peer dependency of kendo-angular-icons
17
17
  '@progress/kendo-svg-icons': '^4.0.0',
18
18
  // peer dependency of kendo-angular-layout
19
- '@progress/kendo-angular-progressbar': '21.3.0-develop.8',
19
+ '@progress/kendo-angular-progressbar': '21.3.0',
20
20
  // transitive peer dependencies from toolbar
21
- '@progress/kendo-angular-indicators': '21.3.0-develop.8',
21
+ '@progress/kendo-angular-indicators': '21.3.0',
22
22
  // transitive peer dependencies from conversational-ui
23
- '@progress/kendo-angular-menu': '21.3.0-develop.8',
24
- '@progress/kendo-angular-upload': '21.3.0-develop.8'
23
+ '@progress/kendo-angular-menu': '21.3.0',
24
+ '@progress/kendo-angular-upload': '21.3.0'
25
25
  } });
26
26
  return (0, schematics_1.externalSchematic)('@progress/kendo-angular-schematics', 'ng-add', finalOptions);
27
27
  }
@@ -39,6 +39,7 @@ export declare class ScrollerService {
39
39
  total: number;
40
40
  rowHeightService: RowHeightService;
41
41
  table: HTMLTableElement | null;
42
+ lockedTable: HTMLTableElement | null;
42
43
  tableBody: HTMLTableSectionElement | null;
43
44
  container: HTMLDivElement | null;
44
45
  scrollHeightContainer: HTMLDivElement | null;
@@ -49,12 +50,12 @@ export declare class ScrollerService {
49
50
  firstToLoad: number;
50
51
  lastLoaded: number;
51
52
  scrollSyncing: boolean;
52
- private take;
53
53
  private scrollSubscription;
54
54
  private subscription;
55
55
  private lastScrollTop;
56
56
  private firstLoaded;
57
57
  private expandedRows;
58
+ take: number;
58
59
  constructor(scrollObservable: Observable<any>, ctx: ContextService);
59
60
  create(rowHeightService: RowHeightService, skip: number, take: number, total: number): BehaviorSubject<Action>;
60
61
  reset(skipScroll?: boolean): void;