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

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 (131) 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/editing-directive-base.d.ts +4 -1
  23. package/editing-directives/external-editing.directive.d.ts +3 -1
  24. package/esm2022/adaptiveness/adaptive-mode.mjs +5 -0
  25. package/esm2022/adaptiveness/adaptive-renderer.component.mjs +1106 -0
  26. package/esm2022/column-menu/column-chooser.component.mjs +13 -11
  27. package/esm2022/column-menu/column-list.component.mjs +43 -8
  28. package/esm2022/column-menu/column-menu-autosize-all.component.mjs +1 -1
  29. package/esm2022/column-menu/column-menu-autosize.component.mjs +1 -1
  30. package/esm2022/column-menu/column-menu-chooser.component.mjs +1 -1
  31. package/esm2022/column-menu/column-menu-container.component.mjs +1 -1
  32. package/esm2022/column-menu/column-menu-filter.component.mjs +1 -1
  33. package/esm2022/column-menu/column-menu-item.component.mjs +106 -11
  34. package/esm2022/column-menu/column-menu-item.directive.mjs +14 -5
  35. package/esm2022/column-menu/column-menu-lock.component.mjs +1 -1
  36. package/esm2022/column-menu/column-menu-position.component.mjs +1 -1
  37. package/esm2022/column-menu/column-menu-sort.component.mjs +1 -1
  38. package/esm2022/column-menu/column-menu-stick.component.mjs +1 -1
  39. package/esm2022/column-menu/column-menu.component.mjs +68 -44
  40. package/esm2022/column-resizing/column-handle.directive.mjs +2 -2
  41. package/esm2022/columns/column-base.mjs +9 -0
  42. package/esm2022/columns/columns-container.mjs +1 -1
  43. package/esm2022/columns/span-column.component.mjs +9 -9
  44. package/esm2022/common/adaptiveness.service.mjs +72 -0
  45. package/esm2022/common/single-popup.service.mjs +9 -3
  46. package/esm2022/common/toolbar-tool-base.directive.mjs +81 -0
  47. package/esm2022/directives.mjs +18 -3
  48. package/esm2022/dragdrop/drag-hint.service.mjs +7 -4
  49. package/esm2022/editing/add-command-tool.directive.mjs +12 -15
  50. package/esm2022/editing/cancel-command-tool.directive.mjs +64 -0
  51. package/esm2022/editing/edit-command-tool.directive.mjs +59 -0
  52. package/esm2022/editing/form/form-formfield.component.mjs +1 -1
  53. package/esm2022/editing/remove-command-tool.directive.mjs +60 -0
  54. package/esm2022/editing/remove-command.directive.mjs +1 -0
  55. package/esm2022/editing/save-command-tool.directive.mjs +64 -0
  56. package/esm2022/editing/toolbar-editing-tool-base.directive.mjs +89 -0
  57. package/esm2022/editing-directives/editing-directive-base.mjs +5 -2
  58. package/esm2022/editing-directives/external-editing.directive.mjs +28 -14
  59. package/esm2022/excel/excel-command-tool.directive.mjs +12 -17
  60. package/esm2022/filtering/cell/autocomplete-filter-cell.component.mjs +1 -1
  61. package/esm2022/filtering/cell/boolean-filter-cell.component.mjs +1 -1
  62. package/esm2022/filtering/cell/date-filter-cell.component.mjs +1 -1
  63. package/esm2022/filtering/cell/filter-cell-operators.component.mjs +1 -1
  64. package/esm2022/filtering/filter-input.directive.mjs +14 -2
  65. package/esm2022/filtering/menu/boolean-filter-menu.component.mjs +2 -2
  66. package/esm2022/filtering/menu/date-filter-menu-input.component.mjs +3 -1
  67. package/esm2022/filtering/menu/date-filter-menu.component.mjs +5 -1
  68. package/esm2022/filtering/menu/filter-menu-container.component.mjs +21 -10
  69. package/esm2022/filtering/menu/filter-menu-input-wrapper.component.mjs +25 -5
  70. package/esm2022/filtering/menu/filter-menu.component.mjs +44 -29
  71. package/esm2022/filtering/menu/numeric-filter-menu.component.mjs +5 -1
  72. package/esm2022/filtering/menu/string-filter-menu.component.mjs +5 -1
  73. package/esm2022/grid.component.mjs +294 -74
  74. package/esm2022/grid.module.mjs +114 -101
  75. package/esm2022/index.mjs +10 -1
  76. package/esm2022/localization/messages.mjs +104 -2
  77. package/esm2022/navigation/navigation.service.mjs +1 -1
  78. package/esm2022/navigation/toolbar-tool-name.mjs +17 -0
  79. package/esm2022/package-metadata.mjs +2 -2
  80. package/esm2022/pdf/pdf-command-tool.directive.mjs +12 -15
  81. package/esm2022/rendering/cell.component.mjs +4 -4
  82. package/esm2022/rendering/header/header.component.mjs +1 -1
  83. package/esm2022/rendering/list.component.mjs +1 -1
  84. package/esm2022/rendering/table-body.component.mjs +11 -3
  85. package/esm2022/rendering/toolbar/tools/column-chooser-tool.directive.mjs +201 -0
  86. package/esm2022/rendering/toolbar/tools/filter-command-tool.directive.mjs +49 -33
  87. package/esm2022/rendering/toolbar/tools/filter-tool-wrapper.component.mjs +28 -8
  88. package/esm2022/rendering/toolbar/tools/filter-toolbar-tool.component.mjs +26 -4
  89. package/esm2022/rendering/toolbar/tools/sort-command-tool.directive.mjs +33 -17
  90. package/esm2022/rendering/toolbar/tools/sort-toolbar-tool.component.mjs +24 -8
  91. package/esm2022/row-reordering/row-reorder.service.mjs +15 -0
  92. package/esm2022/selection/selection.service.mjs +11 -0
  93. package/esm2022/state-management/grid-state.models.mjs +26 -0
  94. package/esm2022/state-management/redo-command-tool.mjs +66 -0
  95. package/esm2022/state-management/undo-command-tool.mjs +66 -0
  96. package/esm2022/state-management/undo-redo.directive.mjs +178 -0
  97. package/esm2022/state-management/undo-redo.service.mjs +22 -0
  98. package/esm2022/state-management/undo-redo.stack.mjs +232 -0
  99. package/esm2022/utils.mjs +13 -13
  100. package/excel/excel-command-tool.directive.d.ts +5 -5
  101. package/fesm2022/progress-kendo-angular-grid.mjs +4074 -1372
  102. package/filtering/filter-input.directive.d.ts +1 -0
  103. package/filtering/menu/date-filter-menu-input.component.d.ts +1 -1
  104. package/filtering/menu/filter-menu-container.component.d.ts +14 -4
  105. package/filtering/menu/filter-menu-input-wrapper.component.d.ts +8 -3
  106. package/filtering/menu/filter-menu.component.d.ts +6 -3
  107. package/grid.component.d.ts +73 -33
  108. package/grid.module.d.ts +107 -100
  109. package/index.d.ts +9 -1
  110. package/localization/messages.d.ts +70 -2
  111. package/navigation/toolbar-tool-name.d.ts +17 -0
  112. package/package.json +21 -20
  113. package/pdf/pdf-command-tool.directive.d.ts +6 -5
  114. package/rendering/cell.component.d.ts +1 -1
  115. package/{column-menu → rendering/toolbar/tools}/column-chooser-tool.directive.d.ts +17 -6
  116. package/rendering/toolbar/tools/filter-command-tool.directive.d.ts +4 -1
  117. package/rendering/toolbar/tools/filter-tool-wrapper.component.d.ts +6 -5
  118. package/rendering/toolbar/tools/filter-toolbar-tool.component.d.ts +4 -1
  119. package/rendering/toolbar/tools/sort-command-tool.directive.d.ts +4 -1
  120. package/rendering/toolbar/tools/sort-toolbar-tool.component.d.ts +5 -1
  121. package/row-reordering/row-reorder.service.d.ts +2 -0
  122. package/schematics/ngAdd/index.js +4 -4
  123. package/selection/selection.service.d.ts +1 -0
  124. package/state-management/grid-state.models.d.ts +58 -0
  125. package/state-management/redo-command-tool.d.ts +38 -0
  126. package/state-management/undo-command-tool.d.ts +38 -0
  127. package/state-management/undo-redo.directive.d.ts +51 -0
  128. package/state-management/undo-redo.service.d.ts +19 -0
  129. package/state-management/undo-redo.stack.d.ts +104 -0
  130. package/utils.d.ts +11 -5
  131. 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
  */
@@ -437,8 +469,8 @@ export class GridComponent {
437
469
  return this._rowReorderable;
438
470
  }
439
471
  /**
440
- * If set to `true`, the user can use dedicated shortcuts to interact with the Grid.
441
- * By default, navigation is disabled and the Grid content is accessible in the normal tab sequence.
472
+ * When the keyboard navigation is enabled, the user can use dedicated shortcuts to interact with the Grid.
473
+ * By default, navigation is enabled. To disable it altogether, and include the Grid content in the normal tab sequence, set the property to `false`.
442
474
  * To enable navigation through separate Grid sections only, provide a [`GridNavigableSection`]({% slug api_grid_gridnavigablesection %}) array.
443
475
  */
444
476
  set navigable(value) {
@@ -455,20 +487,6 @@ export class GridComponent {
455
487
  get navigable() {
456
488
  return this._navigable;
457
489
  }
458
- /**
459
- * @hidden
460
- *
461
- * An alias for `navigable` for users who migrate from Kendo UI for jQuery.
462
- */
463
- set navigatable(value) {
464
- this.navigable = value;
465
- }
466
- /**
467
- * @hidden
468
- */
469
- get navigatable() {
470
- return this.navigable;
471
- }
472
490
  /**
473
491
  * Indicates whether the Grid columns will be resized during initialization so that
474
492
  * they fit their headers and row content.
@@ -572,6 +590,21 @@ export class GridComponent {
572
590
  this.defaultSelection ? this.defaultSelection.stateToArray() : this.selectionDirective.stateToArray() :
573
591
  [];
574
592
  }
593
+ /**
594
+ * The current Grid `GridState` objects. Contains the information about data operations and column state, required
595
+ * to store and restore the Grid state.
596
+ */
597
+ get currentState() {
598
+ return {
599
+ filter: this.filter,
600
+ group: this.group,
601
+ sort: this.sort,
602
+ skip: this.skip,
603
+ take: this.pageSize,
604
+ columnsState: this.columns.toArray().flatMap(recursiveColumnsFlatMap),
605
+ currentData: structuredClone(this.data)
606
+ };
607
+ }
575
608
  /**
576
609
  * If set to `true`, the user can resize columns by dragging the edges (resize handles) of their header cells
577
610
  * ([see example]({% slug resizing_columns_grid %})).
@@ -610,6 +643,31 @@ export class GridComponent {
610
643
  * @default false
611
644
  */
612
645
  hideHeader = false;
646
+ /**
647
+ * 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.
648
+ *
649
+ * @default false
650
+ */
651
+ showInactiveTools = false;
652
+ /**
653
+ * A function which determines if a specific row is expanded.
654
+ */
655
+ set isDetailExpanded(callback) {
656
+ this.detailsService.userCallback = callback;
657
+ }
658
+ get isDetailExpanded() {
659
+ return this.detailsService.userCallback;
660
+ }
661
+ /**
662
+ * A function which determines if a specific group row is expanded.
663
+ */
664
+ set isGroupExpanded(callback) {
665
+ this.groupsService.userCallback = callback;
666
+ this.groupable = isPresent(callback);
667
+ }
668
+ get isGroupExpanded() {
669
+ return this.groupsService.userCallback;
670
+ }
613
671
  /**
614
672
  * Fires when the Grid filter is modified through the UI.
615
673
  * You have to handle the event yourself and filter the data.
@@ -642,6 +700,10 @@ export class GridComponent {
642
700
  * Fires when the data state of the Grid is changed.
643
701
  */
644
702
  dataStateChange = new EventEmitter();
703
+ /**
704
+ * Fires when the data or columns state of the Grid is changed.
705
+ */
706
+ gridStateChange = new EventEmitter();
645
707
  /**
646
708
  * Fires when the user expands a group header.
647
709
  */
@@ -846,6 +908,10 @@ export class GridComponent {
846
908
  dragTargetContainer;
847
909
  dropTargetContainer;
848
910
  dialogContainer;
911
+ /**
912
+ * @hidden
913
+ */
914
+ adaptiveRenderer;
849
915
  get scrollbarWidth() {
850
916
  return this.supportService.scrollbarWidth;
851
917
  }
@@ -888,6 +954,12 @@ export class GridComponent {
888
954
  get navigation() {
889
955
  return this.navigationService;
890
956
  }
957
+ /**
958
+ * @hidden
959
+ */
960
+ get flatData() {
961
+ return isArray(this.data) ? this.data : this.data.data;
962
+ }
891
963
  shouldGenerateColumns = true;
892
964
  direction;
893
965
  notifyTimeout = null;
@@ -910,7 +982,7 @@ export class GridComponent {
910
982
  _rowReorderable = false;
911
983
  leafViewportColumns;
912
984
  viewportColumns;
913
- _navigable = [];
985
+ _navigable = ['table', 'pager', 'toolbar'];
914
986
  _size = 'medium';
915
987
  _loading = false;
916
988
  get isVirtual() {
@@ -998,6 +1070,7 @@ export class GridComponent {
998
1070
  * @hidden
999
1071
  */
1000
1072
  blockArrowSelection = false;
1073
+ undoRedoService;
1001
1074
  selectionSubscription;
1002
1075
  stateChangeSubscription;
1003
1076
  groupExpandCollapseSubscription;
@@ -1023,7 +1096,7 @@ export class GridComponent {
1023
1096
  rowReorderSubscription;
1024
1097
  rtl = false;
1025
1098
  _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) {
1099
+ 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
1100
  this.supportService = supportService;
1028
1101
  this.selectionService = selectionService;
1029
1102
  this.cellSelectionService = cellSelectionService;
@@ -1051,6 +1124,8 @@ export class GridComponent {
1051
1124
  this.localization = localization;
1052
1125
  this.ctx = ctx;
1053
1126
  this.sizingService = sizingService;
1127
+ this.adaptiveService = adaptiveService;
1128
+ this.adaptiveGridService = adaptiveGridService;
1054
1129
  this.rowReorderService = rowReorderService;
1055
1130
  const isValid = validatePackage(packageMetadata);
1056
1131
  this.showLicenseWatermark = shouldShowValidationUI(isValid);
@@ -1169,6 +1244,7 @@ export class GridComponent {
1169
1244
  }
1170
1245
  this.initSelectionService();
1171
1246
  this.updateNavigationMetadata();
1247
+ this.currentState.currentData = this.data;
1172
1248
  }
1173
1249
  ngOnChanges(changes) {
1174
1250
  if (isChanged("data", changes)) {
@@ -1250,6 +1326,12 @@ export class GridComponent {
1250
1326
  if (this.selectionSubscription) {
1251
1327
  this.selectionSubscription.unsubscribe();
1252
1328
  }
1329
+ if (this.rowReorderSubscription) {
1330
+ this.rowReorderSubscription.unsubscribe();
1331
+ }
1332
+ if (this.columnReorderSubscription) {
1333
+ this.columnReorderSubscription.unsubscribe();
1334
+ }
1253
1335
  if (this.stateChangeSubscription) {
1254
1336
  this.stateChangeSubscription.unsubscribe();
1255
1337
  }
@@ -1372,6 +1454,12 @@ export class GridComponent {
1372
1454
  const target = isNaN(columnIndex) ? row : `${row} td[data-kendo-grid-column-index="${columnIndex}"]`;
1373
1455
  this.focusEditElement(target);
1374
1456
  }
1457
+ /**
1458
+ * @hidden
1459
+ */
1460
+ handleReorderEvents(ev, evType) {
1461
+ this.rowReorderService[evType](ev);
1462
+ }
1375
1463
  /**
1376
1464
  * Closes the editor for a given row ([see example]({% slug inline_editing_grid %}#toc-canceling-editing-1)).
1377
1465
  *
@@ -1465,6 +1553,44 @@ export class GridComponent {
1465
1553
  saveAsExcel() {
1466
1554
  this.excelService.save(this);
1467
1555
  }
1556
+ /**
1557
+ * Applies the provided `GridState` object to the Grid.
1558
+ */
1559
+ loadState(state) {
1560
+ if (state.columnsState) {
1561
+ this.traverseColumns(this.columns, (column) => {
1562
+ const columnState = state.columnsState.find((col) => col.id === column.id);
1563
+ if (columnState) {
1564
+ column.width = columnState.width;
1565
+ column.hidden = columnState.hidden;
1566
+ column.locked = columnState.locked;
1567
+ column.sticky = columnState.sticky;
1568
+ column.orderIndex = columnState.orderIndex;
1569
+ }
1570
+ });
1571
+ this.columns.reset(this.columns.toArray());
1572
+ this.columnsContainer.refresh();
1573
+ }
1574
+ this.sort = state.sort;
1575
+ this.group = state.group;
1576
+ this.filter = state.filter;
1577
+ this.group = state.group;
1578
+ this.skip = state.skip;
1579
+ this.pageSize = state.take;
1580
+ this.data = state.currentData;
1581
+ this.changeNotification.notify();
1582
+ this.changeDetectorRef.detectChanges();
1583
+ }
1584
+ traverseColumns(columns, callback) {
1585
+ columns.forEach((column) => {
1586
+ if (column.isColumnGroup || column.isSpanColumn) {
1587
+ this.traverseColumns(column.children, callback);
1588
+ }
1589
+ else {
1590
+ callback(column);
1591
+ }
1592
+ });
1593
+ }
1468
1594
  /**
1469
1595
  * Applies the minimum possible width for the specified column,
1470
1596
  * so that the whole text fits without wrapping. This method expects the Grid
@@ -1615,7 +1741,7 @@ export class GridComponent {
1615
1741
  return;
1616
1742
  }
1617
1743
  if (isSpanColumnComponent(target) && !options.before) {
1618
- target = target.childColumns.last;
1744
+ target = target.children.last;
1619
1745
  }
1620
1746
  this.reorder({
1621
1747
  before: options.before,
@@ -1623,37 +1749,6 @@ export class GridComponent {
1623
1749
  target: target
1624
1750
  });
1625
1751
  }
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
1752
  /**
1658
1753
  * @hidden
1659
1754
  */
@@ -1707,7 +1802,7 @@ export class GridComponent {
1707
1802
  let toSkip = 1;
1708
1803
  // Possible only when called from the API.
1709
1804
  if (source.isSpanColumn) {
1710
- toSkip += source.childColumns.length;
1805
+ toSkip += source.children.length;
1711
1806
  }
1712
1807
  let i = 0;
1713
1808
  while (i < expandedColumns.length) {
@@ -1903,7 +1998,13 @@ export class GridComponent {
1903
1998
  this.blockArrowSelection = true;
1904
1999
  }
1905
2000
  this.dataStateChange.emit(x);
2001
+ this.gridStateChange.emit({ ...x, columnsState: this.currentState.columnsState, currentData: this.currentState.currentData });
2002
+ if (this.undoRedoService) {
2003
+ this.undoRedoService.originalEvent = x;
2004
+ }
1906
2005
  });
2006
+ this.stateChangeSubscription.add(merge(this.columnReorder, this.columnResize, this.columnVisibilityChange, this.columnLockedChange, this.columnStickyChange).pipe(flatMap(() => this.ngZone.onStable.pipe(take(1))))
2007
+ .subscribe(() => this.ngZone.run(() => this.gridStateChange.emit(this.currentState))));
1907
2008
  }
1908
2009
  attachEditHandlers() {
1909
2010
  if (!this.editService) {
@@ -2196,8 +2297,8 @@ export class GridComponent {
2196
2297
  this.dragTargetContainer?.notify();
2197
2298
  this.dropTargetContainer?.notify();
2198
2299
  }
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: [
2300
+ 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 });
2301
+ 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", 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
2302
  BrowserSupportService,
2202
2303
  LocalizationService,
2203
2304
  ColumnInfoService,
@@ -2243,8 +2344,11 @@ export class GridComponent {
2243
2344
  SizingOptionsService,
2244
2345
  RowReorderService,
2245
2346
  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: `
2347
+ RowspanService,
2348
+ AdaptiveGridService,
2349
+ ColumnMenuService,
2350
+ MenuTabbingService
2351
+ ], 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
2352
  <ng-container kendoGridLocalizedMessages
2249
2353
  i18n-groupPanelEmpty="kendo.grid.groupPanelEmpty|The label visible in the Grid group panel when it is empty"
2250
2354
  groupPanelEmpty="Drag a column header and drop it here to group by that column"
@@ -2375,6 +2479,21 @@ export class GridComponent {
2375
2479
  i18n-filterClearButton="kendo.grid.filterClearButton|The text of the clear filter button"
2376
2480
  filterClearButton="Clear"
2377
2481
 
2482
+ i18n-sortClearButton="kendo.grid.sortClearButton|The text of the clear sort button located in the Sort Toolbar Tool and adaptive Sort Toolbar Tool"
2483
+ sortClearButton="Clear sorting"
2484
+
2485
+ 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"
2486
+ adaptiveCloseButtonTitle="Close"
2487
+
2488
+ 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"
2489
+ adaptiveBackButtonTitle="Back"
2490
+
2491
+ i18n-filterClearAllButton="kendo.grid.filterClearAllButton|The text of the clear all filters button located in the Filter Toolbar Tool and adaptive Filter Toolbar Tool"
2492
+ filterClearAllButton="Clear all filters"
2493
+
2494
+ i18n-sortDoneButton="kendo.grid.sortDoneButton|The text of the done sort button"
2495
+ sortDoneButton="Done"
2496
+
2378
2497
  i18n-filterAndLogic="kendo.grid.filterAndLogic|The text of the And filter logic"
2379
2498
  filterAndLogic="And"
2380
2499
 
@@ -2396,6 +2515,18 @@ export class GridComponent {
2396
2515
  i18n-columns="kendo.grid.columns|The text for the Grid Column Chooser and Column Chooser toolbar tool"
2397
2516
  columns="Columns"
2398
2517
 
2518
+ i18n-columns="kendo.grid.columnsSubtitle|The subtitle for the adaptive Grid Column Chooser and Column Chooser toolbar tool"
2519
+ columnsSubtitle="Selected fields are visible"
2520
+
2521
+ i18n-columns="kendo.grid.adaptiveFilterTitle|The title that is displayed in the adaptive Filter Toolbar Tool and Filter Menu"
2522
+ adaptiveFilterTitle="Filter by"
2523
+
2524
+ i18n-columns="kendo.grid.adaptiveFilterOperatorsTitle|The title that is displayed in the Operators Action Sheet"
2525
+ adaptiveFilterOperatorsTitle="Operators"
2526
+
2527
+ i18n-columns="kendo.grid.adaptiveSortTitle|The title that is displayed in the adaptive Sort Toolbar Tool"
2528
+ adaptiveSortTitle="Sort by"
2529
+
2399
2530
  i18n-lock="kendo.grid.lock|The text shown in the column menu for the lock item"
2400
2531
  lock="Lock"
2401
2532
 
@@ -2483,6 +2614,27 @@ export class GridComponent {
2483
2614
  i18n-bottomToolbarLabel="kendo.grid.bottomToolbarLabel|The label for the Grid bottom toolbar"
2484
2615
  bottomToolbarLabel="Bottom toolbar"
2485
2616
 
2617
+ i18n-editToolbarToolText="kendo.grid.editToolbarToolText|The text for the Grid Edit toolbar tool"
2618
+ editToolbarToolText="Edit"
2619
+
2620
+ i18n-saveToolbarToolText="kendo.grid.saveToolbarToolText|The text for the Grid Save toolbar tool"
2621
+ saveToolbarToolText="Save"
2622
+
2623
+ i18n-addToolbarToolText="kendo.grid.addToolbarToolText|The text for the Grid Add toolbar tool"
2624
+ addToolbarToolText="Add"
2625
+
2626
+ i18n-cancelToolbarToolText="kendo.grid.cancelToolbarToolText|The text for the Grid Cancel toolbar tool"
2627
+ cancelToolbarToolText="Cancel"
2628
+
2629
+ i18n-removeToolbarToolText="kendo.grid.removeToolbarToolText|The text for the Grid Remove toolbar tool"
2630
+ removeToolbarToolText="Delete"
2631
+
2632
+ i18n-excelExportToolbarToolText="kendo.grid.excelExportToolbarToolText|The text for the Grid Excel export toolbar tool"
2633
+ excelExportToolbarToolText="Excel Export"
2634
+
2635
+ i18n-pdfExportToolbarToolText="kendo.grid.pdfExportToolbarToolText|The text for the Grid PDF export toolbar tool"
2636
+ pdfExportToolbarToolText="PDF Export"
2637
+
2486
2638
  i18n-groupPanelLabel="kendo.grid.groupPanelLabel|The label for the Grid group panel toolbar"
2487
2639
  groupPanelLabel="Group panel"
2488
2640
 
@@ -2519,9 +2671,12 @@ export class GridComponent {
2519
2671
  i18n-removeConfirmationDialogRejectText="kendo.grid.removeConfirmationDialogRejectText|The text of the built-in remove item confirmation Dialog reject action button"
2520
2672
  removeConfirmationDialogRejectText="No"
2521
2673
 
2522
- i18n-externalEditingTitle="kendo.grid.externalEditingTitle|The title of the built-in external editing form container"
2674
+ i18n-externalEditingTitle="kendo.grid.externalEditingTitle|The title of the built-in external editing form container when editing an item"
2523
2675
  externalEditingTitle="Edit"
2524
2676
 
2677
+ i18n-externalEditingAddTitle="kendo.grid.externalEditingAddTitle|The title of the built-in external editing form container when adding a new item"
2678
+ externalEditingAddTitle="Add"
2679
+
2525
2680
  i18n-externalEditingSaveText="kendo.grid.externalEditingSaveText|The text of the external editing form Save button"
2526
2681
  externalEditingSaveText="Save"
2527
2682
 
@@ -2934,9 +3089,11 @@ export class GridComponent {
2934
3089
  </kendo-pager-info>
2935
3090
  </ng-template>
2936
3091
  <div #dialogContainer></div>
2937
-
3092
+
3093
+ <kendo-grid-adaptive-renderer *ngIf="isAdaptiveModeEnabled"></kendo-grid-adaptive-renderer>
3094
+
2938
3095
  <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 });
3096
+ `, 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
3097
  }
2941
3098
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GridComponent, decorators: [{
2942
3099
  type: Component,
@@ -2989,7 +3146,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2989
3146
  SizingOptionsService,
2990
3147
  RowReorderService,
2991
3148
  ClipboardService,
2992
- RowspanService
3149
+ RowspanService,
3150
+ AdaptiveGridService,
3151
+ ColumnMenuService,
3152
+ MenuTabbingService
2993
3153
  ],
2994
3154
  selector: 'kendo-grid',
2995
3155
  template: `
@@ -3123,6 +3283,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
3123
3283
  i18n-filterClearButton="kendo.grid.filterClearButton|The text of the clear filter button"
3124
3284
  filterClearButton="Clear"
3125
3285
 
3286
+ i18n-sortClearButton="kendo.grid.sortClearButton|The text of the clear sort button located in the Sort Toolbar Tool and adaptive Sort Toolbar Tool"
3287
+ sortClearButton="Clear sorting"
3288
+
3289
+ 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"
3290
+ adaptiveCloseButtonTitle="Close"
3291
+
3292
+ 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"
3293
+ adaptiveBackButtonTitle="Back"
3294
+
3295
+ i18n-filterClearAllButton="kendo.grid.filterClearAllButton|The text of the clear all filters button located in the Filter Toolbar Tool and adaptive Filter Toolbar Tool"
3296
+ filterClearAllButton="Clear all filters"
3297
+
3298
+ i18n-sortDoneButton="kendo.grid.sortDoneButton|The text of the done sort button"
3299
+ sortDoneButton="Done"
3300
+
3126
3301
  i18n-filterAndLogic="kendo.grid.filterAndLogic|The text of the And filter logic"
3127
3302
  filterAndLogic="And"
3128
3303
 
@@ -3144,6 +3319,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
3144
3319
  i18n-columns="kendo.grid.columns|The text for the Grid Column Chooser and Column Chooser toolbar tool"
3145
3320
  columns="Columns"
3146
3321
 
3322
+ i18n-columns="kendo.grid.columnsSubtitle|The subtitle for the adaptive Grid Column Chooser and Column Chooser toolbar tool"
3323
+ columnsSubtitle="Selected fields are visible"
3324
+
3325
+ i18n-columns="kendo.grid.adaptiveFilterTitle|The title that is displayed in the adaptive Filter Toolbar Tool and Filter Menu"
3326
+ adaptiveFilterTitle="Filter by"
3327
+
3328
+ i18n-columns="kendo.grid.adaptiveFilterOperatorsTitle|The title that is displayed in the Operators Action Sheet"
3329
+ adaptiveFilterOperatorsTitle="Operators"
3330
+
3331
+ i18n-columns="kendo.grid.adaptiveSortTitle|The title that is displayed in the adaptive Sort Toolbar Tool"
3332
+ adaptiveSortTitle="Sort by"
3333
+
3147
3334
  i18n-lock="kendo.grid.lock|The text shown in the column menu for the lock item"
3148
3335
  lock="Lock"
3149
3336
 
@@ -3231,6 +3418,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
3231
3418
  i18n-bottomToolbarLabel="kendo.grid.bottomToolbarLabel|The label for the Grid bottom toolbar"
3232
3419
  bottomToolbarLabel="Bottom toolbar"
3233
3420
 
3421
+ i18n-editToolbarToolText="kendo.grid.editToolbarToolText|The text for the Grid Edit toolbar tool"
3422
+ editToolbarToolText="Edit"
3423
+
3424
+ i18n-saveToolbarToolText="kendo.grid.saveToolbarToolText|The text for the Grid Save toolbar tool"
3425
+ saveToolbarToolText="Save"
3426
+
3427
+ i18n-addToolbarToolText="kendo.grid.addToolbarToolText|The text for the Grid Add toolbar tool"
3428
+ addToolbarToolText="Add"
3429
+
3430
+ i18n-cancelToolbarToolText="kendo.grid.cancelToolbarToolText|The text for the Grid Cancel toolbar tool"
3431
+ cancelToolbarToolText="Cancel"
3432
+
3433
+ i18n-removeToolbarToolText="kendo.grid.removeToolbarToolText|The text for the Grid Remove toolbar tool"
3434
+ removeToolbarToolText="Delete"
3435
+
3436
+ i18n-excelExportToolbarToolText="kendo.grid.excelExportToolbarToolText|The text for the Grid Excel export toolbar tool"
3437
+ excelExportToolbarToolText="Excel Export"
3438
+
3439
+ i18n-pdfExportToolbarToolText="kendo.grid.pdfExportToolbarToolText|The text for the Grid PDF export toolbar tool"
3440
+ pdfExportToolbarToolText="PDF Export"
3441
+
3234
3442
  i18n-groupPanelLabel="kendo.grid.groupPanelLabel|The label for the Grid group panel toolbar"
3235
3443
  groupPanelLabel="Group panel"
3236
3444
 
@@ -3267,9 +3475,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
3267
3475
  i18n-removeConfirmationDialogRejectText="kendo.grid.removeConfirmationDialogRejectText|The text of the built-in remove item confirmation Dialog reject action button"
3268
3476
  removeConfirmationDialogRejectText="No"
3269
3477
 
3270
- i18n-externalEditingTitle="kendo.grid.externalEditingTitle|The title of the built-in external editing form container"
3478
+ i18n-externalEditingTitle="kendo.grid.externalEditingTitle|The title of the built-in external editing form container when editing an item"
3271
3479
  externalEditingTitle="Edit"
3272
3480
 
3481
+ i18n-externalEditingAddTitle="kendo.grid.externalEditingAddTitle|The title of the built-in external editing form container when adding a new item"
3482
+ externalEditingAddTitle="Add"
3483
+
3273
3484
  i18n-externalEditingSaveText="kendo.grid.externalEditingSaveText|The text of the external editing form Save button"
3274
3485
  externalEditingSaveText="Save"
3275
3486
 
@@ -3682,7 +3893,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
3682
3893
  </kendo-pager-info>
3683
3894
  </ng-template>
3684
3895
  <div #dialogContainer></div>
3685
-
3896
+
3897
+ <kendo-grid-adaptive-renderer *ngIf="isAdaptiveModeEnabled"></kendo-grid-adaptive-renderer>
3898
+
3686
3899
  <div kendoWatermarkOverlay *ngIf="showLicenseWatermark"></div>
3687
3900
  `,
3688
3901
  standalone: true,
@@ -3691,10 +3904,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
3691
3904
  TableDirective, GridTableDirective, ColGroupComponent, HeaderComponent, ResizableContainerDirective,
3692
3905
  ListComponent, DragTargetContainerDirective, DropTargetContainerDirective, DraggableDirective,
3693
3906
  GridMarqueeDirective, FooterComponent, TableBodyComponent, LoadingComponent, StatusBarComponent,
3694
- IconWrapperComponent, WatermarkOverlayComponent, ...KENDO_PAGER, NgTemplateOutlet
3907
+ IconWrapperComponent, WatermarkOverlayComponent, ...KENDO_PAGER, NgTemplateOutlet, AdaptiveRendererComponent
3695
3908
  ]
3696
3909
  }]
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: [{
3910
+ }], 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
3911
  type: Input
3699
3912
  }], pageSize: [{
3700
3913
  type: Input
@@ -3702,6 +3915,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
3702
3915
  type: Input
3703
3916
  }], rowHeight: [{
3704
3917
  type: Input
3918
+ }], adaptiveMode: [{
3919
+ type: Input
3705
3920
  }], detailRowHeight: [{
3706
3921
  type: Input
3707
3922
  }], skip: [{
@@ -3736,8 +3951,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
3736
3951
  type: Input
3737
3952
  }], navigable: [{
3738
3953
  type: Input
3739
- }], navigatable: [{
3740
- type: Input
3741
3954
  }], autoSize: [{
3742
3955
  type: Input
3743
3956
  }], rowClass: [{
@@ -3760,6 +3973,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
3760
3973
  type: Input
3761
3974
  }], hideHeader: [{
3762
3975
  type: Input
3976
+ }], showInactiveTools: [{
3977
+ type: Input
3978
+ }], isDetailExpanded: [{
3979
+ type: Input
3980
+ }], isGroupExpanded: [{
3981
+ type: Input
3763
3982
  }], filterChange: [{
3764
3983
  type: Output
3765
3984
  }], pageChange: [{
@@ -3774,6 +3993,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
3774
3993
  type: Output
3775
3994
  }], dataStateChange: [{
3776
3995
  type: Output
3996
+ }], gridStateChange: [{
3997
+ type: Output
3777
3998
  }], groupExpand: [{
3778
3999
  type: Output
3779
4000
  }], groupCollapse: [{
@@ -3898,8 +4119,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
3898
4119
  }], dialogContainer: [{
3899
4120
  type: ViewChild,
3900
4121
  args: ['dialogContainer', { read: ViewContainerRef }]
3901
- }], isDetailExpanded: [{
3902
- type: Input
3903
- }], isGroupExpanded: [{
3904
- type: Input
4122
+ }], adaptiveRenderer: [{
4123
+ type: ViewChild,
4124
+ args: [AdaptiveRendererComponent]
3905
4125
  }] } });