@progress/kendo-angular-grid 7.2.5-dev.202208181343 → 7.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.
@@ -38,6 +38,7 @@ export declare class ColumnHandleDirective implements OnInit, OnDestroy {
38
38
  private sizeToFit;
39
39
  private updateWidth;
40
40
  private columnsForLevel;
41
+ private getTableDelta;
41
42
  static ɵfac: i0.ɵɵFactoryDeclaration<ColumnHandleDirective, [{ host: true; }, null, null, null, null, null, null]>;
42
43
  static ɵdir: i0.ɵɵDirectiveDeclaration<ColumnHandleDirective, "[kendoGridColumnHandle]", never, { "columns": "columns"; "column": "column"; }, {}, never>;
43
44
  }
@@ -59,9 +59,15 @@ export declare class ColumnBase {
59
59
  */
60
60
  reorderable: boolean;
61
61
  /**
62
- * The width (in pixels) below which the user is not able to resize the column by using the UI.
62
+ * The width (in pixels) below which the user is not able to resize the column by using the UI ([see example]({% slug resizing_columns_grid %}#toc-limiting-the-resizing)).
63
+ * @default 10
63
64
  */
64
65
  minResizableWidth: number;
66
+ /**
67
+ * The width (in pixels) above which the user is not able to resize the column by using the UI ([see example]({% slug resizing_columns_grid %}#toc-limiting-the-resizing)).
68
+ * By default, the maximum width is not restricted.
69
+ */
70
+ maxResizableWidth: number;
65
71
  /**
66
72
  * The title of the column.
67
73
  */
@@ -618,5 +624,5 @@ export declare class ColumnBase {
618
624
  */
619
625
  constructor(parent?: ColumnBase, idService?: IdService);
620
626
  static ɵfac: i0.ɵɵFactoryDeclaration<ColumnBase, never>;
621
- static ɵcmp: i0.ɵɵComponentDeclaration<ColumnBase, "kendo-grid-column-base", never, { "resizable": "resizable"; "reorderable": "reorderable"; "minResizableWidth": "minResizableWidth"; "title": "title"; "width": "width"; "autoSize": "autoSize"; "locked": "locked"; "sticky": "sticky"; "hidden": "hidden"; "media": "media"; "lockable": "lockable"; "stickable": "stickable"; "columnMenu": "columnMenu"; "includeInChooser": "includeInChooser"; "style": "style"; "headerStyle": "headerStyle"; "filterStyle": "filterStyle"; "footerStyle": "footerStyle"; "cssClass": "class"; "headerClass": "headerClass"; "filterClass": "filterClass"; "footerClass": "footerClass"; }, {}, ["footerTemplate", "headerTemplates", "columnMenuTemplates"], never>;
627
+ static ɵcmp: i0.ɵɵComponentDeclaration<ColumnBase, "kendo-grid-column-base", never, { "resizable": "resizable"; "reorderable": "reorderable"; "minResizableWidth": "minResizableWidth"; "maxResizableWidth": "maxResizableWidth"; "title": "title"; "width": "width"; "autoSize": "autoSize"; "locked": "locked"; "sticky": "sticky"; "hidden": "hidden"; "media": "media"; "lockable": "lockable"; "stickable": "stickable"; "columnMenu": "columnMenu"; "includeInChooser": "includeInChooser"; "style": "style"; "headerStyle": "headerStyle"; "filterStyle": "filterStyle"; "footerStyle": "footerStyle"; "cssClass": "class"; "headerClass": "headerClass"; "filterClass": "filterClass"; "footerClass": "footerClass"; }, {}, ["footerTemplate", "headerTemplates", "columnMenuTemplates"], never>;
622
628
  }
@@ -78,6 +78,10 @@ export declare class ColumnGroupComponent extends ColumnBase {
78
78
  * @hidden
79
79
  */
80
80
  minResizableWidth: number;
81
+ /**
82
+ * @hidden
83
+ */
84
+ maxResizableWidth: number;
81
85
  /**
82
86
  * @hidden
83
87
  */
@@ -167,7 +167,7 @@ ColumnMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
167
167
  MenuTabbingService
168
168
  ], viewQueries: [{ propertyName: "anchor", first: true, predicate: ["anchor"], descendants: true, static: true }, { propertyName: "template", first: true, predicate: ["template"], descendants: true, read: TemplateRef, static: true }], usesOnChanges: true, ngImport: i0, template: `
169
169
  <a #anchor
170
- class="k-grid-column-menu k-grid-filter"
170
+ class="k-grid-header-menu k-grid-column-menu"
171
171
  [ngClass]="{ 'k-active': isActive }"
172
172
  (click)="toggle($event, anchor, template)"
173
173
  (keydown.enter)="$event.stopImmediatePropagation()"
@@ -228,7 +228,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
228
228
  selector: 'kendo-grid-column-menu',
229
229
  template: `
230
230
  <a #anchor
231
- class="k-grid-column-menu k-grid-filter"
231
+ class="k-grid-header-menu k-grid-column-menu"
232
232
  [ngClass]="{ 'k-active': isActive }"
233
233
  (click)="toggle($event, anchor, template)"
234
234
  (keydown.enter)="$event.stopImmediatePropagation()"
@@ -172,9 +172,11 @@ export class ColumnHandleDirective {
172
172
  if (isTruthy(this.rtl)) {
173
173
  delta *= -1;
174
174
  }
175
- const newWidth = Math.max(this.column.resizeStartWidth + delta, this.column.minResizableWidth);
176
- const tableDelta = newWidth > this.column.minResizableWidth ?
177
- delta : this.column.minResizableWidth - this.column.resizeStartWidth;
175
+ let newWidth = Math.max(this.column.resizeStartWidth + delta, this.column.minResizableWidth);
176
+ if (isPresent(this.column.maxResizableWidth)) {
177
+ newWidth = Math.min(newWidth, this.column.maxResizableWidth);
178
+ }
179
+ const tableDelta = this.getTableDelta(newWidth, delta);
178
180
  this.updateWidth(this.column, newWidth);
179
181
  this.service.resizeTable(this.column, tableDelta);
180
182
  }
@@ -199,6 +201,25 @@ export class ColumnHandleDirective {
199
201
  columnsForLevel(level) {
200
202
  return columnsToRender(this.columns ? this.columns.filter(column => column.level === level) : []);
201
203
  }
204
+ getTableDelta(newWidth, delta) {
205
+ const minWidth = this.column.minResizableWidth;
206
+ const maxWidth = this.column.maxResizableWidth;
207
+ const startWidth = this.column.resizeStartWidth;
208
+ const isAboveMin = newWidth > minWidth;
209
+ const isBelowMax = newWidth < maxWidth;
210
+ const isInBoundaries = isPresent(maxWidth) ?
211
+ isAboveMin && isBelowMax :
212
+ isAboveMin;
213
+ if (isInBoundaries) {
214
+ return delta;
215
+ }
216
+ else if (newWidth <= minWidth) {
217
+ return minWidth - startWidth;
218
+ }
219
+ else {
220
+ return startWidth - maxWidth;
221
+ }
222
+ }
202
223
  }
203
224
  ColumnHandleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ColumnHandleDirective, deps: [{ token: i1.DraggableDirective, host: true }, { token: i0.ElementRef }, { token: i2.ColumnResizingService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i3.LocalizationService }, { token: i4.ColumnInfoService }], target: i0.ɵɵFactoryTarget.Directive });
204
225
  ColumnHandleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: ColumnHandleDirective, selector: "[kendoGridColumnHandle]", inputs: { columns: "columns", column: "column" }, host: { listeners: { "dblclick": "autoFit()" }, properties: { "style.display": "this.visible", "style.left": "this.leftStyle", "style.right": "this.rightStyle" } }, ngImport: i0 });
@@ -55,7 +55,8 @@ export class ColumnBase {
55
55
  */
56
56
  this.reorderable = true;
57
57
  /**
58
- * The width (in pixels) below which the user is not able to resize the column by using the UI.
58
+ * The width (in pixels) below which the user is not able to resize the column by using the UI ([see example]({% slug resizing_columns_grid %}#toc-limiting-the-resizing)).
59
+ * @default 10
59
60
  */
60
61
  this.minResizableWidth = 10;
61
62
  this._locked = false;
@@ -232,7 +233,7 @@ export class ColumnBase {
232
233
  }
233
234
  }
234
235
  ColumnBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ColumnBase, deps: [{ token: ColumnBase }, { token: i1.IdService }], target: i0.ɵɵFactoryTarget.Component });
235
- ColumnBase.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ColumnBase, selector: "kendo-grid-column-base", inputs: { resizable: "resizable", reorderable: "reorderable", minResizableWidth: "minResizableWidth", title: "title", width: "width", autoSize: "autoSize", locked: "locked", sticky: "sticky", hidden: "hidden", media: "media", lockable: "lockable", stickable: "stickable", columnMenu: "columnMenu", includeInChooser: "includeInChooser", style: "style", headerStyle: "headerStyle", filterStyle: "filterStyle", footerStyle: "footerStyle", cssClass: ["class", "cssClass"], headerClass: "headerClass", filterClass: "filterClass", footerClass: "footerClass" }, queries: [{ propertyName: "footerTemplate", first: true, predicate: FooterTemplateDirective, descendants: true }, { propertyName: "headerTemplates", predicate: HeaderTemplateDirective }, { propertyName: "columnMenuTemplates", predicate: ColumnMenuTemplateDirective }], ngImport: i0, template: ``, isInline: true });
236
+ ColumnBase.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ColumnBase, selector: "kendo-grid-column-base", inputs: { resizable: "resizable", reorderable: "reorderable", minResizableWidth: "minResizableWidth", maxResizableWidth: "maxResizableWidth", title: "title", width: "width", autoSize: "autoSize", locked: "locked", sticky: "sticky", hidden: "hidden", media: "media", lockable: "lockable", stickable: "stickable", columnMenu: "columnMenu", includeInChooser: "includeInChooser", style: "style", headerStyle: "headerStyle", filterStyle: "filterStyle", footerStyle: "footerStyle", cssClass: ["class", "cssClass"], headerClass: "headerClass", filterClass: "filterClass", footerClass: "footerClass" }, queries: [{ propertyName: "footerTemplate", first: true, predicate: FooterTemplateDirective, descendants: true }, { propertyName: "headerTemplates", predicate: HeaderTemplateDirective }, { propertyName: "columnMenuTemplates", predicate: ColumnMenuTemplateDirective }], ngImport: i0, template: ``, isInline: true });
236
237
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ColumnBase, decorators: [{
237
238
  type: Component,
238
239
  args: [{
@@ -245,6 +246,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
245
246
  type: Input
246
247
  }], minResizableWidth: [{
247
248
  type: Input
249
+ }], maxResizableWidth: [{
250
+ type: Input
248
251
  }], title: [{
249
252
  type: Input
250
253
  }], width: [{
@@ -59,7 +59,7 @@ export class FilterMenuComponent {
59
59
  FilterMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FilterMenuComponent, deps: [{ token: i1.FilterService }, { token: i2.SinglePopupService }, { token: i3.LocalizationService }, { token: i4.NavigationService }], target: i0.ɵɵFactoryTarget.Component });
60
60
  FilterMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FilterMenuComponent, selector: "kendo-grid-filter-menu", inputs: { column: "column", filter: "filter", tabIndex: "tabIndex" }, viewQueries: [{ propertyName: "anchor", first: true, predicate: ["anchor"], descendants: true, static: true }, { propertyName: "template", first: true, predicate: ["template"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: `
61
61
  <a #anchor
62
- [ngClass]="{'k-grid-filter':true, 'k-active': hasFilters}"
62
+ [ngClass]="{'k-grid-filter-menu':true, 'k-grid-header-menu':true, 'k-active': hasFilters}"
63
63
  [tabindex]="tabIndex"
64
64
  (click)="toggle(anchor, template)"
65
65
  (keydown.enter)="$event.stopImmediatePropagation()"
@@ -84,7 +84,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
84
84
  selector: 'kendo-grid-filter-menu',
85
85
  template: `
86
86
  <a #anchor
87
- [ngClass]="{'k-grid-filter':true, 'k-active': hasFilters}"
87
+ [ngClass]="{'k-grid-filter-menu':true, 'k-grid-header-menu':true, 'k-active': hasFilters}"
88
88
  [tabindex]="tabIndex"
89
89
  (click)="toggle(anchor, template)"
90
90
  (keydown.enter)="$event.stopImmediatePropagation()"
@@ -2501,6 +2501,7 @@ GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
2501
2501
  kendoDraggable
2502
2502
  kendoGridSelectionMarquee
2503
2503
  [enableDrag]="marqueeSelection"
2504
+ [sort]="sort"
2504
2505
  >
2505
2506
  </kendo-grid-list>
2506
2507
  <div
@@ -2614,7 +2615,7 @@ GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
2614
2615
  (pageChange)="notifyPageChange('pager', $event)">
2615
2616
  </kendo-pager>
2616
2617
  <kendo-grid-toolbar class="k-toolbar k-grid-toolbar k-grid-toolbar-bottom" *ngIf="showBottomToolbar" position="bottom"></kendo-grid-toolbar>
2617
- `, isInline: true, components: [{ type: i23.ToolbarComponent, selector: "kendo-grid-toolbar", inputs: ["position"] }, { type: i24.PagerComponent, selector: "kendo-pager", inputs: ["total", "skip", "pageSize", "options", "template"], outputs: ["pageChange"] }, { type: i25.GroupPanelComponent, selector: "kendo-grid-group-panel", inputs: ["text", "groups"], outputs: ["change"] }, { type: i26.ColGroupComponent, selector: "[kendoGridColGroup]", inputs: ["columns", "groups", "detailTemplate"] }, { type: i27.HeaderComponent, selector: "[kendoGridHeader]", inputs: ["totalColumnLevels", "columns", "groups", "detailTemplate", "scrollable", "filterable", "sort", "filter", "sortable", "groupable", "lockedColumnsCount", "resizable", "reorderable", "columnMenu", "columnMenuTemplate", "totalColumnsCount", "tabIndex"] }, { type: i28.ListComponent, selector: "kendo-grid-list", inputs: ["data", "groups", "total", "rowHeight", "stickyRowHeight", "detailRowHeight", "take", "skip", "columns", "detailTemplate", "noRecordsTemplate", "selectable", "groupable", "filterable", "rowClass", "rowSticky", "loading", "trackBy", "virtualColumns", "isVirtual", "cellLoadingTemplate", "loadingTemplate"], outputs: ["contentScroll", "pageChange", "scrollBottom"] }, { type: i29.FooterComponent, selector: "[kendoGridFooter]", inputs: ["columns", "groups", "detailTemplate", "scrollable", "lockedColumnsCount", "logicalRowIndex"] }, { type: i30.TableBodyComponent, selector: "[kendoGridTableBody]", inputs: ["columns", "allColumns", "groups", "detailTemplate", "noRecordsTemplate", "data", "skip", "selectable", "filterable", "noRecordsText", "isLocked", "isLoading", "isVirtual", "cellLoadingTemplate", "skipGroupDecoration", "showGroupFooters", "lockedColumnsCount", "totalColumnsCount", "virtualColumns", "trackBy", "rowSticky", "rowClass"] }, { type: i31.LoadingComponent, selector: "[kendoGridLoading]", inputs: ["loadingTemplate"] }], directives: [{ type: i32.LocalizedMessagesDirective, selector: "[kendoGridLocalizedMessages]" }, { type: i33.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i34.TableDirective, selector: "table", inputs: ["locked", "virtualColumns"] }, { type: i35.ResizableContainerDirective, selector: "[kendoGridResizableContainer]", inputs: ["lockedWidth", "kendoGridResizableContainer"] }, { type: i36.DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }, { type: i37.GridMarqueeDirective, selector: "[kendoGridSelectionMarquee]" }], encapsulation: i0.ViewEncapsulation.None });
2618
+ `, isInline: true, components: [{ type: i23.ToolbarComponent, selector: "kendo-grid-toolbar", inputs: ["position"] }, { type: i24.PagerComponent, selector: "kendo-pager", inputs: ["total", "skip", "pageSize", "options", "template"], outputs: ["pageChange"] }, { type: i25.GroupPanelComponent, selector: "kendo-grid-group-panel", inputs: ["text", "groups"], outputs: ["change"] }, { type: i26.ColGroupComponent, selector: "[kendoGridColGroup]", inputs: ["columns", "groups", "detailTemplate", "sort"] }, { type: i27.HeaderComponent, selector: "[kendoGridHeader]", inputs: ["totalColumnLevels", "columns", "groups", "detailTemplate", "scrollable", "filterable", "sort", "filter", "sortable", "groupable", "lockedColumnsCount", "resizable", "reorderable", "columnMenu", "columnMenuTemplate", "totalColumnsCount", "tabIndex"] }, { type: i28.ListComponent, selector: "kendo-grid-list", inputs: ["data", "groups", "total", "rowHeight", "stickyRowHeight", "detailRowHeight", "take", "skip", "columns", "detailTemplate", "noRecordsTemplate", "selectable", "groupable", "filterable", "rowClass", "rowSticky", "loading", "trackBy", "virtualColumns", "isVirtual", "cellLoadingTemplate", "loadingTemplate", "sort"], outputs: ["contentScroll", "pageChange", "scrollBottom"] }, { type: i29.FooterComponent, selector: "[kendoGridFooter]", inputs: ["columns", "groups", "detailTemplate", "scrollable", "lockedColumnsCount", "logicalRowIndex"] }, { type: i30.TableBodyComponent, selector: "[kendoGridTableBody]", inputs: ["columns", "allColumns", "groups", "detailTemplate", "noRecordsTemplate", "data", "skip", "selectable", "filterable", "noRecordsText", "isLocked", "isLoading", "isVirtual", "cellLoadingTemplate", "skipGroupDecoration", "showGroupFooters", "lockedColumnsCount", "totalColumnsCount", "virtualColumns", "trackBy", "rowSticky", "rowClass"] }, { type: i31.LoadingComponent, selector: "[kendoGridLoading]", inputs: ["loadingTemplate"] }], directives: [{ type: i32.LocalizedMessagesDirective, selector: "[kendoGridLocalizedMessages]" }, { type: i33.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i34.TableDirective, selector: "table", inputs: ["locked", "virtualColumns"] }, { type: i35.ResizableContainerDirective, selector: "[kendoGridResizableContainer]", inputs: ["lockedWidth", "kendoGridResizableContainer"] }, { type: i36.DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }, { type: i37.GridMarqueeDirective, selector: "[kendoGridSelectionMarquee]" }], encapsulation: i0.ViewEncapsulation.None });
2618
2619
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: GridComponent, decorators: [{
2619
2620
  type: Component,
2620
2621
  args: [{
@@ -2998,6 +2999,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
2998
2999
  kendoDraggable
2999
3000
  kendoGridSelectionMarquee
3000
3001
  [enableDrag]="marqueeSelection"
3002
+ [sort]="sort"
3001
3003
  >
3002
3004
  </kendo-grid-list>
3003
3005
  <div
@@ -9,7 +9,7 @@ export const packageMetadata = {
9
9
  name: '@progress/kendo-angular-grid',
10
10
  productName: 'Kendo UI for Angular',
11
11
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
12
- publishDate: 1660829972,
12
+ publishDate: 1662712446,
13
13
  version: '',
14
14
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'
15
15
  };
@@ -4,6 +4,7 @@
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import { Component, Input } from '@angular/core';
6
6
  import { columnsToRender } from '../../columns/column-common';
7
+ import { isNullOrEmptyString, isTruthy } from '../../utils';
7
8
  import * as i0 from "@angular/core";
8
9
  import * as i1 from "@angular/common";
9
10
  /**
@@ -13,6 +14,7 @@ export class ColGroupComponent {
13
14
  constructor() {
14
15
  this.columns = [];
15
16
  this.groups = [];
17
+ this.sort = new Array();
16
18
  }
17
19
  get columnsToRender() {
18
20
  return columnsToRender(this.columns);
@@ -20,13 +22,28 @@ export class ColGroupComponent {
20
22
  trackBy(index, _item) {
21
23
  return index;
22
24
  }
25
+ isSorted(column) {
26
+ const state = this.sortDescriptor(column.field);
27
+ return this.isSortable(column) && (state.dir === 'asc' || state.dir === 'desc');
28
+ }
29
+ getColumnComponent(column) {
30
+ return column;
31
+ }
32
+ isSortable(column) {
33
+ return !isNullOrEmptyString(column.field) && isTruthy(column.sortable);
34
+ }
35
+ sortDescriptor(field) {
36
+ return this.sort.find(item => item.field === field) || { field };
37
+ }
23
38
  }
24
39
  ColGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ColGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
25
- ColGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ColGroupComponent, selector: "[kendoGridColGroup]", inputs: { columns: "columns", groups: "groups", detailTemplate: "detailTemplate" }, ngImport: i0, template: `
40
+ ColGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ColGroupComponent, selector: "[kendoGridColGroup]", inputs: { columns: "columns", groups: "groups", detailTemplate: "detailTemplate", sort: "sort" }, ngImport: i0, template: `
26
41
  <ng-container>
27
42
  <col [class.k-group-col]="true" *ngFor="let g of groups" />
28
43
  <col [class.k-hierarchy-col]="true" *ngIf="detailTemplate?.templateRef"/>
29
- <col *ngFor="let column of columnsToRender; trackBy: trackBy;" [style.width.px]="column.width"/>
44
+ <col *ngFor="let column of columnsToRender; trackBy: trackBy;"
45
+ [style.width.px]="column.width"
46
+ [class.k-sorted]="isSorted(getColumnComponent(column))"/>
30
47
  </ng-container>
31
48
  `, isInline: true, directives: [{ type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
32
49
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ColGroupComponent, decorators: [{
@@ -37,7 +54,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
37
54
  <ng-container>
38
55
  <col [class.k-group-col]="true" *ngFor="let g of groups" />
39
56
  <col [class.k-hierarchy-col]="true" *ngIf="detailTemplate?.templateRef"/>
40
- <col *ngFor="let column of columnsToRender; trackBy: trackBy;" [style.width.px]="column.width"/>
57
+ <col *ngFor="let column of columnsToRender; trackBy: trackBy;"
58
+ [style.width.px]="column.width"
59
+ [class.k-sorted]="isSorted(getColumnComponent(column))"/>
41
60
  </ng-container>
42
61
  `
43
62
  }]
@@ -47,4 +66,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
47
66
  type: Input
48
67
  }], detailTemplate: [{
49
68
  type: Input
69
+ }], sort: [{
70
+ type: Input
50
71
  }] } });
@@ -445,6 +445,7 @@ HeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", versio
445
445
  role="columnheader"
446
446
  aria-selected="false"
447
447
  [attr.aria-sort]="sortState(getColumnComponent(column))"
448
+ [class.k-sorted]="!!sortState(getColumnComponent(column))"
448
449
  (keydown)="onHeaderKeydown(getColumnComponent(column), $event)"
449
450
  kendoDropTarget
450
451
  kendoDraggable
@@ -467,31 +468,37 @@ HeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", versio
467
468
  [attr.colspan]="column.colspan">
468
469
 
469
470
  <ng-container *ngIf="!isSortable(getColumnComponent(column))">
470
- <kendo-grid-filter-menu
471
- *ngIf="showFilterMenu && isFilterable(getColumnComponent(column))"
472
- [column]="getColumnComponent(column)"
473
- [filter]="filter"
474
- [tabIndex]="tabIndex">
475
- </kendo-grid-filter-menu>
476
- <kendo-grid-column-menu *ngIf="showColumnMenu(column)"
477
- [standalone]="false"
478
- [settings]="columnMenuSettings"
479
- [column]="column"
480
- [columnMenuTemplate]="columnMenuTemplate"
481
- [sort]="sort"
482
- [filter]="filter"
483
- [sortable]="sortable"
484
- [tabIndex]="tabIndex">
485
- </kendo-grid-column-menu>
486
- <ng-template
487
- [templateContext]="{
488
- templateRef: column.headerTemplateRef,
489
- columnIndex: column.leafIndex,
490
- column: column,
491
- $implicit: column
492
- }">
493
- </ng-template>
494
- <ng-container *ngIf="!column.headerTemplateRef">{{column.displayTitle}}</ng-container>
471
+ <span class="k-cell-inner">
472
+ <span class="k-link">
473
+ <ng-template
474
+ [templateContext]="{
475
+ templateRef: column.headerTemplateRef,
476
+ columnIndex: column.leafIndex,
477
+ column: column,
478
+ $implicit: column
479
+ }">
480
+ </ng-template>
481
+ <ng-container *ngIf="!column.headerTemplateRef">
482
+ <span class="k-column-title">{{column.displayTitle}}</span>
483
+ </ng-container>
484
+ </span>
485
+ <kendo-grid-filter-menu
486
+ *ngIf="showFilterMenu && isFilterable(getColumnComponent(column))"
487
+ [column]="getColumnComponent(column)"
488
+ [filter]="filter"
489
+ [tabIndex]="tabIndex">
490
+ </kendo-grid-filter-menu>
491
+ <kendo-grid-column-menu *ngIf="showColumnMenu(column)"
492
+ [standalone]="false"
493
+ [settings]="columnMenuSettings"
494
+ [column]="column"
495
+ [columnMenuTemplate]="columnMenuTemplate"
496
+ [sort]="sort"
497
+ [filter]="filter"
498
+ [sortable]="sortable"
499
+ [tabIndex]="tabIndex">
500
+ </kendo-grid-column-menu>
501
+ </span>
495
502
  </ng-container>
496
503
 
497
504
  <ng-container *ngIf="isSortable(getColumnComponent(column))">
@@ -576,28 +583,34 @@ HeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", versio
576
583
  [ngStyle]="column.headerStyle"
577
584
  [attr.rowspan]="column.rowspan(totalColumnLevels)"
578
585
  [attr.colspan]="column.colspan">
586
+ <span class="k-cell-inner">
587
+ <span class="k-link">
588
+ <ng-template
589
+ [templateContext]="{
590
+ templateRef: column.headerTemplateRef,
591
+ columnIndex: lockedColumnsCount + columnIndex,
592
+ column: column,
593
+ $implicit: column
594
+ }">
595
+ </ng-template>
596
+ <ng-container *ngIf="!column.headerTemplateRef">
597
+ <span class="k-column-title">{{column.displayTitle}}</span>
598
+ </ng-container>
599
+ </span>
579
600
  <kendo-grid-column-menu *ngIf="showColumnMenu(column)"
580
601
  [standalone]="false"
581
602
  [settings]="columnMenuSettings"
582
603
  [column]="column"
583
604
  [columnMenuTemplate]="columnMenuTemplate">
584
605
  </kendo-grid-column-menu>
585
- <ng-template
586
- [templateContext]="{
587
- templateRef: column.headerTemplateRef,
588
- columnIndex: lockedColumnsCount + columnIndex,
589
- column: column,
590
- $implicit: column
591
- }">
592
- </ng-template>
593
- <ng-container *ngIf="!column.headerTemplateRef">{{column.displayTitle}}</ng-container>
594
- <span kendoGridColumnHandle
595
- kendoDraggable
596
- class="k-column-resizer"
597
- *ngIf="resizable"
598
- [column]="column"
599
- [columns]="columns">
600
- </span>
606
+ </span>
607
+ <span kendoGridColumnHandle
608
+ kendoDraggable
609
+ class="k-column-resizer"
610
+ *ngIf="resizable"
611
+ [column]="column"
612
+ [columns]="columns">
613
+ </span>
601
614
  </th>
602
615
  </ng-container>
603
616
  </tr>
@@ -653,6 +666,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
653
666
  role="columnheader"
654
667
  aria-selected="false"
655
668
  [attr.aria-sort]="sortState(getColumnComponent(column))"
669
+ [class.k-sorted]="!!sortState(getColumnComponent(column))"
656
670
  (keydown)="onHeaderKeydown(getColumnComponent(column), $event)"
657
671
  kendoDropTarget
658
672
  kendoDraggable
@@ -675,31 +689,37 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
675
689
  [attr.colspan]="column.colspan">
676
690
 
677
691
  <ng-container *ngIf="!isSortable(getColumnComponent(column))">
678
- <kendo-grid-filter-menu
679
- *ngIf="showFilterMenu && isFilterable(getColumnComponent(column))"
680
- [column]="getColumnComponent(column)"
681
- [filter]="filter"
682
- [tabIndex]="tabIndex">
683
- </kendo-grid-filter-menu>
684
- <kendo-grid-column-menu *ngIf="showColumnMenu(column)"
685
- [standalone]="false"
686
- [settings]="columnMenuSettings"
687
- [column]="column"
688
- [columnMenuTemplate]="columnMenuTemplate"
689
- [sort]="sort"
690
- [filter]="filter"
691
- [sortable]="sortable"
692
- [tabIndex]="tabIndex">
693
- </kendo-grid-column-menu>
694
- <ng-template
695
- [templateContext]="{
696
- templateRef: column.headerTemplateRef,
697
- columnIndex: column.leafIndex,
698
- column: column,
699
- $implicit: column
700
- }">
701
- </ng-template>
702
- <ng-container *ngIf="!column.headerTemplateRef">{{column.displayTitle}}</ng-container>
692
+ <span class="k-cell-inner">
693
+ <span class="k-link">
694
+ <ng-template
695
+ [templateContext]="{
696
+ templateRef: column.headerTemplateRef,
697
+ columnIndex: column.leafIndex,
698
+ column: column,
699
+ $implicit: column
700
+ }">
701
+ </ng-template>
702
+ <ng-container *ngIf="!column.headerTemplateRef">
703
+ <span class="k-column-title">{{column.displayTitle}}</span>
704
+ </ng-container>
705
+ </span>
706
+ <kendo-grid-filter-menu
707
+ *ngIf="showFilterMenu && isFilterable(getColumnComponent(column))"
708
+ [column]="getColumnComponent(column)"
709
+ [filter]="filter"
710
+ [tabIndex]="tabIndex">
711
+ </kendo-grid-filter-menu>
712
+ <kendo-grid-column-menu *ngIf="showColumnMenu(column)"
713
+ [standalone]="false"
714
+ [settings]="columnMenuSettings"
715
+ [column]="column"
716
+ [columnMenuTemplate]="columnMenuTemplate"
717
+ [sort]="sort"
718
+ [filter]="filter"
719
+ [sortable]="sortable"
720
+ [tabIndex]="tabIndex">
721
+ </kendo-grid-column-menu>
722
+ </span>
703
723
  </ng-container>
704
724
 
705
725
  <ng-container *ngIf="isSortable(getColumnComponent(column))">
@@ -784,28 +804,34 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
784
804
  [ngStyle]="column.headerStyle"
785
805
  [attr.rowspan]="column.rowspan(totalColumnLevels)"
786
806
  [attr.colspan]="column.colspan">
807
+ <span class="k-cell-inner">
808
+ <span class="k-link">
809
+ <ng-template
810
+ [templateContext]="{
811
+ templateRef: column.headerTemplateRef,
812
+ columnIndex: lockedColumnsCount + columnIndex,
813
+ column: column,
814
+ $implicit: column
815
+ }">
816
+ </ng-template>
817
+ <ng-container *ngIf="!column.headerTemplateRef">
818
+ <span class="k-column-title">{{column.displayTitle}}</span>
819
+ </ng-container>
820
+ </span>
787
821
  <kendo-grid-column-menu *ngIf="showColumnMenu(column)"
788
822
  [standalone]="false"
789
823
  [settings]="columnMenuSettings"
790
824
  [column]="column"
791
825
  [columnMenuTemplate]="columnMenuTemplate">
792
826
  </kendo-grid-column-menu>
793
- <ng-template
794
- [templateContext]="{
795
- templateRef: column.headerTemplateRef,
796
- columnIndex: lockedColumnsCount + columnIndex,
797
- column: column,
798
- $implicit: column
799
- }">
800
- </ng-template>
801
- <ng-container *ngIf="!column.headerTemplateRef">{{column.displayTitle}}</ng-container>
802
- <span kendoGridColumnHandle
803
- kendoDraggable
804
- class="k-column-resizer"
805
- *ngIf="resizable"
806
- [column]="column"
807
- [columns]="columns">
808
- </span>
827
+ </span>
828
+ <span kendoGridColumnHandle
829
+ kendoDraggable
830
+ class="k-column-resizer"
831
+ *ngIf="resizable"
832
+ [column]="column"
833
+ [columns]="columns">
834
+ </span>
809
835
  </th>
810
836
  </ng-container>
811
837
  </tr>
@@ -110,6 +110,7 @@ export class ListComponent {
110
110
  this.selectable = false;
111
111
  this.groupable = false;
112
112
  this.trackBy = defaultTrackBy;
113
+ this.sort = new Array();
113
114
  this.contentScroll = new EventEmitter();
114
115
  this.pageChange = new EventEmitter();
115
116
  this.scrollBottom = new EventEmitter();
@@ -563,7 +564,7 @@ export class ListComponent {
563
564
  }
564
565
  }
565
566
  ListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ListComponent, deps: [{ token: SCROLLER_FACTORY_TOKEN }, { token: i1.DetailsService }, { token: i2.ChangeNotificationService }, { token: i3.SuspendService }, { token: i4.GroupsService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i5.ScrollSyncService }, { token: i6.ResizeService }, { token: i7.EditService }, { token: i8.BrowserSupportService }, { token: i9.NavigationService }, { token: i10.ScrollRequestService }, { token: i11.LocalizationService }, { token: i12.ColumnResizingService }, { token: i0.ChangeDetectorRef }, { token: i13.PDFService }, { token: i14.ColumnInfoService }], target: i0.ɵɵFactoryTarget.Component });
566
- ListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ListComponent, selector: "kendo-grid-list", inputs: { data: "data", groups: "groups", total: "total", rowHeight: "rowHeight", stickyRowHeight: "stickyRowHeight", detailRowHeight: "detailRowHeight", take: "take", skip: "skip", columns: "columns", detailTemplate: "detailTemplate", noRecordsTemplate: "noRecordsTemplate", selectable: "selectable", groupable: "groupable", filterable: "filterable", rowClass: "rowClass", rowSticky: "rowSticky", loading: "loading", trackBy: "trackBy", virtualColumns: "virtualColumns", isVirtual: "isVirtual", cellLoadingTemplate: "cellLoadingTemplate", loadingTemplate: "loadingTemplate" }, outputs: { contentScroll: "contentScroll", pageChange: "pageChange", scrollBottom: "scrollBottom" }, host: { properties: { "class.k-grid-container": "this.hostClass", "attr.role": "this.hostRole" } }, providers: [
567
+ ListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ListComponent, selector: "kendo-grid-list", inputs: { data: "data", groups: "groups", total: "total", rowHeight: "rowHeight", stickyRowHeight: "stickyRowHeight", detailRowHeight: "detailRowHeight", take: "take", skip: "skip", columns: "columns", detailTemplate: "detailTemplate", noRecordsTemplate: "noRecordsTemplate", selectable: "selectable", groupable: "groupable", filterable: "filterable", rowClass: "rowClass", rowSticky: "rowSticky", loading: "loading", trackBy: "trackBy", virtualColumns: "virtualColumns", isVirtual: "isVirtual", cellLoadingTemplate: "cellLoadingTemplate", loadingTemplate: "loadingTemplate", sort: "sort" }, outputs: { contentScroll: "contentScroll", pageChange: "pageChange", scrollBottom: "scrollBottom" }, host: { properties: { "class.k-grid-container": "this.hostClass", "attr.role": "this.hostRole" } }, providers: [
567
568
  {
568
569
  provide: SCROLLER_FACTORY_TOKEN,
569
570
  useValue: DEFAULT_SCROLLER_FACTORY
@@ -585,7 +586,8 @@ ListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
585
586
  role="presentation"
586
587
  [groups]="groups"
587
588
  [columns]="$any(lockedLeafColumns)"
588
- [detailTemplate]="detailTemplate">
589
+ [detailTemplate]="detailTemplate"
590
+ [sort]="sort">
589
591
  </colgroup>
590
592
  <tbody kendoGridTableBody
591
593
  role="presentation"
@@ -624,7 +626,8 @@ ListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
624
626
  role="presentation"
625
627
  [groups]="isLocked ? [] : groups"
626
628
  [columns]="$any(nonLockedColumnsToRender)"
627
- [detailTemplate]="detailTemplate">
629
+ [detailTemplate]="detailTemplate"
630
+ [sort]="sort">
628
631
  </colgroup>
629
632
  <tbody kendoGridTableBody
630
633
  role="presentation"
@@ -660,7 +663,7 @@ ListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
660
663
  <div [style.width.px]="totalWidth"></div>
661
664
  </div>
662
665
  </div>
663
- `, isInline: true, components: [{ type: i15.ColGroupComponent, selector: "[kendoGridColGroup]", inputs: ["columns", "groups", "detailTemplate"] }, { type: i16.TableBodyComponent, selector: "[kendoGridTableBody]", inputs: ["columns", "allColumns", "groups", "detailTemplate", "noRecordsTemplate", "data", "skip", "selectable", "filterable", "noRecordsText", "isLocked", "isLoading", "isVirtual", "cellLoadingTemplate", "skipGroupDecoration", "showGroupFooters", "lockedColumnsCount", "totalColumnsCount", "virtualColumns", "trackBy", "rowSticky", "rowClass"] }, { type: i17.ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }], directives: [{ type: i18.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i17.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { type: i19.TableDirective, selector: "table", inputs: ["locked", "virtualColumns"] }, { type: i20.ResizableContainerDirective, selector: "[kendoGridResizableContainer]", inputs: ["lockedWidth", "kendoGridResizableContainer"] }] });
666
+ `, isInline: true, components: [{ type: i15.ColGroupComponent, selector: "[kendoGridColGroup]", inputs: ["columns", "groups", "detailTemplate", "sort"] }, { type: i16.TableBodyComponent, selector: "[kendoGridTableBody]", inputs: ["columns", "allColumns", "groups", "detailTemplate", "noRecordsTemplate", "data", "skip", "selectable", "filterable", "noRecordsText", "isLocked", "isLoading", "isVirtual", "cellLoadingTemplate", "skipGroupDecoration", "showGroupFooters", "lockedColumnsCount", "totalColumnsCount", "virtualColumns", "trackBy", "rowSticky", "rowClass"] }, { type: i17.ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }], directives: [{ type: i18.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i17.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { type: i19.TableDirective, selector: "table", inputs: ["locked", "virtualColumns"] }, { type: i20.ResizableContainerDirective, selector: "[kendoGridResizableContainer]", inputs: ["lockedWidth", "kendoGridResizableContainer"] }] });
664
667
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ListComponent, decorators: [{
665
668
  type: Component,
666
669
  args: [{
@@ -688,7 +691,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
688
691
  role="presentation"
689
692
  [groups]="groups"
690
693
  [columns]="$any(lockedLeafColumns)"
691
- [detailTemplate]="detailTemplate">
694
+ [detailTemplate]="detailTemplate"
695
+ [sort]="sort">
692
696
  </colgroup>
693
697
  <tbody kendoGridTableBody
694
698
  role="presentation"
@@ -727,7 +731,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
727
731
  role="presentation"
728
732
  [groups]="isLocked ? [] : groups"
729
733
  [columns]="$any(nonLockedColumnsToRender)"
730
- [detailTemplate]="detailTemplate">
734
+ [detailTemplate]="detailTemplate"
735
+ [sort]="sort">
731
736
  </colgroup>
732
737
  <tbody kendoGridTableBody
733
738
  role="presentation"
@@ -818,6 +823,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
818
823
  type: Input
819
824
  }], loadingTemplate: [{
820
825
  type: Input
826
+ }], sort: [{
827
+ type: Input
821
828
  }], contentScroll: [{
822
829
  type: Output
823
830
  }], pageChange: [{