@progress/kendo-angular-grid 24.2.0-develop.1 → 24.2.0-develop.10

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.
@@ -3625,7 +3625,7 @@ class NavigationService {
3625
3625
  const columnGroup = column.parent;
3626
3626
  const columnGroupChildren = Array.from(columnGroup.children).sort((a, b) => a.orderIndex - b.orderIndex);
3627
3627
  const columnIndexInsideGroup = columnGroupChildren.indexOf(column);
3628
- if (column.isReordered || column.orderIndex > 0 || (column.isReordered && column.orderIndex === 0)) {
3628
+ if (column.isReordered || column.orderIndex > 0) {
3629
3629
  return (column.orderIndex - columnGroupChildren[0]['orderIndex']) !== columnGroupChildren.length - 1;
3630
3630
  }
3631
3631
  return columnIndexInsideGroup !== columnGroupChildren.length - 1;
@@ -4514,7 +4514,7 @@ class NavigationService {
4514
4514
  if (!cellSelectionEnabled || this.cursor.cell?.detailExpandCell) {
4515
4515
  return;
4516
4516
  }
4517
- const selectionService = this.ctx.grid[cellSelectionEnabled ? 'cellSelectionService' : 'selectionService'];
4517
+ const selectionService = this.ctx.grid.cellSelectionService;
4518
4518
  const row = this.activeRow;
4519
4519
  const colIdx = this.cursor.cell ? this.cursor.cell.colIndex : 0;
4520
4520
  const dataColIdx = colIdx - (this.metadata.hasDetailTemplate ? 1 : 0); // exclude the expand/collapse column in master-detail
@@ -11349,8 +11349,9 @@ class MultiCheckboxFilterComponent {
11349
11349
  return this.ctx.localization.get(key);
11350
11350
  }
11351
11351
  getUniqueDateValues(data) {
11352
+ const fieldGetter = getter(this.column.field);
11352
11353
  return data.reduce((acc, current) => {
11353
- const value = current[this.column.field];
11354
+ const value = fieldGetter(current);
11354
11355
  if (value instanceof Date && acc.findIndex(d => d.getTime() === value.getTime()) === -1) {
11355
11356
  acc.push(value);
11356
11357
  }
@@ -11370,7 +11371,8 @@ class MultiCheckboxFilterComponent {
11370
11371
  }
11371
11372
  else {
11372
11373
  const field = this.column.field;
11373
- const mapped = this.gridData.map(item => item?.[field]);
11374
+ const fieldGetter = getter(field);
11375
+ const mapped = this.gridData.map(item => fieldGetter(item));
11374
11376
  this.baseListData = [...new Set(mapped)].sort((a, b) => {
11375
11377
  if (a > b) {
11376
11378
  return 1;
@@ -18933,7 +18935,7 @@ class ColumnHandleDirective {
18933
18935
  if (column.parent) {
18934
18936
  const groupChildren = Array.from(column.parent.children);
18935
18937
  const indexOfCurrentColumn = groupChildren.indexOf(column);
18936
- if (column.isReordered || column.orderIndex > 0 || (column.isReordered && column.orderIndex === 0)) {
18938
+ if (column.isReordered || column.orderIndex > 0) {
18937
18939
  return (column.orderIndex - groupChildren[0].orderIndex) === groupChildren.length - 1;
18938
18940
  }
18939
18941
  else {
@@ -19672,6 +19674,7 @@ class CellSelectionService {
19672
19674
  if (settings.selectable && settings.selectable.enabled !== false && !settings.isStacked) {
19673
19675
  const iterator = this.getIterator();
19674
19676
  let item = iterator.next();
19677
+ const seenItems = new Set();
19675
19678
  while (!item.done) {
19676
19679
  if (item.value?.type === "data") {
19677
19680
  const rowArgs = {
@@ -19679,9 +19682,16 @@ class CellSelectionService {
19679
19682
  index: item.value.index
19680
19683
  };
19681
19684
  settings.columns.forEach(col => {
19685
+ if (col.isColumnGroup) {
19686
+ return;
19687
+ }
19682
19688
  const selectedCellArgs = settings.cellSelected(rowArgs, col, col.leafIndex);
19683
19689
  if (selectedCellArgs.selected) {
19684
- this.currentSelection.push(selectedCellArgs.item);
19690
+ const key = `${selectedCellArgs.item.itemKey}-${selectedCellArgs.item.columnKey}`;
19691
+ if (!seenItems.has(key)) {
19692
+ seenItems.add(key);
19693
+ this.currentSelection.push(selectedCellArgs.item);
19694
+ }
19685
19695
  }
19686
19696
  if (!settings.isRowSelectable(rowArgs)) {
19687
19697
  this.nonSelectableRows.set(rowArgs.index, rowArgs.dataItem);
@@ -19733,7 +19743,7 @@ class CellSelectionService {
19733
19743
  ev = this.select(item);
19734
19744
  this.currentSelection = [this.lastSelectionItem];
19735
19745
  }
19736
- if (!ev.selectedCells.length && !ev.deselectedCells.length) {
19746
+ if (!ev || (!ev.selectedCells.length && !ev.deselectedCells.length)) {
19737
19747
  return;
19738
19748
  }
19739
19749
  ev.ctrlKey = ctrlKey;
@@ -19835,6 +19845,9 @@ class CellSelectionService {
19835
19845
  index: idx
19836
19846
  };
19837
19847
  this.settings.columns.forEach(col => {
19848
+ if (col.isColumnGroup) {
19849
+ return;
19850
+ }
19838
19851
  const { item } = this.settings.cellSelected(rowArgs, col, col.leafIndex);
19839
19852
  const selected = this.isCellSelected(next.value, col);
19840
19853
  const isInRowRange = selectionStartRow <= idx && idx <= selectionEndRow;
@@ -23254,7 +23267,7 @@ class TableBodyComponent {
23254
23267
  }
23255
23268
  @if (!rowsToRender?.length) {
23256
23269
  <tr class="k-grid-norecords" role="row">
23257
- <td [attr.colspan]="colSpan" class="k-table-td">
23270
+ <td [attr.colspan]="colSpan" class="k-table-td" role="gridcell">
23258
23271
  @if (noRecordsTemplate?.templateRef) {
23259
23272
  <ng-template
23260
23273
  [templateContext]="{
@@ -23605,7 +23618,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
23605
23618
  }
23606
23619
  @if (!rowsToRender?.length) {
23607
23620
  <tr class="k-grid-norecords" role="row">
23608
- <td [attr.colspan]="colSpan" class="k-table-td">
23621
+ <td [attr.colspan]="colSpan" class="k-table-td" role="gridcell">
23609
23622
  @if (noRecordsTemplate?.templateRef) {
23610
23623
  <ng-template
23611
23624
  [templateContext]="{
@@ -24812,8 +24825,8 @@ const packageMetadata = {
24812
24825
  productName: 'Kendo UI for Angular',
24813
24826
  productCode: 'KENDOUIANGULAR',
24814
24827
  productCodes: ['KENDOUIANGULAR'],
24815
- publishDate: 1781868600,
24816
- version: '24.2.0-develop.1',
24828
+ publishDate: 1782305817,
24829
+ version: '24.2.0-develop.10',
24817
24830
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
24818
24831
  };
24819
24832
 
@@ -29832,6 +29845,18 @@ class ListComponent {
29832
29845
  if (this.pendingToggleScroll && this.virtualPageSize) {
29833
29846
  this.scroller.virtualSkip = this.pendingToggleScroll.virtualSkip;
29834
29847
  }
29848
+ else if (this.skipScroll && this.virtualPageSize && this.scroller.virtualSkip >= this.allItems.length) {
29849
+ const clampedSkip = Math.max(0, this.allItems.length - this.virtualPageSize);
29850
+ this.scroller.virtualSkip = clampedSkip;
29851
+ this.scroller.firstToLoad = clampedSkip;
29852
+ this.scroller.lastLoaded = this.allItems.length - 1;
29853
+ const rowH = this.rowHeight || this.minRowHeight || 0;
29854
+ const newOffset = clampedSkip * rowH;
29855
+ this.scroller.tableTransformOffset = newOffset;
29856
+ [this.table?.nativeElement, this.lockedTable?.nativeElement]
29857
+ .filter(isPresent)
29858
+ .forEach(el => this.renderer.setStyle(el, 'transform', `translateY(${newOffset}px)`));
29859
+ }
29835
29860
  this.itemsToRender = this.allItems.slice(this.scroller.virtualSkip, this.scroller.virtualSkip + this.virtualPageSize);
29836
29861
  }
29837
29862
  else if (totalChanged && !this.ctx.grid?.group?.length) {
@@ -7,7 +7,7 @@ export const packageMetadata = {
7
7
  "productCodes": [
8
8
  "KENDOUIANGULAR"
9
9
  ],
10
- "publishDate": 1781868600,
11
- "version": "24.2.0-develop.1",
10
+ "publishDate": 1782305817,
11
+ "version": "24.2.0-develop.10",
12
12
  "licensingDocsUrl": "https://www.telerik.com/kendo-angular-ui/my-license/"
13
13
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@progress/kendo-angular-grid",
3
- "version": "24.2.0-develop.1",
3
+ "version": "24.2.0-develop.10",
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",
@@ -94,7 +94,7 @@
94
94
  "package": {
95
95
  "productName": "Kendo UI for Angular",
96
96
  "productCode": "KENDOUIANGULAR",
97
- "publishDate": 1781868600,
97
+ "publishDate": 1782305817,
98
98
  "licensingDocsUrl": "https://www.telerik.com/kendo-angular-ui/my-license/"
99
99
  }
100
100
  },
@@ -107,32 +107,32 @@
107
107
  "@progress/kendo-data-query": "^1.7.3",
108
108
  "@progress/kendo-drawing": "^1.25.0",
109
109
  "@progress/kendo-licensing": "^1.11.0",
110
- "@progress/kendo-angular-buttons": "24.2.0-develop.1",
111
- "@progress/kendo-angular-common": "24.2.0-develop.1",
112
- "@progress/kendo-angular-dateinputs": "24.2.0-develop.1",
113
- "@progress/kendo-angular-layout": "24.2.0-develop.1",
114
- "@progress/kendo-angular-navigation": "24.2.0-develop.1",
115
- "@progress/kendo-angular-dropdowns": "24.2.0-develop.1",
116
- "@progress/kendo-angular-excel-export": "24.2.0-develop.1",
117
- "@progress/kendo-angular-icons": "24.2.0-develop.1",
118
- "@progress/kendo-angular-indicators": "24.2.0-develop.1",
119
- "@progress/kendo-angular-inputs": "24.2.0-develop.1",
120
- "@progress/kendo-angular-conversational-ui": "24.2.0-develop.1",
121
- "@progress/kendo-angular-intl": "24.2.0-develop.1",
122
- "@progress/kendo-angular-l10n": "24.2.0-develop.1",
123
- "@progress/kendo-angular-label": "24.2.0-develop.1",
124
- "@progress/kendo-angular-menu": "24.2.0-develop.1",
125
- "@progress/kendo-angular-pager": "24.2.0-develop.1",
126
- "@progress/kendo-angular-pdf-export": "24.2.0-develop.1",
127
- "@progress/kendo-angular-popup": "24.2.0-develop.1",
128
- "@progress/kendo-angular-toolbar": "24.2.0-develop.1",
129
- "@progress/kendo-angular-upload": "24.2.0-develop.1",
130
- "@progress/kendo-angular-utils": "24.2.0-develop.1",
110
+ "@progress/kendo-angular-buttons": "24.2.0-develop.10",
111
+ "@progress/kendo-angular-common": "24.2.0-develop.10",
112
+ "@progress/kendo-angular-dateinputs": "24.2.0-develop.10",
113
+ "@progress/kendo-angular-layout": "24.2.0-develop.10",
114
+ "@progress/kendo-angular-navigation": "24.2.0-develop.10",
115
+ "@progress/kendo-angular-dropdowns": "24.2.0-develop.10",
116
+ "@progress/kendo-angular-excel-export": "24.2.0-develop.10",
117
+ "@progress/kendo-angular-icons": "24.2.0-develop.10",
118
+ "@progress/kendo-angular-indicators": "24.2.0-develop.10",
119
+ "@progress/kendo-angular-inputs": "24.2.0-develop.10",
120
+ "@progress/kendo-angular-conversational-ui": "24.2.0-develop.10",
121
+ "@progress/kendo-angular-intl": "24.2.0-develop.10",
122
+ "@progress/kendo-angular-l10n": "24.2.0-develop.10",
123
+ "@progress/kendo-angular-label": "24.2.0-develop.10",
124
+ "@progress/kendo-angular-menu": "24.2.0-develop.10",
125
+ "@progress/kendo-angular-pager": "24.2.0-develop.10",
126
+ "@progress/kendo-angular-pdf-export": "24.2.0-develop.10",
127
+ "@progress/kendo-angular-popup": "24.2.0-develop.10",
128
+ "@progress/kendo-angular-toolbar": "24.2.0-develop.10",
129
+ "@progress/kendo-angular-upload": "24.2.0-develop.10",
130
+ "@progress/kendo-angular-utils": "24.2.0-develop.10",
131
131
  "rxjs": "^6.5.3 || ^7.0.0"
132
132
  },
133
133
  "dependencies": {
134
134
  "tslib": "^2.3.1",
135
- "@progress/kendo-angular-schematics": "24.2.0-develop.1",
135
+ "@progress/kendo-angular-schematics": "24.2.0-develop.10",
136
136
  "@progress/kendo-common": "^1.0.1",
137
137
  "@progress/kendo-file-saver": "^1.0.0",
138
138
  "@progress/kendo-csv": "^1.0.0"
@@ -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': '24.2.0-develop.1',
13
- '@progress/kendo-angular-navigation': '24.2.0-develop.1',
12
+ '@progress/kendo-angular-treeview': '24.2.0-develop.10',
13
+ '@progress/kendo-angular-navigation': '24.2.0-develop.10',
14
14
  // peer dependency of kendo-angular-inputs
15
- '@progress/kendo-angular-dialog': '24.2.0-develop.1',
15
+ '@progress/kendo-angular-dialog': '24.2.0-develop.10',
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': '24.2.0-develop.1',
19
+ '@progress/kendo-angular-progressbar': '24.2.0-develop.10',
20
20
  // transitive peer dependencies from toolbar
21
- '@progress/kendo-angular-indicators': '24.2.0-develop.1',
21
+ '@progress/kendo-angular-indicators': '24.2.0-develop.10',
22
22
  // transitive peer dependencies from conversational-ui
23
- '@progress/kendo-angular-menu': '24.2.0-develop.1',
24
- '@progress/kendo-angular-upload': '24.2.0-develop.1'
23
+ '@progress/kendo-angular-menu': '24.2.0-develop.10',
24
+ '@progress/kendo-angular-upload': '24.2.0-develop.10'
25
25
  } });
26
26
  return (0, schematics_1.externalSchematic)('@progress/kendo-angular-schematics', 'ng-add', finalOptions);
27
27
  }