@progress/kendo-angular-grid 12.0.0-develop.8 → 12.0.0-develop.9

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 (87) hide show
  1. package/column-menu/column-menu-item-content-template.directive.d.ts +13 -24
  2. package/column-menu/column-menu-template.directive.d.ts +14 -28
  3. package/columns/column-base.d.ts +4 -0
  4. package/columns/reorder-column.component.d.ts +31 -0
  5. package/databinding.directive.d.ts +15 -1
  6. package/editing/add-command.directive.d.ts +1 -1
  7. package/editing/cancel-command.directive.d.ts +4 -16
  8. package/editing/edit-template.directive.d.ts +2 -3
  9. package/editing/remove-command.directive.d.ts +6 -6
  10. package/editing/save-command.directive.d.ts +3 -15
  11. package/editing-directives/in-cell-editing.directive.d.ts +1 -1
  12. package/editing-directives/template-editing.directive.d.ts +1 -1
  13. package/esm2020/column-menu/column-menu-item-content-template.directive.mjs +13 -24
  14. package/esm2020/column-menu/column-menu-template.directive.mjs +14 -28
  15. package/esm2020/columns/column-base.mjs +4 -0
  16. package/esm2020/columns/reorder-column.component.mjs +55 -0
  17. package/esm2020/databinding.directive.mjs +30 -3
  18. package/esm2020/editing/add-command.directive.mjs +1 -1
  19. package/esm2020/editing/cancel-command.directive.mjs +4 -16
  20. package/esm2020/editing/edit-template.directive.mjs +2 -3
  21. package/esm2020/editing/remove-command.directive.mjs +6 -6
  22. package/esm2020/editing/save-command.directive.mjs +3 -15
  23. package/esm2020/editing-directives/in-cell-editing.directive.mjs +1 -1
  24. package/esm2020/editing-directives/template-editing.directive.mjs +1 -1
  25. package/esm2020/excel/excel-command.directive.mjs +2 -2
  26. package/esm2020/grid.component.mjs +195 -38
  27. package/esm2020/grid.module.mjs +70 -65
  28. package/esm2020/grouping/group-footer-template.directive.mjs +9 -35
  29. package/esm2020/grouping/group-header-column-template.directive.mjs +2 -2
  30. package/esm2020/grouping/group-header-template.directive.mjs +9 -37
  31. package/esm2020/index.mjs +1 -0
  32. package/esm2020/localization/messages.mjs +3 -1
  33. package/esm2020/navigation/focusable.directive.mjs +10 -41
  34. package/esm2020/package-metadata.mjs +2 -2
  35. package/esm2020/pager/pager-template.directive.mjs +13 -46
  36. package/esm2020/pdf/pdf-template.directive.mjs +10 -38
  37. package/esm2020/rendering/body.module.mjs +9 -4
  38. package/esm2020/rendering/cell-loading.template.directive.mjs +11 -8
  39. package/esm2020/rendering/cell-template.directive.mjs +11 -35
  40. package/esm2020/rendering/cell.component.mjs +43 -10
  41. package/esm2020/rendering/details/detail-template.directive.mjs +10 -58
  42. package/esm2020/rendering/details-expand.directive.mjs +1 -1
  43. package/esm2020/rendering/footer/footer-template.directive.mjs +8 -35
  44. package/esm2020/rendering/header/header-template.directive.mjs +9 -36
  45. package/esm2020/rendering/loading-template.directive.mjs +1 -1
  46. package/esm2020/rendering/no-records-template.directive.mjs +11 -58
  47. package/esm2020/rendering/toolbar/toolbar-template.directive.mjs +10 -56
  48. package/esm2020/row-reordering/row-reorder.service.mjs +232 -0
  49. package/esm2020/row-reordering/types.mjs +5 -0
  50. package/esm2020/row-reordering/utils.mjs +87 -0
  51. package/esm2020/selection/selectall-checkbox.directive.mjs +12 -1
  52. package/esm2020/selection/selection-checkbox.directive.mjs +11 -44
  53. package/esm2020/selection/selection-default.mjs +1 -0
  54. package/esm2020/selection/selection.directive.mjs +1 -1
  55. package/excel/excel-command.directive.d.ts +2 -2
  56. package/fesm2015/progress-kendo-angular-grid.mjs +830 -682
  57. package/fesm2020/progress-kendo-angular-grid.mjs +826 -682
  58. package/grid.component.d.ts +46 -4
  59. package/grid.module.d.ts +87 -85
  60. package/grouping/group-footer-template.directive.d.ts +9 -35
  61. package/grouping/group-header-column-template.directive.d.ts +2 -2
  62. package/grouping/group-header-template.directive.d.ts +9 -37
  63. package/index.d.ts +2 -0
  64. package/localization/messages.d.ts +5 -1
  65. package/navigation/focusable.directive.d.ts +10 -41
  66. package/package.json +15 -14
  67. package/pager/pager-template.directive.d.ts +13 -46
  68. package/pdf/pdf-template.directive.d.ts +10 -38
  69. package/rendering/body.module.d.ts +9 -8
  70. package/rendering/cell-loading.template.directive.d.ts +11 -8
  71. package/rendering/cell-template.directive.d.ts +11 -35
  72. package/rendering/cell.component.d.ts +5 -0
  73. package/rendering/details/detail-template.directive.d.ts +10 -58
  74. package/rendering/details-expand.directive.d.ts +1 -1
  75. package/rendering/footer/footer-template.directive.d.ts +8 -35
  76. package/rendering/header/header-template.directive.d.ts +9 -36
  77. package/rendering/loading-template.directive.d.ts +1 -1
  78. package/rendering/no-records-template.directive.d.ts +11 -58
  79. package/rendering/toolbar/toolbar-template.directive.d.ts +10 -56
  80. package/row-reordering/row-reorder.service.d.ts +56 -0
  81. package/row-reordering/types.d.ts +40 -0
  82. package/row-reordering/utils.d.ts +78 -0
  83. package/schematics/ngAdd/index.js +2 -2
  84. package/selection/selectall-checkbox.directive.d.ts +12 -1
  85. package/selection/selection-checkbox.directive.d.ts +11 -44
  86. package/selection/selection-default.d.ts +1 -0
  87. package/selection/selection.directive.d.ts +1 -1
@@ -5,7 +5,7 @@
5
5
  import * as i0 from '@angular/core';
6
6
  import { InjectionToken, Component, HostBinding, Input, EventEmitter, Injectable, Optional, Inject, Directive, SkipSelf, QueryList, isDevMode, ContentChildren, ContentChild, forwardRef, Host, Output, SecurityContext, HostListener, ChangeDetectionStrategy, ViewChild, ViewChildren, Self, TemplateRef, Pipe, ViewEncapsulation, NgModule } from '@angular/core';
7
7
  import * as i1$1 from '@progress/kendo-angular-common';
8
- import { isDocumentAvailable, Keys, closest as closest$1, isFocusable as isFocusable$1, anyChanged, isChanged as isChanged$1, KendoInput, guid, hasObservers, ResizeSensorComponent, DraggableModule, EventsModule, ResizeSensorModule } from '@progress/kendo-angular-common';
8
+ import { isDocumentAvailable, Keys, isPresent as isPresent$1, closest as closest$1, isFocusable as isFocusable$1, anyChanged, isChanged as isChanged$1, KendoInput, guid, hasObservers, ResizeSensorComponent, DraggableModule, EventsModule, ResizeSensorModule } from '@progress/kendo-angular-common';
9
9
  import { merge, of, Subject, from, Subscription, interval, fromEvent, zip as zip$1, BehaviorSubject, Observable } from 'rxjs';
10
10
  import * as i1 from '@progress/kendo-angular-l10n';
11
11
  import { ComponentMessages, LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';
@@ -19,7 +19,9 @@ import { orderBy, isCompositeFilterDescriptor, process, filterBy } from '@progre
19
19
  import * as i1$2 from '@progress/kendo-angular-popup';
20
20
  import { PopupModule } from '@progress/kendo-angular-popup';
21
21
  import * as i1$3 from '@angular/platform-browser';
22
- import { caretAltLeftIcon, caretAltToLeftIcon, caretAltRightIcon, caretAltToRightIcon, sortDescSmallIcon, sortAscSmallIcon, filterIcon, unlockIcon, lockIcon, stickIcon, unstickIcon, setColumnPositionIcon, columnsIcon, maxWidthIcon, displayInlineBlockIcon, moreVerticalIcon, filterClearIcon, caretAltDownIcon, minusIcon, plusIcon } from '@progress/kendo-svg-icons';
22
+ import * as i40 from '@progress/kendo-angular-utils';
23
+ import { DragTargetContainerDirective, DropTargetContainerDirective, DragAndDropModule as DragAndDropModule$1 } from '@progress/kendo-angular-utils';
24
+ import { cancelIcon, insertMiddleIcon, caretAltLeftIcon, caretAltToLeftIcon, caretAltRightIcon, caretAltToRightIcon, sortDescSmallIcon, sortAscSmallIcon, filterIcon, unlockIcon, lockIcon, stickIcon, unstickIcon, setColumnPositionIcon, columnsIcon, maxWidthIcon, displayInlineBlockIcon, moreVerticalIcon, filterClearIcon, reorderIcon, caretAltDownIcon, minusIcon, plusIcon } from '@progress/kendo-svg-icons';
23
25
  import * as i4$1 from '@progress/kendo-angular-buttons';
24
26
  import { ButtonModule, ChipModule, Button } from '@progress/kendo-angular-buttons';
25
27
  import * as i3 from '@progress/kendo-angular-inputs';
@@ -30,7 +32,7 @@ import * as i5 from '@progress/kendo-angular-label';
30
32
  import { LabelModule } from '@progress/kendo-angular-label';
31
33
  import * as i3$1 from '@progress/kendo-angular-icons';
32
34
  import { IconsModule } from '@progress/kendo-angular-icons';
33
- import * as i5$1 from '@progress/kendo-angular-dateinputs';
35
+ import * as i4$3 from '@progress/kendo-angular-dateinputs';
34
36
  import { DatePickerModule } from '@progress/kendo-angular-dateinputs';
35
37
  import { trigger, state, style, transition, animate } from '@angular/animations';
36
38
  import { getter } from '@progress/kendo-common';
@@ -492,47 +494,16 @@ const EMPTY_CELL_CONTEXT = {};
492
494
  * [focus in a navigable Grid]({% slug keyboard_navigation_grid %}).
493
495
  *
494
496
  * @example
495
- * ```ts-preview
496
- * _@Component({
497
- * selector: 'my-app',
498
- * template: `
499
- * <input type="text" placeholder="Tab stop #0" style="margin-bottom: 8px;" />
500
- * <kendo-grid [data]="data" [navigable]="true">
501
- * <kendo-grid-column field="ProductID" title="Product ID" [width]="100">
502
- * </kendo-grid-column>
503
- * <kendo-grid-column field="ProductName" title="Product Name" [width]="150">
504
- * </kendo-grid-column>
505
- * <kendo-grid-column>
506
- * <ng-template kendoGridCellTemplate let-dataItem>
507
- * <!-- The first focusable element will be focused when pressing Enter on the cell -->
508
- * <input type="text" kendoGridFocusable [value]="dataItem.ProductName" style="margin-right: 8px;" />
509
- * <button kendoGridFocusable>Update</button>
510
- * </ng-template>
511
- * </kendo-grid-column>
512
- * <kendo-grid-column [width]="100">
513
- * <ng-template kendoGridCellTemplate>
514
- * <!-- A single focusable element will be focused during navigation -->
515
- * <button kendoGridFocusable>Delete</button>
516
- * </ng-template>
517
- * </kendo-grid-column>
518
- * </kendo-grid>
519
- * <input type="text" placeholder="Tab stop #2" style="margin-top: 8px;" />
520
- * `
521
- * })
522
- *
523
- * class AppComponent {
524
- * public readonly data: any = [{
525
- * "ProductID": 1,
526
- * "ProductName": "Chai",
527
- * "UnitPrice": 18.0000,
528
- * "Discontinued": true
529
- * }, {
530
- * "ProductID": 2,
531
- * "ProductName": "Chang",
532
- * "UnitPrice": 19.0000,
533
- * "Discontinued": false
534
- * }];
535
- * }
497
+ * ```html
498
+ * <kendo-grid [data]="data" [navigable]="true">
499
+ * <kendo-grid-column>
500
+ * <ng-template kendoGridCellTemplate let-dataItem>
501
+ * <!-- The first focusable element will be focused when pressing Enter on the cell -->
502
+ * <input type="text" kendoGridFocusable [value]="dataItem.ProductName" style="margin-right: 8px;" />
503
+ * <button kendoGridFocusable>Update</button>
504
+ * </ng-template>
505
+ * </kendo-grid-column>
506
+ * </kendo-grid>
536
507
  * ```
537
508
  */
538
509
  class FocusableDirective {
@@ -2855,15 +2826,15 @@ const packageMetadata = {
2855
2826
  name: '@progress/kendo-angular-grid',
2856
2827
  productName: 'Kendo UI for Angular',
2857
2828
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
2858
- publishDate: 1681814065,
2859
- version: '12.0.0-develop.8',
2829
+ publishDate: 1681884669,
2830
+ version: '12.0.0-develop.9',
2860
2831
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
2861
2832
  };
2862
2833
 
2863
2834
  /**
2864
- * Represents the column cell template of the Grid ([more information and example]({% slug templates_columns_grid %}#toc-cell-template)).
2865
- * Helps to customize the content of the cells. To define the cell template, nest an `<ng-template>` tag
2866
- * with the `kendoGridCellTemplate` directive inside a `<kendo-grid-column>` tag.
2835
+ * Represents the column cell template of the Grid.
2836
+ * Helps to customize the content of the cells. To define the cell template, nest an `<ng-template>` tag with the
2837
+ * `kendoGridCellTemplate` directive inside a `<kendo-grid-column>` tag [see example](slug:templates_columns_grid#toc-cell-template).
2867
2838
  *
2868
2839
  * The template context is set to the current data item and the following additional fields are passed:
2869
2840
  * - `columnIndex`&mdash;The current column index. Use it as an alias for a template variable by utilizing the `let-columnIndex="columnIndex"` syntax.
@@ -2872,38 +2843,14 @@ const packageMetadata = {
2872
2843
  * - `column`&mdash;The current column instance. Use it as an alias for a template variable by utilizing the `let-column="column"` syntax.
2873
2844
  *
2874
2845
  * @example
2875
- * ```ts-preview
2876
- *
2877
- * _@Component({
2878
- * selector: 'my-app',
2879
- * template: `
2880
- * <kendo-grid [data]="gridData">
2881
- * <kendo-grid-column field="ProductName">
2882
- * <ng-template kendoGridCellTemplate let-dataItem let-rowIndex="rowIndex">
2883
- * Data Row #: {{rowIndex}} /
2884
- * <strong>{{dataItem.ProductName}}</strong>
2885
- * ({{dataItem.Discontinued ? "discontinued" : "active"}})
2886
- * </ng-template>
2887
- * </kendo-grid-column>
2888
- * </kendo-grid>
2889
- * `
2890
- * })
2891
- *
2892
- * class AppComponent {
2893
- * public gridData = [{
2894
- * "ProductID": 1,
2895
- * "ProductName": "Chai",
2896
- * "UnitPrice": 18.0000,
2897
- * "Discontinued": false
2898
- * }, {
2899
- * "ProductID": 2,
2900
- * "ProductName": "Chang",
2901
- * "UnitPrice": 19.0000,
2902
- * "Discontinued": true
2903
- * }
2904
- * ];
2905
- * }
2906
- *
2846
+ * ```html
2847
+ * <kendo-grid [data]="gridData" ...>
2848
+ * <kendo-grid-column field="ProductName">
2849
+ * <ng-template kendoGridCellTemplate let-dataItem let-rowIndex="rowIndex" let-column="column">
2850
+ * Data Row: {{rowIndex}}
2851
+ * </ng-template>
2852
+ * </kendo-grid-column>
2853
+ * </kendo-grid>
2907
2854
  * ```
2908
2855
  */
2909
2856
  class CellTemplateDirective {
@@ -2925,7 +2872,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
2925
2872
  /**
2926
2873
  * Represents the group-header cell template of the Grid which helps to customize the content of the group header item.
2927
2874
  * To define the group header template, nest an `<ng-template>` tag with the `kendoGridGroupHeaderTemplate`
2928
- * directive inside `<kendo-grid-column>`.
2875
+ * directive inside `<kendo-grid-column>`. ([See example](slug:grouping_grid_templates#toc-header-template)).
2929
2876
  *
2930
2877
  * The template context is set to the current data item and the following additional fields are passed:
2931
2878
  * - `group`&mdash;The current group item.
@@ -2934,44 +2881,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
2934
2881
  * - `aggregates`&mdash;All aggregate values for the current group.
2935
2882
  * - `index`&mdash;The index of the current group.
2936
2883
  * - `expanded`&mdash;A boolean value indicating if the group is currently expanded.
2937
- * ([see example]({% slug groupable_grid_with_aggregates %})).
2938
2884
  *
2939
2885
  * @example
2940
- * ```ts
2941
- * import { process } from '@progress/kendo-data-query';
2942
- *
2943
- * _@Component({
2944
- * selector: 'my-app',
2945
- * template: `
2946
- * <kendo-grid [data]="gridData" [group]="groups">
2947
- * <kendo-grid-column field="ProductName">
2948
- * <ng-template kendoGridGroupHeaderTemplate let-group let-field="field" let-value="value">
2949
- * <strong>{{field}}</strong>: {{value}}
2950
- * </ng-template>
2951
- * </kendo-grid-column>
2952
- * </kendo-grid>
2953
- * `
2954
- * })
2955
- *
2956
- * class AppComponent {
2957
- * public groups = [{ field: "ProductName" }];
2958
- *
2959
- * public gridData = process([{
2960
- * "ProductID": 1,
2961
- * "ProductName": "Chai",
2962
- * "UnitPrice": 18.0000,
2963
- * "Discontinued": false
2964
- * }, {
2965
- * "ProductID": 2,
2966
- * "ProductName": "Chang",
2967
- * "UnitPrice": 19.0000,
2968
- * "Discontinued": true
2969
- * }
2970
- * ], {
2971
- * group: this.groups
2972
- * });
2973
- * }
2974
- *
2886
+ * ```html
2887
+ * <kendo-grid [data]="gridData" [group]="groups">
2888
+ * <kendo-grid-column field="ProductName">
2889
+ * <ng-template kendoGridGroupHeaderTemplate let-group let-field="field" let-value="value">
2890
+ * <strong>{{field}}</strong>: {{value}}
2891
+ * </ng-template>
2892
+ * </kendo-grid-column>
2893
+ * </kendo-grid>
2975
2894
  * ```
2976
2895
  */
2977
2896
  class GroupHeaderTemplateDirective {
@@ -2993,7 +2912,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
2993
2912
  /**
2994
2913
  * Represents the group-header column template of the Grid which helps to customize the content of the group headers.
2995
2914
  * To define the group header template, nest an `<ng-template>` tag with the `kendoGridGroupHeaderColumnTemplate`
2996
- * directive inside `<kendo-grid-column>`. ([See example]({% slug groupable_grid_with_aggregates %})).
2915
+ * directive inside `<kendo-grid-column>`. ([See example](slug:grouping_grid_templates#toc-header-column-template)).
2997
2916
  *
2998
2917
  * The template context is set to the current data item and the following additional fields are passed:
2999
2918
  * - `group`&mdash;The current group item.
@@ -3002,7 +2921,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
3002
2921
  * - `aggregates`&mdash;All aggregate values for the current group.
3003
2922
  *
3004
2923
  * @example
3005
- * ```ts
2924
+ * ```html
3006
2925
  * <kendo-grid-column field="ProductName" title="Product Name">
3007
2926
  * <ng-template kendoGridGroupHeaderColumnTemplate let-group="group" let-aggregates="aggregates">
3008
2927
  * <span title="Group Header Column Template for ProductName">
@@ -3029,13 +2948,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
3029
2948
  }] }]; } });
3030
2949
 
3031
2950
  /**
3032
- * Represents the column edit-cell template of the Grid ([see example]({% slug inline_editing_grid %}#toc-using-reactive-forms)).
2951
+ * Represents the column edit-cell template of the Grid ([see example](slug:custom_reactive_editing_grid#toc-setting-up-custom-inputs)).
3033
2952
  * Helps to customize the content of the edited cells. To define the cell template, nest an `<ng-template>`
3034
2953
  * tag with the `kendoGridEditTemplate` directive inside a `<kendo-grid-column>` tag.
3035
2954
  *
3036
2955
  * The template context is set to the current form group and the following additional fields are passed:
3037
- * - `formGroup`&mdash;The current [FormGroup](link:site.data.urls.angular['formgroupapi']).
3038
- * Represents the default context that will be assigned to any template variable which utilizes the `let-x` syntax&mdash;for example, `let-formGroup`.
2956
+ * - `formGroup`&mdash;The current [FormGroup](link:site.data.urls.angular['formgroupapi']). Represents the default context that will be assigned to any template variable which utilizes the `let-x` syntax&mdash;for example, `let-formGroup`.
3039
2957
  * If you use the Grid inside [Template-Driven Forms](link:site.data.urls.angular['forms']), it will be `undefined`.
3040
2958
  * - `rowIndex`&mdash;The current data row index. If inside a new item row, `rowIndex` is `-1`. Use it as an alias for a template variable by utilizing the `let-rowIndex="rowIndex"` syntax.
3041
2959
  * - `dataItem`&mdash;The current data item. Use it as an alias for a template variable by utilizing the `let-dataItem="dataItem"` syntax.
@@ -3063,47 +2981,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
3063
2981
  * To define the group footer template, nest an `<ng-template>` tag with the `kendoGridGroupFooterTemplate` directive
3064
2982
  * inside `<kendo-grid-column>`.
3065
2983
  *
3066
- * The template context is set to the current aggregates and the following additional fields are passed:
2984
+ * The template context is set to the current data item and the following additional fields are passed:
3067
2985
  * - `column`&mdash;Defines an instance of the `ColumnComponent` option.
3068
2986
  * - `field`&mdash;The current column field name.
3069
2987
  * - `group`&mdash;The current group data item.
3070
2988
  * - `aggregates`&mdash;All aggregate values for the current group.
3071
2989
  *
3072
2990
  * @example
3073
- * ```ts-preview
3074
- * import { process } from '@progress/kendo-data-query';
3075
- *
3076
- * _@Component({
3077
- * selector: 'my-app',
3078
- * template: `
3079
- * <kendo-grid [data]="gridData" [group]="groups">
3080
- * <kendo-grid-column field="ProductName">
3081
- * <ng-template kendoGridGroupFooterTemplate let-aggregates let-field="field">
3082
- * Count: {{aggregates[field].count}}
3083
- * </ng-template>
3084
- * </kendo-grid-column>
3085
- * </kendo-grid>
3086
- * `
3087
- * })
3088
- *
3089
- * class AppComponent {
3090
- * public groups = [{ field: "ProductName", aggregates: [{ field: "ProductName", aggregate: "count" }] }];
3091
- *
3092
- * public gridData = process([{
3093
- * "ProductID": 1,
3094
- * "ProductName": "Chai",
3095
- * "UnitPrice": 18.0000,
3096
- * "Discontinued": false
3097
- * }, {
3098
- * "ProductID": 2,
3099
- * "ProductName": "Chang",
3100
- * "UnitPrice": 19.0000,
3101
- * "Discontinued": true
3102
- * }
3103
- * ], {
3104
- * group: this.groups
3105
- * });
3106
- * }
2991
+ * ```html
2992
+ * <kendo-grid [data]="gridData" [group]="groups">
2993
+ * <kendo-grid-column field="ProductName">
2994
+ * <ng-template kendoGridGroupFooterTemplate let-aggregates let-field="field">
2995
+ * Count: {{aggregates[field].count}}
2996
+ * </ng-template>
2997
+ * </kendo-grid-column>
2998
+ * </kendo-grid>
3107
2999
  * ```
3108
3000
  */
3109
3001
  class GroupFooterTemplateDirective {
@@ -3127,48 +3019,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
3127
3019
  * ([more information and example]({% slug templates_columns_grid %}#toc-header-template)).
3128
3020
  * Helps to customize the table header cell for the column.
3129
3021
  * To define a header template, nest an `<ng-template>` tag with the
3130
- * [kendoGridHeaderTemplate]({% slug api_grid_headertemplatedirective %}) directive inside the `<kendo-grid-column>` tag.
3022
+ * `kendoGridHeaderTemplate` directive inside the `<kendo-grid-column>` tag.
3131
3023
  *
3132
3024
  * The template context is set to the current column and then the following additional fields are passed:
3133
3025
  * * `column`&mdash;Defines an instance of the [ColumnComponent]({% slug api_grid_columncomponent %}) option.
3134
3026
  * * `columnIndex`&mdash;Defines the current column index.
3135
3027
  *
3136
3028
  * @example
3137
- * ```ts-preview
3138
- *
3139
- * _@Component({
3140
- * selector: 'my-app',
3141
- * template: `
3142
- * <kendo-grid [data]="gridData">
3143
- * <kendo-grid-column field="ProductName">
3144
- * <ng-template kendoGridHeaderTemplate let-column let-columnIndex="columnIndex">
3145
- * {{column.field}}({{columnIndex}})
3146
- * </ng-template>
3147
- * </kendo-grid-column>
3148
- * <kendo-grid-column field="UnitPrice">
3149
- * <ng-template kendoGridHeaderTemplate let-column let-columnIndex="columnIndex">
3150
- * {{column.field}}({{columnIndex}})
3151
- * </ng-template>
3152
- * </kendo-grid-column>
3153
- * </kendo-grid>
3154
- * `
3155
- * })
3156
- *
3157
- * class AppComponent {
3158
- * public gridData = [{
3159
- * "ProductID": 1,
3160
- * "ProductName": "Chai",
3161
- * "UnitPrice": 18.0000,
3162
- * "Discontinued": false
3163
- * }, {
3164
- * "ProductID": 2,
3165
- * "ProductName": "Chang",
3166
- * "UnitPrice": 19.0000,
3167
- * "Discontinued": true
3168
- * }
3169
- * ];
3170
- * }
3171
- *
3029
+ * ```html
3030
+ * <kendo-grid [data]="gridData">
3031
+ * <kendo-grid-column field="ProductName">
3032
+ * <ng-template kendoGridHeaderTemplate let-column let-columnIndex="columnIndex">
3033
+ * {{column.field}}({{columnIndex}})
3034
+ * </ng-template>
3035
+ * </kendo-grid-column>
3036
+ * </kendo-grid>
3172
3037
  * ```
3173
3038
  */
3174
3039
  class HeaderTemplateDirective {
@@ -3202,41 +3067,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
3202
3067
  * refer to the article on [aggregates]({% slug groupable_grid_with_aggregates %}).
3203
3068
  *
3204
3069
  * @example
3205
- * ```ts-preview
3206
- *
3207
- * _@Component({
3208
- * selector: 'my-app',
3209
- * template: `
3210
- * <kendo-grid [data]="gridData" scrollable="none">
3211
- * <kendo-grid-column field="ProductName">
3212
- * <ng-template kendoGridFooterTemplate let-column let-columnIndex="columnIndex">
3213
- * {{column.field}}({{columnIndex}})
3214
- * </ng-template>
3215
- * </kendo-grid-column>
3216
- * <kendo-grid-column field="UnitPrice">
3217
- * <ng-template kendoGridFooterTemplate let-column let-columnIndex="columnIndex">
3218
- * {{column.field}}({{columnIndex}})
3219
- * </ng-template>
3220
- * </kendo-grid-column>
3221
- * </kendo-grid>
3222
- * `
3223
- * })
3224
- *
3225
- * class AppComponent {
3226
- * public gridData = [{
3227
- * "ProductID": 1,
3228
- * "ProductName": "Chai",
3229
- * "UnitPrice": 18.0000,
3230
- * "Discontinued": false
3231
- * }, {
3232
- * "ProductID": 2,
3233
- * "ProductName": "Chang",
3234
- * "UnitPrice": 19.0000,
3235
- * "Discontinued": true
3236
- * }
3237
- * ];
3238
- * }
3239
- *
3070
+ * ```html
3071
+ * <kendo-grid [data]="gridData" scrollable="none">
3072
+ * <kendo-grid-column field="ProductName">
3073
+ * <ng-template kendoGridFooterTemplate let-column let-columnIndex="columnIndex">
3074
+ * {{column.field}}({{columnIndex}})
3075
+ * </ng-template>
3076
+ * </kendo-grid-column>
3077
+ * </kendo-grid>
3240
3078
  * ```
3241
3079
  */
3242
3080
  class FooterTemplateDirective {
@@ -3259,40 +3097,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
3259
3097
  * Represents the template for the column menu in the Grid. Provides an option for
3260
3098
  * customizing the content of the column menu for all or for specific columns.
3261
3099
  * To define the content template, nest an `<ng-template>` tag with the
3262
- * `kendoGridColumnMenuTemplate` directive inside the `kendo-grid` or the `<kendo-grid-column>` component.
3100
+ * `kendoGridColumnMenuTemplate` directive inside the `<kendo-grid>` or the `<kendo-grid-column>` component.
3263
3101
  *
3264
3102
  * The template context is passes through the following fields:
3265
3103
  * - `service`&mdash;Represents the [ColumnMenuService]({% slug api_grid_columnmenuservice %}).
3266
3104
  * - `column`&mdash;Represents the Grid column.
3267
3105
  *
3268
3106
  * @example
3269
- * ```ts-preview
3270
- *
3271
- * _@Component({
3272
- * selector: 'my-app',
3273
- * template: `
3274
- * <kendo-grid [kendoGridBinding]="data" [sortable]="true" [columnMenu]="true">
3275
- * <ng-template kendoGridColumnMenuTemplate let-service="service">
3276
- * <kendo-grid-columnmenu-sort [service]="service">
3277
- * </kendo-grid-columnmenu-sort>
3278
- * </ng-template>
3279
- * <kendo-grid-column field="Field1" [width]="100">
3280
- * <ng-template kendoGridColumnMenuTemplate let-service="service">
3281
- * <kendo-grid-columnmenu-lock [service]="service">
3282
- * </kendo-grid-columnmenu-lock>
3283
- * <kendo-grid-columnmenu-sort [service]="service">
3284
- * </kendo-grid-columnmenu-sort>
3285
- * </ng-template>
3286
- * </kendo-grid-column>
3287
- * <kendo-grid-column field="Field2" [width]="100"></kendo-grid-column>
3288
- * </kendo-grid>
3289
- * `
3290
- * })
3291
- *
3292
- * class AppComponent {
3293
- * public data: any[] = [{ Field1: 'Foo', Field2: 'Bar' }, { Field1: 'Foo1', Field2: 'Bar1' }];
3294
- * }
3295
- *
3107
+ * ```html
3108
+ * <kendo-grid [kendoGridBinding]="data" [sortable]="true" [columnMenu]="true">
3109
+ * <ng-template kendoGridColumnMenuTemplate let-service="service">
3110
+ * <kendo-grid-columnmenu-sort [service]="service"></kendo-grid-columnmenu-sort>
3111
+ * </ng-template>
3112
+ * <kendo-grid-column field="Field1">
3113
+ * <ng-template kendoGridColumnMenuTemplate let-service="service">
3114
+ * <kendo-grid-columnmenu-lock [service]="service"></kendo-grid-columnmenu-lock>
3115
+ * <kendo-grid-columnmenu-sort [service]="service"></kendo-grid-columnmenu-sort>
3116
+ * </ng-template>
3117
+ * </kendo-grid-column>
3118
+ * <kendo-grid-column field="Field2"></kendo-grid-column>
3119
+ * </kendo-grid>
3296
3120
  * ```
3297
3121
  */
3298
3122
  class ColumnMenuTemplateDirective {
@@ -3347,6 +3171,10 @@ const isSpanColumn = column => column.isSpanColumn;
3347
3171
  * @hidden
3348
3172
  */
3349
3173
  const isCheckboxColumn = column => column.isCheckboxColumn;
3174
+ /**
3175
+ * @hidden
3176
+ */
3177
+ const isRowReorderColumn = column => column.isRowReorderColumn;
3350
3178
  const isColumnContainer = column => column.isColumnGroup || isSpanColumn(column);
3351
3179
  /**
3352
3180
  * The base class for the column components of the Grid.
@@ -4355,64 +4183,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
4355
4183
  * To define the detail template, nest an `<ng-template>` tag with the `kendoGridDetailTemplate` directive inside a `<kendo-grid>` tag.
4356
4184
  *
4357
4185
  * @example
4358
- * ```ts-preview
4359
- *
4360
- * _@Component({
4361
- * selector: 'my-app',
4362
- * template: `
4363
- * <kendo-grid
4364
- * [data]="data"
4365
- * selectable="true"
4366
- * style="height: 160px"
4367
- * >
4368
- * <kendo-grid-column field="ProductID"></kendo-grid-column>
4369
- * <kendo-grid-column field="ProductName"></kendo-grid-column>
4370
- * <kendo-grid-column field="UnitPrice"></kendo-grid-column>
4371
- * <ng-template kendoGridDetailTemplate let-dataItem>
4372
- * <div *ngIf="dataItem.Category">
4373
- * <header>{{dataItem.Category?.CategoryName}}</header>
4374
- * <span>{{dataItem.Category?.Description}}</span>
4375
- * </div>
4376
- * </ng-template>
4377
- * </kendo-grid>
4378
- * `
4379
- * })
4380
- *
4381
- * class AppComponent {
4382
- * public data = [{
4383
- * "ProductID": 1,
4384
- * "ProductName": "Chai",
4385
- * "UnitPrice": 18.0000,
4386
- * "Discontinued": false,
4387
- * "Category": {
4388
- * "CategoryID": 1,
4389
- * "CategoryName": "Beverages",
4390
- * "Description": "Soft drinks, coffees, teas, beers, and ales"
4391
- * }
4392
- * }, {
4393
- * "ProductID": 2,
4394
- * "ProductName": "Chang",
4395
- * "UnitPrice": 19.0000,
4396
- * "Discontinued": false,
4397
- * "Category": {
4398
- * "CategoryID": 1,
4399
- * "CategoryName": "Beverages",
4400
- * "Description": "Soft drinks, coffees, teas, beers, and ales"
4401
- * }
4402
- * }, {
4403
- * "ProductID": 3,
4404
- * "ProductName": "Aniseed Syrup",
4405
- * "UnitPrice": 10.0000,
4406
- * "Discontinued": false,
4407
- * "Category": {
4408
- * "CategoryID": 2,
4409
- * "CategoryName": "Condiments",
4410
- * "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
4411
- * }
4412
- * }];
4413
- *
4414
- * }
4415
- *
4186
+ * ```html
4187
+ * <kendo-grid [data]="data" selectable="true" style="height: 160px">
4188
+ * <kendo-grid-column field="ProductName"></kendo-grid-column>
4189
+ * <ng-template kendoGridDetailTemplate let-dataItem>
4190
+ * <div *ngIf="dataItem.Category">
4191
+ * <header>{{dataItem.Category?.CategoryName}}</header>
4192
+ * span>{{dataItem.Category?.Description}}</span>
4193
+ * </div>
4194
+ * </ng-template>
4195
+ * </kendo-grid>
4416
4196
  * ```
4417
4197
  *
4418
4198
  */
@@ -4972,6 +4752,7 @@ class Selection {
4972
4752
  this.cd = cd;
4973
4753
  /**
4974
4754
  * Defines the collection that will store the selected item keys.
4755
+ * @default []
4975
4756
  */
4976
4757
  this.selectedKeys = [];
4977
4758
  /**
@@ -5359,66 +5140,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
5359
5140
 
5360
5141
  /**
5361
5142
  * Represents the no-records template of the Grid. Provides an option to customize the
5362
- * appearance of the item that is displayed when no data is present. To define the no-records template,
5363
- * nest an `<ng-template>` tag with the `kendoGridNoRecordsTemplate` directive inside `<kendo-grid>`.
5364
- *
5365
- * > When the locked columns of the Grid are in use, the template is displayed in the non-locked part of the content.
5143
+ * appearance of the item that is displayed when no data is present.
5144
+ * To define the no-records template, nest an `<ng-template>` tag with the `kendoGridNoRecordsTemplate`
5145
+ * directive inside `<kendo-grid>` [see example](slug:norecordtemplate_grid).
5366
5146
  *
5367
5147
  * @example
5368
- * ```ts-preview
5369
- *
5370
- * _@Component({
5371
- * selector: 'my-app',
5372
- * template: `
5373
- * <kendo-grid [data]="data">
5374
- * <kendo-grid-column field="ProductID"></kendo-grid-column>
5375
- * <kendo-grid-column field="ProductName"></kendo-grid-column>
5376
- * <kendo-grid-column field="UnitPrice"></kendo-grid-column>
5377
- * <ng-template kendoGridNoRecordsTemplate>
5378
- * There are not products. <a href="#" (click)="refresh()">Click here to refresh</a>.
5379
- * </ng-template>
5380
- * </kendo-grid>
5381
- * `
5382
- * })
5383
- *
5384
- * class AppComponent {
5385
- * public data = [];
5386
- * public refresh() {
5387
- * this.data = [{
5388
- * "ProductID": 1,
5389
- * "ProductName": "Chai",
5390
- * "UnitPrice": 18.0000,
5391
- * "Discontinued": false,
5392
- * "Category": {
5393
- * "CategoryID": 1,
5394
- * "CategoryName": "Beverages",
5395
- * "Description": "Soft drinks, coffees, teas, beers, and ales"
5396
- * }
5397
- * }, {
5398
- * "ProductID": 2,
5399
- * "ProductName": "Chang",
5400
- * "UnitPrice": 19.0000,
5401
- * "Discontinued": false,
5402
- * "Category": {
5403
- * "CategoryID": 1,
5404
- * "CategoryName": "Beverages",
5405
- * "Description": "Soft drinks, coffees, teas, beers, and ales"
5406
- * }
5407
- * }, {
5408
- * "ProductID": 3,
5409
- * "ProductName": "Aniseed Syrup",
5410
- * "UnitPrice": 10.0000,
5411
- * "Discontinued": false,
5412
- * "Category": {
5413
- * "CategoryID": 2,
5414
- * "CategoryName": "Condiments",
5415
- * "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
5416
- * }
5417
- * }];
5418
- *
5419
- * }
5420
- * }
5421
- *
5148
+ * ```html
5149
+ * <kendo-grid [data]="data">
5150
+ * <ng-template kendoGridNoRecordsTemplate>
5151
+ * There are not products. <a href="#" (click)="refresh()">Click here to refresh</a>.
5152
+ * </ng-template>
5153
+ * <kendo-grid-column field="ProductID"></kendo-grid-column>
5154
+ * <kendo-grid-column field="ProductName"></kendo-grid-column>
5155
+ * </kendo-grid>
5422
5156
  * ```
5423
5157
  */
5424
5158
  class NoRecordsTemplateDirective {
@@ -5529,7 +5263,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
5529
5263
 
5530
5264
  /**
5531
5265
  * Represents the pager template which helps to customize the pager appearance in the Grid. To define a pager
5532
- * template, nest an `<ng-template>` tag with the `kendoPagerTemplate` directive inside `<kendo-grid>`.
5266
+ * template, nest an `<ng-template>` tag with the `kendoPagerTemplate` directive inside `<kendo-grid>` tag
5267
+ * [see example](slug:pager_template_grid).
5533
5268
  *
5534
5269
  * The template context provides the following fields:
5535
5270
  * * `currentPage`&mdash;The index of the displayed page.
@@ -5537,53 +5272,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
5537
5272
  * * `skip`&mdash;The current skip value.
5538
5273
  * * `total`&mdash;The total number of records.
5539
5274
  * * `totalPages`&mdash;The total number of available pages.
5540
- * * Needs to be provided as an input to inner pager components used within the template when the Grid is navigable.
5541
5275
  *
5542
5276
  * @example
5543
- * ```ts-preview
5544
- *
5545
- * _@Component({
5546
- * selector: 'my-app',
5547
- * template: `
5548
- * <kendo-grid
5549
- * [kendoGridBinding]="gridData"
5550
- * [pageSize]="1"
5551
- * [pageable]="true"
5552
- * >
5553
- * <kendo-grid-column field="ProductID" title="ID" [width]="40">
5554
- * </kendo-grid-column>
5555
- * <kendo-grid-column field="ProductName" title="Name" [width]="250">
5556
- * </kendo-grid-column>
5557
- * <kendo-grid-column field="UnitPrice" title="Price" [width]="80" format="{0:c}">
5558
- * </kendo-grid-column>
5559
- *
5560
- * <ng-template kendoPagerTemplate let-totalPages="totalPages" let-currentPage="currentPage">
5561
- * <kendo-pager-prev-buttons></kendo-pager-prev-buttons>
5562
- * <kendo-pager-numeric-buttons [buttonCount]="10"></kendo-pager-numeric-buttons>
5563
- * <kendo-pager-next-buttons></kendo-pager-next-buttons>
5564
- * <kendo-pager-info></kendo-pager-info>
5565
- * Current page: {{currentPage}}
5566
- * </ng-template>
5567
- *
5568
- * </kendo-grid>
5569
- * `
5570
- * })
5571
- *
5572
- * class AppComponent {
5573
- * public gridData = [{
5574
- * "ProductID": 1,
5575
- * "ProductName": "Chai",
5576
- * "UnitPrice": 18.0000,
5577
- * "Discontinued": false
5578
- * }, {
5579
- * "ProductID": 2,
5580
- * "ProductName": "Chang",
5581
- * "UnitPrice": 19.0000,
5582
- * "Discontinued": true
5583
- * }
5584
- * ];
5585
- * }
5586
- *
5277
+ * ```html
5278
+ * <kendo-grid ... [pageable]="true">
5279
+ * <ng-template kendoPagerTemplate let-totalPages="totalPages" let-currentPage="currentPage">
5280
+ * <kendo-pager-prev-buttons></kendo-pager-prev-buttons>
5281
+ * <kendo-pager-next-buttons></kendo-pager-next-buttons>
5282
+ * <kendo-pager-info></kendo-pager-info>
5283
+ * Current page: {{currentPage}}
5284
+ * </ng-template>
5285
+ * <kendo-grid-column field="ProductID"></kendo-grid-column>
5286
+ * <kendo-grid-column field="ProductName"></kendo-grid-column>
5287
+ * </kendo-grid>
5587
5288
  * ```
5588
5289
  */
5589
5290
  class PagerTemplateDirective {
@@ -5727,56 +5428,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
5727
5428
  * - `position`&mdash;The position at which the toolbar template is rendered. The possible values are "top" and "bottom".
5728
5429
  *
5729
5430
  * @example
5730
- * ```ts-preview
5731
- *
5732
- * _@Component({
5733
- * selector: 'my-app',
5734
- * template: `
5735
- * <div class="example-config">
5736
- * <input type="radio" id="top" name="position" value="top" checked (click)="positionChange($event)"/>
5737
- * <label class="k-radio-label" for="top">Top</label><br/>
5738
- * <input type="radio" id="bottom" name="position" value="bottom" (click)="positionChange($event)"/>
5739
- * <label class="k-radio-label" for="bottom">Bottom</label><br/>
5740
- * <input type="radio" id="both" name="position" value="both" (click)="positionChange($event)"/>
5741
- * <label class="k-radio-label" for="both">Both</label><br/>
5742
- * </div>
5743
- * <kendo-grid [data]="gridData" style="height: 200px">
5744
- * <ng-template kendoGridToolbarTemplate [position]="position" let-position="position">
5745
- * <button (click)="onClick()">Custom action</button>
5746
- * </ng-template>
5747
- * <kendo-grid-column field="ProductName">
5748
- * </kendo-grid-column>
5749
- * <kendo-grid-column field="UnitPrice">
5750
- * </kendo-grid-column>
5751
- * </kendo-grid>
5752
- * `
5753
- * })
5754
- *
5755
- * class AppComponent {
5756
- * public position: 'top' | 'bottom' | 'both' = 'top';
5757
- *
5758
- * public gridData = [{
5759
- * "ProductID": 1,
5760
- * "ProductName": "Chai",
5761
- * "UnitPrice": 18.0000,
5762
- * "Discontinued": false
5763
- * }, {
5764
- * "ProductID": 2,
5765
- * "ProductName": "Chang",
5766
- * "UnitPrice": 19.0000,
5767
- * "Discontinued": true
5768
- * }
5769
- * ];
5770
- *
5771
- * public onClick(): void {
5772
- * console.log("button was clicked");
5773
- * }
5774
- *
5775
- * public positionChange({ target }): void {
5776
- * this.position = target.value;
5777
- * }
5778
- * }
5779
- *
5431
+ * ```html
5432
+ * <kendo-grid [data]="gridData" style="height: 200px">
5433
+ * <ng-template kendoGridToolbarTemplate [position]="position" let-position="position">
5434
+ * <button (click)="onClick()">Custom action</button>
5435
+ * </ng-template>
5436
+ * <kendo-grid-column field="ProductName">
5437
+ * </kendo-grid-column>
5438
+ * </kendo-grid>
5780
5439
  * ```
5781
5440
  */
5782
5441
  class ToolbarTemplateDirective {
@@ -5785,13 +5444,9 @@ class ToolbarTemplateDirective {
5785
5444
  this._position = 'top';
5786
5445
  }
5787
5446
  /**
5788
- * The position of the toolbar ([see example]({% slug toolbartemplate_grid %})).
5447
+ * The position of the toolbar ([see example]({% slug toolbartemplate_grid %}#toc-setting-the-toolbar-position)).
5789
5448
  *
5790
- * The possible values are:
5791
- * - `top`&mdash;Positions the toolbar above the group panel or header.
5792
- * - `bottom`&mdash;Positions the toolbar below the pager.
5793
- * - `both`&mdash;Displays two toolbar instances. Positions the first one above
5794
- * the group panel or header and the second one below the pager.
5449
+ * @default 'top'
5795
5450
  */
5796
5451
  set position(position) {
5797
5452
  this._position = position;
@@ -6192,17 +5847,17 @@ const append = (element) => {
6192
5847
  /**
6193
5848
  * @hidden
6194
5849
  */
6195
- const getDocument = element => element.ownerDocument.documentElement;
5850
+ const getDocument$1 = element => element.ownerDocument.documentElement;
6196
5851
  /**
6197
5852
  * @hidden
6198
5853
  */
6199
- const getWindow = element => element.ownerDocument.defaultView;
5854
+ const getWindow$1 = element => element.ownerDocument.defaultView;
6200
5855
  /**
6201
5856
  * @hidden
6202
5857
  */
6203
5858
  const offset = element => {
6204
- const { clientTop, clientLeft } = getDocument(element);
6205
- const { pageYOffset, pageXOffset } = getWindow(element);
5859
+ const { clientTop, clientLeft } = getDocument$1(element);
5860
+ const { pageYOffset, pageXOffset } = getWindow$1(element);
6206
5861
  const { top, left } = element.getBoundingClientRect();
6207
5862
  return {
6208
5863
  top: top + pageYOffset - clientTop,
@@ -6617,17 +6272,20 @@ class ColumnStickyChangeEvent {
6617
6272
  /**
6618
6273
  * Represents the virtual scrolling cell template of the Grid while loading new data. Provides an option to customize the
6619
6274
  * appearance of the indicator that is displayed while new data is loading. To define the loading cell template,
6620
- * nest an `<ng-template>` tag with the `kendoGridCellLoadingTemplate` directive inside `<kendo-grid>` ([see example]({% slug virtualscrolling_grid %}#toc-custom-loading-skeleton)).
6275
+ * nest an `<ng-template>` tag with the `kendoGridCellLoadingTemplate` directive inside `<kendo-grid>` tag [see example]({% slug virtualscrolling_grid %}#toc-custom-loading-skeleton).
6621
6276
  *
6622
- * The template context is set to the current column, and utilizes the `let-x` syntax&mdash;for example, `let-column`.
6277
+ *
6278
+ * The template context is set to the current column and the following additional field is passed:
6279
+ *
6280
+ * - `column`&mdash;The current column instance. Represents the default context that will be assigned to any template variable which utilizes the `let-x` syntax (for example `let-column`).
6623
6281
  *
6624
6282
  * @example
6625
- * ```ts-no-run
6626
- * <kendo-grid [data]="data" scrollable="virtual" [rowHeight]="36">
6627
- * <ng-template kendoGridCellLoadingTemplate let-column>
6628
- * ...
6629
- * </ng-template>
6630
- * </kendo-grid>
6283
+ * ```html
6284
+ * <kendo-grid ... scrollable="virtual" [rowHeight]="36" [height]="450">
6285
+ * <ng-template kendoGridCellLoadingTemplate let-column>
6286
+ * ...
6287
+ * </ng-template>
6288
+ * </kendo-grid>
6631
6289
  * ```
6632
6290
  */
6633
6291
  class CellLoadingTemplateDirective {
@@ -6649,7 +6307,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
6649
6307
  /**
6650
6308
  * Creates a loading template that overrides the default loading indicator of the Grid Component.
6651
6309
  * To define a loading template, nest an `<ng-template>` tag with the `kendoGridLoadingTemplate` directive inside the `<kendo-grid>` tag
6652
- * [see example]({% slug binding_grid %}#toc-loading-template).
6310
+ * ([see example](slug:loadingtemplate_grid)).
6653
6311
  */
6654
6312
  class LoadingTemplateDirective {
6655
6313
  constructor(templateRef) {
@@ -6670,11 +6328,319 @@ class SizingOptionsService {
6670
6328
  this.changes = new Subject();
6671
6329
  }
6672
6330
  }
6673
- SizingOptionsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SizingOptionsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
6674
- SizingOptionsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SizingOptionsService });
6675
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SizingOptionsService, decorators: [{
6331
+ SizingOptionsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SizingOptionsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
6332
+ SizingOptionsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SizingOptionsService });
6333
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SizingOptionsService, decorators: [{
6334
+ type: Injectable
6335
+ }] });
6336
+
6337
+ /**
6338
+ * @hidden
6339
+ */
6340
+ const isNextSibling = (dropTarget, dragTarget) => dropTarget === dragTarget.nextElementSibling;
6341
+ /**
6342
+ * @hidden
6343
+ */
6344
+ const isPreviousSibling = (dropTarget, dragTarget) => dropTarget === dragTarget.previousElementSibling;
6345
+ /**
6346
+ * @hidden
6347
+ */
6348
+ const isDifferentParent = (dropTarget, dragTarget) => dropTarget?.parentElement !== dragTarget?.parentElement;
6349
+ /**
6350
+ * @hidden
6351
+ */
6352
+ function getOffset(element) {
6353
+ const { clientTop, clientLeft } = getDocument(element);
6354
+ const { pageYOffset, pageXOffset } = getWindow(element);
6355
+ const { top, left } = element.getBoundingClientRect();
6356
+ return {
6357
+ top: top + pageYOffset - clientTop,
6358
+ left: left + pageXOffset - clientLeft
6359
+ };
6360
+ }
6361
+ ;
6362
+ /**
6363
+ * @hidden
6364
+ */
6365
+ const hintIcons = {
6366
+ forbidden: 'cancel',
6367
+ before: 'insert-middle',
6368
+ after: 'insert-middle'
6369
+ };
6370
+ /**
6371
+ * @hidden
6372
+ */
6373
+ const hintSVGIcons = {
6374
+ forbidden: cancelIcon,
6375
+ before: insertMiddleIcon,
6376
+ after: insertMiddleIcon
6377
+ };
6378
+ /**
6379
+ * @hidden
6380
+ */
6381
+ const dropPosition = {
6382
+ forbidden: 'forbidden',
6383
+ before: 'before',
6384
+ after: 'after'
6385
+ };
6386
+ /**
6387
+ * @hidden
6388
+ */
6389
+ const hintStyles = {
6390
+ zIndex: '20000',
6391
+ display: 'flex',
6392
+ position: 'fixed'
6393
+ };
6394
+ /**
6395
+ * @hidden
6396
+ */
6397
+ const hintClasses = ['k-drag-clue', 'k-reorder-clue'];
6398
+ /**
6399
+ * @hidden
6400
+ */
6401
+ const dropIndicatorStyles = {
6402
+ zIndex: '19000',
6403
+ position: 'absolute'
6404
+ };
6405
+ /**
6406
+ * @hidden
6407
+ */
6408
+ const dropIndicatorClasses = ['k-drop-hint', 'k-drop-hint-h'];
6409
+ /**
6410
+ * @hidden
6411
+ */
6412
+ const defaultSelectors = {
6413
+ handle: '.k-table-td.k-drag-cell',
6414
+ dragTarget: '.k-master-row',
6415
+ dropTarget: '.k-master-row'
6416
+ };
6417
+ const getDocument = element => element?.ownerDocument.documentElement;
6418
+ const getWindow = element => element?.ownerDocument.defaultView;
6419
+
6420
+ /**
6421
+ * @hidden
6422
+ */
6423
+ class RowReorderService {
6424
+ constructor(renderer) {
6425
+ this.renderer = renderer;
6426
+ this.hintElement = null;
6427
+ this.defaultSelectors = defaultSelectors;
6428
+ this.hintText = '';
6429
+ this.lastDropPosition = dropPosition.forbidden;
6430
+ this.dragTarget = null;
6431
+ this.dropTarget = null;
6432
+ this.rowReorder = new EventEmitter();
6433
+ }
6434
+ press(ev) {
6435
+ this.dragTarget = ev.dragTarget;
6436
+ }
6437
+ dragStart() {
6438
+ this.createDropIndicator();
6439
+ }
6440
+ drag(ev) {
6441
+ if (isPresent$1(ev.hintElement) && !isPresent$1(this.hintElement)) {
6442
+ this.hintElement = ev.hintElement;
6443
+ this.decorateHint();
6444
+ }
6445
+ const position = {
6446
+ x: ev.dragEvent.clientX,
6447
+ y: ev.dragEvent.clientY
6448
+ };
6449
+ if (isPresent$1(this.hintElement)) {
6450
+ this.renderer.setStyle(this.hintElement, 'left', `${position.x}px`);
6451
+ this.renderer.setStyle(this.hintElement, 'top', `${position.y}px`);
6452
+ }
6453
+ this.positionDropIndicator(ev);
6454
+ }
6455
+ dragEnter(ev) {
6456
+ this.dropTarget = ev.dropTarget;
6457
+ }
6458
+ dragLeave() {
6459
+ this.dropTarget = null;
6460
+ this.hide();
6461
+ }
6462
+ dragEnd() {
6463
+ this.destroyDropIndicator();
6464
+ this.dragTarget = null;
6465
+ this.dropTarget = null;
6466
+ this.hintElement = null;
6467
+ }
6468
+ drop(ev) {
6469
+ this.destroyDropIndicator();
6470
+ const rowReorderArgs = this.rowReorderArgs(this.dragTarget, this.dropTarget, ev.dragData);
6471
+ this.rowReorder.emit(rowReorderArgs);
6472
+ }
6473
+ reorderRows(ev, collection) {
6474
+ if (this.lastDropPosition === dropPosition.forbidden) {
6475
+ return;
6476
+ }
6477
+ ;
6478
+ const { draggedRows, dropTargetRow } = ev;
6479
+ const draggedDataItem = draggedRows[0].dataItem;
6480
+ const dropTargetDataItem = dropTargetRow.dataItem;
6481
+ const draggedItemIndex = collection.indexOf(draggedDataItem);
6482
+ const dropTargetIndex = collection.indexOf(dropTargetDataItem);
6483
+ const idxToAdd = this.calculateIndexToAdd(draggedItemIndex, dropTargetIndex);
6484
+ collection.splice(draggedItemIndex, 1);
6485
+ collection.splice(idxToAdd, 0, draggedDataItem);
6486
+ }
6487
+ get hintIcon() {
6488
+ return hintIcons[this.lastDropPosition];
6489
+ }
6490
+ get hintSVGIcon() {
6491
+ return hintSVGIcons[this.lastDropPosition];
6492
+ }
6493
+ getDefaultHintText(columns, data) {
6494
+ let hintText = '';
6495
+ const columnFieldsArray = columns
6496
+ .toArray()
6497
+ .filter(column => !column.hidden && isPresent$1(column.field))
6498
+ .map(column => column.field);
6499
+ const draggedDragRow = this.getDragRowPerElement(this.dragTarget, data);
6500
+ const draggedDataItem = draggedDragRow?.dataItem;
6501
+ isPresent$1(draggedDataItem) && columnFieldsArray.forEach(column => {
6502
+ const columnValue = draggedDataItem[column];
6503
+ isPresent$1(columnValue) ? hintText += `${columnValue} ` : null;
6504
+ });
6505
+ return hintText.trim();
6506
+ }
6507
+ rowReorderArgs(dragRow, dropRow, data) {
6508
+ const dragRowData = this.getDragRowPerElement(dragRow, data);
6509
+ const dropRowData = this.getDragRowPerElement(dropRow, data);
6510
+ return {
6511
+ draggedRows: [dragRowData],
6512
+ dropTargetRow: dropRowData,
6513
+ dropPosition: this.lastDropPosition
6514
+ };
6515
+ }
6516
+ getDragRowPerElement(row, data) {
6517
+ let rowIndex = row?.getAttribute('data-kendo-grid-item-index');
6518
+ rowIndex = rowIndex ? parseInt(rowIndex, 10) : -1;
6519
+ const skip = this.skip || 0;
6520
+ const dataItem = rowIndex === -1 ? null : data[rowIndex - skip];
6521
+ return {
6522
+ dataItem,
6523
+ rowIndex,
6524
+ element: row
6525
+ };
6526
+ }
6527
+ createDropIndicator() {
6528
+ if (!isDocumentAvailable()) {
6529
+ return;
6530
+ }
6531
+ this.dropIndicator = document.createElement('div');
6532
+ this.decorateDropIndicator();
6533
+ this.dropIndicator.innerHTML = `
6534
+ <div class="k-drop-hint-start"></div>
6535
+ <div class="k-drop-hint-line"></div>
6536
+ `;
6537
+ document.body.appendChild(this.dropIndicator);
6538
+ this.hide();
6539
+ }
6540
+ destroyDropIndicator() {
6541
+ if (!isDocumentAvailable()) {
6542
+ return;
6543
+ }
6544
+ ;
6545
+ if (this.dropIndicator && this.dropIndicator.parentElement) {
6546
+ document.body.removeChild(this.dropIndicator);
6547
+ this.dropIndicator = null;
6548
+ }
6549
+ }
6550
+ decorateHint() {
6551
+ hintClasses.forEach(className => this.renderer.addClass(this.hintElement, className));
6552
+ Object.keys(hintStyles)
6553
+ .forEach(style => this.renderer.setStyle(this.hintElement, style, hintStyles[style]));
6554
+ }
6555
+ positionDropIndicator(ev) {
6556
+ this.lastDropPosition = this.getDropPosition(ev.dragEvent);
6557
+ this.updateDropIndicatorPosition();
6558
+ }
6559
+ calculateIndexToAdd(dragIndex, dropIndex) {
6560
+ if (dragIndex > dropIndex && this.lastDropPosition === dropPosition.after) {
6561
+ return dropIndex + 1;
6562
+ }
6563
+ else if (dragIndex > dropIndex && this.lastDropPosition === dropPosition.before) {
6564
+ return dropIndex;
6565
+ }
6566
+ else if (dragIndex < dropIndex && this.lastDropPosition === dropPosition.after) {
6567
+ return dropIndex;
6568
+ }
6569
+ else if (dragIndex < dropIndex && this.lastDropPosition === dropPosition.before) {
6570
+ return dropIndex - 1;
6571
+ }
6572
+ }
6573
+ decorateDropIndicator() {
6574
+ dropIndicatorClasses.forEach(className => this.renderer.addClass(this.dropIndicator, className));
6575
+ Object.keys(dropIndicatorStyles)
6576
+ .forEach(style => this.renderer.setStyle(this.dropIndicator, style, dropIndicatorStyles[style]));
6577
+ }
6578
+ ;
6579
+ getDropPosition(e) {
6580
+ if (this.dropTarget === this.dragTarget || !isPresent$1(this.dropTarget)) {
6581
+ return dropPosition.forbidden;
6582
+ }
6583
+ ;
6584
+ if (isDifferentParent(this.dropTarget, this.dragTarget)) {
6585
+ return dropPosition.forbidden;
6586
+ }
6587
+ ;
6588
+ const itemViewPortCoords = this.dropTarget.getBoundingClientRect();
6589
+ const itemDivisionsCount = 2;
6590
+ const itemDivisionHeight = itemViewPortCoords.height / itemDivisionsCount;
6591
+ const pointerPosition = e.clientY;
6592
+ const itemTop = itemViewPortCoords.top;
6593
+ let currentDropPosition = null;
6594
+ if (pointerPosition < itemTop + itemDivisionHeight) {
6595
+ currentDropPosition = dropPosition.before;
6596
+ }
6597
+ else if (pointerPosition >= itemTop + itemViewPortCoords.height - itemDivisionHeight) {
6598
+ currentDropPosition = dropPosition.after;
6599
+ }
6600
+ if (currentDropPosition === dropPosition.before && isNextSibling(this.dropTarget, this.dragTarget)) {
6601
+ currentDropPosition = dropPosition.forbidden;
6602
+ }
6603
+ else if (currentDropPosition === dropPosition.after && isPreviousSibling(this.dropTarget, this.dragTarget)) {
6604
+ currentDropPosition = dropPosition.forbidden;
6605
+ }
6606
+ return currentDropPosition;
6607
+ }
6608
+ updateDropIndicatorPosition() {
6609
+ if (this.shouldHideDropIndicator() || !this.dropTarget) {
6610
+ this.hide();
6611
+ return;
6612
+ }
6613
+ this.show();
6614
+ const destinationItemOffset = getOffset(this.dropTarget);
6615
+ let indicatorOffsetTop = destinationItemOffset.top;
6616
+ const indicatorOffsetLeft = destinationItemOffset.left + this.dropIndicator.offsetWidth / 2;
6617
+ if (this.lastDropPosition === dropPosition.after) {
6618
+ indicatorOffsetTop += this.dropTarget.offsetHeight;
6619
+ }
6620
+ this.renderer.setStyle(this.dropIndicator, 'left', `${indicatorOffsetLeft}px`);
6621
+ this.renderer.setStyle(this.dropIndicator, 'top', `${indicatorOffsetTop}px`);
6622
+ }
6623
+ shouldHideDropIndicator() {
6624
+ return this.lastDropPosition === dropPosition.forbidden;
6625
+ }
6626
+ hide() {
6627
+ if (isPresent$1(this.dropIndicator)) {
6628
+ this.dropIndicator.style.display = 'none';
6629
+ }
6630
+ }
6631
+ show() {
6632
+ if (isPresent$1(this.dropIndicator)) {
6633
+ this.dropIndicator.style.display = '';
6634
+ }
6635
+ }
6636
+ }
6637
+ RowReorderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RowReorderService, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Injectable });
6638
+ RowReorderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RowReorderService });
6639
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RowReorderService, decorators: [{
6676
6640
  type: Injectable
6677
- }] });
6641
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }]; }, propDecorators: { rowReorder: [{
6642
+ type: Output
6643
+ }] } });
6678
6644
 
6679
6645
  /**
6680
6646
  * @hidden
@@ -10425,7 +10391,7 @@ DateFilterMenuInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12
10425
10391
  </kendo-datepicker-messages>
10426
10392
  </kendo-datepicker>
10427
10393
  </kendo-grid-filter-menu-input-wrapper>
10428
- `, isInline: true, components: [{ type: FilterMenuInputWrapperComponent, selector: "kendo-grid-filter-menu-input-wrapper", inputs: ["filterService", "isFirstDropDown", "menuTabbingService", "currentFilter"] }, { type: i5$1.DatePickerComponent, selector: "kendo-datepicker", inputs: ["focusableId", "cellTemplate", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate", "navigationItemTemplate", "activeView", "bottomView", "topView", "calendarType", "animateCalendarNavigation", "disabled", "readonly", "readOnlyInput", "popupSettings", "navigation", "min", "max", "incompleteDateValidation", "focusedDate", "value", "format", "twoDigitYearMax", "formatPlaceholder", "placeholder", "tabindex", "tabIndex", "disabledDates", "title", "subtitle", "rangeValidation", "disabledDatesValidation", "weekNumber", "size", "rounded", "fillMode", "adaptiveMode"], outputs: ["valueChange", "focus", "blur", "open", "close"], exportAs: ["kendo-datepicker"] }, { type: i5$1.DatePickerCustomMessagesComponent, selector: "kendo-datepicker-messages" }], directives: [{ type: FilterInputDirective, selector: "[kendoFilterInput]", inputs: ["filterDelay", "columnLabel", "value"] }] });
10394
+ `, isInline: true, components: [{ type: FilterMenuInputWrapperComponent, selector: "kendo-grid-filter-menu-input-wrapper", inputs: ["filterService", "isFirstDropDown", "menuTabbingService", "currentFilter"] }, { type: i4$3.DatePickerComponent, selector: "kendo-datepicker", inputs: ["focusableId", "cellTemplate", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate", "navigationItemTemplate", "activeView", "bottomView", "topView", "calendarType", "animateCalendarNavigation", "disabled", "readonly", "readOnlyInput", "popupSettings", "navigation", "min", "max", "incompleteDateValidation", "focusedDate", "value", "format", "twoDigitYearMax", "formatPlaceholder", "placeholder", "tabindex", "tabIndex", "disabledDates", "title", "subtitle", "rangeValidation", "disabledDatesValidation", "weekNumber", "size", "rounded", "fillMode", "adaptiveMode"], outputs: ["valueChange", "focus", "blur", "open", "close"], exportAs: ["kendo-datepicker"] }, { type: i4$3.DatePickerCustomMessagesComponent, selector: "kendo-datepicker-messages" }], directives: [{ type: FilterInputDirective, selector: "[kendoFilterInput]", inputs: ["filterDelay", "columnLabel", "value"] }] });
10429
10395
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateFilterMenuInputComponent, decorators: [{
10430
10396
  type: Component,
10431
10397
  args: [{
@@ -11421,35 +11387,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
11421
11387
 
11422
11388
  /**
11423
11389
  * Represents the content template of the
11424
- * [kendo-grid-columnmenu-item]({% slug api_grid_columnmenuitemcomponent %}) component.
11390
+ * [`ColumnMenuItemComponent`]({% slug api_grid_columnmenuitemcomponent %}) component.
11425
11391
  * Provides an option for specifying the content of a column item.
11426
11392
  * To define the content template, nest an `<ng-template>` tag with the
11427
11393
  * `kendoGridColumnMenuItemContentTemplate` directive inside a `<kendo-grid-columnmenu-item>`.
11428
11394
  *
11429
11395
  * @example
11430
- * ```ts-preview
11431
- *
11432
- * _@Component({
11433
- * selector: 'my-app',
11434
- * template: `
11435
- * <kendo-grid [data]="data" [columnMenu]="true">
11436
- * <ng-template kendoGridColumnMenuTemplate>
11437
- * <kendo-grid-columnmenu-item text="Item Text" [expanded]="true">
11438
- * <ng-template kendoGridColumnMenuItemContentTemplate>
11439
- * Item Content
11440
- * </ng-template>
11441
- * </kendo-grid-columnmenu-item>
11442
- * </ng-template>
11443
- * <kendo-grid-column field="Field1"></kendo-grid-column>
11444
- * <kendo-grid-column field="Field2"></kendo-grid-column>
11445
- * </kendo-grid>
11446
- * `
11447
- * })
11448
- *
11449
- * class AppComponent {
11450
- * public data: any[] = [{ Field1: 'Foo', Field2: 'Bar' }];
11451
- * }
11452
- *
11396
+ * ```html
11397
+ * <kendo-grid [data]="data" [columnMenu]="true" ...>
11398
+ * <ng-template kendoGridColumnMenuTemplate>
11399
+ * <kendo-grid-columnmenu-item text="Item Text" [expanded]="true">
11400
+ * <ng-template kendoGridColumnMenuItemContentTemplate>
11401
+ * Item Content
11402
+ * </ng-template>
11403
+ * </kendo-grid-columnmenu-item>
11404
+ * </ng-template>
11405
+ * <kendo-grid-column field="Field1"></kendo-grid-column>
11406
+ * ...
11407
+ * </kendo-grid>
11453
11408
  * ```
11454
11409
  */
11455
11410
  class ColumnMenuItemContentTemplateDirective {
@@ -13887,7 +13842,7 @@ DateFilterCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
13887
13842
  </kendo-datepicker-messages>
13888
13843
  </kendo-datepicker>
13889
13844
  </kendo-grid-filter-wrapper-cell>
13890
- `, isInline: true, components: [{ type: FilterCellWrapperComponent, selector: "kendo-grid-filter-wrapper-cell", inputs: ["showOperators"] }, { type: i5$1.DatePickerComponent, selector: "kendo-datepicker", inputs: ["focusableId", "cellTemplate", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate", "navigationItemTemplate", "activeView", "bottomView", "topView", "calendarType", "animateCalendarNavigation", "disabled", "readonly", "readOnlyInput", "popupSettings", "navigation", "min", "max", "incompleteDateValidation", "focusedDate", "value", "format", "twoDigitYearMax", "formatPlaceholder", "placeholder", "tabindex", "tabIndex", "disabledDates", "title", "subtitle", "rangeValidation", "disabledDatesValidation", "weekNumber", "size", "rounded", "fillMode", "adaptiveMode"], outputs: ["valueChange", "focus", "blur", "open", "close"], exportAs: ["kendo-datepicker"] }, { type: i5$1.DatePickerCustomMessagesComponent, selector: "kendo-datepicker-messages" }], directives: [{ type: FilterInputDirective, selector: "[kendoFilterInput]", inputs: ["filterDelay", "columnLabel", "value"] }, { type: FocusableDirective, selector: "[kendoGridFocusable],\n [kendoGridEditCommand],\n [kendoGridRemoveCommand],\n [kendoGridSaveCommand],\n [kendoGridCancelCommand],\n [kendoGridSelectionCheckbox]\n ", inputs: ["kendoGridFocusable"] }] });
13845
+ `, isInline: true, components: [{ type: FilterCellWrapperComponent, selector: "kendo-grid-filter-wrapper-cell", inputs: ["showOperators"] }, { type: i4$3.DatePickerComponent, selector: "kendo-datepicker", inputs: ["focusableId", "cellTemplate", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate", "navigationItemTemplate", "activeView", "bottomView", "topView", "calendarType", "animateCalendarNavigation", "disabled", "readonly", "readOnlyInput", "popupSettings", "navigation", "min", "max", "incompleteDateValidation", "focusedDate", "value", "format", "twoDigitYearMax", "formatPlaceholder", "placeholder", "tabindex", "tabIndex", "disabledDates", "title", "subtitle", "rangeValidation", "disabledDatesValidation", "weekNumber", "size", "rounded", "fillMode", "adaptiveMode"], outputs: ["valueChange", "focus", "blur", "open", "close"], exportAs: ["kendo-datepicker"] }, { type: i4$3.DatePickerCustomMessagesComponent, selector: "kendo-datepicker-messages" }], directives: [{ type: FilterInputDirective, selector: "[kendoFilterInput]", inputs: ["filterDelay", "columnLabel", "value"] }, { type: FocusableDirective, selector: "[kendoGridFocusable],\n [kendoGridEditCommand],\n [kendoGridRemoveCommand],\n [kendoGridSaveCommand],\n [kendoGridCancelCommand],\n [kendoGridSelectionCheckbox]\n ", inputs: ["kendoGridFocusable"] }] });
13891
13846
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateFilterCellComponent, decorators: [{
13892
13847
  type: Component,
13893
13848
  args: [{
@@ -14436,7 +14391,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
14436
14391
  }] } });
14437
14392
 
14438
14393
  /**
14439
- * Represents the select-all checkbox feature of the Grid ([see example]({% slug selection_grid %}#toc-select-all-feature)).
14394
+ * Represents the select-all checkbox feature of the Grid ([see example](slug:grid_selection_persistence#toc-selecting-all-items)).
14395
+ *
14396
+ * @example
14397
+ * ```html
14398
+ * <input
14399
+ * type="checkbox"
14400
+ * kendoCheckBox
14401
+ * kendoGridSelectAllCheckbox
14402
+ * [state]="selectAllState"
14403
+ * (selectAllChange)="onSelectAllChange($event)"
14404
+ * />
14405
+ * ```
14440
14406
  */
14441
14407
  class SelectAllCheckboxDirective {
14442
14408
  constructor(selectionService, el, renderer, ngZone) {
@@ -15977,53 +15943,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
15977
15943
 
15978
15944
  /**
15979
15945
  * Represents the row-selection checkbox of the Grid. The directive expects the
15980
- * index of the current row as an input parameter. Inside the
15981
- * [CheckboxColumnComponent]({% slug api_grid_checkboxcolumncomponent %}), apply the
15982
- * directive to an `input` element. When the user clicks the checkbox that is associated
15983
- * with the directive, a [selectionChange]({% slug api_grid_gridcomponent %}#toc-selectionChange)
15946
+ * index of the current row as an input parameter. Inside the [`CellTemplateDirective`](slug:api_grid_celltemplatedirective), apply the
15947
+ * `kendoGridSelectionCheckbox` to an `<input type="checkbox"/>` element. When the user clicks the checkbox that is associated
15948
+ * with the directive, a [selectionChange](slug:api_grid_gridcomponent#toc-selectionChange)
15984
15949
  * event is triggered.
15985
15950
  *
15986
15951
  * @example
15987
- * ```ts-preview
15988
- *
15989
- * _@Component({
15990
- * selector: 'my-app',
15991
- * template: `
15992
- * <kendo-grid [data]="gridData" [selectable]="{enabled: true, checkboxOnly: true}">
15993
- * <kendo-grid-checkbox-column title="Custom checkbox">
15994
- * <ng-template kendoGridCellTemplate let-idx="rowIndex">
15995
- * Select row <input [kendoGridSelectionCheckbox]="idx" />
15996
- * </ng-template>
15997
- * </kendo-grid-checkbox-column>
15998
- * <kendo-grid-column field="ProductID" title="Product ID" [width]="120">
15999
- * </kendo-grid-column>
16000
- * <kendo-grid-column field="ProductName" title="Product Name">
16001
- * </kendo-grid-column>
16002
- * </kendo-grid>
16003
- * `
16004
- * })
16005
- *
16006
- * class AppComponent {
16007
- * public gridData: any[];
16008
- *
16009
- * constructor() {
16010
- * this.gridData = products;
16011
- * }
16012
- * }
16013
- *
16014
- * const products = [{
16015
- * "ProductID": 1,
16016
- * "ProductName": "Chai",
16017
- * "UnitPrice": 18.0000,
16018
- * "Discontinued": true
16019
- * }, {
16020
- * "ProductID": 2,
16021
- * "ProductName": "Chang",
16022
- * "UnitPrice": 19.0000,
16023
- * "Discontinued": false
16024
- * }
16025
- * ];
16026
- *
15952
+ * ```html
15953
+ * <kendo-grid ... >
15954
+ * <kendo-grid-column>
15955
+ * <ng-template kendoGridCellTemplate let-rowIndex="rowIndex">
15956
+ * <input ... [kendoGridSelectionCheckbox]="rowIndex"/>
15957
+ * </ng-template>
15958
+ * </kendo-grid-column>
15959
+ * </kendo-grid>
16027
15960
  * ```
16028
15961
  */
16029
15962
  class SelectionCheckboxDirective {
@@ -16135,12 +16068,19 @@ class CellComponent {
16135
16068
  this.isNew = false;
16136
16069
  this.isLoading = false;
16137
16070
  this.isVirtual = false;
16071
+ this.reorderIcon = reorderIcon;
16138
16072
  this._templateContext = {};
16139
16073
  this._editTemplateContext = {};
16140
16074
  }
16141
16075
  get commandCellClass() {
16142
16076
  return this.isCommand(this.column);
16143
16077
  }
16078
+ get dragHandleCellClass() {
16079
+ return isRowReorderColumn(this.column);
16080
+ }
16081
+ get dragRowHandleLabel() {
16082
+ return isRowReorderColumn(this.column) ? this.localizationService.get('dragRowHandleLabel') : undefined;
16083
+ }
16144
16084
  set rowIndex(index) {
16145
16085
  this._rowIndex = index;
16146
16086
  this.updateCellContext();
@@ -16197,6 +16137,9 @@ class CellComponent {
16197
16137
  get childColumns() {
16198
16138
  return columnsToRender([this.column]);
16199
16139
  }
16140
+ get isRowReorderColumn() {
16141
+ return isRowReorderColumn(this.column) && !this.column.templateRef;
16142
+ }
16200
16143
  get isColumnEditable() {
16201
16144
  if (!this.column || this.isCommand(this.column)) {
16202
16145
  return false;
@@ -16243,7 +16186,7 @@ class CellComponent {
16243
16186
  }
16244
16187
  }
16245
16188
  CellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CellComponent, deps: [{ token: EditService }, { token: IdService }, { token: i1.LocalizationService }, { token: CELL_CONTEXT, optional: true }], target: i0.ɵɵFactoryTarget.Component });
16246
- CellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: CellComponent, selector: "[kendoGridCell]", inputs: { column: "column", columnIndex: "columnIndex", isNew: "isNew", isLoading: "isLoading", isVirtual: "isVirtual", loadingTemplate: "loadingTemplate", rowIndex: "rowIndex", dataItem: "dataItem" }, host: { properties: { "class.k-command-cell": "this.commandCellClass" } }, usesOnChanges: true, ngImport: i0, template: `
16189
+ CellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: CellComponent, selector: "[kendoGridCell]", inputs: { column: "column", columnIndex: "columnIndex", isNew: "isNew", isLoading: "isLoading", isVirtual: "isVirtual", loadingTemplate: "loadingTemplate", rowIndex: "rowIndex", dataItem: "dataItem" }, host: { properties: { "class.k-command-cell": "this.commandCellClass", "class.k-drag-cell": "this.dragHandleCellClass", "class.k-touch-action-none": "this.dragHandleCellClass", "attr.aria-label": "this.dragRowHandleLabel" } }, usesOnChanges: true, ngImport: i0, template: `
16247
16190
  <ng-container [ngSwitch]="isEdited">
16248
16191
  <ng-container *ngSwitchCase="false">
16249
16192
  <ng-container *ngIf="!showLoading; else loading">
@@ -16264,6 +16207,12 @@ CellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
16264
16207
  [attr.id]="selectionCheckboxId"
16265
16208
  [attr.aria-label]="selectionCheckboxLabel" />
16266
16209
  </ng-container>
16210
+ <ng-container *ngIf="isRowReorderColumn && !isNew">
16211
+ <kendo-icon-wrapper
16212
+ name="reorder"
16213
+ [svgIcon]="reorderIcon">
16214
+ </kendo-icon-wrapper>
16215
+ </ng-container>
16267
16216
  </ng-container>
16268
16217
  <ng-template #loading>
16269
16218
  <ng-template
@@ -16313,7 +16262,7 @@ CellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
16313
16262
  </ng-container>
16314
16263
  </ng-container>
16315
16264
  </ng-container>
16316
- `, isInline: true, components: [{ type: i3.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"], outputs: ["valueChange", "focus", "blur"], exportAs: ["kendoNumericTextBox"] }, { type: i5$1.DatePickerComponent, selector: "kendo-datepicker", inputs: ["focusableId", "cellTemplate", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate", "navigationItemTemplate", "activeView", "bottomView", "topView", "calendarType", "animateCalendarNavigation", "disabled", "readonly", "readOnlyInput", "popupSettings", "navigation", "min", "max", "incompleteDateValidation", "focusedDate", "value", "format", "twoDigitYearMax", "formatPlaceholder", "placeholder", "tabindex", "tabIndex", "disabledDates", "title", "subtitle", "rangeValidation", "disabledDatesValidation", "weekNumber", "size", "rounded", "fillMode", "adaptiveMode"], outputs: ["valueChange", "focus", "blur", "open", "close"], exportAs: ["kendo-datepicker"] }], directives: [{ type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: FocusableDirective, selector: "[kendoGridFocusable],\n [kendoGridEditCommand],\n [kendoGridRemoveCommand],\n [kendoGridSaveCommand],\n [kendoGridCancelCommand],\n [kendoGridSelectionCheckbox]\n ", inputs: ["kendoGridFocusable"] }, { type: SelectionCheckboxDirective, selector: "[kendoGridSelectionCheckbox]", inputs: ["kendoGridSelectionCheckbox"] }, { type: i4$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i4$2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i4.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i4$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }], pipes: { "valueOf": FieldAccessorPipe } });
16265
+ `, isInline: true, components: [{ type: i3$1.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass"], exportAs: ["kendoIconWrapper"] }, { type: i3.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"], outputs: ["valueChange", "focus", "blur"], exportAs: ["kendoNumericTextBox"] }, { type: i4$3.DatePickerComponent, selector: "kendo-datepicker", inputs: ["focusableId", "cellTemplate", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate", "navigationItemTemplate", "activeView", "bottomView", "topView", "calendarType", "animateCalendarNavigation", "disabled", "readonly", "readOnlyInput", "popupSettings", "navigation", "min", "max", "incompleteDateValidation", "focusedDate", "value", "format", "twoDigitYearMax", "formatPlaceholder", "placeholder", "tabindex", "tabIndex", "disabledDates", "title", "subtitle", "rangeValidation", "disabledDatesValidation", "weekNumber", "size", "rounded", "fillMode", "adaptiveMode"], outputs: ["valueChange", "focus", "blur", "open", "close"], exportAs: ["kendo-datepicker"] }], directives: [{ type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: FocusableDirective, selector: "[kendoGridFocusable],\n [kendoGridEditCommand],\n [kendoGridRemoveCommand],\n [kendoGridSaveCommand],\n [kendoGridCancelCommand],\n [kendoGridSelectionCheckbox]\n ", inputs: ["kendoGridFocusable"] }, { type: SelectionCheckboxDirective, selector: "[kendoGridSelectionCheckbox]", inputs: ["kendoGridSelectionCheckbox"] }, { type: i4$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i4$2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i4.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i4$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }], pipes: { "valueOf": FieldAccessorPipe } });
16317
16266
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CellComponent, decorators: [{
16318
16267
  type: Component,
16319
16268
  args: [{
@@ -16339,6 +16288,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
16339
16288
  [attr.id]="selectionCheckboxId"
16340
16289
  [attr.aria-label]="selectionCheckboxLabel" />
16341
16290
  </ng-container>
16291
+ <ng-container *ngIf="isRowReorderColumn && !isNew">
16292
+ <kendo-icon-wrapper
16293
+ name="reorder"
16294
+ [svgIcon]="reorderIcon">
16295
+ </kendo-icon-wrapper>
16296
+ </ng-container>
16342
16297
  </ng-container>
16343
16298
  <ng-template #loading>
16344
16299
  <ng-template
@@ -16398,6 +16353,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
16398
16353
  }] }]; }, propDecorators: { commandCellClass: [{
16399
16354
  type: HostBinding,
16400
16355
  args: ['class.k-command-cell']
16356
+ }], dragHandleCellClass: [{
16357
+ type: HostBinding,
16358
+ args: ['class.k-drag-cell']
16359
+ }, {
16360
+ type: HostBinding,
16361
+ args: ['class.k-touch-action-none']
16362
+ }], dragRowHandleLabel: [{
16363
+ type: HostBinding,
16364
+ args: ['attr.aria-label']
16401
16365
  }], column: [{
16402
16366
  type: Input
16403
16367
  }], columnIndex: [{
@@ -18768,7 +18732,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
18768
18732
  class GridMessages extends ComponentMessages {
18769
18733
  }
18770
18734
  GridMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GridMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });
18771
- GridMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.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", selectPage: "selectPage", filter: "filter", filterInputLabel: "filterInputLabel", filterMenuTitle: "filterMenuTitle", filterMenuOperatorsDropDownLabel: "filterMenuOperatorsDropDownLabel", filterMenuLogicDropDownLabel: "filterMenuLogicDropDownLabel", 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" }, usesInheritance: true, ngImport: i0 });
18735
+ GridMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.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", selectPage: "selectPage", filter: "filter", filterInputLabel: "filterInputLabel", filterMenuTitle: "filterMenuTitle", filterMenuOperatorsDropDownLabel: "filterMenuOperatorsDropDownLabel", filterMenuLogicDropDownLabel: "filterMenuLogicDropDownLabel", 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" }, usesInheritance: true, ngImport: i0 });
18772
18736
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GridMessages, decorators: [{
18773
18737
  type: Directive,
18774
18738
  args: [{
@@ -18925,6 +18889,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
18925
18889
  type: Input
18926
18890
  }], groupPanelLabel: [{
18927
18891
  type: Input
18892
+ }], dragRowHandleLabel: [{
18893
+ type: Input
18928
18894
  }] } });
18929
18895
 
18930
18896
  /**
@@ -19005,7 +18971,7 @@ const isInEditedCell = (element, gridElement) => closest(element, matchesClasses
19005
18971
  * ```
19006
18972
  */
19007
18973
  class GridComponent {
19008
- constructor(supportService, selectionService, cellSelectionService, wrapper, groupInfoService, groupsService, changeNotification, detailsService, editService, filterService, pdfService, responsiveService, renderer, excelService, ngZone, scrollSyncService, domEvents, columnResizingService, changeDetectorRef, columnReorderService, columnInfoService, navigationService, sortService, scrollRequestService, localization, ctx, sizingService) {
18974
+ constructor(supportService, selectionService, cellSelectionService, wrapper, groupInfoService, groupsService, changeNotification, detailsService, editService, filterService, pdfService, responsiveService, renderer, excelService, ngZone, scrollSyncService, domEvents, columnResizingService, changeDetectorRef, columnReorderService, columnInfoService, navigationService, sortService, scrollRequestService, localization, ctx, sizingService, rowReorderService) {
19009
18975
  this.supportService = supportService;
19010
18976
  this.selectionService = selectionService;
19011
18977
  this.cellSelectionService = cellSelectionService;
@@ -19033,11 +18999,7 @@ class GridComponent {
19033
18999
  this.localization = localization;
19034
19000
  this.ctx = ctx;
19035
19001
  this.sizingService = sizingService;
19036
- /**
19037
- * Sets the data of the Grid. If an array is provided, the Grid automatically gets the total count
19038
- * ([more information and example]({% slug binding_grid %})).
19039
- */
19040
- this.data = [];
19002
+ this.rowReorderService = rowReorderService;
19041
19003
  /**
19042
19004
  * Defines the scroll mode used by the Grid.
19043
19005
  *
@@ -19101,6 +19063,10 @@ class GridComponent {
19101
19063
  * If set to `true`, the grid will render only the columns in the current viewport.
19102
19064
  */
19103
19065
  this.virtualColumns = false;
19066
+ /**
19067
+ * @hidden
19068
+ */
19069
+ this.gridData = () => { return this.flatData; };
19104
19070
  /**
19105
19071
  * Enables the [filtering]({% slug filtering_grid %}) of the Grid columns that have their `field` option set.
19106
19072
  */
@@ -19148,12 +19114,6 @@ class GridComponent {
19148
19114
  * @default false
19149
19115
  */
19150
19116
  this.reorderable = false;
19151
- /**
19152
- * Specifies if the loading indicator of the Grid will be displayed ([see example]({% slug binding_grid %})).
19153
- *
19154
- * @default false
19155
- */
19156
- this.loading = false;
19157
19117
  /**
19158
19118
  * Specifies if the column menu of the columns will be displayed ([see example]({% slug columnmenu_grid %})).
19159
19119
  *
@@ -19191,6 +19151,11 @@ class GridComponent {
19191
19151
  * Emits the [SelectionEvent]({% slug api_grid_selectionevent %}#toc-selectionchange).
19192
19152
  */
19193
19153
  this.selectionChange = new EventEmitter();
19154
+ /**
19155
+ * Fires when the user drops the dragged row and reordering is performed.
19156
+ * Emits the [RowReorderEvent]({% slug api_grid_selectionevent %}#toc-selectionchange).
19157
+ */
19158
+ this.rowReorder = new EventEmitter();
19194
19159
  /**
19195
19160
  * Fires when the data state of the Grid is changed.
19196
19161
  */
@@ -19302,11 +19267,14 @@ class GridComponent {
19302
19267
  this._sort = new Array();
19303
19268
  this._group = new Array();
19304
19269
  this._skip = 0;
19270
+ this._data = [];
19305
19271
  this.cachedWindowWidth = 0;
19306
19272
  this._rowSelected = null;
19307
19273
  this._cellSelected = null;
19274
+ this._rowReorderable = false;
19308
19275
  this._navigable = [];
19309
19276
  this._size = 'medium';
19277
+ this._loading = false;
19310
19278
  this.rtl = false;
19311
19279
  this._rowClass = () => null;
19312
19280
  validatePackage(packageMetadata);
@@ -19346,6 +19314,19 @@ class GridComponent {
19346
19314
  .changes.subscribe(this.reorder.bind(this));
19347
19315
  this.columnRangeChangeSubscription = this.columnInfoService.columnRangeChange.subscribe(this.onColumnRangeChange.bind(this));
19348
19316
  }
19317
+ /**
19318
+ * Sets the data of the Grid. If an array is provided, the Grid automatically gets the total count
19319
+ * ([more information and example]({% slug binding_grid %})).
19320
+ */
19321
+ set data(value) {
19322
+ this._data = value;
19323
+ }
19324
+ get data() {
19325
+ return this._data;
19326
+ }
19327
+ get hintText() {
19328
+ return this.rowReorderService.getDefaultHintText(this.columnList, this.flatData);
19329
+ }
19349
19330
  /**
19350
19331
  * Defines the number of records to be skipped by the pager.
19351
19332
  * Required by the [paging]({% slug paging_grid %}) functionality.
@@ -19355,7 +19336,7 @@ class GridComponent {
19355
19336
  }
19356
19337
  set skip(value) {
19357
19338
  if (typeof value === 'number' && value >= 0) {
19358
- this._skip = value;
19339
+ this._skip = this.rowReorderService.skip = value;
19359
19340
  }
19360
19341
  }
19361
19342
  /**
@@ -19453,6 +19434,26 @@ class GridComponent {
19453
19434
  get marqueeSelection() {
19454
19435
  return this.selectionService.enableMarquee || this.cellSelectionService.enableMarquee;
19455
19436
  }
19437
+ /**
19438
+ * Enables the [row reordering]({% slug ToDo %}) of the Grid.
19439
+ * @default false
19440
+ */
19441
+ set rowReorderable(value) {
19442
+ this._rowReorderable = value;
19443
+ if (value) {
19444
+ this.rowReorderSubscription = this.rowReorderService.rowReorder.subscribe(args => {
19445
+ this.ngZone.run(() => {
19446
+ this.rowReorder.emit(args);
19447
+ });
19448
+ });
19449
+ }
19450
+ else {
19451
+ this.rowReorderSubscription?.unsubscribe();
19452
+ }
19453
+ }
19454
+ get rowReorderable() {
19455
+ return this._rowReorderable;
19456
+ }
19456
19457
  /**
19457
19458
  * If set to `true`, the user can use dedicated shortcuts to interact with the Grid.
19458
19459
  * By default, navigation is disabled and the Grid content is accessible in the normal tab sequence.
@@ -19595,6 +19596,18 @@ class GridComponent {
19595
19596
  get activeRow() {
19596
19597
  return this.navigationService.activeRow;
19597
19598
  }
19599
+ /**
19600
+ * Specifies if the loading indicator of the Grid will be displayed ([see example]({% slug binding_grid %})).
19601
+ *
19602
+ * @default false
19603
+ */
19604
+ set loading(value) {
19605
+ this._loading = value;
19606
+ this.rowReorderable && this.notifyReorderContainers();
19607
+ }
19608
+ get loading() {
19609
+ return this._loading;
19610
+ }
19598
19611
  get dir() {
19599
19612
  return this.direction;
19600
19613
  }
@@ -19766,6 +19779,18 @@ class GridComponent {
19766
19779
  }
19767
19780
  return this.pageSize;
19768
19781
  }
19782
+ /**
19783
+ * @hidden
19784
+ */
19785
+ getDefaultSelectors(type) {
19786
+ return this.rowReorderService.defaultSelectors[type];
19787
+ }
19788
+ /**
19789
+ * @hidden
19790
+ */
19791
+ getHintSettings(type) {
19792
+ return this.rowReorderService[type];
19793
+ }
19769
19794
  /**
19770
19795
  * Expands the specified master row ([see example]({% slug hierarchy_grid %})).
19771
19796
  *
@@ -19997,6 +20022,9 @@ class GridComponent {
19997
20022
  if (this.focusElementSubscription) {
19998
20023
  this.focusElementSubscription.unsubscribe();
19999
20024
  }
20025
+ if (this.rowReorderSubscription) {
20026
+ this.rowReorderSubscription.unsubscribe();
20027
+ }
20000
20028
  this.columnRangeChangeSubscription.unsubscribe();
20001
20029
  }
20002
20030
  /**
@@ -20495,6 +20523,12 @@ class GridComponent {
20495
20523
  get isGroupExpanded() {
20496
20524
  return this.groupsService.userCallback;
20497
20525
  }
20526
+ /**
20527
+ * @hidden
20528
+ */
20529
+ handleReorderEvents(ev, evType) {
20530
+ this.rowReorderService[evType](ev);
20531
+ }
20498
20532
  /**
20499
20533
  * @hidden
20500
20534
  */
@@ -20721,6 +20755,11 @@ class GridComponent {
20721
20755
  this.closeCell();
20722
20756
  this.cancelCell();
20723
20757
  this.dataStateChange.emit(x);
20758
+ if (this.rowReorderable) {
20759
+ this.ngZone.onStable.pipe(take(1)).subscribe(() => {
20760
+ this.notifyReorderContainers();
20761
+ });
20762
+ }
20724
20763
  });
20725
20764
  }
20726
20765
  attachEditHandlers() {
@@ -21003,9 +21042,16 @@ class GridComponent {
21003
21042
  }
21004
21043
  return previousValue.cell !== currentValue.cell;
21005
21044
  }
21045
+ notifyReorderContainers() {
21046
+ this.dragTargetContainer?.notify();
21047
+ this.dropTargetContainer?.notify();
21048
+ }
21049
+ get flatData() {
21050
+ return isArray(this.data) ? this.data : this.data.data;
21051
+ }
21006
21052
  }
21007
- GridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GridComponent, deps: [{ token: BrowserSupportService }, { token: SelectionService }, { token: CellSelectionService }, { token: i0.ElementRef }, { token: GroupInfoService }, { token: GroupsService }, { token: ChangeNotificationService }, { token: DetailsService }, { token: EditService }, { token: FilterService }, { token: PDFService }, { token: ResponsiveService }, { token: i0.Renderer2 }, { token: ExcelService }, { token: i0.NgZone }, { token: ScrollSyncService }, { token: DomEventsService }, { token: ColumnResizingService }, { token: i0.ChangeDetectorRef }, { token: ColumnReorderService }, { token: ColumnInfoService }, { token: NavigationService }, { token: SortService }, { token: ScrollRequestService }, { token: i1.LocalizationService }, { token: ContextService }, { token: SizingOptionsService }], target: i0.ɵɵFactoryTarget.Component });
21008
- GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GridComponent, selector: "kendo-grid", inputs: { data: "data", pageSize: "pageSize", height: "height", rowHeight: "rowHeight", detailRowHeight: "detailRowHeight", skip: "skip", scrollable: "scrollable", selectable: "selectable", sort: "sort", size: "size", trackBy: "trackBy", filter: "filter", group: "group", virtualColumns: "virtualColumns", filterable: "filterable", sortable: "sortable", pageable: "pageable", groupable: "groupable", navigable: "navigable", navigatable: "navigatable", autoSize: "autoSize", rowClass: "rowClass", rowSticky: "rowSticky", rowSelected: "rowSelected", cellSelected: "cellSelected", resizable: "resizable", reorderable: "reorderable", loading: "loading", columnMenu: "columnMenu", hideHeader: "hideHeader", isDetailExpanded: "isDetailExpanded", isGroupExpanded: "isGroupExpanded" }, outputs: { filterChange: "filterChange", pageChange: "pageChange", groupChange: "groupChange", sortChange: "sortChange", selectionChange: "selectionChange", dataStateChange: "dataStateChange", groupExpand: "groupExpand", groupCollapse: "groupCollapse", detailExpand: "detailExpand", detailCollapse: "detailCollapse", edit: "edit", cancel: "cancel", save: "save", remove: "remove", add: "add", cellClose: "cellClose", cellClick: "cellClick", pdfExport: "pdfExport", excelExport: "excelExport", columnResize: "columnResize", columnReorder: "columnReorder", columnVisibilityChange: "columnVisibilityChange", columnLockedChange: "columnLockedChange", columnStickyChange: "columnStickyChange", scrollBottom: "scrollBottom", contentScroll: "contentScroll" }, host: { properties: { "attr.dir": "this.dir", "class.k-grid": "this.hostClass", "class.k-grid-sm": "this.sizeSmallClass", "class.k-grid-md": "this.sizeMediumClass", "class.k-grid-lockedcolumns": "this.lockedClasses", "class.k-grid-virtual": "this.virtualClasses", "class.k-grid-no-scrollbar": "this.noScrollbarClass" } }, providers: [
21053
+ GridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GridComponent, deps: [{ token: BrowserSupportService }, { token: SelectionService }, { token: CellSelectionService }, { token: i0.ElementRef }, { token: GroupInfoService }, { token: GroupsService }, { token: ChangeNotificationService }, { token: DetailsService }, { token: EditService }, { token: FilterService }, { token: PDFService }, { token: ResponsiveService }, { token: i0.Renderer2 }, { token: ExcelService }, { token: i0.NgZone }, { token: ScrollSyncService }, { token: DomEventsService }, { token: ColumnResizingService }, { token: i0.ChangeDetectorRef }, { token: ColumnReorderService }, { token: ColumnInfoService }, { token: NavigationService }, { token: SortService }, { token: ScrollRequestService }, { token: i1.LocalizationService }, { token: ContextService }, { token: SizingOptionsService }, { token: RowReorderService }], target: i0.ɵɵFactoryTarget.Component });
21054
+ GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GridComponent, selector: "kendo-grid", inputs: { data: "data", pageSize: "pageSize", height: "height", rowHeight: "rowHeight", detailRowHeight: "detailRowHeight", skip: "skip", scrollable: "scrollable", selectable: "selectable", sort: "sort", size: "size", trackBy: "trackBy", filter: "filter", group: "group", virtualColumns: "virtualColumns", filterable: "filterable", sortable: "sortable", pageable: "pageable", groupable: "groupable", rowReorderable: "rowReorderable", navigable: "navigable", navigatable: "navigatable", autoSize: "autoSize", rowClass: "rowClass", rowSticky: "rowSticky", rowSelected: "rowSelected", cellSelected: "cellSelected", resizable: "resizable", reorderable: "reorderable", loading: "loading", columnMenu: "columnMenu", hideHeader: "hideHeader", isDetailExpanded: "isDetailExpanded", isGroupExpanded: "isGroupExpanded" }, outputs: { filterChange: "filterChange", pageChange: "pageChange", groupChange: "groupChange", sortChange: "sortChange", selectionChange: "selectionChange", rowReorder: "rowReorder", dataStateChange: "dataStateChange", groupExpand: "groupExpand", groupCollapse: "groupCollapse", detailExpand: "detailExpand", detailCollapse: "detailCollapse", edit: "edit", cancel: "cancel", save: "save", remove: "remove", add: "add", cellClose: "cellClose", cellClick: "cellClick", pdfExport: "pdfExport", excelExport: "excelExport", columnResize: "columnResize", columnReorder: "columnReorder", columnVisibilityChange: "columnVisibilityChange", columnLockedChange: "columnLockedChange", columnStickyChange: "columnStickyChange", scrollBottom: "scrollBottom", contentScroll: "contentScroll" }, host: { properties: { "attr.dir": "this.dir", "class.k-grid": "this.hostClass", "class.k-grid-sm": "this.sizeSmallClass", "class.k-grid-md": "this.sizeMediumClass", "class.k-grid-lockedcolumns": "this.lockedClasses", "class.k-grid-virtual": "this.virtualClasses", "class.k-grid-no-scrollbar": "this.noScrollbarClass" } }, providers: [
21009
21055
  BrowserSupportService,
21010
21056
  LocalizationService,
21011
21057
  ColumnInfoService,
@@ -21046,8 +21092,9 @@ GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
21046
21092
  ScrollRequestService,
21047
21093
  SortService,
21048
21094
  ContextService,
21049
- SizingOptionsService
21050
- ], queries: [{ propertyName: "columns", predicate: ColumnBase }, { propertyName: "detailTemplateChildren", predicate: DetailTemplateDirective }, { propertyName: "cellLoadingTemplateChildren", predicate: CellLoadingTemplateDirective }, { propertyName: "loadingTemplateChildren", predicate: LoadingTemplateDirective }, { propertyName: "noRecordsTemplateChildren", predicate: NoRecordsTemplateDirective }, { propertyName: "pagerTemplateChildren", predicate: PagerTemplateDirective }, { propertyName: "toolbarTemplateChildren", predicate: ToolbarTemplateDirective }, { propertyName: "columnMenuTemplates", predicate: ColumnMenuTemplateDirective }], viewQueries: [{ propertyName: "lockedHeader", first: true, predicate: ["lockedHeader"], descendants: true }, { propertyName: "header", first: true, predicate: ["header"], descendants: true }, { propertyName: "ariaRoot", first: true, predicate: ["ariaRoot"], descendants: true, static: true }, { propertyName: "footer", predicate: ["footer"], descendants: true }], exportAs: ["kendoGrid"], usesOnChanges: true, ngImport: i0, template: `
21095
+ SizingOptionsService,
21096
+ RowReorderService
21097
+ ], queries: [{ propertyName: "columns", predicate: ColumnBase }, { propertyName: "detailTemplateChildren", predicate: DetailTemplateDirective }, { propertyName: "cellLoadingTemplateChildren", predicate: CellLoadingTemplateDirective }, { propertyName: "loadingTemplateChildren", predicate: LoadingTemplateDirective }, { propertyName: "noRecordsTemplateChildren", predicate: NoRecordsTemplateDirective }, { propertyName: "pagerTemplateChildren", predicate: PagerTemplateDirective }, { propertyName: "toolbarTemplateChildren", predicate: ToolbarTemplateDirective }, { propertyName: "columnMenuTemplates", predicate: ColumnMenuTemplateDirective }], viewQueries: [{ propertyName: "lockedHeader", first: true, predicate: ["lockedHeader"], descendants: true }, { propertyName: "header", first: true, predicate: ["header"], descendants: true }, { propertyName: "ariaRoot", first: true, predicate: ["ariaRoot"], descendants: true, static: true }, { propertyName: "dragTargetContainer", first: true, predicate: DragTargetContainerDirective, descendants: true }, { propertyName: "dropTargetContainer", first: true, predicate: DropTargetContainerDirective, descendants: true }, { propertyName: "footer", predicate: ["footer"], descendants: true }], exportAs: ["kendoGrid"], usesOnChanges: true, ngImport: i0, template: `
21051
21098
  <ng-container kendoGridLocalizedMessages
21052
21099
  i18n-groupPanelEmpty="kendo.grid.groupPanelEmpty|The label visible in the Grid group panel when it is empty"
21053
21100
  groupPanelEmpty="Drag a column header and drop it here to group by that column"
@@ -21273,6 +21320,9 @@ GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
21273
21320
 
21274
21321
  i18n-groupPanelLabel="kendo.grid.groupPanelLabel|The label for the Grid group panel toolbar"
21275
21322
  groupPanelLabel="Group panel"
21323
+
21324
+ i18n-dragRowHandleLabel="kendo.grid.dragRowHandleLabel|The label for the Grid drag row handle"
21325
+ dragRowHandleLabel="Drag row"
21276
21326
  >
21277
21327
  </ng-container>
21278
21328
  <kendo-grid-toolbar
@@ -21400,6 +21450,23 @@ GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
21400
21450
  </div>
21401
21451
  </div>
21402
21452
  <kendo-grid-list
21453
+ kendoDragTargetContainer
21454
+ kendoDropTargetContainer
21455
+ mode="manual"
21456
+ [dragDisabled]="!rowReorderable"
21457
+ [dropDisabled]="!rowReorderable"
21458
+ [dragTargetFilter]="getDefaultSelectors('dragTarget')"
21459
+ [dropTargetFilter]="getDefaultSelectors('dropTarget')"
21460
+ [dragHandle]="getDefaultSelectors('handle')"
21461
+ [hint]="{hintTemplate: defaultHint}"
21462
+ (press)="handleReorderEvents($event, 'press')"
21463
+ (dragStart)="handleReorderEvents($event, 'dragStart')"
21464
+ (drag)="handleReorderEvents($event, 'drag')"
21465
+ (dragEnter)="handleReorderEvents($event, 'dragEnter')"
21466
+ (dragLeave)="handleReorderEvents($event, 'dragLeave')"
21467
+ (dragEnd)="handleReorderEvents($event, 'dragEnd')"
21468
+ (drop)="handleReorderEvents($event, 'drop')"
21469
+ [dragData]="gridData"
21403
21470
  [data]="$any(view)"
21404
21471
  [rowHeight]="rowHeight"
21405
21472
  [detailRowHeight]="detailRowHeight"
@@ -21565,8 +21632,18 @@ GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
21565
21632
  [navigable]="navigation.toolbarEnabled"
21566
21633
  [attr.aria-label]="messageFor('bottomToolbarLabel')"
21567
21634
  [attr.aria-controls]="ariaRootId"
21568
- position="bottom"></kendo-grid-toolbar>
21569
- `, isInline: true, components: [{ type: ToolbarComponent, selector: "kendo-grid-toolbar", inputs: ["position", "size", "navigable"] }, { type: PagerComponent, selector: "kendo-pager", inputs: ["total", "skip", "pageSize", "options", "size", "template"], outputs: ["pageChange"] }, { type: GroupPanelComponent, selector: "kendo-grid-group-panel", inputs: ["text", "navigable", "groups"], outputs: ["change"] }, { type: ColGroupComponent, selector: "[kendoGridColGroup]", inputs: ["columns", "groups", "detailTemplate", "sort"] }, { type: HeaderComponent, selector: "[kendoGridHeader]", inputs: ["totalColumnLevels", "columns", "groups", "detailTemplate", "scrollable", "filterable", "sort", "filter", "sortable", "groupable", "lockedColumnsCount", "resizable", "reorderable", "columnMenu", "columnMenuTemplate", "totalColumnsCount", "tabIndex", "size"] }, { 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"] }, { type: FooterComponent, selector: "[kendoGridFooter]", inputs: ["columns", "groups", "detailTemplate", "scrollable", "lockedColumnsCount", "logicalRowIndex"] }, { 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", "rowClass"] }, { type: LoadingComponent, selector: "[kendoGridLoading]", inputs: ["loadingTemplate"] }], directives: [{ type: LocalizedMessagesDirective, selector: "[kendoGridLocalizedMessages]" }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: TableDirective, selector: "table", inputs: ["locked", "virtualColumns"] }, { type: GridTableDirective, selector: "[kendoGridTable]", inputs: ["size"] }, { type: ResizableContainerDirective, selector: "[kendoGridResizableContainer]", inputs: ["lockedWidth", "kendoGridResizableContainer"] }, { type: i1$1.DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }, { type: GridMarqueeDirective, selector: "[kendoGridSelectionMarquee]" }], encapsulation: i0.ViewEncapsulation.None });
21635
+ position="bottom">
21636
+ </kendo-grid-toolbar>
21637
+
21638
+ <ng-template #defaultHint>
21639
+ <kendo-icon-wrapper
21640
+ [name]="getHintSettings('hintIcon')"
21641
+ [svgIcon]="getHintSettings('hintSVGIcon')"
21642
+ innerCssClass="k-drag-status">
21643
+ </kendo-icon-wrapper>
21644
+ {{hintText}}
21645
+ </ng-template>
21646
+ `, isInline: true, components: [{ type: ToolbarComponent, selector: "kendo-grid-toolbar", inputs: ["position", "size", "navigable"] }, { type: PagerComponent, selector: "kendo-pager", inputs: ["total", "skip", "pageSize", "options", "size", "template"], outputs: ["pageChange"] }, { type: GroupPanelComponent, selector: "kendo-grid-group-panel", inputs: ["text", "navigable", "groups"], outputs: ["change"] }, { type: ColGroupComponent, selector: "[kendoGridColGroup]", inputs: ["columns", "groups", "detailTemplate", "sort"] }, { type: HeaderComponent, selector: "[kendoGridHeader]", inputs: ["totalColumnLevels", "columns", "groups", "detailTemplate", "scrollable", "filterable", "sort", "filter", "sortable", "groupable", "lockedColumnsCount", "resizable", "reorderable", "columnMenu", "columnMenuTemplate", "totalColumnsCount", "tabIndex", "size"] }, { 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"] }, { type: FooterComponent, selector: "[kendoGridFooter]", inputs: ["columns", "groups", "detailTemplate", "scrollable", "lockedColumnsCount", "logicalRowIndex"] }, { 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", "rowClass"] }, { type: LoadingComponent, selector: "[kendoGridLoading]", inputs: ["loadingTemplate"] }, { type: i3$1.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass"], exportAs: ["kendoIconWrapper"] }], directives: [{ type: LocalizedMessagesDirective, selector: "[kendoGridLocalizedMessages]" }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: TableDirective, selector: "table", inputs: ["locked", "virtualColumns"] }, { type: GridTableDirective, selector: "[kendoGridTable]", inputs: ["size"] }, { type: ResizableContainerDirective, selector: "[kendoGridResizableContainer]", inputs: ["lockedWidth", "kendoGridResizableContainer"] }, { type: i40.DragTargetContainerDirective, selector: "[kendoDragTargetContainer]", inputs: ["hint", "dragTargetFilter", "dragHandle", "dragDelay", "threshold", "dragTargetId", "dragData", "dragDisabled", "mode"], outputs: ["dragReady", "press", "dragStart", "drag", "release", "dragEnd"], exportAs: ["kendoDragTargetContainer"] }, { type: i40.DropTargetContainerDirective, selector: "[kendoDropTargetContainer]", inputs: ["dropTargetFilter", "dropDisabled"], outputs: ["dragEnter", "dragOver", "dragLeave", "drop"], exportAs: ["kendoDropTargetContainer"] }, { type: i1$1.DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }, { type: GridMarqueeDirective, selector: "[kendoGridSelectionMarquee]" }], encapsulation: i0.ViewEncapsulation.None });
21570
21647
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GridComponent, decorators: [{
21571
21648
  type: Component,
21572
21649
  args: [{
@@ -21613,7 +21690,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
21613
21690
  ScrollRequestService,
21614
21691
  SortService,
21615
21692
  ContextService,
21616
- SizingOptionsService
21693
+ SizingOptionsService,
21694
+ RowReorderService
21617
21695
  ],
21618
21696
  selector: 'kendo-grid',
21619
21697
  template: `
@@ -21842,6 +21920,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
21842
21920
 
21843
21921
  i18n-groupPanelLabel="kendo.grid.groupPanelLabel|The label for the Grid group panel toolbar"
21844
21922
  groupPanelLabel="Group panel"
21923
+
21924
+ i18n-dragRowHandleLabel="kendo.grid.dragRowHandleLabel|The label for the Grid drag row handle"
21925
+ dragRowHandleLabel="Drag row"
21845
21926
  >
21846
21927
  </ng-container>
21847
21928
  <kendo-grid-toolbar
@@ -21969,6 +22050,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
21969
22050
  </div>
21970
22051
  </div>
21971
22052
  <kendo-grid-list
22053
+ kendoDragTargetContainer
22054
+ kendoDropTargetContainer
22055
+ mode="manual"
22056
+ [dragDisabled]="!rowReorderable"
22057
+ [dropDisabled]="!rowReorderable"
22058
+ [dragTargetFilter]="getDefaultSelectors('dragTarget')"
22059
+ [dropTargetFilter]="getDefaultSelectors('dropTarget')"
22060
+ [dragHandle]="getDefaultSelectors('handle')"
22061
+ [hint]="{hintTemplate: defaultHint}"
22062
+ (press)="handleReorderEvents($event, 'press')"
22063
+ (dragStart)="handleReorderEvents($event, 'dragStart')"
22064
+ (drag)="handleReorderEvents($event, 'drag')"
22065
+ (dragEnter)="handleReorderEvents($event, 'dragEnter')"
22066
+ (dragLeave)="handleReorderEvents($event, 'dragLeave')"
22067
+ (dragEnd)="handleReorderEvents($event, 'dragEnd')"
22068
+ (drop)="handleReorderEvents($event, 'drop')"
22069
+ [dragData]="gridData"
21972
22070
  [data]="$any(view)"
21973
22071
  [rowHeight]="rowHeight"
21974
22072
  [detailRowHeight]="detailRowHeight"
@@ -22134,10 +22232,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
22134
22232
  [navigable]="navigation.toolbarEnabled"
22135
22233
  [attr.aria-label]="messageFor('bottomToolbarLabel')"
22136
22234
  [attr.aria-controls]="ariaRootId"
22137
- position="bottom"></kendo-grid-toolbar>
22235
+ position="bottom">
22236
+ </kendo-grid-toolbar>
22237
+
22238
+ <ng-template #defaultHint>
22239
+ <kendo-icon-wrapper
22240
+ [name]="getHintSettings('hintIcon')"
22241
+ [svgIcon]="getHintSettings('hintSVGIcon')"
22242
+ innerCssClass="k-drag-status">
22243
+ </kendo-icon-wrapper>
22244
+ {{hintText}}
22245
+ </ng-template>
22138
22246
  `
22139
22247
  }]
22140
- }], 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.LocalizationService }, { type: ContextService }, { type: SizingOptionsService }]; }, propDecorators: { data: [{
22248
+ }], 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.LocalizationService }, { type: ContextService }, { type: SizingOptionsService }, { type: RowReorderService }]; }, propDecorators: { data: [{
22141
22249
  type: Input
22142
22250
  }], pageSize: [{
22143
22251
  type: Input
@@ -22173,6 +22281,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
22173
22281
  type: Input
22174
22282
  }], groupable: [{
22175
22283
  type: Input
22284
+ }], rowReorderable: [{
22285
+ type: Input
22176
22286
  }], navigable: [{
22177
22287
  type: Input
22178
22288
  }], navigatable: [{
@@ -22207,6 +22317,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
22207
22317
  type: Output
22208
22318
  }], selectionChange: [{
22209
22319
  type: Output
22320
+ }], rowReorder: [{
22321
+ type: Output
22210
22322
  }], dataStateChange: [{
22211
22323
  type: Output
22212
22324
  }], groupExpand: [{
@@ -22306,6 +22418,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
22306
22418
  }], ariaRoot: [{
22307
22419
  type: ViewChild,
22308
22420
  args: ['ariaRoot', { static: true }]
22421
+ }], dragTargetContainer: [{
22422
+ type: ViewChild,
22423
+ args: [DragTargetContainerDirective]
22424
+ }], dropTargetContainer: [{
22425
+ type: ViewChild,
22426
+ args: [DropTargetContainerDirective]
22309
22427
  }], isDetailExpanded: [{
22310
22428
  type: Input
22311
22429
  }], isGroupExpanded: [{
@@ -22316,12 +22434,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
22316
22434
  * A directive which encapsulates the in-memory handling of data operations such as [paging]({% slug paging_grid %}),
22317
22435
  * [sorting]({% slug sorting_grid %}), and [grouping]({% slug grouping_grid %})
22318
22436
  * ([more information and examples]({% slug local_data_grid %}#toc-using-the-data-binding-directive)).
22437
+ *
22438
+ * @example
22439
+ * ```html
22440
+ * <kendo-grid [kendoGridBinding]="gridData" ...></kendo-grid>
22441
+ * ```
22319
22442
  */
22320
22443
  class DataBindingDirective {
22321
- constructor(grid, changeDetector, localDataChangesService) {
22444
+ constructor(grid, changeDetector, localDataChangesService, rowReorderService) {
22322
22445
  this.grid = grid;
22323
22446
  this.changeDetector = changeDetector;
22324
22447
  this.localDataChangesService = localDataChangesService;
22448
+ this.rowReorderService = rowReorderService;
22325
22449
  this.state = {
22326
22450
  skip: 0
22327
22451
  };
@@ -22332,12 +22456,16 @@ class DataBindingDirective {
22332
22456
  }
22333
22457
  /**
22334
22458
  * Defines the number of records that will be skipped by the pager.
22459
+ * @default 0
22335
22460
  */
22336
22461
  set skip(value) {
22337
22462
  if (!isPresent(value)) {
22338
22463
  value = 0;
22339
22464
  }
22340
22465
  this.grid.skip = this.state.skip = value;
22466
+ if (this.rowReorderService) {
22467
+ this.rowReorderService.skip = value;
22468
+ }
22341
22469
  }
22342
22470
  /**
22343
22471
  * Defines the descriptors by which the data will be sorted.
@@ -22381,6 +22509,11 @@ class DataBindingDirective {
22381
22509
  this.stateChangeSubscription = this.grid
22382
22510
  .dataStateChange
22383
22511
  .subscribe(this.onStateChange.bind(this));
22512
+ if (this.rowReorderService) {
22513
+ this.rowReorderSubscription = this.grid
22514
+ .rowReorder
22515
+ .subscribe(this.onRowReorder.bind(this));
22516
+ }
22384
22517
  }
22385
22518
  /**
22386
22519
  * @hidden
@@ -22392,6 +22525,9 @@ class DataBindingDirective {
22392
22525
  if (this.dataChangedSubscription) {
22393
22526
  this.dataChangedSubscription.unsubscribe();
22394
22527
  }
22528
+ if (this.rowReorderSubscription) {
22529
+ this.rowReorderSubscription.unsubscribe();
22530
+ }
22395
22531
  }
22396
22532
  /**
22397
22533
  * @hidden
@@ -22413,6 +22549,13 @@ class DataBindingDirective {
22413
22549
  this.applyState(state);
22414
22550
  this.rebind();
22415
22551
  }
22552
+ /**
22553
+ * @hidden
22554
+ */
22555
+ onRowReorder(ev) {
22556
+ this.rowReorderService.reorderRows(ev, this.originalData);
22557
+ this.rebind();
22558
+ }
22416
22559
  /**
22417
22560
  * @hidden
22418
22561
  */
@@ -22445,14 +22588,14 @@ class DataBindingDirective {
22445
22588
  this.dataChanged = false;
22446
22589
  }
22447
22590
  }
22448
- DataBindingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DataBindingDirective, deps: [{ token: GridComponent }, { token: i0.ChangeDetectorRef }, { token: LocalDataChangesService }], target: i0.ɵɵFactoryTarget.Directive });
22591
+ DataBindingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DataBindingDirective, deps: [{ token: GridComponent }, { token: i0.ChangeDetectorRef }, { token: LocalDataChangesService }, { token: RowReorderService }], target: i0.ɵɵFactoryTarget.Directive });
22449
22592
  DataBindingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: DataBindingDirective, selector: "[kendoGridBinding]", inputs: { skip: "skip", sort: "sort", filter: "filter", pageSize: "pageSize", group: "group", data: ["kendoGridBinding", "data"] }, usesOnChanges: true, ngImport: i0 });
22450
22593
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DataBindingDirective, decorators: [{
22451
22594
  type: Directive,
22452
22595
  args: [{
22453
22596
  selector: '[kendoGridBinding]'
22454
22597
  }]
22455
- }], ctorParameters: function () { return [{ type: GridComponent }, { type: i0.ChangeDetectorRef }, { type: LocalDataChangesService }]; }, propDecorators: { skip: [{
22598
+ }], ctorParameters: function () { return [{ type: GridComponent }, { type: i0.ChangeDetectorRef }, { type: LocalDataChangesService }, { type: RowReorderService }]; }, propDecorators: { skip: [{
22456
22599
  type: Input
22457
22600
  }], sort: [{
22458
22601
  type: Input
@@ -22469,7 +22612,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
22469
22612
 
22470
22613
  /**
22471
22614
  * A directive which stores the row selection state of the Grid in memory
22472
- * ([see example]({% slug selection_grid %}#toc-during-data-operations)).
22615
+ * ([see example]({% slug selection_grid %}#toc-toggling-the-selection-functionality)).
22473
22616
  */
22474
22617
  class SelectionDirective extends Selection {
22475
22618
  constructor(ctx, cd) {
@@ -22502,7 +22645,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
22502
22645
  }], ctorParameters: function () { return [{ type: ContextService }, { type: i0.ChangeDetectorRef }]; } });
22503
22646
 
22504
22647
  /**
22505
- * A directive which controls the expanded state of the master detail rows.
22648
+ * A directive which controls the expanded state of the master detail rows. ([see example](slug:master_detail_expanded_state_grid#toc-built-in-directive))
22506
22649
  */
22507
22650
  class ExpandDetailsDirective {
22508
22651
  constructor(grid) {
@@ -24428,28 +24571,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
24428
24571
 
24429
24572
  /**
24430
24573
  * Represents the `cancel` command of the Grid. You can apply this directive to any `button`
24431
- * element inside a [CommandColumnComponent]({% slug api_grid_commandcolumncomponent %}).
24574
+ * element inside a [CommandColumnComponent]({% slug api_grid_commandcolumncomponent %})
24575
+ * ([see example](slug:editing_directives_grid#toc-command-column-directives)).
24432
24576
  * When an associated button with the directive is clicked, the
24433
24577
  * [cancel]({% slug api_grid_gridcomponent %}#toc-cancel) event
24434
- * is triggered ([see example]({% slug basics_editing_grid %})).
24435
- *
24436
- * > When the row is not in the edit mode, the button with the `kendoGridCancelCommand` is automatically hidden.
24437
- *
24438
- * @example
24439
- * ```html-no-run
24440
- * <kendo-grid>
24441
- * <kendo-grid-command-column title="command">
24442
- * <ng-template kendoGridCellTemplate>
24443
- * <button kendoGridCancelCommand>Cancel changes</button>
24444
- * </ng-template>
24445
- * </kendo-grid-command-column>
24446
- * </kendo-grid>
24447
- * ```
24578
+ * is triggered. When the row is not in the edit mode, the button with the `kendoGridCancelCommand` is automatically hidden.
24448
24579
  *
24449
24580
  * You can control the content of the button based on the state of the row.
24450
24581
  *
24451
24582
  * @example
24452
- * ```html-no-run
24583
+ * ```html
24453
24584
  * <kendo-grid>
24454
24585
  * <kendo-grid-command-column title="command">
24455
24586
  * <ng-template kendoGridCellTemplate let-isNew="isNew">
@@ -24537,23 +24668,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
24537
24668
 
24538
24669
  /**
24539
24670
  * Represents the `save` command of the Grid. You can apply this directive to any `button`
24540
- * element inside a [CommandColumnComponent]({% slug api_grid_commandcolumncomponent %}).
24671
+ * element inside a [CommandColumnComponent]({% slug api_grid_commandcolumncomponent %})
24672
+ * ([see example](slug:editing_directives_grid#toc-command-column-directives)).
24541
24673
  * When an associated button with the directive is clicked, the
24542
24674
  * [save]({% slug api_grid_gridcomponent %}#toc-save) event
24543
- * is triggered ([see example]({% slug basics_editing_grid %})).
24544
- *
24545
- * > When the row is not in the edit mode, the button with `kendoGridSaveCommand` is automatically hidden.
24546
- *
24547
- * @example
24548
- * ```html-no-run
24549
- * <kendo-grid>
24550
- * <kendo-grid-command-column title="command">
24551
- * <ng-template kendoGridCellTemplate>
24552
- * <button kendoGridSaveCommand>Save changes</button>
24553
- * </ng-template>
24554
- * </kendo-grid-command-column>
24555
- * </kendo-grid>
24556
- * ```
24675
+ * is triggered. When the row is not in the edit mode, the button with `kendoGridSaveCommand` is automatically hidden.
24557
24676
  *
24558
24677
  * You can control the content of the button based on the state of the row.
24559
24678
  *
@@ -24646,15 +24765,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
24646
24765
 
24647
24766
  /**
24648
24767
  * Represents the `remove` command of the Grid. You can apply this directive to any `button` element
24649
- * inside a [CommandColumnComponent]({% slug api_grid_commandcolumncomponent %}).
24768
+ * inside a [CommandColumnComponent]({% slug api_grid_commandcolumncomponent %})
24769
+ * ([see example](slug:editing_directives_grid#toc-command-column-directives)).
24650
24770
  * When an associated button with the directive is clicked, the
24651
- * [remove event]({% slug api_grid_gridcomponent %}#toc-remove)
24652
- * is triggered ([see example]({% slug inline_editing_grid %}#toc-using-reactive-forms))).
24653
- *
24654
- * > When the row is in the edit mode, the button with the `kendoGridRemoveCommand` is automatically hidden.
24771
+ * [remove]({% slug api_grid_gridcomponent %}#toc-remove) event
24772
+ * is triggered.
24773
+ * When the row is in the edit mode, the button with the `kendoGridRemoveCommand` is automatically hidden.
24655
24774
  *
24656
24775
  * @example
24657
- * ```html-no-run
24776
+ * ```html
24658
24777
  * <kendo-grid>
24659
24778
  * <kendo-grid-command-column title="command">
24660
24779
  * <ng-template kendoGridCellTemplate>
@@ -24746,7 +24865,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
24746
24865
  * ([see example]({% slug basics_editing_grid %})).
24747
24866
  *
24748
24867
  * @example
24749
- * ```html-no-run
24868
+ * ```html
24750
24869
  * <kendo-grid>
24751
24870
  * <ng-template kendoGridToolbarTemplate>
24752
24871
  * <button kendoGridAddCommand>Add new</button>
@@ -24811,6 +24930,52 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
24811
24930
  args: ['class.k-grid-add-command']
24812
24931
  }] } });
24813
24932
 
24933
+ /**
24934
+ * Represents the drag handle for reordering rows in the Grid.
24935
+ */
24936
+ class RowReorderColumnComponent extends ColumnBase {
24937
+ constructor(parent, idService) {
24938
+ super(parent, idService);
24939
+ this.parent = parent;
24940
+ /**
24941
+ * @hidden
24942
+ */
24943
+ this.isRowReorderColumn = true;
24944
+ }
24945
+ }
24946
+ RowReorderColumnComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RowReorderColumnComponent, deps: [{ token: ColumnBase, host: true, optional: true, skipSelf: true }, { token: IdService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
24947
+ RowReorderColumnComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: RowReorderColumnComponent, selector: "kendo-grid-rowreorder-column", inputs: { dragHandleIcon: "dragHandleIcon", dragHandleSVGIcon: "dragHandleSVGIcon" }, providers: [
24948
+ {
24949
+ provide: ColumnBase,
24950
+ useExisting: forwardRef(() => RowReorderColumnComponent)
24951
+ }
24952
+ ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });
24953
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RowReorderColumnComponent, decorators: [{
24954
+ type: Component,
24955
+ args: [{
24956
+ providers: [
24957
+ {
24958
+ provide: ColumnBase,
24959
+ useExisting: forwardRef(() => RowReorderColumnComponent)
24960
+ }
24961
+ ],
24962
+ selector: 'kendo-grid-rowreorder-column',
24963
+ template: ``
24964
+ }]
24965
+ }], ctorParameters: function () { return [{ type: ColumnBase, decorators: [{
24966
+ type: SkipSelf
24967
+ }, {
24968
+ type: Host
24969
+ }, {
24970
+ type: Optional
24971
+ }] }, { type: IdService, decorators: [{
24972
+ type: Optional
24973
+ }] }]; }, propDecorators: { dragHandleIcon: [{
24974
+ type: Input
24975
+ }], dragHandleSVGIcon: [{
24976
+ type: Input
24977
+ }] } });
24978
+
24814
24979
  const exported = [
24815
24980
  CommandColumnComponent,
24816
24981
  CheckboxColumnComponent,
@@ -24826,7 +24991,8 @@ const exported = [
24826
24991
  RemoveCommandDirective,
24827
24992
  AddCommandDirective,
24828
24993
  CellLoadingTemplateDirective,
24829
- LoadingTemplateDirective
24994
+ LoadingTemplateDirective,
24995
+ RowReorderColumnComponent
24830
24996
  ];
24831
24997
  const importedModules$1 = [
24832
24998
  CommonModule,
@@ -24856,7 +25022,8 @@ class BodyModule {
24856
25022
  RemoveCommandDirective,
24857
25023
  AddCommandDirective,
24858
25024
  CellLoadingTemplateDirective,
24859
- LoadingTemplateDirective
25025
+ LoadingTemplateDirective,
25026
+ RowReorderColumnComponent
24860
25027
  ];
24861
25028
  }
24862
25029
  }
@@ -24875,7 +25042,8 @@ BodyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13
24875
25042
  RemoveCommandDirective,
24876
25043
  AddCommandDirective,
24877
25044
  CellLoadingTemplateDirective,
24878
- LoadingTemplateDirective], imports: [CommonModule,
25045
+ LoadingTemplateDirective,
25046
+ RowReorderColumnComponent], imports: [CommonModule,
24879
25047
  ReactiveFormsModule,
24880
25048
  FormsModule,
24881
25049
  SharedModule,
@@ -24896,7 +25064,8 @@ BodyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13
24896
25064
  RemoveCommandDirective,
24897
25065
  AddCommandDirective,
24898
25066
  CellLoadingTemplateDirective,
24899
- LoadingTemplateDirective] });
25067
+ LoadingTemplateDirective,
25068
+ RowReorderColumnComponent] });
24900
25069
  BodyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BodyModule, imports: [[...importedModules$1]] });
24901
25070
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BodyModule, decorators: [{
24902
25071
  type: NgModule,
@@ -25146,7 +25315,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
25146
25315
 
25147
25316
  /**
25148
25317
  * A directive which encapsulates the editing operations of the Grid when using
25149
- * the Template-Driven Angular Forms ([see example]({% slug editing_directives_grid %}#toc-the-template-directive)).
25318
+ * the Template-Driven Angular Forms ([see example]({% slug editing_directives_grid %}#toc-template-editing-directive)).
25150
25319
  */
25151
25320
  class TemplateEditingDirective extends RowEditingDirectiveBase {
25152
25321
  constructor(grid, localDataChangesService) {
@@ -25244,7 +25413,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
25244
25413
 
25245
25414
  /**
25246
25415
  * A directive which encapsulates the editing operations of the Grid when using the in-cell
25247
- * editing with Reactive Forms ([see example]({% slug editing_directives_grid %}#toc-the-incell-directive)).
25416
+ * editing with Reactive Forms ([see example]({% slug editing_directives_grid %}#toc-in-cell-editing)).
25248
25417
  */
25249
25418
  class InCellEditingDirective extends EditingDirectiveBase {
25250
25419
  constructor(grid, localDataChangesService, cdr) {
@@ -25730,7 +25899,8 @@ GridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13
25730
25899
  RowFilterModule,
25731
25900
  FilterMenuModule,
25732
25901
  ResizeSensorModule,
25733
- ColumnMenuModule], exports: [GridComponent,
25902
+ ColumnMenuModule,
25903
+ DragAndDropModule$1], exports: [GridComponent,
25734
25904
  ToolbarTemplateDirective,
25735
25905
  ToolbarComponent,
25736
25906
  GridSpacerComponent,
@@ -25743,7 +25913,7 @@ GridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13
25743
25913
  InCellEditingDirective,
25744
25914
  ExpandDetailsDirective,
25745
25915
  ExpandGroupDirective,
25746
- GridToolbarFocusableDirective, GroupHeaderTemplateDirective, GroupHeaderColumnTemplateDirective, GroupFooterTemplateDirective, ColumnComponent, SpanColumnComponent, ColumnGroupComponent, FooterTemplateDirective, DetailTemplateDirective, FocusableDirective, GridTableDirective, CommandColumnComponent, CheckboxColumnComponent, SelectionCheckboxDirective, CellTemplateDirective, NoRecordsTemplateDirective, EditTemplateDirective, EditCommandDirective, CancelCommandDirective, SaveCommandDirective, RemoveCommandDirective, AddCommandDirective, CellLoadingTemplateDirective, LoadingTemplateDirective, HeaderTemplateDirective, SelectAllCheckboxDirective, PagerComponent, PagerPrevButtonsComponent, PagerNextButtonsComponent, PagerNumericButtonsComponent, PagerInputComponent, PagerInfoComponent, PagerPageSizesComponent, PagerTemplateDirective, PagerDropDownListDirective, PagerInputDirective, FilterRowComponent, FilterCellComponent, FilterCellTemplateDirective, FilterCellOperatorsComponent, StringFilterCellComponent, NumericFilterCellComponent, AutoCompleteFilterCellComponent, BooleanFilterCellComponent, DateFilterCellComponent, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, StringFilterMenuComponent, FilterMenuTemplateDirective, NumericFilterMenuComponent, DateFilterMenuComponent, BooleanFilterMenuComponent, FilterMenuDropDownListDirective, BooleanFilterRadioButtonDirective, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, ColumnChooserComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuSortComponent, ColumnMenuLockComponent, ColumnMenuStickComponent, ColumnMenuPositionComponent, ColumnMenuChooserComponent, ColumnMenuTemplateDirective, ColumnMenuContainerComponent, ColumnMenuItemDirective, ColumnMenuComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuAutoSizeAllColumnsComponent] });
25916
+ GridToolbarFocusableDirective, GroupHeaderTemplateDirective, GroupHeaderColumnTemplateDirective, GroupFooterTemplateDirective, ColumnComponent, SpanColumnComponent, ColumnGroupComponent, FooterTemplateDirective, DetailTemplateDirective, FocusableDirective, GridTableDirective, CommandColumnComponent, CheckboxColumnComponent, SelectionCheckboxDirective, CellTemplateDirective, NoRecordsTemplateDirective, EditTemplateDirective, EditCommandDirective, CancelCommandDirective, SaveCommandDirective, RemoveCommandDirective, AddCommandDirective, CellLoadingTemplateDirective, LoadingTemplateDirective, RowReorderColumnComponent, HeaderTemplateDirective, SelectAllCheckboxDirective, PagerComponent, PagerPrevButtonsComponent, PagerNextButtonsComponent, PagerNumericButtonsComponent, PagerInputComponent, PagerInfoComponent, PagerPageSizesComponent, PagerTemplateDirective, PagerDropDownListDirective, PagerInputDirective, FilterRowComponent, FilterCellComponent, FilterCellTemplateDirective, FilterCellOperatorsComponent, StringFilterCellComponent, NumericFilterCellComponent, AutoCompleteFilterCellComponent, BooleanFilterCellComponent, DateFilterCellComponent, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, StringFilterMenuComponent, FilterMenuTemplateDirective, NumericFilterMenuComponent, DateFilterMenuComponent, BooleanFilterMenuComponent, FilterMenuDropDownListDirective, BooleanFilterRadioButtonDirective, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, ColumnChooserComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuSortComponent, ColumnMenuLockComponent, ColumnMenuStickComponent, ColumnMenuPositionComponent, ColumnMenuChooserComponent, ColumnMenuTemplateDirective, ColumnMenuContainerComponent, ColumnMenuItemDirective, ColumnMenuComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuAutoSizeAllColumnsComponent] });
25747
25917
  GridModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GridModule, imports: [[
25748
25918
  CommonModule,
25749
25919
  GroupModule,
@@ -25755,7 +25925,8 @@ GridModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13
25755
25925
  RowFilterModule,
25756
25926
  FilterMenuModule,
25757
25927
  ResizeSensorModule,
25758
- ColumnMenuModule
25928
+ ColumnMenuModule,
25929
+ DragAndDropModule$1
25759
25930
  ]] });
25760
25931
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GridModule, decorators: [{
25761
25932
  type: NgModule,
@@ -25773,7 +25944,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
25773
25944
  RowFilterModule,
25774
25945
  FilterMenuModule,
25775
25946
  ResizeSensorModule,
25776
- ColumnMenuModule
25947
+ ColumnMenuModule,
25948
+ DragAndDropModule$1
25777
25949
  ]
25778
25950
  }]
25779
25951
  }] });
@@ -25792,50 +25964,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
25792
25964
 
25793
25965
  /**
25794
25966
  * Represents the PDF page template of the Grid that helps to customize the PDF pages. To define a page template,
25795
- * nest an `<ng-template>` tag with the `kendoGridPDFTemplate` directive inside `<kendo-grid-pdf>`.
25967
+ * nest an `<ng-template>` tag with the `kendoGridPDFTemplate` directive inside `<kendo-grid-pdf>` tag.
25796
25968
  *
25797
25969
  * The template context provides the following fields:
25798
25970
  * - `pageNumber`&mdash;Defines PDF page number.
25799
25971
  * - `totalPages`&mdash;Defines the total number of PDF pages.
25800
25972
  *
25801
25973
  * @example
25802
- * ```ts-preview
25803
- *
25804
- * _@Component({
25805
- * selector: 'my-app',
25806
- * template: `
25807
- * <kendo-grid [data]="gridData">
25808
- * <ng-template kendoGridToolbarTemplate>
25809
- * <button kendoGridPDFCommand icon="file-pdf">Export to PDF</button>
25810
- * </ng-template>
25811
- * <kendo-grid-column field="ProductName">
25812
- * </kendo-grid-column>
25813
- * <kendo-grid-column field="UnitPrice">
25814
- * </kendo-grid-column>
25815
- * <kendo-grid-pdf fileName="Products.pdf" paperSize="A4" [margin]="{ top: '1cm', left: '1cm', right: '1cm', bottom: '1cm' }">
25816
- * <ng-template kendoGridPDFTemplate let-pageNum="pageNum" let-totalPages="totalPages">
25817
- * <div style="position: absolute;top: 5px; left: 5px;">
25818
- * Page {{ pageNum }} of {{ totalPages }}
25819
- * </div>
25820
- * </ng-template>
25821
- * </kendo-grid-pdf>
25822
- * </kendo-grid>
25823
- * `
25824
- * })
25825
- *
25826
- * class AppComponent {
25827
- * public gridData = [{
25828
- * "ProductID": 1,
25829
- * "ProductName": "Chai",
25830
- * "UnitPrice": 18.0000
25831
- * }, {
25832
- * "ProductID": 2,
25833
- * "ProductName": "Chang",
25834
- * "UnitPrice": 19.0000
25835
- * }
25836
- * ];
25837
- * }
25838
- *
25974
+ * ```html
25975
+ * <kendo-grid [data]="gridData">
25976
+ * ...
25977
+ * <kendo-grid-pdf fileName="Products.pdf" paperSize="A4">
25978
+ * <ng-template kendoGridPDFTemplate let-pageNumber="pageNumber" let-totalPages="totalPages">
25979
+ * Page {{ pageNumber }} of {{ totalPages }}
25980
+ * </ng-template>
25981
+ * </kendo-grid-pdf>
25982
+ * </kendo-grid>
25839
25983
  * ```
25840
25984
  */
25841
25985
  class PDFTemplateDirective extends PDFExportTemplateDirective {
@@ -26541,13 +26685,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
26541
26685
  /**
26542
26686
  * Represents the `export-to-Excel` command of the Grid. You can apply this
26543
26687
  * directive to any `button` element inside a
26544
- * [ToolbarTemplate]({% slug api_grid_commandcolumncomponent %}).
26688
+ * [ToolbarTemplate]({% slug api_grid_toolbartemplatedirective %}).
26545
26689
  * When the user clicks a button associated with the directive, the
26546
26690
  * [excelExport]({% slug api_grid_gridcomponent %}#toc-excelexport) event
26547
26691
  * fires ([see example]({% slug excelexport_grid %})).
26548
26692
  *
26549
26693
  * @example
26550
- * ```html-no-run
26694
+ * ```html
26551
26695
  * <kendo-grid>
26552
26696
  * <ng-template kendoGridToolbarTemplate>
26553
26697
  * <button kendoGridExcelCommand>Export to PDF</button>
@@ -26665,5 +26809,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
26665
26809
  * Generated bundle index. Do not edit.
26666
26810
  */
26667
26811
 
26668
- export { AddCommandDirective, AfterEqFilterOperatorComponent, AfterFilterOperatorComponent, AutoCompleteFilterCellComponent, BaseFilterCellComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, BodyModule, BooleanFilterCellComponent, BooleanFilterComponent, BooleanFilterMenuComponent, BooleanFilterRadioButtonDirective, BrowserSupportService, CELL_CONTEXT, CancelCommandDirective, CellCloseEvent, CellComponent, CellLoadingTemplateDirective, 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, EditService, EditTemplateDirective, EditingDirectiveBase, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, ExcelCommandDirective, ExcelComponent, ExcelExportEvent, ExcelModule, ExcelService, ExpandDetailsDirective, ExpandGroupDirective, FieldAccessorPipe, FilterCellComponent, FilterCellHostDirective, FilterCellOperatorsComponent, FilterCellTemplateDirective, FilterCellWrapperComponent, FilterInputDirective, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuDropDownListDirective, FilterMenuHostDirective, FilterMenuInputWrapperComponent, FilterMenuModule, FilterMenuTemplateDirective, FilterRowComponent, FilterService, FocusRoot, FocusableDirective, FooterComponent, FooterModule, FooterTemplateDirective, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, GridComponent, GridModule, GridSpacerComponent, GridTableDirective, GridToolbarFocusableDirective, GridToolbarNavigationService, GroupBindingDirective, GroupFooterTemplateDirective, GroupHeaderColumnTemplateDirective, GroupHeaderComponent, GroupHeaderTemplateDirective, GroupInfoService, GroupModule, GroupPanelComponent, GroupsService, HeaderComponent, HeaderModule, HeaderTemplateDirective, IdService, InCellEditingDirective, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, ListComponent, LoadingComponent, LoadingTemplateDirective, LocalDataChangesService, LogicalCellDirective, LogicalRowDirective, MenuTabbingService, NavigationService, NoRecordsTemplateDirective, NotEqualFilterOperatorComponent, NumericFilterCellComponent, NumericFilterComponent, NumericFilterMenuComponent, NumericFilterMenuInputComponent, PDFCommandDirective, PDFComponent, PDFMarginComponent, PDFModule, PDFService, PDFTemplateDirective, PagerComponent, PagerContextService, PagerDropDownListDirective, PagerInfoComponent, PagerInputComponent, PagerInputDirective, PagerModule, PagerNextButtonsComponent, PagerNumericButtonsComponent, PagerPageSizesComponent, PagerPrevButtonsComponent, PagerTemplateDirective, PopupCloseEvent, ReactiveEditingDirective, RemoveCommandDirective, ResizableContainerDirective, ResizeService, ResponsiveService, RowEditingDirectiveBase, RowFilterModule, SaveCommandDirective, ScrollRequestService, ScrollSyncService, SelectAllCheckboxDirective, SelectionCheckboxDirective, SelectionDirective, SelectionService, SharedFilterModule, SharedModule, SinglePopupService, SizingOptionsService, Skip, SortService, SpanColumnComponent, StartsWithFilterOperatorComponent, StringFilterCellComponent, StringFilterComponent, StringFilterMenuComponent, StringFilterMenuInputComponent, SuspendService, TableBodyComponent, TableDirective, TemplateContextDirective, TemplateEditingDirective, ToolbarComponent, ToolbarTemplateDirective, count, defaultTrackBy, hasFilterMenu, hasFilterRow, isFilterable, slice };
26812
+ export { AddCommandDirective, AfterEqFilterOperatorComponent, AfterFilterOperatorComponent, AutoCompleteFilterCellComponent, BaseFilterCellComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, BodyModule, BooleanFilterCellComponent, BooleanFilterComponent, BooleanFilterMenuComponent, BooleanFilterRadioButtonDirective, BrowserSupportService, CELL_CONTEXT, CancelCommandDirective, CellCloseEvent, CellComponent, CellLoadingTemplateDirective, 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, EditService, EditTemplateDirective, EditingDirectiveBase, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, ExcelCommandDirective, ExcelComponent, ExcelExportEvent, ExcelModule, ExcelService, ExpandDetailsDirective, ExpandGroupDirective, FieldAccessorPipe, FilterCellComponent, FilterCellHostDirective, FilterCellOperatorsComponent, FilterCellTemplateDirective, FilterCellWrapperComponent, FilterInputDirective, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuDropDownListDirective, FilterMenuHostDirective, FilterMenuInputWrapperComponent, FilterMenuModule, FilterMenuTemplateDirective, FilterRowComponent, FilterService, FocusRoot, FocusableDirective, FooterComponent, FooterModule, FooterTemplateDirective, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, GridComponent, GridModule, GridSpacerComponent, GridTableDirective, GridToolbarFocusableDirective, GridToolbarNavigationService, GroupBindingDirective, GroupFooterTemplateDirective, GroupHeaderColumnTemplateDirective, GroupHeaderComponent, GroupHeaderTemplateDirective, GroupInfoService, GroupModule, GroupPanelComponent, GroupsService, HeaderComponent, HeaderModule, HeaderTemplateDirective, IdService, InCellEditingDirective, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, ListComponent, LoadingComponent, LoadingTemplateDirective, LocalDataChangesService, LogicalCellDirective, LogicalRowDirective, MenuTabbingService, NavigationService, NoRecordsTemplateDirective, NotEqualFilterOperatorComponent, NumericFilterCellComponent, NumericFilterComponent, NumericFilterMenuComponent, NumericFilterMenuInputComponent, PDFCommandDirective, PDFComponent, PDFMarginComponent, PDFModule, PDFService, PDFTemplateDirective, PagerComponent, PagerContextService, PagerDropDownListDirective, PagerInfoComponent, PagerInputComponent, PagerInputDirective, PagerModule, PagerNextButtonsComponent, PagerNumericButtonsComponent, PagerPageSizesComponent, PagerPrevButtonsComponent, PagerTemplateDirective, PopupCloseEvent, ReactiveEditingDirective, RemoveCommandDirective, ResizableContainerDirective, ResizeService, ResponsiveService, RowEditingDirectiveBase, RowFilterModule, RowReorderColumnComponent, SaveCommandDirective, ScrollRequestService, ScrollSyncService, SelectAllCheckboxDirective, SelectionCheckboxDirective, SelectionDirective, SelectionService, SharedFilterModule, SharedModule, SinglePopupService, SizingOptionsService, Skip, SortService, SpanColumnComponent, StartsWithFilterOperatorComponent, StringFilterCellComponent, StringFilterComponent, StringFilterMenuComponent, StringFilterMenuInputComponent, SuspendService, TableBodyComponent, TableDirective, TemplateContextDirective, TemplateEditingDirective, ToolbarComponent, ToolbarTemplateDirective, count, defaultTrackBy, hasFilterMenu, hasFilterRow, isFilterable, slice };
26669
26813