@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 * as i1 from '@progress/kendo-angular-l10n';
11
11
  import { ComponentMessages, LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';
@@ -19,7 +19,9 @@ import { orderBy, isCompositeFilterDescriptor, process, filterBy } from '@progre
19
19
  import * as i1$2 from '@progress/kendo-angular-popup';
20
20
  import { PopupModule } from '@progress/kendo-angular-popup';
21
21
  import * as i1$3 from '@angular/platform-browser';
22
- import { caretAltLeftIcon, caretAltToLeftIcon, caretAltRightIcon, caretAltToRightIcon, sortDescSmallIcon, sortAscSmallIcon, filterIcon, unlockIcon, lockIcon, stickIcon, unstickIcon, setColumnPositionIcon, columnsIcon, maxWidthIcon, displayInlineBlockIcon, moreVerticalIcon, filterClearIcon, caretAltDownIcon, minusIcon, plusIcon } from '@progress/kendo-svg-icons';
22
+ import * as i40 from '@progress/kendo-angular-utils';
23
+ import { DragTargetContainerDirective, DropTargetContainerDirective, DragAndDropModule as DragAndDropModule$1 } from '@progress/kendo-angular-utils';
24
+ import { cancelIcon, insertMiddleIcon, caretAltLeftIcon, caretAltToLeftIcon, caretAltRightIcon, caretAltToRightIcon, sortDescSmallIcon, sortAscSmallIcon, filterIcon, unlockIcon, lockIcon, stickIcon, unstickIcon, setColumnPositionIcon, columnsIcon, maxWidthIcon, displayInlineBlockIcon, moreVerticalIcon, filterClearIcon, reorderIcon, caretAltDownIcon, minusIcon, plusIcon } from '@progress/kendo-svg-icons';
23
25
  import * as i4$1 from '@progress/kendo-angular-buttons';
24
26
  import { ButtonModule, ChipModule, Button } from '@progress/kendo-angular-buttons';
25
27
  import * as i3 from '@progress/kendo-angular-inputs';
@@ -30,7 +32,7 @@ import * as i5 from '@progress/kendo-angular-label';
30
32
  import { LabelModule } from '@progress/kendo-angular-label';
31
33
  import * as i3$1 from '@progress/kendo-angular-icons';
32
34
  import { IconsModule } from '@progress/kendo-angular-icons';
33
- import * as i5$1 from '@progress/kendo-angular-dateinputs';
35
+ import * as i4$3 from '@progress/kendo-angular-dateinputs';
34
36
  import { DatePickerModule } from '@progress/kendo-angular-dateinputs';
35
37
  import { trigger, state, style, transition, animate } from '@angular/animations';
36
38
  import { getter } from '@progress/kendo-common';
@@ -492,47 +494,16 @@ const EMPTY_CELL_CONTEXT = {};
492
494
  * [focus in a navigable Grid]({% slug keyboard_navigation_grid %}).
493
495
  *
494
496
  * @example
495
- * ```ts-preview
496
- * _@Component({
497
- * selector: 'my-app',
498
- * template: `
499
- * <input type="text" placeholder="Tab stop #0" style="margin-bottom: 8px;" />
500
- * <kendo-grid [data]="data" [navigable]="true">
501
- * <kendo-grid-column field="ProductID" title="Product ID" [width]="100">
502
- * </kendo-grid-column>
503
- * <kendo-grid-column field="ProductName" title="Product Name" [width]="150">
504
- * </kendo-grid-column>
505
- * <kendo-grid-column>
506
- * <ng-template kendoGridCellTemplate let-dataItem>
507
- * <!-- The first focusable element will be focused when pressing Enter on the cell -->
508
- * <input type="text" kendoGridFocusable [value]="dataItem.ProductName" style="margin-right: 8px;" />
509
- * <button kendoGridFocusable>Update</button>
510
- * </ng-template>
511
- * </kendo-grid-column>
512
- * <kendo-grid-column [width]="100">
513
- * <ng-template kendoGridCellTemplate>
514
- * <!-- A single focusable element will be focused during navigation -->
515
- * <button kendoGridFocusable>Delete</button>
516
- * </ng-template>
517
- * </kendo-grid-column>
518
- * </kendo-grid>
519
- * <input type="text" placeholder="Tab stop #2" style="margin-top: 8px;" />
520
- * `
521
- * })
522
- *
523
- * class AppComponent {
524
- * public readonly data: any = [{
525
- * "ProductID": 1,
526
- * "ProductName": "Chai",
527
- * "UnitPrice": 18.0000,
528
- * "Discontinued": true
529
- * }, {
530
- * "ProductID": 2,
531
- * "ProductName": "Chang",
532
- * "UnitPrice": 19.0000,
533
- * "Discontinued": false
534
- * }];
535
- * }
497
+ * ```html
498
+ * <kendo-grid [data]="data" [navigable]="true">
499
+ * <kendo-grid-column>
500
+ * <ng-template kendoGridCellTemplate let-dataItem>
501
+ * <!-- The first focusable element will be focused when pressing Enter on the cell -->
502
+ * <input type="text" kendoGridFocusable [value]="dataItem.ProductName" style="margin-right: 8px;" />
503
+ * <button kendoGridFocusable>Update</button>
504
+ * </ng-template>
505
+ * </kendo-grid-column>
506
+ * </kendo-grid>
536
507
  * ```
537
508
  */
538
509
  class FocusableDirective {
@@ -1064,7 +1035,7 @@ class PreventableEvent {
1064
1035
  this.prevented = true;
1065
1036
  }
1066
1037
  /**
1067
- * Returns `true` if the event was prevented
1038
+ * Returns a respective boolean if the event was prevented
1068
1039
  * by any of its subscribers.
1069
1040
  *
1070
1041
  * @returns `true` if the default action was prevented.
@@ -2855,15 +2826,15 @@ const packageMetadata = {
2855
2826
  name: '@progress/kendo-angular-grid',
2856
2827
  productName: 'Kendo UI for Angular',
2857
2828
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
2858
- publishDate: 1681814065,
2859
- version: '12.0.0-develop.8',
2829
+ publishDate: 1682434440,
2830
+ version: '12.0.0',
2860
2831
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
2861
2832
  };
2862
2833
 
2863
2834
  /**
2864
- * Represents the column cell template of the Grid ([more information and example]({% slug templates_columns_grid %}#toc-cell-template)).
2865
- * Helps to customize the content of the cells. To define the cell template, nest an `<ng-template>` tag
2866
- * with the `kendoGridCellTemplate` directive inside a `<kendo-grid-column>` tag.
2835
+ * Represents the column cell template of the Grid.
2836
+ * Helps to customize the content of the cells. To define the cell template, nest an `<ng-template>` tag with the
2837
+ * `kendoGridCellTemplate` directive inside a `<kendo-grid-column>` tag [see example](slug:templates_columns_grid#toc-cell-template).
2867
2838
  *
2868
2839
  * The template context is set to the current data item and the following additional fields are passed:
2869
2840
  * - `columnIndex`&mdash;The current column index. Use it as an alias for a template variable by utilizing the `let-columnIndex="columnIndex"` syntax.
@@ -2872,38 +2843,14 @@ const packageMetadata = {
2872
2843
  * - `column`&mdash;The current column instance. Use it as an alias for a template variable by utilizing the `let-column="column"` syntax.
2873
2844
  *
2874
2845
  * @example
2875
- * ```ts-preview
2876
- *
2877
- * _@Component({
2878
- * selector: 'my-app',
2879
- * template: `
2880
- * <kendo-grid [data]="gridData">
2881
- * <kendo-grid-column field="ProductName">
2882
- * <ng-template kendoGridCellTemplate let-dataItem let-rowIndex="rowIndex">
2883
- * Data Row #: {{rowIndex}} /
2884
- * <strong>{{dataItem.ProductName}}</strong>
2885
- * ({{dataItem.Discontinued ? "discontinued" : "active"}})
2886
- * </ng-template>
2887
- * </kendo-grid-column>
2888
- * </kendo-grid>
2889
- * `
2890
- * })
2891
- *
2892
- * class AppComponent {
2893
- * public gridData = [{
2894
- * "ProductID": 1,
2895
- * "ProductName": "Chai",
2896
- * "UnitPrice": 18.0000,
2897
- * "Discontinued": false
2898
- * }, {
2899
- * "ProductID": 2,
2900
- * "ProductName": "Chang",
2901
- * "UnitPrice": 19.0000,
2902
- * "Discontinued": true
2903
- * }
2904
- * ];
2905
- * }
2906
- *
2846
+ * ```html
2847
+ * <kendo-grid [data]="gridData" ...>
2848
+ * <kendo-grid-column field="ProductName">
2849
+ * <ng-template kendoGridCellTemplate let-dataItem let-rowIndex="rowIndex" let-column="column">
2850
+ * Data Row: {{rowIndex}}
2851
+ * </ng-template>
2852
+ * </kendo-grid-column>
2853
+ * </kendo-grid>
2907
2854
  * ```
2908
2855
  */
2909
2856
  class CellTemplateDirective {
@@ -2925,7 +2872,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
2925
2872
  /**
2926
2873
  * Represents the group-header cell template of the Grid which helps to customize the content of the group header item.
2927
2874
  * To define the group header template, nest an `<ng-template>` tag with the `kendoGridGroupHeaderTemplate`
2928
- * directive inside `<kendo-grid-column>`.
2875
+ * directive inside `<kendo-grid-column>`. ([See example](slug:grouping_grid_templates#toc-header-template)).
2929
2876
  *
2930
2877
  * The template context is set to the current data item and the following additional fields are passed:
2931
2878
  * - `group`&mdash;The current group item.
@@ -2934,44 +2881,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
2934
2881
  * - `aggregates`&mdash;All aggregate values for the current group.
2935
2882
  * - `index`&mdash;The index of the current group.
2936
2883
  * - `expanded`&mdash;A boolean value indicating if the group is currently expanded.
2937
- * ([see example]({% slug groupable_grid_with_aggregates %})).
2938
2884
  *
2939
2885
  * @example
2940
- * ```ts
2941
- * import { process } from '@progress/kendo-data-query';
2942
- *
2943
- * _@Component({
2944
- * selector: 'my-app',
2945
- * template: `
2946
- * <kendo-grid [data]="gridData" [group]="groups">
2947
- * <kendo-grid-column field="ProductName">
2948
- * <ng-template kendoGridGroupHeaderTemplate let-group let-field="field" let-value="value">
2949
- * <strong>{{field}}</strong>: {{value}}
2950
- * </ng-template>
2951
- * </kendo-grid-column>
2952
- * </kendo-grid>
2953
- * `
2954
- * })
2955
- *
2956
- * class AppComponent {
2957
- * public groups = [{ field: "ProductName" }];
2958
- *
2959
- * public gridData = process([{
2960
- * "ProductID": 1,
2961
- * "ProductName": "Chai",
2962
- * "UnitPrice": 18.0000,
2963
- * "Discontinued": false
2964
- * }, {
2965
- * "ProductID": 2,
2966
- * "ProductName": "Chang",
2967
- * "UnitPrice": 19.0000,
2968
- * "Discontinued": true
2969
- * }
2970
- * ], {
2971
- * group: this.groups
2972
- * });
2973
- * }
2974
- *
2886
+ * ```html
2887
+ * <kendo-grid [data]="gridData" [group]="groups">
2888
+ * <kendo-grid-column field="ProductName">
2889
+ * <ng-template kendoGridGroupHeaderTemplate let-group let-field="field" let-value="value">
2890
+ * <strong>{{field}}</strong>: {{value}}
2891
+ * </ng-template>
2892
+ * </kendo-grid-column>
2893
+ * </kendo-grid>
2975
2894
  * ```
2976
2895
  */
2977
2896
  class GroupHeaderTemplateDirective {
@@ -2993,7 +2912,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
2993
2912
  /**
2994
2913
  * Represents the group-header column template of the Grid which helps to customize the content of the group headers.
2995
2914
  * To define the group header template, nest an `<ng-template>` tag with the `kendoGridGroupHeaderColumnTemplate`
2996
- * directive inside `<kendo-grid-column>`. ([See example]({% slug groupable_grid_with_aggregates %})).
2915
+ * directive inside `<kendo-grid-column>`. ([See example](slug:grouping_grid_templates#toc-header-column-template)).
2997
2916
  *
2998
2917
  * The template context is set to the current data item and the following additional fields are passed:
2999
2918
  * - `group`&mdash;The current group item.
@@ -3002,7 +2921,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
3002
2921
  * - `aggregates`&mdash;All aggregate values for the current group.
3003
2922
  *
3004
2923
  * @example
3005
- * ```ts
2924
+ * ```html
3006
2925
  * <kendo-grid-column field="ProductName" title="Product Name">
3007
2926
  * <ng-template kendoGridGroupHeaderColumnTemplate let-group="group" let-aggregates="aggregates">
3008
2927
  * <span title="Group Header Column Template for ProductName">
@@ -3029,13 +2948,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
3029
2948
  }] }]; } });
3030
2949
 
3031
2950
  /**
3032
- * Represents the column edit-cell template of the Grid ([see example]({% slug inline_editing_grid %}#toc-using-reactive-forms)).
2951
+ * Represents the column edit-cell template of the Grid ([see example](slug:custom_reactive_editing_grid#toc-setting-up-custom-inputs)).
3033
2952
  * Helps to customize the content of the edited cells. To define the cell template, nest an `<ng-template>`
3034
2953
  * tag with the `kendoGridEditTemplate` directive inside a `<kendo-grid-column>` tag.
3035
2954
  *
3036
2955
  * The template context is set to the current form group and the following additional fields are passed:
3037
- * - `formGroup`&mdash;The current [FormGroup](link:site.data.urls.angular['formgroupapi']).
3038
- * Represents the default context that will be assigned to any template variable which utilizes the `let-x` syntax&mdash;for example, `let-formGroup`.
2956
+ * - `formGroup`&mdash;The current [FormGroup](link:site.data.urls.angular['formgroupapi']). Represents the default context that will be assigned to any template variable which utilizes the `let-x` syntax&mdash;for example, `let-formGroup`.
3039
2957
  * If you use the Grid inside [Template-Driven Forms](link:site.data.urls.angular['forms']), it will be `undefined`.
3040
2958
  * - `rowIndex`&mdash;The current data row index. If inside a new item row, `rowIndex` is `-1`. Use it as an alias for a template variable by utilizing the `let-rowIndex="rowIndex"` syntax.
3041
2959
  * - `dataItem`&mdash;The current data item. Use it as an alias for a template variable by utilizing the `let-dataItem="dataItem"` syntax.
@@ -3063,47 +2981,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
3063
2981
  * To define the group footer template, nest an `<ng-template>` tag with the `kendoGridGroupFooterTemplate` directive
3064
2982
  * inside `<kendo-grid-column>`.
3065
2983
  *
3066
- * The template context is set to the current aggregates and the following additional fields are passed:
2984
+ * The template context is set to the current data item and the following additional fields are passed:
3067
2985
  * - `column`&mdash;Defines an instance of the `ColumnComponent` option.
3068
2986
  * - `field`&mdash;The current column field name.
3069
2987
  * - `group`&mdash;The current group data item.
3070
2988
  * - `aggregates`&mdash;All aggregate values for the current group.
3071
2989
  *
3072
2990
  * @example
3073
- * ```ts-preview
3074
- * import { process } from '@progress/kendo-data-query';
3075
- *
3076
- * _@Component({
3077
- * selector: 'my-app',
3078
- * template: `
3079
- * <kendo-grid [data]="gridData" [group]="groups">
3080
- * <kendo-grid-column field="ProductName">
3081
- * <ng-template kendoGridGroupFooterTemplate let-aggregates let-field="field">
3082
- * Count: {{aggregates[field].count}}
3083
- * </ng-template>
3084
- * </kendo-grid-column>
3085
- * </kendo-grid>
3086
- * `
3087
- * })
3088
- *
3089
- * class AppComponent {
3090
- * public groups = [{ field: "ProductName", aggregates: [{ field: "ProductName", aggregate: "count" }] }];
3091
- *
3092
- * public gridData = process([{
3093
- * "ProductID": 1,
3094
- * "ProductName": "Chai",
3095
- * "UnitPrice": 18.0000,
3096
- * "Discontinued": false
3097
- * }, {
3098
- * "ProductID": 2,
3099
- * "ProductName": "Chang",
3100
- * "UnitPrice": 19.0000,
3101
- * "Discontinued": true
3102
- * }
3103
- * ], {
3104
- * group: this.groups
3105
- * });
3106
- * }
2991
+ * ```html
2992
+ * <kendo-grid [data]="gridData" [group]="groups">
2993
+ * <kendo-grid-column field="ProductName">
2994
+ * <ng-template kendoGridGroupFooterTemplate let-aggregates let-field="field">
2995
+ * Count: {{aggregates[field].count}}
2996
+ * </ng-template>
2997
+ * </kendo-grid-column>
2998
+ * </kendo-grid>
3107
2999
  * ```
3108
3000
  */
3109
3001
  class GroupFooterTemplateDirective {
@@ -3127,48 +3019,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
3127
3019
  * ([more information and example]({% slug templates_columns_grid %}#toc-header-template)).
3128
3020
  * Helps to customize the table header cell for the column.
3129
3021
  * To define a header template, nest an `<ng-template>` tag with the
3130
- * [kendoGridHeaderTemplate]({% slug api_grid_headertemplatedirective %}) directive inside the `<kendo-grid-column>` tag.
3022
+ * `kendoGridHeaderTemplate` directive inside the `<kendo-grid-column>` tag.
3131
3023
  *
3132
3024
  * The template context is set to the current column and then the following additional fields are passed:
3133
3025
  * * `column`&mdash;Defines an instance of the [ColumnComponent]({% slug api_grid_columncomponent %}) option.
3134
3026
  * * `columnIndex`&mdash;Defines the current column index.
3135
3027
  *
3136
3028
  * @example
3137
- * ```ts-preview
3138
- *
3139
- * _@Component({
3140
- * selector: 'my-app',
3141
- * template: `
3142
- * <kendo-grid [data]="gridData">
3143
- * <kendo-grid-column field="ProductName">
3144
- * <ng-template kendoGridHeaderTemplate let-column let-columnIndex="columnIndex">
3145
- * {{column.field}}({{columnIndex}})
3146
- * </ng-template>
3147
- * </kendo-grid-column>
3148
- * <kendo-grid-column field="UnitPrice">
3149
- * <ng-template kendoGridHeaderTemplate let-column let-columnIndex="columnIndex">
3150
- * {{column.field}}({{columnIndex}})
3151
- * </ng-template>
3152
- * </kendo-grid-column>
3153
- * </kendo-grid>
3154
- * `
3155
- * })
3156
- *
3157
- * class AppComponent {
3158
- * public gridData = [{
3159
- * "ProductID": 1,
3160
- * "ProductName": "Chai",
3161
- * "UnitPrice": 18.0000,
3162
- * "Discontinued": false
3163
- * }, {
3164
- * "ProductID": 2,
3165
- * "ProductName": "Chang",
3166
- * "UnitPrice": 19.0000,
3167
- * "Discontinued": true
3168
- * }
3169
- * ];
3170
- * }
3171
- *
3029
+ * ```html
3030
+ * <kendo-grid [data]="gridData">
3031
+ * <kendo-grid-column field="ProductName">
3032
+ * <ng-template kendoGridHeaderTemplate let-column let-columnIndex="columnIndex">
3033
+ * {{column.field}}({{columnIndex}})
3034
+ * </ng-template>
3035
+ * </kendo-grid-column>
3036
+ * </kendo-grid>
3172
3037
  * ```
3173
3038
  */
3174
3039
  class HeaderTemplateDirective {
@@ -3202,41 +3067,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
3202
3067
  * refer to the article on [aggregates]({% slug groupable_grid_with_aggregates %}).
3203
3068
  *
3204
3069
  * @example
3205
- * ```ts-preview
3206
- *
3207
- * _@Component({
3208
- * selector: 'my-app',
3209
- * template: `
3210
- * <kendo-grid [data]="gridData" scrollable="none">
3211
- * <kendo-grid-column field="ProductName">
3212
- * <ng-template kendoGridFooterTemplate let-column let-columnIndex="columnIndex">
3213
- * {{column.field}}({{columnIndex}})
3214
- * </ng-template>
3215
- * </kendo-grid-column>
3216
- * <kendo-grid-column field="UnitPrice">
3217
- * <ng-template kendoGridFooterTemplate let-column let-columnIndex="columnIndex">
3218
- * {{column.field}}({{columnIndex}})
3219
- * </ng-template>
3220
- * </kendo-grid-column>
3221
- * </kendo-grid>
3222
- * `
3223
- * })
3224
- *
3225
- * class AppComponent {
3226
- * public gridData = [{
3227
- * "ProductID": 1,
3228
- * "ProductName": "Chai",
3229
- * "UnitPrice": 18.0000,
3230
- * "Discontinued": false
3231
- * }, {
3232
- * "ProductID": 2,
3233
- * "ProductName": "Chang",
3234
- * "UnitPrice": 19.0000,
3235
- * "Discontinued": true
3236
- * }
3237
- * ];
3238
- * }
3239
- *
3070
+ * ```html
3071
+ * <kendo-grid [data]="gridData" scrollable="none">
3072
+ * <kendo-grid-column field="ProductName">
3073
+ * <ng-template kendoGridFooterTemplate let-column let-columnIndex="columnIndex">
3074
+ * {{column.field}}({{columnIndex}})
3075
+ * </ng-template>
3076
+ * </kendo-grid-column>
3077
+ * </kendo-grid>
3240
3078
  * ```
3241
3079
  */
3242
3080
  class FooterTemplateDirective {
@@ -3259,40 +3097,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
3259
3097
  * Represents the template for the column menu in the Grid. Provides an option for
3260
3098
  * customizing the content of the column menu for all or for specific columns.
3261
3099
  * To define the content template, nest an `<ng-template>` tag with the
3262
- * `kendoGridColumnMenuTemplate` directive inside the `kendo-grid` or the `<kendo-grid-column>` component.
3100
+ * `kendoGridColumnMenuTemplate` directive inside the `<kendo-grid>` or the `<kendo-grid-column>` component.
3263
3101
  *
3264
3102
  * The template context is passes through the following fields:
3265
3103
  * - `service`&mdash;Represents the [ColumnMenuService]({% slug api_grid_columnmenuservice %}).
3266
3104
  * - `column`&mdash;Represents the Grid column.
3267
3105
  *
3268
3106
  * @example
3269
- * ```ts-preview
3270
- *
3271
- * _@Component({
3272
- * selector: 'my-app',
3273
- * template: `
3274
- * <kendo-grid [kendoGridBinding]="data" [sortable]="true" [columnMenu]="true">
3275
- * <ng-template kendoGridColumnMenuTemplate let-service="service">
3276
- * <kendo-grid-columnmenu-sort [service]="service">
3277
- * </kendo-grid-columnmenu-sort>
3278
- * </ng-template>
3279
- * <kendo-grid-column field="Field1" [width]="100">
3280
- * <ng-template kendoGridColumnMenuTemplate let-service="service">
3281
- * <kendo-grid-columnmenu-lock [service]="service">
3282
- * </kendo-grid-columnmenu-lock>
3283
- * <kendo-grid-columnmenu-sort [service]="service">
3284
- * </kendo-grid-columnmenu-sort>
3285
- * </ng-template>
3286
- * </kendo-grid-column>
3287
- * <kendo-grid-column field="Field2" [width]="100"></kendo-grid-column>
3288
- * </kendo-grid>
3289
- * `
3290
- * })
3291
- *
3292
- * class AppComponent {
3293
- * public data: any[] = [{ Field1: 'Foo', Field2: 'Bar' }, { Field1: 'Foo1', Field2: 'Bar1' }];
3294
- * }
3295
- *
3107
+ * ```html
3108
+ * <kendo-grid [kendoGridBinding]="data" [sortable]="true" [columnMenu]="true">
3109
+ * <ng-template kendoGridColumnMenuTemplate let-service="service">
3110
+ * <kendo-grid-columnmenu-sort [service]="service"></kendo-grid-columnmenu-sort>
3111
+ * </ng-template>
3112
+ * <kendo-grid-column field="Field1">
3113
+ * <ng-template kendoGridColumnMenuTemplate let-service="service">
3114
+ * <kendo-grid-columnmenu-lock [service]="service"></kendo-grid-columnmenu-lock>
3115
+ * <kendo-grid-columnmenu-sort [service]="service"></kendo-grid-columnmenu-sort>
3116
+ * </ng-template>
3117
+ * </kendo-grid-column>
3118
+ * <kendo-grid-column field="Field2"></kendo-grid-column>
3119
+ * </kendo-grid>
3296
3120
  * ```
3297
3121
  */
3298
3122
  class ColumnMenuTemplateDirective {
@@ -3347,6 +3171,10 @@ const isSpanColumn = column => column.isSpanColumn;
3347
3171
  * @hidden
3348
3172
  */
3349
3173
  const isCheckboxColumn = column => column.isCheckboxColumn;
3174
+ /**
3175
+ * @hidden
3176
+ */
3177
+ const isRowReorderColumn = column => column.isRowReorderColumn;
3350
3178
  const isColumnContainer = column => column.isColumnGroup || isSpanColumn(column);
3351
3179
  /**
3352
3180
  * The base class for the column components of the Grid.
@@ -3362,9 +3190,9 @@ class ColumnBase {
3362
3190
  */
3363
3191
  this.matchesMedia = true;
3364
3192
  /**
3365
- * The column index after reordering.
3193
+ * The column index after reordering. The `orderIndex` is a read-only property. Setting this field does not affect column order.
3366
3194
  *
3367
- * > `orderIndex` is a read-only property. Setting this field does not affect column order.
3195
+ * @default 0
3368
3196
  */
3369
3197
  this.orderIndex = 0;
3370
3198
  /**
@@ -3399,18 +3227,22 @@ class ColumnBase {
3399
3227
  this.sticky = false;
3400
3228
  /**
3401
3229
  * Specifies if the column can be locked or unlocked from the column menu or by reordering the columns.
3230
+ * @default true
3402
3231
  */
3403
3232
  this.lockable = true;
3404
3233
  /**
3405
3234
  * Specifies if the column can be stuck or unstuck from the column menu.
3235
+ * @default true
3406
3236
  */
3407
3237
  this.stickable = true;
3408
3238
  /**
3409
3239
  * Specifies if the column menu will be shown for the column.
3240
+ * @default true
3410
3241
  */
3411
3242
  this.columnMenu = true;
3412
3243
  /**
3413
3244
  * Specifies if the column will be included in the column-chooser list.
3245
+ * @default true
3414
3246
  */
3415
3247
  this.includeInChooser = true;
3416
3248
  /**
@@ -3458,44 +3290,6 @@ class ColumnBase {
3458
3290
  *
3459
3291
  * @default false
3460
3292
  *
3461
- * @example
3462
- * ```ts
3463
- * _@Component({
3464
- * selector: 'my-app',
3465
- * template: `
3466
- * <kendo-grid [data]="gridData" [scrollable]="scrollable" style="height: 200px">
3467
- * <kendo-grid-column field="ProductID" title="Product ID" [width]="120" [locked]="true">
3468
- * </kendo-grid-column>
3469
- * <kendo-grid-column field="ProductName" title="Product Name" [width]="200">
3470
- * </kendo-grid-column>
3471
- * <kendo-grid-column field="UnitPrice" title="Unit Price" [width]="230">
3472
- * </kendo-grid-column>
3473
- * </kendo-grid>
3474
- * `
3475
- * })
3476
- *
3477
- * class AppComponent {
3478
- * public gridData: any[];
3479
- *
3480
- * constructor() {
3481
- * this.gridData = products;
3482
- * }
3483
- * }
3484
- *
3485
- * const products = [{
3486
- * "ProductID": 1,
3487
- * "ProductName": "Chai",
3488
- * "UnitPrice": 18.0000,
3489
- * "Discontinued": true
3490
- * }, {
3491
- * "ProductID": 2,
3492
- * "ProductName": "Chang",
3493
- * "UnitPrice": 19.0000,
3494
- * "Discontinued": false
3495
- * }
3496
- * ];
3497
- *
3498
- * ```
3499
3293
  */
3500
3294
  set locked(value) {
3501
3295
  this._locked = value;
@@ -4355,64 +4149,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
4355
4149
  * To define the detail template, nest an `<ng-template>` tag with the `kendoGridDetailTemplate` directive inside a `<kendo-grid>` tag.
4356
4150
  *
4357
4151
  * @example
4358
- * ```ts-preview
4359
- *
4360
- * _@Component({
4361
- * selector: 'my-app',
4362
- * template: `
4363
- * <kendo-grid
4364
- * [data]="data"
4365
- * selectable="true"
4366
- * style="height: 160px"
4367
- * >
4368
- * <kendo-grid-column field="ProductID"></kendo-grid-column>
4369
- * <kendo-grid-column field="ProductName"></kendo-grid-column>
4370
- * <kendo-grid-column field="UnitPrice"></kendo-grid-column>
4371
- * <ng-template kendoGridDetailTemplate let-dataItem>
4372
- * <div *ngIf="dataItem.Category">
4373
- * <header>{{dataItem.Category?.CategoryName}}</header>
4374
- * <span>{{dataItem.Category?.Description}}</span>
4375
- * </div>
4376
- * </ng-template>
4377
- * </kendo-grid>
4378
- * `
4379
- * })
4380
- *
4381
- * class AppComponent {
4382
- * public data = [{
4383
- * "ProductID": 1,
4384
- * "ProductName": "Chai",
4385
- * "UnitPrice": 18.0000,
4386
- * "Discontinued": false,
4387
- * "Category": {
4388
- * "CategoryID": 1,
4389
- * "CategoryName": "Beverages",
4390
- * "Description": "Soft drinks, coffees, teas, beers, and ales"
4391
- * }
4392
- * }, {
4393
- * "ProductID": 2,
4394
- * "ProductName": "Chang",
4395
- * "UnitPrice": 19.0000,
4396
- * "Discontinued": false,
4397
- * "Category": {
4398
- * "CategoryID": 1,
4399
- * "CategoryName": "Beverages",
4400
- * "Description": "Soft drinks, coffees, teas, beers, and ales"
4401
- * }
4402
- * }, {
4403
- * "ProductID": 3,
4404
- * "ProductName": "Aniseed Syrup",
4405
- * "UnitPrice": 10.0000,
4406
- * "Discontinued": false,
4407
- * "Category": {
4408
- * "CategoryID": 2,
4409
- * "CategoryName": "Condiments",
4410
- * "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
4411
- * }
4412
- * }];
4413
- *
4414
- * }
4415
- *
4152
+ * ```html
4153
+ * <kendo-grid [data]="data" selectable="true" style="height: 160px">
4154
+ * <kendo-grid-column field="ProductName"></kendo-grid-column>
4155
+ * <ng-template kendoGridDetailTemplate let-dataItem>
4156
+ * <div *ngIf="dataItem.Category">
4157
+ * <header>{{dataItem.Category?.CategoryName}}</header>
4158
+ * span>{{dataItem.Category?.Description}}</span>
4159
+ * </div>
4160
+ * </ng-template>
4161
+ * </kendo-grid>
4416
4162
  * ```
4417
4163
  *
4418
4164
  */
@@ -4972,6 +4718,7 @@ class Selection {
4972
4718
  this.cd = cd;
4973
4719
  /**
4974
4720
  * Defines the collection that will store the selected item keys.
4721
+ * @default []
4975
4722
  */
4976
4723
  this.selectedKeys = [];
4977
4724
  /**
@@ -5359,66 +5106,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
5359
5106
 
5360
5107
  /**
5361
5108
  * Represents the no-records template of the Grid. Provides an option to customize the
5362
- * appearance of the item that is displayed when no data is present. To define the no-records template,
5363
- * nest an `<ng-template>` tag with the `kendoGridNoRecordsTemplate` directive inside `<kendo-grid>`.
5364
- *
5365
- * > When the locked columns of the Grid are in use, the template is displayed in the non-locked part of the content.
5109
+ * appearance of the item that is displayed when no data is present.
5110
+ * To define the no-records template, nest an `<ng-template>` tag with the `kendoGridNoRecordsTemplate`
5111
+ * directive inside `<kendo-grid>` [see example](slug:norecordtemplate_grid).
5366
5112
  *
5367
5113
  * @example
5368
- * ```ts-preview
5369
- *
5370
- * _@Component({
5371
- * selector: 'my-app',
5372
- * template: `
5373
- * <kendo-grid [data]="data">
5374
- * <kendo-grid-column field="ProductID"></kendo-grid-column>
5375
- * <kendo-grid-column field="ProductName"></kendo-grid-column>
5376
- * <kendo-grid-column field="UnitPrice"></kendo-grid-column>
5377
- * <ng-template kendoGridNoRecordsTemplate>
5378
- * There are not products. <a href="#" (click)="refresh()">Click here to refresh</a>.
5379
- * </ng-template>
5380
- * </kendo-grid>
5381
- * `
5382
- * })
5383
- *
5384
- * class AppComponent {
5385
- * public data = [];
5386
- * public refresh() {
5387
- * this.data = [{
5388
- * "ProductID": 1,
5389
- * "ProductName": "Chai",
5390
- * "UnitPrice": 18.0000,
5391
- * "Discontinued": false,
5392
- * "Category": {
5393
- * "CategoryID": 1,
5394
- * "CategoryName": "Beverages",
5395
- * "Description": "Soft drinks, coffees, teas, beers, and ales"
5396
- * }
5397
- * }, {
5398
- * "ProductID": 2,
5399
- * "ProductName": "Chang",
5400
- * "UnitPrice": 19.0000,
5401
- * "Discontinued": false,
5402
- * "Category": {
5403
- * "CategoryID": 1,
5404
- * "CategoryName": "Beverages",
5405
- * "Description": "Soft drinks, coffees, teas, beers, and ales"
5406
- * }
5407
- * }, {
5408
- * "ProductID": 3,
5409
- * "ProductName": "Aniseed Syrup",
5410
- * "UnitPrice": 10.0000,
5411
- * "Discontinued": false,
5412
- * "Category": {
5413
- * "CategoryID": 2,
5414
- * "CategoryName": "Condiments",
5415
- * "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
5416
- * }
5417
- * }];
5418
- *
5419
- * }
5420
- * }
5421
- *
5114
+ * ```html
5115
+ * <kendo-grid [data]="data">
5116
+ * <ng-template kendoGridNoRecordsTemplate>
5117
+ * There are not products. <a href="#" (click)="refresh()">Click here to refresh</a>.
5118
+ * </ng-template>
5119
+ * <kendo-grid-column field="ProductID"></kendo-grid-column>
5120
+ * <kendo-grid-column field="ProductName"></kendo-grid-column>
5121
+ * </kendo-grid>
5422
5122
  * ```
5423
5123
  */
5424
5124
  class NoRecordsTemplateDirective {
@@ -5529,7 +5229,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
5529
5229
 
5530
5230
  /**
5531
5231
  * Represents the pager template which helps to customize the pager appearance in the Grid. To define a pager
5532
- * template, nest an `<ng-template>` tag with the `kendoPagerTemplate` directive inside `<kendo-grid>`.
5232
+ * template, nest an `<ng-template>` tag with the `kendoPagerTemplate` directive inside `<kendo-grid>` tag
5233
+ * [see example](slug:pager_template_grid).
5533
5234
  *
5534
5235
  * The template context provides the following fields:
5535
5236
  * * `currentPage`&mdash;The index of the displayed page.
@@ -5537,53 +5238,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
5537
5238
  * * `skip`&mdash;The current skip value.
5538
5239
  * * `total`&mdash;The total number of records.
5539
5240
  * * `totalPages`&mdash;The total number of available pages.
5540
- * * Needs to be provided as an input to inner pager components used within the template when the Grid is navigable.
5541
5241
  *
5542
5242
  * @example
5543
- * ```ts-preview
5544
- *
5545
- * _@Component({
5546
- * selector: 'my-app',
5547
- * template: `
5548
- * <kendo-grid
5549
- * [kendoGridBinding]="gridData"
5550
- * [pageSize]="1"
5551
- * [pageable]="true"
5552
- * >
5553
- * <kendo-grid-column field="ProductID" title="ID" [width]="40">
5554
- * </kendo-grid-column>
5555
- * <kendo-grid-column field="ProductName" title="Name" [width]="250">
5556
- * </kendo-grid-column>
5557
- * <kendo-grid-column field="UnitPrice" title="Price" [width]="80" format="{0:c}">
5558
- * </kendo-grid-column>
5559
- *
5560
- * <ng-template kendoPagerTemplate let-totalPages="totalPages" let-currentPage="currentPage">
5561
- * <kendo-pager-prev-buttons></kendo-pager-prev-buttons>
5562
- * <kendo-pager-numeric-buttons [buttonCount]="10"></kendo-pager-numeric-buttons>
5563
- * <kendo-pager-next-buttons></kendo-pager-next-buttons>
5564
- * <kendo-pager-info></kendo-pager-info>
5565
- * Current page: {{currentPage}}
5566
- * </ng-template>
5567
- *
5568
- * </kendo-grid>
5569
- * `
5570
- * })
5571
- *
5572
- * class AppComponent {
5573
- * public gridData = [{
5574
- * "ProductID": 1,
5575
- * "ProductName": "Chai",
5576
- * "UnitPrice": 18.0000,
5577
- * "Discontinued": false
5578
- * }, {
5579
- * "ProductID": 2,
5580
- * "ProductName": "Chang",
5581
- * "UnitPrice": 19.0000,
5582
- * "Discontinued": true
5583
- * }
5584
- * ];
5585
- * }
5586
- *
5243
+ * ```html
5244
+ * <kendo-grid ... [pageable]="true">
5245
+ * <ng-template kendoPagerTemplate let-totalPages="totalPages" let-currentPage="currentPage">
5246
+ * <kendo-pager-prev-buttons></kendo-pager-prev-buttons>
5247
+ * <kendo-pager-next-buttons></kendo-pager-next-buttons>
5248
+ * <kendo-pager-info></kendo-pager-info>
5249
+ * Current page: {{currentPage}}
5250
+ * </ng-template>
5251
+ * <kendo-grid-column field="ProductID"></kendo-grid-column>
5252
+ * <kendo-grid-column field="ProductName"></kendo-grid-column>
5253
+ * </kendo-grid>
5587
5254
  * ```
5588
5255
  */
5589
5256
  class PagerTemplateDirective {
@@ -5727,56 +5394,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
5727
5394
  * - `position`&mdash;The position at which the toolbar template is rendered. The possible values are "top" and "bottom".
5728
5395
  *
5729
5396
  * @example
5730
- * ```ts-preview
5731
- *
5732
- * _@Component({
5733
- * selector: 'my-app',
5734
- * template: `
5735
- * <div class="example-config">
5736
- * <input type="radio" id="top" name="position" value="top" checked (click)="positionChange($event)"/>
5737
- * <label class="k-radio-label" for="top">Top</label><br/>
5738
- * <input type="radio" id="bottom" name="position" value="bottom" (click)="positionChange($event)"/>
5739
- * <label class="k-radio-label" for="bottom">Bottom</label><br/>
5740
- * <input type="radio" id="both" name="position" value="both" (click)="positionChange($event)"/>
5741
- * <label class="k-radio-label" for="both">Both</label><br/>
5742
- * </div>
5743
- * <kendo-grid [data]="gridData" style="height: 200px">
5744
- * <ng-template kendoGridToolbarTemplate [position]="position" let-position="position">
5745
- * <button (click)="onClick()">Custom action</button>
5746
- * </ng-template>
5747
- * <kendo-grid-column field="ProductName">
5748
- * </kendo-grid-column>
5749
- * <kendo-grid-column field="UnitPrice">
5750
- * </kendo-grid-column>
5751
- * </kendo-grid>
5752
- * `
5753
- * })
5754
- *
5755
- * class AppComponent {
5756
- * public position: 'top' | 'bottom' | 'both' = 'top';
5757
- *
5758
- * public gridData = [{
5759
- * "ProductID": 1,
5760
- * "ProductName": "Chai",
5761
- * "UnitPrice": 18.0000,
5762
- * "Discontinued": false
5763
- * }, {
5764
- * "ProductID": 2,
5765
- * "ProductName": "Chang",
5766
- * "UnitPrice": 19.0000,
5767
- * "Discontinued": true
5768
- * }
5769
- * ];
5770
- *
5771
- * public onClick(): void {
5772
- * console.log("button was clicked");
5773
- * }
5774
- *
5775
- * public positionChange({ target }): void {
5776
- * this.position = target.value;
5777
- * }
5778
- * }
5779
- *
5397
+ * ```html
5398
+ * <kendo-grid [data]="gridData" style="height: 200px">
5399
+ * <ng-template kendoGridToolbarTemplate [position]="position" let-position="position">
5400
+ * <button (click)="onClick()">Custom action</button>
5401
+ * </ng-template>
5402
+ * <kendo-grid-column field="ProductName">
5403
+ * </kendo-grid-column>
5404
+ * </kendo-grid>
5780
5405
  * ```
5781
5406
  */
5782
5407
  class ToolbarTemplateDirective {
@@ -5785,13 +5410,9 @@ class ToolbarTemplateDirective {
5785
5410
  this._position = 'top';
5786
5411
  }
5787
5412
  /**
5788
- * The position of the toolbar ([see example]({% slug toolbartemplate_grid %})).
5413
+ * The position of the toolbar ([see example]({% slug toolbartemplate_grid %}#toc-setting-the-toolbar-position)).
5789
5414
  *
5790
- * The possible values are:
5791
- * - `top`&mdash;Positions the toolbar above the group panel or header.
5792
- * - `bottom`&mdash;Positions the toolbar below the pager.
5793
- * - `both`&mdash;Displays two toolbar instances. Positions the first one above
5794
- * the group panel or header and the second one below the pager.
5415
+ * @default 'top'
5795
5416
  */
5796
5417
  set position(position) {
5797
5418
  this._position = position;
@@ -6075,7 +5696,7 @@ class PopupCloseEvent extends PreventableEvent {
6075
5696
  const DEFAULT_POPUP_CLASS = 'k-grid-filter-popup';
6076
5697
  /**
6077
5698
  * The service that is used for the popups of the filter and column menus
6078
- * ([see example]({% slug filter_menu %}#toc-custom-filter-row-components)#toc-filter-menu-with-popup).
5699
+ * ([see example]({% slug filter_menu %}#toc-filter-menu-with-popup)).
6079
5700
  */
6080
5701
  class SinglePopupService {
6081
5702
  constructor(popupService, renderer, ngZone, scrollSyncService, localization) {
@@ -6192,17 +5813,17 @@ const append = (element) => {
6192
5813
  /**
6193
5814
  * @hidden
6194
5815
  */
6195
- const getDocument = element => element.ownerDocument.documentElement;
5816
+ const getDocument$1 = element => element.ownerDocument.documentElement;
6196
5817
  /**
6197
5818
  * @hidden
6198
5819
  */
6199
- const getWindow = element => element.ownerDocument.defaultView;
5820
+ const getWindow$1 = element => element.ownerDocument.defaultView;
6200
5821
  /**
6201
5822
  * @hidden
6202
5823
  */
6203
5824
  const offset = element => {
6204
- const { clientTop, clientLeft } = getDocument(element);
6205
- const { pageYOffset, pageXOffset } = getWindow(element);
5825
+ const { clientTop, clientLeft } = getDocument$1(element);
5826
+ const { pageYOffset, pageXOffset } = getWindow$1(element);
6206
5827
  const { top, left } = element.getBoundingClientRect();
6207
5828
  return {
6208
5829
  top: top + pageYOffset - clientTop,
@@ -6617,17 +6238,20 @@ class ColumnStickyChangeEvent {
6617
6238
  /**
6618
6239
  * Represents the virtual scrolling cell template of the Grid while loading new data. Provides an option to customize the
6619
6240
  * appearance of the indicator that is displayed while new data is loading. To define the loading cell template,
6620
- * nest an `<ng-template>` tag with the `kendoGridCellLoadingTemplate` directive inside `<kendo-grid>` ([see example]({% slug virtualscrolling_grid %}#toc-custom-loading-skeleton)).
6241
+ * nest an `<ng-template>` tag with the `kendoGridCellLoadingTemplate` directive inside `<kendo-grid>` tag [see example]({% slug virtualscrolling_grid %}#toc-custom-loading-skeleton).
6621
6242
  *
6622
- * The template context is set to the current column, and utilizes the `let-x` syntax&mdash;for example, `let-column`.
6243
+ *
6244
+ * The template context is set to the current column and the following additional field is passed:
6245
+ *
6246
+ * - `column`&mdash;The current column instance. Represents the default context that will be assigned to any template variable which utilizes the `let-x` syntax (for example `let-column`).
6623
6247
  *
6624
6248
  * @example
6625
- * ```ts-no-run
6626
- * <kendo-grid [data]="data" scrollable="virtual" [rowHeight]="36">
6627
- * <ng-template kendoGridCellLoadingTemplate let-column>
6628
- * ...
6629
- * </ng-template>
6630
- * </kendo-grid>
6249
+ * ```html
6250
+ * <kendo-grid ... scrollable="virtual" [rowHeight]="36" [height]="450">
6251
+ * <ng-template kendoGridCellLoadingTemplate let-column>
6252
+ * ...
6253
+ * </ng-template>
6254
+ * </kendo-grid>
6631
6255
  * ```
6632
6256
  */
6633
6257
  class CellLoadingTemplateDirective {
@@ -6649,7 +6273,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
6649
6273
  /**
6650
6274
  * Creates a loading template that overrides the default loading indicator of the Grid Component.
6651
6275
  * To define a loading template, nest an `<ng-template>` tag with the `kendoGridLoadingTemplate` directive inside the `<kendo-grid>` tag
6652
- * [see example]({% slug binding_grid %}#toc-loading-template).
6276
+ * ([see example](slug:loadingtemplate_grid)).
6653
6277
  */
6654
6278
  class LoadingTemplateDirective {
6655
6279
  constructor(templateRef) {
@@ -6665,6 +6289,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
6665
6289
  }]
6666
6290
  }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
6667
6291
 
6292
+ /**
6293
+ * @hidden
6294
+ */
6668
6295
  class SizingOptionsService {
6669
6296
  constructor() {
6670
6297
  this.changes = new Subject();
@@ -6676,6 +6303,315 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
6676
6303
  type: Injectable
6677
6304
  }] });
6678
6305
 
6306
+ /**
6307
+ * @hidden
6308
+ */
6309
+ const isNextSibling = (dropTarget, dragTarget) => dropTarget === dragTarget.nextElementSibling;
6310
+ /**
6311
+ * @hidden
6312
+ */
6313
+ const isPreviousSibling = (dropTarget, dragTarget) => dropTarget === dragTarget.previousElementSibling;
6314
+ /**
6315
+ * @hidden
6316
+ */
6317
+ const isDifferentParent = (dropTarget, dragTarget) => dropTarget?.parentElement !== dragTarget?.parentElement;
6318
+ /**
6319
+ * @hidden
6320
+ */
6321
+ function getOffset(element) {
6322
+ const { clientTop, clientLeft } = getDocument(element);
6323
+ const { pageYOffset, pageXOffset } = getWindow(element);
6324
+ const { top, left } = element.getBoundingClientRect();
6325
+ return {
6326
+ top: top + pageYOffset - clientTop,
6327
+ left: left + pageXOffset - clientLeft
6328
+ };
6329
+ }
6330
+ ;
6331
+ /**
6332
+ * @hidden
6333
+ */
6334
+ const hintIcons = {
6335
+ forbidden: 'cancel',
6336
+ before: 'insert-middle',
6337
+ after: 'insert-middle'
6338
+ };
6339
+ /**
6340
+ * @hidden
6341
+ */
6342
+ const hintSVGIcons = {
6343
+ forbidden: cancelIcon,
6344
+ before: insertMiddleIcon,
6345
+ after: insertMiddleIcon
6346
+ };
6347
+ /**
6348
+ * @hidden
6349
+ */
6350
+ const dropPosition = {
6351
+ forbidden: 'forbidden',
6352
+ before: 'before',
6353
+ after: 'after'
6354
+ };
6355
+ /**
6356
+ * @hidden
6357
+ */
6358
+ const hintStyles = {
6359
+ zIndex: '20000',
6360
+ display: 'flex',
6361
+ position: 'fixed'
6362
+ };
6363
+ /**
6364
+ * @hidden
6365
+ */
6366
+ const hintClasses = ['k-drag-clue', 'k-reorder-clue'];
6367
+ /**
6368
+ * @hidden
6369
+ */
6370
+ const dropIndicatorStyles = {
6371
+ zIndex: '19000',
6372
+ position: 'absolute'
6373
+ };
6374
+ /**
6375
+ * @hidden
6376
+ */
6377
+ const dropIndicatorClasses = ['k-drop-hint', 'k-drop-hint-h'];
6378
+ /**
6379
+ * @hidden
6380
+ */
6381
+ const defaultSelectors = {
6382
+ handle: '.k-table-td.k-drag-cell',
6383
+ dragTarget: '.k-master-row',
6384
+ dropTarget: '.k-master-row'
6385
+ };
6386
+ const getDocument = element => element?.ownerDocument.documentElement;
6387
+ const getWindow = element => element?.ownerDocument.defaultView;
6388
+
6389
+ /**
6390
+ * @hidden
6391
+ */
6392
+ class RowReorderService {
6393
+ constructor(renderer) {
6394
+ this.renderer = renderer;
6395
+ this.hintElement = null;
6396
+ this.defaultSelectors = defaultSelectors;
6397
+ this.hintText = '';
6398
+ this.lastDropPosition = dropPosition.forbidden;
6399
+ this.dragTarget = null;
6400
+ this.dropTarget = null;
6401
+ this.rowReorder = new EventEmitter();
6402
+ }
6403
+ press(ev) {
6404
+ this.dragTarget = ev.dragTarget;
6405
+ this.offsetY = ev.dragEvent.offsetY;
6406
+ }
6407
+ dragStart() {
6408
+ this.createDropIndicator();
6409
+ }
6410
+ drag(ev) {
6411
+ if (isPresent$1(ev.hintElement) && !isPresent$1(this.hintElement)) {
6412
+ this.hintElement = ev.hintElement;
6413
+ this.decorateHint();
6414
+ }
6415
+ const position = {
6416
+ x: ev.dragEvent.clientX,
6417
+ y: ev.dragEvent.clientY - this.offsetY
6418
+ };
6419
+ if (isPresent$1(this.hintElement)) {
6420
+ this.renderer.setStyle(this.hintElement, 'left', `${position.x}px`);
6421
+ this.renderer.setStyle(this.hintElement, 'top', `${position.y}px`);
6422
+ }
6423
+ this.positionDropIndicator(ev);
6424
+ }
6425
+ dragEnter(ev) {
6426
+ this.dropTarget = ev.dropTarget;
6427
+ }
6428
+ dragLeave() {
6429
+ this.dropTarget = null;
6430
+ this.hide();
6431
+ }
6432
+ dragEnd() {
6433
+ this.destroyDropIndicator();
6434
+ this.dragTarget = null;
6435
+ this.dropTarget = null;
6436
+ this.hintElement = null;
6437
+ }
6438
+ drop(ev) {
6439
+ this.destroyDropIndicator();
6440
+ const rowReorderArgs = this.rowReorderArgs(this.dragTarget, this.dropTarget, ev.dragData);
6441
+ this.rowReorder.emit(rowReorderArgs);
6442
+ }
6443
+ reorderRows(ev, collection) {
6444
+ if (this.lastDropPosition === dropPosition.forbidden) {
6445
+ return;
6446
+ }
6447
+ ;
6448
+ const { draggedRows, dropTargetRow } = ev;
6449
+ const draggedDataItem = draggedRows[0].dataItem;
6450
+ const dropTargetDataItem = dropTargetRow.dataItem;
6451
+ const draggedItemIndex = collection.indexOf(draggedDataItem);
6452
+ const dropTargetIndex = collection.indexOf(dropTargetDataItem);
6453
+ const idxToAdd = this.calculateIndexToAdd(draggedItemIndex, dropTargetIndex);
6454
+ collection.splice(draggedItemIndex, 1);
6455
+ collection.splice(idxToAdd, 0, draggedDataItem);
6456
+ }
6457
+ get hintIcon() {
6458
+ return hintIcons[this.lastDropPosition];
6459
+ }
6460
+ get hintSVGIcon() {
6461
+ return hintSVGIcons[this.lastDropPosition];
6462
+ }
6463
+ getDefaultHintText(columns, data) {
6464
+ let hintText = '';
6465
+ const columnFieldsArray = columns
6466
+ .toArray()
6467
+ .filter(column => !column.hidden && isPresent$1(column.field))
6468
+ .map(column => column.field);
6469
+ const draggedDragRow = this.getDragRowPerElement(this.dragTarget, data);
6470
+ const draggedDataItem = draggedDragRow?.dataItem;
6471
+ isPresent$1(draggedDataItem) && columnFieldsArray.forEach(column => {
6472
+ const columnValue = draggedDataItem[column];
6473
+ isPresent$1(columnValue) ? hintText += `${columnValue} ` : null;
6474
+ });
6475
+ return hintText.trim();
6476
+ }
6477
+ rowReorderArgs(dragRow, dropRow, data) {
6478
+ const dragRowData = this.getDragRowPerElement(dragRow, data);
6479
+ const dropRowData = this.getDragRowPerElement(dropRow, data);
6480
+ return {
6481
+ draggedRows: [dragRowData],
6482
+ dropTargetRow: dropRowData,
6483
+ dropPosition: this.lastDropPosition
6484
+ };
6485
+ }
6486
+ getDragRowPerElement(row, data) {
6487
+ let rowIndex = row?.getAttribute('data-kendo-grid-item-index');
6488
+ rowIndex = rowIndex ? parseInt(rowIndex, 10) : -1;
6489
+ const skip = this.skip || 0;
6490
+ const dataItem = rowIndex === -1 ? null : data[rowIndex - skip];
6491
+ return {
6492
+ dataItem,
6493
+ rowIndex,
6494
+ element: row
6495
+ };
6496
+ }
6497
+ createDropIndicator() {
6498
+ if (!isDocumentAvailable()) {
6499
+ return;
6500
+ }
6501
+ this.dropIndicator = document.createElement('div');
6502
+ this.decorateDropIndicator();
6503
+ this.dropIndicator.innerHTML = `
6504
+ <div class="k-drop-hint-start"></div>
6505
+ <div class="k-drop-hint-line"></div>
6506
+ `;
6507
+ document.body.appendChild(this.dropIndicator);
6508
+ this.hide();
6509
+ }
6510
+ destroyDropIndicator() {
6511
+ if (!isDocumentAvailable()) {
6512
+ return;
6513
+ }
6514
+ ;
6515
+ if (this.dropIndicator && this.dropIndicator.parentElement) {
6516
+ document.body.removeChild(this.dropIndicator);
6517
+ this.dropIndicator = null;
6518
+ }
6519
+ }
6520
+ decorateHint() {
6521
+ hintClasses.forEach(className => this.renderer.addClass(this.hintElement, className));
6522
+ Object.keys(hintStyles)
6523
+ .forEach(style => this.renderer.setStyle(this.hintElement, style, hintStyles[style]));
6524
+ }
6525
+ positionDropIndicator(ev) {
6526
+ this.lastDropPosition = this.getDropPosition(ev.dragEvent);
6527
+ this.updateDropIndicatorPosition();
6528
+ }
6529
+ calculateIndexToAdd(dragIndex, dropIndex) {
6530
+ if (dragIndex > dropIndex && this.lastDropPosition === dropPosition.after) {
6531
+ return dropIndex + 1;
6532
+ }
6533
+ else if (dragIndex > dropIndex && this.lastDropPosition === dropPosition.before) {
6534
+ return dropIndex;
6535
+ }
6536
+ else if (dragIndex < dropIndex && this.lastDropPosition === dropPosition.after) {
6537
+ return dropIndex;
6538
+ }
6539
+ else if (dragIndex < dropIndex && this.lastDropPosition === dropPosition.before) {
6540
+ return dropIndex - 1;
6541
+ }
6542
+ }
6543
+ decorateDropIndicator() {
6544
+ dropIndicatorClasses.forEach(className => this.renderer.addClass(this.dropIndicator, className));
6545
+ Object.keys(dropIndicatorStyles)
6546
+ .forEach(style => this.renderer.setStyle(this.dropIndicator, style, dropIndicatorStyles[style]));
6547
+ }
6548
+ ;
6549
+ getDropPosition(e) {
6550
+ if (this.dropTarget === this.dragTarget || !isPresent$1(this.dropTarget)) {
6551
+ return dropPosition.forbidden;
6552
+ }
6553
+ ;
6554
+ if (isDifferentParent(this.dropTarget, this.dragTarget)) {
6555
+ return dropPosition.forbidden;
6556
+ }
6557
+ ;
6558
+ const itemViewPortCoords = this.dropTarget.getBoundingClientRect();
6559
+ const itemDivisionsCount = 2;
6560
+ const itemDivisionHeight = itemViewPortCoords.height / itemDivisionsCount;
6561
+ const pointerPosition = e.clientY;
6562
+ const itemTop = itemViewPortCoords.top;
6563
+ let currentDropPosition = null;
6564
+ if (pointerPosition < itemTop + itemDivisionHeight) {
6565
+ currentDropPosition = dropPosition.before;
6566
+ }
6567
+ else if (pointerPosition >= itemTop + itemViewPortCoords.height - itemDivisionHeight) {
6568
+ currentDropPosition = dropPosition.after;
6569
+ }
6570
+ if (currentDropPosition === dropPosition.before && isNextSibling(this.dropTarget, this.dragTarget)) {
6571
+ currentDropPosition = dropPosition.forbidden;
6572
+ }
6573
+ else if (currentDropPosition === dropPosition.after && isPreviousSibling(this.dropTarget, this.dragTarget)) {
6574
+ currentDropPosition = dropPosition.forbidden;
6575
+ }
6576
+ return currentDropPosition;
6577
+ }
6578
+ updateDropIndicatorPosition() {
6579
+ if (this.shouldHideDropIndicator() || !this.dropTarget) {
6580
+ this.hide();
6581
+ return;
6582
+ }
6583
+ this.show();
6584
+ const destinationItemOffset = getOffset(this.dropTarget);
6585
+ let indicatorOffsetTop = destinationItemOffset.top;
6586
+ const indicatorOffsetLeft = destinationItemOffset.left + this.dropIndicator.offsetWidth / 2;
6587
+ if (this.lastDropPosition === dropPosition.after) {
6588
+ indicatorOffsetTop += this.dropTarget.offsetHeight;
6589
+ }
6590
+ this.renderer.setStyle(this.dropIndicator, 'left', `${indicatorOffsetLeft}px`);
6591
+ this.renderer.setStyle(this.dropIndicator, 'top', `${indicatorOffsetTop}px`);
6592
+ }
6593
+ shouldHideDropIndicator() {
6594
+ return this.lastDropPosition === dropPosition.forbidden;
6595
+ }
6596
+ hide() {
6597
+ if (isPresent$1(this.dropIndicator)) {
6598
+ this.dropIndicator.style.display = 'none';
6599
+ }
6600
+ }
6601
+ show() {
6602
+ if (isPresent$1(this.dropIndicator)) {
6603
+ this.dropIndicator.style.display = '';
6604
+ }
6605
+ }
6606
+ }
6607
+ RowReorderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RowReorderService, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Injectable });
6608
+ RowReorderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RowReorderService });
6609
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RowReorderService, decorators: [{
6610
+ type: Injectable
6611
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }]; }, propDecorators: { rowReorder: [{
6612
+ type: Output
6613
+ }] } });
6614
+
6679
6615
  /**
6680
6616
  * @hidden
6681
6617
  */
@@ -10425,7 +10361,7 @@ DateFilterMenuInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12
10425
10361
  </kendo-datepicker-messages>
10426
10362
  </kendo-datepicker>
10427
10363
  </kendo-grid-filter-menu-input-wrapper>
10428
- `, isInline: true, components: [{ type: FilterMenuInputWrapperComponent, selector: "kendo-grid-filter-menu-input-wrapper", inputs: ["filterService", "isFirstDropDown", "menuTabbingService", "currentFilter"] }, { type: i5$1.DatePickerComponent, selector: "kendo-datepicker", inputs: ["focusableId", "cellTemplate", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate", "navigationItemTemplate", "activeView", "bottomView", "topView", "calendarType", "animateCalendarNavigation", "disabled", "readonly", "readOnlyInput", "popupSettings", "navigation", "min", "max", "incompleteDateValidation", "focusedDate", "value", "format", "twoDigitYearMax", "formatPlaceholder", "placeholder", "tabindex", "tabIndex", "disabledDates", "title", "subtitle", "rangeValidation", "disabledDatesValidation", "weekNumber", "size", "rounded", "fillMode", "adaptiveMode"], outputs: ["valueChange", "focus", "blur", "open", "close"], exportAs: ["kendo-datepicker"] }, { type: i5$1.DatePickerCustomMessagesComponent, selector: "kendo-datepicker-messages" }], directives: [{ type: FilterInputDirective, selector: "[kendoFilterInput]", inputs: ["filterDelay", "columnLabel", "value"] }] });
10364
+ `, isInline: true, components: [{ type: FilterMenuInputWrapperComponent, selector: "kendo-grid-filter-menu-input-wrapper", inputs: ["filterService", "isFirstDropDown", "menuTabbingService", "currentFilter"] }, { type: i4$3.DatePickerComponent, selector: "kendo-datepicker", inputs: ["focusableId", "cellTemplate", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate", "navigationItemTemplate", "activeView", "bottomView", "topView", "calendarType", "animateCalendarNavigation", "disabled", "readonly", "readOnlyInput", "popupSettings", "navigation", "min", "max", "incompleteDateValidation", "focusedDate", "value", "format", "twoDigitYearMax", "formatPlaceholder", "placeholder", "tabindex", "tabIndex", "disabledDates", "title", "subtitle", "rangeValidation", "disabledDatesValidation", "weekNumber", "size", "rounded", "fillMode", "adaptiveMode"], outputs: ["valueChange", "focus", "blur", "open", "close"], exportAs: ["kendo-datepicker"] }, { type: i4$3.DatePickerCustomMessagesComponent, selector: "kendo-datepicker-messages" }], directives: [{ type: FilterInputDirective, selector: "[kendoFilterInput]", inputs: ["filterDelay", "columnLabel", "value"] }] });
10429
10365
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateFilterMenuInputComponent, decorators: [{
10430
10366
  type: Component,
10431
10367
  args: [{
@@ -11329,27 +11265,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
11329
11265
  * [ColumnMenuTemplate]({% slug api_grid_columnmenutemplatedirective %}) directive.
11330
11266
  *
11331
11267
  * @example
11332
- * ```ts-preview
11333
- *
11334
- * _@Component({
11335
- * selector: 'my-app',
11336
- * template: `
11337
- * <kendo-grid [data]="data" [columnMenu]="true">
11338
- * <ng-template kendoGridColumnMenuTemplate let-service="service">
11339
- * <span class="k-icon k-i-x" (click)="service.close()"
11340
- * style="position: absolute; right: 5px; top: 5px;cursor: pointer;"></span>
11341
- * <kendo-grid-columnmenu-sort [service]="service">
11342
- * </kendo-grid-columnmenu-sort>
11343
- * </ng-template>
11344
- * <kendo-grid-column field="Field1"></kendo-grid-column>
11345
- * <kendo-grid-column field="Field2"></kendo-grid-column>
11346
- * </kendo-grid>
11347
- * `
11348
- * })
11349
- *
11350
- * class AppComponent {
11351
- * public data: any[] = [{ Field1: 'Foo', Field2: 'Bar' }];
11352
- * }
11268
+ * ```html
11269
+ * <kendo-grid [data]="data" [columnMenu]="true">
11270
+ * <ng-template kendoGridColumnMenuTemplate let-service="service">
11271
+ * <span class="k-icon k-i-x" (click)="service.close()" </span>
11272
+ * <kendo-grid-columnmenu-sort [service]="service">
11273
+ * </kendo-grid-columnmenu-sort>
11274
+ * </ng-template>
11275
+ * <kendo-grid-column field="Field1"></kendo-grid-column>
11276
+ * </kendo-grid>
11353
11277
  *
11354
11278
  * ```
11355
11279
  */
@@ -11417,39 +11341,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
11417
11341
  }], hostClass: [{
11418
11342
  type: HostBinding,
11419
11343
  args: ['class.k-columnmenu-item-wrapper']
11420
- }] } });
11421
-
11422
- /**
11423
- * Represents the content template of the
11424
- * [kendo-grid-columnmenu-item]({% slug api_grid_columnmenuitemcomponent %}) component.
11425
- * Provides an option for specifying the content of a column item.
11426
- * To define the content template, nest an `<ng-template>` tag with the
11427
- * `kendoGridColumnMenuItemContentTemplate` directive inside a `<kendo-grid-columnmenu-item>`.
11428
- *
11429
- * @example
11430
- * ```ts-preview
11431
- *
11432
- * _@Component({
11433
- * selector: 'my-app',
11434
- * template: `
11435
- * <kendo-grid [data]="data" [columnMenu]="true">
11436
- * <ng-template kendoGridColumnMenuTemplate>
11437
- * <kendo-grid-columnmenu-item text="Item Text" [expanded]="true">
11438
- * <ng-template kendoGridColumnMenuItemContentTemplate>
11439
- * Item Content
11440
- * </ng-template>
11441
- * </kendo-grid-columnmenu-item>
11442
- * </ng-template>
11443
- * <kendo-grid-column field="Field1"></kendo-grid-column>
11444
- * <kendo-grid-column field="Field2"></kendo-grid-column>
11445
- * </kendo-grid>
11446
- * `
11447
- * })
11448
- *
11449
- * class AppComponent {
11450
- * public data: any[] = [{ Field1: 'Foo', Field2: 'Bar' }];
11451
- * }
11344
+ }] } });
11345
+
11346
+ /**
11347
+ * Represents the content template of the
11348
+ * [`ColumnMenuItemComponent`]({% slug api_grid_columnmenuitemcomponent %}) component.
11349
+ * Provides an option for specifying the content of a column item.
11350
+ * To define the content template, nest an `<ng-template>` tag with the
11351
+ * `kendoGridColumnMenuItemContentTemplate` directive inside a `<kendo-grid-columnmenu-item>`.
11452
11352
  *
11353
+ * @example
11354
+ * ```html
11355
+ * <kendo-grid [data]="data" [columnMenu]="true" ...>
11356
+ * <ng-template kendoGridColumnMenuTemplate>
11357
+ * <kendo-grid-columnmenu-item text="Item Text" [expanded]="true">
11358
+ * <ng-template kendoGridColumnMenuItemContentTemplate>
11359
+ * Item Content
11360
+ * </ng-template>
11361
+ * </kendo-grid-columnmenu-item>
11362
+ * </ng-template>
11363
+ * <kendo-grid-column field="Field1"></kendo-grid-column>
11364
+ * ...
11365
+ * </kendo-grid>
11453
11366
  * ```
11454
11367
  */
11455
11368
  class ColumnMenuItemContentTemplateDirective {
@@ -13887,7 +13800,7 @@ DateFilterCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
13887
13800
  </kendo-datepicker-messages>
13888
13801
  </kendo-datepicker>
13889
13802
  </kendo-grid-filter-wrapper-cell>
13890
- `, isInline: true, components: [{ type: FilterCellWrapperComponent, selector: "kendo-grid-filter-wrapper-cell", inputs: ["showOperators"] }, { type: i5$1.DatePickerComponent, selector: "kendo-datepicker", inputs: ["focusableId", "cellTemplate", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate", "navigationItemTemplate", "activeView", "bottomView", "topView", "calendarType", "animateCalendarNavigation", "disabled", "readonly", "readOnlyInput", "popupSettings", "navigation", "min", "max", "incompleteDateValidation", "focusedDate", "value", "format", "twoDigitYearMax", "formatPlaceholder", "placeholder", "tabindex", "tabIndex", "disabledDates", "title", "subtitle", "rangeValidation", "disabledDatesValidation", "weekNumber", "size", "rounded", "fillMode", "adaptiveMode"], outputs: ["valueChange", "focus", "blur", "open", "close"], exportAs: ["kendo-datepicker"] }, { type: i5$1.DatePickerCustomMessagesComponent, selector: "kendo-datepicker-messages" }], directives: [{ type: FilterInputDirective, selector: "[kendoFilterInput]", inputs: ["filterDelay", "columnLabel", "value"] }, { type: FocusableDirective, selector: "[kendoGridFocusable],\n [kendoGridEditCommand],\n [kendoGridRemoveCommand],\n [kendoGridSaveCommand],\n [kendoGridCancelCommand],\n [kendoGridSelectionCheckbox]\n ", inputs: ["kendoGridFocusable"] }] });
13803
+ `, isInline: true, components: [{ type: FilterCellWrapperComponent, selector: "kendo-grid-filter-wrapper-cell", inputs: ["showOperators"] }, { type: i4$3.DatePickerComponent, selector: "kendo-datepicker", inputs: ["focusableId", "cellTemplate", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate", "navigationItemTemplate", "activeView", "bottomView", "topView", "calendarType", "animateCalendarNavigation", "disabled", "readonly", "readOnlyInput", "popupSettings", "navigation", "min", "max", "incompleteDateValidation", "focusedDate", "value", "format", "twoDigitYearMax", "formatPlaceholder", "placeholder", "tabindex", "tabIndex", "disabledDates", "title", "subtitle", "rangeValidation", "disabledDatesValidation", "weekNumber", "size", "rounded", "fillMode", "adaptiveMode"], outputs: ["valueChange", "focus", "blur", "open", "close"], exportAs: ["kendo-datepicker"] }, { type: i4$3.DatePickerCustomMessagesComponent, selector: "kendo-datepicker-messages" }], directives: [{ type: FilterInputDirective, selector: "[kendoFilterInput]", inputs: ["filterDelay", "columnLabel", "value"] }, { type: FocusableDirective, selector: "[kendoGridFocusable],\n [kendoGridEditCommand],\n [kendoGridRemoveCommand],\n [kendoGridSaveCommand],\n [kendoGridCancelCommand],\n [kendoGridSelectionCheckbox]\n ", inputs: ["kendoGridFocusable"] }] });
13891
13804
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateFilterCellComponent, decorators: [{
13892
13805
  type: Component,
13893
13806
  args: [{
@@ -14436,7 +14349,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
14436
14349
  }] } });
14437
14350
 
14438
14351
  /**
14439
- * Represents the select-all checkbox feature of the Grid ([see example]({% slug selection_grid %}#toc-select-all-feature)).
14352
+ * Represents the select-all checkbox feature of the Grid ([see example](slug:grid_selection_persistence#toc-selecting-all-items)).
14353
+ *
14354
+ * @example
14355
+ * ```html
14356
+ * <input
14357
+ * type="checkbox"
14358
+ * kendoCheckBox
14359
+ * kendoGridSelectAllCheckbox
14360
+ * [state]="selectAllState"
14361
+ * (selectAllChange)="onSelectAllChange($event)"
14362
+ * />
14363
+ * ```
14440
14364
  */
14441
14365
  class SelectAllCheckboxDirective {
14442
14366
  constructor(selectionService, el, renderer, ngZone) {
@@ -15977,53 +15901,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
15977
15901
 
15978
15902
  /**
15979
15903
  * Represents the row-selection checkbox of the Grid. The directive expects the
15980
- * index of the current row as an input parameter. Inside the
15981
- * [CheckboxColumnComponent]({% slug api_grid_checkboxcolumncomponent %}), apply the
15982
- * directive to an `input` element. When the user clicks the checkbox that is associated
15983
- * with the directive, a [selectionChange]({% slug api_grid_gridcomponent %}#toc-selectionChange)
15904
+ * index of the current row as an input parameter. Inside the [`CellTemplateDirective`](slug:api_grid_celltemplatedirective), apply the
15905
+ * `kendoGridSelectionCheckbox` to an `<input type="checkbox"/>` element. When the user clicks the checkbox that is associated
15906
+ * with the directive, a [selectionChange](slug:api_grid_gridcomponent#toc-selectionChange)
15984
15907
  * event is triggered.
15985
15908
  *
15986
15909
  * @example
15987
- * ```ts-preview
15988
- *
15989
- * _@Component({
15990
- * selector: 'my-app',
15991
- * template: `
15992
- * <kendo-grid [data]="gridData" [selectable]="{enabled: true, checkboxOnly: true}">
15993
- * <kendo-grid-checkbox-column title="Custom checkbox">
15994
- * <ng-template kendoGridCellTemplate let-idx="rowIndex">
15995
- * Select row <input [kendoGridSelectionCheckbox]="idx" />
15996
- * </ng-template>
15997
- * </kendo-grid-checkbox-column>
15998
- * <kendo-grid-column field="ProductID" title="Product ID" [width]="120">
15999
- * </kendo-grid-column>
16000
- * <kendo-grid-column field="ProductName" title="Product Name">
16001
- * </kendo-grid-column>
16002
- * </kendo-grid>
16003
- * `
16004
- * })
16005
- *
16006
- * class AppComponent {
16007
- * public gridData: any[];
16008
- *
16009
- * constructor() {
16010
- * this.gridData = products;
16011
- * }
16012
- * }
16013
- *
16014
- * const products = [{
16015
- * "ProductID": 1,
16016
- * "ProductName": "Chai",
16017
- * "UnitPrice": 18.0000,
16018
- * "Discontinued": true
16019
- * }, {
16020
- * "ProductID": 2,
16021
- * "ProductName": "Chang",
16022
- * "UnitPrice": 19.0000,
16023
- * "Discontinued": false
16024
- * }
16025
- * ];
16026
- *
15910
+ * ```html
15911
+ * <kendo-grid ... >
15912
+ * <kendo-grid-column>
15913
+ * <ng-template kendoGridCellTemplate let-rowIndex="rowIndex">
15914
+ * <input ... [kendoGridSelectionCheckbox]="rowIndex"/>
15915
+ * </ng-template>
15916
+ * </kendo-grid-column>
15917
+ * </kendo-grid>
16027
15918
  * ```
16028
15919
  */
16029
15920
  class SelectionCheckboxDirective {
@@ -16135,12 +16026,19 @@ class CellComponent {
16135
16026
  this.isNew = false;
16136
16027
  this.isLoading = false;
16137
16028
  this.isVirtual = false;
16029
+ this.reorderIcon = reorderIcon;
16138
16030
  this._templateContext = {};
16139
16031
  this._editTemplateContext = {};
16140
16032
  }
16141
16033
  get commandCellClass() {
16142
16034
  return this.isCommand(this.column);
16143
16035
  }
16036
+ get dragHandleCellClass() {
16037
+ return isRowReorderColumn(this.column);
16038
+ }
16039
+ get dragRowHandleLabel() {
16040
+ return isRowReorderColumn(this.column) ? this.localizationService.get('dragRowHandleLabel') : undefined;
16041
+ }
16144
16042
  set rowIndex(index) {
16145
16043
  this._rowIndex = index;
16146
16044
  this.updateCellContext();
@@ -16197,6 +16095,9 @@ class CellComponent {
16197
16095
  get childColumns() {
16198
16096
  return columnsToRender([this.column]);
16199
16097
  }
16098
+ get isRowReorderColumn() {
16099
+ return isRowReorderColumn(this.column) && !this.column.templateRef;
16100
+ }
16200
16101
  get isColumnEditable() {
16201
16102
  if (!this.column || this.isCommand(this.column)) {
16202
16103
  return false;
@@ -16243,7 +16144,7 @@ class CellComponent {
16243
16144
  }
16244
16145
  }
16245
16146
  CellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CellComponent, deps: [{ token: EditService }, { token: IdService }, { token: i1.LocalizationService }, { token: CELL_CONTEXT, optional: true }], target: i0.ɵɵFactoryTarget.Component });
16246
- CellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: CellComponent, selector: "[kendoGridCell]", inputs: { column: "column", columnIndex: "columnIndex", isNew: "isNew", isLoading: "isLoading", isVirtual: "isVirtual", loadingTemplate: "loadingTemplate", rowIndex: "rowIndex", dataItem: "dataItem" }, host: { properties: { "class.k-command-cell": "this.commandCellClass" } }, usesOnChanges: true, ngImport: i0, template: `
16147
+ CellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: CellComponent, selector: "[kendoGridCell]", inputs: { column: "column", columnIndex: "columnIndex", isNew: "isNew", isLoading: "isLoading", isVirtual: "isVirtual", loadingTemplate: "loadingTemplate", rowIndex: "rowIndex", dataItem: "dataItem" }, host: { properties: { "class.k-command-cell": "this.commandCellClass", "class.k-drag-cell": "this.dragHandleCellClass", "class.k-touch-action-none": "this.dragHandleCellClass", "attr.aria-label": "this.dragRowHandleLabel" } }, usesOnChanges: true, ngImport: i0, template: `
16247
16148
  <ng-container [ngSwitch]="isEdited">
16248
16149
  <ng-container *ngSwitchCase="false">
16249
16150
  <ng-container *ngIf="!showLoading; else loading">
@@ -16264,6 +16165,12 @@ CellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
16264
16165
  [attr.id]="selectionCheckboxId"
16265
16166
  [attr.aria-label]="selectionCheckboxLabel" />
16266
16167
  </ng-container>
16168
+ <ng-container *ngIf="isRowReorderColumn && !isNew">
16169
+ <kendo-icon-wrapper
16170
+ name="reorder"
16171
+ [svgIcon]="reorderIcon">
16172
+ </kendo-icon-wrapper>
16173
+ </ng-container>
16267
16174
  </ng-container>
16268
16175
  <ng-template #loading>
16269
16176
  <ng-template
@@ -16313,7 +16220,7 @@ CellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
16313
16220
  </ng-container>
16314
16221
  </ng-container>
16315
16222
  </ng-container>
16316
- `, isInline: true, components: [{ type: i3.NumericTextBoxComponent, selector: "kendo-numerictextbox", inputs: ["focusableId", "disabled", "readonly", "title", "autoCorrect", "format", "max", "min", "decimals", "placeholder", "step", "spinners", "rangeValidation", "tabindex", "tabIndex", "changeValueOnScroll", "selectOnFocus", "value", "maxlength", "size", "rounded", "fillMode"], outputs: ["valueChange", "focus", "blur"], exportAs: ["kendoNumericTextBox"] }, { type: i5$1.DatePickerComponent, selector: "kendo-datepicker", inputs: ["focusableId", "cellTemplate", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate", "navigationItemTemplate", "activeView", "bottomView", "topView", "calendarType", "animateCalendarNavigation", "disabled", "readonly", "readOnlyInput", "popupSettings", "navigation", "min", "max", "incompleteDateValidation", "focusedDate", "value", "format", "twoDigitYearMax", "formatPlaceholder", "placeholder", "tabindex", "tabIndex", "disabledDates", "title", "subtitle", "rangeValidation", "disabledDatesValidation", "weekNumber", "size", "rounded", "fillMode", "adaptiveMode"], outputs: ["valueChange", "focus", "blur", "open", "close"], exportAs: ["kendo-datepicker"] }], directives: [{ type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: FocusableDirective, selector: "[kendoGridFocusable],\n [kendoGridEditCommand],\n [kendoGridRemoveCommand],\n [kendoGridSaveCommand],\n [kendoGridCancelCommand],\n [kendoGridSelectionCheckbox]\n ", inputs: ["kendoGridFocusable"] }, { type: SelectionCheckboxDirective, selector: "[kendoGridSelectionCheckbox]", inputs: ["kendoGridSelectionCheckbox"] }, { type: i4$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i4$2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i4.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i4$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }], pipes: { "valueOf": FieldAccessorPipe } });
16223
+ `, isInline: true, components: [{ type: i3$1.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass"], exportAs: ["kendoIconWrapper"] }, { type: i3.NumericTextBoxComponent, selector: "kendo-numerictextbox", inputs: ["focusableId", "disabled", "readonly", "title", "autoCorrect", "format", "max", "min", "decimals", "placeholder", "step", "spinners", "rangeValidation", "tabindex", "tabIndex", "changeValueOnScroll", "selectOnFocus", "value", "maxlength", "size", "rounded", "fillMode"], outputs: ["valueChange", "focus", "blur"], exportAs: ["kendoNumericTextBox"] }, { type: i4$3.DatePickerComponent, selector: "kendo-datepicker", inputs: ["focusableId", "cellTemplate", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate", "navigationItemTemplate", "activeView", "bottomView", "topView", "calendarType", "animateCalendarNavigation", "disabled", "readonly", "readOnlyInput", "popupSettings", "navigation", "min", "max", "incompleteDateValidation", "focusedDate", "value", "format", "twoDigitYearMax", "formatPlaceholder", "placeholder", "tabindex", "tabIndex", "disabledDates", "title", "subtitle", "rangeValidation", "disabledDatesValidation", "weekNumber", "size", "rounded", "fillMode", "adaptiveMode"], outputs: ["valueChange", "focus", "blur", "open", "close"], exportAs: ["kendo-datepicker"] }], directives: [{ type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: FocusableDirective, selector: "[kendoGridFocusable],\n [kendoGridEditCommand],\n [kendoGridRemoveCommand],\n [kendoGridSaveCommand],\n [kendoGridCancelCommand],\n [kendoGridSelectionCheckbox]\n ", inputs: ["kendoGridFocusable"] }, { type: SelectionCheckboxDirective, selector: "[kendoGridSelectionCheckbox]", inputs: ["kendoGridSelectionCheckbox"] }, { type: i4$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i4$2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i4.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i4$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }], pipes: { "valueOf": FieldAccessorPipe } });
16317
16224
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CellComponent, decorators: [{
16318
16225
  type: Component,
16319
16226
  args: [{
@@ -16339,6 +16246,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
16339
16246
  [attr.id]="selectionCheckboxId"
16340
16247
  [attr.aria-label]="selectionCheckboxLabel" />
16341
16248
  </ng-container>
16249
+ <ng-container *ngIf="isRowReorderColumn && !isNew">
16250
+ <kendo-icon-wrapper
16251
+ name="reorder"
16252
+ [svgIcon]="reorderIcon">
16253
+ </kendo-icon-wrapper>
16254
+ </ng-container>
16342
16255
  </ng-container>
16343
16256
  <ng-template #loading>
16344
16257
  <ng-template
@@ -16398,6 +16311,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
16398
16311
  }] }]; }, propDecorators: { commandCellClass: [{
16399
16312
  type: HostBinding,
16400
16313
  args: ['class.k-command-cell']
16314
+ }], dragHandleCellClass: [{
16315
+ type: HostBinding,
16316
+ args: ['class.k-drag-cell']
16317
+ }, {
16318
+ type: HostBinding,
16319
+ args: ['class.k-touch-action-none']
16320
+ }], dragRowHandleLabel: [{
16321
+ type: HostBinding,
16322
+ args: ['attr.aria-label']
16401
16323
  }], column: [{
16402
16324
  type: Input
16403
16325
  }], columnIndex: [{
@@ -18768,7 +18690,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
18768
18690
  class GridMessages extends ComponentMessages {
18769
18691
  }
18770
18692
  GridMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GridMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });
18771
- GridMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: GridMessages, selector: "kendo-grid-messages-base", inputs: { groupPanelEmpty: "groupPanelEmpty", noRecords: "noRecords", pagerLabel: "pagerLabel", pagerFirstPage: "pagerFirstPage", pagerLastPage: "pagerLastPage", pagerPreviousPage: "pagerPreviousPage", pagerNextPage: "pagerNextPage", pagerPage: "pagerPage", pagerItemsPerPage: "pagerItemsPerPage", pagerOf: "pagerOf", pagerItems: "pagerItems", pagerPageNumberInputTitle: "pagerPageNumberInputTitle", selectPage: "selectPage", filter: "filter", filterInputLabel: "filterInputLabel", filterMenuTitle: "filterMenuTitle", filterMenuOperatorsDropDownLabel: "filterMenuOperatorsDropDownLabel", filterMenuLogicDropDownLabel: "filterMenuLogicDropDownLabel", filterEqOperator: "filterEqOperator", filterNotEqOperator: "filterNotEqOperator", filterIsNullOperator: "filterIsNullOperator", filterIsNotNullOperator: "filterIsNotNullOperator", filterIsEmptyOperator: "filterIsEmptyOperator", filterIsNotEmptyOperator: "filterIsNotEmptyOperator", filterStartsWithOperator: "filterStartsWithOperator", filterContainsOperator: "filterContainsOperator", filterNotContainsOperator: "filterNotContainsOperator", filterEndsWithOperator: "filterEndsWithOperator", filterGteOperator: "filterGteOperator", filterGtOperator: "filterGtOperator", filterLteOperator: "filterLteOperator", filterLtOperator: "filterLtOperator", filterIsTrue: "filterIsTrue", filterIsFalse: "filterIsFalse", filterBooleanAll: "filterBooleanAll", filterAfterOrEqualOperator: "filterAfterOrEqualOperator", filterAfterOperator: "filterAfterOperator", filterBeforeOperator: "filterBeforeOperator", filterBeforeOrEqualOperator: "filterBeforeOrEqualOperator", filterFilterButton: "filterFilterButton", filterClearButton: "filterClearButton", filterAndLogic: "filterAndLogic", filterOrLogic: "filterOrLogic", loading: "loading", gridLabel: "gridLabel", columnMenu: "columnMenu", setColumnPosition: "setColumnPosition", columns: "columns", lock: "lock", unlock: "unlock", stick: "stick", unstick: "unstick", sortable: "sortable", sortAscending: "sortAscending", sortDescending: "sortDescending", autosizeThisColumn: "autosizeThisColumn", autosizeAllColumns: "autosizeAllColumns", sortedAscending: "sortedAscending", sortedDescending: "sortedDescending", sortedDefault: "sortedDefault", columnsApply: "columnsApply", columnsReset: "columnsReset", detailExpand: "detailExpand", detailCollapse: "detailCollapse", filterDateToday: "filterDateToday", filterDateToggle: "filterDateToggle", filterNumericDecrement: "filterNumericDecrement", filterNumericIncrement: "filterNumericIncrement", selectionCheckboxLabel: "selectionCheckboxLabel", selectAllCheckboxLabel: "selectAllCheckboxLabel", groupCollapse: "groupCollapse", groupExpand: "groupExpand", topToolbarLabel: "topToolbarLabel", bottomToolbarLabel: "bottomToolbarLabel", groupPanelLabel: "groupPanelLabel" }, usesInheritance: true, ngImport: i0 });
18693
+ GridMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: GridMessages, selector: "kendo-grid-messages-base", inputs: { groupPanelEmpty: "groupPanelEmpty", noRecords: "noRecords", pagerLabel: "pagerLabel", pagerFirstPage: "pagerFirstPage", pagerLastPage: "pagerLastPage", pagerPreviousPage: "pagerPreviousPage", pagerNextPage: "pagerNextPage", pagerPage: "pagerPage", pagerItemsPerPage: "pagerItemsPerPage", pagerOf: "pagerOf", pagerItems: "pagerItems", pagerPageNumberInputTitle: "pagerPageNumberInputTitle", selectPage: "selectPage", filter: "filter", filterInputLabel: "filterInputLabel", filterMenuTitle: "filterMenuTitle", filterMenuOperatorsDropDownLabel: "filterMenuOperatorsDropDownLabel", filterMenuLogicDropDownLabel: "filterMenuLogicDropDownLabel", filterEqOperator: "filterEqOperator", filterNotEqOperator: "filterNotEqOperator", filterIsNullOperator: "filterIsNullOperator", filterIsNotNullOperator: "filterIsNotNullOperator", filterIsEmptyOperator: "filterIsEmptyOperator", filterIsNotEmptyOperator: "filterIsNotEmptyOperator", filterStartsWithOperator: "filterStartsWithOperator", filterContainsOperator: "filterContainsOperator", filterNotContainsOperator: "filterNotContainsOperator", filterEndsWithOperator: "filterEndsWithOperator", filterGteOperator: "filterGteOperator", filterGtOperator: "filterGtOperator", filterLteOperator: "filterLteOperator", filterLtOperator: "filterLtOperator", filterIsTrue: "filterIsTrue", filterIsFalse: "filterIsFalse", filterBooleanAll: "filterBooleanAll", filterAfterOrEqualOperator: "filterAfterOrEqualOperator", filterAfterOperator: "filterAfterOperator", filterBeforeOperator: "filterBeforeOperator", filterBeforeOrEqualOperator: "filterBeforeOrEqualOperator", filterFilterButton: "filterFilterButton", filterClearButton: "filterClearButton", filterAndLogic: "filterAndLogic", filterOrLogic: "filterOrLogic", loading: "loading", gridLabel: "gridLabel", columnMenu: "columnMenu", setColumnPosition: "setColumnPosition", columns: "columns", lock: "lock", unlock: "unlock", stick: "stick", unstick: "unstick", sortable: "sortable", sortAscending: "sortAscending", sortDescending: "sortDescending", autosizeThisColumn: "autosizeThisColumn", autosizeAllColumns: "autosizeAllColumns", sortedAscending: "sortedAscending", sortedDescending: "sortedDescending", sortedDefault: "sortedDefault", columnsApply: "columnsApply", columnsReset: "columnsReset", detailExpand: "detailExpand", detailCollapse: "detailCollapse", filterDateToday: "filterDateToday", filterDateToggle: "filterDateToggle", filterNumericDecrement: "filterNumericDecrement", filterNumericIncrement: "filterNumericIncrement", selectionCheckboxLabel: "selectionCheckboxLabel", selectAllCheckboxLabel: "selectAllCheckboxLabel", groupCollapse: "groupCollapse", groupExpand: "groupExpand", topToolbarLabel: "topToolbarLabel", bottomToolbarLabel: "bottomToolbarLabel", groupPanelLabel: "groupPanelLabel", dragRowHandleLabel: "dragRowHandleLabel" }, usesInheritance: true, ngImport: i0 });
18772
18694
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GridMessages, decorators: [{
18773
18695
  type: Directive,
18774
18696
  args: [{
@@ -18925,6 +18847,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
18925
18847
  type: Input
18926
18848
  }], groupPanelLabel: [{
18927
18849
  type: Input
18850
+ }], dragRowHandleLabel: [{
18851
+ type: Input
18928
18852
  }] } });
18929
18853
 
18930
18854
  /**
@@ -19005,7 +18929,7 @@ const isInEditedCell = (element, gridElement) => closest(element, matchesClasses
19005
18929
  * ```
19006
18930
  */
19007
18931
  class GridComponent {
19008
- constructor(supportService, selectionService, cellSelectionService, wrapper, groupInfoService, groupsService, changeNotification, detailsService, editService, filterService, pdfService, responsiveService, renderer, excelService, ngZone, scrollSyncService, domEvents, columnResizingService, changeDetectorRef, columnReorderService, columnInfoService, navigationService, sortService, scrollRequestService, localization, ctx, sizingService) {
18932
+ constructor(supportService, selectionService, cellSelectionService, wrapper, groupInfoService, groupsService, changeNotification, detailsService, editService, filterService, pdfService, responsiveService, renderer, excelService, ngZone, scrollSyncService, domEvents, columnResizingService, changeDetectorRef, columnReorderService, columnInfoService, navigationService, sortService, scrollRequestService, localization, ctx, sizingService, rowReorderService) {
19009
18933
  this.supportService = supportService;
19010
18934
  this.selectionService = selectionService;
19011
18935
  this.cellSelectionService = cellSelectionService;
@@ -19033,11 +18957,7 @@ class GridComponent {
19033
18957
  this.localization = localization;
19034
18958
  this.ctx = ctx;
19035
18959
  this.sizingService = sizingService;
19036
- /**
19037
- * Sets the data of the Grid. If an array is provided, the Grid automatically gets the total count
19038
- * ([more information and example]({% slug binding_grid %})).
19039
- */
19040
- this.data = [];
18960
+ this.rowReorderService = rowReorderService;
19041
18961
  /**
19042
18962
  * Defines the scroll mode used by the Grid.
19043
18963
  *
@@ -19101,6 +19021,10 @@ class GridComponent {
19101
19021
  * If set to `true`, the grid will render only the columns in the current viewport.
19102
19022
  */
19103
19023
  this.virtualColumns = false;
19024
+ /**
19025
+ * @hidden
19026
+ */
19027
+ this.gridData = () => { return this.flatData; };
19104
19028
  /**
19105
19029
  * Enables the [filtering]({% slug filtering_grid %}) of the Grid columns that have their `field` option set.
19106
19030
  */
@@ -19148,12 +19072,6 @@ class GridComponent {
19148
19072
  * @default false
19149
19073
  */
19150
19074
  this.reorderable = false;
19151
- /**
19152
- * Specifies if the loading indicator of the Grid will be displayed ([see example]({% slug binding_grid %})).
19153
- *
19154
- * @default false
19155
- */
19156
- this.loading = false;
19157
19075
  /**
19158
19076
  * Specifies if the column menu of the columns will be displayed ([see example]({% slug columnmenu_grid %})).
19159
19077
  *
@@ -19191,6 +19109,11 @@ class GridComponent {
19191
19109
  * Emits the [SelectionEvent]({% slug api_grid_selectionevent %}#toc-selectionchange).
19192
19110
  */
19193
19111
  this.selectionChange = new EventEmitter();
19112
+ /**
19113
+ * Fires when the user drops the dragged row and reordering is performed.
19114
+ * Emits the [RowReorderEvent]({% slug api_grid_selectionevent %}#toc-selectionchange).
19115
+ */
19116
+ this.rowReorder = new EventEmitter();
19194
19117
  /**
19195
19118
  * Fires when the data state of the Grid is changed.
19196
19119
  */
@@ -19302,11 +19225,14 @@ class GridComponent {
19302
19225
  this._sort = new Array();
19303
19226
  this._group = new Array();
19304
19227
  this._skip = 0;
19228
+ this._data = [];
19305
19229
  this.cachedWindowWidth = 0;
19306
19230
  this._rowSelected = null;
19307
19231
  this._cellSelected = null;
19232
+ this._rowReorderable = false;
19308
19233
  this._navigable = [];
19309
19234
  this._size = 'medium';
19235
+ this._loading = false;
19310
19236
  this.rtl = false;
19311
19237
  this._rowClass = () => null;
19312
19238
  validatePackage(packageMetadata);
@@ -19346,6 +19272,19 @@ class GridComponent {
19346
19272
  .changes.subscribe(this.reorder.bind(this));
19347
19273
  this.columnRangeChangeSubscription = this.columnInfoService.columnRangeChange.subscribe(this.onColumnRangeChange.bind(this));
19348
19274
  }
19275
+ /**
19276
+ * Sets the data of the Grid. If an array is provided, the Grid automatically gets the total count
19277
+ * ([more information and example]({% slug binding_grid %})).
19278
+ */
19279
+ set data(value) {
19280
+ this._data = value;
19281
+ }
19282
+ get data() {
19283
+ return this._data;
19284
+ }
19285
+ get hintText() {
19286
+ return this.rowReorderService.getDefaultHintText(this.columnList, this.flatData);
19287
+ }
19349
19288
  /**
19350
19289
  * Defines the number of records to be skipped by the pager.
19351
19290
  * Required by the [paging]({% slug paging_grid %}) functionality.
@@ -19355,7 +19294,7 @@ class GridComponent {
19355
19294
  }
19356
19295
  set skip(value) {
19357
19296
  if (typeof value === 'number' && value >= 0) {
19358
- this._skip = value;
19297
+ this._skip = this.rowReorderService.skip = value;
19359
19298
  }
19360
19299
  }
19361
19300
  /**
@@ -19453,6 +19392,26 @@ class GridComponent {
19453
19392
  get marqueeSelection() {
19454
19393
  return this.selectionService.enableMarquee || this.cellSelectionService.enableMarquee;
19455
19394
  }
19395
+ /**
19396
+ * Enables the [row reordering]({% slug reordering_rows_grid %}) of the Grid.
19397
+ * @default false
19398
+ */
19399
+ set rowReorderable(value) {
19400
+ this._rowReorderable = value;
19401
+ if (value) {
19402
+ this.rowReorderSubscription = this.rowReorderService.rowReorder.subscribe(args => {
19403
+ this.ngZone.run(() => {
19404
+ this.rowReorder.emit(args);
19405
+ });
19406
+ });
19407
+ }
19408
+ else {
19409
+ this.rowReorderSubscription?.unsubscribe();
19410
+ }
19411
+ }
19412
+ get rowReorderable() {
19413
+ return this._rowReorderable;
19414
+ }
19456
19415
  /**
19457
19416
  * If set to `true`, the user can use dedicated shortcuts to interact with the Grid.
19458
19417
  * By default, navigation is disabled and the Grid content is accessible in the normal tab sequence.
@@ -19595,6 +19554,18 @@ class GridComponent {
19595
19554
  get activeRow() {
19596
19555
  return this.navigationService.activeRow;
19597
19556
  }
19557
+ /**
19558
+ * Specifies if the loading indicator of the Grid will be displayed ([see example]({% slug binding_grid %})).
19559
+ *
19560
+ * @default false
19561
+ */
19562
+ set loading(value) {
19563
+ this._loading = value;
19564
+ this.rowReorderable && this.notifyReorderContainers();
19565
+ }
19566
+ get loading() {
19567
+ return this._loading;
19568
+ }
19598
19569
  get dir() {
19599
19570
  return this.direction;
19600
19571
  }
@@ -19766,6 +19737,18 @@ class GridComponent {
19766
19737
  }
19767
19738
  return this.pageSize;
19768
19739
  }
19740
+ /**
19741
+ * @hidden
19742
+ */
19743
+ getDefaultSelectors(type) {
19744
+ return this.rowReorderService.defaultSelectors[type];
19745
+ }
19746
+ /**
19747
+ * @hidden
19748
+ */
19749
+ getHintSettings(type) {
19750
+ return this.rowReorderService[type];
19751
+ }
19769
19752
  /**
19770
19753
  * Expands the specified master row ([see example]({% slug hierarchy_grid %})).
19771
19754
  *
@@ -19997,6 +19980,9 @@ class GridComponent {
19997
19980
  if (this.focusElementSubscription) {
19998
19981
  this.focusElementSubscription.unsubscribe();
19999
19982
  }
19983
+ if (this.rowReorderSubscription) {
19984
+ this.rowReorderSubscription.unsubscribe();
19985
+ }
20000
19986
  this.columnRangeChangeSubscription.unsubscribe();
20001
19987
  }
20002
19988
  /**
@@ -20495,6 +20481,12 @@ class GridComponent {
20495
20481
  get isGroupExpanded() {
20496
20482
  return this.groupsService.userCallback;
20497
20483
  }
20484
+ /**
20485
+ * @hidden
20486
+ */
20487
+ handleReorderEvents(ev, evType) {
20488
+ this.rowReorderService[evType](ev);
20489
+ }
20498
20490
  /**
20499
20491
  * @hidden
20500
20492
  */
@@ -20721,6 +20713,11 @@ class GridComponent {
20721
20713
  this.closeCell();
20722
20714
  this.cancelCell();
20723
20715
  this.dataStateChange.emit(x);
20716
+ if (this.rowReorderable) {
20717
+ this.ngZone.onStable.pipe(take(1)).subscribe(() => {
20718
+ this.notifyReorderContainers();
20719
+ });
20720
+ }
20724
20721
  });
20725
20722
  }
20726
20723
  attachEditHandlers() {
@@ -21003,9 +21000,16 @@ class GridComponent {
21003
21000
  }
21004
21001
  return previousValue.cell !== currentValue.cell;
21005
21002
  }
21003
+ notifyReorderContainers() {
21004
+ this.dragTargetContainer?.notify();
21005
+ this.dropTargetContainer?.notify();
21006
+ }
21007
+ get flatData() {
21008
+ return isArray(this.data) ? this.data : this.data.data;
21009
+ }
21006
21010
  }
21007
- GridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GridComponent, deps: [{ token: BrowserSupportService }, { token: SelectionService }, { token: CellSelectionService }, { token: i0.ElementRef }, { token: GroupInfoService }, { token: GroupsService }, { token: ChangeNotificationService }, { token: DetailsService }, { token: EditService }, { token: FilterService }, { token: PDFService }, { token: ResponsiveService }, { token: i0.Renderer2 }, { token: ExcelService }, { token: i0.NgZone }, { token: ScrollSyncService }, { token: DomEventsService }, { token: ColumnResizingService }, { token: i0.ChangeDetectorRef }, { token: ColumnReorderService }, { token: ColumnInfoService }, { token: NavigationService }, { token: SortService }, { token: ScrollRequestService }, { token: i1.LocalizationService }, { token: ContextService }, { token: SizingOptionsService }], target: i0.ɵɵFactoryTarget.Component });
21008
- GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GridComponent, selector: "kendo-grid", inputs: { data: "data", pageSize: "pageSize", height: "height", rowHeight: "rowHeight", detailRowHeight: "detailRowHeight", skip: "skip", scrollable: "scrollable", selectable: "selectable", sort: "sort", size: "size", trackBy: "trackBy", filter: "filter", group: "group", virtualColumns: "virtualColumns", filterable: "filterable", sortable: "sortable", pageable: "pageable", groupable: "groupable", navigable: "navigable", navigatable: "navigatable", autoSize: "autoSize", rowClass: "rowClass", rowSticky: "rowSticky", rowSelected: "rowSelected", cellSelected: "cellSelected", resizable: "resizable", reorderable: "reorderable", loading: "loading", columnMenu: "columnMenu", hideHeader: "hideHeader", isDetailExpanded: "isDetailExpanded", isGroupExpanded: "isGroupExpanded" }, outputs: { filterChange: "filterChange", pageChange: "pageChange", groupChange: "groupChange", sortChange: "sortChange", selectionChange: "selectionChange", dataStateChange: "dataStateChange", groupExpand: "groupExpand", groupCollapse: "groupCollapse", detailExpand: "detailExpand", detailCollapse: "detailCollapse", edit: "edit", cancel: "cancel", save: "save", remove: "remove", add: "add", cellClose: "cellClose", cellClick: "cellClick", pdfExport: "pdfExport", excelExport: "excelExport", columnResize: "columnResize", columnReorder: "columnReorder", columnVisibilityChange: "columnVisibilityChange", columnLockedChange: "columnLockedChange", columnStickyChange: "columnStickyChange", scrollBottom: "scrollBottom", contentScroll: "contentScroll" }, host: { properties: { "attr.dir": "this.dir", "class.k-grid": "this.hostClass", "class.k-grid-sm": "this.sizeSmallClass", "class.k-grid-md": "this.sizeMediumClass", "class.k-grid-lockedcolumns": "this.lockedClasses", "class.k-grid-virtual": "this.virtualClasses", "class.k-grid-no-scrollbar": "this.noScrollbarClass" } }, providers: [
21011
+ 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 });
21012
+ GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GridComponent, selector: "kendo-grid", inputs: { data: "data", pageSize: "pageSize", height: "height", rowHeight: "rowHeight", detailRowHeight: "detailRowHeight", skip: "skip", scrollable: "scrollable", selectable: "selectable", sort: "sort", size: "size", trackBy: "trackBy", filter: "filter", group: "group", virtualColumns: "virtualColumns", filterable: "filterable", sortable: "sortable", pageable: "pageable", groupable: "groupable", rowReorderable: "rowReorderable", navigable: "navigable", navigatable: "navigatable", autoSize: "autoSize", rowClass: "rowClass", rowSticky: "rowSticky", rowSelected: "rowSelected", cellSelected: "cellSelected", resizable: "resizable", reorderable: "reorderable", loading: "loading", columnMenu: "columnMenu", hideHeader: "hideHeader", isDetailExpanded: "isDetailExpanded", isGroupExpanded: "isGroupExpanded" }, outputs: { filterChange: "filterChange", pageChange: "pageChange", groupChange: "groupChange", sortChange: "sortChange", selectionChange: "selectionChange", rowReorder: "rowReorder", dataStateChange: "dataStateChange", groupExpand: "groupExpand", groupCollapse: "groupCollapse", detailExpand: "detailExpand", detailCollapse: "detailCollapse", edit: "edit", cancel: "cancel", save: "save", remove: "remove", add: "add", cellClose: "cellClose", cellClick: "cellClick", pdfExport: "pdfExport", excelExport: "excelExport", columnResize: "columnResize", columnReorder: "columnReorder", columnVisibilityChange: "columnVisibilityChange", columnLockedChange: "columnLockedChange", columnStickyChange: "columnStickyChange", scrollBottom: "scrollBottom", contentScroll: "contentScroll" }, host: { properties: { "attr.dir": "this.dir", "class.k-grid": "this.hostClass", "class.k-grid-sm": "this.sizeSmallClass", "class.k-grid-md": "this.sizeMediumClass", "class.k-grid-lockedcolumns": "this.lockedClasses", "class.k-grid-virtual": "this.virtualClasses", "class.k-grid-no-scrollbar": "this.noScrollbarClass" } }, providers: [
21009
21013
  BrowserSupportService,
21010
21014
  LocalizationService,
21011
21015
  ColumnInfoService,
@@ -21046,8 +21050,9 @@ GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
21046
21050
  ScrollRequestService,
21047
21051
  SortService,
21048
21052
  ContextService,
21049
- SizingOptionsService
21050
- ], queries: [{ propertyName: "columns", predicate: ColumnBase }, { propertyName: "detailTemplateChildren", predicate: DetailTemplateDirective }, { propertyName: "cellLoadingTemplateChildren", predicate: CellLoadingTemplateDirective }, { propertyName: "loadingTemplateChildren", predicate: LoadingTemplateDirective }, { propertyName: "noRecordsTemplateChildren", predicate: NoRecordsTemplateDirective }, { propertyName: "pagerTemplateChildren", predicate: PagerTemplateDirective }, { propertyName: "toolbarTemplateChildren", predicate: ToolbarTemplateDirective }, { propertyName: "columnMenuTemplates", predicate: ColumnMenuTemplateDirective }], viewQueries: [{ propertyName: "lockedHeader", first: true, predicate: ["lockedHeader"], descendants: true }, { propertyName: "header", first: true, predicate: ["header"], descendants: true }, { propertyName: "ariaRoot", first: true, predicate: ["ariaRoot"], descendants: true, static: true }, { propertyName: "footer", predicate: ["footer"], descendants: true }], exportAs: ["kendoGrid"], usesOnChanges: true, ngImport: i0, template: `
21053
+ SizingOptionsService,
21054
+ RowReorderService
21055
+ ], queries: [{ propertyName: "columns", predicate: ColumnBase }, { propertyName: "detailTemplateChildren", predicate: DetailTemplateDirective }, { propertyName: "cellLoadingTemplateChildren", predicate: CellLoadingTemplateDirective }, { propertyName: "loadingTemplateChildren", predicate: LoadingTemplateDirective }, { propertyName: "noRecordsTemplateChildren", predicate: NoRecordsTemplateDirective }, { propertyName: "pagerTemplateChildren", predicate: PagerTemplateDirective }, { propertyName: "toolbarTemplateChildren", predicate: ToolbarTemplateDirective }, { propertyName: "columnMenuTemplates", predicate: ColumnMenuTemplateDirective }], viewQueries: [{ propertyName: "lockedHeader", first: true, predicate: ["lockedHeader"], descendants: true }, { propertyName: "header", first: true, predicate: ["header"], descendants: true }, { propertyName: "ariaRoot", first: true, predicate: ["ariaRoot"], descendants: true, static: true }, { propertyName: "dragTargetContainer", first: true, predicate: DragTargetContainerDirective, descendants: true }, { propertyName: "dropTargetContainer", first: true, predicate: DropTargetContainerDirective, descendants: true }, { propertyName: "footer", predicate: ["footer"], descendants: true }], exportAs: ["kendoGrid"], usesOnChanges: true, ngImport: i0, template: `
21051
21056
  <ng-container kendoGridLocalizedMessages
21052
21057
  i18n-groupPanelEmpty="kendo.grid.groupPanelEmpty|The label visible in the Grid group panel when it is empty"
21053
21058
  groupPanelEmpty="Drag a column header and drop it here to group by that column"
@@ -21273,6 +21278,9 @@ GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
21273
21278
 
21274
21279
  i18n-groupPanelLabel="kendo.grid.groupPanelLabel|The label for the Grid group panel toolbar"
21275
21280
  groupPanelLabel="Group panel"
21281
+
21282
+ i18n-dragRowHandleLabel="kendo.grid.dragRowHandleLabel|The label for the Grid drag row handle"
21283
+ dragRowHandleLabel="Drag row"
21276
21284
  >
21277
21285
  </ng-container>
21278
21286
  <kendo-grid-toolbar
@@ -21400,6 +21408,23 @@ GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
21400
21408
  </div>
21401
21409
  </div>
21402
21410
  <kendo-grid-list
21411
+ kendoDragTargetContainer
21412
+ kendoDropTargetContainer
21413
+ mode="manual"
21414
+ [dragDisabled]="!rowReorderable"
21415
+ [dropDisabled]="!rowReorderable"
21416
+ [dragTargetFilter]="getDefaultSelectors('dragTarget')"
21417
+ [dropTargetFilter]="getDefaultSelectors('dropTarget')"
21418
+ [dragHandle]="getDefaultSelectors('handle')"
21419
+ [hint]="{hintTemplate: defaultHint}"
21420
+ (press)="handleReorderEvents($event, 'press')"
21421
+ (dragStart)="handleReorderEvents($event, 'dragStart')"
21422
+ (drag)="handleReorderEvents($event, 'drag')"
21423
+ (dragEnter)="handleReorderEvents($event, 'dragEnter')"
21424
+ (dragLeave)="handleReorderEvents($event, 'dragLeave')"
21425
+ (dragEnd)="handleReorderEvents($event, 'dragEnd')"
21426
+ (drop)="handleReorderEvents($event, 'drop')"
21427
+ [dragData]="gridData"
21403
21428
  [data]="$any(view)"
21404
21429
  [rowHeight]="rowHeight"
21405
21430
  [detailRowHeight]="detailRowHeight"
@@ -21565,8 +21590,18 @@ GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
21565
21590
  [navigable]="navigation.toolbarEnabled"
21566
21591
  [attr.aria-label]="messageFor('bottomToolbarLabel')"
21567
21592
  [attr.aria-controls]="ariaRootId"
21568
- position="bottom"></kendo-grid-toolbar>
21569
- `, isInline: true, components: [{ type: ToolbarComponent, selector: "kendo-grid-toolbar", inputs: ["position", "size", "navigable"] }, { type: PagerComponent, selector: "kendo-pager", inputs: ["total", "skip", "pageSize", "options", "size", "template"], outputs: ["pageChange"] }, { type: GroupPanelComponent, selector: "kendo-grid-group-panel", inputs: ["text", "navigable", "groups"], outputs: ["change"] }, { type: ColGroupComponent, selector: "[kendoGridColGroup]", inputs: ["columns", "groups", "detailTemplate", "sort"] }, { type: HeaderComponent, selector: "[kendoGridHeader]", inputs: ["totalColumnLevels", "columns", "groups", "detailTemplate", "scrollable", "filterable", "sort", "filter", "sortable", "groupable", "lockedColumnsCount", "resizable", "reorderable", "columnMenu", "columnMenuTemplate", "totalColumnsCount", "tabIndex", "size"] }, { type: ListComponent, selector: "kendo-grid-list", inputs: ["data", "groups", "total", "rowHeight", "stickyRowHeight", "detailRowHeight", "take", "skip", "columns", "detailTemplate", "noRecordsTemplate", "selectable", "groupable", "filterable", "rowClass", "rowSticky", "loading", "trackBy", "virtualColumns", "isVirtual", "cellLoadingTemplate", "loadingTemplate", "sort", "size"], outputs: ["contentScroll", "pageChange", "scrollBottom"] }, { type: FooterComponent, selector: "[kendoGridFooter]", inputs: ["columns", "groups", "detailTemplate", "scrollable", "lockedColumnsCount", "logicalRowIndex"] }, { type: TableBodyComponent, selector: "[kendoGridTableBody]", inputs: ["columns", "allColumns", "groups", "detailTemplate", "noRecordsTemplate", "data", "skip", "selectable", "filterable", "noRecordsText", "isLocked", "isLoading", "isVirtual", "cellLoadingTemplate", "skipGroupDecoration", "showGroupFooters", "lockedColumnsCount", "totalColumnsCount", "virtualColumns", "trackBy", "rowSticky", "rowClass"] }, { type: LoadingComponent, selector: "[kendoGridLoading]", inputs: ["loadingTemplate"] }], directives: [{ type: LocalizedMessagesDirective, selector: "[kendoGridLocalizedMessages]" }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: TableDirective, selector: "table", inputs: ["locked", "virtualColumns"] }, { type: GridTableDirective, selector: "[kendoGridTable]", inputs: ["size"] }, { type: ResizableContainerDirective, selector: "[kendoGridResizableContainer]", inputs: ["lockedWidth", "kendoGridResizableContainer"] }, { type: i1$1.DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }, { type: GridMarqueeDirective, selector: "[kendoGridSelectionMarquee]" }], encapsulation: i0.ViewEncapsulation.None });
21593
+ position="bottom">
21594
+ </kendo-grid-toolbar>
21595
+
21596
+ <ng-template #defaultHint>
21597
+ <kendo-icon-wrapper
21598
+ [name]="getHintSettings('hintIcon')"
21599
+ [svgIcon]="getHintSettings('hintSVGIcon')"
21600
+ innerCssClass="k-drag-status">
21601
+ </kendo-icon-wrapper>
21602
+ {{hintText}}
21603
+ </ng-template>
21604
+ `, isInline: true, components: [{ type: ToolbarComponent, selector: "kendo-grid-toolbar", inputs: ["position", "size", "navigable"] }, { type: PagerComponent, selector: "kendo-pager", inputs: ["total", "skip", "pageSize", "options", "size", "template"], outputs: ["pageChange"] }, { type: GroupPanelComponent, selector: "kendo-grid-group-panel", inputs: ["text", "navigable", "groups"], outputs: ["change"] }, { type: ColGroupComponent, selector: "[kendoGridColGroup]", inputs: ["columns", "groups", "detailTemplate", "sort"] }, { type: HeaderComponent, selector: "[kendoGridHeader]", inputs: ["totalColumnLevels", "columns", "groups", "detailTemplate", "scrollable", "filterable", "sort", "filter", "sortable", "groupable", "lockedColumnsCount", "resizable", "reorderable", "columnMenu", "columnMenuTemplate", "totalColumnsCount", "tabIndex", "size"] }, { type: ListComponent, selector: "kendo-grid-list", inputs: ["data", "groups", "total", "rowHeight", "stickyRowHeight", "detailRowHeight", "take", "skip", "columns", "detailTemplate", "noRecordsTemplate", "selectable", "groupable", "filterable", "rowClass", "rowSticky", "loading", "trackBy", "virtualColumns", "isVirtual", "cellLoadingTemplate", "loadingTemplate", "sort", "size"], outputs: ["contentScroll", "pageChange", "scrollBottom"] }, { type: FooterComponent, selector: "[kendoGridFooter]", inputs: ["columns", "groups", "detailTemplate", "scrollable", "lockedColumnsCount", "logicalRowIndex"] }, { type: TableBodyComponent, selector: "[kendoGridTableBody]", inputs: ["columns", "allColumns", "groups", "detailTemplate", "noRecordsTemplate", "data", "skip", "selectable", "filterable", "noRecordsText", "isLocked", "isLoading", "isVirtual", "cellLoadingTemplate", "skipGroupDecoration", "showGroupFooters", "lockedColumnsCount", "totalColumnsCount", "virtualColumns", "trackBy", "rowSticky", "rowClass"] }, { type: LoadingComponent, selector: "[kendoGridLoading]", inputs: ["loadingTemplate"] }, { type: i3$1.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass"], exportAs: ["kendoIconWrapper"] }], directives: [{ type: LocalizedMessagesDirective, selector: "[kendoGridLocalizedMessages]" }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: TableDirective, selector: "table", inputs: ["locked", "virtualColumns"] }, { type: GridTableDirective, selector: "[kendoGridTable]", inputs: ["size"] }, { type: ResizableContainerDirective, selector: "[kendoGridResizableContainer]", inputs: ["lockedWidth", "kendoGridResizableContainer"] }, { type: i40.DragTargetContainerDirective, selector: "[kendoDragTargetContainer]", inputs: ["hint", "dragTargetFilter", "dragHandle", "dragDelay", "threshold", "dragTargetId", "dragData", "dragDisabled", "mode"], outputs: ["dragReady", "press", "dragStart", "drag", "release", "dragEnd"], exportAs: ["kendoDragTargetContainer"] }, { type: i40.DropTargetContainerDirective, selector: "[kendoDropTargetContainer]", inputs: ["dropTargetFilter", "dropDisabled"], outputs: ["dragEnter", "dragOver", "dragLeave", "drop"], exportAs: ["kendoDropTargetContainer"] }, { type: i1$1.DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }, { type: GridMarqueeDirective, selector: "[kendoGridSelectionMarquee]" }], encapsulation: i0.ViewEncapsulation.None });
21570
21605
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GridComponent, decorators: [{
21571
21606
  type: Component,
21572
21607
  args: [{
@@ -21613,7 +21648,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
21613
21648
  ScrollRequestService,
21614
21649
  SortService,
21615
21650
  ContextService,
21616
- SizingOptionsService
21651
+ SizingOptionsService,
21652
+ RowReorderService
21617
21653
  ],
21618
21654
  selector: 'kendo-grid',
21619
21655
  template: `
@@ -21842,6 +21878,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
21842
21878
 
21843
21879
  i18n-groupPanelLabel="kendo.grid.groupPanelLabel|The label for the Grid group panel toolbar"
21844
21880
  groupPanelLabel="Group panel"
21881
+
21882
+ i18n-dragRowHandleLabel="kendo.grid.dragRowHandleLabel|The label for the Grid drag row handle"
21883
+ dragRowHandleLabel="Drag row"
21845
21884
  >
21846
21885
  </ng-container>
21847
21886
  <kendo-grid-toolbar
@@ -21969,6 +22008,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
21969
22008
  </div>
21970
22009
  </div>
21971
22010
  <kendo-grid-list
22011
+ kendoDragTargetContainer
22012
+ kendoDropTargetContainer
22013
+ mode="manual"
22014
+ [dragDisabled]="!rowReorderable"
22015
+ [dropDisabled]="!rowReorderable"
22016
+ [dragTargetFilter]="getDefaultSelectors('dragTarget')"
22017
+ [dropTargetFilter]="getDefaultSelectors('dropTarget')"
22018
+ [dragHandle]="getDefaultSelectors('handle')"
22019
+ [hint]="{hintTemplate: defaultHint}"
22020
+ (press)="handleReorderEvents($event, 'press')"
22021
+ (dragStart)="handleReorderEvents($event, 'dragStart')"
22022
+ (drag)="handleReorderEvents($event, 'drag')"
22023
+ (dragEnter)="handleReorderEvents($event, 'dragEnter')"
22024
+ (dragLeave)="handleReorderEvents($event, 'dragLeave')"
22025
+ (dragEnd)="handleReorderEvents($event, 'dragEnd')"
22026
+ (drop)="handleReorderEvents($event, 'drop')"
22027
+ [dragData]="gridData"
21972
22028
  [data]="$any(view)"
21973
22029
  [rowHeight]="rowHeight"
21974
22030
  [detailRowHeight]="detailRowHeight"
@@ -22134,10 +22190,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
22134
22190
  [navigable]="navigation.toolbarEnabled"
22135
22191
  [attr.aria-label]="messageFor('bottomToolbarLabel')"
22136
22192
  [attr.aria-controls]="ariaRootId"
22137
- position="bottom"></kendo-grid-toolbar>
22193
+ position="bottom">
22194
+ </kendo-grid-toolbar>
22195
+
22196
+ <ng-template #defaultHint>
22197
+ <kendo-icon-wrapper
22198
+ [name]="getHintSettings('hintIcon')"
22199
+ [svgIcon]="getHintSettings('hintSVGIcon')"
22200
+ innerCssClass="k-drag-status">
22201
+ </kendo-icon-wrapper>
22202
+ {{hintText}}
22203
+ </ng-template>
22138
22204
  `
22139
22205
  }]
22140
- }], ctorParameters: function () { return [{ type: BrowserSupportService }, { type: SelectionService }, { type: CellSelectionService }, { type: i0.ElementRef }, { type: GroupInfoService }, { type: GroupsService }, { type: ChangeNotificationService }, { type: DetailsService }, { type: EditService }, { type: FilterService }, { type: PDFService }, { type: ResponsiveService }, { type: i0.Renderer2 }, { type: ExcelService }, { type: i0.NgZone }, { type: ScrollSyncService }, { type: DomEventsService }, { type: ColumnResizingService }, { type: i0.ChangeDetectorRef }, { type: ColumnReorderService }, { type: ColumnInfoService }, { type: NavigationService }, { type: SortService }, { type: ScrollRequestService }, { type: i1.LocalizationService }, { type: ContextService }, { type: SizingOptionsService }]; }, propDecorators: { data: [{
22206
+ }], ctorParameters: function () { return [{ type: BrowserSupportService }, { type: SelectionService }, { type: CellSelectionService }, { type: i0.ElementRef }, { type: GroupInfoService }, { type: GroupsService }, { type: ChangeNotificationService }, { type: DetailsService }, { type: EditService }, { type: FilterService }, { type: PDFService }, { type: ResponsiveService }, { type: i0.Renderer2 }, { type: ExcelService }, { type: i0.NgZone }, { type: ScrollSyncService }, { type: DomEventsService }, { type: ColumnResizingService }, { type: i0.ChangeDetectorRef }, { type: ColumnReorderService }, { type: ColumnInfoService }, { type: NavigationService }, { type: SortService }, { type: ScrollRequestService }, { type: i1.LocalizationService }, { type: ContextService }, { type: SizingOptionsService }, { type: RowReorderService }]; }, propDecorators: { data: [{
22141
22207
  type: Input
22142
22208
  }], pageSize: [{
22143
22209
  type: Input
@@ -22173,6 +22239,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
22173
22239
  type: Input
22174
22240
  }], groupable: [{
22175
22241
  type: Input
22242
+ }], rowReorderable: [{
22243
+ type: Input
22176
22244
  }], navigable: [{
22177
22245
  type: Input
22178
22246
  }], navigatable: [{
@@ -22207,6 +22275,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
22207
22275
  type: Output
22208
22276
  }], selectionChange: [{
22209
22277
  type: Output
22278
+ }], rowReorder: [{
22279
+ type: Output
22210
22280
  }], dataStateChange: [{
22211
22281
  type: Output
22212
22282
  }], groupExpand: [{
@@ -22306,6 +22376,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
22306
22376
  }], ariaRoot: [{
22307
22377
  type: ViewChild,
22308
22378
  args: ['ariaRoot', { static: true }]
22379
+ }], dragTargetContainer: [{
22380
+ type: ViewChild,
22381
+ args: [DragTargetContainerDirective]
22382
+ }], dropTargetContainer: [{
22383
+ type: ViewChild,
22384
+ args: [DropTargetContainerDirective]
22309
22385
  }], isDetailExpanded: [{
22310
22386
  type: Input
22311
22387
  }], isGroupExpanded: [{
@@ -22316,12 +22392,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
22316
22392
  * A directive which encapsulates the in-memory handling of data operations such as [paging]({% slug paging_grid %}),
22317
22393
  * [sorting]({% slug sorting_grid %}), and [grouping]({% slug grouping_grid %})
22318
22394
  * ([more information and examples]({% slug local_data_grid %}#toc-using-the-data-binding-directive)).
22395
+ *
22396
+ * @example
22397
+ * ```html
22398
+ * <kendo-grid [kendoGridBinding]="gridData" ...></kendo-grid>
22399
+ * ```
22319
22400
  */
22320
22401
  class DataBindingDirective {
22321
- constructor(grid, changeDetector, localDataChangesService) {
22402
+ constructor(grid, changeDetector, localDataChangesService, rowReorderService) {
22322
22403
  this.grid = grid;
22323
22404
  this.changeDetector = changeDetector;
22324
22405
  this.localDataChangesService = localDataChangesService;
22406
+ this.rowReorderService = rowReorderService;
22325
22407
  this.state = {
22326
22408
  skip: 0
22327
22409
  };
@@ -22332,12 +22414,16 @@ class DataBindingDirective {
22332
22414
  }
22333
22415
  /**
22334
22416
  * Defines the number of records that will be skipped by the pager.
22417
+ * @default 0
22335
22418
  */
22336
22419
  set skip(value) {
22337
22420
  if (!isPresent(value)) {
22338
22421
  value = 0;
22339
22422
  }
22340
22423
  this.grid.skip = this.state.skip = value;
22424
+ if (this.rowReorderService) {
22425
+ this.rowReorderService.skip = value;
22426
+ }
22341
22427
  }
22342
22428
  /**
22343
22429
  * Defines the descriptors by which the data will be sorted.
@@ -22381,6 +22467,11 @@ class DataBindingDirective {
22381
22467
  this.stateChangeSubscription = this.grid
22382
22468
  .dataStateChange
22383
22469
  .subscribe(this.onStateChange.bind(this));
22470
+ if (this.rowReorderService) {
22471
+ this.rowReorderSubscription = this.grid
22472
+ .rowReorder
22473
+ .subscribe(this.onRowReorder.bind(this));
22474
+ }
22384
22475
  }
22385
22476
  /**
22386
22477
  * @hidden
@@ -22392,6 +22483,9 @@ class DataBindingDirective {
22392
22483
  if (this.dataChangedSubscription) {
22393
22484
  this.dataChangedSubscription.unsubscribe();
22394
22485
  }
22486
+ if (this.rowReorderSubscription) {
22487
+ this.rowReorderSubscription.unsubscribe();
22488
+ }
22395
22489
  }
22396
22490
  /**
22397
22491
  * @hidden
@@ -22413,6 +22507,13 @@ class DataBindingDirective {
22413
22507
  this.applyState(state);
22414
22508
  this.rebind();
22415
22509
  }
22510
+ /**
22511
+ * @hidden
22512
+ */
22513
+ onRowReorder(ev) {
22514
+ this.rowReorderService.reorderRows(ev, this.originalData);
22515
+ this.rebind();
22516
+ }
22416
22517
  /**
22417
22518
  * @hidden
22418
22519
  */
@@ -22445,14 +22546,14 @@ class DataBindingDirective {
22445
22546
  this.dataChanged = false;
22446
22547
  }
22447
22548
  }
22448
- DataBindingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DataBindingDirective, deps: [{ token: GridComponent }, { token: i0.ChangeDetectorRef }, { token: LocalDataChangesService }], target: i0.ɵɵFactoryTarget.Directive });
22549
+ DataBindingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DataBindingDirective, deps: [{ token: GridComponent }, { token: i0.ChangeDetectorRef }, { token: LocalDataChangesService }, { token: RowReorderService }], target: i0.ɵɵFactoryTarget.Directive });
22449
22550
  DataBindingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: DataBindingDirective, selector: "[kendoGridBinding]", inputs: { skip: "skip", sort: "sort", filter: "filter", pageSize: "pageSize", group: "group", data: ["kendoGridBinding", "data"] }, usesOnChanges: true, ngImport: i0 });
22450
22551
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DataBindingDirective, decorators: [{
22451
22552
  type: Directive,
22452
22553
  args: [{
22453
22554
  selector: '[kendoGridBinding]'
22454
22555
  }]
22455
- }], ctorParameters: function () { return [{ type: GridComponent }, { type: i0.ChangeDetectorRef }, { type: LocalDataChangesService }]; }, propDecorators: { skip: [{
22556
+ }], ctorParameters: function () { return [{ type: GridComponent }, { type: i0.ChangeDetectorRef }, { type: LocalDataChangesService }, { type: RowReorderService }]; }, propDecorators: { skip: [{
22456
22557
  type: Input
22457
22558
  }], sort: [{
22458
22559
  type: Input
@@ -22469,7 +22570,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
22469
22570
 
22470
22571
  /**
22471
22572
  * A directive which stores the row selection state of the Grid in memory
22472
- * ([see example]({% slug selection_grid %}#toc-during-data-operations)).
22573
+ * ([see example]({% slug selection_grid %}#toc-toggling-the-selection-functionality)).
22473
22574
  */
22474
22575
  class SelectionDirective extends Selection {
22475
22576
  constructor(ctx, cd) {
@@ -22502,7 +22603,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
22502
22603
  }], ctorParameters: function () { return [{ type: ContextService }, { type: i0.ChangeDetectorRef }]; } });
22503
22604
 
22504
22605
  /**
22505
- * A directive which controls the expanded state of the master detail rows.
22606
+ * A directive which controls the expanded state of the master detail rows. ([see example](slug:master_detail_expanded_state_grid#toc-built-in-directive))
22506
22607
  */
22507
22608
  class ExpandDetailsDirective {
22508
22609
  constructor(grid) {
@@ -24428,28 +24529,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
24428
24529
 
24429
24530
  /**
24430
24531
  * Represents the `cancel` command of the Grid. You can apply this directive to any `button`
24431
- * element inside a [CommandColumnComponent]({% slug api_grid_commandcolumncomponent %}).
24532
+ * element inside a [CommandColumnComponent]({% slug api_grid_commandcolumncomponent %})
24533
+ * ([see example](slug:editing_directives_grid#toc-command-column-directives)).
24432
24534
  * When an associated button with the directive is clicked, the
24433
24535
  * [cancel]({% slug api_grid_gridcomponent %}#toc-cancel) event
24434
- * is triggered ([see example]({% slug basics_editing_grid %})).
24435
- *
24436
- * > When the row is not in the edit mode, the button with the `kendoGridCancelCommand` is automatically hidden.
24437
- *
24438
- * @example
24439
- * ```html-no-run
24440
- * <kendo-grid>
24441
- * <kendo-grid-command-column title="command">
24442
- * <ng-template kendoGridCellTemplate>
24443
- * <button kendoGridCancelCommand>Cancel changes</button>
24444
- * </ng-template>
24445
- * </kendo-grid-command-column>
24446
- * </kendo-grid>
24447
- * ```
24536
+ * is triggered. When the row is not in the edit mode, the button with the `kendoGridCancelCommand` is automatically hidden.
24448
24537
  *
24449
24538
  * You can control the content of the button based on the state of the row.
24450
24539
  *
24451
24540
  * @example
24452
- * ```html-no-run
24541
+ * ```html
24453
24542
  * <kendo-grid>
24454
24543
  * <kendo-grid-command-column title="command">
24455
24544
  * <ng-template kendoGridCellTemplate let-isNew="isNew">
@@ -24537,23 +24626,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
24537
24626
 
24538
24627
  /**
24539
24628
  * Represents the `save` command of the Grid. You can apply this directive to any `button`
24540
- * element inside a [CommandColumnComponent]({% slug api_grid_commandcolumncomponent %}).
24629
+ * element inside a [CommandColumnComponent]({% slug api_grid_commandcolumncomponent %})
24630
+ * ([see example](slug:editing_directives_grid#toc-command-column-directives)).
24541
24631
  * When an associated button with the directive is clicked, the
24542
24632
  * [save]({% slug api_grid_gridcomponent %}#toc-save) event
24543
- * is triggered ([see example]({% slug basics_editing_grid %})).
24544
- *
24545
- * > When the row is not in the edit mode, the button with `kendoGridSaveCommand` is automatically hidden.
24546
- *
24547
- * @example
24548
- * ```html-no-run
24549
- * <kendo-grid>
24550
- * <kendo-grid-command-column title="command">
24551
- * <ng-template kendoGridCellTemplate>
24552
- * <button kendoGridSaveCommand>Save changes</button>
24553
- * </ng-template>
24554
- * </kendo-grid-command-column>
24555
- * </kendo-grid>
24556
- * ```
24633
+ * is triggered. When the row is not in the edit mode, the button with `kendoGridSaveCommand` is automatically hidden.
24557
24634
  *
24558
24635
  * You can control the content of the button based on the state of the row.
24559
24636
  *
@@ -24646,15 +24723,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
24646
24723
 
24647
24724
  /**
24648
24725
  * Represents the `remove` command of the Grid. You can apply this directive to any `button` element
24649
- * inside a [CommandColumnComponent]({% slug api_grid_commandcolumncomponent %}).
24726
+ * inside a [CommandColumnComponent]({% slug api_grid_commandcolumncomponent %})
24727
+ * ([see example](slug:editing_directives_grid#toc-command-column-directives)).
24650
24728
  * When an associated button with the directive is clicked, the
24651
- * [remove event]({% slug api_grid_gridcomponent %}#toc-remove)
24652
- * is triggered ([see example]({% slug inline_editing_grid %}#toc-using-reactive-forms))).
24653
- *
24654
- * > When the row is in the edit mode, the button with the `kendoGridRemoveCommand` is automatically hidden.
24729
+ * [remove]({% slug api_grid_gridcomponent %}#toc-remove) event
24730
+ * is triggered.
24731
+ * When the row is in the edit mode, the button with the `kendoGridRemoveCommand` is automatically hidden.
24655
24732
  *
24656
24733
  * @example
24657
- * ```html-no-run
24734
+ * ```html
24658
24735
  * <kendo-grid>
24659
24736
  * <kendo-grid-command-column title="command">
24660
24737
  * <ng-template kendoGridCellTemplate>
@@ -24746,7 +24823,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
24746
24823
  * ([see example]({% slug basics_editing_grid %})).
24747
24824
  *
24748
24825
  * @example
24749
- * ```html-no-run
24826
+ * ```html
24750
24827
  * <kendo-grid>
24751
24828
  * <ng-template kendoGridToolbarTemplate>
24752
24829
  * <button kendoGridAddCommand>Add new</button>
@@ -24811,6 +24888,52 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
24811
24888
  args: ['class.k-grid-add-command']
24812
24889
  }] } });
24813
24890
 
24891
+ /**
24892
+ * Represents the drag handle for reordering rows in the Grid.
24893
+ */
24894
+ class RowReorderColumnComponent extends ColumnBase {
24895
+ constructor(parent, idService) {
24896
+ super(parent, idService);
24897
+ this.parent = parent;
24898
+ /**
24899
+ * @hidden
24900
+ */
24901
+ this.isRowReorderColumn = true;
24902
+ }
24903
+ }
24904
+ 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 });
24905
+ 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: [
24906
+ {
24907
+ provide: ColumnBase,
24908
+ useExisting: forwardRef(() => RowReorderColumnComponent)
24909
+ }
24910
+ ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });
24911
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RowReorderColumnComponent, decorators: [{
24912
+ type: Component,
24913
+ args: [{
24914
+ providers: [
24915
+ {
24916
+ provide: ColumnBase,
24917
+ useExisting: forwardRef(() => RowReorderColumnComponent)
24918
+ }
24919
+ ],
24920
+ selector: 'kendo-grid-rowreorder-column',
24921
+ template: ``
24922
+ }]
24923
+ }], ctorParameters: function () { return [{ type: ColumnBase, decorators: [{
24924
+ type: SkipSelf
24925
+ }, {
24926
+ type: Host
24927
+ }, {
24928
+ type: Optional
24929
+ }] }, { type: IdService, decorators: [{
24930
+ type: Optional
24931
+ }] }]; }, propDecorators: { dragHandleIcon: [{
24932
+ type: Input
24933
+ }], dragHandleSVGIcon: [{
24934
+ type: Input
24935
+ }] } });
24936
+
24814
24937
  const exported = [
24815
24938
  CommandColumnComponent,
24816
24939
  CheckboxColumnComponent,
@@ -24826,7 +24949,8 @@ const exported = [
24826
24949
  RemoveCommandDirective,
24827
24950
  AddCommandDirective,
24828
24951
  CellLoadingTemplateDirective,
24829
- LoadingTemplateDirective
24952
+ LoadingTemplateDirective,
24953
+ RowReorderColumnComponent
24830
24954
  ];
24831
24955
  const importedModules$1 = [
24832
24956
  CommonModule,
@@ -24856,7 +24980,8 @@ class BodyModule {
24856
24980
  RemoveCommandDirective,
24857
24981
  AddCommandDirective,
24858
24982
  CellLoadingTemplateDirective,
24859
- LoadingTemplateDirective
24983
+ LoadingTemplateDirective,
24984
+ RowReorderColumnComponent
24860
24985
  ];
24861
24986
  }
24862
24987
  }
@@ -24875,7 +25000,8 @@ BodyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13
24875
25000
  RemoveCommandDirective,
24876
25001
  AddCommandDirective,
24877
25002
  CellLoadingTemplateDirective,
24878
- LoadingTemplateDirective], imports: [CommonModule,
25003
+ LoadingTemplateDirective,
25004
+ RowReorderColumnComponent], imports: [CommonModule,
24879
25005
  ReactiveFormsModule,
24880
25006
  FormsModule,
24881
25007
  SharedModule,
@@ -24896,7 +25022,8 @@ BodyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13
24896
25022
  RemoveCommandDirective,
24897
25023
  AddCommandDirective,
24898
25024
  CellLoadingTemplateDirective,
24899
- LoadingTemplateDirective] });
25025
+ LoadingTemplateDirective,
25026
+ RowReorderColumnComponent] });
24900
25027
  BodyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BodyModule, imports: [[...importedModules$1]] });
24901
25028
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BodyModule, decorators: [{
24902
25029
  type: NgModule,
@@ -25146,7 +25273,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
25146
25273
 
25147
25274
  /**
25148
25275
  * A directive which encapsulates the editing operations of the Grid when using
25149
- * the Template-Driven Angular Forms ([see example]({% slug editing_directives_grid %}#toc-the-template-directive)).
25276
+ * the Template-Driven Angular Forms ([see example]({% slug editing_directives_grid %}#toc-template-editing-directive)).
25150
25277
  */
25151
25278
  class TemplateEditingDirective extends RowEditingDirectiveBase {
25152
25279
  constructor(grid, localDataChangesService) {
@@ -25244,7 +25371,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
25244
25371
 
25245
25372
  /**
25246
25373
  * A directive which encapsulates the editing operations of the Grid when using the in-cell
25247
- * editing with Reactive Forms ([see example]({% slug editing_directives_grid %}#toc-the-incell-directive)).
25374
+ * editing with Reactive Forms ([see example]({% slug editing_directives_grid %}#toc-in-cell-editing)).
25248
25375
  */
25249
25376
  class InCellEditingDirective extends EditingDirectiveBase {
25250
25377
  constructor(grid, localDataChangesService, cdr) {
@@ -25676,29 +25803,19 @@ const declarations$2 = [
25676
25803
  *
25677
25804
  * @example
25678
25805
  *
25679
- * ```ts-no-run
25680
- * // Import the Grid module
25681
- * import { GridModule } from '@progress/kendo-angular-grid';
25682
- *
25683
- * // The browser platform with a compiler
25684
- * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
25685
- *
25806
+ * ```ts
25686
25807
  * import { NgModule } from '@angular/core';
25687
- *
25688
- * // Import the app component
25808
+ * import { GridModule } from '@progress/kendo-angular-grid';
25809
+ * import { BrowserModule } from "@angular/platform-browser";
25689
25810
  * import { AppComponent } from './app.component';
25690
25811
  *
25691
- * // Define the app module
25692
- * _@NgModule({
25693
- * declarations: [AppComponent], // declare app component
25694
- * imports: [BrowserModule, GridModule], // import Grid module
25812
+ * @NgModule({
25813
+ * declarations: [AppComponent],
25814
+ * imports: [BrowserModule, GridModule],
25695
25815
  * bootstrap: [AppComponent]
25696
25816
  * })
25697
25817
  * export class AppModule {}
25698
25818
  *
25699
- * // Compile and launch the module
25700
- * platformBrowserDynamic().bootstrapModule(AppModule);
25701
- *
25702
25819
  * ```
25703
25820
  */
25704
25821
  class GridModule {
@@ -25730,7 +25847,8 @@ GridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13
25730
25847
  RowFilterModule,
25731
25848
  FilterMenuModule,
25732
25849
  ResizeSensorModule,
25733
- ColumnMenuModule], exports: [GridComponent,
25850
+ ColumnMenuModule,
25851
+ DragAndDropModule$1], exports: [GridComponent,
25734
25852
  ToolbarTemplateDirective,
25735
25853
  ToolbarComponent,
25736
25854
  GridSpacerComponent,
@@ -25743,7 +25861,7 @@ GridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13
25743
25861
  InCellEditingDirective,
25744
25862
  ExpandDetailsDirective,
25745
25863
  ExpandGroupDirective,
25746
- GridToolbarFocusableDirective, GroupHeaderTemplateDirective, GroupHeaderColumnTemplateDirective, GroupFooterTemplateDirective, ColumnComponent, SpanColumnComponent, ColumnGroupComponent, FooterTemplateDirective, DetailTemplateDirective, FocusableDirective, GridTableDirective, CommandColumnComponent, CheckboxColumnComponent, SelectionCheckboxDirective, CellTemplateDirective, NoRecordsTemplateDirective, EditTemplateDirective, EditCommandDirective, CancelCommandDirective, SaveCommandDirective, RemoveCommandDirective, AddCommandDirective, CellLoadingTemplateDirective, LoadingTemplateDirective, HeaderTemplateDirective, SelectAllCheckboxDirective, PagerComponent, PagerPrevButtonsComponent, PagerNextButtonsComponent, PagerNumericButtonsComponent, PagerInputComponent, PagerInfoComponent, PagerPageSizesComponent, PagerTemplateDirective, PagerDropDownListDirective, PagerInputDirective, FilterRowComponent, FilterCellComponent, FilterCellTemplateDirective, FilterCellOperatorsComponent, StringFilterCellComponent, NumericFilterCellComponent, AutoCompleteFilterCellComponent, BooleanFilterCellComponent, DateFilterCellComponent, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, StringFilterMenuComponent, FilterMenuTemplateDirective, NumericFilterMenuComponent, DateFilterMenuComponent, BooleanFilterMenuComponent, FilterMenuDropDownListDirective, BooleanFilterRadioButtonDirective, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, ColumnChooserComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuSortComponent, ColumnMenuLockComponent, ColumnMenuStickComponent, ColumnMenuPositionComponent, ColumnMenuChooserComponent, ColumnMenuTemplateDirective, ColumnMenuContainerComponent, ColumnMenuItemDirective, ColumnMenuComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuAutoSizeAllColumnsComponent] });
25864
+ GridToolbarFocusableDirective, GroupHeaderTemplateDirective, GroupHeaderColumnTemplateDirective, GroupFooterTemplateDirective, ColumnComponent, SpanColumnComponent, ColumnGroupComponent, FooterTemplateDirective, DetailTemplateDirective, FocusableDirective, GridTableDirective, CommandColumnComponent, CheckboxColumnComponent, SelectionCheckboxDirective, CellTemplateDirective, NoRecordsTemplateDirective, EditTemplateDirective, EditCommandDirective, CancelCommandDirective, SaveCommandDirective, RemoveCommandDirective, AddCommandDirective, CellLoadingTemplateDirective, LoadingTemplateDirective, RowReorderColumnComponent, HeaderTemplateDirective, SelectAllCheckboxDirective, PagerComponent, PagerPrevButtonsComponent, PagerNextButtonsComponent, PagerNumericButtonsComponent, PagerInputComponent, PagerInfoComponent, PagerPageSizesComponent, PagerTemplateDirective, PagerDropDownListDirective, PagerInputDirective, FilterRowComponent, FilterCellComponent, FilterCellTemplateDirective, FilterCellOperatorsComponent, StringFilterCellComponent, NumericFilterCellComponent, AutoCompleteFilterCellComponent, BooleanFilterCellComponent, DateFilterCellComponent, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, StringFilterMenuComponent, FilterMenuTemplateDirective, NumericFilterMenuComponent, DateFilterMenuComponent, BooleanFilterMenuComponent, FilterMenuDropDownListDirective, BooleanFilterRadioButtonDirective, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, ColumnChooserComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuSortComponent, ColumnMenuLockComponent, ColumnMenuStickComponent, ColumnMenuPositionComponent, ColumnMenuChooserComponent, ColumnMenuTemplateDirective, ColumnMenuContainerComponent, ColumnMenuItemDirective, ColumnMenuComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuAutoSizeAllColumnsComponent] });
25747
25865
  GridModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GridModule, imports: [[
25748
25866
  CommonModule,
25749
25867
  GroupModule,
@@ -25755,7 +25873,8 @@ GridModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13
25755
25873
  RowFilterModule,
25756
25874
  FilterMenuModule,
25757
25875
  ResizeSensorModule,
25758
- ColumnMenuModule
25876
+ ColumnMenuModule,
25877
+ DragAndDropModule$1
25759
25878
  ]] });
25760
25879
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GridModule, decorators: [{
25761
25880
  type: NgModule,
@@ -25773,7 +25892,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
25773
25892
  RowFilterModule,
25774
25893
  FilterMenuModule,
25775
25894
  ResizeSensorModule,
25776
- ColumnMenuModule
25895
+ ColumnMenuModule,
25896
+ DragAndDropModule$1
25777
25897
  ]
25778
25898
  }]
25779
25899
  }] });
@@ -25792,50 +25912,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
25792
25912
 
25793
25913
  /**
25794
25914
  * Represents the PDF page template of the Grid that helps to customize the PDF pages. To define a page template,
25795
- * nest an `<ng-template>` tag with the `kendoGridPDFTemplate` directive inside `<kendo-grid-pdf>`.
25915
+ * nest an `<ng-template>` tag with the `kendoGridPDFTemplate` directive inside `<kendo-grid-pdf>` tag.
25796
25916
  *
25797
25917
  * The template context provides the following fields:
25798
25918
  * - `pageNumber`&mdash;Defines PDF page number.
25799
25919
  * - `totalPages`&mdash;Defines the total number of PDF pages.
25800
25920
  *
25801
25921
  * @example
25802
- * ```ts-preview
25803
- *
25804
- * _@Component({
25805
- * selector: 'my-app',
25806
- * template: `
25807
- * <kendo-grid [data]="gridData">
25808
- * <ng-template kendoGridToolbarTemplate>
25809
- * <button kendoGridPDFCommand icon="file-pdf">Export to PDF</button>
25810
- * </ng-template>
25811
- * <kendo-grid-column field="ProductName">
25812
- * </kendo-grid-column>
25813
- * <kendo-grid-column field="UnitPrice">
25814
- * </kendo-grid-column>
25815
- * <kendo-grid-pdf fileName="Products.pdf" paperSize="A4" [margin]="{ top: '1cm', left: '1cm', right: '1cm', bottom: '1cm' }">
25816
- * <ng-template kendoGridPDFTemplate let-pageNum="pageNum" let-totalPages="totalPages">
25817
- * <div style="position: absolute;top: 5px; left: 5px;">
25818
- * Page {{ pageNum }} of {{ totalPages }}
25819
- * </div>
25820
- * </ng-template>
25821
- * </kendo-grid-pdf>
25822
- * </kendo-grid>
25823
- * `
25824
- * })
25825
- *
25826
- * class AppComponent {
25827
- * public gridData = [{
25828
- * "ProductID": 1,
25829
- * "ProductName": "Chai",
25830
- * "UnitPrice": 18.0000
25831
- * }, {
25832
- * "ProductID": 2,
25833
- * "ProductName": "Chang",
25834
- * "UnitPrice": 19.0000
25835
- * }
25836
- * ];
25837
- * }
25838
- *
25922
+ * ```html
25923
+ * <kendo-grid [data]="gridData">
25924
+ * ...
25925
+ * <kendo-grid-pdf fileName="Products.pdf" paperSize="A4">
25926
+ * <ng-template kendoGridPDFTemplate let-pageNumber="pageNumber" let-totalPages="totalPages">
25927
+ * Page {{ pageNumber }} of {{ totalPages }}
25928
+ * </ng-template>
25929
+ * </kendo-grid-pdf>
25930
+ * </kendo-grid>
25839
25931
  * ```
25840
25932
  */
25841
25933
  class PDFTemplateDirective extends PDFExportTemplateDirective {
@@ -26341,28 +26433,19 @@ const declarations$1 = [
26341
26433
  *
26342
26434
  * @example
26343
26435
  *
26344
- * ```ts-no-run
26345
- * // Import the Grid and PDF modules
26346
- * import { GridModule, PDFModule } from '@progress/kendo-angular-grid';
26347
- *
26348
- * // The browser platform with a compiler
26349
- * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
26350
- *
26436
+ * ```ts
26351
26437
  * import { NgModule } from '@angular/core';
26352
- *
26353
- * // Import the app component
26438
+ * import { BrowserModule } from "@angular/platform-browser";
26439
+ * import { GridModule, PDFModule } from '@progress/kendo-angular-grid';
26354
26440
  * import { AppComponent } from './app.component';
26355
26441
  *
26356
- * // Define the app module
26357
- * _@NgModule({
26358
- * declarations: [AppComponent], // declare app component
26359
- * imports: [BrowserModule, GridModule, PDFModule], // import Grid and PDF modules
26442
+ * @NgModule({
26443
+ * declarations: [AppComponent],
26444
+ * imports: [BrowserModule, GridModule, PDFModule],
26360
26445
  * bootstrap: [AppComponent]
26361
26446
  * })
26362
- * export class AppModule {}
26363
26447
  *
26364
- * // Compile and launch the module
26365
- * platformBrowserDynamic().bootstrapModule(AppModule);
26448
+ * export class AppModule {}
26366
26449
  *
26367
26450
  * ```
26368
26451
  */
@@ -26541,13 +26624,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
26541
26624
  /**
26542
26625
  * Represents the `export-to-Excel` command of the Grid. You can apply this
26543
26626
  * directive to any `button` element inside a
26544
- * [ToolbarTemplate]({% slug api_grid_commandcolumncomponent %}).
26627
+ * [ToolbarTemplate]({% slug api_grid_toolbartemplatedirective %}).
26545
26628
  * When the user clicks a button associated with the directive, the
26546
26629
  * [excelExport]({% slug api_grid_gridcomponent %}#toc-excelexport) event
26547
26630
  * fires ([see example]({% slug excelexport_grid %})).
26548
26631
  *
26549
26632
  * @example
26550
- * ```html-no-run
26633
+ * ```html
26551
26634
  * <kendo-grid>
26552
26635
  * <ng-template kendoGridToolbarTemplate>
26553
26636
  * <button kendoGridExcelCommand>Export to PDF</button>
@@ -26622,29 +26705,19 @@ const declarations = [ExcelComponent, ExcelCommandDirective];
26622
26705
  *
26623
26706
  * @example
26624
26707
  *
26625
- * ```ts-no-run
26626
- * // Import the Grid and Excel modules
26627
- * import { GridModule, ExcelModule } from '@progress/kendo-angular-grid';
26628
- *
26629
- * // The browser platform with a compiler
26630
- * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
26631
- *
26708
+ * ```ts
26632
26709
  * import { NgModule } from '@angular/core';
26633
- *
26634
- * // Import the app component
26710
+ * import { BrowserModule } from "@angular/platform-browser";
26711
+ * import { GridModule, ExcelModule } from '@progress/kendo-angular-grid';
26635
26712
  * import { AppComponent } from './app.component';
26636
26713
  *
26637
- * // Define the app module
26638
26714
  * _@NgModule({
26639
- * declarations: [AppComponent], // declare app component
26640
- * imports: [BrowserModule, GridModule, ExcelModule], // import Grid and Excel modules
26715
+ * declarations: [AppComponent],
26716
+ * imports: [BrowserModule, GridModule, ExcelModule],
26641
26717
  * bootstrap: [AppComponent]
26642
26718
  * })
26643
26719
  * export class AppModule {}
26644
26720
  *
26645
- * // Compile and launch the module
26646
- * platformBrowserDynamic().bootstrapModule(AppModule);
26647
- *
26648
26721
  * ```
26649
26722
  */
26650
26723
  class ExcelModule {
@@ -26665,5 +26738,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
26665
26738
  * Generated bundle index. Do not edit.
26666
26739
  */
26667
26740
 
26668
- export { AddCommandDirective, AfterEqFilterOperatorComponent, AfterFilterOperatorComponent, AutoCompleteFilterCellComponent, BaseFilterCellComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, BodyModule, BooleanFilterCellComponent, BooleanFilterComponent, BooleanFilterMenuComponent, BooleanFilterRadioButtonDirective, BrowserSupportService, CELL_CONTEXT, CancelCommandDirective, CellCloseEvent, CellComponent, CellLoadingTemplateDirective, CellSelectionService, CellTemplateDirective, ChangeNotificationService, CheckboxColumnComponent, ColGroupComponent, ColumnBase, ColumnChooserComponent, ColumnComponent, ColumnGroupComponent, ColumnHandleDirective, ColumnInfoService, ColumnListComponent, ColumnLockedChangeEvent, ColumnMenuAutoSizeAllColumnsComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuChooserComponent, ColumnMenuComponent, ColumnMenuContainerComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuItemDirective, ColumnMenuLockComponent, ColumnMenuPositionComponent, ColumnMenuService, ColumnMenuSortComponent, ColumnMenuStickComponent, ColumnMenuTemplateDirective, ColumnReorderEvent, ColumnReorderService, ColumnResizingService, ColumnStickyChangeEvent, ColumnVisibilityChangeEvent, ColumnsContainer, CommandColumnComponent, ContainsFilterOperatorComponent, ContextService, CustomMessagesComponent, DEFAULT_SCROLLER_FACTORY, DataBindingDirective, DateFilterCellComponent, DateFilterComponent, DateFilterMenuComponent, DateFilterMenuInputComponent, DetailCollapseEvent, DetailExpandEvent, DetailTemplateDirective, DetailsService, DoesNotContainFilterOperatorComponent, DomEventsService, DragAndDropService, DragHintService, DropCueService, EditCommandDirective, EditService, EditTemplateDirective, EditingDirectiveBase, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, ExcelCommandDirective, ExcelComponent, ExcelExportEvent, ExcelModule, ExcelService, ExpandDetailsDirective, ExpandGroupDirective, FieldAccessorPipe, FilterCellComponent, FilterCellHostDirective, FilterCellOperatorsComponent, FilterCellTemplateDirective, FilterCellWrapperComponent, FilterInputDirective, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuDropDownListDirective, FilterMenuHostDirective, FilterMenuInputWrapperComponent, FilterMenuModule, FilterMenuTemplateDirective, FilterRowComponent, FilterService, FocusRoot, FocusableDirective, FooterComponent, FooterModule, FooterTemplateDirective, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, GridComponent, GridModule, GridSpacerComponent, GridTableDirective, GridToolbarFocusableDirective, GridToolbarNavigationService, GroupBindingDirective, GroupFooterTemplateDirective, GroupHeaderColumnTemplateDirective, GroupHeaderComponent, GroupHeaderTemplateDirective, GroupInfoService, GroupModule, GroupPanelComponent, GroupsService, HeaderComponent, HeaderModule, HeaderTemplateDirective, IdService, InCellEditingDirective, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, ListComponent, LoadingComponent, LoadingTemplateDirective, LocalDataChangesService, LogicalCellDirective, LogicalRowDirective, MenuTabbingService, NavigationService, NoRecordsTemplateDirective, NotEqualFilterOperatorComponent, NumericFilterCellComponent, NumericFilterComponent, NumericFilterMenuComponent, NumericFilterMenuInputComponent, PDFCommandDirective, PDFComponent, PDFMarginComponent, PDFModule, PDFService, PDFTemplateDirective, PagerComponent, PagerContextService, PagerDropDownListDirective, PagerInfoComponent, PagerInputComponent, PagerInputDirective, PagerModule, PagerNextButtonsComponent, PagerNumericButtonsComponent, PagerPageSizesComponent, PagerPrevButtonsComponent, PagerTemplateDirective, PopupCloseEvent, ReactiveEditingDirective, RemoveCommandDirective, ResizableContainerDirective, ResizeService, ResponsiveService, RowEditingDirectiveBase, RowFilterModule, SaveCommandDirective, ScrollRequestService, ScrollSyncService, SelectAllCheckboxDirective, SelectionCheckboxDirective, SelectionDirective, SelectionService, SharedFilterModule, SharedModule, SinglePopupService, SizingOptionsService, Skip, SortService, SpanColumnComponent, StartsWithFilterOperatorComponent, StringFilterCellComponent, StringFilterComponent, StringFilterMenuComponent, StringFilterMenuInputComponent, SuspendService, TableBodyComponent, TableDirective, TemplateContextDirective, TemplateEditingDirective, ToolbarComponent, ToolbarTemplateDirective, count, defaultTrackBy, hasFilterMenu, hasFilterRow, isFilterable, slice };
26741
+ export { AddCommandDirective, AfterEqFilterOperatorComponent, AfterFilterOperatorComponent, AutoCompleteFilterCellComponent, BaseFilterCellComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, BodyModule, BooleanFilterCellComponent, BooleanFilterComponent, BooleanFilterMenuComponent, BooleanFilterRadioButtonDirective, BrowserSupportService, CELL_CONTEXT, CancelCommandDirective, CellCloseEvent, CellComponent, CellLoadingTemplateDirective, CellSelectionService, CellTemplateDirective, ChangeNotificationService, CheckboxColumnComponent, ColGroupComponent, ColumnBase, ColumnChooserComponent, ColumnComponent, ColumnGroupComponent, ColumnHandleDirective, ColumnInfoService, ColumnListComponent, ColumnLockedChangeEvent, ColumnMenuAutoSizeAllColumnsComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuChooserComponent, ColumnMenuComponent, ColumnMenuContainerComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuItemDirective, ColumnMenuLockComponent, ColumnMenuPositionComponent, ColumnMenuService, ColumnMenuSortComponent, ColumnMenuStickComponent, ColumnMenuTemplateDirective, ColumnReorderEvent, ColumnReorderService, ColumnResizingService, ColumnStickyChangeEvent, ColumnVisibilityChangeEvent, ColumnsContainer, CommandColumnComponent, ContainsFilterOperatorComponent, ContextService, CustomMessagesComponent, DEFAULT_SCROLLER_FACTORY, DataBindingDirective, DateFilterCellComponent, DateFilterComponent, DateFilterMenuComponent, DateFilterMenuInputComponent, DetailCollapseEvent, DetailExpandEvent, DetailTemplateDirective, DetailsService, DoesNotContainFilterOperatorComponent, DomEventsService, DragAndDropService, DragHintService, DropCueService, EditCommandDirective, EditService, EditTemplateDirective, EditingDirectiveBase, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, ExcelCommandDirective, ExcelComponent, ExcelExportEvent, ExcelModule, ExcelService, ExpandDetailsDirective, ExpandGroupDirective, FieldAccessorPipe, FilterCellComponent, FilterCellHostDirective, FilterCellOperatorsComponent, FilterCellTemplateDirective, FilterCellWrapperComponent, FilterInputDirective, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuDropDownListDirective, FilterMenuHostDirective, FilterMenuInputWrapperComponent, FilterMenuModule, FilterMenuTemplateDirective, FilterRowComponent, FilterService, FocusRoot, FocusableDirective, FooterComponent, FooterModule, FooterTemplateDirective, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, GridComponent, GridModule, GridSpacerComponent, GridTableDirective, GridToolbarFocusableDirective, GridToolbarNavigationService, GroupBindingDirective, GroupFooterTemplateDirective, GroupHeaderColumnTemplateDirective, GroupHeaderComponent, GroupHeaderTemplateDirective, GroupInfoService, GroupModule, GroupPanelComponent, GroupsService, HeaderComponent, HeaderModule, HeaderTemplateDirective, IdService, InCellEditingDirective, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, ListComponent, LoadingComponent, LoadingTemplateDirective, LocalDataChangesService, LogicalCellDirective, LogicalRowDirective, MenuTabbingService, NavigationService, NoRecordsTemplateDirective, NotEqualFilterOperatorComponent, NumericFilterCellComponent, NumericFilterComponent, NumericFilterMenuComponent, NumericFilterMenuInputComponent, PDFCommandDirective, PDFComponent, PDFMarginComponent, PDFModule, PDFService, PDFTemplateDirective, PagerComponent, PagerContextService, PagerDropDownListDirective, PagerInfoComponent, PagerInputComponent, PagerInputDirective, PagerModule, PagerNextButtonsComponent, PagerNumericButtonsComponent, PagerPageSizesComponent, PagerPrevButtonsComponent, PagerTemplateDirective, PopupCloseEvent, ReactiveEditingDirective, RemoveCommandDirective, ResizableContainerDirective, ResizeService, ResponsiveService, RowEditingDirectiveBase, RowFilterModule, RowReorderColumnComponent, SaveCommandDirective, ScrollRequestService, ScrollSyncService, SelectAllCheckboxDirective, SelectionCheckboxDirective, SelectionDirective, SelectionService, SharedFilterModule, SharedModule, SinglePopupService, SizingOptionsService, Skip, SortService, SpanColumnComponent, StartsWithFilterOperatorComponent, StringFilterCellComponent, StringFilterComponent, StringFilterMenuComponent, StringFilterMenuInputComponent, SuspendService, TableBodyComponent, TableDirective, TemplateContextDirective, TemplateEditingDirective, ToolbarComponent, ToolbarTemplateDirective, count, defaultTrackBy, hasFilterMenu, hasFilterRow, isFilterable, slice };
26669
26742