@progress/kendo-angular-grid 23.4.0 → 24.0.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.
@@ -11,11 +11,11 @@ export { BrowserSupportService, ScrollbarService } from '@progress/kendo-angular
11
11
  import * as i1 from '@angular/platform-browser';
12
12
  import * as i1$1 from '@progress/kendo-angular-icons';
13
13
  import { IconWrapperComponent, IconsService, KENDO_ICONS } from '@progress/kendo-angular-icons';
14
- import { plusIcon, cancelIcon, lockIcon, unlockIcon, caretAltDownIcon, caretAltRightIcon, caretAltLeftIcon, arrowLeftIcon, arrowRightIcon, sortDescSmallIcon, sortAscSmallIcon, filterClearIcon, filterIcon, searchIcon, checkIcon, arrowRotateCcwIcon, columnsIcon, sparklesIcon, fileCsvIcon, filePdfIcon, fileExcelIcon, trashIcon, saveIcon, pencilIcon, chevronUpIcon, chevronDownIcon, chevronRightIcon, displayInlineFlexIcon, maxWidthIcon, stickIcon, unstickIcon, setColumnPositionIcon, slidersIcon, moreVerticalIcon, reorderIcon, minusIcon, insertMiddleIcon, xIcon, xCircleIcon, plusCircleIcon, chevronLeftIcon, undoIcon, redoIcon, arrowsSwapIcon, groupIcon, tableWizardIcon, clockArrowRotateIcon, fileClockOutlineIcon, zoomSparkleIcon, arrowUpOutlineIcon, stopSmIcon, lightbulbOutlineIcon } from '@progress/kendo-svg-icons';
14
+ import { plusIcon, cancelIcon, lockIcon, unlockIcon, caretAltDownIcon, caretAltRightIcon, caretAltLeftIcon, arrowLeftIcon, arrowRightIcon, sortDescSmallIcon, sortAscSmallIcon, filterClearIcon, filterIcon, searchIcon, checkIcon, arrowRotateCcwIcon, columnsIcon, sparklesIcon, fileCsvIcon, filePdfIcon, fileExcelIcon, trashIcon, saveIcon, pencilIcon, chevronUpIcon, chevronDownIcon, chevronRightIcon, displayInlineFlexIcon, maxWidthIcon, stickIcon, unstickIcon, setColumnPositionIcon, slidersIcon, moreVerticalIcon, unpinOutlineIcon, pinOutlineBottomIcon, pinOutlineTopIcon, reorderIcon, pinOutlineIcon, minusIcon, insertMiddleIcon, xIcon, xCircleIcon, plusCircleIcon, chevronLeftIcon, undoIcon, redoIcon, arrowsSwapIcon, groupIcon, tableWizardIcon, clockArrowRotateIcon, fileClockOutlineIcon, zoomSparkleIcon, arrowUpOutlineIcon, stopSmIcon, lightbulbOutlineIcon } from '@progress/kendo-svg-icons';
15
15
  import { switchMap, take, map, filter, takeUntil, switchMapTo, delay, tap, throttleTime, debounceTime, distinctUntilChanged, skip, bufferCount, flatMap } from 'rxjs/operators';
16
16
  import * as i1$2 from '@progress/kendo-angular-l10n';
17
17
  import { ComponentMessages, LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';
18
- import * as i56 from '@progress/kendo-angular-pager';
18
+ import * as i57 from '@progress/kendo-angular-pager';
19
19
  import { PagerTemplateDirective, PagerContextService, PagerNavigationService, KENDO_PAGER } from '@progress/kendo-angular-pager';
20
20
  import { orderBy, isCompositeFilterDescriptor, filterBy, groupBy, process } from '@progress/kendo-data-query';
21
21
  import { NgTemplateOutlet, NgClass, NgStyle, KeyValuePipe } from '@angular/common';
@@ -36,7 +36,7 @@ import * as i4 from '@progress/kendo-angular-inputs';
36
36
  import { TextBoxComponent, NumericTextBoxComponent, NumericTextBoxCustomMessagesComponent, RadioButtonComponent, CheckBoxComponent, TextBoxPrefixTemplateDirective, KENDO_FORMFIELD, KENDO_TEXTBOX, KENDO_NUMERICTEXTBOX, KENDO_CHECKBOX } from '@progress/kendo-angular-inputs';
37
37
  import * as i5 from '@progress/kendo-angular-dateinputs';
38
38
  import { DatePickerComponent, DatePickerCustomMessagesComponent, KENDO_DATEPICKER, CalendarDOMService, CenturyViewService, DecadeViewService, MonthViewService, YearViewService, NavigationService as NavigationService$2 } from '@progress/kendo-angular-dateinputs';
39
- import * as i57 from '@progress/kendo-angular-toolbar';
39
+ import * as i58 from '@progress/kendo-angular-toolbar';
40
40
  import { ToolBarToolComponent, KENDO_TOOLBAR } from '@progress/kendo-angular-toolbar';
41
41
  import { trigger, state, style, transition, animate } from '@angular/animations';
42
42
  import { TabStripComponent, TabStripTabComponent, TabTitleDirective, TabContentDirective } from '@progress/kendo-angular-layout';
@@ -45,6 +45,7 @@ import * as i5$1 from '@progress/kendo-angular-excel-export';
45
45
  import { workbookOptions, toDataURL, ColumnBase as ColumnBase$1, ColumnComponent as ColumnComponent$1, ColumnGroupComponent as ColumnGroupComponent$1, FooterTemplateDirective as FooterTemplateDirective$1, GroupFooterTemplateDirective as GroupFooterTemplateDirective$1, GroupHeaderColumnTemplateDirective as GroupHeaderColumnTemplateDirective$1, GroupHeaderTemplateDirective as GroupHeaderTemplateDirective$1 } from '@progress/kendo-angular-excel-export';
46
46
  import { toCSV } from '@progress/kendo-csv';
47
47
  import { PDFExportMarginComponent, PDFExportTemplateDirective, PDFExportComponent } from '@progress/kendo-angular-pdf-export';
48
+ import { ContextMenuComponent } from '@progress/kendo-angular-menu';
48
49
  import { validatePackage } from '@progress/kendo-licensing';
49
50
  import { ActionSheetComponent, ActionSheetViewComponent, ActionSheetHeaderTemplateDirective, ActionSheetContentTemplateDirective, ActionSheetFooterTemplateDirective } from '@progress/kendo-angular-navigation';
50
51
  import * as i3 from '@progress/kendo-angular-label';
@@ -803,6 +804,10 @@ class DefaultFocusableElement {
803
804
  * @hidden
804
805
  */
805
806
  const CELL_CONTEXT = new InjectionToken('grid-cell-context');
807
+ /**
808
+ * @hidden
809
+ */
810
+ const IS_PIN_CONTAINER = new InjectionToken('grid-is-pin-container');
806
811
  /**
807
812
  * @hidden
808
813
  */
@@ -1568,6 +1573,7 @@ class EditService {
1568
1573
  changes = new EventEmitter();
1569
1574
  changed;
1570
1575
  editedIndices = [];
1576
+ editZone = 'body';
1571
1577
  newItemGroup;
1572
1578
  keepEditCell = false;
1573
1579
  keepCellTimeout;
@@ -2234,6 +2240,10 @@ const isCheckboxColumn = column => column?.isCheckboxColumn;
2234
2240
  * @hidden
2235
2241
  */
2236
2242
  const isRowReorderColumn = column => column?.isRowReorderColumn;
2243
+ /**
2244
+ * @hidden
2245
+ */
2246
+ const isRowPinColumn = column => column?.isRowPinColumn;
2237
2247
  const isColumnContainer = column => column?.isColumnGroup || isSpanColumn(column);
2238
2248
  /**
2239
2249
  * The base class for the column components of the Grid.
@@ -4529,12 +4539,12 @@ class NavigationService {
4529
4539
  }
4530
4540
  }
4531
4541
  }
4532
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: NavigationService, deps: [{ token: i0.NgZone }, { token: DomEventsService }, { token: i56.PagerContextService }, { token: ScrollRequestService }, { token: GroupsService }, { token: DetailsService }, { token: FocusRoot }, { token: EditService }, { token: i0.ChangeDetectorRef }, { token: ContextService }, { token: ColumnResizingService }, { token: FocusableDirective, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
4542
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: NavigationService, deps: [{ token: i0.NgZone }, { token: DomEventsService }, { token: i57.PagerContextService }, { token: ScrollRequestService }, { token: GroupsService }, { token: DetailsService }, { token: FocusRoot }, { token: EditService }, { token: i0.ChangeDetectorRef }, { token: ContextService }, { token: ColumnResizingService }, { token: FocusableDirective, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
4533
4543
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: NavigationService });
4534
4544
  }
4535
4545
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: NavigationService, decorators: [{
4536
4546
  type: Injectable
4537
- }], ctorParameters: () => [{ type: i0.NgZone }, { type: DomEventsService }, { type: i56.PagerContextService }, { type: ScrollRequestService }, { type: GroupsService }, { type: DetailsService }, { type: FocusRoot }, { type: EditService }, { type: i0.ChangeDetectorRef }, { type: ContextService }, { type: ColumnResizingService }, { type: FocusableDirective, decorators: [{
4547
+ }], ctorParameters: () => [{ type: i0.NgZone }, { type: DomEventsService }, { type: i57.PagerContextService }, { type: ScrollRequestService }, { type: GroupsService }, { type: DetailsService }, { type: FocusRoot }, { type: EditService }, { type: i0.ChangeDetectorRef }, { type: ContextService }, { type: ColumnResizingService }, { type: FocusableDirective, decorators: [{
4538
4548
  type: Optional
4539
4549
  }] }] });
4540
4550
 
@@ -5778,7 +5788,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
5778
5788
  * @hidden
5779
5789
  */
5780
5790
  class GridTableDirective {
5781
- wrapper;
5782
5791
  hostClass = true;
5783
5792
  get sizeSmallClass() {
5784
5793
  return this.size === 'small';
@@ -5793,10 +5802,7 @@ class GridTableDirective {
5793
5802
  return this._size;
5794
5803
  }
5795
5804
  _size;
5796
- constructor(wrapper) {
5797
- this.wrapper = wrapper;
5798
- }
5799
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: GridTableDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
5805
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: GridTableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5800
5806
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: GridTableDirective, isStandalone: true, selector: "[kendoGridTable]", inputs: { size: "size" }, host: { properties: { "class.k-table": "this.hostClass", "class.k-table-sm": "this.sizeSmallClass", "class.k-table-md": "this.sizeMediumClass" } }, ngImport: i0 });
5801
5807
  }
5802
5808
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: GridTableDirective, decorators: [{
@@ -5805,7 +5811,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
5805
5811
  selector: '[kendoGridTable]',
5806
5812
  standalone: true
5807
5813
  }]
5808
- }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { hostClass: [{
5814
+ }], propDecorators: { hostClass: [{
5809
5815
  type: HostBinding,
5810
5816
  args: ['class.k-table']
5811
5817
  }], sizeSmallClass: [{
@@ -8457,14 +8463,13 @@ class ScrollSyncService {
8457
8463
  elements = [];
8458
8464
  source;
8459
8465
  subscriptions = new Subscription();
8460
- headerSubscription = new Subscription();
8461
- bodySubscription = new Subscription();
8466
+ elementSubscriptions = new Map();
8462
8467
  constructor(ngZone) {
8463
8468
  this.ngZone = ngZone;
8464
8469
  this.subscriptions.add(this.changes.subscribe(args => this.scrollLeft(args)));
8465
8470
  }
8466
8471
  registerEmitter(el, sourceType) {
8467
- this.unregister(sourceType);
8472
+ this.unregister(el);
8468
8473
  this.elements.push({ element: el, sourceType });
8469
8474
  if (sourceType === "body" || sourceType === "header") {
8470
8475
  this.ngZone.runOutsideAngular(() => {
@@ -8476,12 +8481,7 @@ class ScrollSyncService {
8476
8481
  .subscribe((x) => this.changes.next(x));
8477
8482
  subscription.add(obs.pipe(filter(x => this.source && this.source !== x.sourceType))
8478
8483
  .subscribe(() => this.source = undefined));
8479
- if (sourceType === "body") {
8480
- this.bodySubscription.add(subscription);
8481
- }
8482
- else {
8483
- this.headerSubscription.add(subscription);
8484
- }
8484
+ this.elementSubscriptions.set(el, subscription);
8485
8485
  });
8486
8486
  }
8487
8487
  }
@@ -8490,8 +8490,8 @@ class ScrollSyncService {
8490
8490
  */
8491
8491
  destroy() {
8492
8492
  this.subscriptions.unsubscribe();
8493
- this.headerSubscription.unsubscribe();
8494
- this.bodySubscription.unsubscribe();
8493
+ this.elementSubscriptions.forEach(sub => sub.unsubscribe());
8494
+ this.elementSubscriptions.clear();
8495
8495
  }
8496
8496
  scrollLeft({ scrollLeft, sourceType }) {
8497
8497
  this.ngZone.runOutsideAngular(() => {
@@ -8500,16 +8500,13 @@ class ScrollSyncService {
8500
8500
  .forEach(({ element }) => element.scrollLeft = scrollLeft);
8501
8501
  });
8502
8502
  }
8503
- unregister(sourceType) {
8504
- const index = this.elements.findIndex(x => x.sourceType === sourceType);
8503
+ unregister(el) {
8504
+ const index = this.elements.findIndex(x => x.element === el);
8505
8505
  if (index > -1) {
8506
- if (sourceType === "header") {
8507
- this.headerSubscription.unsubscribe();
8508
- this.headerSubscription = new Subscription();
8509
- }
8510
- else if (sourceType === "body") {
8511
- this.bodySubscription.unsubscribe();
8512
- this.bodySubscription = new Subscription();
8506
+ const sub = this.elementSubscriptions.get(el);
8507
+ if (sub) {
8508
+ sub.unsubscribe();
8509
+ this.elementSubscriptions.delete(el);
8513
8510
  }
8514
8511
  this.elements.splice(index, 1);
8515
8512
  }
@@ -13964,13 +13961,13 @@ class ToolbarToolBase {
13964
13961
  get buttonElement() {
13965
13962
  return this.host.getButton();
13966
13963
  }
13967
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ToolbarToolBase, deps: [{ token: i57.ToolBarButtonComponent }, { token: 'command' }, { token: ContextService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
13964
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ToolbarToolBase, deps: [{ token: i58.ToolBarButtonComponent }, { token: 'command' }, { token: ContextService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
13968
13965
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: ToolbarToolBase, isStandalone: true, ngImport: i0 });
13969
13966
  }
13970
13967
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ToolbarToolBase, decorators: [{
13971
13968
  type: Directive,
13972
13969
  args: [{}]
13973
- }], ctorParameters: () => [{ type: i57.ToolBarButtonComponent }, { type: undefined, decorators: [{
13970
+ }], ctorParameters: () => [{ type: i58.ToolBarButtonComponent }, { type: undefined, decorators: [{
13974
13971
  type: Inject,
13975
13972
  args: ['command']
13976
13973
  }] }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
@@ -14172,7 +14169,7 @@ class ColumnChooserToolbarDirective extends ToolbarToolBase {
14172
14169
  this.host.selected = false;
14173
14170
  focusAnchor && this.buttonElement?.focus({ preventScroll: true });
14174
14171
  }
14175
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ColumnChooserToolbarDirective, deps: [{ token: i0.Renderer2 }, { token: i2.PopupService }, { token: i57.ToolBarButtonComponent }, { token: ContextService }, { token: i0.NgZone }, { token: i57.RefreshService }, { token: AdaptiveGridService }, { token: ColumnInfoService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
14172
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ColumnChooserToolbarDirective, deps: [{ token: i0.Renderer2 }, { token: i2.PopupService }, { token: i58.ToolBarButtonComponent }, { token: ContextService }, { token: i0.NgZone }, { token: i58.RefreshService }, { token: AdaptiveGridService }, { token: ColumnInfoService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
14176
14173
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: ColumnChooserToolbarDirective, isStandalone: true, selector: "[kendoGridColumnChooserTool]", inputs: { autoSync: "autoSync", allowHideAll: "allowHideAll", filterable: "filterable", showSelectAll: "showSelectAll" }, usesInheritance: true, ngImport: i0 });
14177
14174
  }
14178
14175
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ColumnChooserToolbarDirective, decorators: [{
@@ -14181,7 +14178,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
14181
14178
  selector: '[kendoGridColumnChooserTool]',
14182
14179
  standalone: true
14183
14180
  }]
14184
- }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i2.PopupService }, { type: i57.ToolBarButtonComponent }, { type: ContextService }, { type: i0.NgZone }, { type: i57.RefreshService }, { type: AdaptiveGridService }, { type: ColumnInfoService }, { type: i0.ChangeDetectorRef }], propDecorators: { autoSync: [{
14181
+ }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i2.PopupService }, { type: i58.ToolBarButtonComponent }, { type: ContextService }, { type: i0.NgZone }, { type: i58.RefreshService }, { type: AdaptiveGridService }, { type: ColumnInfoService }, { type: i0.ChangeDetectorRef }], propDecorators: { autoSync: [{
14185
14182
  type: Input
14186
14183
  }], allowHideAll: [{
14187
14184
  type: Input
@@ -17539,7 +17536,7 @@ class CSVCommandToolbarDirective extends ToolbarToolBase {
17539
17536
  e.preventDefault();
17540
17537
  this.csvService.exportClick.emit();
17541
17538
  }
17542
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CSVCommandToolbarDirective, deps: [{ token: CSVService }, { token: i57.ToolBarButtonComponent }, { token: ContextService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
17539
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CSVCommandToolbarDirective, deps: [{ token: CSVService }, { token: i58.ToolBarButtonComponent }, { token: ContextService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
17543
17540
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: CSVCommandToolbarDirective, isStandalone: true, selector: "[kendoGridCSVTool]", usesInheritance: true, ngImport: i0 });
17544
17541
  }
17545
17542
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CSVCommandToolbarDirective, decorators: [{
@@ -17548,7 +17545,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
17548
17545
  selector: '[kendoGridCSVTool]',
17549
17546
  standalone: true
17550
17547
  }]
17551
- }], ctorParameters: () => [{ type: CSVService }, { type: i57.ToolBarButtonComponent }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
17548
+ }], ctorParameters: () => [{ type: CSVService }, { type: i58.ToolBarButtonComponent }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
17552
17549
 
17553
17550
  /**
17554
17551
  * @hidden
@@ -19309,7 +19306,7 @@ class SelectionService {
19309
19306
  const iterator = this.getIterator();
19310
19307
  let next = iterator.next();
19311
19308
  while (!next.done) {
19312
- if (next.value && next.value.type === "data") {
19309
+ if (next.value?.type === "data") {
19313
19310
  const idx = next.value.index;
19314
19311
  const rowArgs = { dataItem: next.value.data, index: idx };
19315
19312
  if ((idx < start || idx > end) && this.isSelected(idx)) {
@@ -19508,7 +19505,7 @@ class CellSelectionService {
19508
19505
  const iterator = this.getIterator();
19509
19506
  let item = iterator.next();
19510
19507
  while (!item.done) {
19511
- if (item.value && item.value.type === "data") {
19508
+ if (item.value?.type === "data") {
19512
19509
  const rowArgs = {
19513
19510
  dataItem: item.value.data,
19514
19511
  index: item.value.index
@@ -19662,7 +19659,7 @@ class CellSelectionService {
19662
19659
  const iterator = this.getIterator();
19663
19660
  let next = iterator.next();
19664
19661
  while (!next.done) {
19665
- if (next.value && next.value.type === "data") {
19662
+ if (next.value?.type === "data") {
19666
19663
  const idx = next.value.index;
19667
19664
  const data = next.value.data;
19668
19665
  const rowArgs = {
@@ -20524,6 +20521,9 @@ class HeaderComponent {
20524
20521
  @if ($any(column).isCommandColumn && !column.title && !column.headerTemplateRef) {
20525
20522
  <span class="k-sr-only">{{messageFor('commandColumnHeaderLabel')}}</span>
20526
20523
  }
20524
+ @if ($any(column).isRowPinColumn && !column.title && !column.headerTemplateRef) {
20525
+ <span class="k-sr-only">{{messageFor('pinColumnHeaderLabel')}}</span>
20526
+ }
20527
20527
  @if (resizable) {
20528
20528
  <span kendoGridColumnHandle
20529
20529
  kendoDraggable
@@ -20783,6 +20783,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
20783
20783
  @if ($any(column).isCommandColumn && !column.title && !column.headerTemplateRef) {
20784
20784
  <span class="k-sr-only">{{messageFor('commandColumnHeaderLabel')}}</span>
20785
20785
  }
20786
+ @if ($any(column).isRowPinColumn && !column.title && !column.headerTemplateRef) {
20787
+ <span class="k-sr-only">{{messageFor('pinColumnHeaderLabel')}}</span>
20788
+ }
20786
20789
  @if (resizable) {
20787
20790
  <span kendoGridColumnHandle
20788
20791
  kendoDraggable
@@ -21562,6 +21565,87 @@ const IGNORE_TARGET_CLASSSES = 'k-icon k-svg-icon';
21562
21565
  */
21563
21566
  const IGNORE_CONTAINER_CLASSES = 'k-grid k-grid-ignore-click';
21564
21567
 
21568
+ /**
21569
+ * @hidden
21570
+ */
21571
+ class RowPinService {
21572
+ ctx;
21573
+ localization;
21574
+ changes = new EventEmitter();
21575
+ constructor(ctx, localization) {
21576
+ this.ctx = ctx;
21577
+ this.localization = localization;
21578
+ }
21579
+ handleContextMenuAction(ev) {
21580
+ const { menuItem, dataItem } = ev;
21581
+ const pinAction = menuItem?.action;
21582
+ let pinnedTopRows = this.ctx.grid.pinnedTopRows || [];
21583
+ let pinnedBottomRows = this.ctx.grid.pinnedBottomRows || [];
21584
+ switch (pinAction) {
21585
+ case 'pinToTop': {
21586
+ pinnedTopRows = [...pinnedTopRows, dataItem];
21587
+ pinnedBottomRows = pinnedBottomRows.filter(r => r !== dataItem);
21588
+ break;
21589
+ }
21590
+ case 'pinToBottom': {
21591
+ pinnedBottomRows = [...pinnedBottomRows, dataItem];
21592
+ pinnedTopRows = pinnedTopRows.filter(r => r !== dataItem);
21593
+ break;
21594
+ }
21595
+ case 'unpin': {
21596
+ pinnedTopRows = pinnedTopRows.filter(r => r !== dataItem);
21597
+ pinnedBottomRows = pinnedBottomRows.filter(r => r !== dataItem);
21598
+ break;
21599
+ }
21600
+ }
21601
+ const eventArgs = {
21602
+ pinnedTopRows,
21603
+ pinnedBottomRows,
21604
+ dataItem
21605
+ };
21606
+ this.changes.emit(eventArgs);
21607
+ }
21608
+ updatePinnedRows(ev) {
21609
+ const { pinnedTopRows, pinnedBottomRows } = ev;
21610
+ this.ctx.grid.pinnedTopRows = pinnedTopRows;
21611
+ this.ctx.grid.pinnedBottomRows = pinnedBottomRows;
21612
+ }
21613
+ get pinnedTopRowMenuItems() {
21614
+ return [
21615
+ { text: this.localization.get('pinMenuUnpinText'), icon: 'unpin-outline', svgIcon: unpinOutlineIcon, action: 'unpin' },
21616
+ { text: this.localization.get('pinMenuPinToBottomText'), icon: 'pin-outline-bottom', svgIcon: pinOutlineBottomIcon, action: 'pinToBottom' }
21617
+ ];
21618
+ }
21619
+ get pinnedBottomRowMenuItems() {
21620
+ return [
21621
+ { text: this.localization.get('pinMenuUnpinText'), icon: 'unpin-outline', svgIcon: unpinOutlineIcon, action: 'unpin' },
21622
+ { text: this.localization.get('pinMenuPinToTopText'), icon: 'pin-outline-top', svgIcon: pinOutlineTopIcon, action: 'pinToTop' }
21623
+ ];
21624
+ }
21625
+ get unpinnedRowMenuItems() {
21626
+ return [
21627
+ { text: this.localization.get('pinMenuPinToTopText'), icon: 'pin-outline-top', svgIcon: pinOutlineTopIcon, action: 'pinToTop' },
21628
+ { text: this.localization.get('pinMenuPinToBottomText'), icon: 'pin-outline-bottom', svgIcon: pinOutlineBottomIcon, action: 'pinToBottom' }
21629
+ ];
21630
+ }
21631
+ get unpinRowMenuItem() {
21632
+ return { text: this.localization.get('pinMenuUnpinText'), icon: 'unpin-outline', svgIcon: unpinOutlineIcon, action: 'unpin' };
21633
+ }
21634
+ get pinToTopMenuItem() {
21635
+ return { text: this.localization.get('pinMenuPinToTopText'), icon: 'pin-outline-top', svgIcon: pinOutlineTopIcon, action: 'pinToTop' };
21636
+ }
21637
+ get pinToBottomMenuItem() {
21638
+ return { text: this.localization.get('pinMenuPinToBottomText'), icon: 'pin-outline-bottom', svgIcon: pinOutlineBottomIcon, action: 'pinToBottom' };
21639
+ }
21640
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: RowPinService, deps: [{ token: ContextService }, { token: i1$2.LocalizationService }], target: i0.ɵɵFactoryTarget.Injectable });
21641
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: RowPinService });
21642
+ }
21643
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: RowPinService, decorators: [{
21644
+ type: Injectable
21645
+ }], ctorParameters: () => [{ type: ContextService }, { type: i1$2.LocalizationService }], propDecorators: { changes: [{
21646
+ type: Output
21647
+ }] } });
21648
+
21565
21649
  /**
21566
21650
  * @hidden
21567
21651
  */
@@ -21571,7 +21655,9 @@ class CellComponent {
21571
21655
  ctx;
21572
21656
  detailsService;
21573
21657
  localization;
21658
+ rowPinService;
21574
21659
  cellContext;
21660
+ inPinContainer;
21575
21661
  get commandCellClass() {
21576
21662
  return this.isCommand(this.column);
21577
21663
  }
@@ -21581,6 +21667,8 @@ class CellComponent {
21581
21667
  get dragRowHandleLabel() {
21582
21668
  return isRowReorderColumn(this.column) ? this.ctx.localization.get('dragRowHandleLabel') : undefined;
21583
21669
  }
21670
+ pinContextMenu;
21671
+ pinContextMenuTarget;
21584
21672
  column;
21585
21673
  columns;
21586
21674
  columnIndex;
@@ -21599,8 +21687,59 @@ class CellComponent {
21599
21687
  }
21600
21688
  dataItem;
21601
21689
  reorderIcon = reorderIcon;
21690
+ pinOutlineIcon = pinOutlineIcon;
21691
+ unpinOutlineIcon = unpinOutlineIcon;
21602
21692
  minusIcon = minusIcon;
21603
21693
  plusIcon = plusIcon;
21694
+ onPinIconClick = () => {
21695
+ const gridPinnable = this.ctx.grid?.pinnable;
21696
+ if (!gridPinnable) {
21697
+ return;
21698
+ }
21699
+ if (gridPinnable === true || gridPinnable === 'both') {
21700
+ this.pinContextMenu.show(this.pinContextMenuTarget.nativeElement);
21701
+ }
21702
+ else {
21703
+ let menuItem;
21704
+ if ((this.isRowPinnedTop && gridPinnable === 'top') || (this.isRowPinnedBottom && gridPinnable === 'bottom')) {
21705
+ menuItem = this.rowPinService?.unpinRowMenuItem;
21706
+ }
21707
+ else if (!this.isRowPinnedTop && !this.isRowPinnedBottom) {
21708
+ if (gridPinnable === 'top') {
21709
+ menuItem = this.rowPinService?.pinToTopMenuItem;
21710
+ }
21711
+ else {
21712
+ menuItem = this.rowPinService?.pinToBottomMenuItem;
21713
+ }
21714
+ }
21715
+ else {
21716
+ this.pinContextMenu.show(this.pinContextMenuTarget.nativeElement);
21717
+ }
21718
+ const args = {
21719
+ menuItem,
21720
+ dataItem: this.dataItem
21721
+ };
21722
+ this.rowPinService?.handleContextMenuAction(args);
21723
+ }
21724
+ };
21725
+ get pinMenuItems() {
21726
+ if (this.isRowPinnedTop) {
21727
+ return this.rowPinService?.pinnedTopRowMenuItems;
21728
+ }
21729
+ else if (this.isRowPinnedBottom) {
21730
+ return this.rowPinService?.pinnedBottomRowMenuItems;
21731
+ }
21732
+ else {
21733
+ return this.rowPinService?.unpinnedRowMenuItems;
21734
+ }
21735
+ }
21736
+ onContextMenuSelect(ev) {
21737
+ const eventArgs = {
21738
+ menuItem: ev.item,
21739
+ dataItem: this.dataItem
21740
+ };
21741
+ this.rowPinService?.handleContextMenuAction(eventArgs);
21742
+ }
21604
21743
  detailButtonIconName(viewItem) {
21605
21744
  return viewItem.isExpanded ? 'minus' : 'plus';
21606
21745
  }
@@ -21633,6 +21772,9 @@ class CellComponent {
21633
21772
  if (!(this.editService.isEditing() || this.isNew) || !this.isColumnEditable(column)) {
21634
21773
  return false;
21635
21774
  }
21775
+ if (!this.isNew && this.editService.editZone !== (this.inPinContainer ? 'pinned' : 'body')) {
21776
+ return false;
21777
+ }
21636
21778
  const editContext = this.editService.columnContext(this.rowIndex, currentColumn);
21637
21779
  return this.isFieldEditable(editContext, currentColumn);
21638
21780
  }
@@ -21663,11 +21805,11 @@ class CellComponent {
21663
21805
  this._editTemplateContext.rowIndex = this.rowIndex;
21664
21806
  return this._editTemplateContext;
21665
21807
  }
21666
- get rowReorderTemplateContext() {
21667
- this._rowReorderTemplateContext.$implicit = this.dataItem;
21668
- this._rowReorderTemplateContext.columnIndex = this.columnIndex;
21669
- this._rowReorderTemplateContext.rowIndex = this.rowIndex;
21670
- return this._rowReorderTemplateContext;
21808
+ get rowTemplateContext() {
21809
+ this._rowTemplateContext.$implicit = this.dataItem;
21810
+ this._rowTemplateContext.columnIndex = this.columnIndex;
21811
+ this._rowTemplateContext.rowIndex = this.rowIndex;
21812
+ return this._rowTemplateContext;
21671
21813
  }
21672
21814
  get format() {
21673
21815
  if (isColumnComponent(this.column) && !isNullOrEmptyString(this.column.format)) {
@@ -21699,6 +21841,25 @@ class CellComponent {
21699
21841
  const currentColumn = column || this.column;
21700
21842
  return isRowReorderColumn(currentColumn) && !currentColumn.templateRef;
21701
21843
  }
21844
+ isRowPinColumn(column) {
21845
+ const currentColumn = column || this.column;
21846
+ return isRowPinColumn(currentColumn) && !currentColumn.templateRef;
21847
+ }
21848
+ get isRowPinnedTop() {
21849
+ const pinnedTopRows = this.ctx.grid?.pinnedTopRows || [];
21850
+ return pinnedTopRows.includes(this.dataItem);
21851
+ }
21852
+ get isRowPinnedBottom() {
21853
+ const pinnedBottomRows = this.ctx.grid?.pinnedBottomRows || [];
21854
+ return pinnedBottomRows.includes(this.dataItem);
21855
+ }
21856
+ get isRowPinnable() {
21857
+ const callback = this.ctx.grid?.isRowPinnable;
21858
+ if (!callback) {
21859
+ return true;
21860
+ }
21861
+ return callback({ dataItem: this.dataItem, index: this.rowIndex });
21862
+ }
21702
21863
  isRowSelectable(column) {
21703
21864
  const currentColumn = column || this.column;
21704
21865
  return currentColumn.rowSelectable(this._rowIndex);
@@ -21713,14 +21874,16 @@ class CellComponent {
21713
21874
  }
21714
21875
  _templateContext = {};
21715
21876
  _editTemplateContext = {};
21716
- _rowReorderTemplateContext = {};
21717
- constructor(editService, idService, ctx, detailsService, localization, cellContext) {
21877
+ _rowTemplateContext = {};
21878
+ constructor(editService, idService, ctx, detailsService, localization, rowPinService, cellContext, inPinContainer) {
21718
21879
  this.editService = editService;
21719
21880
  this.idService = idService;
21720
21881
  this.ctx = ctx;
21721
21882
  this.detailsService = detailsService;
21722
21883
  this.localization = localization;
21884
+ this.rowPinService = rowPinService;
21723
21885
  this.cellContext = cellContext;
21886
+ this.inPinContainer = inPinContainer;
21724
21887
  }
21725
21888
  ngDoCheck() {
21726
21889
  this.updateCellContext();
@@ -21740,117 +21903,120 @@ class CellComponent {
21740
21903
  updateCellContext() {
21741
21904
  if (this.cellContext) {
21742
21905
  this.cellContext.rowIndex = this._rowIndex;
21906
+ this.cellContext.inPinContainer = !!this.inPinContainer;
21743
21907
  }
21744
21908
  }
21745
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CellComponent, deps: [{ token: EditService }, { token: IdService }, { token: ContextService }, { token: DetailsService }, { token: i1$2.LocalizationService }, { token: CELL_CONTEXT, optional: true }], target: i0.ɵɵFactoryTarget.Component });
21746
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: CellComponent, isStandalone: true, selector: "[kendoGridCell]", inputs: { column: "column", columns: "columns", columnIndex: "columnIndex", isNew: "isNew", isLoading: "isLoading", isVirtual: "isVirtual", loadingTemplate: "loadingTemplate", detailTemplate: "detailTemplate", item: "item", rowIndex: "rowIndex", dataItem: "dataItem" }, host: { properties: { "class.k-command-cell": "this.commandCellClass", "class.k-drag-cell": "this.dragHandleCellClass", "class.k-touch-action-none": "this.dragHandleCellClass", "attr.aria-label": "this.dragRowHandleLabel" } }, ngImport: i0, template: `
21909
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CellComponent, deps: [{ token: EditService }, { token: IdService }, { token: ContextService }, { token: DetailsService }, { token: i1$2.LocalizationService }, { token: RowPinService, optional: true }, { token: CELL_CONTEXT, optional: true }, { token: IS_PIN_CONTAINER, optional: true }], target: i0.ɵɵFactoryTarget.Component });
21910
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: CellComponent, isStandalone: true, selector: "[kendoGridCell]", inputs: { column: "column", columns: "columns", columnIndex: "columnIndex", isNew: "isNew", isLoading: "isLoading", isVirtual: "isVirtual", loadingTemplate: "loadingTemplate", detailTemplate: "detailTemplate", item: "item", rowIndex: "rowIndex", dataItem: "dataItem" }, host: { properties: { "class.k-command-cell": "this.commandCellClass", "class.k-drag-cell": "this.dragHandleCellClass", "class.k-touch-action-none": "this.dragHandleCellClass", "attr.aria-label": "this.dragRowHandleLabel" } }, viewQueries: [{ propertyName: "pinContextMenu", first: true, predicate: ["pinContextMenu"], descendants: true }, { propertyName: "pinContextMenuTarget", first: true, predicate: ["target"], descendants: true, read: ElementRef }], ngImport: i0, template: `
21747
21911
  @if (isStackedLayoutMode) {
21748
21912
  <div class="k-grid-stack-row"
21749
21913
  [ngClass]="stackedRowClass"
21750
21914
  [ngStyle]="stackedRowStyle">
21751
21915
  @for (col of columns; track $index) {
21752
- <div class="k-grid-stack-cell"
21753
- [class.k-grid-stack-edit-cell]="isEdited(col)"
21754
- [class.k-drag-cell]="isRowReorderColumn(col) && !isNew"
21755
- [class.k-command-cell]="isCommand(col)"
21756
- [kendoGridFocusable]="!isCommand(col)">
21757
- <div class="k-grid-stack-header">
21758
- @if (!col.headerTemplateRef) {
21759
- {{col.displayTitle}}
21760
- } @else {
21761
- <ng-template #headerTemplate
21762
- [templateContext]="{
21763
- templateRef: col.headerTemplateRef,
21764
- columnIndex: col.leafIndex,
21765
- column: col,
21766
- $implicit: col
21767
- }">
21768
- </ng-template>
21769
- }
21770
- </div>
21771
- <div class="k-grid-stack-content">
21772
- @if (!isEdited(col)) {
21773
- @if (!col.templateRef) {
21774
- @if (isBoundColumn(col)) {{{ dataItem | valueOf: col.field: col.format}}}
21775
- @if (isCheckboxColumn(col) && !isNew) {
21776
- @if (isRowSelectable(col)) {
21777
- <kendo-checkbox
21778
- [kendoGridSelectionCheckbox]="rowIndex"
21779
- [attr.id]="selectionCheckboxId"
21780
- [inputAttributes]="{'aria-label': selectionCheckboxLabel}"
21781
- [title]="selectionCheckboxLabel">
21782
- </kendo-checkbox>
21783
- } @else {
21784
- @if (col.showDisabledCheckbox) {
21916
+ @if (!col.isRowPinColumn) {
21917
+ <div class="k-grid-stack-cell"
21918
+ [class.k-grid-stack-edit-cell]="isEdited(col)"
21919
+ [class.k-drag-cell]="isRowReorderColumn(col) && !isNew"
21920
+ [class.k-command-cell]="isCommand(col)"
21921
+ [kendoGridFocusable]="!isCommand(col)">
21922
+ <div class="k-grid-stack-header">
21923
+ @if (!col.headerTemplateRef) {
21924
+ {{col.displayTitle}}
21925
+ } @else {
21926
+ <ng-template #headerTemplate
21927
+ [templateContext]="{
21928
+ templateRef: col.headerTemplateRef,
21929
+ columnIndex: col.leafIndex,
21930
+ column: col,
21931
+ $implicit: col
21932
+ }">
21933
+ </ng-template>
21934
+ }
21935
+ </div>
21936
+ <div class="k-grid-stack-content">
21937
+ @if (!isEdited(col)) {
21938
+ @if (!col.templateRef) {
21939
+ @if (isBoundColumn(col)) {{{ dataItem | valueOf: col.field: col.format}}}
21940
+ @if (isCheckboxColumn(col) && !isNew) {
21941
+ @if (isRowSelectable(col)) {
21785
21942
  <kendo-checkbox
21786
21943
  [kendoGridSelectionCheckbox]="rowIndex"
21787
21944
  [attr.id]="selectionCheckboxId"
21788
21945
  [inputAttributes]="{'aria-label': selectionCheckboxLabel}"
21789
- [title]="selectionCheckboxLabel"
21790
- [disabled]="true"
21791
- ></kendo-checkbox>
21946
+ [title]="selectionCheckboxLabel">
21947
+ </kendo-checkbox>
21948
+ } @else {
21949
+ @if (col.showDisabledCheckbox) {
21950
+ <kendo-checkbox
21951
+ [kendoGridSelectionCheckbox]="rowIndex"
21952
+ [attr.id]="selectionCheckboxId"
21953
+ [inputAttributes]="{'aria-label': selectionCheckboxLabel}"
21954
+ [title]="selectionCheckboxLabel"
21955
+ [disabled]="true"
21956
+ ></kendo-checkbox>
21957
+ }
21792
21958
  }
21793
21959
  }
21794
- }
21795
- @if (isRowReorderColumn(col) && !isNew) {
21796
- @if (!col.dragHandleTemplate?.first) {
21797
- <kendo-icon-wrapper
21798
- name="reorder"
21799
- [svgIcon]="reorderIcon">
21800
- </kendo-icon-wrapper>
21801
- } @else {
21802
- <ng-template
21803
- [ngTemplateOutlet]="col.rowDragHandleTemplateRef"
21804
- [ngTemplateOutletContext]="rowReorderTemplateContext">
21805
- </ng-template>
21960
+ @if (isRowReorderColumn(col) && !isNew) {
21961
+ @if (!col.dragHandleTemplate?.first) {
21962
+ <kendo-icon-wrapper
21963
+ name="reorder"
21964
+ [svgIcon]="reorderIcon">
21965
+ </kendo-icon-wrapper>
21966
+ } @else {
21967
+ <ng-template
21968
+ [ngTemplateOutlet]="col.rowDragHandleTemplateRef"
21969
+ [ngTemplateOutletContext]="rowTemplateContext">
21970
+ </ng-template>
21971
+ }
21806
21972
  }
21973
+ } @else {
21974
+ <ng-template #template
21975
+ [ngTemplateOutlet]="col.templateRef"
21976
+ [ngTemplateOutletContext]="getTemplateContext(col)">
21977
+ </ng-template>
21807
21978
  }
21808
- } @else {
21809
- <ng-template #template
21810
- [ngTemplateOutlet]="col.templateRef"
21811
- [ngTemplateOutletContext]="getTemplateContext(col)">
21812
- </ng-template>
21813
21979
  }
21814
- }
21815
- @if (isEdited(col)) {
21816
- @if (!col.editTemplateRef) {
21817
- @switch (col.editor) {
21818
- @case ('numeric') {
21819
- <kendo-numerictextbox
21820
- [format]="format"
21821
- [formControl]="$any(formGroup.get(col.field))"
21822
- kendoGridFocusable
21823
- ></kendo-numerictextbox>
21824
- }
21825
- @case ('date') {
21826
- <kendo-datepicker
21827
- [format]="format"
21828
- [formControl]="$any(formGroup.get(col.field))"
21829
- kendoGridFocusable
21830
- ></kendo-datepicker>
21831
- }
21832
- @case ('boolean') {
21833
- <kendo-checkbox
21834
- [formControl]="$any(formGroup.get(col.field))"
21835
- kendoGridFocusable
21836
- ></kendo-checkbox>
21837
- }
21838
- @default {
21839
- <kendo-textbox
21840
- [formControl]="$any(formGroup.get(col.field))"
21841
- kendoGridFocusable
21842
- ></kendo-textbox>
21980
+ @if (isEdited(col)) {
21981
+ @if (!col.editTemplateRef) {
21982
+ @switch (col.editor) {
21983
+ @case ('numeric') {
21984
+ <kendo-numerictextbox
21985
+ [format]="format"
21986
+ [formControl]="$any(formGroup.get(col.field))"
21987
+ kendoGridFocusable
21988
+ ></kendo-numerictextbox>
21989
+ }
21990
+ @case ('date') {
21991
+ <kendo-datepicker
21992
+ [format]="format"
21993
+ [formControl]="$any(formGroup.get(col.field))"
21994
+ kendoGridFocusable
21995
+ ></kendo-datepicker>
21996
+ }
21997
+ @case ('boolean') {
21998
+ <kendo-checkbox
21999
+ [formControl]="$any(formGroup.get(col.field))"
22000
+ kendoGridFocusable
22001
+ ></kendo-checkbox>
22002
+ }
22003
+ @default {
22004
+ <kendo-textbox
22005
+ [formControl]="$any(formGroup.get(col.field))"
22006
+ kendoGridFocusable
22007
+ ></kendo-textbox>
22008
+ }
21843
22009
  }
22010
+ } @else {
22011
+ <ng-template
22012
+ [ngTemplateOutlet]="col.editTemplateRef"
22013
+ [ngTemplateOutletContext]="getEditTemplateContext(col)">
22014
+ </ng-template>
21844
22015
  }
21845
- } @else {
21846
- <ng-template
21847
- [ngTemplateOutlet]="col.editTemplateRef"
21848
- [ngTemplateOutletContext]="getEditTemplateContext(col)">
21849
- </ng-template>
21850
22016
  }
21851
- }
22017
+ </div>
21852
22018
  </div>
21853
- </div>
22019
+ }
21854
22020
  }
21855
22021
  @if (detailTemplate?.showIf(item.data, $any(item).index)) {
21856
22022
  <div class="k-grid-stack-cell" [attr.aria-expanded]="item.isExpanded">
@@ -21914,10 +22080,23 @@ class CellComponent {
21914
22080
  } @else {
21915
22081
  <ng-template
21916
22082
  [ngTemplateOutlet]="column.rowDragHandleTemplateRef"
21917
- [ngTemplateOutletContext]="rowReorderTemplateContext">
22083
+ [ngTemplateOutletContext]="rowTemplateContext">
21918
22084
  </ng-template>
21919
22085
  }
21920
22086
  }
22087
+ @if (isRowPinColumn() && !isNew && isRowPinnable) {
22088
+ <span class="k-pin-cell" #target
22089
+ [kendoEventsOutsideAngular]="{
22090
+ click: onPinIconClick
22091
+ }">
22092
+ <kendo-icon-wrapper
22093
+ [name]="isRowPinnedTop || isRowPinnedBottom ? 'unpin-outline' : 'pin-outline'"
22094
+ [svgIcon]="isRowPinnedTop || isRowPinnedBottom ? unpinOutlineIcon : pinOutlineIcon"
22095
+ [innerCssClass]="isRowPinnedTop || isRowPinnedBottom ? 'k-action-icon' : ''"
22096
+ >
22097
+ </kendo-icon-wrapper>
22098
+ </span>
22099
+ }
21921
22100
  } @else {
21922
22101
  @if (loadingTemplate) {
21923
22102
  <ng-template
@@ -21967,8 +22146,13 @@ class CellComponent {
21967
22146
  }
21968
22147
  }
21969
22148
  }
22149
+ <kendo-contextmenu #pinContextMenu
22150
+ [items]="pinMenuItems"
22151
+ (select)="onContextMenuSelect($event)"
22152
+ ></kendo-contextmenu>
21970
22153
  }
21971
- `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: FocusableDirective, selector: "[kendoGridFocusable],\n [kendoGridEditCommand],\n [kendoGridRemoveCommand],\n [kendoGridSaveCommand],\n [kendoGridCancelCommand],\n [kendoGridSelectionCheckbox]\n ", inputs: ["kendoGridFocusable"] }, { kind: "directive", type: SelectionCheckboxDirective, selector: "[kendoGridSelectionCheckbox]", inputs: ["kendoGridSelectionCheckbox"] }, { kind: "directive", type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "component", type: NumericTextBoxComponent, selector: "kendo-numerictextbox", inputs: ["focusableId", "disabled", "readonly", "title", "autoCorrect", "format", "max", "min", "decimals", "placeholder", "step", "spinners", "rangeValidation", "tabindex", "tabIndex", "changeValueOnScroll", "selectOnFocus", "value", "maxlength", "size", "rounded", "fillMode", "inputAttributes"], outputs: ["valueChange", "focus", "blur", "inputFocus", "inputBlur"], exportAs: ["kendoNumericTextBox"] }, { kind: "component", type: DatePickerComponent, selector: "kendo-datepicker", inputs: ["focusableId", "cellTemplate", "clearButton", "inputAttributes", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate", "headerTemplate", "footerTemplate", "footer", "navigationItemTemplate", "weekDaysFormat", "showOtherMonthDays", "activeView", "bottomView", "topView", "calendarType", "animateCalendarNavigation", "disabled", "readonly", "readOnlyInput", "popupSettings", "navigation", "min", "max", "incompleteDateValidation", "autoCorrectParts", "autoSwitchParts", "autoSwitchKeys", "enableMouseWheel", "allowCaretMode", "autoFill", "focusedDate", "value", "format", "twoDigitYearMax", "formatPlaceholder", "placeholder", "tabindex", "tabIndex", "disabledDates", "adaptiveTitle", "adaptiveSubtitle", "rangeValidation", "disabledDatesValidation", "weekNumber", "size", "rounded", "fillMode", "adaptiveMode"], outputs: ["valueChange", "focus", "blur", "open", "close", "escape"], exportAs: ["kendo-datepicker"] }, { kind: "pipe", type: FieldAccessorPipe, name: "valueOf" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: CheckBoxComponent, selector: "kendo-checkbox", inputs: ["checkedState", "rounded"], outputs: ["checkedStateChange"], exportAs: ["kendoCheckBox"] }, { kind: "component", type: TextBoxComponent, selector: "kendo-textbox", inputs: ["focusableId", "title", "type", "disabled", "readonly", "tabindex", "value", "selectOnFocus", "showSuccessIcon", "showErrorIcon", "clearButton", "successIcon", "successSvgIcon", "errorIcon", "errorSvgIcon", "clearButtonIcon", "clearButtonSvgIcon", "size", "rounded", "fillMode", "tabIndex", "placeholder", "maxlength", "inputAttributes"], outputs: ["valueChange", "inputFocus", "inputBlur", "focus", "blur"], exportAs: ["kendoTextBox"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconPosition", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }] });
22154
+
22155
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: FocusableDirective, selector: "[kendoGridFocusable],\n [kendoGridEditCommand],\n [kendoGridRemoveCommand],\n [kendoGridSaveCommand],\n [kendoGridCancelCommand],\n [kendoGridSelectionCheckbox]\n ", inputs: ["kendoGridFocusable"] }, { kind: "directive", type: SelectionCheckboxDirective, selector: "[kendoGridSelectionCheckbox]", inputs: ["kendoGridSelectionCheckbox"] }, { kind: "directive", type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "component", type: NumericTextBoxComponent, selector: "kendo-numerictextbox", inputs: ["focusableId", "disabled", "readonly", "title", "autoCorrect", "format", "max", "min", "decimals", "placeholder", "step", "spinners", "rangeValidation", "tabindex", "tabIndex", "changeValueOnScroll", "selectOnFocus", "value", "maxlength", "size", "rounded", "fillMode", "inputAttributes"], outputs: ["valueChange", "focus", "blur", "inputFocus", "inputBlur"], exportAs: ["kendoNumericTextBox"] }, { kind: "component", type: DatePickerComponent, selector: "kendo-datepicker", inputs: ["focusableId", "cellTemplate", "clearButton", "inputAttributes", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate", "headerTemplate", "footerTemplate", "footer", "navigationItemTemplate", "weekDaysFormat", "showOtherMonthDays", "activeView", "bottomView", "topView", "calendarType", "animateCalendarNavigation", "disabled", "readonly", "readOnlyInput", "popupSettings", "navigation", "min", "max", "incompleteDateValidation", "autoCorrectParts", "autoSwitchParts", "autoSwitchKeys", "enableMouseWheel", "allowCaretMode", "autoFill", "focusedDate", "value", "format", "twoDigitYearMax", "formatPlaceholder", "placeholder", "tabindex", "tabIndex", "disabledDates", "adaptiveTitle", "adaptiveSubtitle", "rangeValidation", "disabledDatesValidation", "weekNumber", "size", "rounded", "fillMode", "adaptiveMode"], outputs: ["valueChange", "focus", "blur", "open", "close", "escape"], exportAs: ["kendo-datepicker"] }, { kind: "pipe", type: FieldAccessorPipe, name: "valueOf" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: CheckBoxComponent, selector: "kendo-checkbox", inputs: ["checkedState", "rounded"], outputs: ["checkedStateChange"], exportAs: ["kendoCheckBox"] }, { kind: "component", type: TextBoxComponent, selector: "kendo-textbox", inputs: ["focusableId", "title", "type", "disabled", "readonly", "tabindex", "value", "selectOnFocus", "showSuccessIcon", "showErrorIcon", "clearButton", "successIcon", "successSvgIcon", "errorIcon", "errorSvgIcon", "clearButtonIcon", "clearButtonSvgIcon", "size", "rounded", "fillMode", "tabIndex", "placeholder", "maxlength", "inputAttributes"], outputs: ["valueChange", "inputFocus", "inputBlur", "focus", "blur"], exportAs: ["kendoTextBox"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconPosition", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "component", type: ContextMenuComponent, selector: "kendo-contextmenu", inputs: ["showOn", "target", "filter", "alignToAnchor", "vertical", "popupAnimate", "popupAlign", "anchorAlign", "collision", "appendTo", "ariaLabel"], outputs: ["popupOpen", "popupClose", "select", "open", "close"], exportAs: ["kendoContextMenu"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }] });
21972
22156
  }
21973
22157
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CellComponent, decorators: [{
21974
22158
  type: Component,
@@ -21980,108 +22164,110 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
21980
22164
  [ngClass]="stackedRowClass"
21981
22165
  [ngStyle]="stackedRowStyle">
21982
22166
  @for (col of columns; track $index) {
21983
- <div class="k-grid-stack-cell"
21984
- [class.k-grid-stack-edit-cell]="isEdited(col)"
21985
- [class.k-drag-cell]="isRowReorderColumn(col) && !isNew"
21986
- [class.k-command-cell]="isCommand(col)"
21987
- [kendoGridFocusable]="!isCommand(col)">
21988
- <div class="k-grid-stack-header">
21989
- @if (!col.headerTemplateRef) {
21990
- {{col.displayTitle}}
21991
- } @else {
21992
- <ng-template #headerTemplate
21993
- [templateContext]="{
21994
- templateRef: col.headerTemplateRef,
21995
- columnIndex: col.leafIndex,
21996
- column: col,
21997
- $implicit: col
21998
- }">
21999
- </ng-template>
22000
- }
22001
- </div>
22002
- <div class="k-grid-stack-content">
22003
- @if (!isEdited(col)) {
22004
- @if (!col.templateRef) {
22005
- @if (isBoundColumn(col)) {{{ dataItem | valueOf: col.field: col.format}}}
22006
- @if (isCheckboxColumn(col) && !isNew) {
22007
- @if (isRowSelectable(col)) {
22008
- <kendo-checkbox
22009
- [kendoGridSelectionCheckbox]="rowIndex"
22010
- [attr.id]="selectionCheckboxId"
22011
- [inputAttributes]="{'aria-label': selectionCheckboxLabel}"
22012
- [title]="selectionCheckboxLabel">
22013
- </kendo-checkbox>
22014
- } @else {
22015
- @if (col.showDisabledCheckbox) {
22167
+ @if (!col.isRowPinColumn) {
22168
+ <div class="k-grid-stack-cell"
22169
+ [class.k-grid-stack-edit-cell]="isEdited(col)"
22170
+ [class.k-drag-cell]="isRowReorderColumn(col) && !isNew"
22171
+ [class.k-command-cell]="isCommand(col)"
22172
+ [kendoGridFocusable]="!isCommand(col)">
22173
+ <div class="k-grid-stack-header">
22174
+ @if (!col.headerTemplateRef) {
22175
+ {{col.displayTitle}}
22176
+ } @else {
22177
+ <ng-template #headerTemplate
22178
+ [templateContext]="{
22179
+ templateRef: col.headerTemplateRef,
22180
+ columnIndex: col.leafIndex,
22181
+ column: col,
22182
+ $implicit: col
22183
+ }">
22184
+ </ng-template>
22185
+ }
22186
+ </div>
22187
+ <div class="k-grid-stack-content">
22188
+ @if (!isEdited(col)) {
22189
+ @if (!col.templateRef) {
22190
+ @if (isBoundColumn(col)) {{{ dataItem | valueOf: col.field: col.format}}}
22191
+ @if (isCheckboxColumn(col) && !isNew) {
22192
+ @if (isRowSelectable(col)) {
22016
22193
  <kendo-checkbox
22017
22194
  [kendoGridSelectionCheckbox]="rowIndex"
22018
22195
  [attr.id]="selectionCheckboxId"
22019
22196
  [inputAttributes]="{'aria-label': selectionCheckboxLabel}"
22020
- [title]="selectionCheckboxLabel"
22021
- [disabled]="true"
22022
- ></kendo-checkbox>
22197
+ [title]="selectionCheckboxLabel">
22198
+ </kendo-checkbox>
22199
+ } @else {
22200
+ @if (col.showDisabledCheckbox) {
22201
+ <kendo-checkbox
22202
+ [kendoGridSelectionCheckbox]="rowIndex"
22203
+ [attr.id]="selectionCheckboxId"
22204
+ [inputAttributes]="{'aria-label': selectionCheckboxLabel}"
22205
+ [title]="selectionCheckboxLabel"
22206
+ [disabled]="true"
22207
+ ></kendo-checkbox>
22208
+ }
22023
22209
  }
22024
22210
  }
22025
- }
22026
- @if (isRowReorderColumn(col) && !isNew) {
22027
- @if (!col.dragHandleTemplate?.first) {
22028
- <kendo-icon-wrapper
22029
- name="reorder"
22030
- [svgIcon]="reorderIcon">
22031
- </kendo-icon-wrapper>
22032
- } @else {
22033
- <ng-template
22034
- [ngTemplateOutlet]="col.rowDragHandleTemplateRef"
22035
- [ngTemplateOutletContext]="rowReorderTemplateContext">
22036
- </ng-template>
22211
+ @if (isRowReorderColumn(col) && !isNew) {
22212
+ @if (!col.dragHandleTemplate?.first) {
22213
+ <kendo-icon-wrapper
22214
+ name="reorder"
22215
+ [svgIcon]="reorderIcon">
22216
+ </kendo-icon-wrapper>
22217
+ } @else {
22218
+ <ng-template
22219
+ [ngTemplateOutlet]="col.rowDragHandleTemplateRef"
22220
+ [ngTemplateOutletContext]="rowTemplateContext">
22221
+ </ng-template>
22222
+ }
22037
22223
  }
22224
+ } @else {
22225
+ <ng-template #template
22226
+ [ngTemplateOutlet]="col.templateRef"
22227
+ [ngTemplateOutletContext]="getTemplateContext(col)">
22228
+ </ng-template>
22038
22229
  }
22039
- } @else {
22040
- <ng-template #template
22041
- [ngTemplateOutlet]="col.templateRef"
22042
- [ngTemplateOutletContext]="getTemplateContext(col)">
22043
- </ng-template>
22044
22230
  }
22045
- }
22046
- @if (isEdited(col)) {
22047
- @if (!col.editTemplateRef) {
22048
- @switch (col.editor) {
22049
- @case ('numeric') {
22050
- <kendo-numerictextbox
22051
- [format]="format"
22052
- [formControl]="$any(formGroup.get(col.field))"
22053
- kendoGridFocusable
22054
- ></kendo-numerictextbox>
22055
- }
22056
- @case ('date') {
22057
- <kendo-datepicker
22058
- [format]="format"
22059
- [formControl]="$any(formGroup.get(col.field))"
22060
- kendoGridFocusable
22061
- ></kendo-datepicker>
22062
- }
22063
- @case ('boolean') {
22064
- <kendo-checkbox
22065
- [formControl]="$any(formGroup.get(col.field))"
22066
- kendoGridFocusable
22067
- ></kendo-checkbox>
22068
- }
22069
- @default {
22070
- <kendo-textbox
22071
- [formControl]="$any(formGroup.get(col.field))"
22072
- kendoGridFocusable
22073
- ></kendo-textbox>
22231
+ @if (isEdited(col)) {
22232
+ @if (!col.editTemplateRef) {
22233
+ @switch (col.editor) {
22234
+ @case ('numeric') {
22235
+ <kendo-numerictextbox
22236
+ [format]="format"
22237
+ [formControl]="$any(formGroup.get(col.field))"
22238
+ kendoGridFocusable
22239
+ ></kendo-numerictextbox>
22240
+ }
22241
+ @case ('date') {
22242
+ <kendo-datepicker
22243
+ [format]="format"
22244
+ [formControl]="$any(formGroup.get(col.field))"
22245
+ kendoGridFocusable
22246
+ ></kendo-datepicker>
22247
+ }
22248
+ @case ('boolean') {
22249
+ <kendo-checkbox
22250
+ [formControl]="$any(formGroup.get(col.field))"
22251
+ kendoGridFocusable
22252
+ ></kendo-checkbox>
22253
+ }
22254
+ @default {
22255
+ <kendo-textbox
22256
+ [formControl]="$any(formGroup.get(col.field))"
22257
+ kendoGridFocusable
22258
+ ></kendo-textbox>
22259
+ }
22074
22260
  }
22261
+ } @else {
22262
+ <ng-template
22263
+ [ngTemplateOutlet]="col.editTemplateRef"
22264
+ [ngTemplateOutletContext]="getEditTemplateContext(col)">
22265
+ </ng-template>
22075
22266
  }
22076
- } @else {
22077
- <ng-template
22078
- [ngTemplateOutlet]="col.editTemplateRef"
22079
- [ngTemplateOutletContext]="getEditTemplateContext(col)">
22080
- </ng-template>
22081
22267
  }
22082
- }
22268
+ </div>
22083
22269
  </div>
22084
- </div>
22270
+ }
22085
22271
  }
22086
22272
  @if (detailTemplate?.showIf(item.data, $any(item).index)) {
22087
22273
  <div class="k-grid-stack-cell" [attr.aria-expanded]="item.isExpanded">
@@ -22145,10 +22331,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
22145
22331
  } @else {
22146
22332
  <ng-template
22147
22333
  [ngTemplateOutlet]="column.rowDragHandleTemplateRef"
22148
- [ngTemplateOutletContext]="rowReorderTemplateContext">
22334
+ [ngTemplateOutletContext]="rowTemplateContext">
22149
22335
  </ng-template>
22150
22336
  }
22151
22337
  }
22338
+ @if (isRowPinColumn() && !isNew && isRowPinnable) {
22339
+ <span class="k-pin-cell" #target
22340
+ [kendoEventsOutsideAngular]="{
22341
+ click: onPinIconClick
22342
+ }">
22343
+ <kendo-icon-wrapper
22344
+ [name]="isRowPinnedTop || isRowPinnedBottom ? 'unpin-outline' : 'pin-outline'"
22345
+ [svgIcon]="isRowPinnedTop || isRowPinnedBottom ? unpinOutlineIcon : pinOutlineIcon"
22346
+ [innerCssClass]="isRowPinnedTop || isRowPinnedBottom ? 'k-action-icon' : ''"
22347
+ >
22348
+ </kendo-icon-wrapper>
22349
+ </span>
22350
+ }
22152
22351
  } @else {
22153
22352
  @if (loadingTemplate) {
22154
22353
  <ng-template
@@ -22198,17 +22397,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
22198
22397
  }
22199
22398
  }
22200
22399
  }
22400
+ <kendo-contextmenu #pinContextMenu
22401
+ [items]="pinMenuItems"
22402
+ (select)="onContextMenuSelect($event)"
22403
+ ></kendo-contextmenu>
22201
22404
  }
22405
+
22202
22406
  `,
22203
22407
  standalone: true,
22204
22408
  imports: [NgTemplateOutlet, FocusableDirective, SelectionCheckboxDirective, TemplateContextDirective,
22205
- IconWrapperComponent, NumericTextBoxComponent, DatePickerComponent, FieldAccessorPipe, ReactiveFormsModule, CheckBoxComponent, TextBoxComponent, NgClass, NgStyle, ButtonComponent]
22409
+ IconWrapperComponent, NumericTextBoxComponent, DatePickerComponent, FieldAccessorPipe, ReactiveFormsModule, CheckBoxComponent, TextBoxComponent, NgClass, NgStyle, ButtonComponent, ContextMenuComponent, EventsOutsideAngularDirective]
22206
22410
  }]
22207
- }], ctorParameters: () => [{ type: EditService }, { type: IdService }, { type: ContextService }, { type: DetailsService }, { type: i1$2.LocalizationService }, { type: undefined, decorators: [{
22411
+ }], ctorParameters: () => [{ type: EditService }, { type: IdService }, { type: ContextService }, { type: DetailsService }, { type: i1$2.LocalizationService }, { type: RowPinService, decorators: [{
22412
+ type: Optional
22413
+ }] }, { type: undefined, decorators: [{
22208
22414
  type: Optional
22209
22415
  }, {
22210
22416
  type: Inject,
22211
22417
  args: [CELL_CONTEXT]
22418
+ }] }, { type: undefined, decorators: [{
22419
+ type: Optional
22420
+ }, {
22421
+ type: Inject,
22422
+ args: [IS_PIN_CONTAINER]
22212
22423
  }] }], propDecorators: { commandCellClass: [{
22213
22424
  type: HostBinding,
22214
22425
  args: ['class.k-command-cell']
@@ -22221,6 +22432,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
22221
22432
  }], dragRowHandleLabel: [{
22222
22433
  type: HostBinding,
22223
22434
  args: ['attr.aria-label']
22435
+ }], pinContextMenu: [{
22436
+ type: ViewChild,
22437
+ args: ['pinContextMenu']
22438
+ }], pinContextMenuTarget: [{
22439
+ type: ViewChild,
22440
+ args: ['target', { read: ElementRef }]
22224
22441
  }], column: [{
22225
22442
  type: Input
22226
22443
  }], columns: [{
@@ -22300,6 +22517,8 @@ class TableBodyComponent {
22300
22517
  rowClass = () => null;
22301
22518
  rowHeight;
22302
22519
  detailRowHeight;
22520
+ isPinContainer = false;
22521
+ pinPosition = null;
22303
22522
  hostClass = true;
22304
22523
  groupHeaderSlaveCellsCount;
22305
22524
  groupHeaderColumns;
@@ -22387,7 +22606,8 @@ class TableBodyComponent {
22387
22606
  if (this.rowsToRender) {
22388
22607
  this.rowsToRender.forEach((item) => {
22389
22608
  if (item.type === 'data') {
22390
- item.isEditing = this.editService.hasEdited(item.index);
22609
+ const zone = this.isPinContainer ? 'pinned' : 'body';
22610
+ item.isEditing = this.editService.hasEdited(item.index) && this.editService.editZone === zone;
22391
22611
  }
22392
22612
  });
22393
22613
  }
@@ -22416,20 +22636,29 @@ class TableBodyComponent {
22416
22636
  }
22417
22637
  }
22418
22638
  logicalRowIndex(rowIndex) {
22639
+ const addRowOffset = this.editService.hasNewItem ? 1 : 0;
22640
+ const filterRowOffset = hasFilterRow(this.filterable) ? 1 : 0;
22641
+ const headerRowCount = this.columnInfoService.totalLevels + filterRowOffset + addRowOffset;
22642
+ const pinnedTopCount = this.ctx.grid?.pinnedTopRows?.length ?? 0;
22643
+ if (this.pinPosition === 'top') {
22644
+ return headerRowCount + rowIndex + 1;
22645
+ }
22646
+ if (this.pinPosition === 'bottom') {
22647
+ const dataRows = this.navigationService.metadata?.dataRows ?? 0;
22648
+ return headerRowCount + pinnedTopCount + dataRows + rowIndex + 1;
22649
+ }
22419
22650
  const skip = this.skip + (this.ctx.scroller?.virtualSkip ?? 0);
22420
22651
  let pos = rowIndex + skip;
22421
22652
  if (this.hasDetailTemplate && !this.isStackedMode) {
22422
22653
  pos *= 2;
22423
22654
  }
22424
22655
  const absoluteRowIndex = this.isStackedMode ? pos : 1 + pos;
22425
- const addRowOffset = this.editService.hasNewItem ? 1 : 0;
22426
- const filterRowOffset = hasFilterRow(this.filterable) ? 1 : 0;
22427
- const headerRowCount = this.columnInfoService.totalLevels + filterRowOffset + addRowOffset;
22428
- return absoluteRowIndex + headerRowCount;
22656
+ return absoluteRowIndex + headerRowCount + pinnedTopCount;
22429
22657
  }
22430
22658
  addRowLogicalIndex() {
22431
- return this.columnInfoService.totalLevels + 1 +
22432
- (hasFilterRow(this.filterable) ? 1 : 0);
22659
+ const filterRowOffset = hasFilterRow(this.filterable) ? 1 : 0;
22660
+ const pinnedTopCount = this.pinPosition ? 0 : this.ctx.grid?.pinnedTopRows?.length ?? 0;
22661
+ return this.columnInfoService.totalLevels + 1 + filterRowOffset + pinnedTopCount;
22433
22662
  }
22434
22663
  logicalColIndex(column) {
22435
22664
  if (!isPresent(column.leafIndex)) {
@@ -22479,10 +22708,15 @@ class TableBodyComponent {
22479
22708
  clearTimeout(this.clickTimeout);
22480
22709
  }
22481
22710
  isEditingCell(index, column) {
22482
- return this.editService.isEditing() && this.editService.isEditedColumn(index, column);
22711
+ const zone = this.isPinContainer ? 'pinned' : 'body';
22712
+ return this.editService.isEditing() && this.editService.isEditedColumn(index, column) && this.editService.editZone === zone;
22483
22713
  }
22484
22714
  isEditingRow(index) {
22485
- return this.editService.isEditing() && this.editService.hasEdited(index);
22715
+ const zone = this.isPinContainer ? 'pinned' : 'body';
22716
+ return this.editService.isEditing() && this.editService.hasEdited(index) && this.editService.editZone === zone;
22717
+ }
22718
+ isRowPinned(dataItem) {
22719
+ return !!(this.ctx.grid?.pinnedTopRows?.includes(dataItem) || this.ctx.grid?.pinnedBottomRows?.includes(dataItem));
22486
22720
  }
22487
22721
  get isStackedMode() {
22488
22722
  return this.ctx.grid?.isStacked;
@@ -22594,6 +22828,7 @@ class TableBodyComponent {
22594
22828
  if (!cell) {
22595
22829
  return;
22596
22830
  }
22831
+ this.editService.editZone = this.isPinContainer ? 'pinned' : 'body';
22597
22832
  this.editService.preventCellClose();
22598
22833
  const focusable = (!isCellTarget && target !== cell) && isFocusableWithTabKey(target, false);
22599
22834
  const ignoreContainer = isCellTarget ? true : !closestInScope(target, matchesClasses(IGNORE_CONTAINER_CLASSES), cell);
@@ -22675,7 +22910,10 @@ class TableBodyComponent {
22675
22910
  isEditedRow: isEditedRow,
22676
22911
  originalEvent: eventArg,
22677
22912
  rowIndex: rowIndex,
22678
- type: type
22913
+ type: type,
22914
+ isPinContainer: this.isPinContainer,
22915
+ isRowPinned: this.isRowPinned(dataItem),
22916
+ pinPosition: this.pinPosition
22679
22917
  };
22680
22918
  }
22681
22919
  eventTarget(args) {
@@ -22709,7 +22947,7 @@ class TableBodyComponent {
22709
22947
  }
22710
22948
  }
22711
22949
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TableBodyComponent, deps: [{ token: DetailsService }, { token: GroupsService }, { token: ChangeNotificationService }, { token: EditService }, { token: ContextService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: DomEventsService }, { token: SelectionService }, { token: CellSelectionService }, { token: ColumnInfoService }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Component });
22712
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: TableBodyComponent, isStandalone: true, selector: "[kendoGridTableBody]", inputs: { columns: "columns", allColumns: "allColumns", groups: "groups", detailTemplate: "detailTemplate", noRecordsTemplate: "noRecordsTemplate", rowsToRender: "rowsToRender", skip: "skip", selectable: "selectable", filterable: "filterable", noRecordsText: "noRecordsText", isLocked: "isLocked", isLoading: "isLoading", isVirtual: "isVirtual", cellLoadingTemplate: "cellLoadingTemplate", skipGroupDecoration: "skipGroupDecoration", lockedColumnsCount: "lockedColumnsCount", totalColumnsCount: "totalColumnsCount", virtualColumns: "virtualColumns", trackBy: "trackBy", rowSticky: "rowSticky", totalColumns: "totalColumns", rowClass: "rowClass", rowHeight: "rowHeight", detailRowHeight: "detailRowHeight" }, host: { properties: { "class.k-table-tbody": "this.hostClass" } }, usesOnChanges: true, ngImport: i0, template: `
22950
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: TableBodyComponent, isStandalone: true, selector: "[kendoGridTableBody]", inputs: { columns: "columns", allColumns: "allColumns", groups: "groups", detailTemplate: "detailTemplate", noRecordsTemplate: "noRecordsTemplate", rowsToRender: "rowsToRender", skip: "skip", selectable: "selectable", filterable: "filterable", noRecordsText: "noRecordsText", isLocked: "isLocked", isLoading: "isLoading", isVirtual: "isVirtual", cellLoadingTemplate: "cellLoadingTemplate", skipGroupDecoration: "skipGroupDecoration", lockedColumnsCount: "lockedColumnsCount", totalColumnsCount: "totalColumnsCount", virtualColumns: "virtualColumns", trackBy: "trackBy", rowSticky: "rowSticky", totalColumns: "totalColumns", rowClass: "rowClass", rowHeight: "rowHeight", detailRowHeight: "detailRowHeight", isPinContainer: "isPinContainer", pinPosition: "pinPosition" }, host: { properties: { "class.k-table-tbody": "this.hostClass" } }, usesOnChanges: true, ngImport: i0, template: `
22713
22951
  @if (editService.hasNewItem) {
22714
22952
  <tr class="k-grid-add-row k-grid-edit-row k-master-row"
22715
22953
  [style.height.px]="rowHeight"
@@ -22825,6 +23063,7 @@ class TableBodyComponent {
22825
23063
  [class.k-grid-row-sticky]="rowSticky ? rowSticky({ dataItem: item.data, index: $any(item).index }) : false"
22826
23064
  [ngClass]="rowClass({ dataItem: item.data, index: $any(item).index })"
22827
23065
  [class.k-master-row]="true"
23066
+ [class.k-pinned-source]="isRowPinned(item.data) && !isPinContainer"
22828
23067
  [class.k-expanded]="item.isExpanded && !isStackedMode"
22829
23068
  [class.k-grid-edit-row]="isEditingRow($any(item).index)"
22830
23069
  [attr.aria-selected]="(lockedColumnsCount < 1 || isStackedMode) ? isSelectable({ dataItem: item.data, index: $any(item).index }) && isRowSelected(item) : undefined"
@@ -23174,6 +23413,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
23174
23413
  [class.k-grid-row-sticky]="rowSticky ? rowSticky({ dataItem: item.data, index: $any(item).index }) : false"
23175
23414
  [ngClass]="rowClass({ dataItem: item.data, index: $any(item).index })"
23176
23415
  [class.k-master-row]="true"
23416
+ [class.k-pinned-source]="isRowPinned(item.data) && !isPinContainer"
23177
23417
  [class.k-expanded]="item.isExpanded && !isStackedMode"
23178
23418
  [class.k-grid-edit-row]="isEditingRow($any(item).index)"
23179
23419
  [attr.aria-selected]="(lockedColumnsCount < 1 || isStackedMode) ? isSelectable({ dataItem: item.data, index: $any(item).index }) && isRowSelected(item) : undefined"
@@ -23456,6 +23696,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
23456
23696
  type: Input
23457
23697
  }], detailRowHeight: [{
23458
23698
  type: Input
23699
+ }], isPinContainer: [{
23700
+ type: Input
23701
+ }], pinPosition: [{
23702
+ type: Input
23459
23703
  }], hostClass: [{
23460
23704
  type: HostBinding,
23461
23705
  args: ['class.k-table-tbody']
@@ -23512,7 +23756,8 @@ class EditCommandDirective extends Button {
23512
23756
  ngDoCheck() {
23513
23757
  if (this.cellContext) {
23514
23758
  this.rowIndex = this.cellContext.rowIndex;
23515
- this.isEdited = this.editService.isEdited(this.rowIndex);
23759
+ const zone = this.cellContext.inPinContainer ? 'pinned' : 'body';
23760
+ this.isEdited = this.editService.isEdited(this.rowIndex) && this.editService.editZone === zone;
23516
23761
  }
23517
23762
  }
23518
23763
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: EditCommandDirective, deps: [{ token: EditService }, { token: CELL_CONTEXT }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: ContextService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
@@ -23626,7 +23871,8 @@ class CancelCommandDirective extends Button {
23626
23871
  ngDoCheck() {
23627
23872
  if (this.cellContext) {
23628
23873
  this.rowIndex = this.cellContext.rowIndex;
23629
- this.isEdited = this.editService.isEdited(this.rowIndex);
23874
+ const zone = this.cellContext.inPinContainer ? 'pinned' : 'body';
23875
+ this.isEdited = this.editService.isEdited(this.rowIndex) && this.editService.editZone === zone;
23630
23876
  }
23631
23877
  }
23632
23878
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CancelCommandDirective, deps: [{ token: EditService }, { token: CELL_CONTEXT }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: ContextService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
@@ -23739,7 +23985,8 @@ class SaveCommandDirective extends Button {
23739
23985
  ngDoCheck() {
23740
23986
  if (this.cellContext) {
23741
23987
  this.rowIndex = this.cellContext.rowIndex;
23742
- this.isEdited = this.editService.isEdited(this.rowIndex);
23988
+ const zone = this.cellContext.inPinContainer ? 'pinned' : 'body';
23989
+ this.isEdited = this.editService.isEdited(this.rowIndex) && this.editService.editZone === zone;
23743
23990
  }
23744
23991
  }
23745
23992
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SaveCommandDirective, deps: [{ token: EditService }, { token: CELL_CONTEXT }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: ContextService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
@@ -24203,6 +24450,82 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
24203
24450
  args: [RowDragHintTemplateDirective, { descendants: false }]
24204
24451
  }] } });
24205
24452
 
24453
+ /**
24454
+ * Represents the pin column for the Grid.
24455
+ *
24456
+ * @example
24457
+ * ```html
24458
+ * <kendo-grid>
24459
+ * <kendo-grid-rowpin-column></kendo-grid-rowpin-column>
24460
+ * <kendo-grid-column field="ProductID"></kendo-grid-column>
24461
+ * </kendo-grid>
24462
+ * ```
24463
+ */
24464
+ class RowPinColumnComponent extends ColumnBase {
24465
+ parent;
24466
+ /**
24467
+ * Defines the name for an existing font icon in the Kendo UI theme.
24468
+ * @hidden
24469
+ */
24470
+ pinIcon;
24471
+ /**
24472
+ * Defines an SVGIcon to be rendered as a pin icon.
24473
+ * @hidden
24474
+ */
24475
+ pinSVGIcon;
24476
+ /**
24477
+ * @hidden
24478
+ */
24479
+ isRowPinColumn = true;
24480
+ constructor(parent, idService) {
24481
+ super(parent, idService);
24482
+ this.parent = parent;
24483
+ this.width = 48;
24484
+ }
24485
+ /**
24486
+ * Sets a function to determine the rowspan of each column cell.
24487
+ */
24488
+ set cellRowspan(cellRowspan) {
24489
+ super.cellRowspan = cellRowspan;
24490
+ }
24491
+ get cellRowspan() {
24492
+ return super.cellRowspan;
24493
+ }
24494
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: RowPinColumnComponent, deps: [{ token: ColumnBase, host: true, optional: true, skipSelf: true }, { token: IdService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
24495
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: RowPinColumnComponent, isStandalone: true, selector: "kendo-grid-rowpin-column", inputs: { pinIcon: "pinIcon", pinSVGIcon: "pinSVGIcon" }, providers: [
24496
+ {
24497
+ provide: ColumnBase,
24498
+ useExisting: forwardRef(() => RowPinColumnComponent)
24499
+ }
24500
+ ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });
24501
+ }
24502
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: RowPinColumnComponent, decorators: [{
24503
+ type: Component,
24504
+ args: [{
24505
+ providers: [
24506
+ {
24507
+ provide: ColumnBase,
24508
+ useExisting: forwardRef(() => RowPinColumnComponent)
24509
+ }
24510
+ ],
24511
+ selector: 'kendo-grid-rowpin-column',
24512
+ template: ``,
24513
+ standalone: true
24514
+ }]
24515
+ }], ctorParameters: () => [{ type: ColumnBase, decorators: [{
24516
+ type: SkipSelf
24517
+ }, {
24518
+ type: Host
24519
+ }, {
24520
+ type: Optional
24521
+ }] }, { type: IdService, decorators: [{
24522
+ type: Optional
24523
+ }] }], propDecorators: { pinIcon: [{
24524
+ type: Input
24525
+ }], pinSVGIcon: [{
24526
+ type: Input
24527
+ }] } });
24528
+
24206
24529
  /**
24207
24530
  * @hidden
24208
24531
  */
@@ -24246,8 +24569,8 @@ const packageMetadata = {
24246
24569
  productName: 'Kendo UI for Angular',
24247
24570
  productCode: 'KENDOUIANGULAR',
24248
24571
  productCodes: ['KENDOUIANGULAR'],
24249
- publishDate: 1777036997,
24250
- version: '23.4.0',
24572
+ publishDate: 1777368290,
24573
+ version: '24.0.0-develop.10',
24251
24574
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
24252
24575
  };
24253
24576
 
@@ -25784,11 +26107,13 @@ class NavigationMetadata {
25784
26107
  columns;
25785
26108
  footerRow;
25786
26109
  isStacked;
26110
+ pinnedTopRowsCount;
26111
+ pinnedBottomRowsCount;
25787
26112
  get maxLogicalRowIndex() {
25788
26113
  const dataRows = this.hasDetailTemplate ? this.dataRows * 2 : this.dataRows;
25789
- return this.headerRows + dataRows + this.footerRow - 1;
26114
+ return this.headerRows + this.pinnedTopRowsCount + dataRows + this.pinnedBottomRowsCount + this.footerRow - 1;
25790
26115
  }
25791
- constructor(dataRows, headerRows, isVirtual, hasPager, hasDetailTemplate, gridElement, virtualColumns, columns, footerRow, isStacked) {
26116
+ constructor(dataRows, headerRows, isVirtual, hasPager, hasDetailTemplate, gridElement, virtualColumns, columns, footerRow, isStacked, pinnedTopRowsCount = 0, pinnedBottomRowsCount = 0) {
25792
26117
  this.dataRows = dataRows;
25793
26118
  this.headerRows = headerRows;
25794
26119
  this.isVirtual = isVirtual;
@@ -25799,6 +26124,8 @@ class NavigationMetadata {
25799
26124
  this.columns = columns;
25800
26125
  this.footerRow = footerRow;
25801
26126
  this.isStacked = isStacked;
26127
+ this.pinnedTopRowsCount = pinnedTopRowsCount;
26128
+ this.pinnedBottomRowsCount = pinnedBottomRowsCount;
25802
26129
  }
25803
26130
  }
25804
26131
 
@@ -26617,6 +26944,10 @@ class GridMarqueeDirective {
26617
26944
  element.style.height = `${height}px`;
26618
26945
  }
26619
26946
  endSelection(args) {
26947
+ if (args.isPinContainer) {
26948
+ this.clean();
26949
+ return;
26950
+ }
26620
26951
  if (args.type === 'mouseup' || args.type === 'touchend') {
26621
26952
  const modifier = args.originalEvent.ctrlKey || args.originalEvent.metaKey;
26622
26953
  const preserveCurrentSelection = modifier &&
@@ -28277,7 +28608,7 @@ class ListComponent {
28277
28608
  </div>
28278
28609
  }
28279
28610
  </div>
28280
- `, isInline: true, dependencies: [{ kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "directive", type: TableDirective, selector: "[kendoGridResizableTable]", inputs: ["locked", "virtualColumns"] }, { kind: "directive", type: GridTableDirective, selector: "[kendoGridTable]", inputs: ["size"] }, { kind: "component", type: ColGroupComponent, selector: "[kendoGridColGroup]", inputs: ["columns", "groups", "detailTemplate", "sort"] }, { kind: "component", type: TableBodyComponent, selector: "[kendoGridTableBody]", inputs: ["columns", "allColumns", "groups", "detailTemplate", "noRecordsTemplate", "rowsToRender", "skip", "selectable", "filterable", "noRecordsText", "isLocked", "isLoading", "isVirtual", "cellLoadingTemplate", "skipGroupDecoration", "lockedColumnsCount", "totalColumnsCount", "virtualColumns", "trackBy", "rowSticky", "totalColumns", "rowClass", "rowHeight", "detailRowHeight"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "directive", type: ResizableContainerDirective, selector: "[kendoGridResizableContainer]", inputs: ["lockedWidth", "kendoGridResizableContainer"] }] });
28611
+ `, isInline: true, dependencies: [{ kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "directive", type: TableDirective, selector: "[kendoGridResizableTable]", inputs: ["locked", "virtualColumns"] }, { kind: "directive", type: GridTableDirective, selector: "[kendoGridTable]", inputs: ["size"] }, { kind: "component", type: ColGroupComponent, selector: "[kendoGridColGroup]", inputs: ["columns", "groups", "detailTemplate", "sort"] }, { kind: "component", type: TableBodyComponent, selector: "[kendoGridTableBody]", inputs: ["columns", "allColumns", "groups", "detailTemplate", "noRecordsTemplate", "rowsToRender", "skip", "selectable", "filterable", "noRecordsText", "isLocked", "isLoading", "isVirtual", "cellLoadingTemplate", "skipGroupDecoration", "lockedColumnsCount", "totalColumnsCount", "virtualColumns", "trackBy", "rowSticky", "totalColumns", "rowClass", "rowHeight", "detailRowHeight", "isPinContainer", "pinPosition"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "directive", type: ResizableContainerDirective, selector: "[kendoGridResizableContainer]", inputs: ["lockedWidth", "kendoGridResizableContainer"] }] });
28281
28612
  }
28282
28613
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ListComponent, decorators: [{
28283
28614
  type: Component,
@@ -29344,8 +29675,32 @@ class GridMessages extends ComponentMessages {
29344
29675
  * Sets the screen-reader-only content for the command column header.
29345
29676
  */
29346
29677
  commandColumnHeaderLabel;
29678
+ /**
29679
+ * The aria-label for the pinned top rows container.
29680
+ */
29681
+ pinnedTopRowsLabel;
29682
+ /**
29683
+ * The aria-label for the pinned bottom rows container.
29684
+ */
29685
+ pinnedBottomRowsLabel;
29686
+ /**
29687
+ * The text for the **Pin row to top** option in the pin context menu.
29688
+ */
29689
+ pinMenuPinToTopText;
29690
+ /**
29691
+ * The text for the **Pin row to bottom** option in the pin context menu.
29692
+ */
29693
+ pinMenuPinToBottomText;
29694
+ /**
29695
+ * The text for the **Unpin** option in the pin context menu.
29696
+ */
29697
+ pinMenuUnpinText;
29698
+ /**
29699
+ * Sets the screen-reader-only content for the pin column header.
29700
+ */
29701
+ pinColumnHeaderLabel;
29347
29702
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: GridMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });
29348
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: GridMessages, isStandalone: true, selector: "kendo-grid-messages-base", inputs: { groupPanelEmpty: "groupPanelEmpty", noRecords: "noRecords", pagerLabel: "pagerLabel", pagerFirstPage: "pagerFirstPage", pagerLastPage: "pagerLastPage", pagerPreviousPage: "pagerPreviousPage", pagerNextPage: "pagerNextPage", pagerPage: "pagerPage", pagerItemsPerPage: "pagerItemsPerPage", pagerOf: "pagerOf", pagerItems: "pagerItems", pagerPageNumberInputTitle: "pagerPageNumberInputTitle", pagerInputLabel: "pagerInputLabel", pagerSelectPage: "pagerSelectPage", filter: "filter", filterInputLabel: "filterInputLabel", filterMenuTitle: "filterMenuTitle", filterMenuOperatorsDropDownLabel: "filterMenuOperatorsDropDownLabel", filterMenuLogicDropDownLabel: "filterMenuLogicDropDownLabel", filterCellOperatorLabel: "filterCellOperatorLabel", booleanFilterCellLabel: "booleanFilterCellLabel", aiAssistantApplyButtonText: "aiAssistantApplyButtonText", aiAssistantToolbarToolText: "aiAssistantToolbarToolText", aiAssistantWindowTitle: "aiAssistantWindowTitle", aiAssistantWindowCloseTitle: "aiAssistantWindowCloseTitle", aiAssistantOutputCardTitle: "aiAssistantOutputCardTitle", aiAssistantOutputCardBodyContent: "aiAssistantOutputCardBodyContent", aiAssistantSelectionNotEnabled: "aiAssistantSelectionNotEnabled", aiAssistantSelectionRowModeRequired: "aiAssistantSelectionRowModeRequired", aiAssistantSelectionCellModeRequired: "aiAssistantSelectionCellModeRequired", aiAssistantWindowMaximizeTitle: "aiAssistantWindowMaximizeTitle", aiAssistantWindowMinimizeTitle: "aiAssistantWindowMinimizeTitle", aiAssistantWindowRestoreTitle: "aiAssistantWindowRestoreTitle", filterEqOperator: "filterEqOperator", filterNotEqOperator: "filterNotEqOperator", filterIsNullOperator: "filterIsNullOperator", filterIsNotNullOperator: "filterIsNotNullOperator", filterIsEmptyOperator: "filterIsEmptyOperator", filterIsNotEmptyOperator: "filterIsNotEmptyOperator", filterStartsWithOperator: "filterStartsWithOperator", filterContainsOperator: "filterContainsOperator", filterNotContainsOperator: "filterNotContainsOperator", filterEndsWithOperator: "filterEndsWithOperator", filterGteOperator: "filterGteOperator", filterGtOperator: "filterGtOperator", filterLteOperator: "filterLteOperator", filterLtOperator: "filterLtOperator", filterIsTrue: "filterIsTrue", filterIsFalse: "filterIsFalse", filterBooleanAll: "filterBooleanAll", adaptiveFilterOperatorsTitle: "adaptiveFilterOperatorsTitle", filterAfterOrEqualOperator: "filterAfterOrEqualOperator", filterAfterOperator: "filterAfterOperator", filterBeforeOperator: "filterBeforeOperator", filterBeforeOrEqualOperator: "filterBeforeOrEqualOperator", filterFilterButton: "filterFilterButton", filterClearButton: "filterClearButton", adaptiveCloseButtonTitle: "adaptiveCloseButtonTitle", adaptiveBackButtonTitle: "adaptiveBackButtonTitle", filterAndLogic: "filterAndLogic", filterOrLogic: "filterOrLogic", filterToolbarToolText: "filterToolbarToolText", loading: "loading", gridLabel: "gridLabel", columnMenu: "columnMenu", setColumnPosition: "setColumnPosition", columns: "columns", columnChooserSelectAll: "columnChooserSelectAll", columnChooserSearchLabel: "columnChooserSearchLabel", columnChooserSelectedColumnsCount: "columnChooserSelectedColumnsCount", columnsSubtitle: "columnsSubtitle", adaptiveFilterTitle: "adaptiveFilterTitle", adaptiveSortTitle: "adaptiveSortTitle", adaptiveGroupTitle: "adaptiveGroupTitle", filterClearAllButton: "filterClearAllButton", groupClearButton: "groupClearButton", sortClearButton: "sortClearButton", sortDoneButton: "sortDoneButton", groupDoneButton: "groupDoneButton", lock: "lock", unlock: "unlock", stick: "stick", unstick: "unstick", sortable: "sortable", sortAscending: "sortAscending", sortDescending: "sortDescending", autosizeThisColumn: "autosizeThisColumn", autosizeAllColumns: "autosizeAllColumns", sortedAscending: "sortedAscending", sortedDescending: "sortedDescending", sortedDefault: "sortedDefault", sortToolbarToolText: "sortToolbarToolText", columnsApply: "columnsApply", columnsReset: "columnsReset", detailExpand: "detailExpand", detailCollapse: "detailCollapse", filterDateToday: "filterDateToday", filterDateToggle: "filterDateToggle", filterNumericDecrement: "filterNumericDecrement", filterNumericIncrement: "filterNumericIncrement", selectionCheckboxLabel: "selectionCheckboxLabel", selectAllCheckboxLabel: "selectAllCheckboxLabel", checkboxColumnHeaderLabel: "checkboxColumnHeaderLabel", groupCollapse: "groupCollapse", groupExpand: "groupExpand", topToolbarLabel: "topToolbarLabel", bottomToolbarLabel: "bottomToolbarLabel", editToolbarToolText: "editToolbarToolText", saveToolbarToolText: "saveToolbarToolText", addToolbarToolText: "addToolbarToolText", cancelToolbarToolText: "cancelToolbarToolText", removeToolbarToolText: "removeToolbarToolText", excelExportToolbarToolText: "excelExportToolbarToolText", csvExportToolbarToolText: "csvExportToolbarToolText", pdfExportToolbarToolText: "pdfExportToolbarToolText", groupPanelLabel: "groupPanelLabel", dragRowHandleLabel: "dragRowHandleLabel", columnMenuFilterTabTitle: "columnMenuFilterTabTitle", columnMenuGeneralTabTitle: "columnMenuGeneralTabTitle", columnMenuColumnsTabTitle: "columnMenuColumnsTabTitle", groupChipMenuPrevious: "groupChipMenuPrevious", groupChipMenuNext: "groupChipMenuNext", groupToolbarToolText: "groupToolbarToolText", formValidationErrorText: "formValidationErrorText", removeConfirmationDialogTitle: "removeConfirmationDialogTitle", removeConfirmationDialogContent: "removeConfirmationDialogContent", removeConfirmationDialogConfirmText: "removeConfirmationDialogConfirmText", removeConfirmationDialogRejectText: "removeConfirmationDialogRejectText", externalEditingTitle: "externalEditingTitle", externalEditingAddTitle: "externalEditingAddTitle", externalEditingSaveText: "externalEditingSaveText", externalEditingCancelText: "externalEditingCancelText", multiCheckboxFilterSearchPlaceholder: "multiCheckboxFilterSearchPlaceholder", multiCheckboxFilterSelectAllLabel: "multiCheckboxFilterSelectAllLabel", multiCheckboxFilterSelectedItemsCount: "multiCheckboxFilterSelectedItemsCount", smartBoxSpeechToTextButton: "smartBoxSpeechToTextButton", smartBoxSubmitPromptButton: "smartBoxSubmitPromptButton", smartBoxSearchPlaceholder: "smartBoxSearchPlaceholder", smartBoxSemanticSearchPlaceholder: "smartBoxSemanticSearchPlaceholder", smartBoxAIAssistantPlaceholder: "smartBoxAIAssistantPlaceholder", smartBoxSuggestedPrompts: "smartBoxSuggestedPrompts", smartBoxNoPreviousSearches: "smartBoxNoPreviousSearches", smartBoxNoPreviousPrompts: "smartBoxNoPreviousPrompts", smartBoxPreviouslySearched: "smartBoxPreviouslySearched", smartBoxPreviouslyAsked: "smartBoxPreviouslyAsked", searchModeListItemText: "searchModeListItemText", searchModeListItemDescription: "searchModeListItemDescription", semanticSearchModeListItemText: "semanticSearchModeListItemText", semanticSearchModeListItemDescription: "semanticSearchModeListItemDescription", smartBoxSearchModePopupButton: "smartBoxSearchModePopupButton", smartBoxAIAssistantModePopupButton: "smartBoxAIAssistantModePopupButton", detailColumnHeaderLabel: "detailColumnHeaderLabel", dragColumnHeaderLabel: "dragColumnHeaderLabel", commandColumnHeaderLabel: "commandColumnHeaderLabel" }, usesInheritance: true, ngImport: i0 });
29703
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: GridMessages, isStandalone: true, selector: "kendo-grid-messages-base", inputs: { groupPanelEmpty: "groupPanelEmpty", noRecords: "noRecords", pagerLabel: "pagerLabel", pagerFirstPage: "pagerFirstPage", pagerLastPage: "pagerLastPage", pagerPreviousPage: "pagerPreviousPage", pagerNextPage: "pagerNextPage", pagerPage: "pagerPage", pagerItemsPerPage: "pagerItemsPerPage", pagerOf: "pagerOf", pagerItems: "pagerItems", pagerPageNumberInputTitle: "pagerPageNumberInputTitle", pagerInputLabel: "pagerInputLabel", pagerSelectPage: "pagerSelectPage", filter: "filter", filterInputLabel: "filterInputLabel", filterMenuTitle: "filterMenuTitle", filterMenuOperatorsDropDownLabel: "filterMenuOperatorsDropDownLabel", filterMenuLogicDropDownLabel: "filterMenuLogicDropDownLabel", filterCellOperatorLabel: "filterCellOperatorLabel", booleanFilterCellLabel: "booleanFilterCellLabel", aiAssistantApplyButtonText: "aiAssistantApplyButtonText", aiAssistantToolbarToolText: "aiAssistantToolbarToolText", aiAssistantWindowTitle: "aiAssistantWindowTitle", aiAssistantWindowCloseTitle: "aiAssistantWindowCloseTitle", aiAssistantOutputCardTitle: "aiAssistantOutputCardTitle", aiAssistantOutputCardBodyContent: "aiAssistantOutputCardBodyContent", aiAssistantSelectionNotEnabled: "aiAssistantSelectionNotEnabled", aiAssistantSelectionRowModeRequired: "aiAssistantSelectionRowModeRequired", aiAssistantSelectionCellModeRequired: "aiAssistantSelectionCellModeRequired", aiAssistantWindowMaximizeTitle: "aiAssistantWindowMaximizeTitle", aiAssistantWindowMinimizeTitle: "aiAssistantWindowMinimizeTitle", aiAssistantWindowRestoreTitle: "aiAssistantWindowRestoreTitle", filterEqOperator: "filterEqOperator", filterNotEqOperator: "filterNotEqOperator", filterIsNullOperator: "filterIsNullOperator", filterIsNotNullOperator: "filterIsNotNullOperator", filterIsEmptyOperator: "filterIsEmptyOperator", filterIsNotEmptyOperator: "filterIsNotEmptyOperator", filterStartsWithOperator: "filterStartsWithOperator", filterContainsOperator: "filterContainsOperator", filterNotContainsOperator: "filterNotContainsOperator", filterEndsWithOperator: "filterEndsWithOperator", filterGteOperator: "filterGteOperator", filterGtOperator: "filterGtOperator", filterLteOperator: "filterLteOperator", filterLtOperator: "filterLtOperator", filterIsTrue: "filterIsTrue", filterIsFalse: "filterIsFalse", filterBooleanAll: "filterBooleanAll", adaptiveFilterOperatorsTitle: "adaptiveFilterOperatorsTitle", filterAfterOrEqualOperator: "filterAfterOrEqualOperator", filterAfterOperator: "filterAfterOperator", filterBeforeOperator: "filterBeforeOperator", filterBeforeOrEqualOperator: "filterBeforeOrEqualOperator", filterFilterButton: "filterFilterButton", filterClearButton: "filterClearButton", adaptiveCloseButtonTitle: "adaptiveCloseButtonTitle", adaptiveBackButtonTitle: "adaptiveBackButtonTitle", filterAndLogic: "filterAndLogic", filterOrLogic: "filterOrLogic", filterToolbarToolText: "filterToolbarToolText", loading: "loading", gridLabel: "gridLabel", columnMenu: "columnMenu", setColumnPosition: "setColumnPosition", columns: "columns", columnChooserSelectAll: "columnChooserSelectAll", columnChooserSearchLabel: "columnChooserSearchLabel", columnChooserSelectedColumnsCount: "columnChooserSelectedColumnsCount", columnsSubtitle: "columnsSubtitle", adaptiveFilterTitle: "adaptiveFilterTitle", adaptiveSortTitle: "adaptiveSortTitle", adaptiveGroupTitle: "adaptiveGroupTitle", filterClearAllButton: "filterClearAllButton", groupClearButton: "groupClearButton", sortClearButton: "sortClearButton", sortDoneButton: "sortDoneButton", groupDoneButton: "groupDoneButton", lock: "lock", unlock: "unlock", stick: "stick", unstick: "unstick", sortable: "sortable", sortAscending: "sortAscending", sortDescending: "sortDescending", autosizeThisColumn: "autosizeThisColumn", autosizeAllColumns: "autosizeAllColumns", sortedAscending: "sortedAscending", sortedDescending: "sortedDescending", sortedDefault: "sortedDefault", sortToolbarToolText: "sortToolbarToolText", columnsApply: "columnsApply", columnsReset: "columnsReset", detailExpand: "detailExpand", detailCollapse: "detailCollapse", filterDateToday: "filterDateToday", filterDateToggle: "filterDateToggle", filterNumericDecrement: "filterNumericDecrement", filterNumericIncrement: "filterNumericIncrement", selectionCheckboxLabel: "selectionCheckboxLabel", selectAllCheckboxLabel: "selectAllCheckboxLabel", checkboxColumnHeaderLabel: "checkboxColumnHeaderLabel", groupCollapse: "groupCollapse", groupExpand: "groupExpand", topToolbarLabel: "topToolbarLabel", bottomToolbarLabel: "bottomToolbarLabel", editToolbarToolText: "editToolbarToolText", saveToolbarToolText: "saveToolbarToolText", addToolbarToolText: "addToolbarToolText", cancelToolbarToolText: "cancelToolbarToolText", removeToolbarToolText: "removeToolbarToolText", excelExportToolbarToolText: "excelExportToolbarToolText", csvExportToolbarToolText: "csvExportToolbarToolText", pdfExportToolbarToolText: "pdfExportToolbarToolText", groupPanelLabel: "groupPanelLabel", dragRowHandleLabel: "dragRowHandleLabel", columnMenuFilterTabTitle: "columnMenuFilterTabTitle", columnMenuGeneralTabTitle: "columnMenuGeneralTabTitle", columnMenuColumnsTabTitle: "columnMenuColumnsTabTitle", groupChipMenuPrevious: "groupChipMenuPrevious", groupChipMenuNext: "groupChipMenuNext", groupToolbarToolText: "groupToolbarToolText", formValidationErrorText: "formValidationErrorText", removeConfirmationDialogTitle: "removeConfirmationDialogTitle", removeConfirmationDialogContent: "removeConfirmationDialogContent", removeConfirmationDialogConfirmText: "removeConfirmationDialogConfirmText", removeConfirmationDialogRejectText: "removeConfirmationDialogRejectText", externalEditingTitle: "externalEditingTitle", externalEditingAddTitle: "externalEditingAddTitle", externalEditingSaveText: "externalEditingSaveText", externalEditingCancelText: "externalEditingCancelText", multiCheckboxFilterSearchPlaceholder: "multiCheckboxFilterSearchPlaceholder", multiCheckboxFilterSelectAllLabel: "multiCheckboxFilterSelectAllLabel", multiCheckboxFilterSelectedItemsCount: "multiCheckboxFilterSelectedItemsCount", smartBoxSpeechToTextButton: "smartBoxSpeechToTextButton", smartBoxSubmitPromptButton: "smartBoxSubmitPromptButton", smartBoxSearchPlaceholder: "smartBoxSearchPlaceholder", smartBoxSemanticSearchPlaceholder: "smartBoxSemanticSearchPlaceholder", smartBoxAIAssistantPlaceholder: "smartBoxAIAssistantPlaceholder", smartBoxSuggestedPrompts: "smartBoxSuggestedPrompts", smartBoxNoPreviousSearches: "smartBoxNoPreviousSearches", smartBoxNoPreviousPrompts: "smartBoxNoPreviousPrompts", smartBoxPreviouslySearched: "smartBoxPreviouslySearched", smartBoxPreviouslyAsked: "smartBoxPreviouslyAsked", searchModeListItemText: "searchModeListItemText", searchModeListItemDescription: "searchModeListItemDescription", semanticSearchModeListItemText: "semanticSearchModeListItemText", semanticSearchModeListItemDescription: "semanticSearchModeListItemDescription", smartBoxSearchModePopupButton: "smartBoxSearchModePopupButton", smartBoxAIAssistantModePopupButton: "smartBoxAIAssistantModePopupButton", detailColumnHeaderLabel: "detailColumnHeaderLabel", dragColumnHeaderLabel: "dragColumnHeaderLabel", commandColumnHeaderLabel: "commandColumnHeaderLabel", pinnedTopRowsLabel: "pinnedTopRowsLabel", pinnedBottomRowsLabel: "pinnedBottomRowsLabel", pinMenuPinToTopText: "pinMenuPinToTopText", pinMenuPinToBottomText: "pinMenuPinToBottomText", pinMenuUnpinText: "pinMenuUnpinText", pinColumnHeaderLabel: "pinColumnHeaderLabel" }, usesInheritance: true, ngImport: i0 });
29349
29704
  }
29350
29705
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: GridMessages, decorators: [{
29351
29706
  type: Directive,
@@ -29660,6 +30015,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
29660
30015
  type: Input
29661
30016
  }], commandColumnHeaderLabel: [{
29662
30017
  type: Input
30018
+ }], pinnedTopRowsLabel: [{
30019
+ type: Input
30020
+ }], pinnedBottomRowsLabel: [{
30021
+ type: Input
30022
+ }], pinMenuPinToTopText: [{
30023
+ type: Input
30024
+ }], pinMenuPinToBottomText: [{
30025
+ type: Input
30026
+ }], pinMenuUnpinText: [{
30027
+ type: Input
30028
+ }], pinColumnHeaderLabel: [{
30029
+ type: Input
29663
30030
  }] } });
29664
30031
 
29665
30032
  /**
@@ -32269,6 +32636,211 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
32269
32636
  type: Injectable
32270
32637
  }] });
32271
32638
 
32639
+ /**
32640
+ * @hidden
32641
+ */
32642
+ class RowPinContainerComponent {
32643
+ localization;
32644
+ pinnedWrapper;
32645
+ hostClass = true;
32646
+ get bottomClass() {
32647
+ return this.position === 'bottom';
32648
+ }
32649
+ leafColumns;
32650
+ lockedLeafColumns;
32651
+ nonLockedLeafColumns;
32652
+ sort;
32653
+ position;
32654
+ rowsToRender;
32655
+ totalColumns;
32656
+ lockedWidth;
32657
+ nonLockedWidth;
32658
+ isLocked;
32659
+ selectable;
32660
+ trackBy;
32661
+ groups;
32662
+ detailTemplate;
32663
+ filterable;
32664
+ constructor(localization) {
32665
+ this.localization = localization;
32666
+ }
32667
+ get ariaLabel() {
32668
+ const labelKey = this.position === 'top' ? 'pinnedTopRowsLabel' : 'pinnedBottomRowsLabel';
32669
+ return this.localization.get(labelKey);
32670
+ }
32671
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: RowPinContainerComponent, deps: [{ token: i1$2.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
32672
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: RowPinContainerComponent, isStandalone: true, selector: "kendo-grid-rowpin-container", inputs: { leafColumns: "leafColumns", lockedLeafColumns: "lockedLeafColumns", nonLockedLeafColumns: "nonLockedLeafColumns", sort: "sort", position: "position", rowsToRender: "rowsToRender", totalColumns: "totalColumns", lockedWidth: "lockedWidth", nonLockedWidth: "nonLockedWidth", isLocked: "isLocked", selectable: "selectable", trackBy: "trackBy", groups: "groups", detailTemplate: "detailTemplate", filterable: "filterable" }, host: { properties: { "class.k-grid-pinned-container": "this.hostClass", "class.k-pos-bottom": "this.bottomClass" } }, providers: [{ provide: IS_PIN_CONTAINER, useValue: true }], viewQueries: [{ propertyName: "pinnedWrapper", first: true, predicate: ["pinnedWrapper"], descendants: true, static: true }], ngImport: i0, template: `
32673
+ @if (isLocked) {
32674
+ <div class="k-grid-content-locked" role="presentation" [style.width.px]="lockedWidth">
32675
+ <table class="k-grid-table"
32676
+ kendoGridTable
32677
+ kendoGridResizableTable
32678
+ [style.width.px]="lockedWidth">
32679
+ <colgroup kendoGridColGroup
32680
+ [groups]="groups"
32681
+ [columns]="$any(lockedLeafColumns)"
32682
+ [sort]="sort"
32683
+ [detailTemplate]="detailTemplate">
32684
+ </colgroup>
32685
+ <tbody kendoGridTableBody
32686
+ role="presentation"
32687
+ [isLocked]="true"
32688
+ [rowsToRender]="rowsToRender"
32689
+ [columns]="$any(lockedLeafColumns)"
32690
+ [totalColumnsCount]="totalColumns.leafColumns.length"
32691
+ [totalColumns]="totalColumns"
32692
+ [selectable]="selectable"
32693
+ [trackBy]="trackBy"
32694
+ [isPinContainer]="true"
32695
+ [pinPosition]="position"
32696
+ [groups]="groups"
32697
+ [detailTemplate]="detailTemplate"
32698
+ [filterable]="filterable">
32699
+ </tbody>
32700
+ </table>
32701
+ </div>
32702
+ }
32703
+ <div #pinnedWrapper class="k-grid-pinned-wrap">
32704
+ <table class="k-grid-table"
32705
+ kendoGridTable
32706
+ kendoGridResizableTable
32707
+ [style.width.px]="nonLockedWidth"
32708
+ [attr.aria-label]="ariaLabel">
32709
+ <colgroup kendoGridColGroup
32710
+ [columns]="$any(nonLockedLeafColumns)"
32711
+ [sort]="sort"
32712
+ [groups]="groups"
32713
+ [detailTemplate]="detailTemplate">
32714
+ </colgroup>
32715
+ <tbody kendoGridTableBody
32716
+ role="presentation"
32717
+ [rowsToRender]="rowsToRender"
32718
+ [columns]="$any(nonLockedLeafColumns)"
32719
+ [lockedColumnsCount]="isLocked ? lockedLeafColumns?.length : 0"
32720
+ [totalColumnsCount]="totalColumns.leafColumns.length"
32721
+ [totalColumns]="totalColumns"
32722
+ [selectable]="selectable"
32723
+ [trackBy]="trackBy"
32724
+ [isPinContainer]="true"
32725
+ [pinPosition]="position"
32726
+ [groups]="groups"
32727
+ [detailTemplate]="detailTemplate"
32728
+ [filterable]="filterable">
32729
+ </tbody>
32730
+ </table>
32731
+ </div>
32732
+ `, isInline: true, dependencies: [{ kind: "directive", type: GridTableDirective, selector: "[kendoGridTable]", inputs: ["size"] }, { kind: "directive", type: TableDirective, selector: "[kendoGridResizableTable]", inputs: ["locked", "virtualColumns"] }, { kind: "component", type: ColGroupComponent, selector: "[kendoGridColGroup]", inputs: ["columns", "groups", "detailTemplate", "sort"] }, { kind: "component", type: TableBodyComponent, selector: "[kendoGridTableBody]", inputs: ["columns", "allColumns", "groups", "detailTemplate", "noRecordsTemplate", "rowsToRender", "skip", "selectable", "filterable", "noRecordsText", "isLocked", "isLoading", "isVirtual", "cellLoadingTemplate", "skipGroupDecoration", "lockedColumnsCount", "totalColumnsCount", "virtualColumns", "trackBy", "rowSticky", "totalColumns", "rowClass", "rowHeight", "detailRowHeight", "isPinContainer", "pinPosition"] }] });
32733
+ }
32734
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: RowPinContainerComponent, decorators: [{
32735
+ type: Component,
32736
+ args: [{
32737
+ selector: 'kendo-grid-rowpin-container',
32738
+ template: `
32739
+ @if (isLocked) {
32740
+ <div class="k-grid-content-locked" role="presentation" [style.width.px]="lockedWidth">
32741
+ <table class="k-grid-table"
32742
+ kendoGridTable
32743
+ kendoGridResizableTable
32744
+ [style.width.px]="lockedWidth">
32745
+ <colgroup kendoGridColGroup
32746
+ [groups]="groups"
32747
+ [columns]="$any(lockedLeafColumns)"
32748
+ [sort]="sort"
32749
+ [detailTemplate]="detailTemplate">
32750
+ </colgroup>
32751
+ <tbody kendoGridTableBody
32752
+ role="presentation"
32753
+ [isLocked]="true"
32754
+ [rowsToRender]="rowsToRender"
32755
+ [columns]="$any(lockedLeafColumns)"
32756
+ [totalColumnsCount]="totalColumns.leafColumns.length"
32757
+ [totalColumns]="totalColumns"
32758
+ [selectable]="selectable"
32759
+ [trackBy]="trackBy"
32760
+ [isPinContainer]="true"
32761
+ [pinPosition]="position"
32762
+ [groups]="groups"
32763
+ [detailTemplate]="detailTemplate"
32764
+ [filterable]="filterable">
32765
+ </tbody>
32766
+ </table>
32767
+ </div>
32768
+ }
32769
+ <div #pinnedWrapper class="k-grid-pinned-wrap">
32770
+ <table class="k-grid-table"
32771
+ kendoGridTable
32772
+ kendoGridResizableTable
32773
+ [style.width.px]="nonLockedWidth"
32774
+ [attr.aria-label]="ariaLabel">
32775
+ <colgroup kendoGridColGroup
32776
+ [columns]="$any(nonLockedLeafColumns)"
32777
+ [sort]="sort"
32778
+ [groups]="groups"
32779
+ [detailTemplate]="detailTemplate">
32780
+ </colgroup>
32781
+ <tbody kendoGridTableBody
32782
+ role="presentation"
32783
+ [rowsToRender]="rowsToRender"
32784
+ [columns]="$any(nonLockedLeafColumns)"
32785
+ [lockedColumnsCount]="isLocked ? lockedLeafColumns?.length : 0"
32786
+ [totalColumnsCount]="totalColumns.leafColumns.length"
32787
+ [totalColumns]="totalColumns"
32788
+ [selectable]="selectable"
32789
+ [trackBy]="trackBy"
32790
+ [isPinContainer]="true"
32791
+ [pinPosition]="position"
32792
+ [groups]="groups"
32793
+ [detailTemplate]="detailTemplate"
32794
+ [filterable]="filterable">
32795
+ </tbody>
32796
+ </table>
32797
+ </div>
32798
+ `,
32799
+ standalone: true,
32800
+ imports: [GridTableDirective, TableDirective, ColGroupComponent, TableBodyComponent],
32801
+ providers: [{ provide: IS_PIN_CONTAINER, useValue: true }]
32802
+ }]
32803
+ }], ctorParameters: () => [{ type: i1$2.LocalizationService }], propDecorators: { pinnedWrapper: [{
32804
+ type: ViewChild,
32805
+ args: ['pinnedWrapper', { static: true }]
32806
+ }], hostClass: [{
32807
+ type: HostBinding,
32808
+ args: ['class.k-grid-pinned-container']
32809
+ }], bottomClass: [{
32810
+ type: HostBinding,
32811
+ args: ['class.k-pos-bottom']
32812
+ }], leafColumns: [{
32813
+ type: Input
32814
+ }], lockedLeafColumns: [{
32815
+ type: Input
32816
+ }], nonLockedLeafColumns: [{
32817
+ type: Input
32818
+ }], sort: [{
32819
+ type: Input
32820
+ }], position: [{
32821
+ type: Input
32822
+ }], rowsToRender: [{
32823
+ type: Input
32824
+ }], totalColumns: [{
32825
+ type: Input
32826
+ }], lockedWidth: [{
32827
+ type: Input
32828
+ }], nonLockedWidth: [{
32829
+ type: Input
32830
+ }], isLocked: [{
32831
+ type: Input
32832
+ }], selectable: [{
32833
+ type: Input
32834
+ }], trackBy: [{
32835
+ type: Input
32836
+ }], groups: [{
32837
+ type: Input
32838
+ }], detailTemplate: [{
32839
+ type: Input
32840
+ }], filterable: [{
32841
+ type: Input
32842
+ }] } });
32843
+
32272
32844
  const createControl = (source) => (acc, key) => {
32273
32845
  acc[key] = new FormControl(source[key]);
32274
32846
  return acc;
@@ -32316,6 +32888,7 @@ const NOTIFY_DELAY = 500;
32316
32888
  * {@link GridSpacerComponent},
32317
32889
  * {@link PDFComponent},
32318
32890
  * {@link RowReorderColumnComponent},
32891
+ * {@link RowPinColumnComponent},
32319
32892
  * {@link SpanColumnComponent},
32320
32893
  * {@link ToolBarComponent}.
32321
32894
  */
@@ -32354,6 +32927,7 @@ class GridComponent {
32354
32927
  aiRequestResponseService;
32355
32928
  idService;
32356
32929
  searchService;
32930
+ rowPinService;
32357
32931
  /**
32358
32932
  * Sets the data of the Grid. If you provide an array, the Grid gets the total count automatically.
32359
32933
  * ([more information and example](https://www.telerik.com/kendo-angular-ui/components/grid/data-binding/basics)).
@@ -32843,6 +33417,72 @@ class GridComponent {
32843
33417
  * @default 'columns'
32844
33418
  */
32845
33419
  dataLayoutMode = 'columns';
33420
+ /**
33421
+ * Enables the end user to pin rows through the UI. You can set it to `true` to allow pinning to both top and bottom, or specify the desired pinning location by providing a `GridRowPinLocation`.
33422
+ * By default, the row pinning feature is disabled.
33423
+ *
33424
+ * @default false
33425
+ */
33426
+ set pinnable(value) {
33427
+ if (value !== this._pinnable) {
33428
+ this._pinnable = value;
33429
+ this.rowPinSubscription?.unsubscribe();
33430
+ if (value !== false) {
33431
+ this.rowPinSubscription = this.rowPinService.changes.subscribe(args => {
33432
+ this.ngZone.run(() => {
33433
+ this.rowPinChange.emit(args);
33434
+ });
33435
+ });
33436
+ }
33437
+ }
33438
+ }
33439
+ get pinnable() {
33440
+ return this._pinnable;
33441
+ }
33442
+ /**
33443
+ * The array of data items pinned to the top of the Grid.
33444
+ * Pinned rows remain visible while the body scrolls and are immune to filtering and pagination.
33445
+ *
33446
+ * Requires setting pinnable to `true` or a valid `GridRowPinLocation`.
33447
+ */
33448
+ pinnedTopRows;
33449
+ /**
33450
+ * @hidden
33451
+ */
33452
+ get pinnedTopRowsToRender() {
33453
+ const topPinnedView = new DataResultIterator(this.pinnedTopRows, 0, this.hasGroupFooters);
33454
+ const items = this.dataMappingService.dataMapper(topPinnedView, this.nonLockedLeafColumns, this.lockedLeafColumns, this.detailTemplate, this.showGroupFooters);
33455
+ this.adjustPinnedItemIndexes(items);
33456
+ return items;
33457
+ }
33458
+ /**
33459
+ * The array of data items pinned to the bottom of the Grid.
33460
+ * Pinned rows remain visible while the body scrolls and are immune to filtering and pagination.
33461
+ *
33462
+ * Requires setting pinnable to `true` or a valid `GridRowPinLocation`.
33463
+ */
33464
+ pinnedBottomRows;
33465
+ /**
33466
+ * @hidden
33467
+ */
33468
+ get pinnedBottomRowsToRender() {
33469
+ const bottomPinnedView = new DataResultIterator(this.pinnedBottomRows, 0, this.hasGroupFooters);
33470
+ const items = this.dataMappingService.dataMapper(bottomPinnedView, this.nonLockedLeafColumns, this.lockedLeafColumns, this.detailTemplate, this.showGroupFooters);
33471
+ this.adjustPinnedItemIndexes(items);
33472
+ return items;
33473
+ }
33474
+ /**
33475
+ * Sets a function to determine if a data row is pinnable.
33476
+ */
33477
+ set isRowPinnable(fn) {
33478
+ if (isDevMode() && typeof fn !== 'function') {
33479
+ throw new Error(GridConfigurationErrorMessages.functionType('isRowPinnable', fn));
33480
+ }
33481
+ this._isRowPinnable = fn;
33482
+ }
33483
+ get isRowPinnable() {
33484
+ return this._isRowPinnable;
33485
+ }
32846
33486
  /**
32847
33487
  * Fires when the Grid data is filtered through the UI and the filter descriptor changes.
32848
33488
  */
@@ -32867,6 +33507,10 @@ class GridComponent {
32867
33507
  * Fires when a row is reordered through the UI.
32868
33508
  */
32869
33509
  rowReorder = new EventEmitter();
33510
+ /**
33511
+ * Fires when a row’s pinned state is updated through the UI.
33512
+ */
33513
+ rowPinChange = new EventEmitter();
32870
33514
  /**
32871
33515
  * Fires when the data state of the Grid is changed.
32872
33516
  */
@@ -33080,6 +33724,7 @@ class GridComponent {
33080
33724
  columnMenuTemplates;
33081
33725
  lockedHeader;
33082
33726
  header;
33727
+ pinnedContainers;
33083
33728
  footer = new QueryList();
33084
33729
  ariaRoot;
33085
33730
  dragTargetContainer;
@@ -33159,7 +33804,9 @@ class GridComponent {
33159
33804
  return this.groupable && this.groupable.showFooter;
33160
33805
  }
33161
33806
  get ariaRowCount() {
33162
- return this.totalColumnLevels + 1 + this.view.total + (hasFilterRow(this.filterable) ? 1 : 0);
33807
+ const pinnedTopCount = this.pinnedTopRows?.length ?? 0;
33808
+ const pinnedBottomCount = this.pinnedBottomRows?.length ?? 0;
33809
+ return this.totalColumnLevels + 1 + this.view.total + (hasFilterRow(this.filterable) ? 1 : 0) + pinnedTopCount + pinnedBottomCount;
33163
33810
  }
33164
33811
  get ariaColCount() {
33165
33812
  return this.columnsContainer.leafColumnsToRender.length;
@@ -33173,6 +33820,17 @@ class GridComponent {
33173
33820
  get flatData() {
33174
33821
  return isArray(this.data) ? this.data : this.data.data;
33175
33822
  }
33823
+ adjustPinnedItemIndexes(items) {
33824
+ const flatData = this.flatData;
33825
+ items.forEach((item) => {
33826
+ if (item.type === 'data') {
33827
+ const pageIdx = flatData.indexOf(item.data);
33828
+ if (pageIdx >= 0) {
33829
+ item.index = this.skip + pageIdx;
33830
+ }
33831
+ }
33832
+ });
33833
+ }
33176
33834
  shouldGenerateColumns = true;
33177
33835
  direction;
33178
33836
  notifyTimeout = null;
@@ -33184,6 +33842,7 @@ class GridComponent {
33184
33842
  defaultSelection;
33185
33843
  _rowSelected = null;
33186
33844
  _isRowSelectable = null;
33845
+ _isRowPinnable = null;
33187
33846
  _cellSelected = null;
33188
33847
  _customDetailTemplate;
33189
33848
  _cellLoadingTemplate;
@@ -33194,6 +33853,7 @@ class GridComponent {
33194
33853
  _customToolbarTemplate;
33195
33854
  _detailTemplateChildren;
33196
33855
  _rowReorderable = false;
33856
+ _pinnable = false;
33197
33857
  leafViewportColumns;
33198
33858
  viewportColumns;
33199
33859
  _navigable = ['table', 'pager', 'toolbar'];
@@ -33214,6 +33874,12 @@ class GridComponent {
33214
33874
  get isStacked() {
33215
33875
  return typeof this.dataLayoutMode === 'string' ? this.dataLayoutMode !== 'columns' : this.dataLayoutMode.mode !== 'columns';
33216
33876
  }
33877
+ /**
33878
+ * @hidden
33879
+ */
33880
+ get isPinnable() {
33881
+ return this._pinnable !== false;
33882
+ }
33217
33883
  get visibleColumns() {
33218
33884
  return this.columnsContainer.allColumns;
33219
33885
  }
@@ -33322,9 +33988,11 @@ class GridComponent {
33322
33988
  focusElementSubscription;
33323
33989
  columnRangeChangeSubscription;
33324
33990
  rowReorderSubscription;
33991
+ rowPinSubscription;
33992
+ pinnedContainersChangeSubscription;
33325
33993
  rtl = false;
33326
33994
  _rowSticky;
33327
- constructor(supportService, selectionService, cellSelectionService, wrapper, groupInfoService, groupsService, changeNotification, detailsService, editService, filterService, pdfService, responsiveService, renderer, excelService, csvService, ngZone, scrollSyncService, domEvents, columnResizingService, changeDetectorRef, columnReorderService, columnInfoService, navigationService, sortService, scrollRequestService, localization, ctx, sizingService, adaptiveGridService, rowReorderService, dataMappingService, aiRequestResponseService, idService, searchService) {
33995
+ constructor(supportService, selectionService, cellSelectionService, wrapper, groupInfoService, groupsService, changeNotification, detailsService, editService, filterService, pdfService, responsiveService, renderer, excelService, csvService, ngZone, scrollSyncService, domEvents, columnResizingService, changeDetectorRef, columnReorderService, columnInfoService, navigationService, sortService, scrollRequestService, localization, ctx, sizingService, adaptiveGridService, rowReorderService, dataMappingService, aiRequestResponseService, idService, searchService, rowPinService) {
33328
33996
  this.supportService = supportService;
33329
33997
  this.selectionService = selectionService;
33330
33998
  this.cellSelectionService = cellSelectionService;
@@ -33359,6 +34027,7 @@ class GridComponent {
33359
34027
  this.aiRequestResponseService = aiRequestResponseService;
33360
34028
  this.idService = idService;
33361
34029
  this.searchService = searchService;
34030
+ this.rowPinService = rowPinService;
33362
34031
  const isValid = validatePackage(packageMetadata);
33363
34032
  this.licenseMessage = getLicenseMessage(packageMetadata);
33364
34033
  this.showLicenseWatermark = shouldShowValidationUI(isValid);
@@ -33556,6 +34225,11 @@ class GridComponent {
33556
34225
  if (isChanged$1("scrollable", changes) && this.isScrollable) {
33557
34226
  this.ngZone.onStable.pipe(take(1)).subscribe(() => this.attachScrollSync());
33558
34227
  }
34228
+ if (isChanged$1("pinnable", changes) || isChanged$1("pinnedTopRows", changes) || isChanged$1("pinnedBottomRows", changes)) {
34229
+ if (this.isPinnable) {
34230
+ this.ngZone.onStable.pipe(take(1)).subscribe(() => this.attachScrollSync());
34231
+ }
34232
+ }
33559
34233
  if (isChanged$1("selectable", changes) && this.shouldResetSelection(changes['selectable'])) {
33560
34234
  if (this.defaultSelection) {
33561
34235
  this.defaultSelection.reset();
@@ -33626,6 +34300,9 @@ class GridComponent {
33626
34300
  if (this.rowReorderSubscription) {
33627
34301
  this.rowReorderSubscription.unsubscribe();
33628
34302
  }
34303
+ if (this.rowPinSubscription) {
34304
+ this.rowPinSubscription.unsubscribe();
34305
+ }
33629
34306
  if (this.columnReorderSubscription) {
33630
34307
  this.columnReorderSubscription.unsubscribe();
33631
34308
  }
@@ -33703,6 +34380,9 @@ class GridComponent {
33703
34380
  this.rowReorderSubscription.unsubscribe();
33704
34381
  }
33705
34382
  this.columnRangeChangeSubscription.unsubscribe();
34383
+ if (this.pinnedContainersChangeSubscription) {
34384
+ this.pinnedContainersChangeSubscription.unsubscribe();
34385
+ }
33706
34386
  }
33707
34387
  /**
33708
34388
  * @hidden
@@ -33723,7 +34403,23 @@ class GridComponent {
33723
34403
  if (this.header) {
33724
34404
  this.scrollSyncService.registerEmitter(this.header.nativeElement, "header");
33725
34405
  }
34406
+ if (this.pinnedContainers) {
34407
+ if (this.pinnedContainersChangeSubscription) {
34408
+ this.pinnedContainersChangeSubscription.unsubscribe();
34409
+ }
34410
+ this.pinnedContainersChangeSubscription = observe(this.pinnedContainers)
34411
+ .subscribe(containers => containers
34412
+ .map(container => container.pinnedWrapper.nativeElement)
34413
+ .filter(isPresent)
34414
+ .forEach(element => {
34415
+ this.scrollSyncService.registerEmitter(element, 'pinnedContainer');
34416
+ element.scrollLeft = this.wrapper.nativeElement.querySelector('.k-grid-content')?.scrollLeft;
34417
+ }));
34418
+ }
33726
34419
  if (this.footer) {
34420
+ if (this.footerChangeSubscription) {
34421
+ this.footerChangeSubscription.unsubscribe();
34422
+ }
33727
34423
  this.footerChangeSubscription = observe(this.footer)
33728
34424
  .subscribe(footers => footers
33729
34425
  .map(footer => footer.nativeElement)
@@ -34416,7 +35112,7 @@ class GridComponent {
34416
35112
  const { action, rowIndex, formGroup } = args;
34417
35113
  let dataItem = this.view.at(rowIndex - this.skip);
34418
35114
  if (action !== 'add' && !dataItem) {
34419
- dataItem = formGroup.value;
35115
+ dataItem = formGroup?.value;
34420
35116
  }
34421
35117
  this.closeCell();
34422
35118
  Object.assign(args, {
@@ -34609,7 +35305,7 @@ class GridComponent {
34609
35305
  const addRowOffset = this.editService.hasNewItem ? 1 : 0;
34610
35306
  const filterRowOffset = hasFilterRow(this.filterable) ? 1 : 0;
34611
35307
  const headerRows = this.isStacked ? 0 : this.totalColumnLevels + 1 + filterRowOffset + addRowOffset;
34612
- return new NavigationMetadata(dataRows, headerRows, isVirtual, this.hasPager, isPresent(this.detailTemplate), this.wrapper, this.virtualColumns, this.columnsContainer, this.showFooter ? 1 : 0, this.isStacked);
35308
+ return new NavigationMetadata(dataRows, headerRows, isVirtual, this.hasPager, isPresent(this.detailTemplate), this.wrapper, this.virtualColumns, this.columnsContainer, this.showFooter ? 1 : 0, this.isStacked, this.pinnedTopRows?.length ?? 0, this.pinnedBottomRows?.length ?? 0);
34613
35309
  }
34614
35310
  applyAutoSize() {
34615
35311
  const cols = this.columns.filter((c) => this.autoSize ? c.autoSize !== false : c.autoSize);
@@ -34711,8 +35407,8 @@ class GridComponent {
34711
35407
  this.dragTargetContainer?.notify();
34712
35408
  this.dropTargetContainer?.notify();
34713
35409
  }
34714
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: GridComponent, deps: [{ token: i1$3.ScrollbarService }, { token: SelectionService }, { token: CellSelectionService }, { token: i0.ElementRef }, { token: GroupInfoService }, { token: GroupsService }, { token: ChangeNotificationService }, { token: DetailsService }, { token: EditService }, { token: FilterService }, { token: PDFService }, { token: ResponsiveService }, { token: i0.Renderer2 }, { token: ExcelService }, { token: CSVService }, { token: i0.NgZone }, { token: ScrollSyncService }, { token: DomEventsService }, { token: ColumnResizingService }, { token: i0.ChangeDetectorRef }, { token: ColumnReorderService }, { token: ColumnInfoService }, { token: NavigationService }, { token: SortService }, { token: ScrollRequestService }, { token: i1$2.LocalizationService }, { token: ContextService }, { token: SizingOptionsService }, { token: AdaptiveGridService }, { token: RowReorderService }, { token: DataMappingService }, { token: GridAIRequestResponseService }, { token: IdService }, { token: SearchService }], target: i0.ɵɵFactoryTarget.Component });
34715
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: GridComponent, isStandalone: true, selector: "kendo-grid", inputs: { data: "data", pageSize: "pageSize", height: "height", rowHeight: "rowHeight", adaptiveMode: "adaptiveMode", detailRowHeight: "detailRowHeight", skip: "skip", scrollable: "scrollable", selectable: "selectable", sort: "sort", size: "size", trackBy: "trackBy", filter: "filter", group: "group", virtualColumns: "virtualColumns", filterable: "filterable", sortable: "sortable", pageable: "pageable", groupable: "groupable", gridResizable: "gridResizable", rowReorderable: "rowReorderable", navigable: "navigable", autoSize: "autoSize", rowClass: "rowClass", rowSticky: "rowSticky", rowSelected: "rowSelected", isRowSelectable: "isRowSelectable", cellSelected: "cellSelected", resizable: "resizable", reorderable: "reorderable", loading: "loading", columnMenu: "columnMenu", hideHeader: "hideHeader", showInactiveTools: "showInactiveTools", isDetailExpanded: "isDetailExpanded", isGroupExpanded: "isGroupExpanded", dataLayoutMode: "dataLayoutMode" }, outputs: { filterChange: "filterChange", pageChange: "pageChange", groupChange: "groupChange", sortChange: "sortChange", selectionChange: "selectionChange", rowReorder: "rowReorder", dataStateChange: "dataStateChange", gridStateChange: "gridStateChange", groupExpand: "groupExpand", groupCollapse: "groupCollapse", detailExpand: "detailExpand", detailCollapse: "detailCollapse", edit: "edit", cancel: "cancel", save: "save", remove: "remove", add: "add", cellClose: "cellClose", cellClick: "cellClick", pdfExport: "pdfExport", excelExport: "excelExport", csvExport: "csvExport", columnResize: "columnResize", columnReorder: "columnReorder", columnVisibilityChange: "columnVisibilityChange", columnLockedChange: "columnLockedChange", columnStickyChange: "columnStickyChange", scrollBottom: "scrollBottom", contentScroll: "contentScroll" }, host: { properties: { "attr.dir": "this.dir", "class.k-grid": "this.hostClass", "class.k-grid-sm": "this.sizeSmallClass", "class.k-grid-md": "this.sizeMediumClass", "class.k-grid-stack": "this.stackedClass", "class.k-grid-lockedcolumns": "this.lockedClasses", "class.k-grid-virtual": "this.virtualClasses", "class.k-grid-no-scrollbar": "this.noScrollbarClass", "class.k-grid-resizable": "this.isResizable", "style.minWidth": "this.minWidth", "style.maxWidth": "this.maxWidth", "style.minHeight": "this.minHeight", "style.maxHeight": "this.maxHeight" } }, providers: [
35410
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: GridComponent, deps: [{ token: i1$3.ScrollbarService }, { token: SelectionService }, { token: CellSelectionService }, { token: i0.ElementRef }, { token: GroupInfoService }, { token: GroupsService }, { token: ChangeNotificationService }, { token: DetailsService }, { token: EditService }, { token: FilterService }, { token: PDFService }, { token: ResponsiveService }, { token: i0.Renderer2 }, { token: ExcelService }, { token: CSVService }, { token: i0.NgZone }, { token: ScrollSyncService }, { token: DomEventsService }, { token: ColumnResizingService }, { token: i0.ChangeDetectorRef }, { token: ColumnReorderService }, { token: ColumnInfoService }, { token: NavigationService }, { token: SortService }, { token: ScrollRequestService }, { token: i1$2.LocalizationService }, { token: ContextService }, { token: SizingOptionsService }, { token: AdaptiveGridService }, { token: RowReorderService }, { token: DataMappingService }, { token: GridAIRequestResponseService }, { token: IdService }, { token: SearchService }, { token: RowPinService }], target: i0.ɵɵFactoryTarget.Component });
35411
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: GridComponent, isStandalone: true, selector: "kendo-grid", inputs: { data: "data", pageSize: "pageSize", height: "height", rowHeight: "rowHeight", adaptiveMode: "adaptiveMode", detailRowHeight: "detailRowHeight", skip: "skip", scrollable: "scrollable", selectable: "selectable", sort: "sort", size: "size", trackBy: "trackBy", filter: "filter", group: "group", virtualColumns: "virtualColumns", filterable: "filterable", sortable: "sortable", pageable: "pageable", groupable: "groupable", gridResizable: "gridResizable", rowReorderable: "rowReorderable", navigable: "navigable", autoSize: "autoSize", rowClass: "rowClass", rowSticky: "rowSticky", rowSelected: "rowSelected", isRowSelectable: "isRowSelectable", cellSelected: "cellSelected", resizable: "resizable", reorderable: "reorderable", loading: "loading", columnMenu: "columnMenu", hideHeader: "hideHeader", showInactiveTools: "showInactiveTools", isDetailExpanded: "isDetailExpanded", isGroupExpanded: "isGroupExpanded", dataLayoutMode: "dataLayoutMode", pinnable: "pinnable", pinnedTopRows: "pinnedTopRows", pinnedBottomRows: "pinnedBottomRows", isRowPinnable: "isRowPinnable" }, outputs: { filterChange: "filterChange", pageChange: "pageChange", groupChange: "groupChange", sortChange: "sortChange", selectionChange: "selectionChange", rowReorder: "rowReorder", rowPinChange: "rowPinChange", dataStateChange: "dataStateChange", gridStateChange: "gridStateChange", groupExpand: "groupExpand", groupCollapse: "groupCollapse", detailExpand: "detailExpand", detailCollapse: "detailCollapse", edit: "edit", cancel: "cancel", save: "save", remove: "remove", add: "add", cellClose: "cellClose", cellClick: "cellClick", pdfExport: "pdfExport", excelExport: "excelExport", csvExport: "csvExport", columnResize: "columnResize", columnReorder: "columnReorder", columnVisibilityChange: "columnVisibilityChange", columnLockedChange: "columnLockedChange", columnStickyChange: "columnStickyChange", scrollBottom: "scrollBottom", contentScroll: "contentScroll" }, host: { properties: { "attr.dir": "this.dir", "class.k-grid": "this.hostClass", "class.k-grid-sm": "this.sizeSmallClass", "class.k-grid-md": "this.sizeMediumClass", "class.k-grid-stack": "this.stackedClass", "class.k-grid-lockedcolumns": "this.lockedClasses", "class.k-grid-virtual": "this.virtualClasses", "class.k-grid-no-scrollbar": "this.noScrollbarClass", "class.k-grid-resizable": "this.isResizable", "style.minWidth": "this.minWidth", "style.maxWidth": "this.maxWidth", "style.minHeight": "this.minHeight", "style.maxHeight": "this.maxHeight" } }, providers: [
34716
35412
  LocalizationService,
34717
35413
  ColumnInfoService,
34718
35414
  SelectionService,
@@ -34764,8 +35460,9 @@ class GridComponent {
34764
35460
  ColumnMenuService,
34765
35461
  MenuTabbingService,
34766
35462
  DataMappingService,
34767
- SearchService
34768
- ], queries: [{ propertyName: "columns", predicate: ColumnBase }, { propertyName: "detailTemplateChildren", predicate: DetailTemplateDirective }, { propertyName: "cellLoadingTemplateChildren", predicate: CellLoadingTemplateDirective }, { propertyName: "loadingTemplateChildren", predicate: LoadingTemplateDirective }, { propertyName: "statusBarTemplateChildren", predicate: StatusBarTemplateDirective }, { propertyName: "noRecordsTemplateChildren", predicate: NoRecordsTemplateDirective }, { propertyName: "pagerTemplateChildren", predicate: PagerTemplateDirective }, { propertyName: "toolbarTemplateChildren", predicate: ToolbarTemplateDirective }, { propertyName: "columnMenuTemplates", predicate: ColumnMenuTemplateDirective }], viewQueries: [{ propertyName: "lockedHeader", first: true, predicate: ["lockedHeader"], descendants: true }, { propertyName: "header", first: true, predicate: ["header"], descendants: true }, { propertyName: "ariaRoot", first: true, predicate: ["ariaRoot"], descendants: true, static: true }, { propertyName: "dragTargetContainer", first: true, predicate: DragTargetContainerDirective, descendants: true }, { propertyName: "dropTargetContainer", first: true, predicate: DropTargetContainerDirective, descendants: true }, { propertyName: "dialogContainer", first: true, predicate: ["dialogContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "windowContainer", first: true, predicate: ["windowContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "adaptiveRenderer", first: true, predicate: AdaptiveRendererComponent, descendants: true }, { propertyName: "listComponent", first: true, predicate: ListComponent, descendants: true }, { propertyName: "footer", predicate: ["footer"], descendants: true }], exportAs: ["kendoGrid"], usesOnChanges: true, ngImport: i0, template: `
35463
+ SearchService,
35464
+ RowPinService
35465
+ ], queries: [{ propertyName: "columns", predicate: ColumnBase }, { propertyName: "detailTemplateChildren", predicate: DetailTemplateDirective }, { propertyName: "cellLoadingTemplateChildren", predicate: CellLoadingTemplateDirective }, { propertyName: "loadingTemplateChildren", predicate: LoadingTemplateDirective }, { propertyName: "statusBarTemplateChildren", predicate: StatusBarTemplateDirective }, { propertyName: "noRecordsTemplateChildren", predicate: NoRecordsTemplateDirective }, { propertyName: "pagerTemplateChildren", predicate: PagerTemplateDirective }, { propertyName: "toolbarTemplateChildren", predicate: ToolbarTemplateDirective }, { propertyName: "columnMenuTemplates", predicate: ColumnMenuTemplateDirective }], viewQueries: [{ propertyName: "lockedHeader", first: true, predicate: ["lockedHeader"], descendants: true }, { propertyName: "header", first: true, predicate: ["header"], descendants: true }, { propertyName: "ariaRoot", first: true, predicate: ["ariaRoot"], descendants: true, static: true }, { propertyName: "dragTargetContainer", first: true, predicate: DragTargetContainerDirective, descendants: true }, { propertyName: "dropTargetContainer", first: true, predicate: DropTargetContainerDirective, descendants: true }, { propertyName: "dialogContainer", first: true, predicate: ["dialogContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "windowContainer", first: true, predicate: ["windowContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "adaptiveRenderer", first: true, predicate: AdaptiveRendererComponent, descendants: true }, { propertyName: "listComponent", first: true, predicate: ListComponent, descendants: true }, { propertyName: "pinnedContainers", predicate: RowPinContainerComponent, descendants: true }, { propertyName: "footer", predicate: ["footer"], descendants: true }], exportAs: ["kendoGrid"], usesOnChanges: true, ngImport: i0, template: `
34769
35466
  <ng-container kendoGridLocalizedMessages
34770
35467
  i18n-groupPanelEmpty="kendo.grid.groupPanelEmpty|The label visible in the Grid group panel when it is empty"
34771
35468
  groupPanelEmpty="Drag a column header and drop it here to group by that column"
@@ -35228,6 +35925,24 @@ class GridComponent {
35228
35925
 
35229
35926
  i18n-commandColumnHeaderLabel="kendo.grid.commandColumnHeaderLabel|The screen-reader-only content for the command column header"
35230
35927
  commandColumnHeaderLabel="Command"
35928
+
35929
+ i18n-pinnedTopRowsLabel="kendo.grid.pinnedTopRowsLabel|The aria-label for the pinned top rows container."
35930
+ pinnedTopRowsLabel="Pinned top rows"
35931
+
35932
+ i18n-pinnedBottomRowsLabel="kendo.grid.pinnedBottomRowsLabel|The aria-label for the pinned bottom rows container."
35933
+ pinnedBottomRowsLabel="Pinned bottom rows"
35934
+
35935
+ i18n-pinMenuPinToTopText="kendo.grid.pinMenuPinToTopText|The text for the **Pin row to top** option in the pin context menu."
35936
+ pinMenuPinToTopText="Pin row to top"
35937
+
35938
+ i18n-pinMenuPinToBottomText="kendo.grid.pinMenuPinToBottomText|The text for the **Pin row to bottom** option in the pin context menu."
35939
+ pinMenuPinToBottomText="Pin row to bottom"
35940
+
35941
+ i18n-pinMenuUnpinText="kendo.grid.pinMenuUnpinText|The text for the **Unpin** option in the pin context menu."
35942
+ pinMenuUnpinText="Unpin"
35943
+
35944
+ i18n-pinColumnHeaderLabel="kendo.grid.pinColumnHeaderLabel|The screen-reader-only content for the pin column header"
35945
+ pinColumnHeaderLabel="Actions"
35231
35946
  >
35232
35947
  </ng-container>
35233
35948
  @if (showTopToolbar) {
@@ -35411,6 +36126,26 @@ class GridComponent {
35411
36126
  </div>
35412
36127
  </div>
35413
36128
  }
36129
+ @if (isPinnable && pinnedTopRows?.length > 0) {
36130
+ <kendo-grid-rowpin-container
36131
+ [leafColumns]="$any(leafColumns)"
36132
+ [lockedLeafColumns]="lockedLeafColumns"
36133
+ [nonLockedLeafColumns]="nonLockedLeafColumns"
36134
+ [sort]="sort"
36135
+ position="top"
36136
+ [rowsToRender]="pinnedTopRowsToRender"
36137
+ [totalColumns]="columnsContainer"
36138
+ [lockedWidth]="lockedWidth"
36139
+ [nonLockedWidth]="nonLockedWidth"
36140
+ [isLocked]="isLocked"
36141
+ [selectable]="selectable"
36142
+ [trackBy]="trackBy"
36143
+ [groups]="group"
36144
+ [detailTemplate]="detailTemplate"
36145
+ [filterable]="filterable">
36146
+ </kendo-grid-rowpin-container>
36147
+ }
36148
+
35414
36149
  <kendo-grid-list
35415
36150
  [data]="$any(view)"
35416
36151
  [rowHeight]="rowHeight"
@@ -35442,6 +36177,26 @@ class GridComponent {
35442
36177
  [enableDrag]="marqueeSelection"
35443
36178
  [sort]="sort">
35444
36179
  </kendo-grid-list>
36180
+
36181
+ @if (isPinnable && pinnedBottomRows?.length > 0) {
36182
+ <kendo-grid-rowpin-container
36183
+ [leafColumns]="$any(leafColumns)"
36184
+ [lockedLeafColumns]="lockedLeafColumns"
36185
+ [nonLockedLeafColumns]="nonLockedLeafColumns"
36186
+ [sort]="sort"
36187
+ position="bottom"
36188
+ [rowsToRender]="pinnedBottomRowsToRender"
36189
+ [totalColumns]="columnsContainer"
36190
+ [lockedWidth]="lockedWidth"
36191
+ [nonLockedWidth]="nonLockedWidth"
36192
+ [isLocked]="isLocked"
36193
+ [selectable]="selectable"
36194
+ [trackBy]="trackBy"
36195
+ [groups]="group"
36196
+ [detailTemplate]="detailTemplate"
36197
+ [filterable]="filterable">
36198
+ </kendo-grid-rowpin-container>
36199
+ }
35445
36200
  @if (showFooter) {
35446
36201
  <div
35447
36202
  class="k-grid-footer"
@@ -35511,6 +36266,25 @@ class GridComponent {
35511
36266
  }
35512
36267
  }
35513
36268
  @if (!isScrollable) {
36269
+ @if (isPinnable && pinnedTopRows?.length > 0) {
36270
+ <kendo-grid-rowpin-container
36271
+ [leafColumns]="$any(leafColumns)"
36272
+ [lockedLeafColumns]="lockedLeafColumns"
36273
+ [nonLockedLeafColumns]="nonLockedLeafColumns"
36274
+ [sort]="$any(sort)"
36275
+ position="top"
36276
+ [rowsToRender]="pinnedTopRowsToRender"
36277
+ [totalColumns]="columnsContainer"
36278
+ [lockedWidth]="lockedWidth"
36279
+ [nonLockedWidth]="nonLockedWidth"
36280
+ [isLocked]="isLocked"
36281
+ [selectable]="selectable"
36282
+ [trackBy]="trackBy"
36283
+ [groups]="group"
36284
+ [detailTemplate]="detailTemplate"
36285
+ [filterable]="filterable">
36286
+ </kendo-grid-rowpin-container>
36287
+ }
35514
36288
  <table
35515
36289
  [style.table-layout]="resizable ? 'fixed' : null"
35516
36290
  kendoGridTable
@@ -35579,6 +36353,25 @@ class GridComponent {
35579
36353
  </tfoot>
35580
36354
  }
35581
36355
  </table>
36356
+ @if (isPinnable && pinnedBottomRows?.length > 0) {
36357
+ <kendo-grid-rowpin-container
36358
+ [leafColumns]="$any(leafColumns)"
36359
+ [lockedLeafColumns]="lockedLeafColumns"
36360
+ [nonLockedLeafColumns]="nonLockedLeafColumns"
36361
+ [sort]="$any(sort)"
36362
+ position="bottom"
36363
+ [rowsToRender]="pinnedBottomRowsToRender"
36364
+ [totalColumns]="columnsContainer"
36365
+ [lockedWidth]="lockedWidth"
36366
+ [nonLockedWidth]="nonLockedWidth"
36367
+ [isLocked]="isLocked"
36368
+ [selectable]="selectable"
36369
+ [trackBy]="trackBy"
36370
+ [groups]="group"
36371
+ [detailTemplate]="detailTemplate"
36372
+ [filterable]="filterable">
36373
+ </kendo-grid-rowpin-container>
36374
+ }
35582
36375
  }
35583
36376
  @if (loading) {
35584
36377
  <div [loadingTemplate]="loadingTemplate" kendoGridLoading></div>
@@ -35694,7 +36487,7 @@ class GridComponent {
35694
36487
  @if (showLicenseWatermark) {
35695
36488
  <div kendoWatermarkOverlay [licenseMessage]="licenseMessage"></div>
35696
36489
  }
35697
- `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "[kendoGridLocalizedMessages]" }, { kind: "component", type: ToolbarComponent, selector: "kendo-grid-toolbar", inputs: ["position", "size", "navigable"] }, { kind: "component", type: GroupPanelComponent, selector: "kendo-grid-group-panel", inputs: ["text", "navigable", "groups"], outputs: ["change"] }, { kind: "directive", type: TableDirective, selector: "[kendoGridResizableTable]", inputs: ["locked", "virtualColumns"] }, { kind: "directive", type: GridTableDirective, selector: "[kendoGridTable]", inputs: ["size"] }, { kind: "component", type: ColGroupComponent, selector: "[kendoGridColGroup]", inputs: ["columns", "groups", "detailTemplate", "sort"] }, { kind: "component", type: HeaderComponent, selector: "[kendoGridHeader]", inputs: ["totalColumnLevels", "columns", "groups", "detailTemplate", "scrollable", "filterable", "sort", "filter", "sortable", "groupable", "lockedColumnsCount", "resizable", "reorderable", "columnMenu", "columnMenuTemplate", "totalColumnsCount", "totalColumns", "tabIndex", "size"] }, { kind: "directive", type: ResizableContainerDirective, selector: "[kendoGridResizableContainer]", inputs: ["lockedWidth", "kendoGridResizableContainer"] }, { kind: "component", type: ListComponent, selector: "kendo-grid-list", inputs: ["data", "groups", "total", "rowHeight", "detailRowHeight", "take", "skip", "columns", "detailTemplate", "noRecordsTemplate", "selectable", "groupable", "filterable", "rowClass", "rowSticky", "loading", "trackBy", "virtualColumns", "isVirtual", "cellLoadingTemplate", "loadingTemplate", "sort", "size"], outputs: ["contentScroll", "pageChange", "scrollBottom"] }, { kind: "directive", type: DragTargetContainerDirective, selector: "[kendoDragTargetContainer]", inputs: ["hint", "dragTargetFilter", "dragHandle", "dragDelay", "threshold", "dragTargetId", "dragData", "dragDisabled", "mode", "cursorStyle", "hintContext"], outputs: ["onDragReady", "onPress", "onDragStart", "onDrag", "onRelease", "onDragEnd"], exportAs: ["kendoDragTargetContainer"] }, { kind: "directive", type: DropTargetContainerDirective, selector: "[kendoDropTargetContainer]", inputs: ["dropTargetFilter", "dropDisabled"], outputs: ["onDragEnter", "onDragOver", "onDragLeave", "onDrop"], exportAs: ["kendoDropTargetContainer"] }, { kind: "directive", type: DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }, { kind: "directive", type: GridMarqueeDirective, selector: "[kendoGridSelectionMarquee]" }, { kind: "component", type: FooterComponent, selector: "[kendoGridFooter]", inputs: ["columns", "groups", "detailTemplate", "scrollable", "lockedColumnsCount", "logicalRowIndex", "totalColumns", "totalColumnsCount"] }, { kind: "component", type: TableBodyComponent, selector: "[kendoGridTableBody]", inputs: ["columns", "allColumns", "groups", "detailTemplate", "noRecordsTemplate", "rowsToRender", "skip", "selectable", "filterable", "noRecordsText", "isLocked", "isLoading", "isVirtual", "cellLoadingTemplate", "skipGroupDecoration", "lockedColumnsCount", "totalColumnsCount", "virtualColumns", "trackBy", "rowSticky", "totalColumns", "rowClass", "rowHeight", "detailRowHeight"] }, { kind: "component", type: LoadingComponent, selector: "[kendoGridLoading]", inputs: ["loadingTemplate"] }, { kind: "component", type: StatusBarComponent, selector: "kendo-grid-status-bar", inputs: ["statusBarTemplate"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "component", type: WatermarkOverlayComponent, selector: "div[kendoWatermarkOverlay], kendo-watermark-overlay", inputs: ["licenseMessage"] }, { kind: "component", type: i56.CustomMessagesComponent, selector: "kendo-datapager-messages, kendo-pager-messages" }, { kind: "component", type: i56.PagerInfoComponent, selector: "kendo-datapager-info, kendo-pager-info" }, { kind: "component", type: i56.PagerInputComponent, selector: "kendo-datapager-input, kendo-pager-input", inputs: ["showPageText", "size"] }, { kind: "component", type: i56.PagerNextButtonsComponent, selector: "kendo-datapager-next-buttons, kendo-pager-next-buttons", inputs: ["size"] }, { kind: "component", type: i56.PagerNumericButtonsComponent, selector: "kendo-datapager-numeric-buttons, kendo-pager-numeric-buttons", inputs: ["buttonCount", "size"] }, { kind: "component", type: i56.PagerPageSizesComponent, selector: "kendo-datapager-page-sizes, kendo-pager-page-sizes", inputs: ["showItemsText", "pageSizes", "size", "adaptiveMode"] }, { kind: "component", type: i56.PagerPrevButtonsComponent, selector: "kendo-datapager-prev-buttons, kendo-pager-prev-buttons", inputs: ["size"] }, { kind: "directive", type: i56.PagerTemplateDirective, selector: "[kendoDataPagerTemplate], [kendoPagerTemplate]" }, { kind: "component", type: i56.PagerComponent, selector: "kendo-datapager, kendo-pager", inputs: ["externalTemplate", "total", "skip", "pageSize", "buttonCount", "info", "type", "pageSizeValues", "previousNext", "navigable", "size", "responsive", "adaptiveMode"], outputs: ["pageChange", "pageSizeChange", "pagerInputVisibilityChange", "pageTextVisibilityChange", "itemsTextVisibilityChange"], exportAs: ["kendoDataPager", "kendoPager"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: AdaptiveRendererComponent, selector: "kendo-grid-adaptive-renderer" }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }], encapsulation: i0.ViewEncapsulation.None });
36490
+ `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "[kendoGridLocalizedMessages]" }, { kind: "component", type: ToolbarComponent, selector: "kendo-grid-toolbar", inputs: ["position", "size", "navigable"] }, { kind: "component", type: GroupPanelComponent, selector: "kendo-grid-group-panel", inputs: ["text", "navigable", "groups"], outputs: ["change"] }, { kind: "directive", type: TableDirective, selector: "[kendoGridResizableTable]", inputs: ["locked", "virtualColumns"] }, { kind: "directive", type: GridTableDirective, selector: "[kendoGridTable]", inputs: ["size"] }, { kind: "component", type: ColGroupComponent, selector: "[kendoGridColGroup]", inputs: ["columns", "groups", "detailTemplate", "sort"] }, { kind: "component", type: HeaderComponent, selector: "[kendoGridHeader]", inputs: ["totalColumnLevels", "columns", "groups", "detailTemplate", "scrollable", "filterable", "sort", "filter", "sortable", "groupable", "lockedColumnsCount", "resizable", "reorderable", "columnMenu", "columnMenuTemplate", "totalColumnsCount", "totalColumns", "tabIndex", "size"] }, { kind: "directive", type: ResizableContainerDirective, selector: "[kendoGridResizableContainer]", inputs: ["lockedWidth", "kendoGridResizableContainer"] }, { kind: "component", type: ListComponent, selector: "kendo-grid-list", inputs: ["data", "groups", "total", "rowHeight", "detailRowHeight", "take", "skip", "columns", "detailTemplate", "noRecordsTemplate", "selectable", "groupable", "filterable", "rowClass", "rowSticky", "loading", "trackBy", "virtualColumns", "isVirtual", "cellLoadingTemplate", "loadingTemplate", "sort", "size"], outputs: ["contentScroll", "pageChange", "scrollBottom"] }, { kind: "directive", type: DragTargetContainerDirective, selector: "[kendoDragTargetContainer]", inputs: ["hint", "dragTargetFilter", "dragHandle", "dragDelay", "threshold", "dragTargetId", "dragData", "dragDisabled", "mode", "cursorStyle", "hintContext"], outputs: ["onDragReady", "onPress", "onDragStart", "onDrag", "onRelease", "onDragEnd"], exportAs: ["kendoDragTargetContainer"] }, { kind: "directive", type: DropTargetContainerDirective, selector: "[kendoDropTargetContainer]", inputs: ["dropTargetFilter", "dropDisabled"], outputs: ["onDragEnter", "onDragOver", "onDragLeave", "onDrop"], exportAs: ["kendoDropTargetContainer"] }, { kind: "directive", type: DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }, { kind: "directive", type: GridMarqueeDirective, selector: "[kendoGridSelectionMarquee]" }, { kind: "component", type: FooterComponent, selector: "[kendoGridFooter]", inputs: ["columns", "groups", "detailTemplate", "scrollable", "lockedColumnsCount", "logicalRowIndex", "totalColumns", "totalColumnsCount"] }, { kind: "component", type: TableBodyComponent, selector: "[kendoGridTableBody]", inputs: ["columns", "allColumns", "groups", "detailTemplate", "noRecordsTemplate", "rowsToRender", "skip", "selectable", "filterable", "noRecordsText", "isLocked", "isLoading", "isVirtual", "cellLoadingTemplate", "skipGroupDecoration", "lockedColumnsCount", "totalColumnsCount", "virtualColumns", "trackBy", "rowSticky", "totalColumns", "rowClass", "rowHeight", "detailRowHeight", "isPinContainer", "pinPosition"] }, { kind: "component", type: LoadingComponent, selector: "[kendoGridLoading]", inputs: ["loadingTemplate"] }, { kind: "component", type: StatusBarComponent, selector: "kendo-grid-status-bar", inputs: ["statusBarTemplate"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "component", type: WatermarkOverlayComponent, selector: "div[kendoWatermarkOverlay], kendo-watermark-overlay", inputs: ["licenseMessage"] }, { kind: "component", type: i57.CustomMessagesComponent, selector: "kendo-datapager-messages, kendo-pager-messages" }, { kind: "component", type: i57.PagerInfoComponent, selector: "kendo-datapager-info, kendo-pager-info" }, { kind: "component", type: i57.PagerInputComponent, selector: "kendo-datapager-input, kendo-pager-input", inputs: ["showPageText", "size"] }, { kind: "component", type: i57.PagerNextButtonsComponent, selector: "kendo-datapager-next-buttons, kendo-pager-next-buttons", inputs: ["size"] }, { kind: "component", type: i57.PagerNumericButtonsComponent, selector: "kendo-datapager-numeric-buttons, kendo-pager-numeric-buttons", inputs: ["buttonCount", "size"] }, { kind: "component", type: i57.PagerPageSizesComponent, selector: "kendo-datapager-page-sizes, kendo-pager-page-sizes", inputs: ["showItemsText", "pageSizes", "size", "adaptiveMode"] }, { kind: "component", type: i57.PagerPrevButtonsComponent, selector: "kendo-datapager-prev-buttons, kendo-pager-prev-buttons", inputs: ["size"] }, { kind: "directive", type: i57.PagerTemplateDirective, selector: "[kendoDataPagerTemplate], [kendoPagerTemplate]" }, { kind: "component", type: i57.PagerComponent, selector: "kendo-datapager, kendo-pager", inputs: ["externalTemplate", "total", "skip", "pageSize", "buttonCount", "info", "type", "pageSizeValues", "previousNext", "navigable", "size", "responsive", "adaptiveMode"], outputs: ["pageChange", "pageSizeChange", "pagerInputVisibilityChange", "pageTextVisibilityChange", "itemsTextVisibilityChange"], exportAs: ["kendoDataPager", "kendoPager"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: AdaptiveRendererComponent, selector: "kendo-grid-adaptive-renderer" }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "component", type: RowPinContainerComponent, selector: "kendo-grid-rowpin-container", inputs: ["leafColumns", "lockedLeafColumns", "nonLockedLeafColumns", "sort", "position", "rowsToRender", "totalColumns", "lockedWidth", "nonLockedWidth", "isLocked", "selectable", "trackBy", "groups", "detailTemplate", "filterable"] }], encapsulation: i0.ViewEncapsulation.None });
35698
36491
  }
35699
36492
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: GridComponent, decorators: [{
35700
36493
  type: Component,
@@ -35753,7 +36546,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
35753
36546
  ColumnMenuService,
35754
36547
  MenuTabbingService,
35755
36548
  DataMappingService,
35756
- SearchService
36549
+ SearchService,
36550
+ RowPinService
35757
36551
  ],
35758
36552
  selector: 'kendo-grid',
35759
36553
  template: `
@@ -36219,6 +37013,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
36219
37013
 
36220
37014
  i18n-commandColumnHeaderLabel="kendo.grid.commandColumnHeaderLabel|The screen-reader-only content for the command column header"
36221
37015
  commandColumnHeaderLabel="Command"
37016
+
37017
+ i18n-pinnedTopRowsLabel="kendo.grid.pinnedTopRowsLabel|The aria-label for the pinned top rows container."
37018
+ pinnedTopRowsLabel="Pinned top rows"
37019
+
37020
+ i18n-pinnedBottomRowsLabel="kendo.grid.pinnedBottomRowsLabel|The aria-label for the pinned bottom rows container."
37021
+ pinnedBottomRowsLabel="Pinned bottom rows"
37022
+
37023
+ i18n-pinMenuPinToTopText="kendo.grid.pinMenuPinToTopText|The text for the **Pin row to top** option in the pin context menu."
37024
+ pinMenuPinToTopText="Pin row to top"
37025
+
37026
+ i18n-pinMenuPinToBottomText="kendo.grid.pinMenuPinToBottomText|The text for the **Pin row to bottom** option in the pin context menu."
37027
+ pinMenuPinToBottomText="Pin row to bottom"
37028
+
37029
+ i18n-pinMenuUnpinText="kendo.grid.pinMenuUnpinText|The text for the **Unpin** option in the pin context menu."
37030
+ pinMenuUnpinText="Unpin"
37031
+
37032
+ i18n-pinColumnHeaderLabel="kendo.grid.pinColumnHeaderLabel|The screen-reader-only content for the pin column header"
37033
+ pinColumnHeaderLabel="Actions"
36222
37034
  >
36223
37035
  </ng-container>
36224
37036
  @if (showTopToolbar) {
@@ -36402,6 +37214,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
36402
37214
  </div>
36403
37215
  </div>
36404
37216
  }
37217
+ @if (isPinnable && pinnedTopRows?.length > 0) {
37218
+ <kendo-grid-rowpin-container
37219
+ [leafColumns]="$any(leafColumns)"
37220
+ [lockedLeafColumns]="lockedLeafColumns"
37221
+ [nonLockedLeafColumns]="nonLockedLeafColumns"
37222
+ [sort]="sort"
37223
+ position="top"
37224
+ [rowsToRender]="pinnedTopRowsToRender"
37225
+ [totalColumns]="columnsContainer"
37226
+ [lockedWidth]="lockedWidth"
37227
+ [nonLockedWidth]="nonLockedWidth"
37228
+ [isLocked]="isLocked"
37229
+ [selectable]="selectable"
37230
+ [trackBy]="trackBy"
37231
+ [groups]="group"
37232
+ [detailTemplate]="detailTemplate"
37233
+ [filterable]="filterable">
37234
+ </kendo-grid-rowpin-container>
37235
+ }
37236
+
36405
37237
  <kendo-grid-list
36406
37238
  [data]="$any(view)"
36407
37239
  [rowHeight]="rowHeight"
@@ -36433,6 +37265,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
36433
37265
  [enableDrag]="marqueeSelection"
36434
37266
  [sort]="sort">
36435
37267
  </kendo-grid-list>
37268
+
37269
+ @if (isPinnable && pinnedBottomRows?.length > 0) {
37270
+ <kendo-grid-rowpin-container
37271
+ [leafColumns]="$any(leafColumns)"
37272
+ [lockedLeafColumns]="lockedLeafColumns"
37273
+ [nonLockedLeafColumns]="nonLockedLeafColumns"
37274
+ [sort]="sort"
37275
+ position="bottom"
37276
+ [rowsToRender]="pinnedBottomRowsToRender"
37277
+ [totalColumns]="columnsContainer"
37278
+ [lockedWidth]="lockedWidth"
37279
+ [nonLockedWidth]="nonLockedWidth"
37280
+ [isLocked]="isLocked"
37281
+ [selectable]="selectable"
37282
+ [trackBy]="trackBy"
37283
+ [groups]="group"
37284
+ [detailTemplate]="detailTemplate"
37285
+ [filterable]="filterable">
37286
+ </kendo-grid-rowpin-container>
37287
+ }
36436
37288
  @if (showFooter) {
36437
37289
  <div
36438
37290
  class="k-grid-footer"
@@ -36502,6 +37354,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
36502
37354
  }
36503
37355
  }
36504
37356
  @if (!isScrollable) {
37357
+ @if (isPinnable && pinnedTopRows?.length > 0) {
37358
+ <kendo-grid-rowpin-container
37359
+ [leafColumns]="$any(leafColumns)"
37360
+ [lockedLeafColumns]="lockedLeafColumns"
37361
+ [nonLockedLeafColumns]="nonLockedLeafColumns"
37362
+ [sort]="$any(sort)"
37363
+ position="top"
37364
+ [rowsToRender]="pinnedTopRowsToRender"
37365
+ [totalColumns]="columnsContainer"
37366
+ [lockedWidth]="lockedWidth"
37367
+ [nonLockedWidth]="nonLockedWidth"
37368
+ [isLocked]="isLocked"
37369
+ [selectable]="selectable"
37370
+ [trackBy]="trackBy"
37371
+ [groups]="group"
37372
+ [detailTemplate]="detailTemplate"
37373
+ [filterable]="filterable">
37374
+ </kendo-grid-rowpin-container>
37375
+ }
36505
37376
  <table
36506
37377
  [style.table-layout]="resizable ? 'fixed' : null"
36507
37378
  kendoGridTable
@@ -36570,6 +37441,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
36570
37441
  </tfoot>
36571
37442
  }
36572
37443
  </table>
37444
+ @if (isPinnable && pinnedBottomRows?.length > 0) {
37445
+ <kendo-grid-rowpin-container
37446
+ [leafColumns]="$any(leafColumns)"
37447
+ [lockedLeafColumns]="lockedLeafColumns"
37448
+ [nonLockedLeafColumns]="nonLockedLeafColumns"
37449
+ [sort]="$any(sort)"
37450
+ position="bottom"
37451
+ [rowsToRender]="pinnedBottomRowsToRender"
37452
+ [totalColumns]="columnsContainer"
37453
+ [lockedWidth]="lockedWidth"
37454
+ [nonLockedWidth]="nonLockedWidth"
37455
+ [isLocked]="isLocked"
37456
+ [selectable]="selectable"
37457
+ [trackBy]="trackBy"
37458
+ [groups]="group"
37459
+ [detailTemplate]="detailTemplate"
37460
+ [filterable]="filterable">
37461
+ </kendo-grid-rowpin-container>
37462
+ }
36573
37463
  }
36574
37464
  @if (loading) {
36575
37465
  <div [loadingTemplate]="loadingTemplate" kendoGridLoading></div>
@@ -36710,10 +37600,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
36710
37600
  ...KENDO_PAGER,
36711
37601
  NgTemplateOutlet,
36712
37602
  AdaptiveRendererComponent,
36713
- ResizeSensorComponent
37603
+ ResizeSensorComponent,
37604
+ RowPinContainerComponent
36714
37605
  ]
36715
37606
  }]
36716
- }], ctorParameters: () => [{ type: i1$3.ScrollbarService }, { type: SelectionService }, { type: CellSelectionService }, { type: i0.ElementRef }, { type: GroupInfoService }, { type: GroupsService }, { type: ChangeNotificationService }, { type: DetailsService }, { type: EditService }, { type: FilterService }, { type: PDFService }, { type: ResponsiveService }, { type: i0.Renderer2 }, { type: ExcelService }, { type: CSVService }, { type: i0.NgZone }, { type: ScrollSyncService }, { type: DomEventsService }, { type: ColumnResizingService }, { type: i0.ChangeDetectorRef }, { type: ColumnReorderService }, { type: ColumnInfoService }, { type: NavigationService }, { type: SortService }, { type: ScrollRequestService }, { type: i1$2.LocalizationService }, { type: ContextService }, { type: SizingOptionsService }, { type: AdaptiveGridService }, { type: RowReorderService }, { type: DataMappingService }, { type: GridAIRequestResponseService }, { type: IdService }, { type: SearchService }], propDecorators: { data: [{
37607
+ }], ctorParameters: () => [{ type: i1$3.ScrollbarService }, { type: SelectionService }, { type: CellSelectionService }, { type: i0.ElementRef }, { type: GroupInfoService }, { type: GroupsService }, { type: ChangeNotificationService }, { type: DetailsService }, { type: EditService }, { type: FilterService }, { type: PDFService }, { type: ResponsiveService }, { type: i0.Renderer2 }, { type: ExcelService }, { type: CSVService }, { type: i0.NgZone }, { type: ScrollSyncService }, { type: DomEventsService }, { type: ColumnResizingService }, { type: i0.ChangeDetectorRef }, { type: ColumnReorderService }, { type: ColumnInfoService }, { type: NavigationService }, { type: SortService }, { type: ScrollRequestService }, { type: i1$2.LocalizationService }, { type: ContextService }, { type: SizingOptionsService }, { type: AdaptiveGridService }, { type: RowReorderService }, { type: DataMappingService }, { type: GridAIRequestResponseService }, { type: IdService }, { type: SearchService }, { type: RowPinService }], propDecorators: { data: [{
36717
37608
  type: Input
36718
37609
  }], pageSize: [{
36719
37610
  type: Input
@@ -36787,6 +37678,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
36787
37678
  type: Input
36788
37679
  }], dataLayoutMode: [{
36789
37680
  type: Input
37681
+ }], pinnable: [{
37682
+ type: Input
37683
+ }], pinnedTopRows: [{
37684
+ type: Input
37685
+ }], pinnedBottomRows: [{
37686
+ type: Input
37687
+ }], isRowPinnable: [{
37688
+ type: Input
36790
37689
  }], filterChange: [{
36791
37690
  type: Output
36792
37691
  }], pageChange: [{
@@ -36799,6 +37698,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
36799
37698
  type: Output
36800
37699
  }], rowReorder: [{
36801
37700
  type: Output
37701
+ }], rowPinChange: [{
37702
+ type: Output
36802
37703
  }], dataStateChange: [{
36803
37704
  type: Output
36804
37705
  }], gridStateChange: [{
@@ -36917,6 +37818,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
36917
37818
  }], header: [{
36918
37819
  type: ViewChild,
36919
37820
  args: ['header']
37821
+ }], pinnedContainers: [{
37822
+ type: ViewChildren,
37823
+ args: [RowPinContainerComponent]
36920
37824
  }], footer: [{
36921
37825
  type: ViewChildren,
36922
37826
  args: ['footer']
@@ -37009,6 +37913,7 @@ class DataBindingDirective {
37009
37913
  localDataChangesService;
37010
37914
  rowReorderService;
37011
37915
  searchService;
37916
+ rowPinService;
37012
37917
  /**
37013
37918
  * Sets the number of records to skip in the Grid.
37014
37919
  *
@@ -37070,14 +37975,16 @@ class DataBindingDirective {
37070
37975
  stateChangeSubscription;
37071
37976
  dataChangedSubscription;
37072
37977
  rowReorderSubscription;
37978
+ rowPinSubscription;
37073
37979
  searchSubscription;
37074
37980
  searchFilter;
37075
- constructor(grid, changeDetector, localDataChangesService, rowReorderService, searchService, ctx) {
37981
+ constructor(grid, changeDetector, localDataChangesService, rowReorderService, searchService, rowPinService, ctx) {
37076
37982
  this.grid = grid;
37077
37983
  this.changeDetector = changeDetector;
37078
37984
  this.localDataChangesService = localDataChangesService;
37079
37985
  this.rowReorderService = rowReorderService;
37080
37986
  this.searchService = searchService;
37987
+ this.rowPinService = rowPinService;
37081
37988
  if (localDataChangesService) {
37082
37989
  this.dataChangedSubscription = this.localDataChangesService.changes.subscribe(this.rebind.bind(this));
37083
37990
  }
@@ -37103,6 +38010,11 @@ class DataBindingDirective {
37103
38010
  this.onSearch.bind(this)(searchFilter);
37104
38011
  });
37105
38012
  }
38013
+ if (this.rowPinService) {
38014
+ this.rowPinSubscription = this.grid
38015
+ .rowPinChange
38016
+ .subscribe(this.onRowPin.bind(this));
38017
+ }
37106
38018
  }
37107
38019
  /**
37108
38020
  * @hidden
@@ -37120,6 +38032,9 @@ class DataBindingDirective {
37120
38032
  if (this.searchSubscription) {
37121
38033
  this.searchSubscription.unsubscribe();
37122
38034
  }
38035
+ if (this.rowPinSubscription) {
38036
+ this.rowPinSubscription.unsubscribe();
38037
+ }
37123
38038
  }
37124
38039
  ngOnChanges(changes) {
37125
38040
  if (anyChanged(["pageSize", "skip", "sort", "group", "filter"], changes)) {
@@ -37150,6 +38065,12 @@ class DataBindingDirective {
37150
38065
  this.rowReorderService.reorderRows(ev, this.originalData);
37151
38066
  this.rebind();
37152
38067
  }
38068
+ /**
38069
+ * @hidden
38070
+ */
38071
+ onRowPin(ev) {
38072
+ this.rowPinService.updatePinnedRows(ev);
38073
+ }
37153
38074
  /**
37154
38075
  * @hidden
37155
38076
  */
@@ -37244,6 +38165,10 @@ class DataBindingDirective {
37244
38165
  else {
37245
38166
  this.grid.data = this.process(this.state);
37246
38167
  }
38168
+ if (this.grid.isPinnable) {
38169
+ this.grid.pinnedTopRows = this.processPinnedRowsData(this.grid.pinnedTopRows);
38170
+ this.grid.pinnedBottomRows = this.processPinnedRowsData(this.grid.pinnedBottomRows);
38171
+ }
37247
38172
  this.grid.updateNavigationMetadata();
37248
38173
  this.grid.ngDoCheck();
37249
38174
  this.dataChanged = false;
@@ -37259,7 +38184,13 @@ class DataBindingDirective {
37259
38184
  }
37260
38185
  return this.searchFilter || this.state.filter;
37261
38186
  }
37262
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: DataBindingDirective, deps: [{ token: GridComponent }, { token: i0.ChangeDetectorRef }, { token: LocalDataChangesService }, { token: RowReorderService }, { token: SearchService }, { token: ContextService }], target: i0.ɵɵFactoryTarget.Directive });
38187
+ processPinnedRowsData(data) {
38188
+ if (!data?.length) {
38189
+ return [];
38190
+ }
38191
+ return process(data, { sort: this.state.sort }).data;
38192
+ }
38193
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: DataBindingDirective, deps: [{ token: GridComponent }, { token: i0.ChangeDetectorRef }, { token: LocalDataChangesService }, { token: RowReorderService }, { token: SearchService }, { token: RowPinService }, { token: ContextService }], target: i0.ɵɵFactoryTarget.Directive });
37263
38194
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: DataBindingDirective, isStandalone: true, selector: "[kendoGridBinding]", inputs: { skip: "skip", sort: "sort", filter: "filter", pageSize: "pageSize", group: "group", data: ["kendoGridBinding", "data"] }, exportAs: ["kendoGridBinding"], usesOnChanges: true, ngImport: i0 });
37264
38195
  }
37265
38196
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: DataBindingDirective, decorators: [{
@@ -37269,7 +38200,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
37269
38200
  exportAs: 'kendoGridBinding',
37270
38201
  standalone: true
37271
38202
  }]
37272
- }], ctorParameters: () => [{ type: GridComponent }, { type: i0.ChangeDetectorRef }, { type: LocalDataChangesService }, { type: RowReorderService }, { type: SearchService }, { type: ContextService }], propDecorators: { skip: [{
38203
+ }], ctorParameters: () => [{ type: GridComponent }, { type: i0.ChangeDetectorRef }, { type: LocalDataChangesService }, { type: RowReorderService }, { type: SearchService }, { type: RowPinService }, { type: ContextService }], propDecorators: { skip: [{
37273
38204
  type: Input
37274
38205
  }], sort: [{
37275
38206
  type: Input
@@ -38556,7 +39487,7 @@ class PDFCommandToolbarDirective extends ToolbarToolBase {
38556
39487
  e.preventDefault();
38557
39488
  this.pdfService.exportClick.emit();
38558
39489
  }
38559
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: PDFCommandToolbarDirective, deps: [{ token: PDFService }, { token: i57.ToolBarButtonComponent }, { token: ContextService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
39490
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: PDFCommandToolbarDirective, deps: [{ token: PDFService }, { token: i58.ToolBarButtonComponent }, { token: ContextService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
38560
39491
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: PDFCommandToolbarDirective, isStandalone: true, selector: "[kendoGridPDFTool]", usesInheritance: true, ngImport: i0 });
38561
39492
  }
38562
39493
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: PDFCommandToolbarDirective, decorators: [{
@@ -38565,7 +39496,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
38565
39496
  selector: '[kendoGridPDFTool]',
38566
39497
  standalone: true
38567
39498
  }]
38568
- }], ctorParameters: () => [{ type: PDFService }, { type: i57.ToolBarButtonComponent }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
39499
+ }], ctorParameters: () => [{ type: PDFService }, { type: i58.ToolBarButtonComponent }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
38569
39500
 
38570
39501
  /**
38571
39502
  * Represents the **Export to Excel** toolbar tool of the Grid.
@@ -38601,7 +39532,7 @@ class ExcelCommandToolbarDirective extends ToolbarToolBase {
38601
39532
  e.preventDefault();
38602
39533
  this.excelService.exportClick.emit();
38603
39534
  }
38604
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ExcelCommandToolbarDirective, deps: [{ token: ExcelService }, { token: i57.ToolBarButtonComponent }, { token: ContextService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
39535
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ExcelCommandToolbarDirective, deps: [{ token: ExcelService }, { token: i58.ToolBarButtonComponent }, { token: ContextService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
38605
39536
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: ExcelCommandToolbarDirective, isStandalone: true, selector: "[kendoGridExcelTool]", usesInheritance: true, ngImport: i0 });
38606
39537
  }
38607
39538
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ExcelCommandToolbarDirective, decorators: [{
@@ -38610,7 +39541,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
38610
39541
  selector: '[kendoGridExcelTool]',
38611
39542
  standalone: true
38612
39543
  }]
38613
- }], ctorParameters: () => [{ type: ExcelService }, { type: i57.ToolBarButtonComponent }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
39544
+ }], ctorParameters: () => [{ type: ExcelService }, { type: i58.ToolBarButtonComponent }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
38614
39545
 
38615
39546
  /**
38616
39547
  * @hidden
@@ -38683,13 +39614,13 @@ class ToolbarEditingToolBase extends ToolbarToolBase {
38683
39614
  get isSelectionPresent() {
38684
39615
  return isPresent$1(this.lastSelectionIndex) && this.lastSelectionIndex > -1;
38685
39616
  }
38686
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ToolbarEditingToolBase, deps: [{ token: i57.ToolBarButtonComponent }, { token: 'command' }, { token: ContextService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: EditService }, { token: SelectionService }], target: i0.ɵɵFactoryTarget.Directive });
39617
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ToolbarEditingToolBase, deps: [{ token: i58.ToolBarButtonComponent }, { token: 'command' }, { token: ContextService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: EditService }, { token: SelectionService }], target: i0.ɵɵFactoryTarget.Directive });
38687
39618
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: ToolbarEditingToolBase, isStandalone: true, usesInheritance: true, ngImport: i0 });
38688
39619
  }
38689
39620
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ToolbarEditingToolBase, decorators: [{
38690
39621
  type: Directive,
38691
39622
  args: [{}]
38692
- }], ctorParameters: () => [{ type: i57.ToolBarButtonComponent }, { type: undefined, decorators: [{
39623
+ }], ctorParameters: () => [{ type: i58.ToolBarButtonComponent }, { type: undefined, decorators: [{
38693
39624
  type: Inject,
38694
39625
  args: ['command']
38695
39626
  }] }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: EditService }, { type: SelectionService }] });
@@ -38729,7 +39660,7 @@ class AddCommandToolbarDirective extends ToolbarEditingToolBase {
38729
39660
  e.preventDefault();
38730
39661
  this.editService.beginAdd();
38731
39662
  }
38732
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: AddCommandToolbarDirective, deps: [{ token: EditService }, { token: i57.ToolBarButtonComponent }, { token: ContextService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
39663
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: AddCommandToolbarDirective, deps: [{ token: EditService }, { token: i58.ToolBarButtonComponent }, { token: ContextService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
38733
39664
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: AddCommandToolbarDirective, isStandalone: true, selector: "[kendoGridAddTool]", usesInheritance: true, ngImport: i0 });
38734
39665
  }
38735
39666
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: AddCommandToolbarDirective, decorators: [{
@@ -38738,7 +39669,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
38738
39669
  selector: '[kendoGridAddTool]',
38739
39670
  standalone: true
38740
39671
  }]
38741
- }], ctorParameters: () => [{ type: EditService }, { type: i57.ToolBarButtonComponent }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
39672
+ }], ctorParameters: () => [{ type: EditService }, { type: i58.ToolBarButtonComponent }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
38742
39673
 
38743
39674
  /**
38744
39675
  * @hidden
@@ -39309,7 +40240,7 @@ class UndoCommandToolbarDirective {
39309
40240
  e.preventDefault();
39310
40241
  this.undoRedoService.onUndo.next(undefined);
39311
40242
  }
39312
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: UndoCommandToolbarDirective, deps: [{ token: UndoRedoService }, { token: i57.ToolBarButtonComponent }], target: i0.ɵɵFactoryTarget.Directive });
40243
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: UndoCommandToolbarDirective, deps: [{ token: UndoRedoService }, { token: i58.ToolBarButtonComponent }], target: i0.ɵɵFactoryTarget.Directive });
39313
40244
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: UndoCommandToolbarDirective, isStandalone: true, selector: "[kendoGridUndoTool]", ngImport: i0 });
39314
40245
  }
39315
40246
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: UndoCommandToolbarDirective, decorators: [{
@@ -39318,7 +40249,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
39318
40249
  selector: '[kendoGridUndoTool]',
39319
40250
  standalone: true,
39320
40251
  }]
39321
- }], ctorParameters: () => [{ type: UndoRedoService }, { type: i57.ToolBarButtonComponent }] });
40252
+ }], ctorParameters: () => [{ type: UndoRedoService }, { type: i58.ToolBarButtonComponent }] });
39322
40253
 
39323
40254
  /**
39324
40255
  * Represents the command that triggers the redo action in the Grid.
@@ -39372,7 +40303,7 @@ class RedoCommandToolbarDirective {
39372
40303
  e.preventDefault();
39373
40304
  this.undoRedoService.onRedo.next(undefined);
39374
40305
  }
39375
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: RedoCommandToolbarDirective, deps: [{ token: UndoRedoService }, { token: i57.ToolBarButtonComponent }], target: i0.ɵɵFactoryTarget.Directive });
40306
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: RedoCommandToolbarDirective, deps: [{ token: UndoRedoService }, { token: i58.ToolBarButtonComponent }], target: i0.ɵɵFactoryTarget.Directive });
39376
40307
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: RedoCommandToolbarDirective, isStandalone: true, selector: "[kendoGridRedoTool]", ngImport: i0 });
39377
40308
  }
39378
40309
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: RedoCommandToolbarDirective, decorators: [{
@@ -39381,7 +40312,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
39381
40312
  selector: '[kendoGridRedoTool]',
39382
40313
  standalone: true,
39383
40314
  }]
39384
- }], ctorParameters: () => [{ type: UndoRedoService }, { type: i57.ToolBarButtonComponent }] });
40315
+ }], ctorParameters: () => [{ type: UndoRedoService }, { type: i58.ToolBarButtonComponent }] });
39385
40316
 
39386
40317
  let incrementingId$2 = 0;
39387
40318
  /**
@@ -39572,7 +40503,7 @@ class SortCommandToolbarDirective {
39572
40503
  get buttonElement() {
39573
40504
  return this.host.getButton();
39574
40505
  }
39575
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SortCommandToolbarDirective, deps: [{ token: i57.ToolBarButtonComponent }, { token: i2.PopupService }, { token: ContextService }, { token: SortService }, { token: ColumnInfoService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: AdaptiveGridService }], target: i0.ɵɵFactoryTarget.Directive });
40506
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SortCommandToolbarDirective, deps: [{ token: i58.ToolBarButtonComponent }, { token: i2.PopupService }, { token: ContextService }, { token: SortService }, { token: ColumnInfoService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: AdaptiveGridService }], target: i0.ɵɵFactoryTarget.Directive });
39576
40507
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: SortCommandToolbarDirective, isStandalone: true, selector: "[kendoGridSortTool]", ngImport: i0 });
39577
40508
  }
39578
40509
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SortCommandToolbarDirective, decorators: [{
@@ -39581,7 +40512,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
39581
40512
  selector: '[kendoGridSortTool]',
39582
40513
  standalone: true
39583
40514
  }]
39584
- }], ctorParameters: () => [{ type: i57.ToolBarButtonComponent }, { type: i2.PopupService }, { type: ContextService }, { type: SortService }, { type: ColumnInfoService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: AdaptiveGridService }] });
40515
+ }], ctorParameters: () => [{ type: i58.ToolBarButtonComponent }, { type: i2.PopupService }, { type: ContextService }, { type: SortService }, { type: ColumnInfoService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: AdaptiveGridService }] });
39585
40516
 
39586
40517
  /**
39587
40518
  * @hidden
@@ -39910,7 +40841,7 @@ class FilterCommandToolbarDirective {
39910
40841
  get buttonElement() {
39911
40842
  return this.host.getButton();
39912
40843
  }
39913
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: FilterCommandToolbarDirective, deps: [{ token: i57.ToolBarButtonComponent }, { token: i2.PopupService }, { token: ContextService }, { token: FilterService }, { token: ColumnInfoService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: AdaptiveGridService }, { token: SinglePopupService }], target: i0.ɵɵFactoryTarget.Directive });
40844
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: FilterCommandToolbarDirective, deps: [{ token: i58.ToolBarButtonComponent }, { token: i2.PopupService }, { token: ContextService }, { token: FilterService }, { token: ColumnInfoService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: AdaptiveGridService }, { token: SinglePopupService }], target: i0.ɵɵFactoryTarget.Directive });
39914
40845
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: FilterCommandToolbarDirective, isStandalone: true, selector: "[kendoGridFilterTool]", ngImport: i0 });
39915
40846
  }
39916
40847
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: FilterCommandToolbarDirective, decorators: [{
@@ -39919,7 +40850,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
39919
40850
  selector: '[kendoGridFilterTool]',
39920
40851
  standalone: true
39921
40852
  }]
39922
- }], ctorParameters: () => [{ type: i57.ToolBarButtonComponent }, { type: i2.PopupService }, { type: ContextService }, { type: FilterService }, { type: ColumnInfoService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: AdaptiveGridService }, { type: SinglePopupService }] });
40853
+ }], ctorParameters: () => [{ type: i58.ToolBarButtonComponent }, { type: i2.PopupService }, { type: ContextService }, { type: FilterService }, { type: ColumnInfoService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: AdaptiveGridService }, { type: SinglePopupService }] });
39923
40854
 
39924
40855
  /**
39925
40856
  * Represents the `edit` command in the Grid. Apply this directive to any `kendo-toolbar-button`
@@ -39955,7 +40886,7 @@ class EditCommandToolbarDirective extends ToolbarEditingToolBase {
39955
40886
  }
39956
40887
  this.editService.beginEdit(this.lastSelectionIndex);
39957
40888
  }
39958
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: EditCommandToolbarDirective, deps: [{ token: EditService }, { token: i57.ToolBarButtonComponent }, { token: SelectionService }, { token: ContextService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
40889
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: EditCommandToolbarDirective, deps: [{ token: EditService }, { token: i58.ToolBarButtonComponent }, { token: SelectionService }, { token: ContextService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
39959
40890
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: EditCommandToolbarDirective, isStandalone: true, selector: "[kendoGridEditTool]", usesInheritance: true, ngImport: i0 });
39960
40891
  }
39961
40892
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: EditCommandToolbarDirective, decorators: [{
@@ -39964,7 +40895,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
39964
40895
  selector: '[kendoGridEditTool]',
39965
40896
  standalone: true
39966
40897
  }]
39967
- }], ctorParameters: () => [{ type: EditService }, { type: i57.ToolBarButtonComponent }, { type: SelectionService }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
40898
+ }], ctorParameters: () => [{ type: EditService }, { type: i58.ToolBarButtonComponent }, { type: SelectionService }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
39968
40899
 
39969
40900
  /**
39970
40901
  * Represents the `save` command in the Grid. Apply this directive to any `kendo-toolbar-button`
@@ -40005,7 +40936,7 @@ class SaveCommandToolbarDirective extends ToolbarEditingToolBase {
40005
40936
  this.editService.editedIndices.forEach(i => this.editService.save(i.index));
40006
40937
  }
40007
40938
  }
40008
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SaveCommandToolbarDirective, deps: [{ token: EditService }, { token: i57.ToolBarButtonComponent }, { token: SelectionService }, { token: ContextService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
40939
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SaveCommandToolbarDirective, deps: [{ token: EditService }, { token: i58.ToolBarButtonComponent }, { token: SelectionService }, { token: ContextService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
40009
40940
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: SaveCommandToolbarDirective, isStandalone: true, selector: "[kendoGridSaveTool]", usesInheritance: true, ngImport: i0 });
40010
40941
  }
40011
40942
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SaveCommandToolbarDirective, decorators: [{
@@ -40014,7 +40945,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
40014
40945
  selector: '[kendoGridSaveTool]',
40015
40946
  standalone: true
40016
40947
  }]
40017
- }], ctorParameters: () => [{ type: EditService }, { type: i57.ToolBarButtonComponent }, { type: SelectionService }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
40948
+ }], ctorParameters: () => [{ type: EditService }, { type: i58.ToolBarButtonComponent }, { type: SelectionService }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
40018
40949
 
40019
40950
  /**
40020
40951
  * Represents the `remove` command in the Grid. Apply this directive to any `kendo-toolbar-button`
@@ -40051,7 +40982,7 @@ class RemoveCommandToolbarDirective extends ToolbarEditingToolBase {
40051
40982
  this.editService.remove(this.lastSelectionIndex);
40052
40983
  }
40053
40984
  }
40054
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: RemoveCommandToolbarDirective, deps: [{ token: EditService }, { token: i57.ToolBarButtonComponent }, { token: SelectionService }, { token: ContextService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
40985
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: RemoveCommandToolbarDirective, deps: [{ token: EditService }, { token: i58.ToolBarButtonComponent }, { token: SelectionService }, { token: ContextService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
40055
40986
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: RemoveCommandToolbarDirective, isStandalone: true, selector: "[kendoGridRemoveTool]", usesInheritance: true, ngImport: i0 });
40056
40987
  }
40057
40988
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: RemoveCommandToolbarDirective, decorators: [{
@@ -40060,7 +40991,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
40060
40991
  selector: '[kendoGridRemoveTool]',
40061
40992
  standalone: true
40062
40993
  }]
40063
- }], ctorParameters: () => [{ type: EditService }, { type: i57.ToolBarButtonComponent }, { type: SelectionService }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
40994
+ }], ctorParameters: () => [{ type: EditService }, { type: i58.ToolBarButtonComponent }, { type: SelectionService }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
40064
40995
 
40065
40996
  /**
40066
40997
  * Represents the `cancel` command in the Grid.
@@ -40100,7 +41031,7 @@ class CancelCommandToolbarDirective extends ToolbarEditingToolBase {
40100
41031
  this.editService.editedIndices.forEach(i => this.editService.endEdit(i.index));
40101
41032
  }
40102
41033
  }
40103
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CancelCommandToolbarDirective, deps: [{ token: EditService }, { token: i57.ToolBarButtonComponent }, { token: SelectionService }, { token: ContextService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
41034
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CancelCommandToolbarDirective, deps: [{ token: EditService }, { token: i58.ToolBarButtonComponent }, { token: SelectionService }, { token: ContextService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
40104
41035
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: CancelCommandToolbarDirective, isStandalone: true, selector: "[kendoGridCancelTool]", usesInheritance: true, ngImport: i0 });
40105
41036
  }
40106
41037
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CancelCommandToolbarDirective, decorators: [{
@@ -40109,7 +41040,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
40109
41040
  selector: '[kendoGridCancelTool]',
40110
41041
  standalone: true
40111
41042
  }]
40112
- }], ctorParameters: () => [{ type: EditService }, { type: i57.ToolBarButtonComponent }, { type: SelectionService }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
41043
+ }], ctorParameters: () => [{ type: EditService }, { type: i58.ToolBarButtonComponent }, { type: SelectionService }, { type: ContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
40113
41044
 
40114
41045
  let incrementingId = 0;
40115
41046
  /**
@@ -40290,7 +41221,7 @@ class GroupCommandToolbarDirective {
40290
41221
  isGroupingApplied(group) {
40291
41222
  return isPresent$1(group) && group.length > 0;
40292
41223
  }
40293
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: GroupCommandToolbarDirective, deps: [{ token: i57.ToolBarButtonComponent }, { token: i2.PopupService }, { token: ContextService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: AdaptiveGridService }], target: i0.ɵɵFactoryTarget.Directive });
41224
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: GroupCommandToolbarDirective, deps: [{ token: i58.ToolBarButtonComponent }, { token: i2.PopupService }, { token: ContextService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: AdaptiveGridService }], target: i0.ɵɵFactoryTarget.Directive });
40294
41225
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: GroupCommandToolbarDirective, isStandalone: true, selector: "[kendoGridGroupTool]", ngImport: i0 });
40295
41226
  }
40296
41227
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: GroupCommandToolbarDirective, decorators: [{
@@ -40299,7 +41230,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
40299
41230
  selector: '[kendoGridGroupTool]',
40300
41231
  standalone: true
40301
41232
  }]
40302
- }], ctorParameters: () => [{ type: i57.ToolBarButtonComponent }, { type: i2.PopupService }, { type: ContextService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: AdaptiveGridService }] });
41233
+ }], ctorParameters: () => [{ type: i58.ToolBarButtonComponent }, { type: i2.PopupService }, { type: ContextService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: AdaptiveGridService }] });
40303
41234
 
40304
41235
  /**
40305
41236
  * Stores the row and cell highlight state of the Grid.
@@ -40951,7 +41882,7 @@ class AIAssistantToolbarDirective extends ToolbarToolBase {
40951
41882
  this.host.selected = false;
40952
41883
  focusAnchor && this.buttonElement?.focus();
40953
41884
  }
40954
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: AIAssistantToolbarDirective, deps: [{ token: i1$7.WindowService }, { token: i57.ToolBarButtonComponent }, { token: ContextService }, { token: i0.NgZone }, { token: i57.RefreshService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
41885
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: AIAssistantToolbarDirective, deps: [{ token: i1$7.WindowService }, { token: i58.ToolBarButtonComponent }, { token: ContextService }, { token: i0.NgZone }, { token: i58.RefreshService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
40955
41886
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: AIAssistantToolbarDirective, isStandalone: true, selector: "[kendoGridAIAssistantTool]", inputs: { requestUrl: "requestUrl", requestOptions: "requestOptions", aiWindowSettings: "aiWindowSettings", aiPromptSettings: "aiPromptSettings", autoClose: "autoClose", keepOutputHistory: "keepOutputHistory" }, outputs: { promptRequest: "promptRequest", cancelRequest: "cancelRequest", responseSuccess: "responseSuccess", responseError: "responseError", close: "close", open: "open" }, usesInheritance: true, ngImport: i0 });
40956
41887
  }
40957
41888
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: AIAssistantToolbarDirective, decorators: [{
@@ -40960,7 +41891,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
40960
41891
  selector: '[kendoGridAIAssistantTool]',
40961
41892
  standalone: true
40962
41893
  }]
40963
- }], ctorParameters: () => [{ type: i1$7.WindowService }, { type: i57.ToolBarButtonComponent }, { type: ContextService }, { type: i0.NgZone }, { type: i57.RefreshService }, { type: i0.ChangeDetectorRef }], propDecorators: { requestUrl: [{
41894
+ }], ctorParameters: () => [{ type: i1$7.WindowService }, { type: i58.ToolBarButtonComponent }, { type: ContextService }, { type: i0.NgZone }, { type: i58.RefreshService }, { type: i0.ChangeDetectorRef }], propDecorators: { requestUrl: [{
40964
41895
  type: Input
40965
41896
  }], requestOptions: [{
40966
41897
  type: Input
@@ -43190,6 +44121,7 @@ const KENDO_GRID_BODY_EXPORTS = [
43190
44121
  CellLoadingTemplateDirective,
43191
44122
  LoadingTemplateDirective,
43192
44123
  RowReorderColumnComponent,
44124
+ RowPinColumnComponent,
43193
44125
  SortCommandToolbarDirective,
43194
44126
  FilterCommandToolbarDirective,
43195
44127
  AIAssistantToolbarDirective,
@@ -43348,9 +44280,9 @@ const KENDO_GRID = [
43348
44280
  */
43349
44281
  class GridModule {
43350
44282
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: GridModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
43351
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.20", ngImport: i0, type: GridModule, imports: [GroupHeaderTemplateDirective, GroupHeaderColumnTemplateDirective, GroupFooterTemplateDirective, GroupHeaderComponent, GroupPanelComponent, ColumnComponent, ColumnGroupComponent, LogicalCellDirective, LogicalRowDirective, FocusableDirective, FooterTemplateDirective, ColGroupComponent, ResizableContainerDirective, i1$3.TemplateContextDirective, FieldAccessorPipe, DetailTemplateDirective, SpanColumnComponent, LoadingComponent, GridTableDirective, CommandColumnComponent, CheckboxColumnComponent, SelectionCheckboxDirective, CellTemplateDirective, EditTemplateDirective, RowDragHandleTemplateDirective, RowDragHintTemplateDirective, TableBodyComponent, NoRecordsTemplateDirective, CellComponent, EditCommandDirective, CancelCommandDirective, SaveCommandDirective, RemoveCommandDirective, AddCommandDirective, AddCommandToolbarDirective, EditCommandToolbarDirective, SaveCommandToolbarDirective, RemoveCommandToolbarDirective, CancelCommandToolbarDirective, CellLoadingTemplateDirective, LoadingTemplateDirective, RowReorderColumnComponent, SortCommandToolbarDirective, FilterCommandToolbarDirective, AIAssistantToolbarDirective, GroupCommandToolbarDirective, SelectAllToolbarToolComponent, SmartBoxToolbarToolComponent, GridSmartBoxHistoryItemTemplateDirective, GridSmartBoxPromptSuggestionTemplateDirective, HeaderComponent, HeaderTemplateDirective, ColumnHandleDirective, SelectAllCheckboxDirective, FooterComponent, i56.CustomMessagesComponent, i56.PagerFocusableDirective, i56.PagerInfoComponent, i56.PagerInputComponent, i56.PagerNextButtonsComponent, i56.PagerNumericButtonsComponent, i56.PagerPageSizesComponent, i56.PagerPrevButtonsComponent, i56.PagerTemplateDirective, i56.PagerComponent, i56.PagerSpacerComponent, i57.ToolBarComponent, i57.ToolbarCustomMessagesComponent, i57.ToolBarButtonComponent, i57.ToolBarButtonGroupComponent, i57.ToolBarDropDownButtonComponent, i57.ToolBarSeparatorComponent, i57.ToolBarSpacerComponent, i57.ToolBarSplitButtonComponent, i57.ToolBarToolComponent, FilterRowComponent, FilterCellComponent, FilterCellTemplateDirective, StringFilterCellComponent, NumericFilterCellComponent, AutoCompleteFilterCellComponent, BooleanFilterCellComponent, FilterCellHostDirective, FilterCellWrapperComponent, DateFilterCellComponent, ColumnComponent, ColumnGroupComponent, LogicalCellDirective, LogicalRowDirective, FocusableDirective, FooterTemplateDirective, ColGroupComponent, ResizableContainerDirective, i1$3.TemplateContextDirective, FieldAccessorPipe, DetailTemplateDirective, SpanColumnComponent, LoadingComponent, GridTableDirective, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, FilterInputDirective, ColumnComponent, ColumnGroupComponent, LogicalCellDirective, LogicalRowDirective, FocusableDirective, FooterTemplateDirective, ColGroupComponent, ResizableContainerDirective, i1$3.TemplateContextDirective, FieldAccessorPipe, DetailTemplateDirective, SpanColumnComponent, LoadingComponent, GridTableDirective, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, FilterInputDirective, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuInputWrapperComponent, StringFilterMenuInputComponent, StringFilterMenuComponent, FilterMenuTemplateDirective, NumericFilterMenuComponent, NumericFilterMenuInputComponent, DateFilterMenuInputComponent, DateFilterMenuComponent, FilterMenuHostDirective, BooleanFilterMenuComponent, FilterMenuDropDownListDirective, BooleanFilterRadioButtonDirective, ColumnListComponent, ColumnChooserComponent, ColumnChooserToolbarDirective, ColumnMenuChooserComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuSortComponent, ColumnMenuComponent, ColumnMenuLockComponent, ColumnMenuTemplateDirective, ColumnMenuContainerComponent, ColumnMenuItemDirective, ColumnMenuStickComponent, ColumnMenuPositionComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuAutoSizeAllColumnsComponent, GridComponent, ListComponent, ToolbarComponent, LocalizedMessagesDirective, CustomMessagesComponent, DataBindingDirective, ToolbarTemplateDirective, SelectionDirective, HighlightDirective, TemplateEditingDirective, ReactiveEditingDirective, InCellEditingDirective, ExternalEditingDirective, ExpandDetailsDirective, ExpandGroupDirective, GridMarqueeDirective, GridSpacerComponent, GridToolbarFocusableDirective, StatusBarComponent, StatusBarTemplateDirective, GridClipboardDirective, FormComponent, DialogFormComponent, FormFormFieldComponent, UndoRedoDirective, i57.ToolBarComponent, i57.ToolbarCustomMessagesComponent, i57.ToolBarButtonComponent, i57.ToolBarButtonGroupComponent, i57.ToolBarDropDownButtonComponent, i57.ToolBarSeparatorComponent, i57.ToolBarSpacerComponent, i57.ToolBarSplitButtonComponent, i57.ToolBarToolComponent, TableDirective,
44283
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.20", ngImport: i0, type: GridModule, imports: [GroupHeaderTemplateDirective, GroupHeaderColumnTemplateDirective, GroupFooterTemplateDirective, GroupHeaderComponent, GroupPanelComponent, ColumnComponent, ColumnGroupComponent, LogicalCellDirective, LogicalRowDirective, FocusableDirective, FooterTemplateDirective, ColGroupComponent, ResizableContainerDirective, i1$3.TemplateContextDirective, FieldAccessorPipe, DetailTemplateDirective, SpanColumnComponent, LoadingComponent, GridTableDirective, CommandColumnComponent, CheckboxColumnComponent, SelectionCheckboxDirective, CellTemplateDirective, EditTemplateDirective, RowDragHandleTemplateDirective, RowDragHintTemplateDirective, TableBodyComponent, NoRecordsTemplateDirective, CellComponent, EditCommandDirective, CancelCommandDirective, SaveCommandDirective, RemoveCommandDirective, AddCommandDirective, AddCommandToolbarDirective, EditCommandToolbarDirective, SaveCommandToolbarDirective, RemoveCommandToolbarDirective, CancelCommandToolbarDirective, CellLoadingTemplateDirective, LoadingTemplateDirective, RowReorderColumnComponent, RowPinColumnComponent, SortCommandToolbarDirective, FilterCommandToolbarDirective, AIAssistantToolbarDirective, GroupCommandToolbarDirective, SelectAllToolbarToolComponent, SmartBoxToolbarToolComponent, GridSmartBoxHistoryItemTemplateDirective, GridSmartBoxPromptSuggestionTemplateDirective, HeaderComponent, HeaderTemplateDirective, ColumnHandleDirective, SelectAllCheckboxDirective, FooterComponent, i57.CustomMessagesComponent, i57.PagerFocusableDirective, i57.PagerInfoComponent, i57.PagerInputComponent, i57.PagerNextButtonsComponent, i57.PagerNumericButtonsComponent, i57.PagerPageSizesComponent, i57.PagerPrevButtonsComponent, i57.PagerTemplateDirective, i57.PagerComponent, i57.PagerSpacerComponent, i58.ToolBarComponent, i58.ToolbarCustomMessagesComponent, i58.ToolBarButtonComponent, i58.ToolBarButtonGroupComponent, i58.ToolBarDropDownButtonComponent, i58.ToolBarSeparatorComponent, i58.ToolBarSpacerComponent, i58.ToolBarSplitButtonComponent, i58.ToolBarToolComponent, FilterRowComponent, FilterCellComponent, FilterCellTemplateDirective, StringFilterCellComponent, NumericFilterCellComponent, AutoCompleteFilterCellComponent, BooleanFilterCellComponent, FilterCellHostDirective, FilterCellWrapperComponent, DateFilterCellComponent, ColumnComponent, ColumnGroupComponent, LogicalCellDirective, LogicalRowDirective, FocusableDirective, FooterTemplateDirective, ColGroupComponent, ResizableContainerDirective, i1$3.TemplateContextDirective, FieldAccessorPipe, DetailTemplateDirective, SpanColumnComponent, LoadingComponent, GridTableDirective, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, FilterInputDirective, ColumnComponent, ColumnGroupComponent, LogicalCellDirective, LogicalRowDirective, FocusableDirective, FooterTemplateDirective, ColGroupComponent, ResizableContainerDirective, i1$3.TemplateContextDirective, FieldAccessorPipe, DetailTemplateDirective, SpanColumnComponent, LoadingComponent, GridTableDirective, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, FilterInputDirective, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuInputWrapperComponent, StringFilterMenuInputComponent, StringFilterMenuComponent, FilterMenuTemplateDirective, NumericFilterMenuComponent, NumericFilterMenuInputComponent, DateFilterMenuInputComponent, DateFilterMenuComponent, FilterMenuHostDirective, BooleanFilterMenuComponent, FilterMenuDropDownListDirective, BooleanFilterRadioButtonDirective, ColumnListComponent, ColumnChooserComponent, ColumnChooserToolbarDirective, ColumnMenuChooserComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuSortComponent, ColumnMenuComponent, ColumnMenuLockComponent, ColumnMenuTemplateDirective, ColumnMenuContainerComponent, ColumnMenuItemDirective, ColumnMenuStickComponent, ColumnMenuPositionComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuAutoSizeAllColumnsComponent, GridComponent, ListComponent, ToolbarComponent, LocalizedMessagesDirective, CustomMessagesComponent, DataBindingDirective, ToolbarTemplateDirective, SelectionDirective, HighlightDirective, TemplateEditingDirective, ReactiveEditingDirective, InCellEditingDirective, ExternalEditingDirective, ExpandDetailsDirective, ExpandGroupDirective, GridMarqueeDirective, GridSpacerComponent, GridToolbarFocusableDirective, StatusBarComponent, StatusBarTemplateDirective, GridClipboardDirective, FormComponent, DialogFormComponent, FormFormFieldComponent, UndoRedoDirective, i58.ToolBarComponent, i58.ToolbarCustomMessagesComponent, i58.ToolBarButtonComponent, i58.ToolBarButtonGroupComponent, i58.ToolBarDropDownButtonComponent, i58.ToolBarSeparatorComponent, i58.ToolBarSpacerComponent, i58.ToolBarSplitButtonComponent, i58.ToolBarToolComponent, TableDirective,
43352
44284
  UndoCommandToolbarDirective,
43353
- RedoCommandToolbarDirective], exports: [GridComponent, ToolbarTemplateDirective, ToolbarComponent, GridSpacerComponent, StatusBarTemplateDirective, DataBindingDirective, SelectionDirective, HighlightDirective, CustomMessagesComponent, TemplateEditingDirective, ReactiveEditingDirective, InCellEditingDirective, ExternalEditingDirective, ExpandDetailsDirective, ExpandGroupDirective, GridToolbarFocusableDirective, GroupHeaderTemplateDirective, GroupHeaderColumnTemplateDirective, GroupFooterTemplateDirective, GroupHeaderComponent, GroupPanelComponent, ColumnComponent, ColumnGroupComponent, LogicalCellDirective, LogicalRowDirective, FocusableDirective, FooterTemplateDirective, ColGroupComponent, ResizableContainerDirective, i1$3.TemplateContextDirective, FieldAccessorPipe, DetailTemplateDirective, SpanColumnComponent, LoadingComponent, GridTableDirective, CommandColumnComponent, CheckboxColumnComponent, SelectionCheckboxDirective, CellTemplateDirective, EditTemplateDirective, RowDragHandleTemplateDirective, RowDragHintTemplateDirective, TableBodyComponent, NoRecordsTemplateDirective, CellComponent, EditCommandDirective, CancelCommandDirective, SaveCommandDirective, RemoveCommandDirective, AddCommandDirective, AddCommandToolbarDirective, EditCommandToolbarDirective, SaveCommandToolbarDirective, RemoveCommandToolbarDirective, CancelCommandToolbarDirective, CellLoadingTemplateDirective, LoadingTemplateDirective, RowReorderColumnComponent, SortCommandToolbarDirective, FilterCommandToolbarDirective, AIAssistantToolbarDirective, GroupCommandToolbarDirective, SelectAllToolbarToolComponent, SmartBoxToolbarToolComponent, GridSmartBoxHistoryItemTemplateDirective, GridSmartBoxPromptSuggestionTemplateDirective, HeaderComponent, HeaderTemplateDirective, ColumnHandleDirective, SelectAllCheckboxDirective, FilterRowComponent, FilterCellComponent, FilterCellTemplateDirective, StringFilterCellComponent, NumericFilterCellComponent, AutoCompleteFilterCellComponent, BooleanFilterCellComponent, FilterCellHostDirective, FilterCellWrapperComponent, DateFilterCellComponent, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuInputWrapperComponent, StringFilterMenuInputComponent, StringFilterMenuComponent, FilterMenuTemplateDirective, NumericFilterMenuComponent, NumericFilterMenuInputComponent, DateFilterMenuInputComponent, DateFilterMenuComponent, FilterMenuHostDirective, BooleanFilterMenuComponent, FilterMenuDropDownListDirective, BooleanFilterRadioButtonDirective, ColumnChooserComponent, ColumnChooserToolbarDirective, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuSortComponent, ColumnMenuLockComponent, ColumnMenuStickComponent, ColumnMenuPositionComponent, ColumnMenuChooserComponent, ColumnMenuTemplateDirective, ColumnMenuContainerComponent, ColumnMenuItemDirective, ColumnMenuComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuAutoSizeAllColumnsComponent, GridClipboardDirective, UndoRedoDirective, UndoCommandToolbarDirective, RedoCommandToolbarDirective, i57.ToolBarComponent, i57.ToolbarCustomMessagesComponent, i57.ToolBarButtonComponent, i57.ToolBarButtonGroupComponent, i57.ToolBarDropDownButtonComponent, i57.ToolBarSeparatorComponent, i57.ToolBarSpacerComponent, i57.ToolBarSplitButtonComponent, i57.ToolBarToolComponent, i56.CustomMessagesComponent, i56.PagerFocusableDirective, i56.PagerInfoComponent, i56.PagerInputComponent, i56.PagerNextButtonsComponent, i56.PagerNumericButtonsComponent, i56.PagerPageSizesComponent, i56.PagerPrevButtonsComponent, i56.PagerTemplateDirective, i56.PagerComponent, i56.PagerSpacerComponent] });
44285
+ RedoCommandToolbarDirective], exports: [GridComponent, ToolbarTemplateDirective, ToolbarComponent, GridSpacerComponent, StatusBarTemplateDirective, DataBindingDirective, SelectionDirective, HighlightDirective, CustomMessagesComponent, TemplateEditingDirective, ReactiveEditingDirective, InCellEditingDirective, ExternalEditingDirective, ExpandDetailsDirective, ExpandGroupDirective, GridToolbarFocusableDirective, GroupHeaderTemplateDirective, GroupHeaderColumnTemplateDirective, GroupFooterTemplateDirective, GroupHeaderComponent, GroupPanelComponent, ColumnComponent, ColumnGroupComponent, LogicalCellDirective, LogicalRowDirective, FocusableDirective, FooterTemplateDirective, ColGroupComponent, ResizableContainerDirective, i1$3.TemplateContextDirective, FieldAccessorPipe, DetailTemplateDirective, SpanColumnComponent, LoadingComponent, GridTableDirective, CommandColumnComponent, CheckboxColumnComponent, SelectionCheckboxDirective, CellTemplateDirective, EditTemplateDirective, RowDragHandleTemplateDirective, RowDragHintTemplateDirective, TableBodyComponent, NoRecordsTemplateDirective, CellComponent, EditCommandDirective, CancelCommandDirective, SaveCommandDirective, RemoveCommandDirective, AddCommandDirective, AddCommandToolbarDirective, EditCommandToolbarDirective, SaveCommandToolbarDirective, RemoveCommandToolbarDirective, CancelCommandToolbarDirective, CellLoadingTemplateDirective, LoadingTemplateDirective, RowReorderColumnComponent, RowPinColumnComponent, SortCommandToolbarDirective, FilterCommandToolbarDirective, AIAssistantToolbarDirective, GroupCommandToolbarDirective, SelectAllToolbarToolComponent, SmartBoxToolbarToolComponent, GridSmartBoxHistoryItemTemplateDirective, GridSmartBoxPromptSuggestionTemplateDirective, HeaderComponent, HeaderTemplateDirective, ColumnHandleDirective, SelectAllCheckboxDirective, FilterRowComponent, FilterCellComponent, FilterCellTemplateDirective, StringFilterCellComponent, NumericFilterCellComponent, AutoCompleteFilterCellComponent, BooleanFilterCellComponent, FilterCellHostDirective, FilterCellWrapperComponent, DateFilterCellComponent, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuInputWrapperComponent, StringFilterMenuInputComponent, StringFilterMenuComponent, FilterMenuTemplateDirective, NumericFilterMenuComponent, NumericFilterMenuInputComponent, DateFilterMenuInputComponent, DateFilterMenuComponent, FilterMenuHostDirective, BooleanFilterMenuComponent, FilterMenuDropDownListDirective, BooleanFilterRadioButtonDirective, ColumnChooserComponent, ColumnChooserToolbarDirective, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuSortComponent, ColumnMenuLockComponent, ColumnMenuStickComponent, ColumnMenuPositionComponent, ColumnMenuChooserComponent, ColumnMenuTemplateDirective, ColumnMenuContainerComponent, ColumnMenuItemDirective, ColumnMenuComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuAutoSizeAllColumnsComponent, GridClipboardDirective, UndoRedoDirective, UndoCommandToolbarDirective, RedoCommandToolbarDirective, i58.ToolBarComponent, i58.ToolbarCustomMessagesComponent, i58.ToolBarButtonComponent, i58.ToolBarButtonGroupComponent, i58.ToolBarDropDownButtonComponent, i58.ToolBarSeparatorComponent, i58.ToolBarSpacerComponent, i58.ToolBarSplitButtonComponent, i58.ToolBarToolComponent, i57.CustomMessagesComponent, i57.PagerFocusableDirective, i57.PagerInfoComponent, i57.PagerInputComponent, i57.PagerNextButtonsComponent, i57.PagerNumericButtonsComponent, i57.PagerPageSizesComponent, i57.PagerPrevButtonsComponent, i57.PagerTemplateDirective, i57.PagerComponent, i57.PagerSpacerComponent] });
43354
44286
  static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: GridModule, providers: [
43355
44287
  PopupService,
43356
44288
  ResizeBatchService,
@@ -43365,7 +44297,7 @@ class GridModule {
43365
44297
  MonthViewService,
43366
44298
  YearViewService,
43367
44299
  NavigationService$2
43368
- ], imports: [GroupHeaderComponent, GroupPanelComponent, TableBodyComponent, CellComponent, EditCommandDirective, CancelCommandDirective, SaveCommandDirective, RemoveCommandDirective, AddCommandDirective, SelectAllToolbarToolComponent, SmartBoxToolbarToolComponent, HeaderComponent, i56.CustomMessagesComponent, i56.PagerInfoComponent, i56.PagerInputComponent, i56.PagerNextButtonsComponent, i56.PagerNumericButtonsComponent, i56.PagerPageSizesComponent, i56.PagerPrevButtonsComponent, i56.PagerComponent, i56.PagerSpacerComponent, i57.ToolBarComponent, i57.ToolbarCustomMessagesComponent, i57.ToolBarButtonComponent, i57.ToolBarButtonGroupComponent, i57.ToolBarDropDownButtonComponent, i57.ToolBarSeparatorComponent, i57.ToolBarSpacerComponent, i57.ToolBarSplitButtonComponent, StringFilterCellComponent, NumericFilterCellComponent, AutoCompleteFilterCellComponent, BooleanFilterCellComponent, FilterCellWrapperComponent, DateFilterCellComponent, FilterCellOperatorsComponent, FilterCellOperatorsComponent, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuInputWrapperComponent, StringFilterMenuInputComponent, StringFilterMenuComponent, NumericFilterMenuComponent, NumericFilterMenuInputComponent, DateFilterMenuInputComponent, DateFilterMenuComponent, BooleanFilterMenuComponent, ColumnListComponent, ColumnChooserComponent, ColumnMenuChooserComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuSortComponent, ColumnMenuComponent, ColumnMenuLockComponent, ColumnMenuStickComponent, ColumnMenuPositionComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuAutoSizeAllColumnsComponent, GridComponent, ListComponent, FormComponent, DialogFormComponent, FormFormFieldComponent, i57.ToolBarComponent, i57.ToolbarCustomMessagesComponent, i57.ToolBarButtonComponent, i57.ToolBarButtonGroupComponent, i57.ToolBarDropDownButtonComponent, i57.ToolBarSeparatorComponent, i57.ToolBarSpacerComponent, i57.ToolBarSplitButtonComponent] });
44300
+ ], imports: [GroupHeaderComponent, GroupPanelComponent, TableBodyComponent, CellComponent, EditCommandDirective, CancelCommandDirective, SaveCommandDirective, RemoveCommandDirective, AddCommandDirective, SelectAllToolbarToolComponent, SmartBoxToolbarToolComponent, HeaderComponent, i57.CustomMessagesComponent, i57.PagerInfoComponent, i57.PagerInputComponent, i57.PagerNextButtonsComponent, i57.PagerNumericButtonsComponent, i57.PagerPageSizesComponent, i57.PagerPrevButtonsComponent, i57.PagerComponent, i57.PagerSpacerComponent, i58.ToolBarComponent, i58.ToolbarCustomMessagesComponent, i58.ToolBarButtonComponent, i58.ToolBarButtonGroupComponent, i58.ToolBarDropDownButtonComponent, i58.ToolBarSeparatorComponent, i58.ToolBarSpacerComponent, i58.ToolBarSplitButtonComponent, StringFilterCellComponent, NumericFilterCellComponent, AutoCompleteFilterCellComponent, BooleanFilterCellComponent, FilterCellWrapperComponent, DateFilterCellComponent, FilterCellOperatorsComponent, FilterCellOperatorsComponent, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuInputWrapperComponent, StringFilterMenuInputComponent, StringFilterMenuComponent, NumericFilterMenuComponent, NumericFilterMenuInputComponent, DateFilterMenuInputComponent, DateFilterMenuComponent, BooleanFilterMenuComponent, ColumnListComponent, ColumnChooserComponent, ColumnMenuChooserComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuSortComponent, ColumnMenuComponent, ColumnMenuLockComponent, ColumnMenuStickComponent, ColumnMenuPositionComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuAutoSizeAllColumnsComponent, GridComponent, ListComponent, FormComponent, DialogFormComponent, FormFormFieldComponent, i58.ToolBarComponent, i58.ToolbarCustomMessagesComponent, i58.ToolBarButtonComponent, i58.ToolBarButtonGroupComponent, i58.ToolBarDropDownButtonComponent, i58.ToolBarSeparatorComponent, i58.ToolBarSpacerComponent, i58.ToolBarSplitButtonComponent] });
43369
44301
  }
43370
44302
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: GridModule, decorators: [{
43371
44303
  type: NgModule,
@@ -43510,5 +44442,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
43510
44442
  * Generated bundle index. Do not edit.
43511
44443
  */
43512
44444
 
43513
- export { AIAssistantToolbarDirective, AdaptiveGridService, AddCommandDirective, AddCommandToolbarDirective, AfterEqFilterOperatorComponent, AfterFilterOperatorComponent, AutoCompleteFilterCellComponent, BaseFilterCellComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, BooleanFilterCellComponent, BooleanFilterComponent, BooleanFilterMenuComponent, BooleanFilterRadioButtonDirective, CELL_CONTEXT, CSVCommandDirective, CSVCommandToolbarDirective, CSVComponent, CSVExportEvent, CSVModule, CSVService, CancelCommandDirective, CancelCommandToolbarDirective, CellCloseEvent, CellComponent, CellLoadingTemplateDirective, CellSelectionAggregateService, CellSelectionService, CellTemplateDirective, ChangeNotificationService, CheckboxColumnComponent, ColGroupComponent, ColumnBase, ColumnChooserComponent, ColumnChooserToolbarDirective, ColumnComponent, ColumnGroupComponent, ColumnHandleDirective, ColumnInfoService, ColumnListComponent, ColumnLockedChangeEvent, ColumnMenuAutoSizeAllColumnsComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuChooserComponent, ColumnMenuComponent, ColumnMenuContainerComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuItemDirective, ColumnMenuLockComponent, ColumnMenuPositionComponent, ColumnMenuService, ColumnMenuSortComponent, ColumnMenuStickComponent, ColumnMenuTemplateDirective, ColumnReorderEvent, ColumnReorderService, ColumnResizingService, ColumnStickyChangeEvent, ColumnVisibilityChangeEvent, ColumnsContainer, CommandColumnComponent, ContainsFilterOperatorComponent, ContextService, CustomMessagesComponent, DEFAULT_AI_REQUEST_OPTIONS, DEFAULT_SCROLLER_FACTORY, DataBindingDirective, DateFilterCellComponent, DateFilterComponent, DateFilterMenuComponent, DateFilterMenuInputComponent, DetailCollapseEvent, DetailExpandEvent, DetailTemplateDirective, DetailsService, DoesNotContainFilterOperatorComponent, DomEventsService, DragAndDropService, DragHintService, DropCueService, EditCommandDirective, EditCommandToolbarDirective, EditService as EditServiceClass, EditTemplateDirective, EditingDirectiveBase, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, ExcelCommandDirective, ExcelCommandToolbarDirective, ExcelComponent, ExcelExportEvent, ExcelModule, ExcelService, ExpandDetailsDirective, ExpandGroupDirective, ExternalEditingDirective, FieldAccessorPipe, FilterCellComponent, FilterCellHostDirective, FilterCellOperatorsComponent, FilterCellTemplateDirective, FilterCellWrapperComponent, FilterCommandToolbarDirective, FilterInputDirective, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuDropDownListDirective, FilterMenuHostDirective, FilterMenuInputWrapperComponent, FilterMenuTemplateDirective, FilterOperatorBase, FilterRowComponent, FilterService, FocusRoot, FocusableDirective, FooterComponent, FooterTemplateDirective, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, GridAIAssistantResponseErrorEvent, GridAIAssistantResponseSuccessEvent, GridClipboardDirective, GridComponent, GridModule, GridSmartBoxHistoryItemTemplateDirective, GridSmartBoxPromptSuggestionTemplateDirective, GridSmartBoxResponseErrorEvent, GridSmartBoxResponseSuccessEvent, GridSmartBoxSearchEvent, GridSpacerComponent, GridTableDirective, GridToolbarFocusableDirective, GridToolbarNavigationService, GroupCommandToolbarDirective, GroupFooterTemplateDirective, GroupHeaderColumnTemplateDirective, GroupHeaderComponent, GroupHeaderTemplateDirective, GroupInfoService, GroupPanelComponent, GroupsService, HeaderComponent, HeaderTemplateDirective, HighlightDirective, IdService, InCellEditingDirective, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, KENDO_GRID, KENDO_GRID_BODY_EXPORTS, KENDO_GRID_COLUMN_DRAGANDDROP, KENDO_GRID_COLUMN_MENU_DECLARATIONS, KENDO_GRID_COLUMN_MENU_EXPORTS, KENDO_GRID_CSV_EXPORT, KENDO_GRID_DECLARATIONS, KENDO_GRID_EXCEL_EXPORT, KENDO_GRID_EXPORTS, KENDO_GRID_FILTER_MENU, KENDO_GRID_FILTER_MENU_EXPORTS, KENDO_GRID_FILTER_OPERATORS, KENDO_GRID_FILTER_ROW, KENDO_GRID_FILTER_ROW_EXPORTS, KENDO_GRID_FILTER_SHARED, KENDO_GRID_FOOTER_EXPORTS, KENDO_GRID_GROUP_EXPORTS, KENDO_GRID_HEADER_EXPORTS, KENDO_GRID_PDF_EXPORT, KENDO_GRID_SHARED, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, ListComponent, LoadingComponent, LoadingTemplateDirective, LocalDataChangesService, LogicalCellDirective, LogicalRowDirective, MenuTabbingService, MultiCheckboxFilterComponent, NavigationService, NoRecordsTemplateDirective, NotEqualFilterOperatorComponent, NumericFilterCellComponent, NumericFilterComponent, NumericFilterMenuComponent, NumericFilterMenuInputComponent, PDFCommandDirective, PDFCommandToolbarDirective, PDFComponent, PDFMarginComponent, PDFModule, PDFService, PDFTemplateDirective, PopupCloseEvent, ReactiveEditingDirective, RedoCommandToolbarDirective, RemoveCommandDirective, RemoveCommandToolbarDirective, ResizableContainerDirective, ResizeService, ResponsiveService, RowDragHandleTemplateDirective, RowDragHintTemplateDirective, RowEditingDirectiveBase, RowReorderColumnComponent, RowReorderService, SaveCommandDirective, SaveCommandToolbarDirective, ScrollRequestService, ScrollSyncService, SelectAllCheckboxDirective, SelectAllToolbarToolComponent, SelectionCheckboxDirective, SelectionDirective, SelectionService, SinglePopupService, SizingOptionsService, Skip, SmartBoxToolbarToolComponent, SortCommandToolbarDirective, SortService, SpanColumnComponent, StartsWithFilterOperatorComponent, StatusBarTemplateDirective, StringFilterCellComponent, StringFilterComponent, StringFilterMenuComponent, StringFilterMenuInputComponent, SuspendService, TableBodyComponent, TableDirective, TemplateEditingDirective, ToolbarComponent, ToolbarTemplateDirective, UndoCommandToolbarDirective, UndoRedoDirective, UndoRedoEvent, defaultTrackBy, hasFilterMenu, hasFilterRow, isFilterable };
44445
+ export { AIAssistantToolbarDirective, AdaptiveGridService, AddCommandDirective, AddCommandToolbarDirective, AfterEqFilterOperatorComponent, AfterFilterOperatorComponent, AutoCompleteFilterCellComponent, BaseFilterCellComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, BooleanFilterCellComponent, BooleanFilterComponent, BooleanFilterMenuComponent, BooleanFilterRadioButtonDirective, CELL_CONTEXT, CSVCommandDirective, CSVCommandToolbarDirective, CSVComponent, CSVExportEvent, CSVModule, CSVService, CancelCommandDirective, CancelCommandToolbarDirective, CellCloseEvent, CellComponent, CellLoadingTemplateDirective, CellSelectionAggregateService, CellSelectionService, CellTemplateDirective, ChangeNotificationService, CheckboxColumnComponent, ColGroupComponent, ColumnBase, ColumnChooserComponent, ColumnChooserToolbarDirective, ColumnComponent, ColumnGroupComponent, ColumnHandleDirective, ColumnInfoService, ColumnListComponent, ColumnLockedChangeEvent, ColumnMenuAutoSizeAllColumnsComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuChooserComponent, ColumnMenuComponent, ColumnMenuContainerComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuItemDirective, ColumnMenuLockComponent, ColumnMenuPositionComponent, ColumnMenuService, ColumnMenuSortComponent, ColumnMenuStickComponent, ColumnMenuTemplateDirective, ColumnReorderEvent, ColumnReorderService, ColumnResizingService, ColumnStickyChangeEvent, ColumnVisibilityChangeEvent, ColumnsContainer, CommandColumnComponent, ContainsFilterOperatorComponent, ContextService, CustomMessagesComponent, DEFAULT_AI_REQUEST_OPTIONS, DEFAULT_SCROLLER_FACTORY, DataBindingDirective, DateFilterCellComponent, DateFilterComponent, DateFilterMenuComponent, DateFilterMenuInputComponent, DetailCollapseEvent, DetailExpandEvent, DetailTemplateDirective, DetailsService, DoesNotContainFilterOperatorComponent, DomEventsService, DragAndDropService, DragHintService, DropCueService, EditCommandDirective, EditCommandToolbarDirective, EditService as EditServiceClass, EditTemplateDirective, EditingDirectiveBase, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, ExcelCommandDirective, ExcelCommandToolbarDirective, ExcelComponent, ExcelExportEvent, ExcelModule, ExcelService, ExpandDetailsDirective, ExpandGroupDirective, ExternalEditingDirective, FieldAccessorPipe, FilterCellComponent, FilterCellHostDirective, FilterCellOperatorsComponent, FilterCellTemplateDirective, FilterCellWrapperComponent, FilterCommandToolbarDirective, FilterInputDirective, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuDropDownListDirective, FilterMenuHostDirective, FilterMenuInputWrapperComponent, FilterMenuTemplateDirective, FilterOperatorBase, FilterRowComponent, FilterService, FocusRoot, FocusableDirective, FooterComponent, FooterTemplateDirective, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, GridAIAssistantResponseErrorEvent, GridAIAssistantResponseSuccessEvent, GridClipboardDirective, GridComponent, GridModule, GridSmartBoxHistoryItemTemplateDirective, GridSmartBoxPromptSuggestionTemplateDirective, GridSmartBoxResponseErrorEvent, GridSmartBoxResponseSuccessEvent, GridSmartBoxSearchEvent, GridSpacerComponent, GridTableDirective, GridToolbarFocusableDirective, GridToolbarNavigationService, GroupCommandToolbarDirective, GroupFooterTemplateDirective, GroupHeaderColumnTemplateDirective, GroupHeaderComponent, GroupHeaderTemplateDirective, GroupInfoService, GroupPanelComponent, GroupsService, HeaderComponent, HeaderTemplateDirective, HighlightDirective, IdService, InCellEditingDirective, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, KENDO_GRID, KENDO_GRID_BODY_EXPORTS, KENDO_GRID_COLUMN_DRAGANDDROP, KENDO_GRID_COLUMN_MENU_DECLARATIONS, KENDO_GRID_COLUMN_MENU_EXPORTS, KENDO_GRID_CSV_EXPORT, KENDO_GRID_DECLARATIONS, KENDO_GRID_EXCEL_EXPORT, KENDO_GRID_EXPORTS, KENDO_GRID_FILTER_MENU, KENDO_GRID_FILTER_MENU_EXPORTS, KENDO_GRID_FILTER_OPERATORS, KENDO_GRID_FILTER_ROW, KENDO_GRID_FILTER_ROW_EXPORTS, KENDO_GRID_FILTER_SHARED, KENDO_GRID_FOOTER_EXPORTS, KENDO_GRID_GROUP_EXPORTS, KENDO_GRID_HEADER_EXPORTS, KENDO_GRID_PDF_EXPORT, KENDO_GRID_SHARED, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, ListComponent, LoadingComponent, LoadingTemplateDirective, LocalDataChangesService, LogicalCellDirective, LogicalRowDirective, MenuTabbingService, MultiCheckboxFilterComponent, NavigationService, NoRecordsTemplateDirective, NotEqualFilterOperatorComponent, NumericFilterCellComponent, NumericFilterComponent, NumericFilterMenuComponent, NumericFilterMenuInputComponent, PDFCommandDirective, PDFCommandToolbarDirective, PDFComponent, PDFMarginComponent, PDFModule, PDFService, PDFTemplateDirective, PopupCloseEvent, ReactiveEditingDirective, RedoCommandToolbarDirective, RemoveCommandDirective, RemoveCommandToolbarDirective, ResizableContainerDirective, ResizeService, ResponsiveService, RowDragHandleTemplateDirective, RowDragHintTemplateDirective, RowEditingDirectiveBase, RowPinColumnComponent, RowPinService, RowReorderColumnComponent, RowReorderService, SaveCommandDirective, SaveCommandToolbarDirective, ScrollRequestService, ScrollSyncService, SelectAllCheckboxDirective, SelectAllToolbarToolComponent, SelectionCheckboxDirective, SelectionDirective, SelectionService, SinglePopupService, SizingOptionsService, Skip, SmartBoxToolbarToolComponent, SortCommandToolbarDirective, SortService, SpanColumnComponent, StartsWithFilterOperatorComponent, StatusBarTemplateDirective, StringFilterCellComponent, StringFilterComponent, StringFilterMenuComponent, StringFilterMenuInputComponent, SuspendService, TableBodyComponent, TableDirective, TemplateEditingDirective, ToolbarComponent, ToolbarTemplateDirective, UndoCommandToolbarDirective, UndoRedoDirective, UndoRedoEvent, defaultTrackBy, hasFilterMenu, hasFilterRow, isFilterable };
43514
44446