@progress/kendo-angular-grid 19.0.0-develop.2 → 19.0.0-develop.20

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.
Files changed (129) hide show
  1. package/adaptiveness/adaptive-mode.d.ts +12 -0
  2. package/adaptiveness/adaptive-renderer.component.d.ts +84 -0
  3. package/column-menu/column-chooser.component.d.ts +4 -0
  4. package/column-menu/column-list.component.d.ts +9 -3
  5. package/column-menu/column-menu-item.component.d.ts +38 -2
  6. package/column-menu/column-menu-item.directive.d.ts +5 -2
  7. package/column-menu/column-menu.component.d.ts +4 -2
  8. package/columns/column-base.d.ts +5 -0
  9. package/columns/span-column.component.d.ts +2 -2
  10. package/common/adaptiveness.service.d.ts +50 -0
  11. package/common/single-popup.service.d.ts +3 -1
  12. package/common/toolbar-tool-base.directive.d.ts +26 -0
  13. package/directives.d.ts +12 -5
  14. package/dragdrop/drag-hint.service.d.ts +3 -2
  15. package/editing/add-command-tool.directive.d.ts +7 -6
  16. package/editing/cancel-command-tool.directive.d.ts +38 -0
  17. package/editing/edit-command-tool.directive.d.ts +38 -0
  18. package/editing/edit.service.d.ts +1 -1
  19. package/editing/remove-command-tool.directive.d.ts +39 -0
  20. package/editing/save-command-tool.directive.d.ts +38 -0
  21. package/editing/toolbar-editing-tool-base.directive.d.ts +29 -0
  22. package/editing-directives/external-editing.directive.d.ts +3 -1
  23. package/esm2022/adaptiveness/adaptive-mode.mjs +5 -0
  24. package/esm2022/adaptiveness/adaptive-renderer.component.mjs +1106 -0
  25. package/esm2022/column-menu/column-chooser.component.mjs +13 -11
  26. package/esm2022/column-menu/column-list.component.mjs +43 -8
  27. package/esm2022/column-menu/column-menu-autosize-all.component.mjs +1 -1
  28. package/esm2022/column-menu/column-menu-autosize.component.mjs +1 -1
  29. package/esm2022/column-menu/column-menu-chooser.component.mjs +1 -1
  30. package/esm2022/column-menu/column-menu-container.component.mjs +1 -1
  31. package/esm2022/column-menu/column-menu-filter.component.mjs +1 -1
  32. package/esm2022/column-menu/column-menu-item.component.mjs +106 -11
  33. package/esm2022/column-menu/column-menu-item.directive.mjs +14 -5
  34. package/esm2022/column-menu/column-menu-lock.component.mjs +1 -1
  35. package/esm2022/column-menu/column-menu-position.component.mjs +1 -1
  36. package/esm2022/column-menu/column-menu-sort.component.mjs +1 -1
  37. package/esm2022/column-menu/column-menu-stick.component.mjs +1 -1
  38. package/esm2022/column-menu/column-menu.component.mjs +68 -44
  39. package/esm2022/column-resizing/column-handle.directive.mjs +2 -2
  40. package/esm2022/columns/column-base.mjs +9 -0
  41. package/esm2022/columns/columns-container.mjs +1 -1
  42. package/esm2022/columns/span-column.component.mjs +9 -9
  43. package/esm2022/common/adaptiveness.service.mjs +72 -0
  44. package/esm2022/common/single-popup.service.mjs +9 -3
  45. package/esm2022/common/toolbar-tool-base.directive.mjs +81 -0
  46. package/esm2022/directives.mjs +18 -3
  47. package/esm2022/dragdrop/drag-hint.service.mjs +7 -4
  48. package/esm2022/editing/add-command-tool.directive.mjs +12 -15
  49. package/esm2022/editing/cancel-command-tool.directive.mjs +64 -0
  50. package/esm2022/editing/edit-command-tool.directive.mjs +59 -0
  51. package/esm2022/editing/form/form-formfield.component.mjs +1 -1
  52. package/esm2022/editing/remove-command-tool.directive.mjs +60 -0
  53. package/esm2022/editing/remove-command.directive.mjs +1 -0
  54. package/esm2022/editing/save-command-tool.directive.mjs +64 -0
  55. package/esm2022/editing/toolbar-editing-tool-base.directive.mjs +89 -0
  56. package/esm2022/editing-directives/external-editing.directive.mjs +28 -14
  57. package/esm2022/excel/excel-command-tool.directive.mjs +12 -17
  58. package/esm2022/filtering/cell/autocomplete-filter-cell.component.mjs +1 -1
  59. package/esm2022/filtering/cell/boolean-filter-cell.component.mjs +1 -1
  60. package/esm2022/filtering/cell/date-filter-cell.component.mjs +1 -1
  61. package/esm2022/filtering/cell/filter-cell-operators.component.mjs +1 -1
  62. package/esm2022/filtering/filter-input.directive.mjs +14 -2
  63. package/esm2022/filtering/menu/boolean-filter-menu.component.mjs +2 -2
  64. package/esm2022/filtering/menu/date-filter-menu-input.component.mjs +3 -1
  65. package/esm2022/filtering/menu/date-filter-menu.component.mjs +5 -1
  66. package/esm2022/filtering/menu/filter-menu-container.component.mjs +21 -10
  67. package/esm2022/filtering/menu/filter-menu-input-wrapper.component.mjs +25 -5
  68. package/esm2022/filtering/menu/filter-menu.component.mjs +44 -29
  69. package/esm2022/filtering/menu/numeric-filter-menu.component.mjs +5 -1
  70. package/esm2022/filtering/menu/string-filter-menu.component.mjs +5 -1
  71. package/esm2022/grid.component.mjs +291 -55
  72. package/esm2022/grid.module.mjs +114 -101
  73. package/esm2022/index.mjs +10 -1
  74. package/esm2022/localization/messages.mjs +104 -2
  75. package/esm2022/navigation/navigation.service.mjs +1 -1
  76. package/esm2022/navigation/toolbar-tool-name.mjs +17 -0
  77. package/esm2022/package-metadata.mjs +2 -2
  78. package/esm2022/pdf/pdf-command-tool.directive.mjs +12 -15
  79. package/esm2022/rendering/cell.component.mjs +4 -4
  80. package/esm2022/rendering/header/header.component.mjs +1 -1
  81. package/esm2022/rendering/list.component.mjs +1 -1
  82. package/esm2022/rendering/table-body.component.mjs +11 -3
  83. package/esm2022/rendering/toolbar/tools/column-chooser-tool.directive.mjs +201 -0
  84. package/esm2022/rendering/toolbar/tools/filter-command-tool.directive.mjs +49 -33
  85. package/esm2022/rendering/toolbar/tools/filter-tool-wrapper.component.mjs +28 -8
  86. package/esm2022/rendering/toolbar/tools/filter-toolbar-tool.component.mjs +26 -4
  87. package/esm2022/rendering/toolbar/tools/sort-command-tool.directive.mjs +33 -17
  88. package/esm2022/rendering/toolbar/tools/sort-toolbar-tool.component.mjs +24 -8
  89. package/esm2022/row-reordering/row-reorder.service.mjs +15 -0
  90. package/esm2022/selection/selection.service.mjs +11 -0
  91. package/esm2022/state-management/grid-state.models.mjs +26 -0
  92. package/esm2022/state-management/redo-command-tool.mjs +66 -0
  93. package/esm2022/state-management/undo-command-tool.mjs +66 -0
  94. package/esm2022/state-management/undo-redo.directive.mjs +178 -0
  95. package/esm2022/state-management/undo-redo.service.mjs +22 -0
  96. package/esm2022/state-management/undo-redo.stack.mjs +232 -0
  97. package/esm2022/utils.mjs +13 -13
  98. package/excel/excel-command-tool.directive.d.ts +5 -5
  99. package/fesm2022/progress-kendo-angular-grid.mjs +4066 -1351
  100. package/filtering/filter-input.directive.d.ts +1 -0
  101. package/filtering/menu/date-filter-menu-input.component.d.ts +1 -1
  102. package/filtering/menu/filter-menu-container.component.d.ts +14 -4
  103. package/filtering/menu/filter-menu-input-wrapper.component.d.ts +8 -3
  104. package/filtering/menu/filter-menu.component.d.ts +6 -3
  105. package/grid.component.d.ts +71 -21
  106. package/grid.module.d.ts +107 -100
  107. package/index.d.ts +9 -1
  108. package/localization/messages.d.ts +70 -2
  109. package/navigation/toolbar-tool-name.d.ts +17 -0
  110. package/package.json +21 -20
  111. package/pdf/pdf-command-tool.directive.d.ts +6 -5
  112. package/rendering/cell.component.d.ts +1 -1
  113. package/{column-menu → rendering/toolbar/tools}/column-chooser-tool.directive.d.ts +17 -6
  114. package/rendering/toolbar/tools/filter-command-tool.directive.d.ts +4 -1
  115. package/rendering/toolbar/tools/filter-tool-wrapper.component.d.ts +6 -5
  116. package/rendering/toolbar/tools/filter-toolbar-tool.component.d.ts +4 -1
  117. package/rendering/toolbar/tools/sort-command-tool.directive.d.ts +4 -1
  118. package/rendering/toolbar/tools/sort-toolbar-tool.component.d.ts +5 -1
  119. package/row-reordering/row-reorder.service.d.ts +2 -0
  120. package/schematics/ngAdd/index.js +4 -4
  121. package/selection/selection.service.d.ts +1 -0
  122. package/state-management/grid-state.models.d.ts +58 -0
  123. package/state-management/redo-command-tool.d.ts +38 -0
  124. package/state-management/undo-command-tool.d.ts +38 -0
  125. package/state-management/undo-redo.directive.d.ts +51 -0
  126. package/state-management/undo-redo.service.d.ts +19 -0
  127. package/state-management/undo-redo.stack.d.ts +104 -0
  128. package/utils.d.ts +11 -5
  129. package/esm2022/column-menu/column-chooser-tool.directive.mjs +0 -172
@@ -6,7 +6,7 @@ import { Component, ContentChildren, ElementRef, EventEmitter, HostBinding, Inpu
6
6
  import { ZoneAwareEventEmitter } from './common/event-emitter';
7
7
  import { FormControl, FormGroup } from '@angular/forms';
8
8
  import { merge } from 'rxjs';
9
- import { map, tap, take, filter, switchMap, takeUntil } from 'rxjs/operators';
9
+ import { map, tap, take, filter, switchMap, takeUntil, flatMap } from 'rxjs/operators';
10
10
  import { validatePackage } from '@progress/kendo-licensing';
11
11
  import { packageMetadata } from './package-metadata';
12
12
  import { ColumnComponent, isColumnComponent } from './columns/column.component';
@@ -14,7 +14,7 @@ import { isSpanColumnComponent } from './columns/span-column.component';
14
14
  import { isColumnGroupComponent, ColumnGroupComponent } from './columns/column-group.component';
15
15
  import { DetailTemplateDirective } from './rendering/details/detail-template.directive';
16
16
  import { normalize } from './common/pager-settings';
17
- import { isArray, anyChanged, isChanged, isPresent, isUniversal, observe, isTruthy, createPromise, hasObservers, roundDown } from './utils';
17
+ import { isArray, anyChanged, isChanged, isPresent, isUniversal, observe, isTruthy, createPromise, hasObservers, roundDown, recursiveColumnsFlatMap } from './utils';
18
18
  import { BrowserSupportService } from './layout/browser-support.service';
19
19
  import { DataResultIterator, DataCollection } from './data/data.collection';
20
20
  import { SelectionService } from './selection/selection.service';
@@ -72,7 +72,7 @@ import { ContextService } from './common/provider.service';
72
72
  import { LoadingTemplateDirective } from './rendering/loading-template.directive';
73
73
  import { SizingOptionsService } from './layout/sizing-options.service';
74
74
  import { DraggableDirective, WatermarkOverlayComponent, guid, shouldShowValidationUI } from '@progress/kendo-angular-common';
75
- import { DragTargetContainerDirective, DropTargetContainerDirective } from '@progress/kendo-angular-utils';
75
+ import { AdaptiveService, DragTargetContainerDirective, DropTargetContainerDirective } from '@progress/kendo-angular-utils';
76
76
  import { RowReorderService } from './row-reordering/row-reorder.service';
77
77
  import { StatusBarTemplateDirective } from './aggregates/status-bar-template.directive';
78
78
  import { CellSelectionAggregateService } from './aggregates/selection-aggregate.service';
@@ -96,6 +96,10 @@ import { LocalizedMessagesDirective } from './localization/localized-messages.di
96
96
  import { IconWrapperComponent } from '@progress/kendo-angular-icons';
97
97
  import { PagerTemplateDirective, PagerContextService, PagerNavigationService, KENDO_PAGER } from '@progress/kendo-angular-pager';
98
98
  import { RowspanService } from './rendering/rowspan.service';
99
+ import { AdaptiveGridService } from './common/adaptiveness.service';
100
+ import { AdaptiveRendererComponent } from './adaptiveness/adaptive-renderer.component';
101
+ import { ColumnMenuService } from './column-menu/column-menu.service';
102
+ import { MenuTabbingService } from './filtering/menu/menu-tabbing.service';
99
103
  import * as i0 from "@angular/core";
100
104
  import * as i1 from "./layout/browser-support.service";
101
105
  import * as i2 from "./selection/selection.service";
@@ -120,8 +124,10 @@ import * as i20 from "./scrolling/scroll-request.service";
120
124
  import * as i21 from "@progress/kendo-angular-l10n";
121
125
  import * as i22 from "./common/provider.service";
122
126
  import * as i23 from "./layout/sizing-options.service";
123
- import * as i24 from "./row-reordering/row-reorder.service";
124
- import * as i25 from "@progress/kendo-angular-pager";
127
+ import * as i24 from "@progress/kendo-angular-utils";
128
+ import * as i25 from "./common/adaptiveness.service";
129
+ import * as i26 from "./row-reordering/row-reorder.service";
130
+ import * as i27 from "@progress/kendo-angular-pager";
125
131
  const createControl = (source) => (acc, key) => {
126
132
  acc[key] = new FormControl(source[key]);
127
133
  return acc;
@@ -173,6 +179,8 @@ export class GridComponent {
173
179
  localization;
174
180
  ctx;
175
181
  sizingService;
182
+ adaptiveService;
183
+ adaptiveGridService;
176
184
  rowReorderService;
177
185
  /**
178
186
  * Sets the data of the Grid. If an array is provided, the Grid automatically gets the total count
@@ -240,6 +248,10 @@ export class GridComponent {
240
248
  * Set the `rowHeight` option to the exact pixels as the height of the `tr` element appears in the DOM.
241
249
  */
242
250
  rowHeight;
251
+ /**
252
+ * Enables or disables the adaptive mode. By default, adaptive rendering is disabled.
253
+ */
254
+ adaptiveMode = 'none';
243
255
  /**
244
256
  * Represent the actual height of each Grid detail row (`tr`) element in the DOM.
245
257
  * Required by the [virtual scrolling functionality]({% slug scrollmmodes_grid %}).
@@ -384,6 +396,26 @@ export class GridComponent {
384
396
  get marqueeSelection() {
385
397
  return this.selectionService.enableMarquee || this.cellSelectionService.enableMarquee;
386
398
  }
399
+ /**
400
+ * @hidden
401
+ */
402
+ get isAdaptiveModeEnabled() {
403
+ return this.adaptiveMode === 'auto';
404
+ }
405
+ /**
406
+ * @hidden
407
+ *
408
+ * The `isOpen` property is used to determine if a Grid Popup or ActionSheet is open.
409
+ */
410
+ get isOpen() {
411
+ return isPresent(this.adaptiveGridService.popupRef) || this.isActionSheetExpanded;
412
+ }
413
+ /**
414
+ * @hidden
415
+ */
416
+ get isActionSheetExpanded() {
417
+ return Boolean(this.adaptiveRenderer?.actionSheet?.expanded);
418
+ }
387
419
  /**
388
420
  * @hidden
389
421
  */
@@ -572,6 +604,21 @@ export class GridComponent {
572
604
  this.defaultSelection ? this.defaultSelection.stateToArray() : this.selectionDirective.stateToArray() :
573
605
  [];
574
606
  }
607
+ /**
608
+ * The current Grid `GridState` objects. Contains the information about data operations and column state, required
609
+ * to store and restore the Grid state.
610
+ */
611
+ get currentState() {
612
+ return {
613
+ filter: this.filter,
614
+ group: this.group,
615
+ sort: this.sort,
616
+ skip: this.skip,
617
+ take: this.pageSize,
618
+ columnsState: this.columns.toArray().flatMap(recursiveColumnsFlatMap),
619
+ currentData: structuredClone(this.data)
620
+ };
621
+ }
575
622
  /**
576
623
  * If set to `true`, the user can resize columns by dragging the edges (resize handles) of their header cells
577
624
  * ([see example]({% slug resizing_columns_grid %})).
@@ -610,6 +657,31 @@ export class GridComponent {
610
657
  * @default false
611
658
  */
612
659
  hideHeader = false;
660
+ /**
661
+ * Specifies if the currently inactive toolbar tools will be visible. Applicable when the toolbar is configured using the <kendo-toolbar> component. By default, such tools are hidden.
662
+ *
663
+ * @default false
664
+ */
665
+ showInactiveTools = false;
666
+ /**
667
+ * A function which determines if a specific row is expanded.
668
+ */
669
+ set isDetailExpanded(callback) {
670
+ this.detailsService.userCallback = callback;
671
+ }
672
+ get isDetailExpanded() {
673
+ return this.detailsService.userCallback;
674
+ }
675
+ /**
676
+ * A function which determines if a specific group row is expanded.
677
+ */
678
+ set isGroupExpanded(callback) {
679
+ this.groupsService.userCallback = callback;
680
+ this.groupable = isPresent(callback);
681
+ }
682
+ get isGroupExpanded() {
683
+ return this.groupsService.userCallback;
684
+ }
613
685
  /**
614
686
  * Fires when the Grid filter is modified through the UI.
615
687
  * You have to handle the event yourself and filter the data.
@@ -642,6 +714,10 @@ export class GridComponent {
642
714
  * Fires when the data state of the Grid is changed.
643
715
  */
644
716
  dataStateChange = new EventEmitter();
717
+ /**
718
+ * Fires when the data or columns state of the Grid is changed.
719
+ */
720
+ gridStateChange = new EventEmitter();
645
721
  /**
646
722
  * Fires when the user expands a group header.
647
723
  */
@@ -846,6 +922,10 @@ export class GridComponent {
846
922
  dragTargetContainer;
847
923
  dropTargetContainer;
848
924
  dialogContainer;
925
+ /**
926
+ * @hidden
927
+ */
928
+ adaptiveRenderer;
849
929
  get scrollbarWidth() {
850
930
  return this.supportService.scrollbarWidth;
851
931
  }
@@ -888,6 +968,12 @@ export class GridComponent {
888
968
  get navigation() {
889
969
  return this.navigationService;
890
970
  }
971
+ /**
972
+ * @hidden
973
+ */
974
+ get flatData() {
975
+ return isArray(this.data) ? this.data : this.data.data;
976
+ }
891
977
  shouldGenerateColumns = true;
892
978
  direction;
893
979
  notifyTimeout = null;
@@ -998,6 +1084,7 @@ export class GridComponent {
998
1084
  * @hidden
999
1085
  */
1000
1086
  blockArrowSelection = false;
1087
+ undoRedoService;
1001
1088
  selectionSubscription;
1002
1089
  stateChangeSubscription;
1003
1090
  groupExpandCollapseSubscription;
@@ -1023,7 +1110,7 @@ export class GridComponent {
1023
1110
  rowReorderSubscription;
1024
1111
  rtl = false;
1025
1112
  _rowSticky;
1026
- constructor(supportService, selectionService, cellSelectionService, wrapper, groupInfoService, groupsService, changeNotification, detailsService, editService, filterService, pdfService, responsiveService, renderer, excelService, ngZone, scrollSyncService, domEvents, columnResizingService, changeDetectorRef, columnReorderService, columnInfoService, navigationService, sortService, scrollRequestService, localization, ctx, sizingService, rowReorderService) {
1113
+ constructor(supportService, selectionService, cellSelectionService, wrapper, groupInfoService, groupsService, changeNotification, detailsService, editService, filterService, pdfService, responsiveService, renderer, excelService, ngZone, scrollSyncService, domEvents, columnResizingService, changeDetectorRef, columnReorderService, columnInfoService, navigationService, sortService, scrollRequestService, localization, ctx, sizingService, adaptiveService, adaptiveGridService, rowReorderService) {
1027
1114
  this.supportService = supportService;
1028
1115
  this.selectionService = selectionService;
1029
1116
  this.cellSelectionService = cellSelectionService;
@@ -1051,6 +1138,8 @@ export class GridComponent {
1051
1138
  this.localization = localization;
1052
1139
  this.ctx = ctx;
1053
1140
  this.sizingService = sizingService;
1141
+ this.adaptiveService = adaptiveService;
1142
+ this.adaptiveGridService = adaptiveGridService;
1054
1143
  this.rowReorderService = rowReorderService;
1055
1144
  const isValid = validatePackage(packageMetadata);
1056
1145
  this.showLicenseWatermark = shouldShowValidationUI(isValid);
@@ -1169,6 +1258,7 @@ export class GridComponent {
1169
1258
  }
1170
1259
  this.initSelectionService();
1171
1260
  this.updateNavigationMetadata();
1261
+ this.currentState.currentData = this.data;
1172
1262
  }
1173
1263
  ngOnChanges(changes) {
1174
1264
  if (isChanged("data", changes)) {
@@ -1250,6 +1340,12 @@ export class GridComponent {
1250
1340
  if (this.selectionSubscription) {
1251
1341
  this.selectionSubscription.unsubscribe();
1252
1342
  }
1343
+ if (this.rowReorderSubscription) {
1344
+ this.rowReorderSubscription.unsubscribe();
1345
+ }
1346
+ if (this.columnReorderSubscription) {
1347
+ this.columnReorderSubscription.unsubscribe();
1348
+ }
1253
1349
  if (this.stateChangeSubscription) {
1254
1350
  this.stateChangeSubscription.unsubscribe();
1255
1351
  }
@@ -1372,6 +1468,12 @@ export class GridComponent {
1372
1468
  const target = isNaN(columnIndex) ? row : `${row} td[data-kendo-grid-column-index="${columnIndex}"]`;
1373
1469
  this.focusEditElement(target);
1374
1470
  }
1471
+ /**
1472
+ * @hidden
1473
+ */
1474
+ handleReorderEvents(ev, evType) {
1475
+ this.rowReorderService[evType](ev);
1476
+ }
1375
1477
  /**
1376
1478
  * Closes the editor for a given row ([see example]({% slug inline_editing_grid %}#toc-canceling-editing-1)).
1377
1479
  *
@@ -1465,6 +1567,44 @@ export class GridComponent {
1465
1567
  saveAsExcel() {
1466
1568
  this.excelService.save(this);
1467
1569
  }
1570
+ /**
1571
+ * Applies the provided `GridState` object to the Grid.
1572
+ */
1573
+ loadState(state) {
1574
+ if (state.columnsState) {
1575
+ this.traverseColumns(this.columns, (column) => {
1576
+ const columnState = state.columnsState.find((col) => col.id === column.id);
1577
+ if (columnState) {
1578
+ column.width = columnState.width;
1579
+ column.hidden = columnState.hidden;
1580
+ column.locked = columnState.locked;
1581
+ column.sticky = columnState.sticky;
1582
+ column.orderIndex = columnState.orderIndex;
1583
+ }
1584
+ });
1585
+ this.columns.reset(this.columns.toArray());
1586
+ this.columnsContainer.refresh();
1587
+ }
1588
+ this.sort = state.sort;
1589
+ this.group = state.group;
1590
+ this.filter = state.filter;
1591
+ this.group = state.group;
1592
+ this.skip = state.skip;
1593
+ this.pageSize = state.take;
1594
+ this.data = state.currentData;
1595
+ this.changeNotification.notify();
1596
+ this.changeDetectorRef.detectChanges();
1597
+ }
1598
+ traverseColumns(columns, callback) {
1599
+ columns.forEach((column) => {
1600
+ if (column.isColumnGroup || column.isSpanColumn) {
1601
+ this.traverseColumns(column.children, callback);
1602
+ }
1603
+ else {
1604
+ callback(column);
1605
+ }
1606
+ });
1607
+ }
1468
1608
  /**
1469
1609
  * Applies the minimum possible width for the specified column,
1470
1610
  * so that the whole text fits without wrapping. This method expects the Grid
@@ -1615,7 +1755,7 @@ export class GridComponent {
1615
1755
  return;
1616
1756
  }
1617
1757
  if (isSpanColumnComponent(target) && !options.before) {
1618
- target = target.childColumns.last;
1758
+ target = target.children.last;
1619
1759
  }
1620
1760
  this.reorder({
1621
1761
  before: options.before,
@@ -1623,37 +1763,6 @@ export class GridComponent {
1623
1763
  target: target
1624
1764
  });
1625
1765
  }
1626
- /**
1627
- * A function which determines if a specific row is expanded.
1628
- */
1629
- set isDetailExpanded(callback) {
1630
- this.detailsService.userCallback = callback;
1631
- }
1632
- get isDetailExpanded() {
1633
- return this.detailsService.userCallback;
1634
- }
1635
- /**
1636
- * A function which determines if a specific group row is expanded.
1637
- */
1638
- set isGroupExpanded(callback) {
1639
- this.groupsService.userCallback = callback;
1640
- this.groupable = isPresent(callback);
1641
- }
1642
- get isGroupExpanded() {
1643
- return this.groupsService.userCallback;
1644
- }
1645
- /**
1646
- * @hidden
1647
- */
1648
- handleReorderEvents(ev, evType) {
1649
- this.rowReorderService[evType](ev);
1650
- }
1651
- /**
1652
- * @hidden
1653
- */
1654
- get flatData() {
1655
- return isArray(this.data) ? this.data : this.data.data;
1656
- }
1657
1766
  /**
1658
1767
  * @hidden
1659
1768
  */
@@ -1707,7 +1816,7 @@ export class GridComponent {
1707
1816
  let toSkip = 1;
1708
1817
  // Possible only when called from the API.
1709
1818
  if (source.isSpanColumn) {
1710
- toSkip += source.childColumns.length;
1819
+ toSkip += source.children.length;
1711
1820
  }
1712
1821
  let i = 0;
1713
1822
  while (i < expandedColumns.length) {
@@ -1903,7 +2012,13 @@ export class GridComponent {
1903
2012
  this.blockArrowSelection = true;
1904
2013
  }
1905
2014
  this.dataStateChange.emit(x);
2015
+ this.gridStateChange.emit({ ...x, columnsState: this.currentState.columnsState, currentData: this.currentState.currentData });
2016
+ if (this.undoRedoService) {
2017
+ this.undoRedoService.originalEvent = x;
2018
+ }
1906
2019
  });
2020
+ this.stateChangeSubscription.add(merge(this.columnReorder, this.columnResize, this.columnVisibilityChange, this.columnLockedChange, this.columnStickyChange).pipe(flatMap(() => this.ngZone.onStable.pipe(take(1))))
2021
+ .subscribe(() => this.ngZone.run(() => this.gridStateChange.emit(this.currentState))));
1907
2022
  }
1908
2023
  attachEditHandlers() {
1909
2024
  if (!this.editService) {
@@ -2196,8 +2311,8 @@ export class GridComponent {
2196
2311
  this.dragTargetContainer?.notify();
2197
2312
  this.dropTargetContainer?.notify();
2198
2313
  }
2199
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GridComponent, deps: [{ token: i1.BrowserSupportService }, { token: i2.SelectionService }, { token: i3.CellSelectionService }, { token: i0.ElementRef }, { token: i4.GroupInfoService }, { token: i5.GroupsService }, { token: i6.ChangeNotificationService }, { token: i7.DetailsService }, { token: i8.EditService }, { token: i9.FilterService }, { token: i10.PDFService }, { token: i11.ResponsiveService }, { token: i0.Renderer2 }, { token: i12.ExcelService }, { token: i0.NgZone }, { token: i13.ScrollSyncService }, { token: i14.DomEventsService }, { token: i15.ColumnResizingService }, { token: i0.ChangeDetectorRef }, { token: i16.ColumnReorderService }, { token: i17.ColumnInfoService }, { token: i18.NavigationService }, { token: i19.SortService }, { token: i20.ScrollRequestService }, { token: i21.LocalizationService }, { token: i22.ContextService }, { token: i23.SizingOptionsService }, { token: i24.RowReorderService }], target: i0.ɵɵFactoryTarget.Component });
2200
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GridComponent, isStandalone: true, selector: "kendo-grid", inputs: { data: "data", pageSize: "pageSize", height: "height", rowHeight: "rowHeight", 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", navigatable: "navigatable", autoSize: "autoSize", rowClass: "rowClass", rowSticky: "rowSticky", rowSelected: "rowSelected", isRowSelectable: "isRowSelectable", cellSelected: "cellSelected", resizable: "resizable", reorderable: "reorderable", loading: "loading", columnMenu: "columnMenu", hideHeader: "hideHeader", isDetailExpanded: "isDetailExpanded", isGroupExpanded: "isGroupExpanded" }, outputs: { filterChange: "filterChange", pageChange: "pageChange", groupChange: "groupChange", sortChange: "sortChange", selectionChange: "selectionChange", rowReorder: "rowReorder", dataStateChange: "dataStateChange", 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", 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-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: [
2314
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GridComponent, deps: [{ token: i1.BrowserSupportService }, { token: i2.SelectionService }, { token: i3.CellSelectionService }, { token: i0.ElementRef }, { token: i4.GroupInfoService }, { token: i5.GroupsService }, { token: i6.ChangeNotificationService }, { token: i7.DetailsService }, { token: i8.EditService }, { token: i9.FilterService }, { token: i10.PDFService }, { token: i11.ResponsiveService }, { token: i0.Renderer2 }, { token: i12.ExcelService }, { token: i0.NgZone }, { token: i13.ScrollSyncService }, { token: i14.DomEventsService }, { token: i15.ColumnResizingService }, { token: i0.ChangeDetectorRef }, { token: i16.ColumnReorderService }, { token: i17.ColumnInfoService }, { token: i18.NavigationService }, { token: i19.SortService }, { token: i20.ScrollRequestService }, { token: i21.LocalizationService }, { token: i22.ContextService }, { token: i23.SizingOptionsService }, { token: i24.AdaptiveService }, { token: i25.AdaptiveGridService }, { token: i26.RowReorderService }], target: i0.ɵɵFactoryTarget.Component });
2315
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", 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", navigatable: "navigatable", 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" }, 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", 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-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: [
2201
2316
  BrowserSupportService,
2202
2317
  LocalizationService,
2203
2318
  ColumnInfoService,
@@ -2243,8 +2358,11 @@ export class GridComponent {
2243
2358
  SizingOptionsService,
2244
2359
  RowReorderService,
2245
2360
  ClipboardService,
2246
- RowspanService
2247
- ], 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: "footer", predicate: ["footer"], descendants: true }], exportAs: ["kendoGrid"], usesOnChanges: true, ngImport: i0, template: `
2361
+ RowspanService,
2362
+ AdaptiveGridService,
2363
+ ColumnMenuService,
2364
+ MenuTabbingService
2365
+ ], 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: "adaptiveRenderer", first: true, predicate: AdaptiveRendererComponent, descendants: true }, { propertyName: "footer", predicate: ["footer"], descendants: true }], exportAs: ["kendoGrid"], usesOnChanges: true, ngImport: i0, template: `
2248
2366
  <ng-container kendoGridLocalizedMessages
2249
2367
  i18n-groupPanelEmpty="kendo.grid.groupPanelEmpty|The label visible in the Grid group panel when it is empty"
2250
2368
  groupPanelEmpty="Drag a column header and drop it here to group by that column"
@@ -2375,6 +2493,21 @@ export class GridComponent {
2375
2493
  i18n-filterClearButton="kendo.grid.filterClearButton|The text of the clear filter button"
2376
2494
  filterClearButton="Clear"
2377
2495
 
2496
+ i18n-sortClearButton="kendo.grid.sortClearButton|The text of the clear sort button located in the Sort Toolbar Tool and adaptive Sort Toolbar Tool"
2497
+ sortClearButton="Clear sorting"
2498
+
2499
+ i18n-adaptiveCloseButtonTitle="kendo.grid.adaptiveCloseButtonTitle|The title of the Close button of the ActionSheet that is rendered instead of the Popup when using small screen devices in adaptive mode"
2500
+ adaptiveCloseButtonTitle="Close"
2501
+
2502
+ i18n-adaptiveBackButtonTitle="kendo.grid.adaptiveBackButtonTitle|The title of the Back button of the ActionSheet that is rendered instead of the Popup when using small screen devices in adaptive mode"
2503
+ adaptiveBackButtonTitle="Back"
2504
+
2505
+ i18n-filterClearAllButton="kendo.grid.filterClearAllButton|The text of the clear all filters button located in the Filter Toolbar Tool and adaptive Filter Toolbar Tool"
2506
+ filterClearAllButton="Clear all filters"
2507
+
2508
+ i18n-sortDoneButton="kendo.grid.sortDoneButton|The text of the done sort button"
2509
+ sortDoneButton="Done"
2510
+
2378
2511
  i18n-filterAndLogic="kendo.grid.filterAndLogic|The text of the And filter logic"
2379
2512
  filterAndLogic="And"
2380
2513
 
@@ -2396,6 +2529,18 @@ export class GridComponent {
2396
2529
  i18n-columns="kendo.grid.columns|The text for the Grid Column Chooser and Column Chooser toolbar tool"
2397
2530
  columns="Columns"
2398
2531
 
2532
+ i18n-columns="kendo.grid.columnsSubtitle|The subtitle for the adaptive Grid Column Chooser and Column Chooser toolbar tool"
2533
+ columnsSubtitle="Selected fields are visible"
2534
+
2535
+ i18n-columns="kendo.grid.adaptiveFilterTitle|The title that is displayed in the adaptive Filter Toolbar Tool and Filter Menu"
2536
+ adaptiveFilterTitle="Filter by"
2537
+
2538
+ i18n-columns="kendo.grid.adaptiveFilterOperatorsTitle|The title that is displayed in the Operators Action Sheet"
2539
+ adaptiveFilterOperatorsTitle="Operators"
2540
+
2541
+ i18n-columns="kendo.grid.adaptiveSortTitle|The title that is displayed in the adaptive Sort Toolbar Tool"
2542
+ adaptiveSortTitle="Sort by"
2543
+
2399
2544
  i18n-lock="kendo.grid.lock|The text shown in the column menu for the lock item"
2400
2545
  lock="Lock"
2401
2546
 
@@ -2483,6 +2628,27 @@ export class GridComponent {
2483
2628
  i18n-bottomToolbarLabel="kendo.grid.bottomToolbarLabel|The label for the Grid bottom toolbar"
2484
2629
  bottomToolbarLabel="Bottom toolbar"
2485
2630
 
2631
+ i18n-editToolbarToolText="kendo.grid.editToolbarToolText|The text for the Grid Edit toolbar tool"
2632
+ editToolbarToolText="Edit"
2633
+
2634
+ i18n-saveToolbarToolText="kendo.grid.saveToolbarToolText|The text for the Grid Save toolbar tool"
2635
+ saveToolbarToolText="Save"
2636
+
2637
+ i18n-addToolbarToolText="kendo.grid.addToolbarToolText|The text for the Grid Add toolbar tool"
2638
+ addToolbarToolText="Add"
2639
+
2640
+ i18n-cancelToolbarToolText="kendo.grid.cancelToolbarToolText|The text for the Grid Cancel toolbar tool"
2641
+ cancelToolbarToolText="Cancel"
2642
+
2643
+ i18n-removeToolbarToolText="kendo.grid.removeToolbarToolText|The text for the Grid Remove toolbar tool"
2644
+ removeToolbarToolText="Delete"
2645
+
2646
+ i18n-excelExportToolbarToolText="kendo.grid.excelExportToolbarToolText|The text for the Grid Excel export toolbar tool"
2647
+ excelExportToolbarToolText="Excel Export"
2648
+
2649
+ i18n-pdfExportToolbarToolText="kendo.grid.pdfExportToolbarToolText|The text for the Grid PDF export toolbar tool"
2650
+ pdfExportToolbarToolText="PDF Export"
2651
+
2486
2652
  i18n-groupPanelLabel="kendo.grid.groupPanelLabel|The label for the Grid group panel toolbar"
2487
2653
  groupPanelLabel="Group panel"
2488
2654
 
@@ -2519,9 +2685,12 @@ export class GridComponent {
2519
2685
  i18n-removeConfirmationDialogRejectText="kendo.grid.removeConfirmationDialogRejectText|The text of the built-in remove item confirmation Dialog reject action button"
2520
2686
  removeConfirmationDialogRejectText="No"
2521
2687
 
2522
- i18n-externalEditingTitle="kendo.grid.externalEditingTitle|The title of the built-in external editing form container"
2688
+ i18n-externalEditingTitle="kendo.grid.externalEditingTitle|The title of the built-in external editing form container when editing an item"
2523
2689
  externalEditingTitle="Edit"
2524
2690
 
2691
+ i18n-externalEditingAddTitle="kendo.grid.externalEditingAddTitle|The title of the built-in external editing form container when adding a new item"
2692
+ externalEditingAddTitle="Add"
2693
+
2525
2694
  i18n-externalEditingSaveText="kendo.grid.externalEditingSaveText|The text of the external editing form Save button"
2526
2695
  externalEditingSaveText="Save"
2527
2696
 
@@ -2934,9 +3103,11 @@ export class GridComponent {
2934
3103
  </kendo-pager-info>
2935
3104
  </ng-template>
2936
3105
  <div #dialogContainer></div>
2937
-
3106
+
3107
+ <kendo-grid-adaptive-renderer *ngIf="isAdaptiveModeEnabled"></kendo-grid-adaptive-renderer>
3108
+
2938
3109
  <div kendoWatermarkOverlay *ngIf="showLicenseWatermark"></div>
2939
- `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "[kendoGridLocalizedMessages]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: GridToolbarComponent, 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", "stickyRowHeight", "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", "data", "skip", "selectable", "filterable", "noRecordsText", "isLocked", "isLoading", "isVirtual", "cellLoadingTemplate", "skipGroupDecoration", "showGroupFooters", "lockedColumnsCount", "totalColumnsCount", "virtualColumns", "trackBy", "rowSticky", "totalColumns", "rowClass"] }, { 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]" }, { kind: "component", type: i25.CustomMessagesComponent, selector: "kendo-datapager-messages, kendo-pager-messages" }, { kind: "component", type: i25.PagerInfoComponent, selector: "kendo-datapager-info, kendo-pager-info" }, { kind: "component", type: i25.PagerInputComponent, selector: "kendo-datapager-input, kendo-pager-input", inputs: ["size"] }, { kind: "component", type: i25.PagerNextButtonsComponent, selector: "kendo-datapager-next-buttons, kendo-pager-next-buttons", inputs: ["size"] }, { kind: "component", type: i25.PagerNumericButtonsComponent, selector: "kendo-datapager-numeric-buttons, kendo-pager-numeric-buttons", inputs: ["buttonCount", "size"] }, { kind: "component", type: i25.PagerPageSizesComponent, selector: "kendo-datapager-page-sizes, kendo-pager-page-sizes", inputs: ["pageSizes", "size"] }, { kind: "component", type: i25.PagerPrevButtonsComponent, selector: "kendo-datapager-prev-buttons, kendo-pager-prev-buttons", inputs: ["size"] }, { kind: "directive", type: i25.PagerTemplateDirective, selector: "[kendoDataPagerTemplate], [kendoPagerTemplate]" }, { kind: "component", type: i25.PagerComponent, selector: "kendo-datapager, kendo-pager", inputs: ["externalTemplate", "total", "skip", "pageSize", "buttonCount", "info", "type", "pageSizeValues", "previousNext", "navigable", "size", "responsive"], outputs: ["pageChange", "pageSizeChange"], exportAs: ["kendoDataPager", "kendoPager"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], encapsulation: i0.ViewEncapsulation.None });
3110
+ `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "[kendoGridLocalizedMessages]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: GridToolbarComponent, 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", "stickyRowHeight", "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", "data", "skip", "selectable", "filterable", "noRecordsText", "isLocked", "isLoading", "isVirtual", "cellLoadingTemplate", "skipGroupDecoration", "showGroupFooters", "lockedColumnsCount", "totalColumnsCount", "virtualColumns", "trackBy", "rowSticky", "totalColumns", "rowClass"] }, { 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]" }, { kind: "component", type: i27.CustomMessagesComponent, selector: "kendo-datapager-messages, kendo-pager-messages" }, { kind: "component", type: i27.PagerInfoComponent, selector: "kendo-datapager-info, kendo-pager-info" }, { kind: "component", type: i27.PagerInputComponent, selector: "kendo-datapager-input, kendo-pager-input", inputs: ["showPageText", "size"] }, { kind: "component", type: i27.PagerNextButtonsComponent, selector: "kendo-datapager-next-buttons, kendo-pager-next-buttons", inputs: ["size"] }, { kind: "component", type: i27.PagerNumericButtonsComponent, selector: "kendo-datapager-numeric-buttons, kendo-pager-numeric-buttons", inputs: ["buttonCount", "size"] }, { kind: "component", type: i27.PagerPageSizesComponent, selector: "kendo-datapager-page-sizes, kendo-pager-page-sizes", inputs: ["showItemsText", "pageSizes", "size", "adaptiveMode"] }, { kind: "component", type: i27.PagerPrevButtonsComponent, selector: "kendo-datapager-prev-buttons, kendo-pager-prev-buttons", inputs: ["size"] }, { kind: "directive", type: i27.PagerTemplateDirective, selector: "[kendoDataPagerTemplate], [kendoPagerTemplate]" }, { kind: "component", type: i27.PagerComponent, selector: "kendo-datapager, kendo-pager", inputs: ["externalTemplate", "total", "skip", "pageSize", "buttonCount", "info", "type", "pageSizeValues", "previousNext", "navigable", "size", "responsive", "adaptiveMode"], outputs: ["pageChange", "pageSizeChange"], exportAs: ["kendoDataPager", "kendoPager"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: AdaptiveRendererComponent, selector: "kendo-grid-adaptive-renderer" }], encapsulation: i0.ViewEncapsulation.None });
2940
3111
  }
2941
3112
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GridComponent, decorators: [{
2942
3113
  type: Component,
@@ -2989,7 +3160,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2989
3160
  SizingOptionsService,
2990
3161
  RowReorderService,
2991
3162
  ClipboardService,
2992
- RowspanService
3163
+ RowspanService,
3164
+ AdaptiveGridService,
3165
+ ColumnMenuService,
3166
+ MenuTabbingService
2993
3167
  ],
2994
3168
  selector: 'kendo-grid',
2995
3169
  template: `
@@ -3123,6 +3297,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
3123
3297
  i18n-filterClearButton="kendo.grid.filterClearButton|The text of the clear filter button"
3124
3298
  filterClearButton="Clear"
3125
3299
 
3300
+ i18n-sortClearButton="kendo.grid.sortClearButton|The text of the clear sort button located in the Sort Toolbar Tool and adaptive Sort Toolbar Tool"
3301
+ sortClearButton="Clear sorting"
3302
+
3303
+ i18n-adaptiveCloseButtonTitle="kendo.grid.adaptiveCloseButtonTitle|The title of the Close button of the ActionSheet that is rendered instead of the Popup when using small screen devices in adaptive mode"
3304
+ adaptiveCloseButtonTitle="Close"
3305
+
3306
+ i18n-adaptiveBackButtonTitle="kendo.grid.adaptiveBackButtonTitle|The title of the Back button of the ActionSheet that is rendered instead of the Popup when using small screen devices in adaptive mode"
3307
+ adaptiveBackButtonTitle="Back"
3308
+
3309
+ i18n-filterClearAllButton="kendo.grid.filterClearAllButton|The text of the clear all filters button located in the Filter Toolbar Tool and adaptive Filter Toolbar Tool"
3310
+ filterClearAllButton="Clear all filters"
3311
+
3312
+ i18n-sortDoneButton="kendo.grid.sortDoneButton|The text of the done sort button"
3313
+ sortDoneButton="Done"
3314
+
3126
3315
  i18n-filterAndLogic="kendo.grid.filterAndLogic|The text of the And filter logic"
3127
3316
  filterAndLogic="And"
3128
3317
 
@@ -3144,6 +3333,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
3144
3333
  i18n-columns="kendo.grid.columns|The text for the Grid Column Chooser and Column Chooser toolbar tool"
3145
3334
  columns="Columns"
3146
3335
 
3336
+ i18n-columns="kendo.grid.columnsSubtitle|The subtitle for the adaptive Grid Column Chooser and Column Chooser toolbar tool"
3337
+ columnsSubtitle="Selected fields are visible"
3338
+
3339
+ i18n-columns="kendo.grid.adaptiveFilterTitle|The title that is displayed in the adaptive Filter Toolbar Tool and Filter Menu"
3340
+ adaptiveFilterTitle="Filter by"
3341
+
3342
+ i18n-columns="kendo.grid.adaptiveFilterOperatorsTitle|The title that is displayed in the Operators Action Sheet"
3343
+ adaptiveFilterOperatorsTitle="Operators"
3344
+
3345
+ i18n-columns="kendo.grid.adaptiveSortTitle|The title that is displayed in the adaptive Sort Toolbar Tool"
3346
+ adaptiveSortTitle="Sort by"
3347
+
3147
3348
  i18n-lock="kendo.grid.lock|The text shown in the column menu for the lock item"
3148
3349
  lock="Lock"
3149
3350
 
@@ -3231,6 +3432,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
3231
3432
  i18n-bottomToolbarLabel="kendo.grid.bottomToolbarLabel|The label for the Grid bottom toolbar"
3232
3433
  bottomToolbarLabel="Bottom toolbar"
3233
3434
 
3435
+ i18n-editToolbarToolText="kendo.grid.editToolbarToolText|The text for the Grid Edit toolbar tool"
3436
+ editToolbarToolText="Edit"
3437
+
3438
+ i18n-saveToolbarToolText="kendo.grid.saveToolbarToolText|The text for the Grid Save toolbar tool"
3439
+ saveToolbarToolText="Save"
3440
+
3441
+ i18n-addToolbarToolText="kendo.grid.addToolbarToolText|The text for the Grid Add toolbar tool"
3442
+ addToolbarToolText="Add"
3443
+
3444
+ i18n-cancelToolbarToolText="kendo.grid.cancelToolbarToolText|The text for the Grid Cancel toolbar tool"
3445
+ cancelToolbarToolText="Cancel"
3446
+
3447
+ i18n-removeToolbarToolText="kendo.grid.removeToolbarToolText|The text for the Grid Remove toolbar tool"
3448
+ removeToolbarToolText="Delete"
3449
+
3450
+ i18n-excelExportToolbarToolText="kendo.grid.excelExportToolbarToolText|The text for the Grid Excel export toolbar tool"
3451
+ excelExportToolbarToolText="Excel Export"
3452
+
3453
+ i18n-pdfExportToolbarToolText="kendo.grid.pdfExportToolbarToolText|The text for the Grid PDF export toolbar tool"
3454
+ pdfExportToolbarToolText="PDF Export"
3455
+
3234
3456
  i18n-groupPanelLabel="kendo.grid.groupPanelLabel|The label for the Grid group panel toolbar"
3235
3457
  groupPanelLabel="Group panel"
3236
3458
 
@@ -3267,9 +3489,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
3267
3489
  i18n-removeConfirmationDialogRejectText="kendo.grid.removeConfirmationDialogRejectText|The text of the built-in remove item confirmation Dialog reject action button"
3268
3490
  removeConfirmationDialogRejectText="No"
3269
3491
 
3270
- i18n-externalEditingTitle="kendo.grid.externalEditingTitle|The title of the built-in external editing form container"
3492
+ i18n-externalEditingTitle="kendo.grid.externalEditingTitle|The title of the built-in external editing form container when editing an item"
3271
3493
  externalEditingTitle="Edit"
3272
3494
 
3495
+ i18n-externalEditingAddTitle="kendo.grid.externalEditingAddTitle|The title of the built-in external editing form container when adding a new item"
3496
+ externalEditingAddTitle="Add"
3497
+
3273
3498
  i18n-externalEditingSaveText="kendo.grid.externalEditingSaveText|The text of the external editing form Save button"
3274
3499
  externalEditingSaveText="Save"
3275
3500
 
@@ -3682,7 +3907,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
3682
3907
  </kendo-pager-info>
3683
3908
  </ng-template>
3684
3909
  <div #dialogContainer></div>
3685
-
3910
+
3911
+ <kendo-grid-adaptive-renderer *ngIf="isAdaptiveModeEnabled"></kendo-grid-adaptive-renderer>
3912
+
3686
3913
  <div kendoWatermarkOverlay *ngIf="showLicenseWatermark"></div>
3687
3914
  `,
3688
3915
  standalone: true,
@@ -3691,10 +3918,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
3691
3918
  TableDirective, GridTableDirective, ColGroupComponent, HeaderComponent, ResizableContainerDirective,
3692
3919
  ListComponent, DragTargetContainerDirective, DropTargetContainerDirective, DraggableDirective,
3693
3920
  GridMarqueeDirective, FooterComponent, TableBodyComponent, LoadingComponent, StatusBarComponent,
3694
- IconWrapperComponent, WatermarkOverlayComponent, ...KENDO_PAGER, NgTemplateOutlet
3921
+ IconWrapperComponent, WatermarkOverlayComponent, ...KENDO_PAGER, NgTemplateOutlet, AdaptiveRendererComponent
3695
3922
  ]
3696
3923
  }]
3697
- }], ctorParameters: function () { return [{ type: i1.BrowserSupportService }, { type: i2.SelectionService }, { type: i3.CellSelectionService }, { type: i0.ElementRef }, { type: i4.GroupInfoService }, { type: i5.GroupsService }, { type: i6.ChangeNotificationService }, { type: i7.DetailsService }, { type: i8.EditService }, { type: i9.FilterService }, { type: i10.PDFService }, { type: i11.ResponsiveService }, { type: i0.Renderer2 }, { type: i12.ExcelService }, { type: i0.NgZone }, { type: i13.ScrollSyncService }, { type: i14.DomEventsService }, { type: i15.ColumnResizingService }, { type: i0.ChangeDetectorRef }, { type: i16.ColumnReorderService }, { type: i17.ColumnInfoService }, { type: i18.NavigationService }, { type: i19.SortService }, { type: i20.ScrollRequestService }, { type: i21.LocalizationService }, { type: i22.ContextService }, { type: i23.SizingOptionsService }, { type: i24.RowReorderService }]; }, propDecorators: { data: [{
3924
+ }], ctorParameters: function () { return [{ type: i1.BrowserSupportService }, { type: i2.SelectionService }, { type: i3.CellSelectionService }, { type: i0.ElementRef }, { type: i4.GroupInfoService }, { type: i5.GroupsService }, { type: i6.ChangeNotificationService }, { type: i7.DetailsService }, { type: i8.EditService }, { type: i9.FilterService }, { type: i10.PDFService }, { type: i11.ResponsiveService }, { type: i0.Renderer2 }, { type: i12.ExcelService }, { type: i0.NgZone }, { type: i13.ScrollSyncService }, { type: i14.DomEventsService }, { type: i15.ColumnResizingService }, { type: i0.ChangeDetectorRef }, { type: i16.ColumnReorderService }, { type: i17.ColumnInfoService }, { type: i18.NavigationService }, { type: i19.SortService }, { type: i20.ScrollRequestService }, { type: i21.LocalizationService }, { type: i22.ContextService }, { type: i23.SizingOptionsService }, { type: i24.AdaptiveService }, { type: i25.AdaptiveGridService }, { type: i26.RowReorderService }]; }, propDecorators: { data: [{
3698
3925
  type: Input
3699
3926
  }], pageSize: [{
3700
3927
  type: Input
@@ -3702,6 +3929,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
3702
3929
  type: Input
3703
3930
  }], rowHeight: [{
3704
3931
  type: Input
3932
+ }], adaptiveMode: [{
3933
+ type: Input
3705
3934
  }], detailRowHeight: [{
3706
3935
  type: Input
3707
3936
  }], skip: [{
@@ -3760,6 +3989,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
3760
3989
  type: Input
3761
3990
  }], hideHeader: [{
3762
3991
  type: Input
3992
+ }], showInactiveTools: [{
3993
+ type: Input
3994
+ }], isDetailExpanded: [{
3995
+ type: Input
3996
+ }], isGroupExpanded: [{
3997
+ type: Input
3763
3998
  }], filterChange: [{
3764
3999
  type: Output
3765
4000
  }], pageChange: [{
@@ -3774,6 +4009,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
3774
4009
  type: Output
3775
4010
  }], dataStateChange: [{
3776
4011
  type: Output
4012
+ }], gridStateChange: [{
4013
+ type: Output
3777
4014
  }], groupExpand: [{
3778
4015
  type: Output
3779
4016
  }], groupCollapse: [{
@@ -3898,8 +4135,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
3898
4135
  }], dialogContainer: [{
3899
4136
  type: ViewChild,
3900
4137
  args: ['dialogContainer', { read: ViewContainerRef }]
3901
- }], isDetailExpanded: [{
3902
- type: Input
3903
- }], isGroupExpanded: [{
3904
- type: Input
4138
+ }], adaptiveRenderer: [{
4139
+ type: ViewChild,
4140
+ args: [AdaptiveRendererComponent]
3905
4141
  }] } });