@progress/kendo-angular-grid 18.5.0-develop.1 → 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 (50) 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/field-datatype.d.ts +9 -0
  6. package/directives.d.ts +5 -3
  7. package/editing/form/dialog-form.component.d.ts +27 -0
  8. package/editing/form/form-formfield.component.d.ts +24 -0
  9. package/editing/form/form.component.d.ts +28 -0
  10. package/editing/form/index.d.ts +8 -0
  11. package/editing/form/models.d.ts +196 -0
  12. package/editing-directives/editing-directive-base.d.ts +10 -3
  13. package/editing-directives/external-editing.directive.d.ts +46 -0
  14. package/esm2022/column-menu/column-chooser.component.mjs +2 -13
  15. package/esm2022/column-menu/column-list.component.mjs +53 -33
  16. package/esm2022/column-menu/column-menu-item.component.mjs +3 -4
  17. package/esm2022/columns/column-base.mjs +4 -0
  18. package/esm2022/columns/column.component.mjs +0 -4
  19. package/esm2022/common/field-datatype.mjs +5 -0
  20. package/esm2022/directives.mjs +8 -1
  21. package/esm2022/editing/edit.service.mjs +1 -1
  22. package/esm2022/editing/form/dialog-form.component.mjs +102 -0
  23. package/esm2022/editing/form/form-formfield.component.mjs +161 -0
  24. package/esm2022/editing/form/form.component.mjs +153 -0
  25. package/esm2022/editing/form/index.mjs +8 -0
  26. package/esm2022/editing/form/models.mjs +5 -0
  27. package/esm2022/editing-directives/editing-directive-base.mjs +33 -5
  28. package/esm2022/editing-directives/external-editing.directive.mjs +130 -0
  29. package/esm2022/filtering/cell/filter-cell-host.directive.mjs +5 -5
  30. package/esm2022/filtering/filter-host.directive.mjs +5 -7
  31. package/esm2022/filtering/menu/filter-menu-host.directive.mjs +5 -5
  32. package/esm2022/grid.component.mjs +71 -14
  33. package/esm2022/grid.module.mjs +15 -11
  34. package/esm2022/index.mjs +1 -0
  35. package/esm2022/localization/messages.mjs +62 -1
  36. package/esm2022/package-metadata.mjs +2 -2
  37. package/esm2022/rendering/footer/footer.component.mjs +12 -5
  38. package/esm2022/rendering/table-body.component.mjs +1 -1
  39. package/esm2022/utils.mjs +1 -1
  40. package/fesm2022/progress-kendo-angular-grid.mjs +769 -115
  41. package/filtering/cell/filter-cell-host.directive.d.ts +2 -2
  42. package/filtering/filter-host.directive.d.ts +2 -3
  43. package/filtering/menu/filter-menu-host.directive.d.ts +2 -2
  44. package/grid.component.d.ts +0 -6
  45. package/grid.module.d.ts +15 -11
  46. package/index.d.ts +3 -0
  47. package/localization/messages.d.ts +46 -1
  48. package/package.json +19 -19
  49. package/rendering/footer/footer.component.d.ts +3 -1
  50. package/schematics/ngAdd/index.js +4 -4
@@ -3,44 +3,49 @@
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import * as i0 from '@angular/core';
6
- import { EventEmitter, Injectable, SecurityContext, InjectionToken, Optional, Inject, Directive, SkipSelf, Input, isDevMode, QueryList, Component, ContentChildren, ContentChild, forwardRef, Host, Output, HostBinding, Pipe, TemplateRef, ChangeDetectionStrategy, ViewChildren, ViewChild, Self, NgZone, HostListener, ViewEncapsulation, NgModule } from '@angular/core';
6
+ import { EventEmitter, Injectable, SecurityContext, InjectionToken, Optional, Inject, Directive, SkipSelf, Input, isDevMode, QueryList, Component, ContentChildren, ContentChild, forwardRef, Host, Output, HostBinding, Pipe, TemplateRef, ChangeDetectionStrategy, ViewChildren, ViewChild, Self, NgZone, HostListener, ViewEncapsulation, inject, NgModule } from '@angular/core';
7
7
  import { merge, of, Subject, zip as zip$1, from, Subscription, interval, fromEvent, Observable, BehaviorSubject } from 'rxjs';
8
8
  import * as i1$3 from '@progress/kendo-angular-common';
9
9
  import { isDocumentAvailable, Keys, isPresent as isPresent$1, anyChanged, TemplateContextDirective, DraggableDirective, EventsOutsideAngularDirective, isChanged as isChanged$1, KendoInput, guid, hasObservers, ResizeSensorComponent, closest as closest$1, isFocusable as isFocusable$1, shouldShowValidationUI, WatermarkOverlayComponent, ResizeBatchService } from '@progress/kendo-angular-common';
10
10
  import * as i1 from '@angular/platform-browser';
11
11
  import * as i1$1 from '@progress/kendo-angular-icons';
12
12
  import { IconWrapperComponent, IconsService, KENDO_ICONS } from '@progress/kendo-angular-icons';
13
- import { plusIcon, cancelIcon, lockIcon, unlockIcon, caretAltDownIcon, caretAltRightIcon, caretAltLeftIcon, arrowLeftIcon, arrowRightIcon, sortDescSmallIcon, sortAscSmallIcon, filterClearIcon, filterIcon, columnsIcon, chevronUpIcon, chevronDownIcon, displayInlineFlexIcon, maxWidthIcon, stickIcon, unstickIcon, setColumnPositionIcon, slidersIcon, moreVerticalIcon, reorderIcon, minusIcon, insertMiddleIcon, filePdfIcon, fileExcelIcon } from '@progress/kendo-svg-icons';
13
+ import { plusIcon, cancelIcon, lockIcon, unlockIcon, caretAltDownIcon, caretAltRightIcon, caretAltLeftIcon, arrowLeftIcon, arrowRightIcon, sortDescSmallIcon, sortAscSmallIcon, filterClearIcon, filterIcon, columnsIcon, chevronUpIcon, chevronDownIcon, displayInlineFlexIcon, maxWidthIcon, stickIcon, unstickIcon, setColumnPositionIcon, slidersIcon, moreVerticalIcon, reorderIcon, minusIcon, insertMiddleIcon, checkIcon, xIcon, saveIcon, filePdfIcon, fileExcelIcon } from '@progress/kendo-svg-icons';
14
14
  import { switchMap, take, map, filter, takeUntil, switchMapTo, delay, tap, throttleTime, debounceTime, distinctUntilChanged, skip, auditTime, bufferCount } from 'rxjs/operators';
15
15
  import * as i1$2 from '@progress/kendo-angular-l10n';
16
16
  import { ComponentMessages, LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';
17
17
  import * as i44 from '@progress/kendo-angular-pager';
18
18
  import { PagerContextService, PagerNavigationService, PagerTemplateDirective, KENDO_PAGER } from '@progress/kendo-angular-pager';
19
19
  import { orderBy, isCompositeFilterDescriptor, groupBy, process, filterBy } from '@progress/kendo-data-query';
20
- import { NgFor, NgIf, NgTemplateOutlet, NgSwitch, NgSwitchCase, NgClass, NgStyle, NgSwitchDefault } from '@angular/common';
20
+ import { NgFor, NgIf, NgTemplateOutlet, NgSwitch, NgSwitchCase, NgClass, NgStyle, NgSwitchDefault, KeyValuePipe } from '@angular/common';
21
21
  import { getter } from '@progress/kendo-common';
22
22
  import * as i1$4 from '@progress/kendo-angular-intl';
23
23
  import * as i5 from '@progress/kendo-angular-popup';
24
24
  import { PopupService } from '@progress/kendo-angular-popup';
25
- import { ChipListComponent, ChipComponent, ButtonComponent, Button } from '@progress/kendo-angular-buttons';
25
+ import * as i2 from '@progress/kendo-angular-buttons';
26
+ import { ChipListComponent, ChipComponent, ButtonComponent, Button, KENDO_BUTTON } from '@progress/kendo-angular-buttons';
26
27
  import * as i1$5 from '@progress/kendo-angular-dropdowns';
27
28
  import { DropDownListComponent, AutoCompleteComponent } from '@progress/kendo-angular-dropdowns';
28
29
  import * as i4 from '@angular/forms';
29
30
  import { NG_VALUE_ACCESSOR, FormsModule, ReactiveFormsModule, FormControl, FormGroup } from '@angular/forms';
30
- import * as i3 from '@progress/kendo-angular-inputs';
31
- import { TextBoxComponent, NumericTextBoxComponent, NumericTextBoxCustomMessagesComponent, RadioButtonComponent, CheckBoxComponent } from '@progress/kendo-angular-inputs';
32
- import { DatePickerComponent, DatePickerCustomMessagesComponent, CalendarDOMService, CenturyViewService, DecadeViewService, MonthViewService, YearViewService, NavigationService as NavigationService$1 } from '@progress/kendo-angular-dateinputs';
31
+ import * as i4$1 from '@progress/kendo-angular-inputs';
32
+ import { TextBoxComponent, NumericTextBoxComponent, NumericTextBoxCustomMessagesComponent, RadioButtonComponent, CheckBoxComponent, KENDO_FORMFIELD, KENDO_TEXTBOX, KENDO_NUMERICTEXTBOX, KENDO_CHECKBOX } from '@progress/kendo-angular-inputs';
33
+ import * as i5$1 from '@progress/kendo-angular-dateinputs';
34
+ import { DatePickerComponent, DatePickerCustomMessagesComponent, KENDO_DATEPICKER, CalendarDOMService, CenturyViewService, DecadeViewService, MonthViewService, YearViewService, NavigationService as NavigationService$1 } from '@progress/kendo-angular-dateinputs';
33
35
  import { trigger, state, style, transition, animate } from '@angular/animations';
34
36
  import { TabStripComponent, TabStripTabComponent, TabTitleDirective, TabContentDirective } from '@progress/kendo-angular-layout';
35
37
  import { saveAs } from '@progress/kendo-file-saver';
36
- import * as i5$1 from '@progress/kendo-angular-excel-export';
38
+ import * as i5$2 from '@progress/kendo-angular-excel-export';
37
39
  import { workbookOptions, toDataURL, ColumnBase as ColumnBase$1, ColumnComponent as ColumnComponent$1, ColumnGroupComponent as ColumnGroupComponent$1, FooterTemplateDirective as FooterTemplateDirective$1, GroupFooterTemplateDirective as GroupFooterTemplateDirective$1, GroupHeaderColumnTemplateDirective as GroupHeaderColumnTemplateDirective$1, GroupHeaderTemplateDirective as GroupHeaderTemplateDirective$1 } from '@progress/kendo-angular-excel-export';
38
40
  import { PDFExportMarginComponent, PDFExportTemplateDirective, PDFExportComponent } from '@progress/kendo-angular-pdf-export';
39
41
  import { validatePackage } from '@progress/kendo-licensing';
40
42
  import { DragTargetContainerDirective, DropTargetContainerDirective } from '@progress/kendo-angular-utils';
43
+ import * as i1$6 from '@progress/kendo-angular-dialog';
44
+ import { DialogContainerDirective, DialogService, DialogContentBase, DialogActionsComponent, DialogContainerService, WindowService, WindowContainerService } from '@progress/kendo-angular-dialog';
45
+ import * as i3 from '@progress/kendo-angular-label';
46
+ import { KENDO_LABELS } from '@progress/kendo-angular-label';
41
47
  import * as i45 from '@progress/kendo-angular-toolbar';
42
48
  import { KENDO_TOOLBAR } from '@progress/kendo-angular-toolbar';
43
- import { DialogContainerService, DialogService, WindowService, WindowContainerService } from '@progress/kendo-angular-dialog';
44
49
 
45
50
  /* eslint-disable no-bitwise */
46
51
  /**
@@ -444,7 +449,7 @@ const nodesToArray = (nodes) => [].slice.call(nodes);
444
449
  /**
445
450
  * @hidden
446
451
  */
447
- const replaceMessagePlaceholder = (message, name, value) => message.replace(new RegExp(`\{\\s*${name}\\s*\}`, 'g'), value);
452
+ const replaceMessagePlaceholder = (message, name, value) => (message ?? '').replace(new RegExp(`{\\s*${name}\\s*}`, 'g'), value);
448
453
  /**
449
454
  * @hidden
450
455
  */
@@ -1639,7 +1644,7 @@ class EditService {
1639
1644
  this.changes.emit({ action: 'edit', rowIndex });
1640
1645
  }
1641
1646
  beginAdd() {
1642
- this.changes.emit({ action: 'add' });
1647
+ this.changes.emit({ action: 'add', isNew: true });
1643
1648
  }
1644
1649
  endEdit(rowIndex) {
1645
1650
  const { group: formGroup } = this.context(rowIndex);
@@ -2477,6 +2482,10 @@ class ColumnBase {
2477
2482
  throw new Error(ColumnConfigurationErrorMessages.columnNested);
2478
2483
  }
2479
2484
  }
2485
+ ngAfterViewInit() {
2486
+ this.initialMaxResizableWidth = this.maxResizableWidth;
2487
+ this.initialMinResizableWidth = this.minResizableWidth;
2488
+ }
2480
2489
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnBase, deps: [{ token: ColumnBase }, { token: IdService }], target: i0.ɵɵFactoryTarget.Component });
2481
2490
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ColumnBase, selector: "kendo-grid-column-base", inputs: { resizable: "resizable", reorderable: "reorderable", minResizableWidth: "minResizableWidth", maxResizableWidth: "maxResizableWidth", title: "title", width: "width", autoSize: "autoSize", locked: "locked", sticky: "sticky", hidden: "hidden", media: "media", lockable: "lockable", stickable: "stickable", columnMenu: "columnMenu", includeInChooser: "includeInChooser", tableCellsRole: "tableCellsRole", style: "style", headerStyle: "headerStyle", filterStyle: "filterStyle", footerStyle: "footerStyle", cssClass: ["class", "cssClass"], headerClass: "headerClass", filterClass: "filterClass", footerClass: "footerClass", cellRowspan: "cellRowspan" }, queries: [{ propertyName: "footerTemplate", first: true, predicate: FooterTemplateDirective, descendants: true }, { propertyName: "headerTemplates", predicate: HeaderTemplateDirective }, { propertyName: "columnMenuTemplates", predicate: ColumnMenuTemplateDirective }], ngImport: i0, template: ``, isInline: true });
2482
2491
  }
@@ -2850,10 +2859,6 @@ class ColumnComponent extends ColumnBase {
2850
2859
  get displayTitle() {
2851
2860
  return this.title === undefined ? this.field : this.title;
2852
2861
  }
2853
- ngAfterViewInit() {
2854
- this.initialMaxResizableWidth = this.maxResizableWidth;
2855
- this.initialMinResizableWidth = this.minResizableWidth;
2856
- }
2857
2862
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColumnComponent, deps: [{ token: ColumnBase, host: true, optional: true, skipSelf: true }, { token: IdService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
2858
2863
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ColumnComponent, isStandalone: true, selector: "kendo-grid-column", inputs: { field: "field", format: "format", sortable: "sortable", groupable: "groupable", editor: "editor", filter: "filter", filterable: "filterable", editable: "editable" }, providers: [
2859
2864
  {
@@ -7643,16 +7648,14 @@ const diffFilters = (a, b) => {
7643
7648
  */
7644
7649
  class FilterHostDirective {
7645
7650
  host;
7646
- resolver;
7647
7651
  column;
7648
7652
  filter;
7649
7653
  component;
7650
- constructor(host, resolver) {
7654
+ constructor(host) {
7651
7655
  this.host = host;
7652
- this.resolver = resolver;
7653
7656
  }
7654
7657
  ngOnInit() {
7655
- this.component = this.host.createComponent(this.resolver.resolveComponentFactory(this.componentType()));
7658
+ this.component = this.host.createComponent(this.componentType());
7656
7659
  this.initComponent({
7657
7660
  column: this.column,
7658
7661
  filter: this.filter
@@ -7677,7 +7680,7 @@ class FilterHostDirective {
7677
7680
  instance.column = column;
7678
7681
  instance.filter = filter;
7679
7682
  }
7680
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterHostDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Directive });
7683
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterHostDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
7681
7684
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: FilterHostDirective, selector: "[kendoGridFilterHostBase]", inputs: { column: "column", filter: "filter" }, usesOnChanges: true, ngImport: i0 });
7682
7685
  }
7683
7686
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterHostDirective, decorators: [{
@@ -7685,7 +7688,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
7685
7688
  args: [{
7686
7689
  selector: '[kendoGridFilterHostBase]'
7687
7690
  }]
7688
- }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ComponentFactoryResolver }]; }, propDecorators: { column: [{
7691
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { column: [{
7689
7692
  type: Input
7690
7693
  }], filter: [{
7691
7694
  type: Input
@@ -9560,8 +9563,8 @@ const filterMenuComponentFactory = (type) => ({
9560
9563
  class FilterMenuHostDirective extends FilterHostDirective {
9561
9564
  filterService;
9562
9565
  menuTabbingService;
9563
- constructor(host, resolver) {
9564
- super(host, resolver);
9566
+ constructor(host) {
9567
+ super(host);
9565
9568
  }
9566
9569
  componentType() {
9567
9570
  if (isPresent(this.column) && !isNullOrEmptyString(this.column.filter)) {
@@ -9574,7 +9577,7 @@ class FilterMenuHostDirective extends FilterHostDirective {
9574
9577
  this.component.instance.filterService = this.filterService;
9575
9578
  this.component.instance.menuTabbingService = this.menuTabbingService;
9576
9579
  }
9577
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterMenuHostDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Directive });
9580
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterMenuHostDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
9578
9581
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: FilterMenuHostDirective, isStandalone: true, selector: "[kendoFilterMenuHost]", inputs: { filterService: "filterService", menuTabbingService: "menuTabbingService" }, usesInheritance: true, ngImport: i0 });
9579
9582
  }
9580
9583
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterMenuHostDirective, decorators: [{
@@ -9583,7 +9586,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
9583
9586
  selector: '[kendoFilterMenuHost]',
9584
9587
  standalone: true
9585
9588
  }]
9586
- }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ComponentFactoryResolver }]; }, propDecorators: { filterService: [{
9589
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { filterService: [{
9587
9590
  type: Input
9588
9591
  }], menuTabbingService: [{
9589
9592
  type: Input
@@ -10681,8 +10684,8 @@ const filterComponentFactory = (type) => ({
10681
10684
  * @hidden
10682
10685
  */
10683
10686
  class FilterCellHostDirective extends FilterHostDirective {
10684
- constructor(host, resolver) {
10685
- super(host, resolver);
10687
+ constructor(host) {
10688
+ super(host);
10686
10689
  }
10687
10690
  componentType() {
10688
10691
  if (!isNullOrEmptyString(this.column.filter)) {
@@ -10690,7 +10693,7 @@ class FilterCellHostDirective extends FilterHostDirective {
10690
10693
  }
10691
10694
  return StringFilterCellComponent;
10692
10695
  }
10693
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterCellHostDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Directive });
10696
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterCellHostDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
10694
10697
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: FilterCellHostDirective, isStandalone: true, selector: "[kendoFilterCellHost]", usesInheritance: true, ngImport: i0 });
10695
10698
  }
10696
10699
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterCellHostDirective, decorators: [{
@@ -10699,7 +10702,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
10699
10702
  selector: '[kendoFilterCellHost]',
10700
10703
  standalone: true
10701
10704
  }]
10702
- }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ComponentFactoryResolver }]; } });
10705
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; } });
10703
10706
 
10704
10707
  /**
10705
10708
  * @hidden
@@ -11142,6 +11145,17 @@ class ColumnListComponent {
11142
11145
  if (e.keyCode !== Keys.Tab) {
11143
11146
  e.preventDefault();
11144
11147
  }
11148
+ if (e.key === 'Tab' && !e.shiftKey && this.autoSync) {
11149
+ e.preventDefault();
11150
+ }
11151
+ if (e.key === 'Tab' && e.shiftKey) {
11152
+ this.ngZone.run(() => {
11153
+ if (e.target.matches('.k-column-list-item')) {
11154
+ e.preventDefault();
11155
+ this.resetButton?.nativeElement.focus();
11156
+ }
11157
+ });
11158
+ }
11145
11159
  if (e.keyCode === Keys.ArrowDown) {
11146
11160
  this.listNavigationService.next();
11147
11161
  }
@@ -11156,19 +11170,23 @@ class ColumnListComponent {
11156
11170
  if (this.allowHideAll && !this.hasLocked) {
11157
11171
  return;
11158
11172
  }
11159
- const checkedItems = [];
11173
+ // Cache visible columns to avoid repeated checks
11174
+ const visibleColumns = [];
11175
+ const columnMap = new Map();
11160
11176
  this.checkboxes.forEach((checkbox, index) => {
11177
+ // Reset all disabled states first
11178
+ this.setDisabledState(checkbox, false);
11161
11179
  if (checkbox.checkedState) {
11162
- checkedItems.push({ checkbox, index });
11180
+ visibleColumns.push({ checkbox, index });
11181
+ columnMap.set(index, this.columns[index]);
11163
11182
  }
11164
- this.setDisabledState(checkbox, false);
11165
11183
  });
11166
- if (!this.allowHideAll && checkedItems.length === 1 && !this.hasFiltered) {
11167
- this.setDisabledState(checkedItems[0].checkbox, true);
11184
+ // Only apply disabled states where needed
11185
+ if (!this.allowHideAll && visibleColumns.length === 1 && !this.hasFiltered) {
11186
+ this.setDisabledState(visibleColumns[0].checkbox, true);
11168
11187
  }
11169
11188
  else if (this.hasLocked && !this.hasUnlockedFiltered) {
11170
- const columns = this.columns;
11171
- const checkedUnlocked = checkedItems.filter(item => !columns[item.index].locked);
11189
+ const checkedUnlocked = visibleColumns.filter(item => !columnMap.get(item.index).locked);
11172
11190
  if (checkedUnlocked.length === 1) {
11173
11191
  this.setDisabledState(checkedUnlocked[0].checkbox, true);
11174
11192
  }
@@ -11189,34 +11207,32 @@ class ColumnListComponent {
11189
11207
  }
11190
11208
  }
11191
11209
  setDisabledState(checkbox, disabled) {
11192
- this.ngZone.run(() => checkbox.disabled = disabled);
11193
- const checkboxElement = checkbox.hostElement.nativeElement;
11194
- const parentElement = checkboxElement.parentElement;
11195
- const classCommand = disabled ? 'addClass' : 'removeClass';
11196
- const attributeCommand = disabled ? 'setAttribute' : 'removeAttribute';
11197
- this.renderer[classCommand](parentElement, 'k-disabled');
11198
- this.renderer[attributeCommand](parentElement, 'aria-disabled', disabled ? 'true' : undefined);
11210
+ if (checkbox.disabled !== disabled) {
11211
+ this.ngZone.runOutsideAngular(() => {
11212
+ checkbox.disabled = disabled;
11213
+ const checkboxElement = checkbox.hostElement.nativeElement;
11214
+ const parentElement = checkboxElement.parentElement;
11215
+ if (disabled) {
11216
+ this.renderer.addClass(parentElement, 'k-disabled');
11217
+ this.renderer.setAttribute(parentElement, 'aria-disabled', 'true');
11218
+ }
11219
+ else {
11220
+ this.renderer.removeClass(parentElement, 'k-disabled');
11221
+ this.renderer.removeAttribute(parentElement, 'aria-disabled');
11222
+ }
11223
+ });
11224
+ }
11199
11225
  }
11200
11226
  handleCheckBoxClick = (e) => {
11201
11227
  const closestItem = e.target.closest('.k-column-list-item');
11202
11228
  if (closestItem) {
11203
11229
  const checkboxElement = closestItem.querySelector('.k-checkbox-wrap');
11204
- const checkbox = this.checkboxes.find(checkBox => checkBox.hostElement.nativeElement === checkboxElement);
11205
11230
  const index = parseInt(checkboxElement.firstElementChild.getAttribute('data-index'), 10);
11206
- if (index !== this.listNavigationService.activeIndex) {
11207
- this.listNavigationService.toggle(this.listNavigationService.activeIndex, false);
11208
- this.listNavigationService.activeIndex = index;
11209
- this.listNavigationService.toggle(index, true);
11210
- }
11211
- if (checkboxElement.contains(e.target)) {
11212
- const checkboxInputElement = checkboxElement.firstElementChild;
11213
- checkboxInputElement.blur();
11214
- checkboxInputElement.classList.remove('k-focus');
11215
- }
11216
- else {
11217
- this.listNavigationService.toggleCheckedState();
11231
+ const checkbox = this.checkboxes.toArray()[index];
11232
+ if (e.target === checkbox.input.nativeElement) {
11233
+ closestItem.focus();
11234
+ e.target.classList.remove('k-focus');
11218
11235
  }
11219
- closestItem.focus();
11220
11236
  if (this.autoSync) {
11221
11237
  if (!this.columns[index]) {
11222
11238
  return;
@@ -11224,14 +11240,21 @@ class ColumnListComponent {
11224
11240
  const column = this.columns[index];
11225
11241
  const hidden = !checkbox.checkedState;
11226
11242
  if (Boolean(column.hidden) !== hidden) {
11227
- this.ngZone.run(() => {
11243
+ this.ngZone.runOutsideAngular(() => {
11228
11244
  column.hidden = hidden;
11229
- this.columnChange.emit([column]);
11245
+ this.ngZone.run(() => {
11246
+ this.columnChange.emit([column]);
11247
+ });
11230
11248
  });
11231
11249
  }
11232
11250
  }
11233
11251
  else {
11234
- this.updateDisabled();
11252
+ this.ngZone.run(() => this.updateDisabled());
11253
+ }
11254
+ if (index !== this.listNavigationService.activeIndex) {
11255
+ this.listNavigationService.toggle(this.listNavigationService.activeIndex, false);
11256
+ this.listNavigationService.activeIndex = index;
11257
+ this.listNavigationService.toggle(index, true);
11235
11258
  }
11236
11259
  }
11237
11260
  };
@@ -11249,9 +11272,9 @@ class ColumnListComponent {
11249
11272
  role="option">
11250
11273
  <kendo-checkbox
11251
11274
  [inputAttributes]="{'data-index': index.toString()}"
11275
+ [tabindex]="-1"
11252
11276
  [checkedState]="!column.hidden"
11253
11277
  [disabled]="isDisabled(column)"
11254
- [tabindex]="-1"
11255
11278
  ></kendo-checkbox>
11256
11279
  <span class="k-checkbox-label">{{ column.displayTitle }}</span>
11257
11280
  </label>
@@ -11293,9 +11316,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
11293
11316
  role="option">
11294
11317
  <kendo-checkbox
11295
11318
  [inputAttributes]="{'data-index': index.toString()}"
11319
+ [tabindex]="-1"
11296
11320
  [checkedState]="!column.hidden"
11297
11321
  [disabled]="isDisabled(column)"
11298
- [tabindex]="-1"
11299
11322
  ></kendo-checkbox>
11300
11323
  <span class="k-checkbox-label">{{ column.displayTitle }}</span>
11301
11324
  </label>
@@ -11480,15 +11503,6 @@ class ColumnChooserComponent {
11480
11503
  this.changeDetector.markForCheck();
11481
11504
  this.columnInfoService.changeVisibility(changed);
11482
11505
  }
11483
- /**
11484
- * @hidden
11485
- */
11486
- onShiftTab(e) {
11487
- if (e.target.matches('.k-column-list-item')) {
11488
- e.preventDefault();
11489
- this.columnList.resetButton.nativeElement.focus();
11490
- }
11491
- }
11492
11506
  close(focusAnchor = false) {
11493
11507
  if (this.popupRef) {
11494
11508
  this.popupRef.close();
@@ -11530,8 +11544,7 @@ class ColumnChooserComponent {
11530
11544
  [autoSync]="autoSync"
11531
11545
  [allowHideAll]="allowHideAll"
11532
11546
  (apply)="onApply($event)"
11533
- (columnChange)="onChange($event)"
11534
- (keydown.shift.tab)="onShiftTab($event)">
11547
+ (columnChange)="onChange($event)">
11535
11548
  </kendo-grid-columnlist>
11536
11549
  </ng-template>
11537
11550
  `, isInline: true, dependencies: [{ kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "component", type: ColumnListComponent, selector: "kendo-grid-columnlist", inputs: ["columns", "autoSync", "ariaLabel", "allowHideAll", "applyText", "resetText", "actionsClass", "isLast", "isExpanded", "service"], outputs: ["reset", "apply", "columnChange"] }] });
@@ -11564,8 +11577,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
11564
11577
  [autoSync]="autoSync"
11565
11578
  [allowHideAll]="allowHideAll"
11566
11579
  (apply)="onApply($event)"
11567
- (columnChange)="onChange($event)"
11568
- (keydown.shift.tab)="onShiftTab($event)">
11580
+ (columnChange)="onChange($event)">
11569
11581
  </kendo-grid-columnlist>
11570
11582
  </ng-template>
11571
11583
  `,
@@ -11737,13 +11749,12 @@ class ColumnMenuItemComponent {
11737
11749
  */
11738
11750
  collapse = new EventEmitter();
11739
11751
  /**
11740
- * Specifies the name of the [font icon](slug:icons#icons-list)
11741
- * that will be rendered for the item.
11752
+ * Specifies the name of the [font icon](slug:icon_list)
11753
+ * that will be rendered within the item.
11742
11754
  */
11743
11755
  icon;
11744
11756
  /**
11745
- * Specifies the name of the [SVG icon]({% slug svgicon_list %})
11746
- * that will be rendered for the item.
11757
+ * Defines the [SVG icon](slug:svgicon_list) to be rendered within the item.
11747
11758
  */
11748
11759
  svgIcon;
11749
11760
  /**
@@ -16255,7 +16266,7 @@ class SelectAllCheckboxDirective {
16255
16266
  return undefined;
16256
16267
  }
16257
16268
  }
16258
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SelectAllCheckboxDirective, deps: [{ token: SelectionService }, { token: CellSelectionService }, { token: i0.NgZone }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i3.CheckBoxComponent, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
16269
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SelectAllCheckboxDirective, deps: [{ token: SelectionService }, { token: CellSelectionService }, { token: i0.NgZone }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i4$1.CheckBoxComponent, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
16259
16270
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: SelectAllCheckboxDirective, isStandalone: true, selector: "[kendoGridSelectAllCheckbox]", inputs: { state: "state" }, outputs: { selectAllChange: "selectAllChange" }, usesOnChanges: true, ngImport: i0 });
16260
16271
  }
16261
16272
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SelectAllCheckboxDirective, decorators: [{
@@ -16264,7 +16275,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
16264
16275
  selector: '[kendoGridSelectAllCheckbox]',
16265
16276
  standalone: true
16266
16277
  }]
16267
- }], ctorParameters: function () { return [{ type: SelectionService }, { type: CellSelectionService }, { type: i0.NgZone }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i3.CheckBoxComponent, decorators: [{
16278
+ }], ctorParameters: function () { return [{ type: SelectionService }, { type: CellSelectionService }, { type: i0.NgZone }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i4$1.CheckBoxComponent, decorators: [{
16268
16279
  type: Host
16269
16280
  }, {
16270
16281
  type: Optional
@@ -17223,6 +17234,7 @@ class FooterComponent {
17223
17234
  lockedColumnsCount = 0;
17224
17235
  logicalRowIndex = 0;
17225
17236
  totalColumns;
17237
+ totalColumnsCount = 0;
17226
17238
  get footerClass() {
17227
17239
  return !this.scrollable;
17228
17240
  }
@@ -17234,6 +17246,10 @@ class FooterComponent {
17234
17246
  get columnsToRender() {
17235
17247
  return columnsToRender(this.columns || []);
17236
17248
  }
17249
+ // Number of unlocked columns in the next table, if any
17250
+ get unlockedColumnsCount() {
17251
+ return this.totalColumnsCount - this.lockedColumnsCount - this.columns.length;
17252
+ }
17237
17253
  trackByIndex(index) {
17238
17254
  return index;
17239
17255
  }
@@ -17252,15 +17268,15 @@ class FooterComponent {
17252
17268
  return isColumnGroupComponent(column);
17253
17269
  }
17254
17270
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FooterComponent, deps: [{ token: ColumnInfoService }], target: i0.ɵɵFactoryTarget.Component });
17255
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FooterComponent, isStandalone: true, selector: "[kendoGridFooter]", inputs: { columns: "columns", groups: "groups", detailTemplate: "detailTemplate", scrollable: "scrollable", lockedColumnsCount: "lockedColumnsCount", logicalRowIndex: "logicalRowIndex", totalColumns: "totalColumns" }, host: { properties: { "class.k-grid-footer": "this.footerClass", "class.k-table-tfoot": "this.hostClass", "attr.role": "this.hostRole" } }, ngImport: i0, template: `
17271
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FooterComponent, isStandalone: true, selector: "[kendoGridFooter]", inputs: { columns: "columns", groups: "groups", detailTemplate: "detailTemplate", scrollable: "scrollable", lockedColumnsCount: "lockedColumnsCount", logicalRowIndex: "logicalRowIndex", totalColumns: "totalColumns", totalColumnsCount: "totalColumnsCount" }, host: { properties: { "class.k-grid-footer": "this.footerClass", "class.k-table-tfoot": "this.hostClass", "attr.role": "this.hostRole" } }, ngImport: i0, template: `
17256
17272
  <ng-container>
17257
17273
  <tr
17258
- [class.k-footer-template]="true"
17274
+ class="k-footer-template"
17259
17275
  kendoGridLogicalRow
17260
17276
  [logicalRowIndex]="logicalRowIndex"
17261
17277
  [logicalSlaveRow]="lockedColumnsCount > 0"
17262
17278
  [logicalCellsCount]="columns.length"
17263
- [logicalSlaveCellsCount]="columns.length - lockedColumnsCount"
17279
+ [logicalSlaveCellsCount]="unlockedColumnsCount"
17264
17280
  [totalColumns]="totalColumns"
17265
17281
  >
17266
17282
  <td
@@ -17305,12 +17321,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
17305
17321
  template: `
17306
17322
  <ng-container>
17307
17323
  <tr
17308
- [class.k-footer-template]="true"
17324
+ class="k-footer-template"
17309
17325
  kendoGridLogicalRow
17310
17326
  [logicalRowIndex]="logicalRowIndex"
17311
17327
  [logicalSlaveRow]="lockedColumnsCount > 0"
17312
17328
  [logicalCellsCount]="columns.length"
17313
- [logicalSlaveCellsCount]="columns.length - lockedColumnsCount"
17329
+ [logicalSlaveCellsCount]="unlockedColumnsCount"
17314
17330
  [totalColumns]="totalColumns"
17315
17331
  >
17316
17332
  <td
@@ -17364,6 +17380,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
17364
17380
  type: Input
17365
17381
  }], totalColumns: [{
17366
17382
  type: Input
17383
+ }], totalColumnsCount: [{
17384
+ type: Input
17367
17385
  }], footerClass: [{
17368
17386
  type: HostBinding,
17369
17387
  args: ['class.k-grid-footer']
@@ -17635,7 +17653,7 @@ class SelectionCheckboxDirective {
17635
17653
  this.renderer.setProperty(this.el.nativeElement, 'checked', isSelected);
17636
17654
  }
17637
17655
  }
17638
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SelectionCheckboxDirective, deps: [{ token: SelectionService }, { token: CellSelectionService }, { token: CellSelectionAggregateService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i3.CheckBoxComponent, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
17656
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SelectionCheckboxDirective, deps: [{ token: SelectionService }, { token: CellSelectionService }, { token: CellSelectionAggregateService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i4$1.CheckBoxComponent, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
17639
17657
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: SelectionCheckboxDirective, isStandalone: true, selector: "[kendoGridSelectionCheckbox]", inputs: { itemIndex: ["kendoGridSelectionCheckbox", "itemIndex"] }, ngImport: i0 });
17640
17658
  }
17641
17659
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SelectionCheckboxDirective, decorators: [{
@@ -17644,7 +17662,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
17644
17662
  selector: '[kendoGridSelectionCheckbox]',
17645
17663
  standalone: true
17646
17664
  }]
17647
- }], ctorParameters: function () { return [{ type: SelectionService }, { type: CellSelectionService }, { type: CellSelectionAggregateService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i3.CheckBoxComponent, decorators: [{
17665
+ }], ctorParameters: function () { return [{ type: SelectionService }, { type: CellSelectionService }, { type: CellSelectionAggregateService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i4$1.CheckBoxComponent, decorators: [{
17648
17666
  type: Host
17649
17667
  }, {
17650
17668
  type: Optional
@@ -18229,7 +18247,7 @@ class TableBodyComponent {
18229
18247
  }
18230
18248
  });
18231
18249
  const contentColumnsCount = this.totalColumnsCount - this.lockedColumnsCount - allColumnsCount;
18232
- const headerFooterColumnsCount = this.totalColumnsCount - this.lockedColumnsCount - (this.allColumns || this.columns).length;
18250
+ const headerFooterColumnsCount = this.totalColumnsCount - this.lockedColumnsCount - allColumns.length;
18233
18251
  return item && this.isDataItem(item) ? contentColumnsCount : headerFooterColumnsCount;
18234
18252
  }
18235
18253
  shouldSkipCell(rowIndex, colIndex) {
@@ -19813,8 +19831,8 @@ const packageMetadata = {
19813
19831
  productName: 'Kendo UI for Angular',
19814
19832
  productCode: 'KENDOUIANGULAR',
19815
19833
  productCodes: ['KENDOUIANGULAR'],
19816
- publishDate: 1743748634,
19817
- version: '18.5.0-develop.1',
19834
+ publishDate: 1744092477,
19835
+ version: '18.5.0-develop.10',
19818
19836
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
19819
19837
  };
19820
19838
 
@@ -23308,8 +23326,53 @@ class GridMessages extends ComponentMessages {
23308
23326
  * The text for the Group pane Chip Menu Move as next item.
23309
23327
  */
23310
23328
  groupChipMenuNext;
23329
+ /**
23330
+ * The default text of a form validation error when using the built-in external editing.
23331
+ * <br/><br/>
23332
+ * The text consists of a three-part message&mdash;the name of the data item property the respective Grid column is bound to,
23333
+ * the name of the error, coming from the respective `FormControl` object, and a localizable string.
23334
+ * <br/><br/>
23335
+ * For a field named `ProductName`, and an error named `required`, the default error text will be `ProductName has required validation error`.
23336
+ * <br/><br/>
23337
+ * To customize the default text of the form validation error, use the `{errorName}` and `{fieldName}` placeholders and a custom localizable string.
23338
+ * For example, `{errorName} detected for {fieldName} field`.
23339
+ * <br/><br/>
23340
+ * The `{errorName}` and `{fieldName}` placeholders will be replaced internally with the field and error names for the respective invalid form control,
23341
+ * and the resulting error message will be rendered as `required error detected for ProductName field`.
23342
+ * [See example](slug:globalization_grid#toc-custom-messages).
23343
+ *
23344
+ */
23345
+ formValidationErrorText;
23346
+ /**
23347
+ * The title of the remove item confirmation Dialog.
23348
+ */
23349
+ removeConfirmationDialogTitle;
23350
+ /**
23351
+ * The content of the remove item confirmation Dialog.
23352
+ */
23353
+ removeConfirmationDialogContent;
23354
+ /**
23355
+ * The text of the confirm action button in the remove confirmation Dialog.
23356
+ */
23357
+ removeConfirmationDialogConfirmText;
23358
+ /**
23359
+ * The text of the reject action button in the remove confirmation Dialog.
23360
+ */
23361
+ removeConfirmationDialogRejectText;
23362
+ /**
23363
+ * The title of the external editing Dialog.
23364
+ */
23365
+ externalEditingTitle;
23366
+ /**
23367
+ * The text of the external editing Dialog <b>Save</b> button.
23368
+ */
23369
+ externalEditingSaveText;
23370
+ /**
23371
+ * The text of the external editing Dialog <b>Cancel</b> button.
23372
+ */
23373
+ externalEditingCancelText;
23311
23374
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GridMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });
23312
- 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 });
23375
+ 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 });
23313
23376
  }
23314
23377
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GridMessages, decorators: [{
23315
23378
  type: Directive,
@@ -23485,6 +23548,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
23485
23548
  type: Input
23486
23549
  }], groupChipMenuNext: [{
23487
23550
  type: Input
23551
+ }], formValidationErrorText: [{
23552
+ type: Input
23553
+ }], removeConfirmationDialogTitle: [{
23554
+ type: Input
23555
+ }], removeConfirmationDialogContent: [{
23556
+ type: Input
23557
+ }], removeConfirmationDialogConfirmText: [{
23558
+ type: Input
23559
+ }], removeConfirmationDialogRejectText: [{
23560
+ type: Input
23561
+ }], externalEditingTitle: [{
23562
+ type: Input
23563
+ }], externalEditingSaveText: [{
23564
+ type: Input
23565
+ }], externalEditingCancelText: [{
23566
+ type: Input
23488
23567
  }] } });
23489
23568
 
23490
23569
  /**
@@ -24257,9 +24336,6 @@ class GridComponent {
24257
24336
  columnList;
24258
24337
  selectionDirective = false;
24259
24338
  ariaRootId = `k-${guid()}`;
24260
- /**
24261
- * @hidden
24262
- */
24263
24339
  showLicenseWatermark = false;
24264
24340
  columnsContainer = new ColumnsContainer(() => this.columnList.filterHierarchy(column => {
24265
24341
  if (!isUniversal()) {
@@ -25058,9 +25134,6 @@ class GridComponent {
25058
25134
  updateNavigationMetadata() {
25059
25135
  this.navigationService.metadata = this.navigationMetadata();
25060
25136
  }
25061
- /**
25062
- * @hidden
25063
- */
25064
25137
  reorder({ target, source, before, changeContainer }) {
25065
25138
  this.ngZone.run(() => {
25066
25139
  const columnsForLevel = sortColumns(this.allColumnsForLevel(source.level));
@@ -25899,6 +25972,30 @@ class GridComponent {
25899
25972
 
25900
25973
  i18n-groupChipMenuNext="kendo.grid.groupChipMenuNext|The text for the Group pane Chip Menu Move as next item"
25901
25974
  groupChipMenuNext="Move as next"
25975
+
25976
+ i18n-formValidationErrorText="kendo.grid.formValidationErrorText|The default text of a form validation error when using external editing."
25977
+ formValidationErrorText="{{ 'The {fieldName} field has {errorName} validation error' }}"
25978
+
25979
+ i18n-removeConfirmationDialogTitle="kendo.grid.removeConfirmationDialogTitle|The title of the built-in remove item confirmation Dialog"
25980
+ removeConfirmationDialogTitle="Please confirm"
25981
+
25982
+ i18n-removeConfirmationDialogContent="kendo.grid.removeConfirmationDialogContent|The content of the built-in remove item confirmation Dialog"
25983
+ removeConfirmationDialogContent="Are you sure you want to delete this item?"
25984
+
25985
+ i18n-removeConfirmationDialogConfirmText="kendo.grid.removeConfirmationDialogConfirmText|The text of the built-in remove item confirmation Dialog confirm action button"
25986
+ removeConfirmationDialogConfirmText="Yes"
25987
+
25988
+ i18n-removeConfirmationDialogRejectText="kendo.grid.removeConfirmationDialogRejectText|The text of the built-in remove item confirmation Dialog reject action button"
25989
+ removeConfirmationDialogRejectText="No"
25990
+
25991
+ i18n-externalEditingTitle="kendo.grid.externalEditingTitle|The title of the built-in external editing form container"
25992
+ externalEditingTitle="Edit"
25993
+
25994
+ i18n-externalEditingSaveText="kendo.grid.externalEditingSaveText|The text of the external editing form Save button"
25995
+ externalEditingSaveText="Save"
25996
+
25997
+ i18n-externalEditingCancelText="kendo.grid.externalEditingCancelText|The text of the external editing form Cancel button"
25998
+ externalEditingCancelText="Cancel"
25902
25999
  >
25903
26000
  </ng-container>
25904
26001
  <kendo-grid-toolbar
@@ -26127,7 +26224,8 @@ class GridComponent {
26127
26224
  [columns]="$any(lockedLeafColumns)"
26128
26225
  [detailTemplate]="detailTemplate"
26129
26226
  [logicalRowIndex]="ariaRowCount"
26130
- [totalColumns]="columnsContainer">
26227
+ [totalColumns]="columnsContainer"
26228
+ [totalColumnsCount]="leafColumns.length">
26131
26229
  </tfoot>
26132
26230
  </table>
26133
26231
  </div>
@@ -26154,7 +26252,8 @@ class GridComponent {
26154
26252
  [columns]="$any(headerColumns)"
26155
26253
  [lockedColumnsCount]="lockedLeafColumns.length"
26156
26254
  [detailTemplate]="detailTemplate"
26157
- [totalColumns]="columnsContainer">
26255
+ [totalColumns]="columnsContainer"
26256
+ [totalColumnsCount]="leafColumns.length">
26158
26257
  </tfoot>
26159
26258
  </table>
26160
26259
  </div>
@@ -26175,6 +26274,8 @@ class GridComponent {
26175
26274
  </colgroup>
26176
26275
  <thead kendoGridHeader
26177
26276
  *ngIf="!hideHeader"
26277
+ class="k-grid-header"
26278
+ [class.k-grid-draggable-header]="groupable || reorderable"
26178
26279
  role="rowgroup"
26179
26280
  [resizable]="resizable"
26180
26281
  [scrollable]="false"
@@ -26217,7 +26318,8 @@ class GridComponent {
26217
26318
  [groups]="group"
26218
26319
  [columns]="$any(leafColumns)"
26219
26320
  [detailTemplate]="detailTemplate"
26220
- [totalColumns]="columnsContainer">
26321
+ [totalColumns]="columnsContainer"
26322
+ [totalColumnsCount]="leafColumns.length">
26221
26323
  </tfoot>
26222
26324
  </table>
26223
26325
  </ng-container>
@@ -26300,8 +26402,10 @@ class GridComponent {
26300
26402
  <kendo-pager-info *ngIf="normalizedPageableSettings.info">
26301
26403
  </kendo-pager-info>
26302
26404
  </ng-template>
26405
+ <div kendoDialogContainer></div>
26406
+
26303
26407
  <div kendoWatermarkOverlay *ngIf="showLicenseWatermark"></div>
26304
- `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "[kendoGridLocalizedMessages]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ToolbarComponent, selector: "kendo-grid-toolbar", inputs: ["position", "size", "navigable"] }, { kind: "component", type: GroupPanelComponent, selector: "kendo-grid-group-panel", inputs: ["text", "navigable", "groups"], outputs: ["change"] }, { kind: "directive", type: TableDirective, selector: "[kendoGridResizableTable]", inputs: ["locked", "virtualColumns"] }, { kind: "directive", type: GridTableDirective, selector: "[kendoGridTable]", inputs: ["size"] }, { kind: "component", type: ColGroupComponent, selector: "[kendoGridColGroup]", inputs: ["columns", "groups", "detailTemplate", "sort"] }, { kind: "component", type: HeaderComponent, selector: "[kendoGridHeader]", inputs: ["totalColumnLevels", "columns", "groups", "detailTemplate", "scrollable", "filterable", "sort", "filter", "sortable", "groupable", "lockedColumnsCount", "resizable", "reorderable", "columnMenu", "columnMenuTemplate", "totalColumnsCount", "totalColumns", "tabIndex", "size"] }, { kind: "directive", type: ResizableContainerDirective, selector: "[kendoGridResizableContainer]", inputs: ["lockedWidth", "kendoGridResizableContainer"] }, { kind: "component", type: ListComponent, selector: "kendo-grid-list", inputs: ["data", "groups", "total", "rowHeight", "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: i44.CustomMessagesComponent, selector: "kendo-datapager-messages, kendo-pager-messages" }, { kind: "component", type: i44.PagerInfoComponent, selector: "kendo-datapager-info, kendo-pager-info" }, { kind: "component", type: i44.PagerInputComponent, selector: "kendo-datapager-input, kendo-pager-input", inputs: ["size"] }, { kind: "component", type: i44.PagerNextButtonsComponent, selector: "kendo-datapager-next-buttons, kendo-pager-next-buttons", inputs: ["size"] }, { kind: "component", type: i44.PagerNumericButtonsComponent, selector: "kendo-datapager-numeric-buttons, kendo-pager-numeric-buttons", inputs: ["buttonCount", "size"] }, { kind: "component", type: i44.PagerPageSizesComponent, selector: "kendo-datapager-page-sizes, kendo-pager-page-sizes", inputs: ["pageSizes", "size"] }, { kind: "component", type: i44.PagerPrevButtonsComponent, selector: "kendo-datapager-prev-buttons, kendo-pager-prev-buttons", inputs: ["size"] }, { kind: "directive", type: i44.PagerTemplateDirective, selector: "[kendoDataPagerTemplate], [kendoPagerTemplate]" }, { kind: "component", type: i44.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 });
26408
+ `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "[kendoGridLocalizedMessages]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ToolbarComponent, selector: "kendo-grid-toolbar", inputs: ["position", "size", "navigable"] }, { kind: "component", type: GroupPanelComponent, selector: "kendo-grid-group-panel", inputs: ["text", "navigable", "groups"], outputs: ["change"] }, { kind: "directive", type: TableDirective, selector: "[kendoGridResizableTable]", inputs: ["locked", "virtualColumns"] }, { kind: "directive", type: GridTableDirective, selector: "[kendoGridTable]", inputs: ["size"] }, { kind: "component", type: ColGroupComponent, selector: "[kendoGridColGroup]", inputs: ["columns", "groups", "detailTemplate", "sort"] }, { kind: "component", type: HeaderComponent, selector: "[kendoGridHeader]", inputs: ["totalColumnLevels", "columns", "groups", "detailTemplate", "scrollable", "filterable", "sort", "filter", "sortable", "groupable", "lockedColumnsCount", "resizable", "reorderable", "columnMenu", "columnMenuTemplate", "totalColumnsCount", "totalColumns", "tabIndex", "size"] }, { kind: "directive", type: ResizableContainerDirective, selector: "[kendoGridResizableContainer]", inputs: ["lockedWidth", "kendoGridResizableContainer"] }, { kind: "component", type: ListComponent, selector: "kendo-grid-list", inputs: ["data", "groups", "total", "rowHeight", "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: i44.CustomMessagesComponent, selector: "kendo-datapager-messages, kendo-pager-messages" }, { kind: "component", type: i44.PagerInfoComponent, selector: "kendo-datapager-info, kendo-pager-info" }, { kind: "component", type: i44.PagerInputComponent, selector: "kendo-datapager-input, kendo-pager-input", inputs: ["size"] }, { kind: "component", type: i44.PagerNextButtonsComponent, selector: "kendo-datapager-next-buttons, kendo-pager-next-buttons", inputs: ["size"] }, { kind: "component", type: i44.PagerNumericButtonsComponent, selector: "kendo-datapager-numeric-buttons, kendo-pager-numeric-buttons", inputs: ["buttonCount", "size"] }, { kind: "component", type: i44.PagerPageSizesComponent, selector: "kendo-datapager-page-sizes, kendo-pager-page-sizes", inputs: ["pageSizes", "size"] }, { kind: "component", type: i44.PagerPrevButtonsComponent, selector: "kendo-datapager-prev-buttons, kendo-pager-prev-buttons", inputs: ["size"] }, { kind: "directive", type: i44.PagerTemplateDirective, selector: "[kendoDataPagerTemplate], [kendoPagerTemplate]" }, { kind: "component", type: i44.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 });
26305
26409
  }
26306
26410
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GridComponent, decorators: [{
26307
26411
  type: Component,
@@ -26610,6 +26714,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
26610
26714
 
26611
26715
  i18n-groupChipMenuNext="kendo.grid.groupChipMenuNext|The text for the Group pane Chip Menu Move as next item"
26612
26716
  groupChipMenuNext="Move as next"
26717
+
26718
+ i18n-formValidationErrorText="kendo.grid.formValidationErrorText|The default text of a form validation error when using external editing."
26719
+ formValidationErrorText="{{ 'The {fieldName} field has {errorName} validation error' }}"
26720
+
26721
+ i18n-removeConfirmationDialogTitle="kendo.grid.removeConfirmationDialogTitle|The title of the built-in remove item confirmation Dialog"
26722
+ removeConfirmationDialogTitle="Please confirm"
26723
+
26724
+ i18n-removeConfirmationDialogContent="kendo.grid.removeConfirmationDialogContent|The content of the built-in remove item confirmation Dialog"
26725
+ removeConfirmationDialogContent="Are you sure you want to delete this item?"
26726
+
26727
+ i18n-removeConfirmationDialogConfirmText="kendo.grid.removeConfirmationDialogConfirmText|The text of the built-in remove item confirmation Dialog confirm action button"
26728
+ removeConfirmationDialogConfirmText="Yes"
26729
+
26730
+ i18n-removeConfirmationDialogRejectText="kendo.grid.removeConfirmationDialogRejectText|The text of the built-in remove item confirmation Dialog reject action button"
26731
+ removeConfirmationDialogRejectText="No"
26732
+
26733
+ i18n-externalEditingTitle="kendo.grid.externalEditingTitle|The title of the built-in external editing form container"
26734
+ externalEditingTitle="Edit"
26735
+
26736
+ i18n-externalEditingSaveText="kendo.grid.externalEditingSaveText|The text of the external editing form Save button"
26737
+ externalEditingSaveText="Save"
26738
+
26739
+ i18n-externalEditingCancelText="kendo.grid.externalEditingCancelText|The text of the external editing form Cancel button"
26740
+ externalEditingCancelText="Cancel"
26613
26741
  >
26614
26742
  </ng-container>
26615
26743
  <kendo-grid-toolbar
@@ -26838,7 +26966,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
26838
26966
  [columns]="$any(lockedLeafColumns)"
26839
26967
  [detailTemplate]="detailTemplate"
26840
26968
  [logicalRowIndex]="ariaRowCount"
26841
- [totalColumns]="columnsContainer">
26969
+ [totalColumns]="columnsContainer"
26970
+ [totalColumnsCount]="leafColumns.length">
26842
26971
  </tfoot>
26843
26972
  </table>
26844
26973
  </div>
@@ -26865,7 +26994,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
26865
26994
  [columns]="$any(headerColumns)"
26866
26995
  [lockedColumnsCount]="lockedLeafColumns.length"
26867
26996
  [detailTemplate]="detailTemplate"
26868
- [totalColumns]="columnsContainer">
26997
+ [totalColumns]="columnsContainer"
26998
+ [totalColumnsCount]="leafColumns.length">
26869
26999
  </tfoot>
26870
27000
  </table>
26871
27001
  </div>
@@ -26886,6 +27016,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
26886
27016
  </colgroup>
26887
27017
  <thead kendoGridHeader
26888
27018
  *ngIf="!hideHeader"
27019
+ class="k-grid-header"
27020
+ [class.k-grid-draggable-header]="groupable || reorderable"
26889
27021
  role="rowgroup"
26890
27022
  [resizable]="resizable"
26891
27023
  [scrollable]="false"
@@ -26928,7 +27060,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
26928
27060
  [groups]="group"
26929
27061
  [columns]="$any(leafColumns)"
26930
27062
  [detailTemplate]="detailTemplate"
26931
- [totalColumns]="columnsContainer">
27063
+ [totalColumns]="columnsContainer"
27064
+ [totalColumnsCount]="leafColumns.length">
26932
27065
  </tfoot>
26933
27066
  </table>
26934
27067
  </ng-container>
@@ -27011,6 +27144,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
27011
27144
  <kendo-pager-info *ngIf="normalizedPageableSettings.info">
27012
27145
  </kendo-pager-info>
27013
27146
  </ng-template>
27147
+ <div kendoDialogContainer></div>
27148
+
27014
27149
  <div kendoWatermarkOverlay *ngIf="showLicenseWatermark"></div>
27015
27150
  `,
27016
27151
  standalone: true,
@@ -27019,7 +27154,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
27019
27154
  TableDirective, GridTableDirective, ColGroupComponent, HeaderComponent, ResizableContainerDirective,
27020
27155
  ListComponent, DragTargetContainerDirective, DropTargetContainerDirective, DraggableDirective,
27021
27156
  GridMarqueeDirective, FooterComponent, TableBodyComponent, LoadingComponent, StatusBarComponent,
27022
- IconWrapperComponent, WatermarkOverlayComponent, ...KENDO_PAGER, NgTemplateOutlet
27157
+ IconWrapperComponent, WatermarkOverlayComponent, ...KENDO_PAGER, NgTemplateOutlet, DialogContainerDirective
27023
27158
  ]
27024
27159
  }]
27025
27160
  }], ctorParameters: function () { return [{ type: BrowserSupportService }, { type: SelectionService }, { type: CellSelectionService }, { type: i0.ElementRef }, { type: GroupInfoService }, { type: GroupsService }, { type: ChangeNotificationService }, { type: DetailsService }, { type: EditService }, { type: FilterService }, { type: PDFService }, { type: ResponsiveService }, { type: i0.Renderer2 }, { type: ExcelService }, { type: i0.NgZone }, { type: ScrollSyncService }, { type: DomEventsService }, { type: ColumnResizingService }, { type: i0.ChangeDetectorRef }, { type: ColumnReorderService }, { type: ColumnInfoService }, { type: NavigationService }, { type: SortService }, { type: ScrollRequestService }, { type: i1$2.LocalizationService }, { type: ContextService }, { type: SizingOptionsService }, { type: RowReorderService }]; }, propDecorators: { data: [{
@@ -27568,10 +27703,32 @@ class EditingDirectiveBase {
27568
27703
  get editService() {
27569
27704
  return this.userEditService || this.defaultEditService;
27570
27705
  }
27706
+ removeConfirmationSubject = new Subject();
27707
+ dialogService;
27708
+ localization;
27709
+ defaultRemoveConfirmation = (_item) => {
27710
+ const dialog = this.dialogService.open({
27711
+ title: this.localization.get('removeConfirmationDialogTitle'),
27712
+ content: this.localization.get('removeConfirmationDialogContent'),
27713
+ actions: [{
27714
+ text: this.localization.get('removeConfirmationDialogConfirmText'),
27715
+ themeColor: 'primary',
27716
+ svgIcon: checkIcon,
27717
+ icon: 'check'
27718
+ }, {
27719
+ text: this.localization.get('removeConfirmationDialogRejectText'),
27720
+ svgIcon: xIcon,
27721
+ icon: 'x'
27722
+ }],
27723
+ });
27724
+ dialog.result.pipe(take(1)).subscribe((e) => this.removeConfirmationSubject.next(e.text === this.localization.get('removeConfirmationDialogConfirmText')));
27725
+ return this.removeConfirmationSubject;
27726
+ };
27571
27727
  /**
27572
27728
  * A function that is called to confirm if the `dataItem` will be removed.
27729
+ * Setting to `true` will result in displaying a default confirmation dialog.
27573
27730
  */
27574
- removeConfirmation;
27731
+ removeConfirmation = false;
27575
27732
  subscriptions = new Subscription();
27576
27733
  defaultEditService;
27577
27734
  userEditService;
@@ -27579,6 +27736,8 @@ class EditingDirectiveBase {
27579
27736
  this.grid = grid;
27580
27737
  this.localDataChangesService = localDataChangesService;
27581
27738
  this.defaultEditService = this.createDefaultService();
27739
+ this.dialogService = inject(DialogService);
27740
+ this.localization = inject(LocalizationService);
27582
27741
  }
27583
27742
  /**
27584
27743
  * @hidden
@@ -27599,7 +27758,7 @@ class EditingDirectiveBase {
27599
27758
  createDefaultService() {
27600
27759
  return new LocalEditService(this.grid, this.localDataChangesService);
27601
27760
  }
27602
- addHandler() {
27761
+ addHandler(_args) {
27603
27762
  this.grid.addRow(this.createModel({ isNew: true }));
27604
27763
  }
27605
27764
  saveHandler(args) {
@@ -27624,7 +27783,8 @@ class EditingDirectiveBase {
27624
27783
  }
27625
27784
  };
27626
27785
  if (this.removeConfirmation) {
27627
- const result = this.removeConfirmation(dataItem);
27786
+ const confirmationCallback = typeof this.removeConfirmation === 'boolean' ? this.defaultRemoveConfirmation : this.removeConfirmation;
27787
+ const result = confirmationCallback(dataItem);
27628
27788
  if (result instanceof Promise) {
27629
27789
  result.then(removeItem);
27630
27790
  }
@@ -27905,6 +28065,495 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
27905
28065
  args: ['kendoGridInCellEditing']
27906
28066
  }] } });
27907
28067
 
28068
+ /**
28069
+ * @hidden
28070
+ */
28071
+ class FormFormFieldComponent {
28072
+ localization;
28073
+ cdr;
28074
+ control;
28075
+ floatingLabel;
28076
+ showError;
28077
+ input;
28078
+ constructor(localization, cdr) {
28079
+ this.localization = localization;
28080
+ this.cdr = cdr;
28081
+ }
28082
+ // required to avoid ExpressionChangedAfterItHasBeenCheckedError caused by
28083
+ // binding to the label's 'for' attribute dynamically
28084
+ ngAfterContentInit() {
28085
+ this.cdr.detectChanges();
28086
+ }
28087
+ messageFor(key, errorName, field) {
28088
+ return replaceMessagePlaceholder(replaceMessagePlaceholder(this.localization.get(key), 'fieldName', field), 'errorName', errorName);
28089
+ }
28090
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFormFieldComponent, deps: [{ token: i1$2.LocalizationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
28091
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFormFieldComponent, isStandalone: true, selector: "kendo-form-formfield", inputs: { control: "control", floatingLabel: "floatingLabel", showError: "showError" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: `
28092
+ <kendo-formfield
28093
+ [orientation]="control.orientation">
28094
+ <kendo-floatinglabel
28095
+ *ngIf="control.label && floatingLabel && $any(control.dataType) !== 'boolean'"
28096
+ labelCssClass="k-form-label"
28097
+ [text]="control.label">
28098
+ <kendo-textbox
28099
+ *ngIf="$any(control.dataType) === 'text'"
28100
+ [formControl]="control.formControl"></kendo-textbox>
28101
+ <kendo-numerictextbox
28102
+ *ngIf="$any(control.dataType) === 'numeric'"
28103
+ [formControl]="control.formControl"></kendo-numerictextbox>
28104
+ <kendo-datepicker
28105
+ *ngIf="$any(control.dataType) === 'date'"
28106
+ [formControl]="control.formControl"></kendo-datepicker>
28107
+ </kendo-floatinglabel>
28108
+ <kendo-label [style.align-items]="'start'"
28109
+ *ngIf="control.label && !floatingLabel && $any(control.dataType) !== 'boolean'"
28110
+ labelCssClass="k-form-label"
28111
+ [text]="control.label"
28112
+ [for]="input">
28113
+ </kendo-label>
28114
+ <kendo-textbox #input
28115
+ *ngIf="!floatingLabel && (control.dataType) === 'text'"
28116
+ [formControl]="control.formControl"></kendo-textbox>
28117
+ <kendo-numerictextbox #input
28118
+ *ngIf="!floatingLabel && $any(control.dataType) === 'numeric'"
28119
+ [formControl]="control.formControl"></kendo-numerictextbox>
28120
+ <kendo-datepicker #input
28121
+ *ngIf="!floatingLabel && $any(control.dataType) === 'date'"
28122
+ [formControl]="control.formControl"></kendo-datepicker>
28123
+ <div
28124
+ *ngIf="control.label && $any(control.dataType) === 'boolean'"
28125
+ class="k-form-field-checkbox-wrap">
28126
+ <kendo-checkbox #cb [formControl]="control.formControl"></kendo-checkbox>
28127
+ <kendo-label
28128
+ *ngIf="control.label"
28129
+ class="k-checkbox-label"
28130
+ [for]="cb"
28131
+ [text]="control.label">
28132
+ </kendo-label>
28133
+ </div>
28134
+
28135
+ <kendo-formhint *ngIf="control?.hint">{{control.hint}}</kendo-formhint>
28136
+ <ng-container *ngIf="showError && control.formControl?.invalid && control.formControl.touched">
28137
+ <kendo-formerror *ngFor="let err of control?.formControl?.errors | keyvalue">{{control.errors ? control.errors[err.key] : messageFor('formValidationError', err.key, control.name)}}</kendo-formerror>
28138
+ </ng-container>
28139
+ </kendo-formfield>
28140
+ `, isInline: true, dependencies: [{ kind: "pipe", type: KeyValuePipe, name: "keyvalue" }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3.LabelComponent, selector: "kendo-label", inputs: ["text", "for", "optional", "labelCssStyle", "labelCssClass"], exportAs: ["kendoLabel"] }, { kind: "component", type: i3.FloatingLabelComponent, selector: "kendo-floatinglabel", inputs: ["labelCssStyle", "labelCssClass", "id", "text", "optional"], outputs: ["positionChange"], exportAs: ["kendoFloatingLabel"] }, { kind: "component", type: i4$1.FormFieldComponent, selector: "kendo-formfield", inputs: ["showHints", "orientation", "showErrors"] }, { kind: "component", type: i4$1.HintComponent, selector: "kendo-formhint", inputs: ["align"] }, { kind: "component", type: i4$1.ErrorComponent, selector: "kendo-formerror", inputs: ["align"] }, { kind: "component", type: i4$1.TextBoxComponent, selector: "kendo-textbox", inputs: ["focusableId", "title", "type", "disabled", "readonly", "tabindex", "value", "selectOnFocus", "showSuccessIcon", "showErrorIcon", "clearButton", "successIcon", "successSvgIcon", "errorIcon", "errorSvgIcon", "clearButtonIcon", "clearButtonSvgIcon", "size", "rounded", "fillMode", "tabIndex", "placeholder", "maxlength", "inputAttributes"], outputs: ["valueChange", "inputFocus", "inputBlur", "focus", "blur"], exportAs: ["kendoTextBox"] }, { kind: "component", type: i4$1.NumericTextBoxComponent, selector: "kendo-numerictextbox", inputs: ["focusableId", "disabled", "readonly", "title", "autoCorrect", "format", "max", "min", "decimals", "placeholder", "step", "spinners", "rangeValidation", "tabindex", "tabIndex", "changeValueOnScroll", "selectOnFocus", "value", "maxlength", "size", "rounded", "fillMode", "inputAttributes"], outputs: ["valueChange", "focus", "blur", "inputFocus", "inputBlur"], exportAs: ["kendoNumericTextBox"] }, { kind: "component", type: i4$1.CheckBoxComponent, selector: "kendo-checkbox", inputs: ["checkedState", "rounded"], outputs: ["checkedStateChange"], exportAs: ["kendoCheckBox"] }, { kind: "component", type: i5$1.DatePickerComponent, selector: "kendo-datepicker", inputs: ["focusableId", "cellTemplate", "clearButton", "inputAttributes", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate", "headerTemplate", "footerTemplate", "footer", "navigationItemTemplate", "weekDaysFormat", "showOtherMonthDays", "activeView", "bottomView", "topView", "calendarType", "animateCalendarNavigation", "disabled", "readonly", "readOnlyInput", "popupSettings", "navigation", "min", "max", "incompleteDateValidation", "autoCorrectParts", "autoSwitchParts", "autoSwitchKeys", "enableMouseWheel", "allowCaretMode", "autoFill", "focusedDate", "value", "format", "twoDigitYearMax", "formatPlaceholder", "placeholder", "tabindex", "tabIndex", "disabledDates", "title", "subtitle", "rangeValidation", "disabledDatesValidation", "weekNumber", "size", "rounded", "fillMode", "adaptiveMode"], outputs: ["valueChange", "focus", "blur", "open", "close", "escape"], exportAs: ["kendo-datepicker"] }] });
28141
+ }
28142
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFormFieldComponent, decorators: [{
28143
+ type: Component,
28144
+ args: [{
28145
+ selector: 'kendo-form-formfield',
28146
+ standalone: true,
28147
+ imports: [KeyValuePipe, NgFor, NgIf, ReactiveFormsModule,
28148
+ KENDO_LABELS, KENDO_FORMFIELD, KENDO_TEXTBOX, KENDO_NUMERICTEXTBOX, KENDO_BUTTON, KENDO_CHECKBOX, KENDO_DATEPICKER],
28149
+ template: `
28150
+ <kendo-formfield
28151
+ [orientation]="control.orientation">
28152
+ <kendo-floatinglabel
28153
+ *ngIf="control.label && floatingLabel && $any(control.dataType) !== 'boolean'"
28154
+ labelCssClass="k-form-label"
28155
+ [text]="control.label">
28156
+ <kendo-textbox
28157
+ *ngIf="$any(control.dataType) === 'text'"
28158
+ [formControl]="control.formControl"></kendo-textbox>
28159
+ <kendo-numerictextbox
28160
+ *ngIf="$any(control.dataType) === 'numeric'"
28161
+ [formControl]="control.formControl"></kendo-numerictextbox>
28162
+ <kendo-datepicker
28163
+ *ngIf="$any(control.dataType) === 'date'"
28164
+ [formControl]="control.formControl"></kendo-datepicker>
28165
+ </kendo-floatinglabel>
28166
+ <kendo-label [style.align-items]="'start'"
28167
+ *ngIf="control.label && !floatingLabel && $any(control.dataType) !== 'boolean'"
28168
+ labelCssClass="k-form-label"
28169
+ [text]="control.label"
28170
+ [for]="input">
28171
+ </kendo-label>
28172
+ <kendo-textbox #input
28173
+ *ngIf="!floatingLabel && (control.dataType) === 'text'"
28174
+ [formControl]="control.formControl"></kendo-textbox>
28175
+ <kendo-numerictextbox #input
28176
+ *ngIf="!floatingLabel && $any(control.dataType) === 'numeric'"
28177
+ [formControl]="control.formControl"></kendo-numerictextbox>
28178
+ <kendo-datepicker #input
28179
+ *ngIf="!floatingLabel && $any(control.dataType) === 'date'"
28180
+ [formControl]="control.formControl"></kendo-datepicker>
28181
+ <div
28182
+ *ngIf="control.label && $any(control.dataType) === 'boolean'"
28183
+ class="k-form-field-checkbox-wrap">
28184
+ <kendo-checkbox #cb [formControl]="control.formControl"></kendo-checkbox>
28185
+ <kendo-label
28186
+ *ngIf="control.label"
28187
+ class="k-checkbox-label"
28188
+ [for]="cb"
28189
+ [text]="control.label">
28190
+ </kendo-label>
28191
+ </div>
28192
+
28193
+ <kendo-formhint *ngIf="control?.hint">{{control.hint}}</kendo-formhint>
28194
+ <ng-container *ngIf="showError && control.formControl?.invalid && control.formControl.touched">
28195
+ <kendo-formerror *ngFor="let err of control?.formControl?.errors | keyvalue">{{control.errors ? control.errors[err.key] : messageFor('formValidationError', err.key, control.name)}}</kendo-formerror>
28196
+ </ng-container>
28197
+ </kendo-formfield>
28198
+ `
28199
+ }]
28200
+ }], ctorParameters: function () { return [{ type: i1$2.LocalizationService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { control: [{
28201
+ type: Input
28202
+ }], floatingLabel: [{
28203
+ type: Input
28204
+ }], showError: [{
28205
+ type: Input
28206
+ }], input: [{
28207
+ type: ViewChild,
28208
+ args: ['input']
28209
+ }] } });
28210
+
28211
+ let idx = 0;
28212
+ /**
28213
+ * @hidden
28214
+ */
28215
+ class FormComponent {
28216
+ controls = [];
28217
+ set formSettings(value) {
28218
+ this._formSettings = { ...this._formSettings, ...value };
28219
+ }
28220
+ get formSettings() {
28221
+ return this._formSettings;
28222
+ }
28223
+ formGroup;
28224
+ set actionButtons(value) {
28225
+ if (typeof value === 'boolean') {
28226
+ this.normalizeActionButtonSettings(value);
28227
+ }
28228
+ else {
28229
+ this._actionButtons = value;
28230
+ }
28231
+ }
28232
+ get actionButtons() {
28233
+ return this._actionButtons;
28234
+ }
28235
+ formSubmit = new EventEmitter();
28236
+ get componentIndex() {
28237
+ return idx++;
28238
+ }
28239
+ _formSettings = {
28240
+ orientation: 'vertical',
28241
+ showErrors: true,
28242
+ floatingLabels: false
28243
+ };
28244
+ defaultActionButtons = [{
28245
+ actionType: 'submit',
28246
+ text: 'Submit',
28247
+ svgIcon: saveIcon,
28248
+ icon: 'save',
28249
+ themeColor: 'primary'
28250
+ }, {
28251
+ actionType: 'reset',
28252
+ svgIcon: cancelIcon,
28253
+ text: 'Reset',
28254
+ icon: 'cancel'
28255
+ }];
28256
+ _actionButtons = this.defaultActionButtons;
28257
+ ngOnInit() {
28258
+ idx++;
28259
+ }
28260
+ normalizeActionButtonSettings(value) {
28261
+ this._actionButtons = value ? this.defaultActionButtons : [];
28262
+ }
28263
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
28264
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormComponent, isStandalone: true, selector: "kendo-grid-external-form", inputs: { controls: "controls", formSettings: "formSettings", formGroup: "formGroup", actionButtons: "actionButtons" }, outputs: { formSubmit: "formSubmit" }, ngImport: i0, template: `
28265
+ <div role="form"
28266
+ class="k-form k-form-md"
28267
+ [class.k-form-horizontal]="formSettings.orientation === 'horizontal'"
28268
+ [formGroup]="formGroup"
28269
+ (ngSubmit)="formSubmit.next({originalEvent: $event, formGroup})"
28270
+ (reset)="$event.preventDefault()">
28271
+ <ng-container *ngFor="let control of controls; let idx = index;">
28272
+ <ng-container *ngIf="!control.template; else template">
28273
+ <kendo-form-formfield
28274
+ [control]="control"
28275
+ [showError]="formSettings.showErrors"
28276
+ [floatingLabel]="formSettings.floatingLabels"></kendo-form-formfield>
28277
+ </ng-container>
28278
+ <ng-template #template>
28279
+ <ng-container
28280
+ [ngTemplateOutlet]="control.template"
28281
+ [ngTemplateOutletContext]="control.templateContext"></ng-container>
28282
+ </ng-template>
28283
+ </ng-container>
28284
+ <div class="k-form-buttons" *ngIf="$any(actionButtons).length">
28285
+ <button kendoButton *ngFor="let button of $any(actionButtons)"
28286
+ [class.k-form-submit]="button.actionType === 'submit'"
28287
+ [size]="button.size"
28288
+ [themeColor]="button.themeColor || button.actionType === 'submit' ? 'primary' : undefined"
28289
+ [rounded]="button.rounded"
28290
+ [attr.type]="button.actionType"
28291
+ [svgIcon]="button.svgIcon"
28292
+ [icon]="button.icon">
28293
+ {{button.text}}
28294
+ </button>
28295
+ </div>
28296
+ </div>
28297
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: FormFormFieldComponent, selector: "kendo-form-formfield", inputs: ["control", "floatingLabel", "showError"] }, { kind: "component", type: i2.ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }] });
28298
+ }
28299
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormComponent, decorators: [{
28300
+ type: Component,
28301
+ args: [{
28302
+ selector: 'kendo-grid-external-form',
28303
+ standalone: true,
28304
+ template: `
28305
+ <div role="form"
28306
+ class="k-form k-form-md"
28307
+ [class.k-form-horizontal]="formSettings.orientation === 'horizontal'"
28308
+ [formGroup]="formGroup"
28309
+ (ngSubmit)="formSubmit.next({originalEvent: $event, formGroup})"
28310
+ (reset)="$event.preventDefault()">
28311
+ <ng-container *ngFor="let control of controls; let idx = index;">
28312
+ <ng-container *ngIf="!control.template; else template">
28313
+ <kendo-form-formfield
28314
+ [control]="control"
28315
+ [showError]="formSettings.showErrors"
28316
+ [floatingLabel]="formSettings.floatingLabels"></kendo-form-formfield>
28317
+ </ng-container>
28318
+ <ng-template #template>
28319
+ <ng-container
28320
+ [ngTemplateOutlet]="control.template"
28321
+ [ngTemplateOutletContext]="control.templateContext"></ng-container>
28322
+ </ng-template>
28323
+ </ng-container>
28324
+ <div class="k-form-buttons" *ngIf="$any(actionButtons).length">
28325
+ <button kendoButton *ngFor="let button of $any(actionButtons)"
28326
+ [class.k-form-submit]="button.actionType === 'submit'"
28327
+ [size]="button.size"
28328
+ [themeColor]="button.themeColor || button.actionType === 'submit' ? 'primary' : undefined"
28329
+ [rounded]="button.rounded"
28330
+ [attr.type]="button.actionType"
28331
+ [svgIcon]="button.svgIcon"
28332
+ [icon]="button.icon">
28333
+ {{button.text}}
28334
+ </button>
28335
+ </div>
28336
+ </div>
28337
+ `,
28338
+ imports: [NgFor, NgIf, NgTemplateOutlet, ReactiveFormsModule, FormFormFieldComponent, KENDO_BUTTON],
28339
+ }]
28340
+ }], propDecorators: { controls: [{
28341
+ type: Input
28342
+ }], formSettings: [{
28343
+ type: Input
28344
+ }], formGroup: [{
28345
+ type: Input
28346
+ }], actionButtons: [{
28347
+ type: Input
28348
+ }], formSubmit: [{
28349
+ type: Output
28350
+ }] } });
28351
+
28352
+ /**
28353
+ * @hidden
28354
+ */
28355
+ class DialogFormComponent extends DialogContentBase {
28356
+ localization;
28357
+ controls;
28358
+ formGroup;
28359
+ formSettings;
28360
+ saveIcon = saveIcon;
28361
+ cancelIcon = cancelIcon;
28362
+ constructor(dialogRef, localization) {
28363
+ super(dialogRef);
28364
+ this.localization = localization;
28365
+ }
28366
+ save() {
28367
+ this.dialog.close({ text: this.localization.get('externalEditingSaveText') });
28368
+ }
28369
+ cancel() {
28370
+ this.dialog.close({ text: this.localization.get('externalEditingCancelText') });
28371
+ }
28372
+ messageFor(key) {
28373
+ return this.localization.get(key);
28374
+ }
28375
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DialogFormComponent, deps: [{ token: i1$6.DialogRef }, { token: i1$2.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
28376
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DialogFormComponent, isStandalone: true, selector: "kendo-grid-dialog-form", inputs: { controls: "controls", formGroup: "formGroup", formSettings: "formSettings" }, usesInheritance: true, ngImport: i0, template: `
28377
+ <kendo-grid-external-form
28378
+ [controls]="controls"
28379
+ [formGroup]="formGroup"
28380
+ [formSettings]="formSettings"
28381
+ [actionButtons]="false"></kendo-grid-external-form>
28382
+ <kendo-dialog-actions [layout]="this.dialog?.dialog?.instance?.actionsLayout">
28383
+ <button
28384
+ kendoButton
28385
+ themeColor="primary"
28386
+ [svgIcon]="saveIcon"
28387
+ [disabled]="!formGroup.valid"
28388
+ (click)="save()"
28389
+ >
28390
+ {{messageFor('externalEditingSaveText')}}
28391
+ </button>
28392
+ <button
28393
+ kendoButton
28394
+ [svgIcon]="cancelIcon"
28395
+ (click)="cancel()">
28396
+ {{messageFor('externalEditingCancelText')}}
28397
+ </button>
28398
+ </kendo-dialog-actions>
28399
+ `, isInline: true, dependencies: [{ kind: "component", type: FormComponent, selector: "kendo-grid-external-form", inputs: ["controls", "formSettings", "formGroup", "actionButtons"], outputs: ["formSubmit"] }, { kind: "component", type: DialogActionsComponent, selector: "kendo-dialog-actions", inputs: ["actions", "layout"], outputs: ["action"] }, { kind: "component", type: i2.ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }] });
28400
+ }
28401
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DialogFormComponent, decorators: [{
28402
+ type: Component,
28403
+ args: [{
28404
+ selector: 'kendo-grid-dialog-form',
28405
+ standalone: true,
28406
+ imports: [FormComponent, DialogActionsComponent, KENDO_BUTTON],
28407
+ template: `
28408
+ <kendo-grid-external-form
28409
+ [controls]="controls"
28410
+ [formGroup]="formGroup"
28411
+ [formSettings]="formSettings"
28412
+ [actionButtons]="false"></kendo-grid-external-form>
28413
+ <kendo-dialog-actions [layout]="this.dialog?.dialog?.instance?.actionsLayout">
28414
+ <button
28415
+ kendoButton
28416
+ themeColor="primary"
28417
+ [svgIcon]="saveIcon"
28418
+ [disabled]="!formGroup.valid"
28419
+ (click)="save()"
28420
+ >
28421
+ {{messageFor('externalEditingSaveText')}}
28422
+ </button>
28423
+ <button
28424
+ kendoButton
28425
+ [svgIcon]="cancelIcon"
28426
+ (click)="cancel()">
28427
+ {{messageFor('externalEditingCancelText')}}
28428
+ </button>
28429
+ </kendo-dialog-actions>
28430
+ `
28431
+ }]
28432
+ }], ctorParameters: function () { return [{ type: i1$6.DialogRef }, { type: i1$2.LocalizationService }]; }, propDecorators: { controls: [{
28433
+ type: Input
28434
+ }], formGroup: [{
28435
+ type: Input
28436
+ }], formSettings: [{
28437
+ type: Input
28438
+ }] } });
28439
+
28440
+ /**
28441
+ * A directive which encapsulates the editing operations of the Grid when using the
28442
+ * External Form ([see example](slug:editing_directives_grid#external-editing)).
28443
+ */
28444
+ class ExternalEditingDirective extends EditingDirectiveBase {
28445
+ grid;
28446
+ localDataChangesService;
28447
+ /**
28448
+ * The function that creates the `FormGroup` for the edited model.
28449
+ */
28450
+ createFormGroup;
28451
+ /**
28452
+ * Allows you to customize form orientation, hints, labels and error messages.
28453
+ */
28454
+ formSettings;
28455
+ /**
28456
+ * Allows you to customize the Dialog that contains the edit form.
28457
+ */
28458
+ dialogSettings;
28459
+ constructor(grid, localDataChangesService) {
28460
+ super(grid, localDataChangesService);
28461
+ this.grid = grid;
28462
+ this.localDataChangesService = localDataChangesService;
28463
+ }
28464
+ ngOnInit() {
28465
+ super.ngOnInit();
28466
+ this.subscriptions
28467
+ .add(this.grid.edit.subscribe(this.editHandler.bind(this)));
28468
+ }
28469
+ /**
28470
+ * @hidden
28471
+ * Opens a Dialog that contains the edit form.
28472
+ */
28473
+ openEditFormDialog(editEventArgs, formGroup, formSettings) {
28474
+ const settings = { content: DialogFormComponent, title: this.localization.get('externalEditingTitle'), ...this.dialogSettings };
28475
+ const dialog = this.dialogService.open(settings);
28476
+ const formControls = this.normalizeFormSettings(formGroup, editEventArgs);
28477
+ dialog.content.setInput('controls', formControls);
28478
+ formSettings && dialog.content.setInput('formSettings', formSettings);
28479
+ dialog.content.setInput('formGroup', formGroup);
28480
+ dialog.result.subscribe((r) => {
28481
+ const resultType = r['text'];
28482
+ if (resultType === this.localization.get('externalEditingSaveText')) {
28483
+ this.saveHandler({ ...editEventArgs, formGroup });
28484
+ }
28485
+ dialog.close();
28486
+ });
28487
+ }
28488
+ createModel(args) {
28489
+ return this.createFormGroup(args);
28490
+ }
28491
+ editHandler(args) {
28492
+ const formGroup = this.createModel(args);
28493
+ this.openEditFormDialog(args, formGroup, this.formSettings);
28494
+ }
28495
+ saveModel({ dataItem, formGroup, isNew }) {
28496
+ if (!formGroup.dirty && !isNew) {
28497
+ return;
28498
+ }
28499
+ if (formGroup.valid) {
28500
+ const item = dataItem || [];
28501
+ this.editService.assignValues(item, formGroup.value);
28502
+ return item;
28503
+ }
28504
+ markAllAsTouched(formGroup);
28505
+ }
28506
+ addHandler(args) {
28507
+ const formGroup = this.createModel(args);
28508
+ this.openEditFormDialog(args, formGroup, this.formSettings);
28509
+ }
28510
+ normalizeFormSettings(args, editEventArgs) {
28511
+ const editableColumnFields = this.grid.columns.toArray().filter(c => c.field && c.editable && isPresent$1(args.get(c.field))).map(c => c.field);
28512
+ const settings = editableColumnFields.map(k => {
28513
+ const column = this.grid.columns.toArray().find(c => c.field === k);
28514
+ const title = column.title || k;
28515
+ const template = column.editTemplateRef;
28516
+ const templateContext = template ? {
28517
+ $implicit: args,
28518
+ isNew: editEventArgs.isNew,
28519
+ column,
28520
+ dataItem: editEventArgs.dataItem,
28521
+ formGroup: args,
28522
+ rowIndex: editEventArgs.rowIndex
28523
+ } : null;
28524
+ const customSettings = this.formSettings?.fields?.[k];
28525
+ return {
28526
+ name: k,
28527
+ label: customSettings?.label || title,
28528
+ hint: customSettings?.hint,
28529
+ errors: customSettings?.errors,
28530
+ formControl: args.get(k),
28531
+ dataType: column.editor,
28532
+ orientation: this.formSettings?.orientation || 'vertical',
28533
+ template: template,
28534
+ templateContext: templateContext
28535
+ };
28536
+ });
28537
+ return settings.filter(item => isPresent$1(item));
28538
+ }
28539
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ExternalEditingDirective, deps: [{ token: GridComponent }, { token: LocalDataChangesService }], target: i0.ɵɵFactoryTarget.Directive });
28540
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: ExternalEditingDirective, isStandalone: true, selector: "[kendoGridExternalEditing]", inputs: { createFormGroup: ["kendoGridExternalEditing", "createFormGroup"], formSettings: "formSettings", dialogSettings: "dialogSettings" }, usesInheritance: true, ngImport: i0 });
28541
+ }
28542
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ExternalEditingDirective, decorators: [{
28543
+ type: Directive,
28544
+ args: [{
28545
+ selector: '[kendoGridExternalEditing]',
28546
+ standalone: true
28547
+ }]
28548
+ }], ctorParameters: function () { return [{ type: GridComponent }, { type: LocalDataChangesService }]; }, propDecorators: { createFormGroup: [{
28549
+ type: Input,
28550
+ args: ['kendoGridExternalEditing']
28551
+ }], formSettings: [{
28552
+ type: Input
28553
+ }], dialogSettings: [{
28554
+ type: Input
28555
+ }] } });
28556
+
27908
28557
  /**
27909
28558
  * A directive which controls the expanded state of the master detail rows. ([see example](slug:master_detail_expanded_state_grid#toc-built-in-directive))
27910
28559
  */
@@ -29148,6 +29797,7 @@ const KENDO_GRID_DECLARATIONS = [
29148
29797
  TemplateEditingDirective,
29149
29798
  ReactiveEditingDirective,
29150
29799
  InCellEditingDirective,
29800
+ ExternalEditingDirective,
29151
29801
  ExpandDetailsDirective,
29152
29802
  ExpandGroupDirective,
29153
29803
  GroupBindingDirective,
@@ -29156,7 +29806,10 @@ const KENDO_GRID_DECLARATIONS = [
29156
29806
  GridToolbarFocusableDirective,
29157
29807
  StatusBarComponent,
29158
29808
  StatusBarTemplateDirective,
29159
- GridClipboardDirective
29809
+ GridClipboardDirective,
29810
+ FormComponent,
29811
+ DialogFormComponent,
29812
+ FormFormFieldComponent
29160
29813
  ];
29161
29814
  /**
29162
29815
  * @hidden
@@ -29176,6 +29829,7 @@ const KENDO_GRID_EXPORTS = [
29176
29829
  TemplateEditingDirective,
29177
29830
  ReactiveEditingDirective,
29178
29831
  InCellEditingDirective,
29832
+ ExternalEditingDirective,
29179
29833
  ExpandDetailsDirective,
29180
29834
  ExpandGroupDirective,
29181
29835
  GridToolbarFocusableDirective,
@@ -29250,7 +29904,7 @@ const KENDO_GRID = [
29250
29904
  */
29251
29905
  class GridModule {
29252
29906
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GridModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
29253
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: GridModule, imports: [GroupHeaderTemplateDirective, GroupHeaderColumnTemplateDirective, GroupFooterTemplateDirective, GroupHeaderComponent, GroupPanelComponent, ColumnComponent, ColumnGroupComponent, LogicalCellDirective, LogicalRowDirective, FocusableDirective, FooterTemplateDirective, ColGroupComponent, ResizableContainerDirective, i1$3.TemplateContextDirective, FieldAccessorPipe, DetailTemplateDirective, SpanColumnComponent, LoadingComponent, GridTableDirective, CommandColumnComponent, CheckboxColumnComponent, SelectionCheckboxDirective, CellTemplateDirective, EditTemplateDirective, RowDragHandleTemplateDirective, RowDragHintTemplateDirective, TableBodyComponent, NoRecordsTemplateDirective, CellComponent, EditCommandDirective, CancelCommandDirective, SaveCommandDirective, RemoveCommandDirective, AddCommandDirective, AddCommandToolbarDirective, CellLoadingTemplateDirective, LoadingTemplateDirective, RowReorderColumnComponent, HeaderComponent, HeaderTemplateDirective, ColumnHandleDirective, SelectAllCheckboxDirective, 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, FilterRowComponent, FilterCellComponent, FilterCellTemplateDirective, StringFilterCellComponent, NumericFilterCellComponent, AutoCompleteFilterCellComponent, BooleanFilterCellComponent, FilterCellHostDirective, FilterCellWrapperComponent, DateFilterCellComponent, ColumnComponent, ColumnGroupComponent, LogicalCellDirective, LogicalRowDirective, FocusableDirective, FooterTemplateDirective, ColGroupComponent, ResizableContainerDirective, i1$3.TemplateContextDirective, FieldAccessorPipe, DetailTemplateDirective, SpanColumnComponent, LoadingComponent, GridTableDirective, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, FilterInputDirective, ColumnComponent, ColumnGroupComponent, LogicalCellDirective, LogicalRowDirective, FocusableDirective, FooterTemplateDirective, ColGroupComponent, ResizableContainerDirective, i1$3.TemplateContextDirective, FieldAccessorPipe, DetailTemplateDirective, SpanColumnComponent, LoadingComponent, GridTableDirective, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, FilterInputDirective, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuInputWrapperComponent, StringFilterMenuInputComponent, StringFilterMenuComponent, FilterMenuTemplateDirective, NumericFilterMenuComponent, NumericFilterMenuInputComponent, DateFilterMenuInputComponent, DateFilterMenuComponent, FilterMenuHostDirective, BooleanFilterMenuComponent, FilterMenuDropDownListDirective, BooleanFilterRadioButtonDirective, ColumnMenuChooserItemCheckedDirective, ColumnListComponent, ColumnChooserComponent, ColumnMenuChooserComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuSortComponent, ColumnMenuComponent, ColumnMenuLockComponent, ColumnMenuTemplateDirective, ColumnMenuContainerComponent, ColumnMenuItemDirective, ColumnMenuStickComponent, ColumnMenuPositionComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuAutoSizeAllColumnsComponent, GridComponent, ListComponent, ToolbarComponent, LocalizedMessagesDirective, CustomMessagesComponent, DataBindingDirective, ToolbarTemplateDirective, SelectionDirective, TemplateEditingDirective, ReactiveEditingDirective, InCellEditingDirective, ExpandDetailsDirective, ExpandGroupDirective, GroupBindingDirective, GridMarqueeDirective, GridSpacerComponent, GridToolbarFocusableDirective, StatusBarComponent, StatusBarTemplateDirective, GridClipboardDirective, i45.ToolBarComponent, i45.ToolbarCustomMessagesComponent, i45.ToolBarButtonComponent, i45.ToolBarButtonGroupComponent, i45.ToolBarDropDownButtonComponent, i45.ToolBarSeparatorComponent, i45.ToolBarSpacerComponent, i45.ToolBarSplitButtonComponent, i45.ToolBarToolComponent, TableDirective], exports: [GridComponent, ToolbarTemplateDirective, ToolbarComponent, GridSpacerComponent, StatusBarTemplateDirective, DataBindingDirective, SelectionDirective, CustomMessagesComponent, GroupBindingDirective, TemplateEditingDirective, ReactiveEditingDirective, InCellEditingDirective, ExpandDetailsDirective, ExpandGroupDirective, GridToolbarFocusableDirective, GroupHeaderTemplateDirective, GroupHeaderColumnTemplateDirective, GroupFooterTemplateDirective, GroupHeaderComponent, GroupPanelComponent, ColumnComponent, ColumnGroupComponent, LogicalCellDirective, LogicalRowDirective, FocusableDirective, FooterTemplateDirective, ColGroupComponent, ResizableContainerDirective, i1$3.TemplateContextDirective, FieldAccessorPipe, DetailTemplateDirective, SpanColumnComponent, LoadingComponent, GridTableDirective, CommandColumnComponent, CheckboxColumnComponent, SelectionCheckboxDirective, CellTemplateDirective, EditTemplateDirective, RowDragHandleTemplateDirective, RowDragHintTemplateDirective, TableBodyComponent, NoRecordsTemplateDirective, CellComponent, EditCommandDirective, CancelCommandDirective, SaveCommandDirective, RemoveCommandDirective, AddCommandDirective, AddCommandToolbarDirective, CellLoadingTemplateDirective, LoadingTemplateDirective, RowReorderColumnComponent, HeaderComponent, HeaderTemplateDirective, ColumnHandleDirective, SelectAllCheckboxDirective, FilterRowComponent, FilterCellComponent, FilterCellTemplateDirective, StringFilterCellComponent, NumericFilterCellComponent, AutoCompleteFilterCellComponent, BooleanFilterCellComponent, FilterCellHostDirective, FilterCellWrapperComponent, DateFilterCellComponent, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuInputWrapperComponent, StringFilterMenuInputComponent, StringFilterMenuComponent, FilterMenuTemplateDirective, NumericFilterMenuComponent, NumericFilterMenuInputComponent, DateFilterMenuInputComponent, DateFilterMenuComponent, FilterMenuHostDirective, BooleanFilterMenuComponent, FilterMenuDropDownListDirective, BooleanFilterRadioButtonDirective, ColumnChooserComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuSortComponent, ColumnMenuLockComponent, ColumnMenuStickComponent, ColumnMenuPositionComponent, ColumnMenuChooserComponent, ColumnMenuTemplateDirective, ColumnMenuContainerComponent, ColumnMenuItemDirective, ColumnMenuComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuAutoSizeAllColumnsComponent, 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] });
29907
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: GridModule, imports: [GroupHeaderTemplateDirective, GroupHeaderColumnTemplateDirective, GroupFooterTemplateDirective, GroupHeaderComponent, GroupPanelComponent, ColumnComponent, ColumnGroupComponent, LogicalCellDirective, LogicalRowDirective, FocusableDirective, FooterTemplateDirective, ColGroupComponent, ResizableContainerDirective, i1$3.TemplateContextDirective, FieldAccessorPipe, DetailTemplateDirective, SpanColumnComponent, LoadingComponent, GridTableDirective, CommandColumnComponent, CheckboxColumnComponent, SelectionCheckboxDirective, CellTemplateDirective, EditTemplateDirective, RowDragHandleTemplateDirective, RowDragHintTemplateDirective, TableBodyComponent, NoRecordsTemplateDirective, CellComponent, EditCommandDirective, CancelCommandDirective, SaveCommandDirective, RemoveCommandDirective, AddCommandDirective, AddCommandToolbarDirective, CellLoadingTemplateDirective, LoadingTemplateDirective, RowReorderColumnComponent, HeaderComponent, HeaderTemplateDirective, ColumnHandleDirective, SelectAllCheckboxDirective, 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, FilterRowComponent, FilterCellComponent, FilterCellTemplateDirective, StringFilterCellComponent, NumericFilterCellComponent, AutoCompleteFilterCellComponent, BooleanFilterCellComponent, FilterCellHostDirective, FilterCellWrapperComponent, DateFilterCellComponent, ColumnComponent, ColumnGroupComponent, LogicalCellDirective, LogicalRowDirective, FocusableDirective, FooterTemplateDirective, ColGroupComponent, ResizableContainerDirective, i1$3.TemplateContextDirective, FieldAccessorPipe, DetailTemplateDirective, SpanColumnComponent, LoadingComponent, GridTableDirective, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, FilterInputDirective, ColumnComponent, ColumnGroupComponent, LogicalCellDirective, LogicalRowDirective, FocusableDirective, FooterTemplateDirective, ColGroupComponent, ResizableContainerDirective, i1$3.TemplateContextDirective, FieldAccessorPipe, DetailTemplateDirective, SpanColumnComponent, LoadingComponent, GridTableDirective, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, FilterInputDirective, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuInputWrapperComponent, StringFilterMenuInputComponent, StringFilterMenuComponent, FilterMenuTemplateDirective, NumericFilterMenuComponent, NumericFilterMenuInputComponent, DateFilterMenuInputComponent, DateFilterMenuComponent, FilterMenuHostDirective, BooleanFilterMenuComponent, FilterMenuDropDownListDirective, BooleanFilterRadioButtonDirective, ColumnMenuChooserItemCheckedDirective, ColumnListComponent, ColumnChooserComponent, ColumnMenuChooserComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuSortComponent, ColumnMenuComponent, ColumnMenuLockComponent, ColumnMenuTemplateDirective, ColumnMenuContainerComponent, ColumnMenuItemDirective, ColumnMenuStickComponent, ColumnMenuPositionComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuAutoSizeAllColumnsComponent, GridComponent, ListComponent, ToolbarComponent, LocalizedMessagesDirective, CustomMessagesComponent, DataBindingDirective, ToolbarTemplateDirective, SelectionDirective, TemplateEditingDirective, ReactiveEditingDirective, InCellEditingDirective, ExternalEditingDirective, ExpandDetailsDirective, ExpandGroupDirective, GroupBindingDirective, GridMarqueeDirective, GridSpacerComponent, GridToolbarFocusableDirective, StatusBarComponent, StatusBarTemplateDirective, GridClipboardDirective, FormComponent, DialogFormComponent, FormFormFieldComponent, i45.ToolBarComponent, i45.ToolbarCustomMessagesComponent, i45.ToolBarButtonComponent, i45.ToolBarButtonGroupComponent, i45.ToolBarDropDownButtonComponent, i45.ToolBarSeparatorComponent, i45.ToolBarSpacerComponent, i45.ToolBarSplitButtonComponent, i45.ToolBarToolComponent, TableDirective], exports: [GridComponent, ToolbarTemplateDirective, ToolbarComponent, GridSpacerComponent, StatusBarTemplateDirective, DataBindingDirective, SelectionDirective, CustomMessagesComponent, GroupBindingDirective, TemplateEditingDirective, ReactiveEditingDirective, InCellEditingDirective, ExternalEditingDirective, ExpandDetailsDirective, ExpandGroupDirective, GridToolbarFocusableDirective, GroupHeaderTemplateDirective, GroupHeaderColumnTemplateDirective, GroupFooterTemplateDirective, GroupHeaderComponent, GroupPanelComponent, ColumnComponent, ColumnGroupComponent, LogicalCellDirective, LogicalRowDirective, FocusableDirective, FooterTemplateDirective, ColGroupComponent, ResizableContainerDirective, i1$3.TemplateContextDirective, FieldAccessorPipe, DetailTemplateDirective, SpanColumnComponent, LoadingComponent, GridTableDirective, CommandColumnComponent, CheckboxColumnComponent, SelectionCheckboxDirective, CellTemplateDirective, EditTemplateDirective, RowDragHandleTemplateDirective, RowDragHintTemplateDirective, TableBodyComponent, NoRecordsTemplateDirective, CellComponent, EditCommandDirective, CancelCommandDirective, SaveCommandDirective, RemoveCommandDirective, AddCommandDirective, AddCommandToolbarDirective, CellLoadingTemplateDirective, LoadingTemplateDirective, RowReorderColumnComponent, HeaderComponent, HeaderTemplateDirective, ColumnHandleDirective, SelectAllCheckboxDirective, FilterRowComponent, FilterCellComponent, FilterCellTemplateDirective, StringFilterCellComponent, NumericFilterCellComponent, AutoCompleteFilterCellComponent, BooleanFilterCellComponent, FilterCellHostDirective, FilterCellWrapperComponent, DateFilterCellComponent, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuInputWrapperComponent, StringFilterMenuInputComponent, StringFilterMenuComponent, FilterMenuTemplateDirective, NumericFilterMenuComponent, NumericFilterMenuInputComponent, DateFilterMenuInputComponent, DateFilterMenuComponent, FilterMenuHostDirective, BooleanFilterMenuComponent, FilterMenuDropDownListDirective, BooleanFilterRadioButtonDirective, ColumnChooserComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuSortComponent, ColumnMenuLockComponent, ColumnMenuStickComponent, ColumnMenuPositionComponent, ColumnMenuChooserComponent, ColumnMenuTemplateDirective, ColumnMenuContainerComponent, ColumnMenuItemDirective, ColumnMenuComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuAutoSizeAllColumnsComponent, 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] });
29254
29908
  static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GridModule, providers: [
29255
29909
  PopupService,
29256
29910
  ResizeBatchService,
@@ -29265,7 +29919,7 @@ class GridModule {
29265
29919
  MonthViewService,
29266
29920
  YearViewService,
29267
29921
  NavigationService$1
29268
- ], imports: [GroupHeaderComponent, GroupPanelComponent, TableBodyComponent, CellComponent, EditCommandDirective, CancelCommandDirective, SaveCommandDirective, RemoveCommandDirective, AddCommandDirective, 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, StringFilterCellComponent, NumericFilterCellComponent, AutoCompleteFilterCellComponent, BooleanFilterCellComponent, FilterCellWrapperComponent, DateFilterCellComponent, FilterCellOperatorsComponent, FilterCellOperatorsComponent, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuInputWrapperComponent, StringFilterMenuInputComponent, StringFilterMenuComponent, NumericFilterMenuComponent, NumericFilterMenuInputComponent, DateFilterMenuInputComponent, DateFilterMenuComponent, BooleanFilterMenuComponent, ColumnListComponent, ColumnChooserComponent, ColumnMenuChooserComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuSortComponent, ColumnMenuComponent, ColumnMenuLockComponent, ColumnMenuStickComponent, ColumnMenuPositionComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuAutoSizeAllColumnsComponent, GridComponent, ListComponent, i45.ToolBarComponent, i45.ToolbarCustomMessagesComponent, i45.ToolBarButtonComponent, i45.ToolBarButtonGroupComponent, i45.ToolBarDropDownButtonComponent, i45.ToolBarSeparatorComponent, i45.ToolBarSpacerComponent, i45.ToolBarSplitButtonComponent] });
29922
+ ], imports: [GroupHeaderComponent, GroupPanelComponent, TableBodyComponent, CellComponent, EditCommandDirective, CancelCommandDirective, SaveCommandDirective, RemoveCommandDirective, AddCommandDirective, 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, StringFilterCellComponent, NumericFilterCellComponent, AutoCompleteFilterCellComponent, BooleanFilterCellComponent, FilterCellWrapperComponent, DateFilterCellComponent, FilterCellOperatorsComponent, FilterCellOperatorsComponent, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuInputWrapperComponent, StringFilterMenuInputComponent, StringFilterMenuComponent, NumericFilterMenuComponent, NumericFilterMenuInputComponent, DateFilterMenuInputComponent, DateFilterMenuComponent, BooleanFilterMenuComponent, ColumnListComponent, ColumnChooserComponent, ColumnMenuChooserComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuSortComponent, ColumnMenuComponent, ColumnMenuLockComponent, ColumnMenuStickComponent, ColumnMenuPositionComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuAutoSizeAllColumnsComponent, GridComponent, ListComponent, FormComponent, DialogFormComponent, FormFormFieldComponent, i45.ToolBarComponent, i45.ToolbarCustomMessagesComponent, i45.ToolBarButtonComponent, i45.ToolBarButtonGroupComponent, i45.ToolBarDropDownButtonComponent, i45.ToolBarSeparatorComponent, i45.ToolBarSpacerComponent, i45.ToolBarSplitButtonComponent] });
29269
29923
  }
29270
29924
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GridModule, decorators: [{
29271
29925
  type: NgModule,
@@ -29365,8 +30019,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
29365
30019
  */
29366
30020
  class ExcelModule {
29367
30021
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ExcelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
29368
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: ExcelModule, imports: [i1$1.IconComponent, i1$1.SVGIconComponent, ExcelComponent, ExcelCommandDirective, ExcelCommandToolbarDirective, i5$1.ColumnComponent, i5$1.ColumnGroupComponent, i5$1.FooterTemplateDirective, i5$1.GroupFooterTemplateDirective, i5$1.GroupHeaderColumnTemplateDirective, i5$1.GroupHeaderTemplateDirective], exports: [ExcelComponent, ExcelCommandDirective, ExcelCommandToolbarDirective, i5$1.ColumnComponent, i5$1.ColumnGroupComponent, i5$1.FooterTemplateDirective, i5$1.GroupFooterTemplateDirective, i5$1.GroupHeaderColumnTemplateDirective, i5$1.GroupHeaderTemplateDirective] });
29369
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ExcelModule, providers: [IconsService], imports: [KENDO_ICONS, ExcelCommandDirective, i5$1.ColumnComponent, i5$1.ColumnGroupComponent] });
30022
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: ExcelModule, imports: [i1$1.IconComponent, i1$1.SVGIconComponent, ExcelComponent, ExcelCommandDirective, ExcelCommandToolbarDirective, i5$2.ColumnComponent, i5$2.ColumnGroupComponent, i5$2.FooterTemplateDirective, i5$2.GroupFooterTemplateDirective, i5$2.GroupHeaderColumnTemplateDirective, i5$2.GroupHeaderTemplateDirective], exports: [ExcelComponent, ExcelCommandDirective, ExcelCommandToolbarDirective, i5$2.ColumnComponent, i5$2.ColumnGroupComponent, i5$2.FooterTemplateDirective, i5$2.GroupFooterTemplateDirective, i5$2.GroupHeaderColumnTemplateDirective, i5$2.GroupHeaderTemplateDirective] });
30023
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ExcelModule, providers: [IconsService], imports: [KENDO_ICONS, ExcelCommandDirective, i5$2.ColumnComponent, i5$2.ColumnGroupComponent] });
29370
30024
  }
29371
30025
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ExcelModule, decorators: [{
29372
30026
  type: NgModule,
@@ -29381,5 +30035,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
29381
30035
  * Generated bundle index. Do not edit.
29382
30036
  */
29383
30037
 
29384
- export { AddCommandDirective, AddCommandToolbarDirective, AfterEqFilterOperatorComponent, AfterFilterOperatorComponent, AutoCompleteFilterCellComponent, BaseFilterCellComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, BooleanFilterCellComponent, BooleanFilterComponent, BooleanFilterMenuComponent, BooleanFilterRadioButtonDirective, BrowserSupportService, CELL_CONTEXT, CancelCommandDirective, CellCloseEvent, CellComponent, CellLoadingTemplateDirective, CellSelectionAggregateService, CellSelectionService, CellTemplateDirective, ChangeNotificationService, CheckboxColumnComponent, ColGroupComponent, ColumnBase, ColumnChooserComponent, ColumnComponent, ColumnGroupComponent, ColumnHandleDirective, ColumnInfoService, ColumnListComponent, ColumnLockedChangeEvent, ColumnMenuAutoSizeAllColumnsComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuChooserComponent, ColumnMenuComponent, ColumnMenuContainerComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuItemDirective, ColumnMenuLockComponent, ColumnMenuPositionComponent, ColumnMenuService, ColumnMenuSortComponent, ColumnMenuStickComponent, ColumnMenuTemplateDirective, ColumnReorderEvent, ColumnReorderService, ColumnResizingService, ColumnStickyChangeEvent, ColumnVisibilityChangeEvent, ColumnsContainer, CommandColumnComponent, ContainsFilterOperatorComponent, ContextService, CustomMessagesComponent, DEFAULT_SCROLLER_FACTORY, DataBindingDirective, DateFilterCellComponent, DateFilterComponent, DateFilterMenuComponent, DateFilterMenuInputComponent, DetailCollapseEvent, DetailExpandEvent, DetailTemplateDirective, DetailsService, DoesNotContainFilterOperatorComponent, DomEventsService, DragAndDropService, DragHintService, DropCueService, EditCommandDirective, EditTemplateDirective, EditingDirectiveBase, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, ExcelCommandDirective, ExcelCommandToolbarDirective, ExcelComponent, ExcelExportEvent, ExcelModule, ExcelService, ExpandDetailsDirective, ExpandGroupDirective, FieldAccessorPipe, FilterCellComponent, FilterCellHostDirective, FilterCellOperatorsComponent, FilterCellTemplateDirective, FilterCellWrapperComponent, FilterInputDirective, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuDropDownListDirective, FilterMenuHostDirective, FilterMenuInputWrapperComponent, FilterMenuTemplateDirective, FilterRowComponent, FilterService, FocusRoot, FocusableDirective, FooterComponent, FooterTemplateDirective, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, GridClipboardDirective, GridComponent, GridModule, GridSpacerComponent, GridTableDirective, GridToolbarFocusableDirective, GridToolbarNavigationService, GroupBindingDirective, GroupFooterTemplateDirective, GroupHeaderColumnTemplateDirective, GroupHeaderComponent, GroupHeaderTemplateDirective, GroupInfoService, GroupPanelComponent, GroupsService, HeaderComponent, HeaderTemplateDirective, IdService, InCellEditingDirective, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, KENDO_GRID, KENDO_GRID_BODY_EXPORTS, KENDO_GRID_COLUMN_DRAGANDDROP, KENDO_GRID_COLUMN_MENU_DECLARATIONS, KENDO_GRID_COLUMN_MENU_EXPORTS, KENDO_GRID_DECLARATIONS, KENDO_GRID_EXCEL_EXPORT, KENDO_GRID_EXPORTS, KENDO_GRID_FILTER_MENU, KENDO_GRID_FILTER_MENU_EXPORTS, KENDO_GRID_FILTER_OPERATORS, KENDO_GRID_FILTER_ROW, KENDO_GRID_FILTER_ROW_EXPORTS, KENDO_GRID_FILTER_SHARED, KENDO_GRID_FOOTER_EXPORTS, KENDO_GRID_GROUP_EXPORTS, KENDO_GRID_HEADER_EXPORTS, KENDO_GRID_PDF_EXPORT, KENDO_GRID_SHARED, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, ListComponent, LoadingComponent, LoadingTemplateDirective, LocalDataChangesService, LogicalCellDirective, LogicalRowDirective, MenuTabbingService, NavigationService, NoRecordsTemplateDirective, NotEqualFilterOperatorComponent, NumericFilterCellComponent, NumericFilterComponent, NumericFilterMenuComponent, NumericFilterMenuInputComponent, PDFCommandDirective, PDFCommandToolbarDirective, PDFComponent, PDFMarginComponent, PDFModule, PDFService, PDFTemplateDirective, PopupCloseEvent, ReactiveEditingDirective, RemoveCommandDirective, ResizableContainerDirective, ResizeService, ResponsiveService, RowDragHandleTemplateDirective, RowDragHintTemplateDirective, RowEditingDirectiveBase, RowReorderColumnComponent, RowReorderService, SaveCommandDirective, ScrollRequestService, ScrollSyncService, SelectAllCheckboxDirective, SelectionCheckboxDirective, SelectionDirective, SelectionService, SinglePopupService, SizingOptionsService, Skip, SortService, SpanColumnComponent, StartsWithFilterOperatorComponent, StatusBarTemplateDirective, StringFilterCellComponent, StringFilterComponent, StringFilterMenuComponent, StringFilterMenuInputComponent, SuspendService, TableBodyComponent, TableDirective, TemplateEditingDirective, ToolbarComponent, ToolbarTemplateDirective, count, defaultTrackBy, hasFilterMenu, hasFilterRow, isFilterable, slice };
30038
+ export { AddCommandDirective, AddCommandToolbarDirective, AfterEqFilterOperatorComponent, AfterFilterOperatorComponent, AutoCompleteFilterCellComponent, BaseFilterCellComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, BooleanFilterCellComponent, BooleanFilterComponent, BooleanFilterMenuComponent, BooleanFilterRadioButtonDirective, BrowserSupportService, CELL_CONTEXT, CancelCommandDirective, CellCloseEvent, CellComponent, CellLoadingTemplateDirective, CellSelectionAggregateService, CellSelectionService, CellTemplateDirective, ChangeNotificationService, CheckboxColumnComponent, ColGroupComponent, ColumnBase, ColumnChooserComponent, ColumnComponent, ColumnGroupComponent, ColumnHandleDirective, ColumnInfoService, ColumnListComponent, ColumnLockedChangeEvent, ColumnMenuAutoSizeAllColumnsComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuChooserComponent, ColumnMenuComponent, ColumnMenuContainerComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuItemDirective, ColumnMenuLockComponent, ColumnMenuPositionComponent, ColumnMenuService, ColumnMenuSortComponent, ColumnMenuStickComponent, ColumnMenuTemplateDirective, ColumnReorderEvent, ColumnReorderService, ColumnResizingService, ColumnStickyChangeEvent, ColumnVisibilityChangeEvent, ColumnsContainer, CommandColumnComponent, ContainsFilterOperatorComponent, ContextService, CustomMessagesComponent, DEFAULT_SCROLLER_FACTORY, DataBindingDirective, DateFilterCellComponent, DateFilterComponent, DateFilterMenuComponent, DateFilterMenuInputComponent, DetailCollapseEvent, DetailExpandEvent, DetailTemplateDirective, DetailsService, DoesNotContainFilterOperatorComponent, DomEventsService, DragAndDropService, DragHintService, DropCueService, EditCommandDirective, EditTemplateDirective, EditingDirectiveBase, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, ExcelCommandDirective, ExcelCommandToolbarDirective, ExcelComponent, ExcelExportEvent, ExcelModule, ExcelService, ExpandDetailsDirective, ExpandGroupDirective, ExternalEditingDirective, FieldAccessorPipe, FilterCellComponent, FilterCellHostDirective, FilterCellOperatorsComponent, FilterCellTemplateDirective, FilterCellWrapperComponent, FilterInputDirective, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuDropDownListDirective, FilterMenuHostDirective, FilterMenuInputWrapperComponent, FilterMenuTemplateDirective, FilterRowComponent, FilterService, FocusRoot, FocusableDirective, FooterComponent, FooterTemplateDirective, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, GridClipboardDirective, GridComponent, GridModule, GridSpacerComponent, GridTableDirective, GridToolbarFocusableDirective, GridToolbarNavigationService, GroupBindingDirective, GroupFooterTemplateDirective, GroupHeaderColumnTemplateDirective, GroupHeaderComponent, GroupHeaderTemplateDirective, GroupInfoService, GroupPanelComponent, GroupsService, HeaderComponent, HeaderTemplateDirective, IdService, InCellEditingDirective, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, KENDO_GRID, KENDO_GRID_BODY_EXPORTS, KENDO_GRID_COLUMN_DRAGANDDROP, KENDO_GRID_COLUMN_MENU_DECLARATIONS, KENDO_GRID_COLUMN_MENU_EXPORTS, KENDO_GRID_DECLARATIONS, KENDO_GRID_EXCEL_EXPORT, KENDO_GRID_EXPORTS, KENDO_GRID_FILTER_MENU, KENDO_GRID_FILTER_MENU_EXPORTS, KENDO_GRID_FILTER_OPERATORS, KENDO_GRID_FILTER_ROW, KENDO_GRID_FILTER_ROW_EXPORTS, KENDO_GRID_FILTER_SHARED, KENDO_GRID_FOOTER_EXPORTS, KENDO_GRID_GROUP_EXPORTS, KENDO_GRID_HEADER_EXPORTS, KENDO_GRID_PDF_EXPORT, KENDO_GRID_SHARED, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, ListComponent, LoadingComponent, LoadingTemplateDirective, LocalDataChangesService, LogicalCellDirective, LogicalRowDirective, MenuTabbingService, NavigationService, NoRecordsTemplateDirective, NotEqualFilterOperatorComponent, NumericFilterCellComponent, NumericFilterComponent, NumericFilterMenuComponent, NumericFilterMenuInputComponent, PDFCommandDirective, PDFCommandToolbarDirective, PDFComponent, PDFMarginComponent, PDFModule, PDFService, PDFTemplateDirective, PopupCloseEvent, ReactiveEditingDirective, RemoveCommandDirective, ResizableContainerDirective, ResizeService, ResponsiveService, RowDragHandleTemplateDirective, RowDragHintTemplateDirective, RowEditingDirectiveBase, RowReorderColumnComponent, RowReorderService, SaveCommandDirective, ScrollRequestService, ScrollSyncService, SelectAllCheckboxDirective, SelectionCheckboxDirective, SelectionDirective, SelectionService, SinglePopupService, SizingOptionsService, Skip, SortService, SpanColumnComponent, StartsWithFilterOperatorComponent, StatusBarTemplateDirective, StringFilterCellComponent, StringFilterComponent, StringFilterMenuComponent, StringFilterMenuInputComponent, SuspendService, TableBodyComponent, TableDirective, TemplateEditingDirective, ToolbarComponent, ToolbarTemplateDirective, count, defaultTrackBy, hasFilterMenu, hasFilterRow, isFilterable, slice };
29385
30039