@progress/kendo-angular-grid 7.3.0-dev.202208190713 → 7.3.0-dev.202209071125

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.
@@ -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()"
@@ -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: 1660893095,
12
+ publishDate: 1662549819,
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: [{
@@ -361,7 +361,7 @@ export class TableBodyComponent {
361
361
  TableBodyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TableBodyComponent, deps: [{ token: i1.DetailsService }, { token: i2.GroupsService }, { token: i3.ChangeNotificationService }, { token: i4.EditService }, { token: i5.LocalizationService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i6.DomEventsService }, { token: i7.SelectionService }, { token: i8.CellSelectionService }, { token: i9.ColumnInfoService }, { token: i10.NavigationService }], target: i0.ɵɵFactoryTarget.Component });
362
362
  TableBodyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: TableBodyComponent, selector: "[kendoGridTableBody]", inputs: { columns: "columns", allColumns: "allColumns", groups: "groups", detailTemplate: "detailTemplate", noRecordsTemplate: "noRecordsTemplate", data: "data", skip: "skip", selectable: "selectable", filterable: "filterable", noRecordsText: "noRecordsText", isLocked: "isLocked", isLoading: "isLoading", isVirtual: "isVirtual", cellLoadingTemplate: "cellLoadingTemplate", skipGroupDecoration: "skipGroupDecoration", showGroupFooters: "showGroupFooters", lockedColumnsCount: "lockedColumnsCount", totalColumnsCount: "totalColumnsCount", virtualColumns: "virtualColumns", trackBy: "trackBy", rowSticky: "rowSticky", rowClass: "rowClass" }, usesOnChanges: true, ngImport: i0, template: `
363
363
  <ng-container *ngIf="editService.hasNewItem">
364
- <tr class="k-grid-add-row k-grid-edit-row"
364
+ <tr class="k-grid-add-row k-grid-edit-row k-master-row"
365
365
  kendoGridLogicalRow
366
366
  [logicalRowIndex]="addRowLogicalIndex()"
367
367
  [logicalSlaveRow]="lockedColumnsCount > 0"
@@ -442,7 +442,7 @@ TableBodyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ver
442
442
  [class.k-grid-row-sticky]="rowSticky ? rowSticky({ dataItem: item.data, index: $any(item).index }) : false"
443
443
  [ngClass]="rowClass({ dataItem: item.data, index: $any(item).index })"
444
444
  [class.k-alt]="isOdd(item)"
445
- [class.k-master-row]="detailTemplate?.templateRef"
445
+ [class.k-master-row]="true"
446
446
  [class.k-grid-edit-row]="isEditingRow($any(item).index)"
447
447
  [attr.data-kendo-grid-item-index]="$any(item).index"
448
448
  [class.k-selected]="isSelectable() && isRowSelected(item)">
@@ -580,7 +580,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
580
580
  selector: '[kendoGridTableBody]',
581
581
  template: `
582
582
  <ng-container *ngIf="editService.hasNewItem">
583
- <tr class="k-grid-add-row k-grid-edit-row"
583
+ <tr class="k-grid-add-row k-grid-edit-row k-master-row"
584
584
  kendoGridLogicalRow
585
585
  [logicalRowIndex]="addRowLogicalIndex()"
586
586
  [logicalSlaveRow]="lockedColumnsCount > 0"
@@ -661,7 +661,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
661
661
  [class.k-grid-row-sticky]="rowSticky ? rowSticky({ dataItem: item.data, index: $any(item).index }) : false"
662
662
  [ngClass]="rowClass({ dataItem: item.data, index: $any(item).index })"
663
663
  [class.k-alt]="isOdd(item)"
664
- [class.k-master-row]="detailTemplate?.templateRef"
664
+ [class.k-master-row]="true"
665
665
  [class.k-grid-edit-row]="isEditingRow($any(item).index)"
666
666
  [attr.data-kendo-grid-item-index]="$any(item).index"
667
667
  [class.k-selected]="isSelectable() && isRowSelected(item)">