@progress/kendo-angular-grid 18.4.1-develop.2 → 18.5.0-develop.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/column-menu/column-chooser.component.d.ts +0 -4
  2. package/column-menu/column-menu-item.component.d.ts +3 -4
  3. package/columns/column-base.d.ts +3 -2
  4. package/columns/column.component.d.ts +5 -5
  5. package/common/dom-events.service.d.ts +1 -0
  6. package/common/field-datatype.d.ts +9 -0
  7. package/directives.d.ts +5 -3
  8. package/editing/form/dialog-form.component.d.ts +27 -0
  9. package/editing/form/form-formfield.component.d.ts +24 -0
  10. package/editing/form/form.component.d.ts +28 -0
  11. package/editing/form/index.d.ts +8 -0
  12. package/editing/form/models.d.ts +196 -0
  13. package/editing-directives/editing-directive-base.d.ts +10 -3
  14. package/editing-directives/external-editing.directive.d.ts +46 -0
  15. package/esm2022/column-menu/column-chooser.component.mjs +2 -13
  16. package/esm2022/column-menu/column-list.component.mjs +53 -33
  17. package/esm2022/column-menu/column-menu-item.component.mjs +3 -4
  18. package/esm2022/columns/column-base.mjs +4 -0
  19. package/esm2022/columns/column.component.mjs +0 -4
  20. package/esm2022/common/dom-events.service.mjs +1 -0
  21. package/esm2022/common/field-datatype.mjs +5 -0
  22. package/esm2022/directives.mjs +8 -1
  23. package/esm2022/editing/edit.service.mjs +1 -1
  24. package/esm2022/editing/form/dialog-form.component.mjs +102 -0
  25. package/esm2022/editing/form/form-formfield.component.mjs +161 -0
  26. package/esm2022/editing/form/form.component.mjs +153 -0
  27. package/esm2022/editing/form/index.mjs +8 -0
  28. package/esm2022/editing/form/models.mjs +5 -0
  29. package/esm2022/editing-directives/editing-directive-base.mjs +33 -5
  30. package/esm2022/editing-directives/external-editing.directive.mjs +130 -0
  31. package/esm2022/filtering/cell/filter-cell-host.directive.mjs +5 -5
  32. package/esm2022/filtering/filter-host.directive.mjs +5 -7
  33. package/esm2022/filtering/menu/filter-menu-host.directive.mjs +5 -5
  34. package/esm2022/grid.component.mjs +78 -14
  35. package/esm2022/grid.module.mjs +15 -11
  36. package/esm2022/index.mjs +1 -0
  37. package/esm2022/localization/messages.mjs +62 -1
  38. package/esm2022/navigation/navigation.service.mjs +46 -16
  39. package/esm2022/package-metadata.mjs +2 -2
  40. package/esm2022/rendering/footer/footer.component.mjs +12 -5
  41. package/esm2022/rendering/table-body.component.mjs +1 -1
  42. package/esm2022/selection/cell-selection.service.mjs +12 -4
  43. package/esm2022/selection/marquee.directive.mjs +7 -2
  44. package/esm2022/selection/selection.service.mjs +10 -6
  45. package/esm2022/utils.mjs +10 -1
  46. package/fesm2022/progress-kendo-angular-grid.mjs +858 -141
  47. package/filtering/cell/filter-cell-host.directive.d.ts +2 -2
  48. package/filtering/filter-host.directive.d.ts +2 -3
  49. package/filtering/menu/filter-menu-host.directive.d.ts +2 -2
  50. package/grid.component.d.ts +0 -6
  51. package/grid.module.d.ts +15 -11
  52. package/index.d.ts +3 -0
  53. package/localization/messages.d.ts +46 -1
  54. package/navigation/navigation.service.d.ts +2 -0
  55. package/package.json +19 -19
  56. package/rendering/footer/footer.component.d.ts +3 -1
  57. package/schematics/ngAdd/index.js +4 -4
  58. package/selection/cell-selection.service.d.ts +1 -1
  59. package/selection/selection.service.d.ts +2 -2
  60. package/selection/types.d.ts +5 -0
  61. package/utils.d.ts +5 -0
@@ -96,6 +96,7 @@ 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 { DialogContainerDirective } from '@progress/kendo-angular-dialog';
99
100
  import * as i0 from "@angular/core";
100
101
  import * as i1 from "./layout/browser-support.service";
101
102
  import * as i2 from "./selection/selection.service";
@@ -861,9 +862,6 @@ export class GridComponent {
861
862
  columnList;
862
863
  selectionDirective = false;
863
864
  ariaRootId = `k-${guid()}`;
864
- /**
865
- * @hidden
866
- */
867
865
  showLicenseWatermark = false;
868
866
  columnsContainer = new ColumnsContainer(() => this.columnList.filterHierarchy(column => {
869
867
  if (!isUniversal()) {
@@ -1662,9 +1660,6 @@ export class GridComponent {
1662
1660
  updateNavigationMetadata() {
1663
1661
  this.navigationService.metadata = this.navigationMetadata();
1664
1662
  }
1665
- /**
1666
- * @hidden
1667
- */
1668
1663
  reorder({ target, source, before, changeContainer }) {
1669
1664
  this.ngZone.run(() => {
1670
1665
  const columnsForLevel = sortColumns(this.allColumnsForLevel(source.level));
@@ -1990,6 +1985,11 @@ export class GridComponent {
1990
1985
  const keydownSubscription = this.renderer.listen(wrapper, 'keydown', (args) => {
1991
1986
  this.domEvents.keydown.emit(args);
1992
1987
  });
1988
+ const shiftKeyupSubscription = this.renderer.listen(wrapper, 'keyup', (args) => {
1989
+ if (args.key === 'Shift') {
1990
+ this.domEvents.shiftKeyup.emit(args);
1991
+ }
1992
+ });
1993
1993
  // focusIn and focusOut are relative to the element with ARIA role "grid"
1994
1994
  let focused = false;
1995
1995
  const focusInSubscription = this.renderer.listen(ariaRoot, 'focusin', (args) => {
@@ -2004,6 +2004,7 @@ export class GridComponent {
2004
2004
  const outside = !closest(next, (node) => node === ariaRoot);
2005
2005
  if (outside) {
2006
2006
  this.domEvents.focusOut.emit(args);
2007
+ this.domEvents.shiftKeyup.emit(args);
2007
2008
  focused = false;
2008
2009
  }
2009
2010
  });
@@ -2014,6 +2015,7 @@ export class GridComponent {
2014
2015
  windowBlurSubscription();
2015
2016
  clickSubscription();
2016
2017
  keydownSubscription();
2018
+ shiftKeyupSubscription();
2017
2019
  focusInSubscription();
2018
2020
  focusOutSubscription();
2019
2021
  };
@@ -2496,6 +2498,30 @@ export class GridComponent {
2496
2498
 
2497
2499
  i18n-groupChipMenuNext="kendo.grid.groupChipMenuNext|The text for the Group pane Chip Menu Move as next item"
2498
2500
  groupChipMenuNext="Move as next"
2501
+
2502
+ i18n-formValidationErrorText="kendo.grid.formValidationErrorText|The default text of a form validation error when using external editing."
2503
+ formValidationErrorText="{{ 'The {fieldName} field has {errorName} validation error' }}"
2504
+
2505
+ i18n-removeConfirmationDialogTitle="kendo.grid.removeConfirmationDialogTitle|The title of the built-in remove item confirmation Dialog"
2506
+ removeConfirmationDialogTitle="Please confirm"
2507
+
2508
+ i18n-removeConfirmationDialogContent="kendo.grid.removeConfirmationDialogContent|The content of the built-in remove item confirmation Dialog"
2509
+ removeConfirmationDialogContent="Are you sure you want to delete this item?"
2510
+
2511
+ i18n-removeConfirmationDialogConfirmText="kendo.grid.removeConfirmationDialogConfirmText|The text of the built-in remove item confirmation Dialog confirm action button"
2512
+ removeConfirmationDialogConfirmText="Yes"
2513
+
2514
+ i18n-removeConfirmationDialogRejectText="kendo.grid.removeConfirmationDialogRejectText|The text of the built-in remove item confirmation Dialog reject action button"
2515
+ removeConfirmationDialogRejectText="No"
2516
+
2517
+ i18n-externalEditingTitle="kendo.grid.externalEditingTitle|The title of the built-in external editing form container"
2518
+ externalEditingTitle="Edit"
2519
+
2520
+ i18n-externalEditingSaveText="kendo.grid.externalEditingSaveText|The text of the external editing form Save button"
2521
+ externalEditingSaveText="Save"
2522
+
2523
+ i18n-externalEditingCancelText="kendo.grid.externalEditingCancelText|The text of the external editing form Cancel button"
2524
+ externalEditingCancelText="Cancel"
2499
2525
  >
2500
2526
  </ng-container>
2501
2527
  <kendo-grid-toolbar
@@ -2724,7 +2750,8 @@ export class GridComponent {
2724
2750
  [columns]="$any(lockedLeafColumns)"
2725
2751
  [detailTemplate]="detailTemplate"
2726
2752
  [logicalRowIndex]="ariaRowCount"
2727
- [totalColumns]="columnsContainer">
2753
+ [totalColumns]="columnsContainer"
2754
+ [totalColumnsCount]="leafColumns.length">
2728
2755
  </tfoot>
2729
2756
  </table>
2730
2757
  </div>
@@ -2751,7 +2778,8 @@ export class GridComponent {
2751
2778
  [columns]="$any(headerColumns)"
2752
2779
  [lockedColumnsCount]="lockedLeafColumns.length"
2753
2780
  [detailTemplate]="detailTemplate"
2754
- [totalColumns]="columnsContainer">
2781
+ [totalColumns]="columnsContainer"
2782
+ [totalColumnsCount]="leafColumns.length">
2755
2783
  </tfoot>
2756
2784
  </table>
2757
2785
  </div>
@@ -2772,6 +2800,8 @@ export class GridComponent {
2772
2800
  </colgroup>
2773
2801
  <thead kendoGridHeader
2774
2802
  *ngIf="!hideHeader"
2803
+ class="k-grid-header"
2804
+ [class.k-grid-draggable-header]="groupable || reorderable"
2775
2805
  role="rowgroup"
2776
2806
  [resizable]="resizable"
2777
2807
  [scrollable]="false"
@@ -2814,7 +2844,8 @@ export class GridComponent {
2814
2844
  [groups]="group"
2815
2845
  [columns]="$any(leafColumns)"
2816
2846
  [detailTemplate]="detailTemplate"
2817
- [totalColumns]="columnsContainer">
2847
+ [totalColumns]="columnsContainer"
2848
+ [totalColumnsCount]="leafColumns.length">
2818
2849
  </tfoot>
2819
2850
  </table>
2820
2851
  </ng-container>
@@ -2897,8 +2928,10 @@ export class GridComponent {
2897
2928
  <kendo-pager-info *ngIf="normalizedPageableSettings.info">
2898
2929
  </kendo-pager-info>
2899
2930
  </ng-template>
2931
+ <div kendoDialogContainer></div>
2932
+
2900
2933
  <div kendoWatermarkOverlay *ngIf="showLicenseWatermark"></div>
2901
- `, 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"] }, { 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 });
2934
+ `, 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"] }, { kind: "directive", type: DialogContainerDirective, selector: "[kendoDialogContainer]" }], encapsulation: i0.ViewEncapsulation.None });
2902
2935
  }
2903
2936
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GridComponent, decorators: [{
2904
2937
  type: Component,
@@ -3207,6 +3240,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
3207
3240
 
3208
3241
  i18n-groupChipMenuNext="kendo.grid.groupChipMenuNext|The text for the Group pane Chip Menu Move as next item"
3209
3242
  groupChipMenuNext="Move as next"
3243
+
3244
+ i18n-formValidationErrorText="kendo.grid.formValidationErrorText|The default text of a form validation error when using external editing."
3245
+ formValidationErrorText="{{ 'The {fieldName} field has {errorName} validation error' }}"
3246
+
3247
+ i18n-removeConfirmationDialogTitle="kendo.grid.removeConfirmationDialogTitle|The title of the built-in remove item confirmation Dialog"
3248
+ removeConfirmationDialogTitle="Please confirm"
3249
+
3250
+ i18n-removeConfirmationDialogContent="kendo.grid.removeConfirmationDialogContent|The content of the built-in remove item confirmation Dialog"
3251
+ removeConfirmationDialogContent="Are you sure you want to delete this item?"
3252
+
3253
+ i18n-removeConfirmationDialogConfirmText="kendo.grid.removeConfirmationDialogConfirmText|The text of the built-in remove item confirmation Dialog confirm action button"
3254
+ removeConfirmationDialogConfirmText="Yes"
3255
+
3256
+ i18n-removeConfirmationDialogRejectText="kendo.grid.removeConfirmationDialogRejectText|The text of the built-in remove item confirmation Dialog reject action button"
3257
+ removeConfirmationDialogRejectText="No"
3258
+
3259
+ i18n-externalEditingTitle="kendo.grid.externalEditingTitle|The title of the built-in external editing form container"
3260
+ externalEditingTitle="Edit"
3261
+
3262
+ i18n-externalEditingSaveText="kendo.grid.externalEditingSaveText|The text of the external editing form Save button"
3263
+ externalEditingSaveText="Save"
3264
+
3265
+ i18n-externalEditingCancelText="kendo.grid.externalEditingCancelText|The text of the external editing form Cancel button"
3266
+ externalEditingCancelText="Cancel"
3210
3267
  >
3211
3268
  </ng-container>
3212
3269
  <kendo-grid-toolbar
@@ -3435,7 +3492,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
3435
3492
  [columns]="$any(lockedLeafColumns)"
3436
3493
  [detailTemplate]="detailTemplate"
3437
3494
  [logicalRowIndex]="ariaRowCount"
3438
- [totalColumns]="columnsContainer">
3495
+ [totalColumns]="columnsContainer"
3496
+ [totalColumnsCount]="leafColumns.length">
3439
3497
  </tfoot>
3440
3498
  </table>
3441
3499
  </div>
@@ -3462,7 +3520,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
3462
3520
  [columns]="$any(headerColumns)"
3463
3521
  [lockedColumnsCount]="lockedLeafColumns.length"
3464
3522
  [detailTemplate]="detailTemplate"
3465
- [totalColumns]="columnsContainer">
3523
+ [totalColumns]="columnsContainer"
3524
+ [totalColumnsCount]="leafColumns.length">
3466
3525
  </tfoot>
3467
3526
  </table>
3468
3527
  </div>
@@ -3483,6 +3542,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
3483
3542
  </colgroup>
3484
3543
  <thead kendoGridHeader
3485
3544
  *ngIf="!hideHeader"
3545
+ class="k-grid-header"
3546
+ [class.k-grid-draggable-header]="groupable || reorderable"
3486
3547
  role="rowgroup"
3487
3548
  [resizable]="resizable"
3488
3549
  [scrollable]="false"
@@ -3525,7 +3586,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
3525
3586
  [groups]="group"
3526
3587
  [columns]="$any(leafColumns)"
3527
3588
  [detailTemplate]="detailTemplate"
3528
- [totalColumns]="columnsContainer">
3589
+ [totalColumns]="columnsContainer"
3590
+ [totalColumnsCount]="leafColumns.length">
3529
3591
  </tfoot>
3530
3592
  </table>
3531
3593
  </ng-container>
@@ -3608,6 +3670,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
3608
3670
  <kendo-pager-info *ngIf="normalizedPageableSettings.info">
3609
3671
  </kendo-pager-info>
3610
3672
  </ng-template>
3673
+ <div kendoDialogContainer></div>
3674
+
3611
3675
  <div kendoWatermarkOverlay *ngIf="showLicenseWatermark"></div>
3612
3676
  `,
3613
3677
  standalone: true,
@@ -3616,7 +3680,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
3616
3680
  TableDirective, GridTableDirective, ColGroupComponent, HeaderComponent, ResizableContainerDirective,
3617
3681
  ListComponent, DragTargetContainerDirective, DropTargetContainerDirective, DraggableDirective,
3618
3682
  GridMarqueeDirective, FooterComponent, TableBodyComponent, LoadingComponent, StatusBarComponent,
3619
- IconWrapperComponent, WatermarkOverlayComponent, ...KENDO_PAGER, NgTemplateOutlet
3683
+ IconWrapperComponent, WatermarkOverlayComponent, ...KENDO_PAGER, NgTemplateOutlet, DialogContainerDirective
3620
3684
  ]
3621
3685
  }]
3622
3686
  }], 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: [{
@@ -130,15 +130,19 @@ import * as i114 from "./selection/selection.directive";
130
130
  import * as i115 from "./editing-directives/template-editing.directive";
131
131
  import * as i116 from "./editing-directives/reactive-editing.directive";
132
132
  import * as i117 from "./editing-directives/in-cell-editing.directive";
133
- import * as i118 from "./rendering/details-expand.directive";
134
- import * as i119 from "./rendering/groups-expand.directive";
135
- import * as i120 from "./grouping/group-scroll-binding.directive";
136
- import * as i121 from "./selection/marquee.directive";
137
- import * as i122 from "./rendering/common/spacer.component";
138
- import * as i123 from "./rendering/toolbar/toolbar-focusable.directive";
139
- import * as i124 from "./aggregates/status-bar.component";
140
- import * as i125 from "./aggregates/status-bar-template.directive";
141
- import * as i126 from "./common/clipboard.directive";
133
+ import * as i118 from "./editing-directives/external-editing.directive";
134
+ import * as i119 from "./rendering/details-expand.directive";
135
+ import * as i120 from "./rendering/groups-expand.directive";
136
+ import * as i121 from "./grouping/group-scroll-binding.directive";
137
+ import * as i122 from "./selection/marquee.directive";
138
+ import * as i123 from "./rendering/common/spacer.component";
139
+ import * as i124 from "./rendering/toolbar/toolbar-focusable.directive";
140
+ import * as i125 from "./aggregates/status-bar.component";
141
+ import * as i126 from "./aggregates/status-bar-template.directive";
142
+ import * as i127 from "./common/clipboard.directive";
143
+ import * as i128 from "./editing/form/form.component";
144
+ import * as i129 from "./editing/form/dialog-form.component";
145
+ import * as i130 from "./editing/form/form-formfield.component";
142
146
  // IMPORTANT: NgModule export kept for backwards compatibility
143
147
  /**
144
148
  * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])
@@ -163,7 +167,7 @@ import * as i126 from "./common/clipboard.directive";
163
167
  */
164
168
  export class GridModule {
165
169
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GridModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
166
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: GridModule, imports: [i1.GroupHeaderTemplateDirective, i2.GroupHeaderColumnTemplateDirective, i3.GroupFooterTemplateDirective, i4.GroupHeaderComponent, i5.GroupPanelComponent, i6.ColumnComponent, i7.ColumnGroupComponent, i8.LogicalCellDirective, i9.LogicalRowDirective, i10.FocusableDirective, i11.FooterTemplateDirective, i12.ColGroupComponent, i13.ResizableContainerDirective, i14.TemplateContextDirective, i15.FieldAccessorPipe, i16.DetailTemplateDirective, i17.SpanColumnComponent, i18.LoadingComponent, i19.GridTableDirective, i20.CommandColumnComponent, i21.CheckboxColumnComponent, i22.SelectionCheckboxDirective, i23.CellTemplateDirective, i24.EditTemplateDirective, i25.RowDragHandleTemplateDirective, i26.RowDragHintTemplateDirective, i27.TableBodyComponent, i28.NoRecordsTemplateDirective, i29.CellComponent, i30.EditCommandDirective, i31.CancelCommandDirective, i32.SaveCommandDirective, i33.RemoveCommandDirective, i34.AddCommandDirective, i35.AddCommandToolbarDirective, i36.CellLoadingTemplateDirective, i37.LoadingTemplateDirective, i38.RowReorderColumnComponent, i39.HeaderComponent, i40.HeaderTemplateDirective, i41.ColumnHandleDirective, i42.SelectAllCheckboxDirective, i43.FooterComponent, i44.CustomMessagesComponent, i44.PagerFocusableDirective, i44.PagerInfoComponent, i44.PagerInputComponent, i44.PagerNextButtonsComponent, i44.PagerNumericButtonsComponent, i44.PagerPageSizesComponent, i44.PagerPrevButtonsComponent, i44.PagerTemplateDirective, i44.PagerComponent, i44.PagerSpacerComponent, i45.ToolBarComponent, i45.ToolbarCustomMessagesComponent, i45.ToolBarButtonComponent, i45.ToolBarButtonGroupComponent, i45.ToolBarDropDownButtonComponent, i45.ToolBarSeparatorComponent, i45.ToolBarSpacerComponent, i45.ToolBarSplitButtonComponent, i45.ToolBarToolComponent, i46.FilterRowComponent, i47.FilterCellComponent, i48.FilterCellTemplateDirective, i49.StringFilterCellComponent, i50.NumericFilterCellComponent, i51.AutoCompleteFilterCellComponent, i52.BooleanFilterCellComponent, i53.FilterCellHostDirective, i54.FilterCellWrapperComponent, i55.DateFilterCellComponent, i6.ColumnComponent, i7.ColumnGroupComponent, i8.LogicalCellDirective, i9.LogicalRowDirective, i10.FocusableDirective, i11.FooterTemplateDirective, i12.ColGroupComponent, i13.ResizableContainerDirective, i14.TemplateContextDirective, i15.FieldAccessorPipe, i16.DetailTemplateDirective, i17.SpanColumnComponent, i18.LoadingComponent, i19.GridTableDirective, i56.FilterCellOperatorsComponent, i57.ContainsFilterOperatorComponent, i58.DoesNotContainFilterOperatorComponent, i59.EndsWithFilterOperatorComponent, i60.EqualFilterOperatorComponent, i61.IsEmptyFilterOperatorComponent, i62.IsNotEmptyFilterOperatorComponent, i63.IsNotNullFilterOperatorComponent, i64.IsNullFilterOperatorComponent, i65.NotEqualFilterOperatorComponent, i66.StartsWithFilterOperatorComponent, i67.GreaterFilterOperatorComponent, i68.GreaterOrEqualToFilterOperatorComponent, i69.LessFilterOperatorComponent, i70.LessOrEqualToFilterOperatorComponent, i71.AfterFilterOperatorComponent, i72.AfterEqFilterOperatorComponent, i73.BeforeEqFilterOperatorComponent, i74.BeforeFilterOperatorComponent, i75.FilterInputDirective, i6.ColumnComponent, i7.ColumnGroupComponent, i8.LogicalCellDirective, i9.LogicalRowDirective, i10.FocusableDirective, i11.FooterTemplateDirective, i12.ColGroupComponent, i13.ResizableContainerDirective, i14.TemplateContextDirective, i15.FieldAccessorPipe, i16.DetailTemplateDirective, i17.SpanColumnComponent, i18.LoadingComponent, i19.GridTableDirective, i56.FilterCellOperatorsComponent, i57.ContainsFilterOperatorComponent, i58.DoesNotContainFilterOperatorComponent, i59.EndsWithFilterOperatorComponent, i60.EqualFilterOperatorComponent, i61.IsEmptyFilterOperatorComponent, i62.IsNotEmptyFilterOperatorComponent, i63.IsNotNullFilterOperatorComponent, i64.IsNullFilterOperatorComponent, i65.NotEqualFilterOperatorComponent, i66.StartsWithFilterOperatorComponent, i67.GreaterFilterOperatorComponent, i68.GreaterOrEqualToFilterOperatorComponent, i69.LessFilterOperatorComponent, i70.LessOrEqualToFilterOperatorComponent, i71.AfterFilterOperatorComponent, i72.AfterEqFilterOperatorComponent, i73.BeforeEqFilterOperatorComponent, i74.BeforeFilterOperatorComponent, i75.FilterInputDirective, i76.FilterMenuComponent, i77.FilterMenuContainerComponent, i78.FilterMenuInputWrapperComponent, i79.StringFilterMenuInputComponent, i80.StringFilterMenuComponent, i81.FilterMenuTemplateDirective, i82.NumericFilterMenuComponent, i83.NumericFilterMenuInputComponent, i84.DateFilterMenuInputComponent, i85.DateFilterMenuComponent, i86.FilterMenuHostDirective, i87.BooleanFilterMenuComponent, i88.FilterMenuDropDownListDirective, i89.BooleanFilterRadioButtonDirective, i90.ColumnMenuChooserItemCheckedDirective, i91.ColumnListComponent, i92.ColumnChooserComponent, i93.ColumnMenuChooserComponent, i94.ColumnMenuFilterComponent, i95.ColumnMenuItemComponent, i96.ColumnMenuItemContentTemplateDirective, i97.ColumnMenuSortComponent, i98.ColumnMenuComponent, i99.ColumnMenuLockComponent, i100.ColumnMenuTemplateDirective, i101.ColumnMenuContainerComponent, i102.ColumnMenuItemDirective, i103.ColumnMenuStickComponent, i104.ColumnMenuPositionComponent, i105.ColumnMenuAutoSizeColumnComponent, i106.ColumnMenuAutoSizeAllColumnsComponent, i107.GridComponent, i108.ListComponent, i109.ToolbarComponent, i110.LocalizedMessagesDirective, i111.CustomMessagesComponent, i112.DataBindingDirective, i113.ToolbarTemplateDirective, i114.SelectionDirective, i115.TemplateEditingDirective, i116.ReactiveEditingDirective, i117.InCellEditingDirective, i118.ExpandDetailsDirective, i119.ExpandGroupDirective, i120.GroupBindingDirective, i121.GridMarqueeDirective, i122.GridSpacerComponent, i123.GridToolbarFocusableDirective, i124.StatusBarComponent, i125.StatusBarTemplateDirective, i126.GridClipboardDirective, i45.ToolBarComponent, i45.ToolbarCustomMessagesComponent, i45.ToolBarButtonComponent, i45.ToolBarButtonGroupComponent, i45.ToolBarDropDownButtonComponent, i45.ToolBarSeparatorComponent, i45.ToolBarSpacerComponent, i45.ToolBarSplitButtonComponent, i45.ToolBarToolComponent, TableDirective], exports: [i107.GridComponent, i113.ToolbarTemplateDirective, i109.ToolbarComponent, i122.GridSpacerComponent, i125.StatusBarTemplateDirective, i112.DataBindingDirective, i114.SelectionDirective, i111.CustomMessagesComponent, i120.GroupBindingDirective, i115.TemplateEditingDirective, i116.ReactiveEditingDirective, i117.InCellEditingDirective, i118.ExpandDetailsDirective, i119.ExpandGroupDirective, i123.GridToolbarFocusableDirective, i1.GroupHeaderTemplateDirective, i2.GroupHeaderColumnTemplateDirective, i3.GroupFooterTemplateDirective, i4.GroupHeaderComponent, i5.GroupPanelComponent, i6.ColumnComponent, i7.ColumnGroupComponent, i8.LogicalCellDirective, i9.LogicalRowDirective, i10.FocusableDirective, i11.FooterTemplateDirective, i12.ColGroupComponent, i13.ResizableContainerDirective, i14.TemplateContextDirective, i15.FieldAccessorPipe, i16.DetailTemplateDirective, i17.SpanColumnComponent, i18.LoadingComponent, i19.GridTableDirective, i20.CommandColumnComponent, i21.CheckboxColumnComponent, i22.SelectionCheckboxDirective, i23.CellTemplateDirective, i24.EditTemplateDirective, i25.RowDragHandleTemplateDirective, i26.RowDragHintTemplateDirective, i27.TableBodyComponent, i28.NoRecordsTemplateDirective, i29.CellComponent, i30.EditCommandDirective, i31.CancelCommandDirective, i32.SaveCommandDirective, i33.RemoveCommandDirective, i34.AddCommandDirective, i35.AddCommandToolbarDirective, i36.CellLoadingTemplateDirective, i37.LoadingTemplateDirective, i38.RowReorderColumnComponent, i39.HeaderComponent, i40.HeaderTemplateDirective, i41.ColumnHandleDirective, i42.SelectAllCheckboxDirective, i46.FilterRowComponent, i47.FilterCellComponent, i48.FilterCellTemplateDirective, i49.StringFilterCellComponent, i50.NumericFilterCellComponent, i51.AutoCompleteFilterCellComponent, i52.BooleanFilterCellComponent, i53.FilterCellHostDirective, i54.FilterCellWrapperComponent, i55.DateFilterCellComponent, i56.FilterCellOperatorsComponent, i57.ContainsFilterOperatorComponent, i58.DoesNotContainFilterOperatorComponent, i59.EndsWithFilterOperatorComponent, i60.EqualFilterOperatorComponent, i61.IsEmptyFilterOperatorComponent, i62.IsNotEmptyFilterOperatorComponent, i63.IsNotNullFilterOperatorComponent, i64.IsNullFilterOperatorComponent, i65.NotEqualFilterOperatorComponent, i66.StartsWithFilterOperatorComponent, i67.GreaterFilterOperatorComponent, i68.GreaterOrEqualToFilterOperatorComponent, i69.LessFilterOperatorComponent, i70.LessOrEqualToFilterOperatorComponent, i71.AfterFilterOperatorComponent, i72.AfterEqFilterOperatorComponent, i73.BeforeEqFilterOperatorComponent, i74.BeforeFilterOperatorComponent, i76.FilterMenuComponent, i77.FilterMenuContainerComponent, i78.FilterMenuInputWrapperComponent, i79.StringFilterMenuInputComponent, i80.StringFilterMenuComponent, i81.FilterMenuTemplateDirective, i82.NumericFilterMenuComponent, i83.NumericFilterMenuInputComponent, i84.DateFilterMenuInputComponent, i85.DateFilterMenuComponent, i86.FilterMenuHostDirective, i87.BooleanFilterMenuComponent, i88.FilterMenuDropDownListDirective, i89.BooleanFilterRadioButtonDirective, i92.ColumnChooserComponent, i94.ColumnMenuFilterComponent, i95.ColumnMenuItemComponent, i96.ColumnMenuItemContentTemplateDirective, i97.ColumnMenuSortComponent, i99.ColumnMenuLockComponent, i103.ColumnMenuStickComponent, i104.ColumnMenuPositionComponent, i93.ColumnMenuChooserComponent, i100.ColumnMenuTemplateDirective, i101.ColumnMenuContainerComponent, i102.ColumnMenuItemDirective, i98.ColumnMenuComponent, i105.ColumnMenuAutoSizeColumnComponent, i106.ColumnMenuAutoSizeAllColumnsComponent, i126.GridClipboardDirective, i45.ToolBarComponent, i45.ToolbarCustomMessagesComponent, i45.ToolBarButtonComponent, i45.ToolBarButtonGroupComponent, i45.ToolBarDropDownButtonComponent, i45.ToolBarSeparatorComponent, i45.ToolBarSpacerComponent, i45.ToolBarSplitButtonComponent, i45.ToolBarToolComponent, i44.CustomMessagesComponent, i44.PagerFocusableDirective, i44.PagerInfoComponent, i44.PagerInputComponent, i44.PagerNextButtonsComponent, i44.PagerNumericButtonsComponent, i44.PagerPageSizesComponent, i44.PagerPrevButtonsComponent, i44.PagerTemplateDirective, i44.PagerComponent, i44.PagerSpacerComponent] });
170
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: GridModule, imports: [i1.GroupHeaderTemplateDirective, i2.GroupHeaderColumnTemplateDirective, i3.GroupFooterTemplateDirective, i4.GroupHeaderComponent, i5.GroupPanelComponent, i6.ColumnComponent, i7.ColumnGroupComponent, i8.LogicalCellDirective, i9.LogicalRowDirective, i10.FocusableDirective, i11.FooterTemplateDirective, i12.ColGroupComponent, i13.ResizableContainerDirective, i14.TemplateContextDirective, i15.FieldAccessorPipe, i16.DetailTemplateDirective, i17.SpanColumnComponent, i18.LoadingComponent, i19.GridTableDirective, i20.CommandColumnComponent, i21.CheckboxColumnComponent, i22.SelectionCheckboxDirective, i23.CellTemplateDirective, i24.EditTemplateDirective, i25.RowDragHandleTemplateDirective, i26.RowDragHintTemplateDirective, i27.TableBodyComponent, i28.NoRecordsTemplateDirective, i29.CellComponent, i30.EditCommandDirective, i31.CancelCommandDirective, i32.SaveCommandDirective, i33.RemoveCommandDirective, i34.AddCommandDirective, i35.AddCommandToolbarDirective, i36.CellLoadingTemplateDirective, i37.LoadingTemplateDirective, i38.RowReorderColumnComponent, i39.HeaderComponent, i40.HeaderTemplateDirective, i41.ColumnHandleDirective, i42.SelectAllCheckboxDirective, i43.FooterComponent, i44.CustomMessagesComponent, i44.PagerFocusableDirective, i44.PagerInfoComponent, i44.PagerInputComponent, i44.PagerNextButtonsComponent, i44.PagerNumericButtonsComponent, i44.PagerPageSizesComponent, i44.PagerPrevButtonsComponent, i44.PagerTemplateDirective, i44.PagerComponent, i44.PagerSpacerComponent, i45.ToolBarComponent, i45.ToolbarCustomMessagesComponent, i45.ToolBarButtonComponent, i45.ToolBarButtonGroupComponent, i45.ToolBarDropDownButtonComponent, i45.ToolBarSeparatorComponent, i45.ToolBarSpacerComponent, i45.ToolBarSplitButtonComponent, i45.ToolBarToolComponent, i46.FilterRowComponent, i47.FilterCellComponent, i48.FilterCellTemplateDirective, i49.StringFilterCellComponent, i50.NumericFilterCellComponent, i51.AutoCompleteFilterCellComponent, i52.BooleanFilterCellComponent, i53.FilterCellHostDirective, i54.FilterCellWrapperComponent, i55.DateFilterCellComponent, i6.ColumnComponent, i7.ColumnGroupComponent, i8.LogicalCellDirective, i9.LogicalRowDirective, i10.FocusableDirective, i11.FooterTemplateDirective, i12.ColGroupComponent, i13.ResizableContainerDirective, i14.TemplateContextDirective, i15.FieldAccessorPipe, i16.DetailTemplateDirective, i17.SpanColumnComponent, i18.LoadingComponent, i19.GridTableDirective, i56.FilterCellOperatorsComponent, i57.ContainsFilterOperatorComponent, i58.DoesNotContainFilterOperatorComponent, i59.EndsWithFilterOperatorComponent, i60.EqualFilterOperatorComponent, i61.IsEmptyFilterOperatorComponent, i62.IsNotEmptyFilterOperatorComponent, i63.IsNotNullFilterOperatorComponent, i64.IsNullFilterOperatorComponent, i65.NotEqualFilterOperatorComponent, i66.StartsWithFilterOperatorComponent, i67.GreaterFilterOperatorComponent, i68.GreaterOrEqualToFilterOperatorComponent, i69.LessFilterOperatorComponent, i70.LessOrEqualToFilterOperatorComponent, i71.AfterFilterOperatorComponent, i72.AfterEqFilterOperatorComponent, i73.BeforeEqFilterOperatorComponent, i74.BeforeFilterOperatorComponent, i75.FilterInputDirective, i6.ColumnComponent, i7.ColumnGroupComponent, i8.LogicalCellDirective, i9.LogicalRowDirective, i10.FocusableDirective, i11.FooterTemplateDirective, i12.ColGroupComponent, i13.ResizableContainerDirective, i14.TemplateContextDirective, i15.FieldAccessorPipe, i16.DetailTemplateDirective, i17.SpanColumnComponent, i18.LoadingComponent, i19.GridTableDirective, i56.FilterCellOperatorsComponent, i57.ContainsFilterOperatorComponent, i58.DoesNotContainFilterOperatorComponent, i59.EndsWithFilterOperatorComponent, i60.EqualFilterOperatorComponent, i61.IsEmptyFilterOperatorComponent, i62.IsNotEmptyFilterOperatorComponent, i63.IsNotNullFilterOperatorComponent, i64.IsNullFilterOperatorComponent, i65.NotEqualFilterOperatorComponent, i66.StartsWithFilterOperatorComponent, i67.GreaterFilterOperatorComponent, i68.GreaterOrEqualToFilterOperatorComponent, i69.LessFilterOperatorComponent, i70.LessOrEqualToFilterOperatorComponent, i71.AfterFilterOperatorComponent, i72.AfterEqFilterOperatorComponent, i73.BeforeEqFilterOperatorComponent, i74.BeforeFilterOperatorComponent, i75.FilterInputDirective, i76.FilterMenuComponent, i77.FilterMenuContainerComponent, i78.FilterMenuInputWrapperComponent, i79.StringFilterMenuInputComponent, i80.StringFilterMenuComponent, i81.FilterMenuTemplateDirective, i82.NumericFilterMenuComponent, i83.NumericFilterMenuInputComponent, i84.DateFilterMenuInputComponent, i85.DateFilterMenuComponent, i86.FilterMenuHostDirective, i87.BooleanFilterMenuComponent, i88.FilterMenuDropDownListDirective, i89.BooleanFilterRadioButtonDirective, i90.ColumnMenuChooserItemCheckedDirective, i91.ColumnListComponent, i92.ColumnChooserComponent, i93.ColumnMenuChooserComponent, i94.ColumnMenuFilterComponent, i95.ColumnMenuItemComponent, i96.ColumnMenuItemContentTemplateDirective, i97.ColumnMenuSortComponent, i98.ColumnMenuComponent, i99.ColumnMenuLockComponent, i100.ColumnMenuTemplateDirective, i101.ColumnMenuContainerComponent, i102.ColumnMenuItemDirective, i103.ColumnMenuStickComponent, i104.ColumnMenuPositionComponent, i105.ColumnMenuAutoSizeColumnComponent, i106.ColumnMenuAutoSizeAllColumnsComponent, i107.GridComponent, i108.ListComponent, i109.ToolbarComponent, i110.LocalizedMessagesDirective, i111.CustomMessagesComponent, i112.DataBindingDirective, i113.ToolbarTemplateDirective, i114.SelectionDirective, i115.TemplateEditingDirective, i116.ReactiveEditingDirective, i117.InCellEditingDirective, i118.ExternalEditingDirective, i119.ExpandDetailsDirective, i120.ExpandGroupDirective, i121.GroupBindingDirective, i122.GridMarqueeDirective, i123.GridSpacerComponent, i124.GridToolbarFocusableDirective, i125.StatusBarComponent, i126.StatusBarTemplateDirective, i127.GridClipboardDirective, i128.FormComponent, i129.DialogFormComponent, i130.FormFormFieldComponent, i45.ToolBarComponent, i45.ToolbarCustomMessagesComponent, i45.ToolBarButtonComponent, i45.ToolBarButtonGroupComponent, i45.ToolBarDropDownButtonComponent, i45.ToolBarSeparatorComponent, i45.ToolBarSpacerComponent, i45.ToolBarSplitButtonComponent, i45.ToolBarToolComponent, TableDirective], exports: [i107.GridComponent, i113.ToolbarTemplateDirective, i109.ToolbarComponent, i123.GridSpacerComponent, i126.StatusBarTemplateDirective, i112.DataBindingDirective, i114.SelectionDirective, i111.CustomMessagesComponent, i121.GroupBindingDirective, i115.TemplateEditingDirective, i116.ReactiveEditingDirective, i117.InCellEditingDirective, i118.ExternalEditingDirective, i119.ExpandDetailsDirective, i120.ExpandGroupDirective, i124.GridToolbarFocusableDirective, i1.GroupHeaderTemplateDirective, i2.GroupHeaderColumnTemplateDirective, i3.GroupFooterTemplateDirective, i4.GroupHeaderComponent, i5.GroupPanelComponent, i6.ColumnComponent, i7.ColumnGroupComponent, i8.LogicalCellDirective, i9.LogicalRowDirective, i10.FocusableDirective, i11.FooterTemplateDirective, i12.ColGroupComponent, i13.ResizableContainerDirective, i14.TemplateContextDirective, i15.FieldAccessorPipe, i16.DetailTemplateDirective, i17.SpanColumnComponent, i18.LoadingComponent, i19.GridTableDirective, i20.CommandColumnComponent, i21.CheckboxColumnComponent, i22.SelectionCheckboxDirective, i23.CellTemplateDirective, i24.EditTemplateDirective, i25.RowDragHandleTemplateDirective, i26.RowDragHintTemplateDirective, i27.TableBodyComponent, i28.NoRecordsTemplateDirective, i29.CellComponent, i30.EditCommandDirective, i31.CancelCommandDirective, i32.SaveCommandDirective, i33.RemoveCommandDirective, i34.AddCommandDirective, i35.AddCommandToolbarDirective, i36.CellLoadingTemplateDirective, i37.LoadingTemplateDirective, i38.RowReorderColumnComponent, i39.HeaderComponent, i40.HeaderTemplateDirective, i41.ColumnHandleDirective, i42.SelectAllCheckboxDirective, i46.FilterRowComponent, i47.FilterCellComponent, i48.FilterCellTemplateDirective, i49.StringFilterCellComponent, i50.NumericFilterCellComponent, i51.AutoCompleteFilterCellComponent, i52.BooleanFilterCellComponent, i53.FilterCellHostDirective, i54.FilterCellWrapperComponent, i55.DateFilterCellComponent, i56.FilterCellOperatorsComponent, i57.ContainsFilterOperatorComponent, i58.DoesNotContainFilterOperatorComponent, i59.EndsWithFilterOperatorComponent, i60.EqualFilterOperatorComponent, i61.IsEmptyFilterOperatorComponent, i62.IsNotEmptyFilterOperatorComponent, i63.IsNotNullFilterOperatorComponent, i64.IsNullFilterOperatorComponent, i65.NotEqualFilterOperatorComponent, i66.StartsWithFilterOperatorComponent, i67.GreaterFilterOperatorComponent, i68.GreaterOrEqualToFilterOperatorComponent, i69.LessFilterOperatorComponent, i70.LessOrEqualToFilterOperatorComponent, i71.AfterFilterOperatorComponent, i72.AfterEqFilterOperatorComponent, i73.BeforeEqFilterOperatorComponent, i74.BeforeFilterOperatorComponent, i76.FilterMenuComponent, i77.FilterMenuContainerComponent, i78.FilterMenuInputWrapperComponent, i79.StringFilterMenuInputComponent, i80.StringFilterMenuComponent, i81.FilterMenuTemplateDirective, i82.NumericFilterMenuComponent, i83.NumericFilterMenuInputComponent, i84.DateFilterMenuInputComponent, i85.DateFilterMenuComponent, i86.FilterMenuHostDirective, i87.BooleanFilterMenuComponent, i88.FilterMenuDropDownListDirective, i89.BooleanFilterRadioButtonDirective, i92.ColumnChooserComponent, i94.ColumnMenuFilterComponent, i95.ColumnMenuItemComponent, i96.ColumnMenuItemContentTemplateDirective, i97.ColumnMenuSortComponent, i99.ColumnMenuLockComponent, i103.ColumnMenuStickComponent, i104.ColumnMenuPositionComponent, i93.ColumnMenuChooserComponent, i100.ColumnMenuTemplateDirective, i101.ColumnMenuContainerComponent, i102.ColumnMenuItemDirective, i98.ColumnMenuComponent, i105.ColumnMenuAutoSizeColumnComponent, i106.ColumnMenuAutoSizeAllColumnsComponent, i127.GridClipboardDirective, i45.ToolBarComponent, i45.ToolbarCustomMessagesComponent, i45.ToolBarButtonComponent, i45.ToolBarButtonGroupComponent, i45.ToolBarDropDownButtonComponent, i45.ToolBarSeparatorComponent, i45.ToolBarSpacerComponent, i45.ToolBarSplitButtonComponent, i45.ToolBarToolComponent, i44.CustomMessagesComponent, i44.PagerFocusableDirective, i44.PagerInfoComponent, i44.PagerInputComponent, i44.PagerNextButtonsComponent, i44.PagerNumericButtonsComponent, i44.PagerPageSizesComponent, i44.PagerPrevButtonsComponent, i44.PagerTemplateDirective, i44.PagerComponent, i44.PagerSpacerComponent] });
167
171
  static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GridModule, providers: [
168
172
  PopupService,
169
173
  ResizeBatchService,
@@ -178,7 +182,7 @@ export class GridModule {
178
182
  MonthViewService,
179
183
  YearViewService,
180
184
  NavigationService
181
- ], imports: [i4.GroupHeaderComponent, i5.GroupPanelComponent, i27.TableBodyComponent, i29.CellComponent, i30.EditCommandDirective, i31.CancelCommandDirective, i32.SaveCommandDirective, i33.RemoveCommandDirective, i34.AddCommandDirective, i39.HeaderComponent, i44.CustomMessagesComponent, i44.PagerInfoComponent, i44.PagerInputComponent, i44.PagerNextButtonsComponent, i44.PagerNumericButtonsComponent, i44.PagerPageSizesComponent, i44.PagerPrevButtonsComponent, i44.PagerComponent, i44.PagerSpacerComponent, i45.ToolBarComponent, i45.ToolbarCustomMessagesComponent, i45.ToolBarButtonComponent, i45.ToolBarButtonGroupComponent, i45.ToolBarDropDownButtonComponent, i45.ToolBarSeparatorComponent, i45.ToolBarSpacerComponent, i45.ToolBarSplitButtonComponent, i49.StringFilterCellComponent, i50.NumericFilterCellComponent, i51.AutoCompleteFilterCellComponent, i52.BooleanFilterCellComponent, i54.FilterCellWrapperComponent, i55.DateFilterCellComponent, i56.FilterCellOperatorsComponent, i56.FilterCellOperatorsComponent, i76.FilterMenuComponent, i77.FilterMenuContainerComponent, i78.FilterMenuInputWrapperComponent, i79.StringFilterMenuInputComponent, i80.StringFilterMenuComponent, i82.NumericFilterMenuComponent, i83.NumericFilterMenuInputComponent, i84.DateFilterMenuInputComponent, i85.DateFilterMenuComponent, i87.BooleanFilterMenuComponent, i91.ColumnListComponent, i92.ColumnChooserComponent, i93.ColumnMenuChooserComponent, i94.ColumnMenuFilterComponent, i95.ColumnMenuItemComponent, i97.ColumnMenuSortComponent, i98.ColumnMenuComponent, i99.ColumnMenuLockComponent, i103.ColumnMenuStickComponent, i104.ColumnMenuPositionComponent, i105.ColumnMenuAutoSizeColumnComponent, i106.ColumnMenuAutoSizeAllColumnsComponent, i107.GridComponent, i108.ListComponent, i45.ToolBarComponent, i45.ToolbarCustomMessagesComponent, i45.ToolBarButtonComponent, i45.ToolBarButtonGroupComponent, i45.ToolBarDropDownButtonComponent, i45.ToolBarSeparatorComponent, i45.ToolBarSpacerComponent, i45.ToolBarSplitButtonComponent] });
185
+ ], imports: [i4.GroupHeaderComponent, i5.GroupPanelComponent, i27.TableBodyComponent, i29.CellComponent, i30.EditCommandDirective, i31.CancelCommandDirective, i32.SaveCommandDirective, i33.RemoveCommandDirective, i34.AddCommandDirective, i39.HeaderComponent, i44.CustomMessagesComponent, i44.PagerInfoComponent, i44.PagerInputComponent, i44.PagerNextButtonsComponent, i44.PagerNumericButtonsComponent, i44.PagerPageSizesComponent, i44.PagerPrevButtonsComponent, i44.PagerComponent, i44.PagerSpacerComponent, i45.ToolBarComponent, i45.ToolbarCustomMessagesComponent, i45.ToolBarButtonComponent, i45.ToolBarButtonGroupComponent, i45.ToolBarDropDownButtonComponent, i45.ToolBarSeparatorComponent, i45.ToolBarSpacerComponent, i45.ToolBarSplitButtonComponent, i49.StringFilterCellComponent, i50.NumericFilterCellComponent, i51.AutoCompleteFilterCellComponent, i52.BooleanFilterCellComponent, i54.FilterCellWrapperComponent, i55.DateFilterCellComponent, i56.FilterCellOperatorsComponent, i56.FilterCellOperatorsComponent, i76.FilterMenuComponent, i77.FilterMenuContainerComponent, i78.FilterMenuInputWrapperComponent, i79.StringFilterMenuInputComponent, i80.StringFilterMenuComponent, i82.NumericFilterMenuComponent, i83.NumericFilterMenuInputComponent, i84.DateFilterMenuInputComponent, i85.DateFilterMenuComponent, i87.BooleanFilterMenuComponent, i91.ColumnListComponent, i92.ColumnChooserComponent, i93.ColumnMenuChooserComponent, i94.ColumnMenuFilterComponent, i95.ColumnMenuItemComponent, i97.ColumnMenuSortComponent, i98.ColumnMenuComponent, i99.ColumnMenuLockComponent, i103.ColumnMenuStickComponent, i104.ColumnMenuPositionComponent, i105.ColumnMenuAutoSizeColumnComponent, i106.ColumnMenuAutoSizeAllColumnsComponent, i107.GridComponent, i108.ListComponent, i128.FormComponent, i129.DialogFormComponent, i130.FormFormFieldComponent, i45.ToolBarComponent, i45.ToolbarCustomMessagesComponent, i45.ToolBarButtonComponent, i45.ToolBarButtonGroupComponent, i45.ToolBarDropDownButtonComponent, i45.ToolBarSeparatorComponent, i45.ToolBarSpacerComponent, i45.ToolBarSplitButtonComponent] });
182
186
  }
183
187
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GridModule, decorators: [{
184
188
  type: NgModule,
package/esm2022/index.mjs CHANGED
@@ -102,6 +102,7 @@ export { LessFilterOperatorComponent } from './filtering/operators/lt-filter-ope
102
102
  export * from './filtering/filterable';
103
103
  export { TemplateEditingDirective } from './editing-directives/template-editing.directive';
104
104
  export { ReactiveEditingDirective } from './editing-directives/reactive-editing.directive';
105
+ export { ExternalEditingDirective } from './editing-directives/external-editing.directive';
105
106
  export { InCellEditingDirective } from './editing-directives/in-cell-editing.directive';
106
107
  export { EditTemplateDirective } from './editing/edit-template.directive';
107
108
  //Workaround for angular/angular#11889
@@ -411,8 +411,53 @@ export class GridMessages extends ComponentMessages {
411
411
  * The text for the Group pane Chip Menu Move as next item.
412
412
  */
413
413
  groupChipMenuNext;
414
+ /**
415
+ * The default text of a form validation error when using the built-in external editing.
416
+ * <br/><br/>
417
+ * The text consists of a three-part message&mdash;the name of the data item property the respective Grid column is bound to,
418
+ * the name of the error, coming from the respective `FormControl` object, and a localizable string.
419
+ * <br/><br/>
420
+ * For a field named `ProductName`, and an error named `required`, the default error text will be `ProductName has required validation error`.
421
+ * <br/><br/>
422
+ * To customize the default text of the form validation error, use the `{errorName}` and `{fieldName}` placeholders and a custom localizable string.
423
+ * For example, `{errorName} detected for {fieldName} field`.
424
+ * <br/><br/>
425
+ * The `{errorName}` and `{fieldName}` placeholders will be replaced internally with the field and error names for the respective invalid form control,
426
+ * and the resulting error message will be rendered as `required error detected for ProductName field`.
427
+ * [See example](slug:globalization_grid#toc-custom-messages).
428
+ *
429
+ */
430
+ formValidationErrorText;
431
+ /**
432
+ * The title of the remove item confirmation Dialog.
433
+ */
434
+ removeConfirmationDialogTitle;
435
+ /**
436
+ * The content of the remove item confirmation Dialog.
437
+ */
438
+ removeConfirmationDialogContent;
439
+ /**
440
+ * The text of the confirm action button in the remove confirmation Dialog.
441
+ */
442
+ removeConfirmationDialogConfirmText;
443
+ /**
444
+ * The text of the reject action button in the remove confirmation Dialog.
445
+ */
446
+ removeConfirmationDialogRejectText;
447
+ /**
448
+ * The title of the external editing Dialog.
449
+ */
450
+ externalEditingTitle;
451
+ /**
452
+ * The text of the external editing Dialog <b>Save</b> button.
453
+ */
454
+ externalEditingSaveText;
455
+ /**
456
+ * The text of the external editing Dialog <b>Cancel</b> button.
457
+ */
458
+ externalEditingCancelText;
414
459
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GridMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });
415
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: GridMessages, selector: "kendo-grid-messages-base", inputs: { groupPanelEmpty: "groupPanelEmpty", noRecords: "noRecords", pagerLabel: "pagerLabel", pagerFirstPage: "pagerFirstPage", pagerLastPage: "pagerLastPage", pagerPreviousPage: "pagerPreviousPage", pagerNextPage: "pagerNextPage", pagerPage: "pagerPage", pagerItemsPerPage: "pagerItemsPerPage", pagerOf: "pagerOf", pagerItems: "pagerItems", pagerPageNumberInputTitle: "pagerPageNumberInputTitle", pagerInputLabel: "pagerInputLabel", pagerSelectPage: "pagerSelectPage", filter: "filter", filterInputLabel: "filterInputLabel", filterMenuTitle: "filterMenuTitle", filterMenuOperatorsDropDownLabel: "filterMenuOperatorsDropDownLabel", filterMenuLogicDropDownLabel: "filterMenuLogicDropDownLabel", filterCellOperatorLabel: "filterCellOperatorLabel", booleanFilterCellLabel: "booleanFilterCellLabel", filterEqOperator: "filterEqOperator", filterNotEqOperator: "filterNotEqOperator", filterIsNullOperator: "filterIsNullOperator", filterIsNotNullOperator: "filterIsNotNullOperator", filterIsEmptyOperator: "filterIsEmptyOperator", filterIsNotEmptyOperator: "filterIsNotEmptyOperator", filterStartsWithOperator: "filterStartsWithOperator", filterContainsOperator: "filterContainsOperator", filterNotContainsOperator: "filterNotContainsOperator", filterEndsWithOperator: "filterEndsWithOperator", filterGteOperator: "filterGteOperator", filterGtOperator: "filterGtOperator", filterLteOperator: "filterLteOperator", filterLtOperator: "filterLtOperator", filterIsTrue: "filterIsTrue", filterIsFalse: "filterIsFalse", filterBooleanAll: "filterBooleanAll", filterAfterOrEqualOperator: "filterAfterOrEqualOperator", filterAfterOperator: "filterAfterOperator", filterBeforeOperator: "filterBeforeOperator", filterBeforeOrEqualOperator: "filterBeforeOrEqualOperator", filterFilterButton: "filterFilterButton", filterClearButton: "filterClearButton", filterAndLogic: "filterAndLogic", filterOrLogic: "filterOrLogic", loading: "loading", gridLabel: "gridLabel", columnMenu: "columnMenu", setColumnPosition: "setColumnPosition", columns: "columns", lock: "lock", unlock: "unlock", stick: "stick", unstick: "unstick", sortable: "sortable", sortAscending: "sortAscending", sortDescending: "sortDescending", autosizeThisColumn: "autosizeThisColumn", autosizeAllColumns: "autosizeAllColumns", sortedAscending: "sortedAscending", sortedDescending: "sortedDescending", sortedDefault: "sortedDefault", columnsApply: "columnsApply", columnsReset: "columnsReset", detailExpand: "detailExpand", detailCollapse: "detailCollapse", filterDateToday: "filterDateToday", filterDateToggle: "filterDateToggle", filterNumericDecrement: "filterNumericDecrement", filterNumericIncrement: "filterNumericIncrement", selectionCheckboxLabel: "selectionCheckboxLabel", selectAllCheckboxLabel: "selectAllCheckboxLabel", groupCollapse: "groupCollapse", groupExpand: "groupExpand", topToolbarLabel: "topToolbarLabel", bottomToolbarLabel: "bottomToolbarLabel", groupPanelLabel: "groupPanelLabel", dragRowHandleLabel: "dragRowHandleLabel", columnMenuFilterTabTitle: "columnMenuFilterTabTitle", columnMenuGeneralTabTitle: "columnMenuGeneralTabTitle", columnMenuColumnsTabTitle: "columnMenuColumnsTabTitle", groupChipMenuPrevious: "groupChipMenuPrevious", groupChipMenuNext: "groupChipMenuNext" }, usesInheritance: true, ngImport: i0 });
460
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: GridMessages, selector: "kendo-grid-messages-base", inputs: { groupPanelEmpty: "groupPanelEmpty", noRecords: "noRecords", pagerLabel: "pagerLabel", pagerFirstPage: "pagerFirstPage", pagerLastPage: "pagerLastPage", pagerPreviousPage: "pagerPreviousPage", pagerNextPage: "pagerNextPage", pagerPage: "pagerPage", pagerItemsPerPage: "pagerItemsPerPage", pagerOf: "pagerOf", pagerItems: "pagerItems", pagerPageNumberInputTitle: "pagerPageNumberInputTitle", pagerInputLabel: "pagerInputLabel", pagerSelectPage: "pagerSelectPage", filter: "filter", filterInputLabel: "filterInputLabel", filterMenuTitle: "filterMenuTitle", filterMenuOperatorsDropDownLabel: "filterMenuOperatorsDropDownLabel", filterMenuLogicDropDownLabel: "filterMenuLogicDropDownLabel", filterCellOperatorLabel: "filterCellOperatorLabel", booleanFilterCellLabel: "booleanFilterCellLabel", filterEqOperator: "filterEqOperator", filterNotEqOperator: "filterNotEqOperator", filterIsNullOperator: "filterIsNullOperator", filterIsNotNullOperator: "filterIsNotNullOperator", filterIsEmptyOperator: "filterIsEmptyOperator", filterIsNotEmptyOperator: "filterIsNotEmptyOperator", filterStartsWithOperator: "filterStartsWithOperator", filterContainsOperator: "filterContainsOperator", filterNotContainsOperator: "filterNotContainsOperator", filterEndsWithOperator: "filterEndsWithOperator", filterGteOperator: "filterGteOperator", filterGtOperator: "filterGtOperator", filterLteOperator: "filterLteOperator", filterLtOperator: "filterLtOperator", filterIsTrue: "filterIsTrue", filterIsFalse: "filterIsFalse", filterBooleanAll: "filterBooleanAll", filterAfterOrEqualOperator: "filterAfterOrEqualOperator", filterAfterOperator: "filterAfterOperator", filterBeforeOperator: "filterBeforeOperator", filterBeforeOrEqualOperator: "filterBeforeOrEqualOperator", filterFilterButton: "filterFilterButton", filterClearButton: "filterClearButton", filterAndLogic: "filterAndLogic", filterOrLogic: "filterOrLogic", loading: "loading", gridLabel: "gridLabel", columnMenu: "columnMenu", setColumnPosition: "setColumnPosition", columns: "columns", lock: "lock", unlock: "unlock", stick: "stick", unstick: "unstick", sortable: "sortable", sortAscending: "sortAscending", sortDescending: "sortDescending", autosizeThisColumn: "autosizeThisColumn", autosizeAllColumns: "autosizeAllColumns", sortedAscending: "sortedAscending", sortedDescending: "sortedDescending", sortedDefault: "sortedDefault", columnsApply: "columnsApply", columnsReset: "columnsReset", detailExpand: "detailExpand", detailCollapse: "detailCollapse", filterDateToday: "filterDateToday", filterDateToggle: "filterDateToggle", filterNumericDecrement: "filterNumericDecrement", filterNumericIncrement: "filterNumericIncrement", selectionCheckboxLabel: "selectionCheckboxLabel", selectAllCheckboxLabel: "selectAllCheckboxLabel", groupCollapse: "groupCollapse", groupExpand: "groupExpand", topToolbarLabel: "topToolbarLabel", bottomToolbarLabel: "bottomToolbarLabel", groupPanelLabel: "groupPanelLabel", dragRowHandleLabel: "dragRowHandleLabel", columnMenuFilterTabTitle: "columnMenuFilterTabTitle", columnMenuGeneralTabTitle: "columnMenuGeneralTabTitle", columnMenuColumnsTabTitle: "columnMenuColumnsTabTitle", groupChipMenuPrevious: "groupChipMenuPrevious", groupChipMenuNext: "groupChipMenuNext", formValidationErrorText: "formValidationErrorText", removeConfirmationDialogTitle: "removeConfirmationDialogTitle", removeConfirmationDialogContent: "removeConfirmationDialogContent", removeConfirmationDialogConfirmText: "removeConfirmationDialogConfirmText", removeConfirmationDialogRejectText: "removeConfirmationDialogRejectText", externalEditingTitle: "externalEditingTitle", externalEditingSaveText: "externalEditingSaveText", externalEditingCancelText: "externalEditingCancelText" }, usesInheritance: true, ngImport: i0 });
416
461
  }
417
462
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GridMessages, decorators: [{
418
463
  type: Directive,
@@ -588,4 +633,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
588
633
  type: Input
589
634
  }], groupChipMenuNext: [{
590
635
  type: Input
636
+ }], formValidationErrorText: [{
637
+ type: Input
638
+ }], removeConfirmationDialogTitle: [{
639
+ type: Input
640
+ }], removeConfirmationDialogContent: [{
641
+ type: Input
642
+ }], removeConfirmationDialogConfirmText: [{
643
+ type: Input
644
+ }], removeConfirmationDialogRejectText: [{
645
+ type: Input
646
+ }], externalEditingTitle: [{
647
+ type: Input
648
+ }], externalEditingSaveText: [{
649
+ type: Input
650
+ }], externalEditingCancelText: [{
651
+ type: Input
591
652
  }] } });
@@ -171,6 +171,8 @@ export class NavigationService {
171
171
  tableIsNavigable = false;
172
172
  toolbarIsNavigable = false;
173
173
  lastCellRowIndex;
174
+ isShiftPressed = false;
175
+ currentSelection = [];
174
176
  get activeDataRow() {
175
177
  return Math.max(0, this.activeRowIndex - this.meta.headerRows);
176
178
  }
@@ -215,6 +217,10 @@ export class NavigationService {
215
217
  .subscribe(() => this.cursor.reset(0, 0)));
216
218
  this.subs.add(this.domEvents.keydown
217
219
  .subscribe(args => this.onKeydown(args)));
220
+ this.subs.add(this.domEvents.shiftKeyup
221
+ .subscribe(() => {
222
+ this.isShiftPressed = false;
223
+ }));
218
224
  this.subs.add(this.domEvents.keydown.pipe(filter(args => args.keyCode === Keys.Tab && this.mode === 2 /* NavigationMode.Content */), switchMapTo(this.domEvents.focusOut.pipe(takeUntil(
219
225
  // Timeout if focusOut doesn't fire very soon
220
226
  interval(0).pipe(take(1))))))
@@ -452,12 +458,23 @@ export class NavigationService {
452
458
  let step = modifier ? 5 : 1;
453
459
  const rowspan = +args.target?.getAttribute('rowspan');
454
460
  let rowspanOffset = 0;
461
+ let startNewSelection = false;
462
+ const allowMultipleRanges = (this.ctx.grid.selectionService.active && this.ctx.grid.selectableSettings?.multipleRanges) ||
463
+ (this.ctx.grid.cellSelectionService.active && this.ctx.grid.cellSelectionService?.options?.multipleRanges);
464
+ if (!allowMultipleRanges) {
465
+ this.currentSelection = [];
466
+ }
455
467
  if (!this.onCellKeydown(args)) {
456
468
  return;
457
469
  }
458
470
  const row = this.cursor.row;
459
471
  const dir = args.keyCode === Keys.ArrowDown ? 'Down' : 'Up';
460
472
  const right = args.keyCode === Keys.ArrowRight;
473
+ const isArrowKey = args.code === 'ArrowDown' || args.code === 'ArrowUp' || args.code === 'ArrowLeft' || args.code === 'ArrowRight';
474
+ if (!this.isShiftPressed && args.shiftKey && isArrowKey) {
475
+ startNewSelection = true;
476
+ this.isShiftPressed = true;
477
+ }
461
478
  switch (args.keyCode) {
462
479
  case Keys.ArrowDown:
463
480
  case Keys.ArrowUp:
@@ -470,9 +487,10 @@ export class NavigationService {
470
487
  return;
471
488
  }
472
489
  preventDefault = this.cursor[`move${dir}`](step);
490
+ const preserveCurrentSelection = startNewSelection && allowMultipleRanges;
473
491
  if (this.activeRow?.dataItem) {
474
492
  const sign = dir === 'Down' ? 1 : -1;
475
- this.handleVerticalArrowSelection(sign * step);
493
+ this.handleVerticalArrowSelection(sign * step, preserveCurrentSelection);
476
494
  }
477
495
  }
478
496
  else {
@@ -491,7 +509,8 @@ export class NavigationService {
491
509
  return;
492
510
  }
493
511
  preventDefault = this[`moveCursor${right ? 'Fwd' : 'Bwd'}`]();
494
- this.handleHorizontalArrowSelection(args);
512
+ const preserveCurrentSelection = startNewSelection && allowMultipleRanges;
513
+ this.handleHorizontalArrowSelection(args, preserveCurrentSelection);
495
514
  }
496
515
  else {
497
516
  preventDefault = this[`moveCursor${right ? 'Fwd' : 'Bwd'}`]();
@@ -694,7 +713,7 @@ export class NavigationService {
694
713
  this.leaveCell();
695
714
  this.cursor.reset();
696
715
  }
697
- handleVerticalArrowSelection(args) {
716
+ handleVerticalArrowSelection(args, preserveSelection) {
698
717
  const cellSelectionEnabled = this.ctx.grid.cellSelectionService.active;
699
718
  const rowSelectionEnabled = this.ctx.grid.selectionService.active && !this.ctx.grid.selectableSettings.checkboxOnly;
700
719
  if (cellSelectionEnabled || rowSelectionEnabled) {
@@ -704,14 +723,15 @@ export class NavigationService {
704
723
  const dataItem = selectionService.settings.view.at(rowIdx);
705
724
  const item = { index: this.activeRow.dataRowIndex, data: dataItem, column: this.ctx.grid.columnsContainer.leafColumnsToRender[colIdx] };
706
725
  if (selectionService.options.mode === 'multiple') {
707
- cellSelectionEnabled ? this.handleMultipleArrowCellSelection(item) : this.handleMultipleArrowRowSelection(item);
726
+ const startRowIndex = this.activeRow.dataRowIndex - args;
727
+ cellSelectionEnabled ? this.handleMultipleArrowCellSelection(item, preserveSelection, startRowIndex, colIdx) : this.handleMultipleArrowRowSelection(item, preserveSelection, startRowIndex);
708
728
  }
709
729
  else {
710
730
  selectionService.handleClick(item, args);
711
731
  }
712
732
  }
713
733
  }
714
- handleHorizontalArrowSelection(args) {
734
+ handleHorizontalArrowSelection(args, preserveSelection) {
715
735
  const cellSelectionEnabled = this.ctx.grid.cellSelectionService.active;
716
736
  if (cellSelectionEnabled) {
717
737
  const selectionService = this.ctx.grid[cellSelectionEnabled ? 'cellSelectionService' : 'selectionService'];
@@ -723,27 +743,37 @@ export class NavigationService {
723
743
  return;
724
744
  }
725
745
  if (selectionService.options.mode === 'multiple') {
726
- this.handleMultipleArrowCellSelection(item);
746
+ const startColumnIndex = args.key === 'ArrowRight' ? colIdx - 1 : colIdx + 1;
747
+ this.handleMultipleArrowCellSelection(item, preserveSelection, row.dataRowIndex, startColumnIndex);
727
748
  }
728
749
  else {
729
750
  selectionService.handleClick(item, args);
730
751
  }
731
752
  }
732
753
  }
733
- handleMultipleArrowCellSelection(item) {
754
+ handleMultipleArrowCellSelection(item, preserveSelection, startRow, startColumn) {
734
755
  const cellSelectionService = this.ctx.grid.cellSelectionService;
735
- const startRowIndex = Math.min(cellSelectionService.lastSelectionItemRowIndex, item.index);
736
- const startColIndex = Math.min(cellSelectionService.lastSelectionItemColIndex, item.column.leafIndex);
737
- const endRowIndex = Math.max(cellSelectionService.lastSelectionItemRowIndex, item.index);
738
- const endColIndex = Math.max(cellSelectionService.lastSelectionItemColIndex, item.column.leafIndex);
739
- const ev = cellSelectionService.selectRange(startRowIndex, startColIndex, endRowIndex, endColIndex);
756
+ const startRowIndex = preserveSelection ? startRow : Math.min(cellSelectionService.lastSelectionItemRowIndex, item.index);
757
+ const startColIndex = preserveSelection ? startColumn : Math.min(cellSelectionService.lastSelectionItemColIndex, item.column.leafIndex);
758
+ const endRowIndex = preserveSelection ? item.index : Math.max(cellSelectionService.lastSelectionItemRowIndex, item.index);
759
+ const endColIndex = preserveSelection ? item.column.leafIndex : Math.max(cellSelectionService.lastSelectionItemColIndex, item.column.leafIndex);
760
+ if (preserveSelection) {
761
+ cellSelectionService.lastSelectionItemRowIndex = startRow;
762
+ cellSelectionService.lastSelectionItemColIndex = startColumn;
763
+ this.currentSelection = cellSelectionService.currentSelection;
764
+ }
765
+ const ev = cellSelectionService.selectRange(startRowIndex, startColIndex, endRowIndex, endColIndex, preserveSelection, this.currentSelection);
740
766
  cellSelectionService.changes.emit(ev);
741
767
  }
742
- handleMultipleArrowRowSelection(item) {
768
+ handleMultipleArrowRowSelection(item, preserveSelection, startRow) {
743
769
  const rowSelectionService = this.ctx.grid.selectionService;
744
- const startRowIndex = Math.min(rowSelectionService.lastSelectionStartIndex, item.index);
745
- const endRowIndex = Math.max(rowSelectionService.lastSelectionStartIndex, item.index);
746
- const ev = rowSelectionService.selectRange(startRowIndex, endRowIndex);
770
+ const startRowIndex = preserveSelection ? startRow : Math.min(rowSelectionService.lastSelectionStartIndex, item.index);
771
+ const endRowIndex = preserveSelection ? item.index : Math.max(rowSelectionService.lastSelectionStartIndex, item.index);
772
+ if (preserveSelection) {
773
+ rowSelectionService.lastSelectionStartIndex = startRow;
774
+ this.currentSelection = rowSelectionService.currentSelection;
775
+ }
776
+ const ev = rowSelectionService.selectRange(startRowIndex, endRowIndex, preserveSelection, this.currentSelection);
747
777
  rowSelectionService.changes.emit(ev);
748
778
  }
749
779
  calculateRowspanOffset(direction, cellRowspan) {
@@ -10,7 +10,7 @@ export const packageMetadata = {
10
10
  productName: 'Kendo UI for Angular',
11
11
  productCode: 'KENDOUIANGULAR',
12
12
  productCodes: ['KENDOUIANGULAR'],
13
- publishDate: 1743598444,
14
- version: '18.4.1-develop.2',
13
+ publishDate: 1744092477,
14
+ version: '18.5.0-develop.10',
15
15
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
16
16
  };