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

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 (111) 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/column-menu/column-menu.service.d.ts +9 -21
  4. package/columns/column-base.d.ts +18 -369
  5. package/columns/reorder-column.component.d.ts +31 -0
  6. package/columns/sort-settings.d.ts +20 -4
  7. package/common/fetch-data-callback.d.ts +1 -1
  8. package/common/preventable-event.d.ts +1 -1
  9. package/common/single-popup.service.d.ts +1 -1
  10. package/common/size-options.d.ts +1 -2
  11. package/data/grid-item.interface.d.ts +6 -3
  12. package/databinding.directive.d.ts +15 -1
  13. package/editing/add-command.directive.d.ts +1 -1
  14. package/editing/cancel-command.directive.d.ts +4 -16
  15. package/editing/edit-template.directive.d.ts +2 -3
  16. package/editing/remove-command.directive.d.ts +6 -6
  17. package/editing/save-command.directive.d.ts +3 -15
  18. package/editing-directives/in-cell-editing.directive.d.ts +1 -1
  19. package/editing-directives/template-editing.directive.d.ts +1 -1
  20. package/esm2020/column-menu/column-menu-item-content-template.directive.mjs +13 -24
  21. package/esm2020/column-menu/column-menu-template.directive.mjs +14 -28
  22. package/esm2020/column-menu/column-menu.service.mjs +9 -21
  23. package/esm2020/columns/column-base.mjs +10 -40
  24. package/esm2020/columns/reorder-column.component.mjs +55 -0
  25. package/esm2020/common/preventable-event.mjs +1 -1
  26. package/esm2020/common/single-popup.service.mjs +1 -1
  27. package/esm2020/databinding.directive.mjs +30 -3
  28. package/esm2020/editing/add-command.directive.mjs +1 -1
  29. package/esm2020/editing/cancel-command.directive.mjs +4 -16
  30. package/esm2020/editing/edit-template.directive.mjs +2 -3
  31. package/esm2020/editing/remove-command.directive.mjs +6 -6
  32. package/esm2020/editing/save-command.directive.mjs +3 -15
  33. package/esm2020/editing-directives/in-cell-editing.directive.mjs +1 -1
  34. package/esm2020/editing-directives/template-editing.directive.mjs +1 -1
  35. package/esm2020/excel/excel-command.directive.mjs +2 -2
  36. package/esm2020/excel/excel.module.mjs +5 -15
  37. package/esm2020/grid.component.mjs +195 -38
  38. package/esm2020/grid.module.mjs +76 -81
  39. package/esm2020/grouping/group-footer-template.directive.mjs +9 -35
  40. package/esm2020/grouping/group-header-column-template.directive.mjs +2 -2
  41. package/esm2020/grouping/group-header-template.directive.mjs +9 -37
  42. package/esm2020/index.mjs +1 -0
  43. package/esm2020/layout/sizing-options.service.mjs +3 -0
  44. package/esm2020/localization/messages.mjs +3 -1
  45. package/esm2020/navigation/focusable.directive.mjs +10 -41
  46. package/esm2020/package-metadata.mjs +2 -2
  47. package/esm2020/pager/pager-template.directive.mjs +13 -46
  48. package/esm2020/pdf/pdf-template.directive.mjs +10 -38
  49. package/esm2020/pdf/pdf.module.mjs +7 -16
  50. package/esm2020/rendering/body.module.mjs +9 -4
  51. package/esm2020/rendering/cell-loading.template.directive.mjs +11 -8
  52. package/esm2020/rendering/cell-template.directive.mjs +11 -35
  53. package/esm2020/rendering/cell.component.mjs +43 -10
  54. package/esm2020/rendering/details/detail-template.directive.mjs +10 -58
  55. package/esm2020/rendering/details-expand.directive.mjs +1 -1
  56. package/esm2020/rendering/footer/footer-template.directive.mjs +8 -35
  57. package/esm2020/rendering/header/header-template.directive.mjs +9 -36
  58. package/esm2020/rendering/loading-template.directive.mjs +1 -1
  59. package/esm2020/rendering/no-records-template.directive.mjs +11 -58
  60. package/esm2020/rendering/toolbar/toolbar-position.mjs +17 -0
  61. package/esm2020/rendering/toolbar/toolbar-template.directive.mjs +10 -56
  62. package/esm2020/row-reordering/row-reorder.service.mjs +233 -0
  63. package/esm2020/row-reordering/types.mjs +5 -0
  64. package/esm2020/row-reordering/utils.mjs +87 -0
  65. package/esm2020/selection/selectall-checkbox.directive.mjs +12 -1
  66. package/esm2020/selection/selection-checkbox.directive.mjs +11 -44
  67. package/esm2020/selection/selection-default.mjs +1 -0
  68. package/esm2020/selection/selection.directive.mjs +1 -1
  69. package/excel/excel-command.directive.d.ts +2 -2
  70. package/excel/excel.module.d.ts +5 -15
  71. package/fesm2015/progress-kendo-angular-grid.mjs +869 -792
  72. package/fesm2020/progress-kendo-angular-grid.mjs +869 -796
  73. package/filtering/filterable.d.ts +10 -0
  74. package/grid.component.d.ts +46 -4
  75. package/grid.module.d.ts +93 -101
  76. package/grouping/group-footer-template.directive.d.ts +9 -35
  77. package/grouping/group-header-column-template.directive.d.ts +2 -2
  78. package/grouping/group-header-template.directive.d.ts +9 -37
  79. package/index.d.ts +2 -0
  80. package/layout/sizing-options.service.d.ts +3 -0
  81. package/localization/messages.d.ts +5 -1
  82. package/navigation/focusable.directive.d.ts +10 -41
  83. package/navigation/navigable-settings.d.ts +15 -1
  84. package/package.json +15 -14
  85. package/pager/pager-settings.d.ts +8 -12
  86. package/pager/pager-template.directive.d.ts +13 -46
  87. package/pdf/pdf-template.directive.d.ts +10 -38
  88. package/pdf/pdf.module.d.ts +7 -16
  89. package/rendering/body.module.d.ts +9 -8
  90. package/rendering/cell-loading.template.directive.d.ts +11 -8
  91. package/rendering/cell-template.directive.d.ts +11 -35
  92. package/rendering/cell.component.d.ts +5 -0
  93. package/rendering/common/row-class.d.ts +4 -4
  94. package/rendering/details/detail-template.directive.d.ts +10 -58
  95. package/rendering/details-expand.directive.d.ts +1 -1
  96. package/rendering/footer/footer-template.directive.d.ts +8 -35
  97. package/rendering/header/header-template.directive.d.ts +9 -36
  98. package/rendering/loading-template.directive.d.ts +1 -1
  99. package/rendering/no-records-template.directive.d.ts +11 -58
  100. package/rendering/toolbar/toolbar-position.d.ts +18 -1
  101. package/rendering/toolbar/toolbar-template.directive.d.ts +10 -56
  102. package/row-reordering/row-reorder.service.d.ts +57 -0
  103. package/row-reordering/types.d.ts +40 -0
  104. package/row-reordering/utils.d.ts +78 -0
  105. package/schematics/ngAdd/index.js +2 -2
  106. package/scrolling/scrollmode.d.ts +4 -4
  107. package/selection/selectall-checkbox.directive.d.ts +12 -1
  108. package/selection/selection-checkbox.directive.d.ts +11 -44
  109. package/selection/selection-default.d.ts +1 -0
  110. package/selection/selection.directive.d.ts +1 -1
  111. package/selection/types.d.ts +24 -2
@@ -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 { switchMap, take, map, filter, takeUntil, switchMapTo, delay, auditTime, distinctUntilChanged, tap, throttleTime, debounceTime, bufferCount } from 'rxjs/operators';
11
11
  import * as i1 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';
@@ -932,7 +934,7 @@ class PreventableEvent {
932
934
  this.prevented = true;
933
935
  }
934
936
  /**
935
- * Returns `true` if the event was prevented
937
+ * Returns a respective boolean if the event was prevented
936
938
  * by any of its subscribers.
937
939
  *
938
940
  * @returns `true` if the default action was prevented.
@@ -1293,47 +1295,16 @@ const EMPTY_CELL_CONTEXT = {};
1293
1295
  * [focus in a navigable Grid]({% slug keyboard_navigation_grid %}).
1294
1296
  *
1295
1297
  * @example
1296
- * ```ts-preview
1297
- * _@Component({
1298
- * selector: 'my-app',
1299
- * template: `
1300
- * <input type="text" placeholder="Tab stop #0" style="margin-bottom: 8px;" />
1301
- * <kendo-grid [data]="data" [navigable]="true">
1302
- * <kendo-grid-column field="ProductID" title="Product ID" [width]="100">
1303
- * </kendo-grid-column>
1304
- * <kendo-grid-column field="ProductName" title="Product Name" [width]="150">
1305
- * </kendo-grid-column>
1306
- * <kendo-grid-column>
1307
- * <ng-template kendoGridCellTemplate let-dataItem>
1308
- * <!-- The first focusable element will be focused when pressing Enter on the cell -->
1309
- * <input type="text" kendoGridFocusable [value]="dataItem.ProductName" style="margin-right: 8px;" />
1310
- * <button kendoGridFocusable>Update</button>
1311
- * </ng-template>
1312
- * </kendo-grid-column>
1313
- * <kendo-grid-column [width]="100">
1314
- * <ng-template kendoGridCellTemplate>
1315
- * <!-- A single focusable element will be focused during navigation -->
1316
- * <button kendoGridFocusable>Delete</button>
1317
- * </ng-template>
1318
- * </kendo-grid-column>
1319
- * </kendo-grid>
1320
- * <input type="text" placeholder="Tab stop #2" style="margin-top: 8px;" />
1321
- * `
1322
- * })
1323
- *
1324
- * class AppComponent {
1325
- * public readonly data: any = [{
1326
- * "ProductID": 1,
1327
- * "ProductName": "Chai",
1328
- * "UnitPrice": 18.0000,
1329
- * "Discontinued": true
1330
- * }, {
1331
- * "ProductID": 2,
1332
- * "ProductName": "Chang",
1333
- * "UnitPrice": 19.0000,
1334
- * "Discontinued": false
1335
- * }];
1336
- * }
1298
+ * ```html
1299
+ * <kendo-grid [data]="data" [navigable]="true">
1300
+ * <kendo-grid-column>
1301
+ * <ng-template kendoGridCellTemplate let-dataItem>
1302
+ * <!-- The first focusable element will be focused when pressing Enter on the cell -->
1303
+ * <input type="text" kendoGridFocusable [value]="dataItem.ProductName" style="margin-right: 8px;" />
1304
+ * <button kendoGridFocusable>Update</button>
1305
+ * </ng-template>
1306
+ * </kendo-grid-column>
1307
+ * </kendo-grid>
1337
1308
  * ```
1338
1309
  */
1339
1310
  class FocusableDirective {
@@ -2861,15 +2832,15 @@ const packageMetadata = {
2861
2832
  name: '@progress/kendo-angular-grid',
2862
2833
  productName: 'Kendo UI for Angular',
2863
2834
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
2864
- publishDate: 1681814065,
2865
- version: '12.0.0-develop.8',
2835
+ publishDate: 1682434440,
2836
+ version: '12.0.0',
2866
2837
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
2867
2838
  };
2868
2839
 
2869
2840
  /**
2870
- * Represents the column cell template of the Grid ([more information and example]({% slug templates_columns_grid %}#toc-cell-template)).
2871
- * Helps to customize the content of the cells. To define the cell template, nest an `<ng-template>` tag
2872
- * with the `kendoGridCellTemplate` directive inside a `<kendo-grid-column>` tag.
2841
+ * Represents the column cell template of the Grid.
2842
+ * Helps to customize the content of the cells. To define the cell template, nest an `<ng-template>` tag with the
2843
+ * `kendoGridCellTemplate` directive inside a `<kendo-grid-column>` tag [see example](slug:templates_columns_grid#toc-cell-template).
2873
2844
  *
2874
2845
  * The template context is set to the current data item and the following additional fields are passed:
2875
2846
  * - `columnIndex`&mdash;The current column index. Use it as an alias for a template variable by utilizing the `let-columnIndex="columnIndex"` syntax.
@@ -2878,38 +2849,14 @@ const packageMetadata = {
2878
2849
  * - `column`&mdash;The current column instance. Use it as an alias for a template variable by utilizing the `let-column="column"` syntax.
2879
2850
  *
2880
2851
  * @example
2881
- * ```ts-preview
2882
- *
2883
- * _@Component({
2884
- * selector: 'my-app',
2885
- * template: `
2886
- * <kendo-grid [data]="gridData">
2887
- * <kendo-grid-column field="ProductName">
2888
- * <ng-template kendoGridCellTemplate let-dataItem let-rowIndex="rowIndex">
2889
- * Data Row #: {{rowIndex}} /
2890
- * <strong>{{dataItem.ProductName}}</strong>
2891
- * ({{dataItem.Discontinued ? "discontinued" : "active"}})
2892
- * </ng-template>
2893
- * </kendo-grid-column>
2894
- * </kendo-grid>
2895
- * `
2896
- * })
2897
- *
2898
- * class AppComponent {
2899
- * public gridData = [{
2900
- * "ProductID": 1,
2901
- * "ProductName": "Chai",
2902
- * "UnitPrice": 18.0000,
2903
- * "Discontinued": false
2904
- * }, {
2905
- * "ProductID": 2,
2906
- * "ProductName": "Chang",
2907
- * "UnitPrice": 19.0000,
2908
- * "Discontinued": true
2909
- * }
2910
- * ];
2911
- * }
2912
- *
2852
+ * ```html
2853
+ * <kendo-grid [data]="gridData" ...>
2854
+ * <kendo-grid-column field="ProductName">
2855
+ * <ng-template kendoGridCellTemplate let-dataItem let-rowIndex="rowIndex" let-column="column">
2856
+ * Data Row: {{rowIndex}}
2857
+ * </ng-template>
2858
+ * </kendo-grid-column>
2859
+ * </kendo-grid>
2913
2860
  * ```
2914
2861
  */
2915
2862
  class CellTemplateDirective {
@@ -2933,7 +2880,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
2933
2880
  /**
2934
2881
  * Represents the group-header cell template of the Grid which helps to customize the content of the group header item.
2935
2882
  * To define the group header template, nest an `<ng-template>` tag with the `kendoGridGroupHeaderTemplate`
2936
- * directive inside `<kendo-grid-column>`.
2883
+ * directive inside `<kendo-grid-column>`. ([See example](slug:grouping_grid_templates#toc-header-template)).
2937
2884
  *
2938
2885
  * The template context is set to the current data item and the following additional fields are passed:
2939
2886
  * - `group`&mdash;The current group item.
@@ -2942,44 +2889,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
2942
2889
  * - `aggregates`&mdash;All aggregate values for the current group.
2943
2890
  * - `index`&mdash;The index of the current group.
2944
2891
  * - `expanded`&mdash;A boolean value indicating if the group is currently expanded.
2945
- * ([see example]({% slug groupable_grid_with_aggregates %})).
2946
2892
  *
2947
2893
  * @example
2948
- * ```ts
2949
- * import { process } from '@progress/kendo-data-query';
2950
- *
2951
- * _@Component({
2952
- * selector: 'my-app',
2953
- * template: `
2954
- * <kendo-grid [data]="gridData" [group]="groups">
2955
- * <kendo-grid-column field="ProductName">
2956
- * <ng-template kendoGridGroupHeaderTemplate let-group let-field="field" let-value="value">
2957
- * <strong>{{field}}</strong>: {{value}}
2958
- * </ng-template>
2959
- * </kendo-grid-column>
2960
- * </kendo-grid>
2961
- * `
2962
- * })
2963
- *
2964
- * class AppComponent {
2965
- * public groups = [{ field: "ProductName" }];
2966
- *
2967
- * public gridData = process([{
2968
- * "ProductID": 1,
2969
- * "ProductName": "Chai",
2970
- * "UnitPrice": 18.0000,
2971
- * "Discontinued": false
2972
- * }, {
2973
- * "ProductID": 2,
2974
- * "ProductName": "Chang",
2975
- * "UnitPrice": 19.0000,
2976
- * "Discontinued": true
2977
- * }
2978
- * ], {
2979
- * group: this.groups
2980
- * });
2981
- * }
2982
- *
2894
+ * ```html
2895
+ * <kendo-grid [data]="gridData" [group]="groups">
2896
+ * <kendo-grid-column field="ProductName">
2897
+ * <ng-template kendoGridGroupHeaderTemplate let-group let-field="field" let-value="value">
2898
+ * <strong>{{field}}</strong>: {{value}}
2899
+ * </ng-template>
2900
+ * </kendo-grid-column>
2901
+ * </kendo-grid>
2983
2902
  * ```
2984
2903
  */
2985
2904
  class GroupHeaderTemplateDirective {
@@ -3003,7 +2922,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
3003
2922
  /**
3004
2923
  * Represents the group-header column template of the Grid which helps to customize the content of the group headers.
3005
2924
  * To define the group header template, nest an `<ng-template>` tag with the `kendoGridGroupHeaderColumnTemplate`
3006
- * directive inside `<kendo-grid-column>`. ([See example]({% slug groupable_grid_with_aggregates %})).
2925
+ * directive inside `<kendo-grid-column>`. ([See example](slug:grouping_grid_templates#toc-header-column-template)).
3007
2926
  *
3008
2927
  * The template context is set to the current data item and the following additional fields are passed:
3009
2928
  * - `group`&mdash;The current group item.
@@ -3012,7 +2931,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
3012
2931
  * - `aggregates`&mdash;All aggregate values for the current group.
3013
2932
  *
3014
2933
  * @example
3015
- * ```ts
2934
+ * ```html
3016
2935
  * <kendo-grid-column field="ProductName" title="Product Name">
3017
2936
  * <ng-template kendoGridGroupHeaderColumnTemplate let-group="group" let-aggregates="aggregates">
3018
2937
  * <span title="Group Header Column Template for ProductName">
@@ -3041,13 +2960,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
3041
2960
  } });
3042
2961
 
3043
2962
  /**
3044
- * Represents the column edit-cell template of the Grid ([see example]({% slug inline_editing_grid %}#toc-using-reactive-forms)).
2963
+ * Represents the column edit-cell template of the Grid ([see example](slug:custom_reactive_editing_grid#toc-setting-up-custom-inputs)).
3045
2964
  * Helps to customize the content of the edited cells. To define the cell template, nest an `<ng-template>`
3046
2965
  * tag with the `kendoGridEditTemplate` directive inside a `<kendo-grid-column>` tag.
3047
2966
  *
3048
2967
  * The template context is set to the current form group and the following additional fields are passed:
3049
- * - `formGroup`&mdash;The current [FormGroup](link:site.data.urls.angular['formgroupapi']).
3050
- * Represents the default context that will be assigned to any template variable which utilizes the `let-x` syntax&mdash;for example, `let-formGroup`.
2968
+ * - `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`.
3051
2969
  * If you use the Grid inside [Template-Driven Forms](link:site.data.urls.angular['forms']), it will be `undefined`.
3052
2970
  * - `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.
3053
2971
  * - `dataItem`&mdash;The current data item. Use it as an alias for a template variable by utilizing the `let-dataItem="dataItem"` syntax.
@@ -3077,47 +2995,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
3077
2995
  * To define the group footer template, nest an `<ng-template>` tag with the `kendoGridGroupFooterTemplate` directive
3078
2996
  * inside `<kendo-grid-column>`.
3079
2997
  *
3080
- * The template context is set to the current aggregates and the following additional fields are passed:
2998
+ * The template context is set to the current data item and the following additional fields are passed:
3081
2999
  * - `column`&mdash;Defines an instance of the `ColumnComponent` option.
3082
3000
  * - `field`&mdash;The current column field name.
3083
3001
  * - `group`&mdash;The current group data item.
3084
3002
  * - `aggregates`&mdash;All aggregate values for the current group.
3085
3003
  *
3086
3004
  * @example
3087
- * ```ts-preview
3088
- * import { process } from '@progress/kendo-data-query';
3089
- *
3090
- * _@Component({
3091
- * selector: 'my-app',
3092
- * template: `
3093
- * <kendo-grid [data]="gridData" [group]="groups">
3094
- * <kendo-grid-column field="ProductName">
3095
- * <ng-template kendoGridGroupFooterTemplate let-aggregates let-field="field">
3096
- * Count: {{aggregates[field].count}}
3097
- * </ng-template>
3098
- * </kendo-grid-column>
3099
- * </kendo-grid>
3100
- * `
3101
- * })
3102
- *
3103
- * class AppComponent {
3104
- * public groups = [{ field: "ProductName", aggregates: [{ field: "ProductName", aggregate: "count" }] }];
3105
- *
3106
- * public gridData = process([{
3107
- * "ProductID": 1,
3108
- * "ProductName": "Chai",
3109
- * "UnitPrice": 18.0000,
3110
- * "Discontinued": false
3111
- * }, {
3112
- * "ProductID": 2,
3113
- * "ProductName": "Chang",
3114
- * "UnitPrice": 19.0000,
3115
- * "Discontinued": true
3116
- * }
3117
- * ], {
3118
- * group: this.groups
3119
- * });
3120
- * }
3005
+ * ```html
3006
+ * <kendo-grid [data]="gridData" [group]="groups">
3007
+ * <kendo-grid-column field="ProductName">
3008
+ * <ng-template kendoGridGroupFooterTemplate let-aggregates let-field="field">
3009
+ * Count: {{aggregates[field].count}}
3010
+ * </ng-template>
3011
+ * </kendo-grid-column>
3012
+ * </kendo-grid>
3121
3013
  * ```
3122
3014
  */
3123
3015
  class GroupFooterTemplateDirective {
@@ -3143,48 +3035,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
3143
3035
  * ([more information and example]({% slug templates_columns_grid %}#toc-header-template)).
3144
3036
  * Helps to customize the table header cell for the column.
3145
3037
  * To define a header template, nest an `<ng-template>` tag with the
3146
- * [kendoGridHeaderTemplate]({% slug api_grid_headertemplatedirective %}) directive inside the `<kendo-grid-column>` tag.
3038
+ * `kendoGridHeaderTemplate` directive inside the `<kendo-grid-column>` tag.
3147
3039
  *
3148
3040
  * The template context is set to the current column and then the following additional fields are passed:
3149
3041
  * * `column`&mdash;Defines an instance of the [ColumnComponent]({% slug api_grid_columncomponent %}) option.
3150
3042
  * * `columnIndex`&mdash;Defines the current column index.
3151
3043
  *
3152
3044
  * @example
3153
- * ```ts-preview
3154
- *
3155
- * _@Component({
3156
- * selector: 'my-app',
3157
- * template: `
3158
- * <kendo-grid [data]="gridData">
3159
- * <kendo-grid-column field="ProductName">
3160
- * <ng-template kendoGridHeaderTemplate let-column let-columnIndex="columnIndex">
3161
- * {{column.field}}({{columnIndex}})
3162
- * </ng-template>
3163
- * </kendo-grid-column>
3164
- * <kendo-grid-column field="UnitPrice">
3165
- * <ng-template kendoGridHeaderTemplate let-column let-columnIndex="columnIndex">
3166
- * {{column.field}}({{columnIndex}})
3167
- * </ng-template>
3168
- * </kendo-grid-column>
3169
- * </kendo-grid>
3170
- * `
3171
- * })
3172
- *
3173
- * class AppComponent {
3174
- * public gridData = [{
3175
- * "ProductID": 1,
3176
- * "ProductName": "Chai",
3177
- * "UnitPrice": 18.0000,
3178
- * "Discontinued": false
3179
- * }, {
3180
- * "ProductID": 2,
3181
- * "ProductName": "Chang",
3182
- * "UnitPrice": 19.0000,
3183
- * "Discontinued": true
3184
- * }
3185
- * ];
3186
- * }
3187
- *
3045
+ * ```html
3046
+ * <kendo-grid [data]="gridData">
3047
+ * <kendo-grid-column field="ProductName">
3048
+ * <ng-template kendoGridHeaderTemplate let-column let-columnIndex="columnIndex">
3049
+ * {{column.field}}({{columnIndex}})
3050
+ * </ng-template>
3051
+ * </kendo-grid-column>
3052
+ * </kendo-grid>
3188
3053
  * ```
3189
3054
  */
3190
3055
  class HeaderTemplateDirective {
@@ -3220,41 +3085,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
3220
3085
  * refer to the article on [aggregates]({% slug groupable_grid_with_aggregates %}).
3221
3086
  *
3222
3087
  * @example
3223
- * ```ts-preview
3224
- *
3225
- * _@Component({
3226
- * selector: 'my-app',
3227
- * template: `
3228
- * <kendo-grid [data]="gridData" scrollable="none">
3229
- * <kendo-grid-column field="ProductName">
3230
- * <ng-template kendoGridFooterTemplate let-column let-columnIndex="columnIndex">
3231
- * {{column.field}}({{columnIndex}})
3232
- * </ng-template>
3233
- * </kendo-grid-column>
3234
- * <kendo-grid-column field="UnitPrice">
3235
- * <ng-template kendoGridFooterTemplate let-column let-columnIndex="columnIndex">
3236
- * {{column.field}}({{columnIndex}})
3237
- * </ng-template>
3238
- * </kendo-grid-column>
3239
- * </kendo-grid>
3240
- * `
3241
- * })
3242
- *
3243
- * class AppComponent {
3244
- * public gridData = [{
3245
- * "ProductID": 1,
3246
- * "ProductName": "Chai",
3247
- * "UnitPrice": 18.0000,
3248
- * "Discontinued": false
3249
- * }, {
3250
- * "ProductID": 2,
3251
- * "ProductName": "Chang",
3252
- * "UnitPrice": 19.0000,
3253
- * "Discontinued": true
3254
- * }
3255
- * ];
3256
- * }
3257
- *
3088
+ * ```html
3089
+ * <kendo-grid [data]="gridData" scrollable="none">
3090
+ * <kendo-grid-column field="ProductName">
3091
+ * <ng-template kendoGridFooterTemplate let-column let-columnIndex="columnIndex">
3092
+ * {{column.field}}({{columnIndex}})
3093
+ * </ng-template>
3094
+ * </kendo-grid-column>
3095
+ * </kendo-grid>
3258
3096
  * ```
3259
3097
  */
3260
3098
  class FooterTemplateDirective {
@@ -3279,40 +3117,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
3279
3117
  * Represents the template for the column menu in the Grid. Provides an option for
3280
3118
  * customizing the content of the column menu for all or for specific columns.
3281
3119
  * To define the content template, nest an `<ng-template>` tag with the
3282
- * `kendoGridColumnMenuTemplate` directive inside the `kendo-grid` or the `<kendo-grid-column>` component.
3120
+ * `kendoGridColumnMenuTemplate` directive inside the `<kendo-grid>` or the `<kendo-grid-column>` component.
3283
3121
  *
3284
3122
  * The template context is passes through the following fields:
3285
3123
  * - `service`&mdash;Represents the [ColumnMenuService]({% slug api_grid_columnmenuservice %}).
3286
3124
  * - `column`&mdash;Represents the Grid column.
3287
3125
  *
3288
3126
  * @example
3289
- * ```ts-preview
3290
- *
3291
- * _@Component({
3292
- * selector: 'my-app',
3293
- * template: `
3294
- * <kendo-grid [kendoGridBinding]="data" [sortable]="true" [columnMenu]="true">
3295
- * <ng-template kendoGridColumnMenuTemplate let-service="service">
3296
- * <kendo-grid-columnmenu-sort [service]="service">
3297
- * </kendo-grid-columnmenu-sort>
3298
- * </ng-template>
3299
- * <kendo-grid-column field="Field1" [width]="100">
3300
- * <ng-template kendoGridColumnMenuTemplate let-service="service">
3301
- * <kendo-grid-columnmenu-lock [service]="service">
3302
- * </kendo-grid-columnmenu-lock>
3303
- * <kendo-grid-columnmenu-sort [service]="service">
3304
- * </kendo-grid-columnmenu-sort>
3305
- * </ng-template>
3306
- * </kendo-grid-column>
3307
- * <kendo-grid-column field="Field2" [width]="100"></kendo-grid-column>
3308
- * </kendo-grid>
3309
- * `
3310
- * })
3311
- *
3312
- * class AppComponent {
3313
- * public data: any[] = [{ Field1: 'Foo', Field2: 'Bar' }, { Field1: 'Foo1', Field2: 'Bar1' }];
3314
- * }
3315
- *
3127
+ * ```html
3128
+ * <kendo-grid [kendoGridBinding]="data" [sortable]="true" [columnMenu]="true">
3129
+ * <ng-template kendoGridColumnMenuTemplate let-service="service">
3130
+ * <kendo-grid-columnmenu-sort [service]="service"></kendo-grid-columnmenu-sort>
3131
+ * </ng-template>
3132
+ * <kendo-grid-column field="Field1">
3133
+ * <ng-template kendoGridColumnMenuTemplate let-service="service">
3134
+ * <kendo-grid-columnmenu-lock [service]="service"></kendo-grid-columnmenu-lock>
3135
+ * <kendo-grid-columnmenu-sort [service]="service"></kendo-grid-columnmenu-sort>
3136
+ * </ng-template>
3137
+ * </kendo-grid-column>
3138
+ * <kendo-grid-column field="Field2"></kendo-grid-column>
3139
+ * </kendo-grid>
3316
3140
  * ```
3317
3141
  */
3318
3142
  class ColumnMenuTemplateDirective {
@@ -3369,6 +3193,10 @@ const isSpanColumn = column => column.isSpanColumn;
3369
3193
  * @hidden
3370
3194
  */
3371
3195
  const isCheckboxColumn = column => column.isCheckboxColumn;
3196
+ /**
3197
+ * @hidden
3198
+ */
3199
+ const isRowReorderColumn = column => column.isRowReorderColumn;
3372
3200
  const isColumnContainer = column => column.isColumnGroup || isSpanColumn(column);
3373
3201
  /**
3374
3202
  * The base class for the column components of the Grid.
@@ -3384,9 +3212,9 @@ class ColumnBase {
3384
3212
  */
3385
3213
  this.matchesMedia = true;
3386
3214
  /**
3387
- * The column index after reordering.
3215
+ * The column index after reordering. The `orderIndex` is a read-only property. Setting this field does not affect column order.
3388
3216
  *
3389
- * > `orderIndex` is a read-only property. Setting this field does not affect column order.
3217
+ * @default 0
3390
3218
  */
3391
3219
  this.orderIndex = 0;
3392
3220
  /**
@@ -3421,18 +3249,22 @@ class ColumnBase {
3421
3249
  this.sticky = false;
3422
3250
  /**
3423
3251
  * Specifies if the column can be locked or unlocked from the column menu or by reordering the columns.
3252
+ * @default true
3424
3253
  */
3425
3254
  this.lockable = true;
3426
3255
  /**
3427
3256
  * Specifies if the column can be stuck or unstuck from the column menu.
3257
+ * @default true
3428
3258
  */
3429
3259
  this.stickable = true;
3430
3260
  /**
3431
3261
  * Specifies if the column menu will be shown for the column.
3262
+ * @default true
3432
3263
  */
3433
3264
  this.columnMenu = true;
3434
3265
  /**
3435
3266
  * Specifies if the column will be included in the column-chooser list.
3267
+ * @default true
3436
3268
  */
3437
3269
  this.includeInChooser = true;
3438
3270
  /**
@@ -3480,44 +3312,6 @@ class ColumnBase {
3480
3312
  *
3481
3313
  * @default false
3482
3314
  *
3483
- * @example
3484
- * ```ts
3485
- * _@Component({
3486
- * selector: 'my-app',
3487
- * template: `
3488
- * <kendo-grid [data]="gridData" [scrollable]="scrollable" style="height: 200px">
3489
- * <kendo-grid-column field="ProductID" title="Product ID" [width]="120" [locked]="true">
3490
- * </kendo-grid-column>
3491
- * <kendo-grid-column field="ProductName" title="Product Name" [width]="200">
3492
- * </kendo-grid-column>
3493
- * <kendo-grid-column field="UnitPrice" title="Unit Price" [width]="230">
3494
- * </kendo-grid-column>
3495
- * </kendo-grid>
3496
- * `
3497
- * })
3498
- *
3499
- * class AppComponent {
3500
- * public gridData: any[];
3501
- *
3502
- * constructor() {
3503
- * this.gridData = products;
3504
- * }
3505
- * }
3506
- *
3507
- * const products = [{
3508
- * "ProductID": 1,
3509
- * "ProductName": "Chai",
3510
- * "UnitPrice": 18.0000,
3511
- * "Discontinued": true
3512
- * }, {
3513
- * "ProductID": 2,
3514
- * "ProductName": "Chang",
3515
- * "UnitPrice": 19.0000,
3516
- * "Discontinued": false
3517
- * }
3518
- * ];
3519
- *
3520
- * ```
3521
3315
  */
3522
3316
  set locked(value) {
3523
3317
  this._locked = value;
@@ -4387,64 +4181,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
4387
4181
  * To define the detail template, nest an `<ng-template>` tag with the `kendoGridDetailTemplate` directive inside a `<kendo-grid>` tag.
4388
4182
  *
4389
4183
  * @example
4390
- * ```ts-preview
4391
- *
4392
- * _@Component({
4393
- * selector: 'my-app',
4394
- * template: `
4395
- * <kendo-grid
4396
- * [data]="data"
4397
- * selectable="true"
4398
- * style="height: 160px"
4399
- * >
4400
- * <kendo-grid-column field="ProductID"></kendo-grid-column>
4401
- * <kendo-grid-column field="ProductName"></kendo-grid-column>
4402
- * <kendo-grid-column field="UnitPrice"></kendo-grid-column>
4403
- * <ng-template kendoGridDetailTemplate let-dataItem>
4404
- * <div *ngIf="dataItem.Category">
4405
- * <header>{{dataItem.Category?.CategoryName}}</header>
4406
- * <span>{{dataItem.Category?.Description}}</span>
4407
- * </div>
4408
- * </ng-template>
4409
- * </kendo-grid>
4410
- * `
4411
- * })
4412
- *
4413
- * class AppComponent {
4414
- * public data = [{
4415
- * "ProductID": 1,
4416
- * "ProductName": "Chai",
4417
- * "UnitPrice": 18.0000,
4418
- * "Discontinued": false,
4419
- * "Category": {
4420
- * "CategoryID": 1,
4421
- * "CategoryName": "Beverages",
4422
- * "Description": "Soft drinks, coffees, teas, beers, and ales"
4423
- * }
4424
- * }, {
4425
- * "ProductID": 2,
4426
- * "ProductName": "Chang",
4427
- * "UnitPrice": 19.0000,
4428
- * "Discontinued": false,
4429
- * "Category": {
4430
- * "CategoryID": 1,
4431
- * "CategoryName": "Beverages",
4432
- * "Description": "Soft drinks, coffees, teas, beers, and ales"
4433
- * }
4434
- * }, {
4435
- * "ProductID": 3,
4436
- * "ProductName": "Aniseed Syrup",
4437
- * "UnitPrice": 10.0000,
4438
- * "Discontinued": false,
4439
- * "Category": {
4440
- * "CategoryID": 2,
4441
- * "CategoryName": "Condiments",
4442
- * "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
4443
- * }
4444
- * }];
4445
- *
4446
- * }
4447
- *
4184
+ * ```html
4185
+ * <kendo-grid [data]="data" selectable="true" style="height: 160px">
4186
+ * <kendo-grid-column field="ProductName"></kendo-grid-column>
4187
+ * <ng-template kendoGridDetailTemplate let-dataItem>
4188
+ * <div *ngIf="dataItem.Category">
4189
+ * <header>{{dataItem.Category?.CategoryName}}</header>
4190
+ * span>{{dataItem.Category?.Description}}</span>
4191
+ * </div>
4192
+ * </ng-template>
4193
+ * </kendo-grid>
4448
4194
  * ```
4449
4195
  *
4450
4196
  */
@@ -5007,6 +4753,7 @@ class Selection {
5007
4753
  this.cd = cd;
5008
4754
  /**
5009
4755
  * Defines the collection that will store the selected item keys.
4756
+ * @default []
5010
4757
  */
5011
4758
  this.selectedKeys = [];
5012
4759
  /**
@@ -5394,66 +5141,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
5394
5141
 
5395
5142
  /**
5396
5143
  * Represents the no-records template of the Grid. Provides an option to customize the
5397
- * appearance of the item that is displayed when no data is present. To define the no-records template,
5398
- * nest an `<ng-template>` tag with the `kendoGridNoRecordsTemplate` directive inside `<kendo-grid>`.
5399
- *
5400
- * > When the locked columns of the Grid are in use, the template is displayed in the non-locked part of the content.
5144
+ * appearance of the item that is displayed when no data is present.
5145
+ * To define the no-records template, nest an `<ng-template>` tag with the `kendoGridNoRecordsTemplate`
5146
+ * directive inside `<kendo-grid>` [see example](slug:norecordtemplate_grid).
5401
5147
  *
5402
5148
  * @example
5403
- * ```ts-preview
5404
- *
5405
- * _@Component({
5406
- * selector: 'my-app',
5407
- * template: `
5408
- * <kendo-grid [data]="data">
5409
- * <kendo-grid-column field="ProductID"></kendo-grid-column>
5410
- * <kendo-grid-column field="ProductName"></kendo-grid-column>
5411
- * <kendo-grid-column field="UnitPrice"></kendo-grid-column>
5412
- * <ng-template kendoGridNoRecordsTemplate>
5413
- * There are not products. <a href="#" (click)="refresh()">Click here to refresh</a>.
5414
- * </ng-template>
5415
- * </kendo-grid>
5416
- * `
5417
- * })
5418
- *
5419
- * class AppComponent {
5420
- * public data = [];
5421
- * public refresh() {
5422
- * this.data = [{
5423
- * "ProductID": 1,
5424
- * "ProductName": "Chai",
5425
- * "UnitPrice": 18.0000,
5426
- * "Discontinued": false,
5427
- * "Category": {
5428
- * "CategoryID": 1,
5429
- * "CategoryName": "Beverages",
5430
- * "Description": "Soft drinks, coffees, teas, beers, and ales"
5431
- * }
5432
- * }, {
5433
- * "ProductID": 2,
5434
- * "ProductName": "Chang",
5435
- * "UnitPrice": 19.0000,
5436
- * "Discontinued": false,
5437
- * "Category": {
5438
- * "CategoryID": 1,
5439
- * "CategoryName": "Beverages",
5440
- * "Description": "Soft drinks, coffees, teas, beers, and ales"
5441
- * }
5442
- * }, {
5443
- * "ProductID": 3,
5444
- * "ProductName": "Aniseed Syrup",
5445
- * "UnitPrice": 10.0000,
5446
- * "Discontinued": false,
5447
- * "Category": {
5448
- * "CategoryID": 2,
5449
- * "CategoryName": "Condiments",
5450
- * "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
5451
- * }
5452
- * }];
5453
- *
5454
- * }
5455
- * }
5456
- *
5149
+ * ```html
5150
+ * <kendo-grid [data]="data">
5151
+ * <ng-template kendoGridNoRecordsTemplate>
5152
+ * There are not products. <a href="#" (click)="refresh()">Click here to refresh</a>.
5153
+ * </ng-template>
5154
+ * <kendo-grid-column field="ProductID"></kendo-grid-column>
5155
+ * <kendo-grid-column field="ProductName"></kendo-grid-column>
5156
+ * </kendo-grid>
5457
5157
  * ```
5458
5158
  */
5459
5159
  class NoRecordsTemplateDirective {
@@ -5568,7 +5268,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
5568
5268
 
5569
5269
  /**
5570
5270
  * Represents the pager template which helps to customize the pager appearance in the Grid. To define a pager
5571
- * template, nest an `<ng-template>` tag with the `kendoPagerTemplate` directive inside `<kendo-grid>`.
5271
+ * template, nest an `<ng-template>` tag with the `kendoPagerTemplate` directive inside `<kendo-grid>` tag
5272
+ * [see example](slug:pager_template_grid).
5572
5273
  *
5573
5274
  * The template context provides the following fields:
5574
5275
  * * `currentPage`&mdash;The index of the displayed page.
@@ -5576,53 +5277,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
5576
5277
  * * `skip`&mdash;The current skip value.
5577
5278
  * * `total`&mdash;The total number of records.
5578
5279
  * * `totalPages`&mdash;The total number of available pages.
5579
- * * Needs to be provided as an input to inner pager components used within the template when the Grid is navigable.
5580
5280
  *
5581
5281
  * @example
5582
- * ```ts-preview
5583
- *
5584
- * _@Component({
5585
- * selector: 'my-app',
5586
- * template: `
5587
- * <kendo-grid
5588
- * [kendoGridBinding]="gridData"
5589
- * [pageSize]="1"
5590
- * [pageable]="true"
5591
- * >
5592
- * <kendo-grid-column field="ProductID" title="ID" [width]="40">
5593
- * </kendo-grid-column>
5594
- * <kendo-grid-column field="ProductName" title="Name" [width]="250">
5595
- * </kendo-grid-column>
5596
- * <kendo-grid-column field="UnitPrice" title="Price" [width]="80" format="{0:c}">
5597
- * </kendo-grid-column>
5598
- *
5599
- * <ng-template kendoPagerTemplate let-totalPages="totalPages" let-currentPage="currentPage">
5600
- * <kendo-pager-prev-buttons></kendo-pager-prev-buttons>
5601
- * <kendo-pager-numeric-buttons [buttonCount]="10"></kendo-pager-numeric-buttons>
5602
- * <kendo-pager-next-buttons></kendo-pager-next-buttons>
5603
- * <kendo-pager-info></kendo-pager-info>
5604
- * Current page: {{currentPage}}
5605
- * </ng-template>
5606
- *
5607
- * </kendo-grid>
5608
- * `
5609
- * })
5610
- *
5611
- * class AppComponent {
5612
- * public gridData = [{
5613
- * "ProductID": 1,
5614
- * "ProductName": "Chai",
5615
- * "UnitPrice": 18.0000,
5616
- * "Discontinued": false
5617
- * }, {
5618
- * "ProductID": 2,
5619
- * "ProductName": "Chang",
5620
- * "UnitPrice": 19.0000,
5621
- * "Discontinued": true
5622
- * }
5623
- * ];
5624
- * }
5625
- *
5282
+ * ```html
5283
+ * <kendo-grid ... [pageable]="true">
5284
+ * <ng-template kendoPagerTemplate let-totalPages="totalPages" let-currentPage="currentPage">
5285
+ * <kendo-pager-prev-buttons></kendo-pager-prev-buttons>
5286
+ * <kendo-pager-next-buttons></kendo-pager-next-buttons>
5287
+ * <kendo-pager-info></kendo-pager-info>
5288
+ * Current page: {{currentPage}}
5289
+ * </ng-template>
5290
+ * <kendo-grid-column field="ProductID"></kendo-grid-column>
5291
+ * <kendo-grid-column field="ProductName"></kendo-grid-column>
5292
+ * </kendo-grid>
5626
5293
  * ```
5627
5294
  */
5628
5295
  class PagerTemplateDirective {
@@ -5768,56 +5435,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
5768
5435
  * - `position`&mdash;The position at which the toolbar template is rendered. The possible values are "top" and "bottom".
5769
5436
  *
5770
5437
  * @example
5771
- * ```ts-preview
5772
- *
5773
- * _@Component({
5774
- * selector: 'my-app',
5775
- * template: `
5776
- * <div class="example-config">
5777
- * <input type="radio" id="top" name="position" value="top" checked (click)="positionChange($event)"/>
5778
- * <label class="k-radio-label" for="top">Top</label><br/>
5779
- * <input type="radio" id="bottom" name="position" value="bottom" (click)="positionChange($event)"/>
5780
- * <label class="k-radio-label" for="bottom">Bottom</label><br/>
5781
- * <input type="radio" id="both" name="position" value="both" (click)="positionChange($event)"/>
5782
- * <label class="k-radio-label" for="both">Both</label><br/>
5783
- * </div>
5784
- * <kendo-grid [data]="gridData" style="height: 200px">
5785
- * <ng-template kendoGridToolbarTemplate [position]="position" let-position="position">
5786
- * <button (click)="onClick()">Custom action</button>
5787
- * </ng-template>
5788
- * <kendo-grid-column field="ProductName">
5789
- * </kendo-grid-column>
5790
- * <kendo-grid-column field="UnitPrice">
5791
- * </kendo-grid-column>
5792
- * </kendo-grid>
5793
- * `
5794
- * })
5795
- *
5796
- * class AppComponent {
5797
- * public position: 'top' | 'bottom' | 'both' = 'top';
5798
- *
5799
- * public gridData = [{
5800
- * "ProductID": 1,
5801
- * "ProductName": "Chai",
5802
- * "UnitPrice": 18.0000,
5803
- * "Discontinued": false
5804
- * }, {
5805
- * "ProductID": 2,
5806
- * "ProductName": "Chang",
5807
- * "UnitPrice": 19.0000,
5808
- * "Discontinued": true
5809
- * }
5810
- * ];
5811
- *
5812
- * public onClick(): void {
5813
- * console.log("button was clicked");
5814
- * }
5815
- *
5816
- * public positionChange({ target }): void {
5817
- * this.position = target.value;
5818
- * }
5819
- * }
5820
- *
5438
+ * ```html
5439
+ * <kendo-grid [data]="gridData" style="height: 200px">
5440
+ * <ng-template kendoGridToolbarTemplate [position]="position" let-position="position">
5441
+ * <button (click)="onClick()">Custom action</button>
5442
+ * </ng-template>
5443
+ * <kendo-grid-column field="ProductName">
5444
+ * </kendo-grid-column>
5445
+ * </kendo-grid>
5821
5446
  * ```
5822
5447
  */
5823
5448
  class ToolbarTemplateDirective {
@@ -5826,13 +5451,9 @@ class ToolbarTemplateDirective {
5826
5451
  this._position = 'top';
5827
5452
  }
5828
5453
  /**
5829
- * The position of the toolbar ([see example]({% slug toolbartemplate_grid %})).
5454
+ * The position of the toolbar ([see example]({% slug toolbartemplate_grid %}#toc-setting-the-toolbar-position)).
5830
5455
  *
5831
- * The possible values are:
5832
- * - `top`&mdash;Positions the toolbar above the group panel or header.
5833
- * - `bottom`&mdash;Positions the toolbar below the pager.
5834
- * - `both`&mdash;Displays two toolbar instances. Positions the first one above
5835
- * the group panel or header and the second one below the pager.
5456
+ * @default 'top'
5836
5457
  */
5837
5458
  set position(position) {
5838
5459
  this._position = position;
@@ -6118,7 +5739,7 @@ class PopupCloseEvent extends PreventableEvent {
6118
5739
  const DEFAULT_POPUP_CLASS = 'k-grid-filter-popup';
6119
5740
  /**
6120
5741
  * The service that is used for the popups of the filter and column menus
6121
- * ([see example]({% slug filter_menu %}#toc-custom-filter-row-components)#toc-filter-menu-with-popup).
5742
+ * ([see example]({% slug filter_menu %}#toc-filter-menu-with-popup)).
6122
5743
  */
6123
5744
  class SinglePopupService {
6124
5745
  constructor(popupService, renderer, ngZone, scrollSyncService, localization) {
@@ -6236,17 +5857,17 @@ const append = (element) => {
6236
5857
  /**
6237
5858
  * @hidden
6238
5859
  */
6239
- const getDocument = element => element.ownerDocument.documentElement;
5860
+ const getDocument$1 = element => element.ownerDocument.documentElement;
6240
5861
  /**
6241
5862
  * @hidden
6242
5863
  */
6243
- const getWindow = element => element.ownerDocument.defaultView;
5864
+ const getWindow$1 = element => element.ownerDocument.defaultView;
6244
5865
  /**
6245
5866
  * @hidden
6246
5867
  */
6247
5868
  const offset = element => {
6248
- const { clientTop, clientLeft } = getDocument(element);
6249
- const { pageYOffset, pageXOffset } = getWindow(element);
5869
+ const { clientTop, clientLeft } = getDocument$1(element);
5870
+ const { pageYOffset, pageXOffset } = getWindow$1(element);
6250
5871
  const { top, left } = element.getBoundingClientRect();
6251
5872
  return {
6252
5873
  top: top + pageYOffset - clientTop,
@@ -6661,17 +6282,20 @@ class ColumnStickyChangeEvent {
6661
6282
  /**
6662
6283
  * Represents the virtual scrolling cell template of the Grid while loading new data. Provides an option to customize the
6663
6284
  * appearance of the indicator that is displayed while new data is loading. To define the loading cell template,
6664
- * nest an `<ng-template>` tag with the `kendoGridCellLoadingTemplate` directive inside `<kendo-grid>` ([see example]({% slug virtualscrolling_grid %}#toc-custom-loading-skeleton)).
6285
+ * nest an `<ng-template>` tag with the `kendoGridCellLoadingTemplate` directive inside `<kendo-grid>` tag [see example]({% slug virtualscrolling_grid %}#toc-custom-loading-skeleton).
6286
+ *
6287
+ *
6288
+ * The template context is set to the current column and the following additional field is passed:
6665
6289
  *
6666
- * The template context is set to the current column, and utilizes the `let-x` syntax&mdash;for example, `let-column`.
6290
+ * - `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`).
6667
6291
  *
6668
6292
  * @example
6669
- * ```ts-no-run
6670
- * <kendo-grid [data]="data" scrollable="virtual" [rowHeight]="36">
6671
- * <ng-template kendoGridCellLoadingTemplate let-column>
6672
- * ...
6673
- * </ng-template>
6674
- * </kendo-grid>
6293
+ * ```html
6294
+ * <kendo-grid ... scrollable="virtual" [rowHeight]="36" [height]="450">
6295
+ * <ng-template kendoGridCellLoadingTemplate let-column>
6296
+ * ...
6297
+ * </ng-template>
6298
+ * </kendo-grid>
6675
6299
  * ```
6676
6300
  */
6677
6301
  class CellLoadingTemplateDirective {
@@ -6695,7 +6319,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
6695
6319
  /**
6696
6320
  * Creates a loading template that overrides the default loading indicator of the Grid Component.
6697
6321
  * To define a loading template, nest an `<ng-template>` tag with the `kendoGridLoadingTemplate` directive inside the `<kendo-grid>` tag
6698
- * [see example]({% slug binding_grid %}#toc-loading-template).
6322
+ * ([see example](slug:loadingtemplate_grid)).
6699
6323
  */
6700
6324
  class LoadingTemplateDirective {
6701
6325
  constructor(templateRef) {
@@ -6711,6 +6335,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
6711
6335
  }]
6712
6336
  }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
6713
6337
 
6338
+ /**
6339
+ * @hidden
6340
+ */
6714
6341
  class SizingOptionsService {
6715
6342
  constructor() {
6716
6343
  this.changes = new Subject();
@@ -6722,6 +6349,315 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
6722
6349
  type: Injectable
6723
6350
  }] });
6724
6351
 
6352
+ /**
6353
+ * @hidden
6354
+ */
6355
+ const isNextSibling = (dropTarget, dragTarget) => dropTarget === dragTarget.nextElementSibling;
6356
+ /**
6357
+ * @hidden
6358
+ */
6359
+ const isPreviousSibling = (dropTarget, dragTarget) => dropTarget === dragTarget.previousElementSibling;
6360
+ /**
6361
+ * @hidden
6362
+ */
6363
+ const isDifferentParent = (dropTarget, dragTarget) => (dropTarget === null || dropTarget === void 0 ? void 0 : dropTarget.parentElement) !== (dragTarget === null || dragTarget === void 0 ? void 0 : dragTarget.parentElement);
6364
+ /**
6365
+ * @hidden
6366
+ */
6367
+ function getOffset(element) {
6368
+ const { clientTop, clientLeft } = getDocument(element);
6369
+ const { pageYOffset, pageXOffset } = getWindow(element);
6370
+ const { top, left } = element.getBoundingClientRect();
6371
+ return {
6372
+ top: top + pageYOffset - clientTop,
6373
+ left: left + pageXOffset - clientLeft
6374
+ };
6375
+ }
6376
+ ;
6377
+ /**
6378
+ * @hidden
6379
+ */
6380
+ const hintIcons = {
6381
+ forbidden: 'cancel',
6382
+ before: 'insert-middle',
6383
+ after: 'insert-middle'
6384
+ };
6385
+ /**
6386
+ * @hidden
6387
+ */
6388
+ const hintSVGIcons = {
6389
+ forbidden: cancelIcon,
6390
+ before: insertMiddleIcon,
6391
+ after: insertMiddleIcon
6392
+ };
6393
+ /**
6394
+ * @hidden
6395
+ */
6396
+ const dropPosition = {
6397
+ forbidden: 'forbidden',
6398
+ before: 'before',
6399
+ after: 'after'
6400
+ };
6401
+ /**
6402
+ * @hidden
6403
+ */
6404
+ const hintStyles = {
6405
+ zIndex: '20000',
6406
+ display: 'flex',
6407
+ position: 'fixed'
6408
+ };
6409
+ /**
6410
+ * @hidden
6411
+ */
6412
+ const hintClasses = ['k-drag-clue', 'k-reorder-clue'];
6413
+ /**
6414
+ * @hidden
6415
+ */
6416
+ const dropIndicatorStyles = {
6417
+ zIndex: '19000',
6418
+ position: 'absolute'
6419
+ };
6420
+ /**
6421
+ * @hidden
6422
+ */
6423
+ const dropIndicatorClasses = ['k-drop-hint', 'k-drop-hint-h'];
6424
+ /**
6425
+ * @hidden
6426
+ */
6427
+ const defaultSelectors = {
6428
+ handle: '.k-table-td.k-drag-cell',
6429
+ dragTarget: '.k-master-row',
6430
+ dropTarget: '.k-master-row'
6431
+ };
6432
+ const getDocument = element => element === null || element === void 0 ? void 0 : element.ownerDocument.documentElement;
6433
+ const getWindow = element => element === null || element === void 0 ? void 0 : element.ownerDocument.defaultView;
6434
+
6435
+ /**
6436
+ * @hidden
6437
+ */
6438
+ class RowReorderService {
6439
+ constructor(renderer) {
6440
+ this.renderer = renderer;
6441
+ this.hintElement = null;
6442
+ this.defaultSelectors = defaultSelectors;
6443
+ this.hintText = '';
6444
+ this.lastDropPosition = dropPosition.forbidden;
6445
+ this.dragTarget = null;
6446
+ this.dropTarget = null;
6447
+ this.rowReorder = new EventEmitter();
6448
+ }
6449
+ press(ev) {
6450
+ this.dragTarget = ev.dragTarget;
6451
+ this.offsetY = ev.dragEvent.offsetY;
6452
+ }
6453
+ dragStart() {
6454
+ this.createDropIndicator();
6455
+ }
6456
+ drag(ev) {
6457
+ if (isPresent$1(ev.hintElement) && !isPresent$1(this.hintElement)) {
6458
+ this.hintElement = ev.hintElement;
6459
+ this.decorateHint();
6460
+ }
6461
+ const position = {
6462
+ x: ev.dragEvent.clientX,
6463
+ y: ev.dragEvent.clientY - this.offsetY
6464
+ };
6465
+ if (isPresent$1(this.hintElement)) {
6466
+ this.renderer.setStyle(this.hintElement, 'left', `${position.x}px`);
6467
+ this.renderer.setStyle(this.hintElement, 'top', `${position.y}px`);
6468
+ }
6469
+ this.positionDropIndicator(ev);
6470
+ }
6471
+ dragEnter(ev) {
6472
+ this.dropTarget = ev.dropTarget;
6473
+ }
6474
+ dragLeave() {
6475
+ this.dropTarget = null;
6476
+ this.hide();
6477
+ }
6478
+ dragEnd() {
6479
+ this.destroyDropIndicator();
6480
+ this.dragTarget = null;
6481
+ this.dropTarget = null;
6482
+ this.hintElement = null;
6483
+ }
6484
+ drop(ev) {
6485
+ this.destroyDropIndicator();
6486
+ const rowReorderArgs = this.rowReorderArgs(this.dragTarget, this.dropTarget, ev.dragData);
6487
+ this.rowReorder.emit(rowReorderArgs);
6488
+ }
6489
+ reorderRows(ev, collection) {
6490
+ if (this.lastDropPosition === dropPosition.forbidden) {
6491
+ return;
6492
+ }
6493
+ ;
6494
+ const { draggedRows, dropTargetRow } = ev;
6495
+ const draggedDataItem = draggedRows[0].dataItem;
6496
+ const dropTargetDataItem = dropTargetRow.dataItem;
6497
+ const draggedItemIndex = collection.indexOf(draggedDataItem);
6498
+ const dropTargetIndex = collection.indexOf(dropTargetDataItem);
6499
+ const idxToAdd = this.calculateIndexToAdd(draggedItemIndex, dropTargetIndex);
6500
+ collection.splice(draggedItemIndex, 1);
6501
+ collection.splice(idxToAdd, 0, draggedDataItem);
6502
+ }
6503
+ get hintIcon() {
6504
+ return hintIcons[this.lastDropPosition];
6505
+ }
6506
+ get hintSVGIcon() {
6507
+ return hintSVGIcons[this.lastDropPosition];
6508
+ }
6509
+ getDefaultHintText(columns, data) {
6510
+ let hintText = '';
6511
+ const columnFieldsArray = columns
6512
+ .toArray()
6513
+ .filter(column => !column.hidden && isPresent$1(column.field))
6514
+ .map(column => column.field);
6515
+ const draggedDragRow = this.getDragRowPerElement(this.dragTarget, data);
6516
+ const draggedDataItem = draggedDragRow === null || draggedDragRow === void 0 ? void 0 : draggedDragRow.dataItem;
6517
+ isPresent$1(draggedDataItem) && columnFieldsArray.forEach(column => {
6518
+ const columnValue = draggedDataItem[column];
6519
+ isPresent$1(columnValue) ? hintText += `${columnValue} ` : null;
6520
+ });
6521
+ return hintText.trim();
6522
+ }
6523
+ rowReorderArgs(dragRow, dropRow, data) {
6524
+ const dragRowData = this.getDragRowPerElement(dragRow, data);
6525
+ const dropRowData = this.getDragRowPerElement(dropRow, data);
6526
+ return {
6527
+ draggedRows: [dragRowData],
6528
+ dropTargetRow: dropRowData,
6529
+ dropPosition: this.lastDropPosition
6530
+ };
6531
+ }
6532
+ getDragRowPerElement(row, data) {
6533
+ let rowIndex = row === null || row === void 0 ? void 0 : row.getAttribute('data-kendo-grid-item-index');
6534
+ rowIndex = rowIndex ? parseInt(rowIndex, 10) : -1;
6535
+ const skip = this.skip || 0;
6536
+ const dataItem = rowIndex === -1 ? null : data[rowIndex - skip];
6537
+ return {
6538
+ dataItem,
6539
+ rowIndex,
6540
+ element: row
6541
+ };
6542
+ }
6543
+ createDropIndicator() {
6544
+ if (!isDocumentAvailable()) {
6545
+ return;
6546
+ }
6547
+ this.dropIndicator = document.createElement('div');
6548
+ this.decorateDropIndicator();
6549
+ this.dropIndicator.innerHTML = `
6550
+ <div class="k-drop-hint-start"></div>
6551
+ <div class="k-drop-hint-line"></div>
6552
+ `;
6553
+ document.body.appendChild(this.dropIndicator);
6554
+ this.hide();
6555
+ }
6556
+ destroyDropIndicator() {
6557
+ if (!isDocumentAvailable()) {
6558
+ return;
6559
+ }
6560
+ ;
6561
+ if (this.dropIndicator && this.dropIndicator.parentElement) {
6562
+ document.body.removeChild(this.dropIndicator);
6563
+ this.dropIndicator = null;
6564
+ }
6565
+ }
6566
+ decorateHint() {
6567
+ hintClasses.forEach(className => this.renderer.addClass(this.hintElement, className));
6568
+ Object.keys(hintStyles)
6569
+ .forEach(style => this.renderer.setStyle(this.hintElement, style, hintStyles[style]));
6570
+ }
6571
+ positionDropIndicator(ev) {
6572
+ this.lastDropPosition = this.getDropPosition(ev.dragEvent);
6573
+ this.updateDropIndicatorPosition();
6574
+ }
6575
+ calculateIndexToAdd(dragIndex, dropIndex) {
6576
+ if (dragIndex > dropIndex && this.lastDropPosition === dropPosition.after) {
6577
+ return dropIndex + 1;
6578
+ }
6579
+ else if (dragIndex > dropIndex && this.lastDropPosition === dropPosition.before) {
6580
+ return dropIndex;
6581
+ }
6582
+ else if (dragIndex < dropIndex && this.lastDropPosition === dropPosition.after) {
6583
+ return dropIndex;
6584
+ }
6585
+ else if (dragIndex < dropIndex && this.lastDropPosition === dropPosition.before) {
6586
+ return dropIndex - 1;
6587
+ }
6588
+ }
6589
+ decorateDropIndicator() {
6590
+ dropIndicatorClasses.forEach(className => this.renderer.addClass(this.dropIndicator, className));
6591
+ Object.keys(dropIndicatorStyles)
6592
+ .forEach(style => this.renderer.setStyle(this.dropIndicator, style, dropIndicatorStyles[style]));
6593
+ }
6594
+ ;
6595
+ getDropPosition(e) {
6596
+ if (this.dropTarget === this.dragTarget || !isPresent$1(this.dropTarget)) {
6597
+ return dropPosition.forbidden;
6598
+ }
6599
+ ;
6600
+ if (isDifferentParent(this.dropTarget, this.dragTarget)) {
6601
+ return dropPosition.forbidden;
6602
+ }
6603
+ ;
6604
+ const itemViewPortCoords = this.dropTarget.getBoundingClientRect();
6605
+ const itemDivisionsCount = 2;
6606
+ const itemDivisionHeight = itemViewPortCoords.height / itemDivisionsCount;
6607
+ const pointerPosition = e.clientY;
6608
+ const itemTop = itemViewPortCoords.top;
6609
+ let currentDropPosition = null;
6610
+ if (pointerPosition < itemTop + itemDivisionHeight) {
6611
+ currentDropPosition = dropPosition.before;
6612
+ }
6613
+ else if (pointerPosition >= itemTop + itemViewPortCoords.height - itemDivisionHeight) {
6614
+ currentDropPosition = dropPosition.after;
6615
+ }
6616
+ if (currentDropPosition === dropPosition.before && isNextSibling(this.dropTarget, this.dragTarget)) {
6617
+ currentDropPosition = dropPosition.forbidden;
6618
+ }
6619
+ else if (currentDropPosition === dropPosition.after && isPreviousSibling(this.dropTarget, this.dragTarget)) {
6620
+ currentDropPosition = dropPosition.forbidden;
6621
+ }
6622
+ return currentDropPosition;
6623
+ }
6624
+ updateDropIndicatorPosition() {
6625
+ if (this.shouldHideDropIndicator() || !this.dropTarget) {
6626
+ this.hide();
6627
+ return;
6628
+ }
6629
+ this.show();
6630
+ const destinationItemOffset = getOffset(this.dropTarget);
6631
+ let indicatorOffsetTop = destinationItemOffset.top;
6632
+ const indicatorOffsetLeft = destinationItemOffset.left + this.dropIndicator.offsetWidth / 2;
6633
+ if (this.lastDropPosition === dropPosition.after) {
6634
+ indicatorOffsetTop += this.dropTarget.offsetHeight;
6635
+ }
6636
+ this.renderer.setStyle(this.dropIndicator, 'left', `${indicatorOffsetLeft}px`);
6637
+ this.renderer.setStyle(this.dropIndicator, 'top', `${indicatorOffsetTop}px`);
6638
+ }
6639
+ shouldHideDropIndicator() {
6640
+ return this.lastDropPosition === dropPosition.forbidden;
6641
+ }
6642
+ hide() {
6643
+ if (isPresent$1(this.dropIndicator)) {
6644
+ this.dropIndicator.style.display = 'none';
6645
+ }
6646
+ }
6647
+ show() {
6648
+ if (isPresent$1(this.dropIndicator)) {
6649
+ this.dropIndicator.style.display = '';
6650
+ }
6651
+ }
6652
+ }
6653
+ RowReorderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RowReorderService, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Injectable });
6654
+ RowReorderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RowReorderService });
6655
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RowReorderService, decorators: [{
6656
+ type: Injectable
6657
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }]; }, propDecorators: { rowReorder: [{
6658
+ type: Output
6659
+ }] } });
6660
+
6725
6661
  /**
6726
6662
  * @hidden
6727
6663
  */
@@ -10480,7 +10416,7 @@ DateFilterMenuInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12
10480
10416
  </kendo-datepicker-messages>
10481
10417
  </kendo-datepicker>
10482
10418
  </kendo-grid-filter-menu-input-wrapper>
10483
- `, 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"] }] });
10419
+ `, 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"] }] });
10484
10420
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateFilterMenuInputComponent, decorators: [{
10485
10421
  type: Component,
10486
10422
  args: [{
@@ -11386,27 +11322,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
11386
11322
  * [ColumnMenuTemplate]({% slug api_grid_columnmenutemplatedirective %}) directive.
11387
11323
  *
11388
11324
  * @example
11389
- * ```ts-preview
11390
- *
11391
- * _@Component({
11392
- * selector: 'my-app',
11393
- * template: `
11394
- * <kendo-grid [data]="data" [columnMenu]="true">
11395
- * <ng-template kendoGridColumnMenuTemplate let-service="service">
11396
- * <span class="k-icon k-i-x" (click)="service.close()"
11397
- * style="position: absolute; right: 5px; top: 5px;cursor: pointer;"></span>
11398
- * <kendo-grid-columnmenu-sort [service]="service">
11399
- * </kendo-grid-columnmenu-sort>
11400
- * </ng-template>
11401
- * <kendo-grid-column field="Field1"></kendo-grid-column>
11402
- * <kendo-grid-column field="Field2"></kendo-grid-column>
11403
- * </kendo-grid>
11404
- * `
11405
- * })
11406
- *
11407
- * class AppComponent {
11408
- * public data: any[] = [{ Field1: 'Foo', Field2: 'Bar' }];
11409
- * }
11325
+ * ```html
11326
+ * <kendo-grid [data]="data" [columnMenu]="true">
11327
+ * <ng-template kendoGridColumnMenuTemplate let-service="service">
11328
+ * <span class="k-icon k-i-x" (click)="service.close()" </span>
11329
+ * <kendo-grid-columnmenu-sort [service]="service">
11330
+ * </kendo-grid-columnmenu-sort>
11331
+ * </ng-template>
11332
+ * <kendo-grid-column field="Field1"></kendo-grid-column>
11333
+ * </kendo-grid>
11410
11334
  *
11411
11335
  * ```
11412
11336
  */
@@ -11478,35 +11402,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
11478
11402
 
11479
11403
  /**
11480
11404
  * Represents the content template of the
11481
- * [kendo-grid-columnmenu-item]({% slug api_grid_columnmenuitemcomponent %}) component.
11482
- * Provides an option for specifying the content of a column item.
11483
- * To define the content template, nest an `<ng-template>` tag with the
11484
- * `kendoGridColumnMenuItemContentTemplate` directive inside a `<kendo-grid-columnmenu-item>`.
11485
- *
11486
- * @example
11487
- * ```ts-preview
11488
- *
11489
- * _@Component({
11490
- * selector: 'my-app',
11491
- * template: `
11492
- * <kendo-grid [data]="data" [columnMenu]="true">
11493
- * <ng-template kendoGridColumnMenuTemplate>
11494
- * <kendo-grid-columnmenu-item text="Item Text" [expanded]="true">
11495
- * <ng-template kendoGridColumnMenuItemContentTemplate>
11496
- * Item Content
11497
- * </ng-template>
11498
- * </kendo-grid-columnmenu-item>
11499
- * </ng-template>
11500
- * <kendo-grid-column field="Field1"></kendo-grid-column>
11501
- * <kendo-grid-column field="Field2"></kendo-grid-column>
11502
- * </kendo-grid>
11503
- * `
11504
- * })
11505
- *
11506
- * class AppComponent {
11507
- * public data: any[] = [{ Field1: 'Foo', Field2: 'Bar' }];
11508
- * }
11405
+ * [`ColumnMenuItemComponent`]({% slug api_grid_columnmenuitemcomponent %}) component.
11406
+ * Provides an option for specifying the content of a column item.
11407
+ * To define the content template, nest an `<ng-template>` tag with the
11408
+ * `kendoGridColumnMenuItemContentTemplate` directive inside a `<kendo-grid-columnmenu-item>`.
11509
11409
  *
11410
+ * @example
11411
+ * ```html
11412
+ * <kendo-grid [data]="data" [columnMenu]="true" ...>
11413
+ * <ng-template kendoGridColumnMenuTemplate>
11414
+ * <kendo-grid-columnmenu-item text="Item Text" [expanded]="true">
11415
+ * <ng-template kendoGridColumnMenuItemContentTemplate>
11416
+ * Item Content
11417
+ * </ng-template>
11418
+ * </kendo-grid-columnmenu-item>
11419
+ * </ng-template>
11420
+ * <kendo-grid-column field="Field1"></kendo-grid-column>
11421
+ * ...
11422
+ * </kendo-grid>
11510
11423
  * ```
11511
11424
  */
11512
11425
  class ColumnMenuItemContentTemplateDirective {
@@ -13946,7 +13859,7 @@ DateFilterCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
13946
13859
  </kendo-datepicker-messages>
13947
13860
  </kendo-datepicker>
13948
13861
  </kendo-grid-filter-wrapper-cell>
13949
- `, 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"] }] });
13862
+ `, 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"] }] });
13950
13863
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateFilterCellComponent, decorators: [{
13951
13864
  type: Component,
13952
13865
  args: [{
@@ -14497,7 +14410,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
14497
14410
  }] } });
14498
14411
 
14499
14412
  /**
14500
- * Represents the select-all checkbox feature of the Grid ([see example]({% slug selection_grid %}#toc-select-all-feature)).
14413
+ * Represents the select-all checkbox feature of the Grid ([see example](slug:grid_selection_persistence#toc-selecting-all-items)).
14414
+ *
14415
+ * @example
14416
+ * ```html
14417
+ * <input
14418
+ * type="checkbox"
14419
+ * kendoCheckBox
14420
+ * kendoGridSelectAllCheckbox
14421
+ * [state]="selectAllState"
14422
+ * (selectAllChange)="onSelectAllChange($event)"
14423
+ * />
14424
+ * ```
14501
14425
  */
14502
14426
  class SelectAllCheckboxDirective {
14503
14427
  constructor(selectionService, el, renderer, ngZone) {
@@ -16042,53 +15966,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
16042
15966
 
16043
15967
  /**
16044
15968
  * Represents the row-selection checkbox of the Grid. The directive expects the
16045
- * index of the current row as an input parameter. Inside the
16046
- * [CheckboxColumnComponent]({% slug api_grid_checkboxcolumncomponent %}), apply the
16047
- * directive to an `input` element. When the user clicks the checkbox that is associated
16048
- * with the directive, a [selectionChange]({% slug api_grid_gridcomponent %}#toc-selectionChange)
15969
+ * index of the current row as an input parameter. Inside the [`CellTemplateDirective`](slug:api_grid_celltemplatedirective), apply the
15970
+ * `kendoGridSelectionCheckbox` to an `<input type="checkbox"/>` element. When the user clicks the checkbox that is associated
15971
+ * with the directive, a [selectionChange](slug:api_grid_gridcomponent#toc-selectionChange)
16049
15972
  * event is triggered.
16050
15973
  *
16051
15974
  * @example
16052
- * ```ts-preview
16053
- *
16054
- * _@Component({
16055
- * selector: 'my-app',
16056
- * template: `
16057
- * <kendo-grid [data]="gridData" [selectable]="{enabled: true, checkboxOnly: true}">
16058
- * <kendo-grid-checkbox-column title="Custom checkbox">
16059
- * <ng-template kendoGridCellTemplate let-idx="rowIndex">
16060
- * Select row <input [kendoGridSelectionCheckbox]="idx" />
16061
- * </ng-template>
16062
- * </kendo-grid-checkbox-column>
16063
- * <kendo-grid-column field="ProductID" title="Product ID" [width]="120">
16064
- * </kendo-grid-column>
16065
- * <kendo-grid-column field="ProductName" title="Product Name">
16066
- * </kendo-grid-column>
16067
- * </kendo-grid>
16068
- * `
16069
- * })
16070
- *
16071
- * class AppComponent {
16072
- * public gridData: any[];
16073
- *
16074
- * constructor() {
16075
- * this.gridData = products;
16076
- * }
16077
- * }
16078
- *
16079
- * const products = [{
16080
- * "ProductID": 1,
16081
- * "ProductName": "Chai",
16082
- * "UnitPrice": 18.0000,
16083
- * "Discontinued": true
16084
- * }, {
16085
- * "ProductID": 2,
16086
- * "ProductName": "Chang",
16087
- * "UnitPrice": 19.0000,
16088
- * "Discontinued": false
16089
- * }
16090
- * ];
16091
- *
15975
+ * ```html
15976
+ * <kendo-grid ... >
15977
+ * <kendo-grid-column>
15978
+ * <ng-template kendoGridCellTemplate let-rowIndex="rowIndex">
15979
+ * <input ... [kendoGridSelectionCheckbox]="rowIndex"/>
15980
+ * </ng-template>
15981
+ * </kendo-grid-column>
15982
+ * </kendo-grid>
16092
15983
  * ```
16093
15984
  */
16094
15985
  class SelectionCheckboxDirective {
@@ -16200,12 +16091,19 @@ class CellComponent {
16200
16091
  this.isNew = false;
16201
16092
  this.isLoading = false;
16202
16093
  this.isVirtual = false;
16094
+ this.reorderIcon = reorderIcon;
16203
16095
  this._templateContext = {};
16204
16096
  this._editTemplateContext = {};
16205
16097
  }
16206
16098
  get commandCellClass() {
16207
16099
  return this.isCommand(this.column);
16208
16100
  }
16101
+ get dragHandleCellClass() {
16102
+ return isRowReorderColumn(this.column);
16103
+ }
16104
+ get dragRowHandleLabel() {
16105
+ return isRowReorderColumn(this.column) ? this.localizationService.get('dragRowHandleLabel') : undefined;
16106
+ }
16209
16107
  set rowIndex(index) {
16210
16108
  this._rowIndex = index;
16211
16109
  this.updateCellContext();
@@ -16262,6 +16160,9 @@ class CellComponent {
16262
16160
  get childColumns() {
16263
16161
  return columnsToRender([this.column]);
16264
16162
  }
16163
+ get isRowReorderColumn() {
16164
+ return isRowReorderColumn(this.column) && !this.column.templateRef;
16165
+ }
16265
16166
  get isColumnEditable() {
16266
16167
  if (!this.column || this.isCommand(this.column)) {
16267
16168
  return false;
@@ -16308,7 +16209,7 @@ class CellComponent {
16308
16209
  }
16309
16210
  }
16310
16211
  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 });
16311
- 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: `
16212
+ 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: `
16312
16213
  <ng-container [ngSwitch]="isEdited">
16313
16214
  <ng-container *ngSwitchCase="false">
16314
16215
  <ng-container *ngIf="!showLoading; else loading">
@@ -16329,6 +16230,12 @@ CellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
16329
16230
  [attr.id]="selectionCheckboxId"
16330
16231
  [attr.aria-label]="selectionCheckboxLabel" />
16331
16232
  </ng-container>
16233
+ <ng-container *ngIf="isRowReorderColumn && !isNew">
16234
+ <kendo-icon-wrapper
16235
+ name="reorder"
16236
+ [svgIcon]="reorderIcon">
16237
+ </kendo-icon-wrapper>
16238
+ </ng-container>
16332
16239
  </ng-container>
16333
16240
  <ng-template #loading>
16334
16241
  <ng-template
@@ -16378,7 +16285,7 @@ CellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
16378
16285
  </ng-container>
16379
16286
  </ng-container>
16380
16287
  </ng-container>
16381
- `, 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 } });
16288
+ `, 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 } });
16382
16289
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CellComponent, decorators: [{
16383
16290
  type: Component,
16384
16291
  args: [{
@@ -16404,6 +16311,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
16404
16311
  [attr.id]="selectionCheckboxId"
16405
16312
  [attr.aria-label]="selectionCheckboxLabel" />
16406
16313
  </ng-container>
16314
+ <ng-container *ngIf="isRowReorderColumn && !isNew">
16315
+ <kendo-icon-wrapper
16316
+ name="reorder"
16317
+ [svgIcon]="reorderIcon">
16318
+ </kendo-icon-wrapper>
16319
+ </ng-container>
16407
16320
  </ng-container>
16408
16321
  <ng-template #loading>
16409
16322
  <ng-template
@@ -16465,6 +16378,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
16465
16378
  }, propDecorators: { commandCellClass: [{
16466
16379
  type: HostBinding,
16467
16380
  args: ['class.k-command-cell']
16381
+ }], dragHandleCellClass: [{
16382
+ type: HostBinding,
16383
+ args: ['class.k-drag-cell']
16384
+ }, {
16385
+ type: HostBinding,
16386
+ args: ['class.k-touch-action-none']
16387
+ }], dragRowHandleLabel: [{
16388
+ type: HostBinding,
16389
+ args: ['attr.aria-label']
16468
16390
  }], column: [{
16469
16391
  type: Input
16470
16392
  }], columnIndex: [{
@@ -18837,7 +18759,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
18837
18759
  class GridMessages extends ComponentMessages {
18838
18760
  }
18839
18761
  GridMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GridMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });
18840
- 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 });
18762
+ 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 });
18841
18763
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GridMessages, decorators: [{
18842
18764
  type: Directive,
18843
18765
  args: [{
@@ -18994,6 +18916,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
18994
18916
  type: Input
18995
18917
  }], groupPanelLabel: [{
18996
18918
  type: Input
18919
+ }], dragRowHandleLabel: [{
18920
+ type: Input
18997
18921
  }] } });
18998
18922
 
18999
18923
  /**
@@ -19074,7 +18998,7 @@ const isInEditedCell = (element, gridElement) => closest(element, matchesClasses
19074
18998
  * ```
19075
18999
  */
19076
19000
  class GridComponent {
19077
- 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) {
19001
+ 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) {
19078
19002
  this.supportService = supportService;
19079
19003
  this.selectionService = selectionService;
19080
19004
  this.cellSelectionService = cellSelectionService;
@@ -19102,11 +19026,7 @@ class GridComponent {
19102
19026
  this.localization = localization;
19103
19027
  this.ctx = ctx;
19104
19028
  this.sizingService = sizingService;
19105
- /**
19106
- * Sets the data of the Grid. If an array is provided, the Grid automatically gets the total count
19107
- * ([more information and example]({% slug binding_grid %})).
19108
- */
19109
- this.data = [];
19029
+ this.rowReorderService = rowReorderService;
19110
19030
  /**
19111
19031
  * Defines the scroll mode used by the Grid.
19112
19032
  *
@@ -19170,6 +19090,10 @@ class GridComponent {
19170
19090
  * If set to `true`, the grid will render only the columns in the current viewport.
19171
19091
  */
19172
19092
  this.virtualColumns = false;
19093
+ /**
19094
+ * @hidden
19095
+ */
19096
+ this.gridData = () => { return this.flatData; };
19173
19097
  /**
19174
19098
  * Enables the [filtering]({% slug filtering_grid %}) of the Grid columns that have their `field` option set.
19175
19099
  */
@@ -19217,12 +19141,6 @@ class GridComponent {
19217
19141
  * @default false
19218
19142
  */
19219
19143
  this.reorderable = false;
19220
- /**
19221
- * Specifies if the loading indicator of the Grid will be displayed ([see example]({% slug binding_grid %})).
19222
- *
19223
- * @default false
19224
- */
19225
- this.loading = false;
19226
19144
  /**
19227
19145
  * Specifies if the column menu of the columns will be displayed ([see example]({% slug columnmenu_grid %})).
19228
19146
  *
@@ -19260,6 +19178,11 @@ class GridComponent {
19260
19178
  * Emits the [SelectionEvent]({% slug api_grid_selectionevent %}#toc-selectionchange).
19261
19179
  */
19262
19180
  this.selectionChange = new EventEmitter();
19181
+ /**
19182
+ * Fires when the user drops the dragged row and reordering is performed.
19183
+ * Emits the [RowReorderEvent]({% slug api_grid_selectionevent %}#toc-selectionchange).
19184
+ */
19185
+ this.rowReorder = new EventEmitter();
19263
19186
  /**
19264
19187
  * Fires when the data state of the Grid is changed.
19265
19188
  */
@@ -19371,11 +19294,14 @@ class GridComponent {
19371
19294
  this._sort = new Array();
19372
19295
  this._group = new Array();
19373
19296
  this._skip = 0;
19297
+ this._data = [];
19374
19298
  this.cachedWindowWidth = 0;
19375
19299
  this._rowSelected = null;
19376
19300
  this._cellSelected = null;
19301
+ this._rowReorderable = false;
19377
19302
  this._navigable = [];
19378
19303
  this._size = 'medium';
19304
+ this._loading = false;
19379
19305
  this.rtl = false;
19380
19306
  this._rowClass = () => null;
19381
19307
  validatePackage(packageMetadata);
@@ -19415,6 +19341,19 @@ class GridComponent {
19415
19341
  .changes.subscribe(this.reorder.bind(this));
19416
19342
  this.columnRangeChangeSubscription = this.columnInfoService.columnRangeChange.subscribe(this.onColumnRangeChange.bind(this));
19417
19343
  }
19344
+ /**
19345
+ * Sets the data of the Grid. If an array is provided, the Grid automatically gets the total count
19346
+ * ([more information and example]({% slug binding_grid %})).
19347
+ */
19348
+ set data(value) {
19349
+ this._data = value;
19350
+ }
19351
+ get data() {
19352
+ return this._data;
19353
+ }
19354
+ get hintText() {
19355
+ return this.rowReorderService.getDefaultHintText(this.columnList, this.flatData);
19356
+ }
19418
19357
  /**
19419
19358
  * Defines the number of records to be skipped by the pager.
19420
19359
  * Required by the [paging]({% slug paging_grid %}) functionality.
@@ -19424,7 +19363,7 @@ class GridComponent {
19424
19363
  }
19425
19364
  set skip(value) {
19426
19365
  if (typeof value === 'number' && value >= 0) {
19427
- this._skip = value;
19366
+ this._skip = this.rowReorderService.skip = value;
19428
19367
  }
19429
19368
  }
19430
19369
  /**
@@ -19522,6 +19461,27 @@ class GridComponent {
19522
19461
  get marqueeSelection() {
19523
19462
  return this.selectionService.enableMarquee || this.cellSelectionService.enableMarquee;
19524
19463
  }
19464
+ /**
19465
+ * Enables the [row reordering]({% slug reordering_rows_grid %}) of the Grid.
19466
+ * @default false
19467
+ */
19468
+ set rowReorderable(value) {
19469
+ var _a;
19470
+ this._rowReorderable = value;
19471
+ if (value) {
19472
+ this.rowReorderSubscription = this.rowReorderService.rowReorder.subscribe(args => {
19473
+ this.ngZone.run(() => {
19474
+ this.rowReorder.emit(args);
19475
+ });
19476
+ });
19477
+ }
19478
+ else {
19479
+ (_a = this.rowReorderSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
19480
+ }
19481
+ }
19482
+ get rowReorderable() {
19483
+ return this._rowReorderable;
19484
+ }
19525
19485
  /**
19526
19486
  * If set to `true`, the user can use dedicated shortcuts to interact with the Grid.
19527
19487
  * By default, navigation is disabled and the Grid content is accessible in the normal tab sequence.
@@ -19664,6 +19624,18 @@ class GridComponent {
19664
19624
  get activeRow() {
19665
19625
  return this.navigationService.activeRow;
19666
19626
  }
19627
+ /**
19628
+ * Specifies if the loading indicator of the Grid will be displayed ([see example]({% slug binding_grid %})).
19629
+ *
19630
+ * @default false
19631
+ */
19632
+ set loading(value) {
19633
+ this._loading = value;
19634
+ this.rowReorderable && this.notifyReorderContainers();
19635
+ }
19636
+ get loading() {
19637
+ return this._loading;
19638
+ }
19667
19639
  get dir() {
19668
19640
  return this.direction;
19669
19641
  }
@@ -19835,6 +19807,18 @@ class GridComponent {
19835
19807
  }
19836
19808
  return this.pageSize;
19837
19809
  }
19810
+ /**
19811
+ * @hidden
19812
+ */
19813
+ getDefaultSelectors(type) {
19814
+ return this.rowReorderService.defaultSelectors[type];
19815
+ }
19816
+ /**
19817
+ * @hidden
19818
+ */
19819
+ getHintSettings(type) {
19820
+ return this.rowReorderService[type];
19821
+ }
19838
19822
  /**
19839
19823
  * Expands the specified master row ([see example]({% slug hierarchy_grid %})).
19840
19824
  *
@@ -20066,6 +20050,9 @@ class GridComponent {
20066
20050
  if (this.focusElementSubscription) {
20067
20051
  this.focusElementSubscription.unsubscribe();
20068
20052
  }
20053
+ if (this.rowReorderSubscription) {
20054
+ this.rowReorderSubscription.unsubscribe();
20055
+ }
20069
20056
  this.columnRangeChangeSubscription.unsubscribe();
20070
20057
  }
20071
20058
  /**
@@ -20565,6 +20552,12 @@ class GridComponent {
20565
20552
  get isGroupExpanded() {
20566
20553
  return this.groupsService.userCallback;
20567
20554
  }
20555
+ /**
20556
+ * @hidden
20557
+ */
20558
+ handleReorderEvents(ev, evType) {
20559
+ this.rowReorderService[evType](ev);
20560
+ }
20568
20561
  /**
20569
20562
  * @hidden
20570
20563
  */
@@ -20791,6 +20784,11 @@ class GridComponent {
20791
20784
  this.closeCell();
20792
20785
  this.cancelCell();
20793
20786
  this.dataStateChange.emit(x);
20787
+ if (this.rowReorderable) {
20788
+ this.ngZone.onStable.pipe(take(1)).subscribe(() => {
20789
+ this.notifyReorderContainers();
20790
+ });
20791
+ }
20794
20792
  });
20795
20793
  }
20796
20794
  attachEditHandlers() {
@@ -21073,9 +21071,17 @@ class GridComponent {
21073
21071
  }
21074
21072
  return previousValue.cell !== currentValue.cell;
21075
21073
  }
21074
+ notifyReorderContainers() {
21075
+ var _a, _b;
21076
+ (_a = this.dragTargetContainer) === null || _a === void 0 ? void 0 : _a.notify();
21077
+ (_b = this.dropTargetContainer) === null || _b === void 0 ? void 0 : _b.notify();
21078
+ }
21079
+ get flatData() {
21080
+ return isArray(this.data) ? this.data : this.data.data;
21081
+ }
21076
21082
  }
21077
- 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 });
21078
- 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: [
21083
+ 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 });
21084
+ 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: [
21079
21085
  BrowserSupportService,
21080
21086
  LocalizationService,
21081
21087
  ColumnInfoService,
@@ -21116,8 +21122,9 @@ GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
21116
21122
  ScrollRequestService,
21117
21123
  SortService,
21118
21124
  ContextService,
21119
- SizingOptionsService
21120
- ], 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: `
21125
+ SizingOptionsService,
21126
+ RowReorderService
21127
+ ], 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: `
21121
21128
  <ng-container kendoGridLocalizedMessages
21122
21129
  i18n-groupPanelEmpty="kendo.grid.groupPanelEmpty|The label visible in the Grid group panel when it is empty"
21123
21130
  groupPanelEmpty="Drag a column header and drop it here to group by that column"
@@ -21343,6 +21350,9 @@ GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
21343
21350
 
21344
21351
  i18n-groupPanelLabel="kendo.grid.groupPanelLabel|The label for the Grid group panel toolbar"
21345
21352
  groupPanelLabel="Group panel"
21353
+
21354
+ i18n-dragRowHandleLabel="kendo.grid.dragRowHandleLabel|The label for the Grid drag row handle"
21355
+ dragRowHandleLabel="Drag row"
21346
21356
  >
21347
21357
  </ng-container>
21348
21358
  <kendo-grid-toolbar
@@ -21470,6 +21480,23 @@ GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
21470
21480
  </div>
21471
21481
  </div>
21472
21482
  <kendo-grid-list
21483
+ kendoDragTargetContainer
21484
+ kendoDropTargetContainer
21485
+ mode="manual"
21486
+ [dragDisabled]="!rowReorderable"
21487
+ [dropDisabled]="!rowReorderable"
21488
+ [dragTargetFilter]="getDefaultSelectors('dragTarget')"
21489
+ [dropTargetFilter]="getDefaultSelectors('dropTarget')"
21490
+ [dragHandle]="getDefaultSelectors('handle')"
21491
+ [hint]="{hintTemplate: defaultHint}"
21492
+ (press)="handleReorderEvents($event, 'press')"
21493
+ (dragStart)="handleReorderEvents($event, 'dragStart')"
21494
+ (drag)="handleReorderEvents($event, 'drag')"
21495
+ (dragEnter)="handleReorderEvents($event, 'dragEnter')"
21496
+ (dragLeave)="handleReorderEvents($event, 'dragLeave')"
21497
+ (dragEnd)="handleReorderEvents($event, 'dragEnd')"
21498
+ (drop)="handleReorderEvents($event, 'drop')"
21499
+ [dragData]="gridData"
21473
21500
  [data]="$any(view)"
21474
21501
  [rowHeight]="rowHeight"
21475
21502
  [detailRowHeight]="detailRowHeight"
@@ -21635,8 +21662,18 @@ GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
21635
21662
  [navigable]="navigation.toolbarEnabled"
21636
21663
  [attr.aria-label]="messageFor('bottomToolbarLabel')"
21637
21664
  [attr.aria-controls]="ariaRootId"
21638
- position="bottom"></kendo-grid-toolbar>
21639
- `, 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 });
21665
+ position="bottom">
21666
+ </kendo-grid-toolbar>
21667
+
21668
+ <ng-template #defaultHint>
21669
+ <kendo-icon-wrapper
21670
+ [name]="getHintSettings('hintIcon')"
21671
+ [svgIcon]="getHintSettings('hintSVGIcon')"
21672
+ innerCssClass="k-drag-status">
21673
+ </kendo-icon-wrapper>
21674
+ {{hintText}}
21675
+ </ng-template>
21676
+ `, 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 });
21640
21677
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GridComponent, decorators: [{
21641
21678
  type: Component,
21642
21679
  args: [{
@@ -21683,7 +21720,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
21683
21720
  ScrollRequestService,
21684
21721
  SortService,
21685
21722
  ContextService,
21686
- SizingOptionsService
21723
+ SizingOptionsService,
21724
+ RowReorderService
21687
21725
  ],
21688
21726
  selector: 'kendo-grid',
21689
21727
  template: `
@@ -21912,6 +21950,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
21912
21950
 
21913
21951
  i18n-groupPanelLabel="kendo.grid.groupPanelLabel|The label for the Grid group panel toolbar"
21914
21952
  groupPanelLabel="Group panel"
21953
+
21954
+ i18n-dragRowHandleLabel="kendo.grid.dragRowHandleLabel|The label for the Grid drag row handle"
21955
+ dragRowHandleLabel="Drag row"
21915
21956
  >
21916
21957
  </ng-container>
21917
21958
  <kendo-grid-toolbar
@@ -22039,6 +22080,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
22039
22080
  </div>
22040
22081
  </div>
22041
22082
  <kendo-grid-list
22083
+ kendoDragTargetContainer
22084
+ kendoDropTargetContainer
22085
+ mode="manual"
22086
+ [dragDisabled]="!rowReorderable"
22087
+ [dropDisabled]="!rowReorderable"
22088
+ [dragTargetFilter]="getDefaultSelectors('dragTarget')"
22089
+ [dropTargetFilter]="getDefaultSelectors('dropTarget')"
22090
+ [dragHandle]="getDefaultSelectors('handle')"
22091
+ [hint]="{hintTemplate: defaultHint}"
22092
+ (press)="handleReorderEvents($event, 'press')"
22093
+ (dragStart)="handleReorderEvents($event, 'dragStart')"
22094
+ (drag)="handleReorderEvents($event, 'drag')"
22095
+ (dragEnter)="handleReorderEvents($event, 'dragEnter')"
22096
+ (dragLeave)="handleReorderEvents($event, 'dragLeave')"
22097
+ (dragEnd)="handleReorderEvents($event, 'dragEnd')"
22098
+ (drop)="handleReorderEvents($event, 'drop')"
22099
+ [dragData]="gridData"
22042
22100
  [data]="$any(view)"
22043
22101
  [rowHeight]="rowHeight"
22044
22102
  [detailRowHeight]="detailRowHeight"
@@ -22204,10 +22262,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
22204
22262
  [navigable]="navigation.toolbarEnabled"
22205
22263
  [attr.aria-label]="messageFor('bottomToolbarLabel')"
22206
22264
  [attr.aria-controls]="ariaRootId"
22207
- position="bottom"></kendo-grid-toolbar>
22265
+ position="bottom">
22266
+ </kendo-grid-toolbar>
22267
+
22268
+ <ng-template #defaultHint>
22269
+ <kendo-icon-wrapper
22270
+ [name]="getHintSettings('hintIcon')"
22271
+ [svgIcon]="getHintSettings('hintSVGIcon')"
22272
+ innerCssClass="k-drag-status">
22273
+ </kendo-icon-wrapper>
22274
+ {{hintText}}
22275
+ </ng-template>
22208
22276
  `
22209
22277
  }]
22210
- }], 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: [{
22278
+ }], 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: [{
22211
22279
  type: Input
22212
22280
  }], pageSize: [{
22213
22281
  type: Input
@@ -22243,6 +22311,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
22243
22311
  type: Input
22244
22312
  }], groupable: [{
22245
22313
  type: Input
22314
+ }], rowReorderable: [{
22315
+ type: Input
22246
22316
  }], navigable: [{
22247
22317
  type: Input
22248
22318
  }], navigatable: [{
@@ -22277,6 +22347,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
22277
22347
  type: Output
22278
22348
  }], selectionChange: [{
22279
22349
  type: Output
22350
+ }], rowReorder: [{
22351
+ type: Output
22280
22352
  }], dataStateChange: [{
22281
22353
  type: Output
22282
22354
  }], groupExpand: [{
@@ -22376,6 +22448,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
22376
22448
  }], ariaRoot: [{
22377
22449
  type: ViewChild,
22378
22450
  args: ['ariaRoot', { static: true }]
22451
+ }], dragTargetContainer: [{
22452
+ type: ViewChild,
22453
+ args: [DragTargetContainerDirective]
22454
+ }], dropTargetContainer: [{
22455
+ type: ViewChild,
22456
+ args: [DropTargetContainerDirective]
22379
22457
  }], isDetailExpanded: [{
22380
22458
  type: Input
22381
22459
  }], isGroupExpanded: [{
@@ -22386,12 +22464,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
22386
22464
  * A directive which encapsulates the in-memory handling of data operations such as [paging]({% slug paging_grid %}),
22387
22465
  * [sorting]({% slug sorting_grid %}), and [grouping]({% slug grouping_grid %})
22388
22466
  * ([more information and examples]({% slug local_data_grid %}#toc-using-the-data-binding-directive)).
22467
+ *
22468
+ * @example
22469
+ * ```html
22470
+ * <kendo-grid [kendoGridBinding]="gridData" ...></kendo-grid>
22471
+ * ```
22389
22472
  */
22390
22473
  class DataBindingDirective {
22391
- constructor(grid, changeDetector, localDataChangesService) {
22474
+ constructor(grid, changeDetector, localDataChangesService, rowReorderService) {
22392
22475
  this.grid = grid;
22393
22476
  this.changeDetector = changeDetector;
22394
22477
  this.localDataChangesService = localDataChangesService;
22478
+ this.rowReorderService = rowReorderService;
22395
22479
  this.state = {
22396
22480
  skip: 0
22397
22481
  };
@@ -22402,12 +22486,16 @@ class DataBindingDirective {
22402
22486
  }
22403
22487
  /**
22404
22488
  * Defines the number of records that will be skipped by the pager.
22489
+ * @default 0
22405
22490
  */
22406
22491
  set skip(value) {
22407
22492
  if (!isPresent(value)) {
22408
22493
  value = 0;
22409
22494
  }
22410
22495
  this.grid.skip = this.state.skip = value;
22496
+ if (this.rowReorderService) {
22497
+ this.rowReorderService.skip = value;
22498
+ }
22411
22499
  }
22412
22500
  /**
22413
22501
  * Defines the descriptors by which the data will be sorted.
@@ -22451,6 +22539,11 @@ class DataBindingDirective {
22451
22539
  this.stateChangeSubscription = this.grid
22452
22540
  .dataStateChange
22453
22541
  .subscribe(this.onStateChange.bind(this));
22542
+ if (this.rowReorderService) {
22543
+ this.rowReorderSubscription = this.grid
22544
+ .rowReorder
22545
+ .subscribe(this.onRowReorder.bind(this));
22546
+ }
22454
22547
  }
22455
22548
  /**
22456
22549
  * @hidden
@@ -22462,6 +22555,9 @@ class DataBindingDirective {
22462
22555
  if (this.dataChangedSubscription) {
22463
22556
  this.dataChangedSubscription.unsubscribe();
22464
22557
  }
22558
+ if (this.rowReorderSubscription) {
22559
+ this.rowReorderSubscription.unsubscribe();
22560
+ }
22465
22561
  }
22466
22562
  /**
22467
22563
  * @hidden
@@ -22483,6 +22579,13 @@ class DataBindingDirective {
22483
22579
  this.applyState(state);
22484
22580
  this.rebind();
22485
22581
  }
22582
+ /**
22583
+ * @hidden
22584
+ */
22585
+ onRowReorder(ev) {
22586
+ this.rowReorderService.reorderRows(ev, this.originalData);
22587
+ this.rebind();
22588
+ }
22486
22589
  /**
22487
22590
  * @hidden
22488
22591
  */
@@ -22515,14 +22618,14 @@ class DataBindingDirective {
22515
22618
  this.dataChanged = false;
22516
22619
  }
22517
22620
  }
22518
- 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 });
22621
+ 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 });
22519
22622
  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 });
22520
22623
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DataBindingDirective, decorators: [{
22521
22624
  type: Directive,
22522
22625
  args: [{
22523
22626
  selector: '[kendoGridBinding]'
22524
22627
  }]
22525
- }], ctorParameters: function () { return [{ type: GridComponent }, { type: i0.ChangeDetectorRef }, { type: LocalDataChangesService }]; }, propDecorators: { skip: [{
22628
+ }], ctorParameters: function () { return [{ type: GridComponent }, { type: i0.ChangeDetectorRef }, { type: LocalDataChangesService }, { type: RowReorderService }]; }, propDecorators: { skip: [{
22526
22629
  type: Input
22527
22630
  }], sort: [{
22528
22631
  type: Input
@@ -22539,7 +22642,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
22539
22642
 
22540
22643
  /**
22541
22644
  * A directive which stores the row selection state of the Grid in memory
22542
- * ([see example]({% slug selection_grid %}#toc-during-data-operations)).
22645
+ * ([see example]({% slug selection_grid %}#toc-toggling-the-selection-functionality)).
22543
22646
  */
22544
22647
  class SelectionDirective extends Selection {
22545
22648
  constructor(ctx, cd) {
@@ -22572,7 +22675,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
22572
22675
  }], ctorParameters: function () { return [{ type: ContextService }, { type: i0.ChangeDetectorRef }]; } });
22573
22676
 
22574
22677
  /**
22575
- * A directive which controls the expanded state of the master detail rows.
22678
+ * A directive which controls the expanded state of the master detail rows. ([see example](slug:master_detail_expanded_state_grid#toc-built-in-directive))
22576
22679
  */
22577
22680
  class ExpandDetailsDirective {
22578
22681
  constructor(grid) {
@@ -24502,28 +24605,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
24502
24605
 
24503
24606
  /**
24504
24607
  * Represents the `cancel` command of the Grid. You can apply this directive to any `button`
24505
- * element inside a [CommandColumnComponent]({% slug api_grid_commandcolumncomponent %}).
24608
+ * element inside a [CommandColumnComponent]({% slug api_grid_commandcolumncomponent %})
24609
+ * ([see example](slug:editing_directives_grid#toc-command-column-directives)).
24506
24610
  * When an associated button with the directive is clicked, the
24507
24611
  * [cancel]({% slug api_grid_gridcomponent %}#toc-cancel) event
24508
- * is triggered ([see example]({% slug basics_editing_grid %})).
24509
- *
24510
- * > When the row is not in the edit mode, the button with the `kendoGridCancelCommand` is automatically hidden.
24511
- *
24512
- * @example
24513
- * ```html-no-run
24514
- * <kendo-grid>
24515
- * <kendo-grid-command-column title="command">
24516
- * <ng-template kendoGridCellTemplate>
24517
- * <button kendoGridCancelCommand>Cancel changes</button>
24518
- * </ng-template>
24519
- * </kendo-grid-command-column>
24520
- * </kendo-grid>
24521
- * ```
24612
+ * is triggered. When the row is not in the edit mode, the button with the `kendoGridCancelCommand` is automatically hidden.
24522
24613
  *
24523
24614
  * You can control the content of the button based on the state of the row.
24524
24615
  *
24525
24616
  * @example
24526
- * ```html-no-run
24617
+ * ```html
24527
24618
  * <kendo-grid>
24528
24619
  * <kendo-grid-command-column title="command">
24529
24620
  * <ng-template kendoGridCellTemplate let-isNew="isNew">
@@ -24613,23 +24704,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
24613
24704
 
24614
24705
  /**
24615
24706
  * Represents the `save` command of the Grid. You can apply this directive to any `button`
24616
- * element inside a [CommandColumnComponent]({% slug api_grid_commandcolumncomponent %}).
24707
+ * element inside a [CommandColumnComponent]({% slug api_grid_commandcolumncomponent %})
24708
+ * ([see example](slug:editing_directives_grid#toc-command-column-directives)).
24617
24709
  * When an associated button with the directive is clicked, the
24618
24710
  * [save]({% slug api_grid_gridcomponent %}#toc-save) event
24619
- * is triggered ([see example]({% slug basics_editing_grid %})).
24620
- *
24621
- * > When the row is not in the edit mode, the button with `kendoGridSaveCommand` is automatically hidden.
24622
- *
24623
- * @example
24624
- * ```html-no-run
24625
- * <kendo-grid>
24626
- * <kendo-grid-command-column title="command">
24627
- * <ng-template kendoGridCellTemplate>
24628
- * <button kendoGridSaveCommand>Save changes</button>
24629
- * </ng-template>
24630
- * </kendo-grid-command-column>
24631
- * </kendo-grid>
24632
- * ```
24711
+ * is triggered. When the row is not in the edit mode, the button with `kendoGridSaveCommand` is automatically hidden.
24633
24712
  *
24634
24713
  * You can control the content of the button based on the state of the row.
24635
24714
  *
@@ -24724,15 +24803,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
24724
24803
 
24725
24804
  /**
24726
24805
  * Represents the `remove` command of the Grid. You can apply this directive to any `button` element
24727
- * inside a [CommandColumnComponent]({% slug api_grid_commandcolumncomponent %}).
24806
+ * inside a [CommandColumnComponent]({% slug api_grid_commandcolumncomponent %})
24807
+ * ([see example](slug:editing_directives_grid#toc-command-column-directives)).
24728
24808
  * When an associated button with the directive is clicked, the
24729
- * [remove event]({% slug api_grid_gridcomponent %}#toc-remove)
24730
- * is triggered ([see example]({% slug inline_editing_grid %}#toc-using-reactive-forms))).
24731
- *
24732
- * > When the row is in the edit mode, the button with the `kendoGridRemoveCommand` is automatically hidden.
24809
+ * [remove]({% slug api_grid_gridcomponent %}#toc-remove) event
24810
+ * is triggered.
24811
+ * When the row is in the edit mode, the button with the `kendoGridRemoveCommand` is automatically hidden.
24733
24812
  *
24734
24813
  * @example
24735
- * ```html-no-run
24814
+ * ```html
24736
24815
  * <kendo-grid>
24737
24816
  * <kendo-grid-command-column title="command">
24738
24817
  * <ng-template kendoGridCellTemplate>
@@ -24826,7 +24905,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
24826
24905
  * ([see example]({% slug basics_editing_grid %})).
24827
24906
  *
24828
24907
  * @example
24829
- * ```html-no-run
24908
+ * ```html
24830
24909
  * <kendo-grid>
24831
24910
  * <ng-template kendoGridToolbarTemplate>
24832
24911
  * <button kendoGridAddCommand>Add new</button>
@@ -24891,6 +24970,54 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
24891
24970
  args: ['class.k-grid-add-command']
24892
24971
  }] } });
24893
24972
 
24973
+ /**
24974
+ * Represents the drag handle for reordering rows in the Grid.
24975
+ */
24976
+ class RowReorderColumnComponent extends ColumnBase {
24977
+ constructor(parent, idService) {
24978
+ super(parent, idService);
24979
+ this.parent = parent;
24980
+ /**
24981
+ * @hidden
24982
+ */
24983
+ this.isRowReorderColumn = true;
24984
+ }
24985
+ }
24986
+ 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 });
24987
+ 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: [
24988
+ {
24989
+ provide: ColumnBase,
24990
+ useExisting: forwardRef(() => RowReorderColumnComponent)
24991
+ }
24992
+ ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });
24993
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RowReorderColumnComponent, decorators: [{
24994
+ type: Component,
24995
+ args: [{
24996
+ providers: [
24997
+ {
24998
+ provide: ColumnBase,
24999
+ useExisting: forwardRef(() => RowReorderColumnComponent)
25000
+ }
25001
+ ],
25002
+ selector: 'kendo-grid-rowreorder-column',
25003
+ template: ``
25004
+ }]
25005
+ }], ctorParameters: function () {
25006
+ return [{ type: ColumnBase, decorators: [{
25007
+ type: SkipSelf
25008
+ }, {
25009
+ type: Host
25010
+ }, {
25011
+ type: Optional
25012
+ }] }, { type: IdService, decorators: [{
25013
+ type: Optional
25014
+ }] }];
25015
+ }, propDecorators: { dragHandleIcon: [{
25016
+ type: Input
25017
+ }], dragHandleSVGIcon: [{
25018
+ type: Input
25019
+ }] } });
25020
+
24894
25021
  const exported = [
24895
25022
  CommandColumnComponent,
24896
25023
  CheckboxColumnComponent,
@@ -24906,7 +25033,8 @@ const exported = [
24906
25033
  RemoveCommandDirective,
24907
25034
  AddCommandDirective,
24908
25035
  CellLoadingTemplateDirective,
24909
- LoadingTemplateDirective
25036
+ LoadingTemplateDirective,
25037
+ RowReorderColumnComponent
24910
25038
  ];
24911
25039
  const importedModules$1 = [
24912
25040
  CommonModule,
@@ -24936,7 +25064,8 @@ class BodyModule {
24936
25064
  RemoveCommandDirective,
24937
25065
  AddCommandDirective,
24938
25066
  CellLoadingTemplateDirective,
24939
- LoadingTemplateDirective
25067
+ LoadingTemplateDirective,
25068
+ RowReorderColumnComponent
24940
25069
  ];
24941
25070
  }
24942
25071
  }
@@ -24955,7 +25084,8 @@ BodyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13
24955
25084
  RemoveCommandDirective,
24956
25085
  AddCommandDirective,
24957
25086
  CellLoadingTemplateDirective,
24958
- LoadingTemplateDirective], imports: [CommonModule,
25087
+ LoadingTemplateDirective,
25088
+ RowReorderColumnComponent], imports: [CommonModule,
24959
25089
  ReactiveFormsModule,
24960
25090
  FormsModule,
24961
25091
  SharedModule,
@@ -24976,7 +25106,8 @@ BodyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13
24976
25106
  RemoveCommandDirective,
24977
25107
  AddCommandDirective,
24978
25108
  CellLoadingTemplateDirective,
24979
- LoadingTemplateDirective] });
25109
+ LoadingTemplateDirective,
25110
+ RowReorderColumnComponent] });
24980
25111
  BodyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BodyModule, imports: [[...importedModules$1]] });
24981
25112
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BodyModule, decorators: [{
24982
25113
  type: NgModule,
@@ -25226,7 +25357,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
25226
25357
 
25227
25358
  /**
25228
25359
  * A directive which encapsulates the editing operations of the Grid when using
25229
- * the Template-Driven Angular Forms ([see example]({% slug editing_directives_grid %}#toc-the-template-directive)).
25360
+ * the Template-Driven Angular Forms ([see example]({% slug editing_directives_grid %}#toc-template-editing-directive)).
25230
25361
  */
25231
25362
  class TemplateEditingDirective extends RowEditingDirectiveBase {
25232
25363
  constructor(grid, localDataChangesService) {
@@ -25324,7 +25455,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
25324
25455
 
25325
25456
  /**
25326
25457
  * A directive which encapsulates the editing operations of the Grid when using the in-cell
25327
- * editing with Reactive Forms ([see example]({% slug editing_directives_grid %}#toc-the-incell-directive)).
25458
+ * editing with Reactive Forms ([see example]({% slug editing_directives_grid %}#toc-in-cell-editing)).
25328
25459
  */
25329
25460
  class InCellEditingDirective extends EditingDirectiveBase {
25330
25461
  constructor(grid, localDataChangesService, cdr) {
@@ -25758,29 +25889,19 @@ const declarations$2 = [
25758
25889
  *
25759
25890
  * @example
25760
25891
  *
25761
- * ```ts-no-run
25762
- * // Import the Grid module
25763
- * import { GridModule } from '@progress/kendo-angular-grid';
25764
- *
25765
- * // The browser platform with a compiler
25766
- * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
25767
- *
25892
+ * ```ts
25768
25893
  * import { NgModule } from '@angular/core';
25769
- *
25770
- * // Import the app component
25894
+ * import { GridModule } from '@progress/kendo-angular-grid';
25895
+ * import { BrowserModule } from "@angular/platform-browser";
25771
25896
  * import { AppComponent } from './app.component';
25772
25897
  *
25773
- * // Define the app module
25774
- * _@NgModule({
25775
- * declarations: [AppComponent], // declare app component
25776
- * imports: [BrowserModule, GridModule], // import Grid module
25898
+ * @NgModule({
25899
+ * declarations: [AppComponent],
25900
+ * imports: [BrowserModule, GridModule],
25777
25901
  * bootstrap: [AppComponent]
25778
25902
  * })
25779
25903
  * export class AppModule {}
25780
25904
  *
25781
- * // Compile and launch the module
25782
- * platformBrowserDynamic().bootstrapModule(AppModule);
25783
- *
25784
25905
  * ```
25785
25906
  */
25786
25907
  class GridModule {
@@ -25812,7 +25933,8 @@ GridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13
25812
25933
  RowFilterModule,
25813
25934
  FilterMenuModule,
25814
25935
  ResizeSensorModule,
25815
- ColumnMenuModule], exports: [GridComponent,
25936
+ ColumnMenuModule,
25937
+ DragAndDropModule$1], exports: [GridComponent,
25816
25938
  ToolbarTemplateDirective,
25817
25939
  ToolbarComponent,
25818
25940
  GridSpacerComponent,
@@ -25825,7 +25947,7 @@ GridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13
25825
25947
  InCellEditingDirective,
25826
25948
  ExpandDetailsDirective,
25827
25949
  ExpandGroupDirective,
25828
- 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] });
25950
+ 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] });
25829
25951
  GridModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GridModule, imports: [[
25830
25952
  CommonModule,
25831
25953
  GroupModule,
@@ -25837,7 +25959,8 @@ GridModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13
25837
25959
  RowFilterModule,
25838
25960
  FilterMenuModule,
25839
25961
  ResizeSensorModule,
25840
- ColumnMenuModule
25962
+ ColumnMenuModule,
25963
+ DragAndDropModule$1
25841
25964
  ]] });
25842
25965
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GridModule, decorators: [{
25843
25966
  type: NgModule,
@@ -25855,7 +25978,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
25855
25978
  RowFilterModule,
25856
25979
  FilterMenuModule,
25857
25980
  ResizeSensorModule,
25858
- ColumnMenuModule
25981
+ ColumnMenuModule,
25982
+ DragAndDropModule$1
25859
25983
  ]
25860
25984
  }]
25861
25985
  }] });
@@ -25874,50 +25998,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
25874
25998
 
25875
25999
  /**
25876
26000
  * Represents the PDF page template of the Grid that helps to customize the PDF pages. To define a page template,
25877
- * nest an `<ng-template>` tag with the `kendoGridPDFTemplate` directive inside `<kendo-grid-pdf>`.
26001
+ * nest an `<ng-template>` tag with the `kendoGridPDFTemplate` directive inside `<kendo-grid-pdf>` tag.
25878
26002
  *
25879
26003
  * The template context provides the following fields:
25880
26004
  * - `pageNumber`&mdash;Defines PDF page number.
25881
26005
  * - `totalPages`&mdash;Defines the total number of PDF pages.
25882
26006
  *
25883
26007
  * @example
25884
- * ```ts-preview
25885
- *
25886
- * _@Component({
25887
- * selector: 'my-app',
25888
- * template: `
25889
- * <kendo-grid [data]="gridData">
25890
- * <ng-template kendoGridToolbarTemplate>
25891
- * <button kendoGridPDFCommand icon="file-pdf">Export to PDF</button>
25892
- * </ng-template>
25893
- * <kendo-grid-column field="ProductName">
25894
- * </kendo-grid-column>
25895
- * <kendo-grid-column field="UnitPrice">
25896
- * </kendo-grid-column>
25897
- * <kendo-grid-pdf fileName="Products.pdf" paperSize="A4" [margin]="{ top: '1cm', left: '1cm', right: '1cm', bottom: '1cm' }">
25898
- * <ng-template kendoGridPDFTemplate let-pageNum="pageNum" let-totalPages="totalPages">
25899
- * <div style="position: absolute;top: 5px; left: 5px;">
25900
- * Page {{ pageNum }} of {{ totalPages }}
25901
- * </div>
25902
- * </ng-template>
25903
- * </kendo-grid-pdf>
25904
- * </kendo-grid>
25905
- * `
25906
- * })
25907
- *
25908
- * class AppComponent {
25909
- * public gridData = [{
25910
- * "ProductID": 1,
25911
- * "ProductName": "Chai",
25912
- * "UnitPrice": 18.0000
25913
- * }, {
25914
- * "ProductID": 2,
25915
- * "ProductName": "Chang",
25916
- * "UnitPrice": 19.0000
25917
- * }
25918
- * ];
25919
- * }
25920
- *
26008
+ * ```html
26009
+ * <kendo-grid [data]="gridData">
26010
+ * ...
26011
+ * <kendo-grid-pdf fileName="Products.pdf" paperSize="A4">
26012
+ * <ng-template kendoGridPDFTemplate let-pageNumber="pageNumber" let-totalPages="totalPages">
26013
+ * Page {{ pageNumber }} of {{ totalPages }}
26014
+ * </ng-template>
26015
+ * </kendo-grid-pdf>
26016
+ * </kendo-grid>
25921
26017
  * ```
25922
26018
  */
25923
26019
  class PDFTemplateDirective extends PDFExportTemplateDirective {
@@ -26425,28 +26521,19 @@ const declarations$1 = [
26425
26521
  *
26426
26522
  * @example
26427
26523
  *
26428
- * ```ts-no-run
26429
- * // Import the Grid and PDF modules
26430
- * import { GridModule, PDFModule } from '@progress/kendo-angular-grid';
26431
- *
26432
- * // The browser platform with a compiler
26433
- * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
26434
- *
26524
+ * ```ts
26435
26525
  * import { NgModule } from '@angular/core';
26436
- *
26437
- * // Import the app component
26526
+ * import { BrowserModule } from "@angular/platform-browser";
26527
+ * import { GridModule, PDFModule } from '@progress/kendo-angular-grid';
26438
26528
  * import { AppComponent } from './app.component';
26439
26529
  *
26440
- * // Define the app module
26441
- * _@NgModule({
26442
- * declarations: [AppComponent], // declare app component
26443
- * imports: [BrowserModule, GridModule, PDFModule], // import Grid and PDF modules
26530
+ * @NgModule({
26531
+ * declarations: [AppComponent],
26532
+ * imports: [BrowserModule, GridModule, PDFModule],
26444
26533
  * bootstrap: [AppComponent]
26445
26534
  * })
26446
- * export class AppModule {}
26447
26535
  *
26448
- * // Compile and launch the module
26449
- * platformBrowserDynamic().bootstrapModule(AppModule);
26536
+ * export class AppModule {}
26450
26537
  *
26451
26538
  * ```
26452
26539
  */
@@ -26625,13 +26712,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
26625
26712
  /**
26626
26713
  * Represents the `export-to-Excel` command of the Grid. You can apply this
26627
26714
  * directive to any `button` element inside a
26628
- * [ToolbarTemplate]({% slug api_grid_commandcolumncomponent %}).
26715
+ * [ToolbarTemplate]({% slug api_grid_toolbartemplatedirective %}).
26629
26716
  * When the user clicks a button associated with the directive, the
26630
26717
  * [excelExport]({% slug api_grid_gridcomponent %}#toc-excelexport) event
26631
26718
  * fires ([see example]({% slug excelexport_grid %})).
26632
26719
  *
26633
26720
  * @example
26634
- * ```html-no-run
26721
+ * ```html
26635
26722
  * <kendo-grid>
26636
26723
  * <ng-template kendoGridToolbarTemplate>
26637
26724
  * <button kendoGridExcelCommand>Export to PDF</button>
@@ -26706,29 +26793,19 @@ const declarations = [ExcelComponent, ExcelCommandDirective];
26706
26793
  *
26707
26794
  * @example
26708
26795
  *
26709
- * ```ts-no-run
26710
- * // Import the Grid and Excel modules
26711
- * import { GridModule, ExcelModule } from '@progress/kendo-angular-grid';
26712
- *
26713
- * // The browser platform with a compiler
26714
- * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
26715
- *
26796
+ * ```ts
26716
26797
  * import { NgModule } from '@angular/core';
26717
- *
26718
- * // Import the app component
26798
+ * import { BrowserModule } from "@angular/platform-browser";
26799
+ * import { GridModule, ExcelModule } from '@progress/kendo-angular-grid';
26719
26800
  * import { AppComponent } from './app.component';
26720
26801
  *
26721
- * // Define the app module
26722
26802
  * _@NgModule({
26723
- * declarations: [AppComponent], // declare app component
26724
- * imports: [BrowserModule, GridModule, ExcelModule], // import Grid and Excel modules
26803
+ * declarations: [AppComponent],
26804
+ * imports: [BrowserModule, GridModule, ExcelModule],
26725
26805
  * bootstrap: [AppComponent]
26726
26806
  * })
26727
26807
  * export class AppModule {}
26728
26808
  *
26729
- * // Compile and launch the module
26730
- * platformBrowserDynamic().bootstrapModule(AppModule);
26731
- *
26732
26809
  * ```
26733
26810
  */
26734
26811
  class ExcelModule {
@@ -26749,5 +26826,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
26749
26826
  * Generated bundle index. Do not edit.
26750
26827
  */
26751
26828
 
26752
- 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 };
26829
+ 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 };
26753
26830