@progress/kendo-angular-grid 20.1.0-develop.20 → 20.1.0-develop.22

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.
@@ -136,6 +136,9 @@ export class GridClipboardDirective {
136
136
  const isPaste = operationType === 'paste';
137
137
  const pastedData = args.clipboardData.getData('text');
138
138
  const visibleCols = this.host.columns.toArray().filter(c => c.isVisible);
139
+ if (visibleCols.some(c => c.orderIndex > 0)) { // columns have been reordered
140
+ visibleCols.sort((a, b) => a.orderIndex - b.orderIndex);
141
+ }
139
142
  const data = isPaste ?
140
143
  {
141
144
  dataString: pastedData,
@@ -35,9 +35,23 @@ export class MultiCheckboxFilterComponent {
35
35
  isSearched = false;
36
36
  currentFilter;
37
37
  typingTimeout;
38
+ baseListData;
38
39
  ngOnInit() {
39
- this.listData = [...new Set(this.gridData.map(i => i[this.column.field]))].sort((a, b) => { return a - b; });
40
- this.currentlySelected = new Set(this.filteredGridData.map(i => i[this.column.field]));
40
+ let mappedData = [];
41
+ let filteredMappedData = [];
42
+ if (this.column.filter === 'date') {
43
+ mappedData = this.getUniqueDateValues(this.gridData);
44
+ filteredMappedData = this.getUniqueDateValues(this.filteredGridData);
45
+ this.baseListData = mappedData.sort((a, b) => { return a - b; });
46
+ this.currentlySelected = new Set(filteredMappedData);
47
+ }
48
+ else {
49
+ mappedData = this.gridData.map(i => i[this.column.field]);
50
+ filteredMappedData = this.filteredGridData.map(i => i[this.column.field]);
51
+ this.baseListData = [...new Set(mappedData)].sort((a, b) => { return a - b; });
52
+ this.currentlySelected = new Set(filteredMappedData);
53
+ }
54
+ this.listData = this.baseListData;
41
55
  this.currentFilter = this.ctx.grid?.filter;
42
56
  if (this.currentFilter) {
43
57
  this.filterChange.emit(this.currentFilter);
@@ -62,12 +76,11 @@ export class MultiCheckboxFilterComponent {
62
76
  this.listData = [];
63
77
  return;
64
78
  }
65
- const base = [...new Set(this.gridData.map(i => i[field]))].sort((a, b) => { return a - b; });
66
79
  if (!value) {
67
- this.listData = base;
80
+ this.listData = this.baseListData;
68
81
  return;
69
82
  }
70
- this.listData = filterBy(base, { operator: 'contains', value });
83
+ this.listData = filterBy(this.baseListData, { operator: 'contains', value });
71
84
  }, DEFAULT_SEARCH_DELAY);
72
85
  }
73
86
  handleCheckBoxChange(checkedState, value, selectAllChecked) {
@@ -88,7 +101,7 @@ export class MultiCheckboxFilterComponent {
88
101
  if (selectAllChecked) {
89
102
  if (checkedState) {
90
103
  fieldFilters = [];
91
- this.currentlySelected = new Set(this.gridData.map(i => i[this.column.field]));
104
+ this.currentlySelected = new Set(this.baseListData);
92
105
  }
93
106
  else {
94
107
  fieldFilters = this.gridData.map(item => ({
@@ -147,9 +160,9 @@ export class MultiCheckboxFilterComponent {
147
160
  }
148
161
  get selectAllChecked() {
149
162
  if (!this.listData) {
150
- return;
163
+ return false;
151
164
  }
152
- if (this.currentlySelected.size === this.listData.length && this.currentlySelected.size > 0) {
165
+ if (this.currentlySelected.size >= this.listData.length && this.currentlySelected.size > 0) {
153
166
  return true;
154
167
  }
155
168
  else if (this.currentlySelected.size === 0) {
@@ -190,6 +203,15 @@ export class MultiCheckboxFilterComponent {
190
203
  messageFor(key) {
191
204
  return this.ctx.localization.get(key);
192
205
  }
206
+ getUniqueDateValues(data) {
207
+ return data.reduce((acc, current) => {
208
+ const value = current[this.column.field];
209
+ if (value instanceof Date && acc.findIndex(d => d.getTime() === value.getTime()) === -1) {
210
+ acc.push(value);
211
+ }
212
+ return acc;
213
+ }, []);
214
+ }
193
215
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MultiCheckboxFilterComponent, deps: [{ token: i1.ContextService }, { token: i2.LocalDataChangesService }], target: i0.ɵɵFactoryTarget.Component });
194
216
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MultiCheckboxFilterComponent, isStandalone: true, selector: "kendo-grid-multicheckbox-filter", inputs: { column: "column" }, outputs: { filterChange: "filterChange" }, ngImport: i0, template: `
195
217
  <kendo-textbox *ngIf="normalizedFilterVariant.search"
@@ -10,7 +10,7 @@ export const packageMetadata = {
10
10
  productName: 'Kendo UI for Angular',
11
11
  productCode: 'KENDOUIANGULAR',
12
12
  productCodes: ['KENDOUIANGULAR'],
13
- publishDate: 1760010088,
14
- version: '20.1.0-develop.20',
13
+ publishDate: 1760029359,
14
+ version: '20.1.0-develop.22',
15
15
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
16
16
  };
@@ -10747,9 +10747,23 @@ class MultiCheckboxFilterComponent {
10747
10747
  isSearched = false;
10748
10748
  currentFilter;
10749
10749
  typingTimeout;
10750
+ baseListData;
10750
10751
  ngOnInit() {
10751
- this.listData = [...new Set(this.gridData.map(i => i[this.column.field]))].sort((a, b) => { return a - b; });
10752
- this.currentlySelected = new Set(this.filteredGridData.map(i => i[this.column.field]));
10752
+ let mappedData = [];
10753
+ let filteredMappedData = [];
10754
+ if (this.column.filter === 'date') {
10755
+ mappedData = this.getUniqueDateValues(this.gridData);
10756
+ filteredMappedData = this.getUniqueDateValues(this.filteredGridData);
10757
+ this.baseListData = mappedData.sort((a, b) => { return a - b; });
10758
+ this.currentlySelected = new Set(filteredMappedData);
10759
+ }
10760
+ else {
10761
+ mappedData = this.gridData.map(i => i[this.column.field]);
10762
+ filteredMappedData = this.filteredGridData.map(i => i[this.column.field]);
10763
+ this.baseListData = [...new Set(mappedData)].sort((a, b) => { return a - b; });
10764
+ this.currentlySelected = new Set(filteredMappedData);
10765
+ }
10766
+ this.listData = this.baseListData;
10753
10767
  this.currentFilter = this.ctx.grid?.filter;
10754
10768
  if (this.currentFilter) {
10755
10769
  this.filterChange.emit(this.currentFilter);
@@ -10774,12 +10788,11 @@ class MultiCheckboxFilterComponent {
10774
10788
  this.listData = [];
10775
10789
  return;
10776
10790
  }
10777
- const base = [...new Set(this.gridData.map(i => i[field]))].sort((a, b) => { return a - b; });
10778
10791
  if (!value) {
10779
- this.listData = base;
10792
+ this.listData = this.baseListData;
10780
10793
  return;
10781
10794
  }
10782
- this.listData = filterBy(base, { operator: 'contains', value });
10795
+ this.listData = filterBy(this.baseListData, { operator: 'contains', value });
10783
10796
  }, DEFAULT_SEARCH_DELAY);
10784
10797
  }
10785
10798
  handleCheckBoxChange(checkedState, value, selectAllChecked) {
@@ -10800,7 +10813,7 @@ class MultiCheckboxFilterComponent {
10800
10813
  if (selectAllChecked) {
10801
10814
  if (checkedState) {
10802
10815
  fieldFilters = [];
10803
- this.currentlySelected = new Set(this.gridData.map(i => i[this.column.field]));
10816
+ this.currentlySelected = new Set(this.baseListData);
10804
10817
  }
10805
10818
  else {
10806
10819
  fieldFilters = this.gridData.map(item => ({
@@ -10859,9 +10872,9 @@ class MultiCheckboxFilterComponent {
10859
10872
  }
10860
10873
  get selectAllChecked() {
10861
10874
  if (!this.listData) {
10862
- return;
10875
+ return false;
10863
10876
  }
10864
- if (this.currentlySelected.size === this.listData.length && this.currentlySelected.size > 0) {
10877
+ if (this.currentlySelected.size >= this.listData.length && this.currentlySelected.size > 0) {
10865
10878
  return true;
10866
10879
  }
10867
10880
  else if (this.currentlySelected.size === 0) {
@@ -10902,6 +10915,15 @@ class MultiCheckboxFilterComponent {
10902
10915
  messageFor(key) {
10903
10916
  return this.ctx.localization.get(key);
10904
10917
  }
10918
+ getUniqueDateValues(data) {
10919
+ return data.reduce((acc, current) => {
10920
+ const value = current[this.column.field];
10921
+ if (value instanceof Date && acc.findIndex(d => d.getTime() === value.getTime()) === -1) {
10922
+ acc.push(value);
10923
+ }
10924
+ return acc;
10925
+ }, []);
10926
+ }
10905
10927
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MultiCheckboxFilterComponent, deps: [{ token: ContextService }, { token: LocalDataChangesService }], target: i0.ɵɵFactoryTarget.Component });
10906
10928
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MultiCheckboxFilterComponent, isStandalone: true, selector: "kendo-grid-multicheckbox-filter", inputs: { column: "column" }, outputs: { filterChange: "filterChange" }, ngImport: i0, template: `
10907
10929
  <kendo-textbox *ngIf="normalizedFilterVariant.search"
@@ -22790,8 +22812,8 @@ const packageMetadata = {
22790
22812
  productName: 'Kendo UI for Angular',
22791
22813
  productCode: 'KENDOUIANGULAR',
22792
22814
  productCodes: ['KENDOUIANGULAR'],
22793
- publishDate: 1760010088,
22794
- version: '20.1.0-develop.20',
22815
+ publishDate: 1760029359,
22816
+ version: '20.1.0-develop.22',
22795
22817
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
22796
22818
  };
22797
22819
 
@@ -35990,6 +36012,9 @@ class GridClipboardDirective {
35990
36012
  const isPaste = operationType === 'paste';
35991
36013
  const pastedData = args.clipboardData.getData('text');
35992
36014
  const visibleCols = this.host.columns.toArray().filter(c => c.isVisible);
36015
+ if (visibleCols.some(c => c.orderIndex > 0)) { // columns have been reordered
36016
+ visibleCols.sort((a, b) => a.orderIndex - b.orderIndex);
36017
+ }
35993
36018
  const data = isPaste ?
35994
36019
  {
35995
36020
  dataString: pastedData,
@@ -25,6 +25,7 @@ export declare class MultiCheckboxFilterComponent implements OnInit, OnDestroy {
25
25
  private isSearched;
26
26
  private currentFilter;
27
27
  private typingTimeout;
28
+ private baseListData;
28
29
  ngOnInit(): void;
29
30
  ngOnDestroy(): void;
30
31
  isItemSelected(item: any): boolean;
@@ -36,6 +37,7 @@ export declare class MultiCheckboxFilterComponent implements OnInit, OnDestroy {
36
37
  get normalizedFilterVariant(): FilterVariantSettings;
37
38
  get selectedItemsMessage(): string;
38
39
  messageFor(key: string): string;
40
+ private getUniqueDateValues;
39
41
  static ɵfac: i0.ɵɵFactoryDeclaration<MultiCheckboxFilterComponent, never>;
40
42
  static ɵcmp: i0.ɵɵComponentDeclaration<MultiCheckboxFilterComponent, "kendo-grid-multicheckbox-filter", never, { "column": { "alias": "column"; "required": false; }; }, { "filterChange": "filterChange"; }, never, never, true, never>;
41
43
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@progress/kendo-angular-grid",
3
- "version": "20.1.0-develop.20",
3
+ "version": "20.1.0-develop.22",
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",
@@ -41,7 +41,7 @@
41
41
  "package": {
42
42
  "productName": "Kendo UI for Angular",
43
43
  "productCode": "KENDOUIANGULAR",
44
- "publishDate": 1760010088,
44
+ "publishDate": 1760029359,
45
45
  "licensingDocsUrl": "https://www.telerik.com/kendo-angular-ui/my-license/"
46
46
  }
47
47
  },
@@ -54,29 +54,29 @@
54
54
  "@progress/kendo-data-query": "^1.0.0",
55
55
  "@progress/kendo-drawing": "^1.21.0",
56
56
  "@progress/kendo-licensing": "^1.7.0",
57
- "@progress/kendo-angular-buttons": "20.1.0-develop.20",
58
- "@progress/kendo-angular-common": "20.1.0-develop.20",
59
- "@progress/kendo-angular-dateinputs": "20.1.0-develop.20",
60
- "@progress/kendo-angular-layout": "20.1.0-develop.20",
61
- "@progress/kendo-angular-navigation": "20.1.0-develop.20",
62
- "@progress/kendo-angular-dropdowns": "20.1.0-develop.20",
63
- "@progress/kendo-angular-excel-export": "20.1.0-develop.20",
64
- "@progress/kendo-angular-icons": "20.1.0-develop.20",
65
- "@progress/kendo-angular-inputs": "20.1.0-develop.20",
66
- "@progress/kendo-angular-conversational-ui": "20.1.0-develop.20",
67
- "@progress/kendo-angular-intl": "20.1.0-develop.20",
68
- "@progress/kendo-angular-l10n": "20.1.0-develop.20",
69
- "@progress/kendo-angular-label": "20.1.0-develop.20",
70
- "@progress/kendo-angular-pager": "20.1.0-develop.20",
71
- "@progress/kendo-angular-pdf-export": "20.1.0-develop.20",
72
- "@progress/kendo-angular-popup": "20.1.0-develop.20",
73
- "@progress/kendo-angular-toolbar": "20.1.0-develop.20",
74
- "@progress/kendo-angular-utils": "20.1.0-develop.20",
57
+ "@progress/kendo-angular-buttons": "20.1.0-develop.22",
58
+ "@progress/kendo-angular-common": "20.1.0-develop.22",
59
+ "@progress/kendo-angular-dateinputs": "20.1.0-develop.22",
60
+ "@progress/kendo-angular-layout": "20.1.0-develop.22",
61
+ "@progress/kendo-angular-navigation": "20.1.0-develop.22",
62
+ "@progress/kendo-angular-dropdowns": "20.1.0-develop.22",
63
+ "@progress/kendo-angular-excel-export": "20.1.0-develop.22",
64
+ "@progress/kendo-angular-icons": "20.1.0-develop.22",
65
+ "@progress/kendo-angular-inputs": "20.1.0-develop.22",
66
+ "@progress/kendo-angular-conversational-ui": "20.1.0-develop.22",
67
+ "@progress/kendo-angular-intl": "20.1.0-develop.22",
68
+ "@progress/kendo-angular-l10n": "20.1.0-develop.22",
69
+ "@progress/kendo-angular-label": "20.1.0-develop.22",
70
+ "@progress/kendo-angular-pager": "20.1.0-develop.22",
71
+ "@progress/kendo-angular-pdf-export": "20.1.0-develop.22",
72
+ "@progress/kendo-angular-popup": "20.1.0-develop.22",
73
+ "@progress/kendo-angular-toolbar": "20.1.0-develop.22",
74
+ "@progress/kendo-angular-utils": "20.1.0-develop.22",
75
75
  "rxjs": "^6.5.3 || ^7.0.0"
76
76
  },
77
77
  "dependencies": {
78
78
  "tslib": "^2.3.1",
79
- "@progress/kendo-angular-schematics": "20.1.0-develop.20",
79
+ "@progress/kendo-angular-schematics": "20.1.0-develop.22",
80
80
  "@progress/kendo-common": "^1.0.1",
81
81
  "@progress/kendo-file-saver": "^1.0.0"
82
82
  },
@@ -4,14 +4,14 @@ const schematics_1 = require("@angular-devkit/schematics");
4
4
  function default_1(options) {
5
5
  const finalOptions = Object.assign(Object.assign({}, options), { mainNgModule: 'GridModule', package: 'grid', peerDependencies: {
6
6
  // peer deps of the dropdowns
7
- '@progress/kendo-angular-treeview': '20.1.0-develop.20',
8
- '@progress/kendo-angular-navigation': '20.1.0-develop.20',
7
+ '@progress/kendo-angular-treeview': '20.1.0-develop.22',
8
+ '@progress/kendo-angular-navigation': '20.1.0-develop.22',
9
9
  // peer dependency of kendo-angular-inputs
10
- '@progress/kendo-angular-dialog': '20.1.0-develop.20',
10
+ '@progress/kendo-angular-dialog': '20.1.0-develop.22',
11
11
  // peer dependency of kendo-angular-icons
12
12
  '@progress/kendo-svg-icons': '^4.0.0',
13
13
  // peer dependency of kendo-angular-layout
14
- '@progress/kendo-angular-progressbar': '20.1.0-develop.20'
14
+ '@progress/kendo-angular-progressbar': '20.1.0-develop.22'
15
15
  } });
16
16
  return (0, schematics_1.externalSchematic)('@progress/kendo-angular-schematics', 'ng-add', finalOptions);
17
17
  }